ChangeLog-2019-06-05   [plain text]


2019-06-05  Brent Fulgham  <bfulgham@apple.com>

        [iOS] Update sandboxes to address iokit-get-property errors
        https://bugs.webkit.org/show_bug.cgi?id=198494
        <rdar://problem/51322072> and <rdar://problem/50602737>

        Reviewed by Alexey Proskuryakov.

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

2019-06-05  Wenson Hsieh  <wenson_hsieh@apple.com>

        Upstream content mode support into open source from WebKitAdditions
        https://bugs.webkit.org/show_bug.cgi?id=198484
        <rdar://problem/51355671>

        Reviewed by Andy Estes.

        Move code for handling WKContentMode into open source. No change in behavior, for internal builds.

        * Shared/API/Cocoa/WebKit.apinotes:
        * Shared/WebContentMode.h: Renamed from Source/WebKit/Shared/WebCompatibilityMode.h.
        * Shared/WebPreferences.yaml:
        * UIProcess/API/APINavigation.h:
        (API::Navigation::setEffectiveContentMode):
        (API::Navigation::effectiveContentMode const):
        (API::Navigation::setEffectiveCompatibilityMode): Deleted.
        (API::Navigation::effectiveCompatibilityMode const): Deleted.
        * UIProcess/API/APINavigationClient.h:
        (API::NavigationClient::shouldBypassContentModeSafeguards const):
        (API::NavigationClient::shouldBypassCompatibilityModeSafeguards const): Deleted.
        * UIProcess/API/APIWebsitePolicies.cpp:
        (API::WebsitePolicies::copy const):
        * UIProcess/API/APIWebsitePolicies.h:
        * UIProcess/API/Cocoa/WKNavigation.h:
        * UIProcess/API/Cocoa/WKNavigation.mm:
        (-[WKNavigation effectiveContentMode]):
        * UIProcess/API/Cocoa/WKWebpagePreferences.h:
        * UIProcess/API/Cocoa/WKWebpagePreferences.mm:
        (WebKit::contentMode):
        (WebKit::webContentMode):
        (-[WKWebpagePreferences _allowSiteSpecificQuirksToOverrideCompatibilityMode]):
        (-[WKWebpagePreferences _setAllowSiteSpecificQuirksToOverrideCompatibilityMode:]):
        (-[WKWebpagePreferences setPreferredContentMode:]):
        (-[WKWebpagePreferences preferredContentMode]):
        * UIProcess/API/Cocoa/WKWebpagePreferencesInternal.h:
        * UIProcess/Cocoa/NavigationState.h:
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::NavigationClient::shouldBypassContentModeSafeguards const):
        (WebKit::NavigationState::NavigationClient::shouldBypassCompatibilityModeSafeguards const): Deleted.
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::decidePolicyForNavigationAction):
        (WebKit::WebPageProxy::effectiveContentModeAfterAdjustingPolicies):
        (WebKit::WebPageProxy::effectiveCompatibilityModeAfterAdjustingPolicies): Deleted.
        * UIProcess/WebPageProxy.h:
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::desktopClassBrowsingSupported):
        (WebKit::webViewSizeIsNarrow):
        (WebKit::desktopClassBrowsingRecommendedForRequest):
        (WebKit::desktopClassBrowsingRecommended):
        (WebKit::WebPageProxy::effectiveContentModeAfterAdjustingPolicies):
        * WebKit.xcodeproj/project.pbxproj:

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

        Remove some unused selection code
        https://bugs.webkit.org/show_bug.cgi?id=198451

        Reviewed by Wenson Hsieh.

        * Platform/spi/ios/UIKitSPI.h:
        * Shared/ios/GestureTypes.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (toGestureType):
        (toUIWKGestureType):
        * UIProcess/ios/WKPDFView.mm:
        (-[WKPDFView actionSheetAssistant:shareElementWithURL:rect:]):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::selectWithGesture):
        (WebKit::WebPage::selectTextWithGranularityAtPoint):
        (WebKit::canShrinkToTextSelection): Deleted.
        (WebKit::hasCustomLineHeight): Deleted.
        (WebKit::WebPage::rangeForWebSelectionAtPosition): Deleted.

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

        Unreviewed assertion fix for macOS after r246097.

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

2019-06-01  Antoine Quint  <graouts@apple.com>

        [Pointer Events] Add support for chorded button interactions
        https://bugs.webkit.org/show_bug.cgi?id=198462

        Reviewed by Dean Jackson.

        Update to use -2 instead of -1 for NoButton.

        * Shared/API/c/WKEvent.h:
        * Shared/WebEvent.h:

2019-06-05  Michael Catanzaro  <mcatanzaro@igalia.com>

        REGRESSION(r245796): [WPE][GTK] Web process crash on startup
        https://bugs.webkit.org/show_bug.cgi?id=198485

        Reviewed by Chris Dumez.

        * UIProcess/API/glib/WebKitURISchemeRequest.cpp:
        (webkitURISchemeRequestCreate):

2019-06-05  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK][WPE] Re-enable process warming
        https://bugs.webkit.org/show_bug.cgi?id=198526

        Reviewed by Michael Catanzaro.

        It was disabled in r243490 because bubblewrap sandbox needs a valid WebsiteDataStore before launching the web
        process. We can use the default WebsiteDataStore from the WebProcessPool and only use the prewarmed process
        later if the given WebsiteDataStore is the same as the WebProcessPool one.

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::tryTakePrewarmedProcess): Do not use the prewarmed process if WebsiteDataStore is
        different than the one used to launch the process when sandboxing is enabled.
        * UIProcess/glib/WebProcessPoolGLib.cpp:
        (WebKit::WebProcessPool::platformInitialize): Do not disable process warming.
        * UIProcess/glib/WebProcessProxyGLib.cpp:
        (WebKit::WebProcessProxy::platformGetLaunchOptions): Use the WebsiteDataStore from the WebProcessPool if process
        is prewarmed and sandboxing is enabled.

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

        Cookies set via [WKHTTPCookieStore setCookie:] on store right after constructing WKWebView get lost
        https://bugs.webkit.org/show_bug.cgi?id=198553
        <rdar://problem/51317144>

        Reviewed by Geoffrey Garen.

        If you call [WKHTTPCookieStore setCookie:] right after you construct the WKWebView and before the
        WebContent process has finished launching, then WebsiteDataStore::processPoolForCookieStorageOperations()
        would return null, even though there is already a view/page/WebProcessProxy/WebProcessPool for this data
        store. As a result, the cookie would get added to the WebsiteDataStore's m_pendingCookies but it will
        not be used since we've already previously launched a network process when we constructed the web view.

        The reason processPoolForCookieStorageOperations() would return null is because WebsiteDataStore::processPools()
        relies on WebProcessLifetimeObserver::processes() but processes only register themselves with the
        WebProcessLifetimeObservers when they have pages *and* after they are finished launching.

        This patch updates processPoolForCookieStorageOperations() to fallback to iterating over all process pools
        and find a process pool with a process using the current data store and which has pages. This way, even if
        the process is still launching, we'll properly find its associated process pool.

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

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

        Fix miscellaneous build warnings
        https://bugs.webkit.org/show_bug.cgi?id=198544

        Reviewed by Don Olmstead.

        Carefully silence -Wsign-compare warnings.

        * NetworkProcess/cache/NetworkCacheData.cpp:
        (WebKit::NetworkCache::readOrMakeSalt):

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

        getUserMedia requests should be processed sequentially in UIProcess
        https://bugs.webkit.org/show_bug.cgi?id=198430
        <rdar://problem/51311420>

        Reviewed by Eric Carlson.

        Before the patch, we process all incoming gum/gdm requests in parallel.
        We now queueu them and process them one at a time.
        This allows to take into consideration state changes triggered by one request for the next one.
        In particular, if a user grants a request, this might grant the next one as well.

        To implement that, we keep a reference of the current request to process.
        We queue other requests happening whenever another request comes.
        When the request is processed, we look at the next one in the queue.
        To ensure we do not stop processing the queue for no good reason, some refactoring is done:
        - queue processing happens when sending back IPC response to WebProcess.
        - denyRequest/grantRequest are consistently called in the manager proxy.

        * UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
        (WebKit::UserMediaPermissionRequestManagerProxy::invalidatePendingRequests):
        Invalidate pregranted requests as well.
        (WebKit::UserMediaPermissionRequestManagerProxy::denyRequest):
        Renamed from userMediaAccessWasDenied to denyRequest.
        This method is now consistently used whenever the manager proxy wants to deny the request.
        It does the IPC to the WebProcess and triggers processing of the next request.
        (WebKit::UserMediaPermissionRequestManagerProxy::grantRequest):
        Renamed from userMediaAccessWasGranted to grantRequest.
        (WebKit::UserMediaPermissionRequestManagerProxy::finishGrantingRequest):
        This method is now consistently used whenever the manager proxy wants to deny the request.
        It does the IPC to the WebProcess and triggers processing of the next request.
        (WebKit::UserMediaPermissionRequestManagerProxy::rejectionTimerFired):
        We now keep a queue of request instead of request IDs to make the deny code path more consistent.
        (WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame):
        (WebKit::UserMediaPermissionRequestManagerProxy::processNextUserMediaRequestIfNeeded):
        (WebKit::UserMediaPermissionRequestManagerProxy::startProcessingUserMediaPermissionRequest):
        (WebKit::UserMediaPermissionRequestManagerProxy::processUserMediaPermissionRequest):
        To make sure we do not process a different request, we keep a pointer to the request and compare it with the current media request.
        (WebKit::UserMediaPermissionRequestManagerProxy::processUserMediaPermissionInvalidRequest):
        (WebKit::UserMediaPermissionRequestManagerProxy::processUserMediaPermissionValidRequest):
        (WebKit::UserMediaPermissionRequestManagerProxy::viewIsBecomingVisible):
        * UIProcess/UserMediaPermissionRequestManagerProxy.h:
        (WebKit::UserMediaPermissionRequestManagerProxy::denyRequest):
        * UIProcess/UserMediaPermissionRequestProxy.cpp:
        (WebKit::setDeviceAsFirst):
        (WebKit::UserMediaPermissionRequestProxy::allow):
        (WebKit::UserMediaPermissionRequestProxy::deny):
        * UIProcess/UserMediaPermissionRequestProxy.h:

2019-06-04  Commit Queue  <commit-queue@webkit.org>

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

        Causing Internal build failures (Requested by ShawnRoberts on
        #webkit).

        Reverted changeset:

        "Remove some unused selection code"
        https://bugs.webkit.org/show_bug.cgi?id=198451
        https://trac.webkit.org/changeset/246086

2019-06-04  Tim Horton  <timothy_horton@apple.com>

        Turn on background color estimation for all link indicators
        https://bugs.webkit.org/show_bug.cgi?id=198547
        <rdar://problem/51140196>

        Reviewed by Dean Jackson.

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

2019-06-04  Tim Horton  <timothy_horton@apple.com>

        Remove some unused selection code
        https://bugs.webkit.org/show_bug.cgi?id=198451

        Reviewed by Wenson Hsieh.

        * Platform/spi/ios/UIKitSPI.h:
        * Shared/ios/GestureTypes.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (toGestureType):
        (toUIWKGestureType):
        * UIProcess/ios/WKPDFView.mm:
        (-[WKPDFView actionSheetAssistant:shareElementWithURL:rect:]):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::selectWithGesture):
        (WebKit::WebPage::selectTextWithGranularityAtPoint):
        (WebKit::canShrinkToTextSelection): Deleted.
        (WebKit::hasCustomLineHeight): Deleted.
        (WebKit::WebPage::rangeForWebSelectionAtPosition): Deleted.

2019-06-04  Sihui Liu  <sihui_liu@apple.com>

        WKWebsiteDataStore API fails to fetch web storage data for non-persistent data store
        https://bugs.webkit.org/show_bug.cgi?id=198317
        <rdar://problem/51244662>

        Reviewed by Alex Christensen.

        Use LocalStorageNameSpace instead of SessionStorageNameSpace for localStorage in ephemeral session or 
        websiteDataStore.

        Reland r245943 as test has been fixed in r246012.

        * NetworkProcess/WebStorage/StorageManager.cpp:
        (WebKit::StorageManager::StorageArea::isEphemeral const):
        (WebKit::StorageManager::StorageArea::removeListener):
        (WebKit::StorageManager::StorageArea::setItems):
        (WebKit::StorageManager::StorageArea::openDatabaseAndImportItemsIfNeeded const):
        (WebKit::StorageManager::LocalStorageNamespace::~LocalStorageNamespace):
        (WebKit::StorageManager::LocalStorageNamespace::getOrCreateStorageArea):
        (WebKit::StorageManager::LocalStorageNamespace::clearAllStorageAreas):
        (WebKit::StorageManager::LocalStorageNamespace::ephemeralOrigins const):
        (WebKit::StorageManager::LocalStorageNamespace::cloneTo):
        (WebKit::StorageManager::StorageManager):
        (WebKit::StorageManager::cloneSessionStorageNamespace):
        (WebKit::StorageManager::getLocalStorageOrigins):
        (WebKit::StorageManager::getLocalStorageOriginDetails):
        (WebKit::StorageManager::deleteLocalStorageEntriesForOrigin):
        (WebKit::StorageManager::deleteLocalStorageOriginsModifiedSince):
        (WebKit::StorageManager::deleteLocalStorageEntriesForOrigins):
        (WebKit::StorageManager::createLocalStorageMap):
        (WebKit::StorageManager::createTransientLocalStorageMap):
        (WebKit::StorageManager::createSessionStorageMap):
        (WebKit::StorageManager::destroyStorageMap):
        (WebKit::StorageManager::getValues):
        (WebKit::StorageManager::setItem):
        (WebKit::StorageManager::removeItem):
        (WebKit::StorageManager::clear):
        (WebKit::StorageManager::suspend):
        (WebKit::StorageManager::resume):
        (WebKit::StorageManager::StorageArea::isSessionStorage const): Deleted.
        * NetworkProcess/WebStorage/StorageManager.h:
        (): Deleted.
        * WebProcess/WebStorage/StorageAreaMap.cpp:
        (WebKit::StorageAreaMap::dispatchStorageEvent):
        (WebKit::StorageAreaMap::dispatchSessionStorageEvent):
        (WebKit::StorageAreaMap::connect):
        * WebProcess/WebStorage/StorageNamespaceImpl.cpp:
        (WebKit::StorageNamespaceImpl::createEphemeralLocalStorageNamespace):
        (WebKit::StorageNamespaceImpl::createLocalStorageNamespace):
        * WebProcess/WebStorage/StorageNamespaceImpl.h:
        * WebProcess/WebStorage/WebStorageNamespaceProvider.cpp:
        (WebKit::WebStorageNamespaceProvider::createLocalStorageNamespace):

2019-06-04  Alex Christensen  <achristensen@apple.com>

        Uploading third-party applications from /Applications needs additional syscall access
        https://bugs.webkit.org/show_bug.cgi?id=198537
        <rdar://problem/51164741>

        Reviewed by Brent Fulgham.

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

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

        Lazily construct the NetworkHTTPSUpgradeChecker
        https://bugs.webkit.org/show_bug.cgi?id=198500

        Reviewed by Alex Christensen.

        Lazily construct the NetworkHTTPSUpgradeChecker since the feature is off by default and this
        avoids unnecessarily opening its database in the common case.

        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
        (WebKit::NetworkProcess::networkHTTPSUpgradeChecker):

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

        REGRESSION (r245913) [ Debug ] ASSERTION FAILED: m_swConnectionsByIdentifier.contains(connection.serverConnectionIdentifier()) Layout Test http/wpt/service-workers/update-service-worker.https.html is a flaky crash
        https://bugs.webkit.org/show_bug.cgi?id=198434
        <rdar://problem/51313917>

        Reviewed by Alex Christensen.

        Iterate through the connectionID-based connection map instead of the sessionID-based map to notify them their connection is lost.

        * WebProcess/Network/NetworkProcessConnection.cpp:
        (WebKit::NetworkProcessConnection::didClose):

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

        [iOS] UIProcess' background task expiration handler may get called after the app is foreground again
        https://bugs.webkit.org/show_bug.cgi?id=198380
        <rdar://problem/49762471>

        Reviewed by Geoff Garen.

        UIProcess' background task expiration handler may get called after the app is foreground again. When
        this happens, we already have a foreground assertion on behalf of the WebContent process, and the view
        is visible. We would send the WillSuspendImminently IPC to the WebContent process, which would freeze
        its layers, even though it is visible on screen.

        To address the issue, we now check if the app is visible in the expiration handler. If it is visible,
        we do not notify clients of imminent suspension. Instead, we end the background task right away and
        call _updateBackgroundTask asynchronously to start a new background task if necessary.

        * UIProcess/ios/ProcessAssertionIOS.mm:
        (-[WKProcessAssertionBackgroundTaskManager _updateBackgroundTask]):

2019-06-04  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Crash when re-entering AC mode after r245957
        https://bugs.webkit.org/show_bug.cgi?id=198522

        Reviewed by Žan Doberšek.

        When AcceleratedBackingStoreWayland::displayBuffer() is called and we have already left AC mode, we early
        dispatch the image and release it. The problem is that images are reused, so the given image can be the
        committed one. In that case we end up freeing it again in the next AcceleratedBackingStoreWayland::paint()
        call.

        * UIProcess/gtk/AcceleratedBackingStoreWayland.cpp:
        (WebKit::AcceleratedBackingStoreWayland::displayBuffer): Do not release the given image if it's the committed one.

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

        [iOS] Do not prevent app suspension for more than 20 seconds after getting backgrounded
        https://bugs.webkit.org/show_bug.cgi?id=198488
        <rdar://problem/50837208>

        Reviewed by Geoff Garen.

        Do not prevent app suspension for more than 20 seconds after getting backgrounded on iOS. We
        do this by implementing our own expiration handler which notifies our child processes of
        their imminent suspension before ending the background task that was preventing suspension.

        * UIProcess/ios/ProcessAssertionIOS.mm:
        (isBackgroundState):
        (-[WKProcessAssertionBackgroundTaskManager init]):
        (-[WKProcessAssertionBackgroundTaskManager _scheduleTimeoutTask]):
        (-[WKProcessAssertionBackgroundTaskManager _cancelTimeoutTask]):
        (-[WKProcessAssertionBackgroundTaskManager _backgroundTaskExpired]):
        (-[WKProcessAssertionBackgroundTaskManager _updateBackgroundTask]):
        (-[WKProcessAssertionBackgroundTaskManager _releaseBackgroundTask]):

2019-06-03  Wenson Hsieh  <wenson_hsieh@apple.com>

        Implement an internal switch to turn idempotent text autosizing and viewport rules off
        https://bugs.webkit.org/show_bug.cgi?id=198460
        <rdar://problem/51324526>

        Reviewed by Tim Horton.

        * Shared/WebPreferences.yaml:

        Add new preferences to control viewport shrink-to-fit-content and idempotent text autosizing.

        * Shared/WebPreferencesDefaultValues.cpp:

        Add the non-iOS implementation of defaultTextAutosizingUsesIdempotentMode, and also wrap these functions in the
        WebKit namespace.

        (WebKit::defaultTextAutosizingUsesIdempotentMode):
        (defaultPassiveTouchListenersAsDefaultOnDocument): Deleted.
        (defaultCustomPasteboardDataEnabled): Deleted.
        * Shared/WebPreferencesDefaultValues.h:

        Move some existing default preference value helper functions into the WebKit namespace.

        * Shared/ios/WebPreferencesDefaultValuesIOS.mm: Copied from Source/WebKit/Shared/WebPreferencesDefaultValues.cpp.

        Add an iOS-specific file for WebPreferencesDefaultValues, so that we can check for the user interface idiom.

        (WebKit::defaultTextAutosizingUsesIdempotentMode):
        * SourcesCocoa.txt:
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::immediatelyShrinkToFitContent):

        Add an early return for the case where shrink-to-fit-content is explicitly disabled via the new preference.

2019-06-03  Rob Buis  <rbuis@igalia.com>

        Implement imagesrcset and imagesizes attributes on link rel=preload
        https://bugs.webkit.org/show_bug.cgi?id=192950

        Reviewed by Youenn Fablet.

        Add a runtime flag for link preload responsive images.

        * Shared/WebPreferences.yaml:

2019-06-03  Darin Adler  <darin@apple.com>

        Finish cleanup of String::number for floating point
        https://bugs.webkit.org/show_bug.cgi?id=198471

        Reviewed by Yusuke Suzuki.

        * NetworkProcess/Classifier/WebResourceLoadStatisticsTelemetry.cpp:
        (WebKit::submitTopList): Use makeString instead of StringBuilder since it
        is more terse and possibly more efficient as well.
        * UIProcess/API/APIUserScript.cpp:
        (API::UserScript::generateUniqueURL): Ditto.
        * UIProcess/API/APIUserStyleSheet.cpp:
        (API::UserStyleSheet::generateUniqueURL): Ditto.

2019-06-03  Fujii Hironori  <Hironori.Fujii@sony.com>

        REGRESSION(r240862) [WinCairo][WK2] position:fixed elements don't show
        https://bugs.webkit.org/show_bug.cgi?id=198478

        Reviewed by Carlos Garcia Campos.

        All position:fixed elements didn't show in WinCairo WebKit2 since
        r240862 which turns acceleratedCompositingEnabled on for WebKit2.
        WinCairo WebKit2 doesn't have accelerated compositing support yet.
        Let's do the same with GTK port.

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::updatePreferences): Conditioned out the code
        enabling acceleratedCompositingEnabled for PLATFORM(WIN).

2019-06-03  Carlos Garcia Campos  <cgarcia@igalia.com>

        REGRESSION(r244182): [CoordinatedGraphics] Related view doesn't receive graphic updates
        https://bugs.webkit.org/show_bug.cgi?id=198418

        Reviewed by Žan Doberšek.

        This is because we need a DisplayRefreshMonitor per drawing area, but the one from the first ThreradedCompositor
        is always reused because they use the same display ID.

        * WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp:
        (WebKit::DrawingAreaCoordinatedGraphics::enterAcceleratedCompositingMode): Use a unique display ID derived from
        WebPage's ID.
        (WebKit::DrawingAreaCoordinatedGraphics::exitAcceleratedCompositingMode): Use the primary display ID.
        * WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.cpp:
        (WebKit::LayerTreeHost::LayerTreeHost): Get the current web page display ID instead of inventing one.
        (WebKit::LayerTreeHost::setIsDiscardable): Do not change display ID.

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

        Provide an action to save an image on a link sheet
        https://bugs.webkit.org/show_bug.cgi?id=198464

        Reviewed by Wenson Hsieh.

        When providing the set of default actions for a link
        sheet, if an URL to an image was provided then offer
        the action to save that image to Photos.

        * UIProcess/ios/WKActionSheetAssistant.mm:
        (-[WKActionSheetAssistant defaultActionsForLinkSheet:]):

2019-06-01  Konstantin Tokarev  <annulen@yandex.ru>

        Remove include directives unused since r245186
        https://bugs.webkit.org/show_bug.cgi?id=198463

        Reviewed by Don Olmstead.

        * NetworkProcess/cache/NetworkCacheBlobStorage.cpp:

2019-05-31  Megan Gardner  <megan_gardner@apple.com>

        Ensure keyboard editing is up to date
        https://bugs.webkit.org/show_bug.cgi?id=198444
        <rdar://problem/36311563>

        Reviewed by Ryosuke Niwa.

        In order for the keyboard cut/copy/undo/redo/etc buttons to be up to date
        based on the state of the selection, we need to let the input delegate know when the
        selection has changed.

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

2019-05-31  Sihui Liu  <sihui_liu@apple.com>

        Remove outdated FIXME in StorageManager
        https://bugs.webkit.org/show_bug.cgi?id=198049

        Reviewed by Geoffrey Garen.

        Previously StorageManager messages were dispatched and handled in the same thread, so we could perform a message
        check. Now they are on different thread, and we would not be able to verify those parameters when dispatching
        the message.

        * NetworkProcess/WebStorage/StorageManager.cpp:
        (WebKit::StorageManager::createLocalStorageMap):
        (WebKit::StorageManager::createTransientLocalStorageMap):
        (WebKit::StorageManager::createSessionStorageMap):
        (WebKit::StorageManager::destroyStorageMap):

2019-05-31  Jiewen Tan  <jiewen_tan@apple.com>

        Teach AuxiliaryProcess about LoadOptimizer
        https://bugs.webkit.org/show_bug.cgi?id=198443
        <rdar://problem/51319120>

        Reviewed by Brent Fulgham.

        * Shared/ios/AuxiliaryProcessIOS.mm:
        (WebKit::AuxiliaryProcess::platformInitialize):
        * Shared/mac/AuxiliaryProcessMac.mm:
        (WebKit::AuxiliaryProcess::platformInitialize):

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

        Add an option to mute audio capture automatically when page is not visible
        https://bugs.webkit.org/show_bug.cgi?id=198307

        Reviewed by Eric Carlson.

        Add API to set the new runtime flag.
        Make source proxy factories implement this automatic muting.

        * Shared/WebPreferences.yaml:
        * UIProcess/API/Cocoa/WKPreferences.mm:
        (-[WKPreferences _interruptAudioOnPageVisibilityChangeEnabled]):
        (-[WKPreferences _setInterruptAudioOnPageVisibilityChangeEnabled:]):
        * UIProcess/API/Cocoa/WKPreferencesPrivate.h:
        * WebProcess/cocoa/UserMediaCaptureManager.cpp:
        (WebKit::UserMediaCaptureManager::setAudioCapturePageState):
        (WebKit::UserMediaCaptureManager::setVideoCapturePageState):
        * WebProcess/cocoa/UserMediaCaptureManager.h:

2019-05-31  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] Autocorrection menu font is Times New Roman when using font-family: UICTFontTextStyle*
        https://bugs.webkit.org/show_bug.cgi?id=198427
        <rdar://problem/50031825>

        Reviewed by Tim Horton.

        When UICTFontTextStyle* is specified as the font-family in an editable element, text in autocorrection bubbles
        always uses Times New Roman font. This is because we send a font family name, font size, and font attributes to
        the UI process when computing autocorrection data for UIKit, and then assemble this information into a UIFont
        object via +[UIFont fontWithFamilyName:traits:size:]. However, in the case where UICTFontTextStyle* is specified
        as the font-family in CSS, the font family that we send to the UI process ends up being ".AppleSystemUIFont",
        which +fontWithFamilyName:traits:size: fails to map to the system font as intended.

        To fix this, we propagate font information to the UI process by encoding the UIFont itself via IPC, which
        serializes the font descriptor, and then deserializes into a UIFont in the UI process. This allows the system
        font to be returned in -fontForCaretSelection, which is invoked by UIKit when determining the font for the
        autocorrection bubble. See below for more details.

        Test: AutocorrectionTests.FontAtCaretWhenUsingUICTFontTextStyle

        * Shared/ios/WebAutocorrectionData.h: Copied from Source/WebKit/UIProcess/AutoCorrectionCallback.h.
        * Shared/ios/WebAutocorrectionData.mm: Renamed from Source/WebKit/UIProcess/AutoCorrectionCallback.h.
        (WebKit::WebAutocorrectionData::encode const):
        (WebKit::WebAutocorrectionData::decode):

        Introduce WebAutocorrectionData, a struct containing information used to show autocorrection UI on iOS (i.e.
        highlights and the bubble). This consists of a list of rects, along with a UIFont.

        * SourcesCocoa.txt:
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:

        Refactor requestAutocorrectionData to request a WebAutocorrectionData instead, and also use the new async IPC
        reply mechanism.

        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView requestAutocorrectionRectsForString:withCompletionHandler:]):
        (-[WKContentView fontForCaretSelection]):

        Grab the UIFont directly from the WebAutocorrectionData. Also, address a FIXME by scaling the font size by the
        content scale.

        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::requestAutocorrectionData):
        (WebKit::WebPageProxy::autocorrectionDataCallback): Deleted.
        (WebKit::WebPageProxy::autocorrectionContextCallback): Deleted.

        Remove some IPC callbacks that are now unused.

        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::requestAutocorrectionData):

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

        [iOS] Reveal the focused element when it's immediately above software keyboard
        https://bugs.webkit.org/show_bug.cgi?id=198412

        Reviewed by Wenson Hsieh.

        When _zoomToRevealFocusedElement is called with forceScroll set to NO (happens when input type is none or drawing
        or when the platform is iPad), we don't force scrolling to reveal the focused element when it's entirely visible.

        This can be misleading in cases where there is more content right beneath it relevant for editing operations.
        Zoom & scroll to reveal the focused element when the said element is within 50px of the software keyboard.

        * Platform/spi/ios/UIKitSPI.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _zoomToFocusRect:selectionRect:insideFixed:fontSize:minimumScale:maximumScale:allowScaling:forceScroll:]):

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

        Unreviewed, rolling out r245899.

        Seems to be causing crashes on iosmac

        Reverted changeset:

        "[iOS] UIProcess' background task expiration handler may get
        called after the app is foreground again"
        https://bugs.webkit.org/show_bug.cgi?id=198380
        https://trac.webkit.org/changeset/245899

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

        iOS: Main frame should be scrollable when pinch zoomed or software keyboard is up
        https://bugs.webkit.org/show_bug.cgi?id=198244

        Reviewed by Simon Fraser.

        This is a follow up to r245006. Even when overflow: hidden is specified on the document body,
        we still need to make it scrollable when the page is pinch zoomed or there is a content inset
        e.g. for software keyboard. Otherwise, the user won't be able to get to the content that is
        outside the visual viewport when pinch zoomed or the parts of the page that is not outside
        the visual viewport due to the scrolling caused by the software keyboard being brought up.

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

2019-05-31  Geoffrey Garen  <ggaren@apple.com>

        Some WeakPtr typedef cleanup
        https://bugs.webkit.org/show_bug.cgi?id=198431

        Reviewed by Chris Dumez.

        Use "using" instead of "typedef", since using is preferred in C++ for
        better compatibility with templates.

        * UIProcess/WebAuthentication/AuthenticatorManager.h:

2019-05-31  Commit Queue  <commit-queue@webkit.org>

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

        Broke quip (Requested by rniwa on #webkit).

        Reverted changeset:

        "iOS: Main frame should be scrollable when pinch zoomed or
        software keyboard is up"
        https://bugs.webkit.org/show_bug.cgi?id=198244
        https://trac.webkit.org/changeset/245953

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

        Optionally respect device management restrictions when loading from the network
        https://bugs.webkit.org/show_bug.cgi?id=198318
        <rdar://problem/44263806>

        Reviewed by Alex Christensen.

        * Configurations/Network-iOS.entitlements:
        * Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb:
        Add some entitlements and sandbox holes required to talk to DeviceManagement.

        * NetworkProcess/NetworkCORSPreflightChecker.cpp:
        (WebKit::NetworkCORSPreflightChecker::wasBlockedByRestrictions):
        * NetworkProcess/NetworkCORSPreflightChecker.h:
        * NetworkProcess/NetworkLoad.cpp:
        (WebKit::NetworkLoad::wasBlockedByRestrictions):
        * NetworkProcess/NetworkLoad.h:
        * NetworkProcess/PingLoad.cpp:
        (WebKit::PingLoad::wasBlockedByRestrictions):
        * NetworkProcess/PingLoad.h:
        * Shared/WebErrors.cpp:
        (WebKit::wasBlockedByRestrictionsError):
        * Shared/WebErrors.h:
        * NetworkProcess/NetworkDataTask.cpp:
        (WebKit::NetworkDataTask::create):
        (WebKit::NetworkDataTask::failureTimerFired):
        * NetworkProcess/NetworkDataTask.h:
        * Shared/API/APIError.h:
        * Shared/API/c/WKErrorRef.cpp:
        (WKErrorGetErrorCode):
        * Shared/API/c/WKErrorRef.h:
        Plumb a new error for loads that are blocked by device management restrictions.

        * NetworkProcess/NetworkLoadParameters.h:
        * NetworkProcess/NetworkResourceLoadParameters.cpp:
        (WebKit::NetworkResourceLoadParameters::encode const):
        (WebKit::NetworkResourceLoadParameters::decode):
        * WebProcess/Network/WebLoaderStrategy.cpp:
        (WebKit::WebLoaderStrategy::scheduleLoadFromNetworkProcess):
        Plumb a new bit that indicates whether a load is for the main resource of a frame.
        We will only apply device management restrictions to main resources.

        * NetworkProcess/NetworkSessionCreationParameters.cpp:
        (WebKit::NetworkSessionCreationParameters::privateSessionParameters):
        (WebKit::NetworkSessionCreationParameters::encode const):
        (WebKit::NetworkSessionCreationParameters::decode):
        * NetworkProcess/NetworkSessionCreationParameters.h:
        * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:
        (WebKit::WebsiteDataStore::parameters):
        Plumb a new bit indicating whether a network session should respect device mangement
        restrictions.

        * NetworkProcess/cocoa/NetworkDataTaskCocoa.h:
        * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
        (WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa):
        (WebKit::NetworkDataTaskCocoa::resume):
        Defer resuming the load until we have a reply from DeviceManagement framework
        about whether the URL should be blocked. If it is blocked, instead fail the load.

        * NetworkProcess/cocoa/NetworkSessionCocoa.h:
        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (-[WKNetworkSessionDelegate URLSession:dataTask:didReceiveResponse:completionHandler:]):
        (WebKit::NetworkSessionCocoa::NetworkSessionCocoa):
        (WebKit::NetworkSessionCocoa::deviceManagementPolicyMonitor):
        Cache a single DMFWebsitePolicyMonitor instance per NetworkSession.
        
        * UIProcess/API/APIWebsiteDataStore.cpp:
        (API::WebsiteDataStore::defaultDataStoreConfiguration):
        The default data store is persistent; its configuration should reflect that.

        * UIProcess/API/Cocoa/WKProcessPool.mm:
        (-[WKProcessPool _setAllowsAnySSLCertificateForServiceWorker:]): Style.

        * UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
        (-[WKWebsiteDataStore _initWithConfiguration:]):
        Make it possible to create a non-persistent WKWebsiteDataStore from a
        configuration, and ensure that it does not have any persistent storage directories set.

        * UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h:
        * UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm:
        (-[_WKWebsiteDataStoreConfiguration init]):
        (-[_WKWebsiteDataStoreConfiguration initWithNonPersistentConfiguration]):
        (-[_WKWebsiteDataStoreConfiguration isPersistent]):
        (-[_WKWebsiteDataStoreConfiguration _setWebStorageDirectory:]):
        (-[_WKWebsiteDataStoreConfiguration _setIndexedDBDatabaseDirectory:]):
        (-[_WKWebsiteDataStoreConfiguration _setWebSQLDatabaseDirectory:]):
        (-[_WKWebsiteDataStoreConfiguration _setCookieStorageFile:]):
        (-[_WKWebsiteDataStoreConfiguration _setResourceLoadStatisticsDirectory:]):
        (-[_WKWebsiteDataStoreConfiguration _setCacheStorageDirectory:]):
        (-[_WKWebsiteDataStoreConfiguration _setServiceWorkerRegistrationDirectory:]):
        (-[_WKWebsiteDataStoreConfiguration deviceManagementRestrictionsEnabled]):
        (-[_WKWebsiteDataStoreConfiguration setDeviceManagementRestrictionsEnabled:]):
        * UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp:
        (WebKit::WebsiteDataStoreConfiguration::copy):
        * UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h:
        (WebKit::WebsiteDataStoreConfiguration::isPersistent const):
        (WebKit::WebsiteDataStoreConfiguration::setPersistent):
        (WebKit::WebsiteDataStoreConfiguration::perOriginStorageQuota const):
        (WebKit::WebsiteDataStoreConfiguration::deviceManagementRestrictionsEnabled const):
        (WebKit::WebsiteDataStoreConfiguration::setDeviceManagementRestrictionsEnabled):
        (WebKit::WebsiteDataStoreConfiguration::perOriginStorageQuota): Deleted.
        Make it possible to create a _WKWebsiteDataStoreConfiguration that will create a non-persistent
        data store. Add a bit to _WKWebsiteDataStoreConfiguration that controls whether the network 
        session will respect device management restrictions.

        * WebKit.xcodeproj/project.pbxproj:
        * WebKit/NetworkProcess/cocoa/DeviceManagementSoftLink.h:
        * WebKit/NetworkProcess/cocoa/DeviceManagementSoftLink.mm:
        * WebKit/Platform/spi/Cocoa/DeviceManagementSPI.h:
        Add some soft-linking and SPI headers.

2019-05-31  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r245943.

        Caused API test WKWebView.LocalStorageProcessSuspends to fail
        on release bots.

        Reverted changeset:

        "WKWebsiteDataStore API fails to fetch web storage data for
        non-persistent data store"
        https://bugs.webkit.org/show_bug.cgi?id=198317
        https://trac.webkit.org/changeset/245943

2019-05-31  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r245946.

        Breaks the watchOS build.

        Reverted changeset:

        "Add an option to mute audio capture automatically when page
        is not visible"
        https://bugs.webkit.org/show_bug.cgi?id=198307
        https://trac.webkit.org/changeset/245946

2019-05-31  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] WPERenderer: ensure we complete the last frame when leaving AC mode
        https://bugs.webkit.org/show_bug.cgi?id=198372

        Reviewed by Michael Catanzaro.

        It can happen that we leave AC mode after a new image is received from the web process but before it's
        committed. It can also happen that we receive a new image from the web process right after we have left AC
        mode. In both cases we need to complete the frame to ensure we don't leave the wayland compositor waiting
        forever for a frame to be completed.

        * UIProcess/gtk/AcceleratedBackingStoreWayland.cpp:
        (WebKit::AcceleratedBackingStoreWayland::update): Complete any pending image when a new surface is used.
        (WebKit::AcceleratedBackingStoreWayland::displayBuffer): Complete the given image and return early if we already
        left AC mode.
        * UIProcess/gtk/AcceleratedBackingStoreWayland.h:

2019-05-31  Carlos Garcia Campos  <cgarcia@igalia.com>

        [CoordinatedGraphics] WPERenderer: do not release the host file descritor when initializing the render target
        https://bugs.webkit.org/show_bug.cgi?id=198371

        Reviewed by Michael Catanzaro.

        We are assuming that there will always be only one target for a web page. In the GTK port we destroy the render
        target when leaving AC mode, and a new one is created when re-entering AC mode. Since the file descriptor is
        released on the first target and adopted by libwpe, the second target passes -1 as host fd to libwpe, and the
        new surface created by the target is not properly registered in the wayland compositor. That means that frame
        requests for the new target are simply ignored by the wayland compositor, it returns early on surfacxe frame
        when the surface doesn't have a view backend client.

        * WebProcess/WebPage/WebPage.h:
        (WebKit::WebPage::hostFileDescriptor const): Rename it and make it const.
        * WebProcess/WebPage/libwpe/AcceleratedSurfaceLibWPE.cpp:
        (WebKit::AcceleratedSurfaceLibWPE::initialize): Pass a duplicated file descriptor to
        wpe_renderer_backend_egl_target_create().

2019-05-31  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Fix memory leak introduced in r245807
        https://bugs.webkit.org/show_bug.cgi?id=198369

        Reviewed by Michael Catanzaro.

        We should destroy the wpe_view_backend_exportable_fdo created in AcceleratedBackingStoreWayland.

        * UIProcess/gtk/AcceleratedBackingStoreWayland.cpp:
        (WebKit::AcceleratedBackingStoreWayland::~AcceleratedBackingStoreWayland):

2019-05-31  Carlos Garcia Campos  <cgarcia@igalia.com>

        REGRESSION(r244182): [GTK] Web view no longer updated after re-entering AC mode
        https://bugs.webkit.org/show_bug.cgi?id=198367

        Reviewed by Sergio Villar Senin.

        This happens because we leave accelerated compositing mode when a rendering update is scheduled in
        RenderingUpdateScheduler. The ThreadedDisplayRefreshMonitor is destroyed without completing the
        frame, so that the RenderingUpdateScheduler is left scheduled forever, ignoring any new schedule request. We
        need to ensure we complete the frame request before destroying the display refresh monitor to leave the
        RenderingUpdateScheduler in a consistent state.

        * Shared/CoordinatedGraphics/threadedcompositor/ThreadedDisplayRefreshMonitor.cpp:
        (WebKit::ThreadedDisplayRefreshMonitor::invalidate):

2019-05-30  Ryosuke Niwa  <rniwa@webkit.org>

        iOS: Main frame should be scrollable when pinch zoomed or software keyboard is up
        https://bugs.webkit.org/show_bug.cgi?id=198244

        Reviewed by Simon Fraser.

        This is a follow up to r245006. Even when overflow: hidden is specified on the document body,
        we still need to make it scrollable when the page is pinch zoomed or there is a content inset
        e.g. for software keyboard. Otherwise, the user won't be able to get to the content that is
        outside the visual viewport when pinch zoomed or the parts of the page that is not outside
        the visual viewport due to the scrolling caused by the software keyboard being brought up.

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

2019-05-30  Youenn Fablet  <youenn@apple.com>

        Add an option to mute audio capture automatically when page is not visible
        https://bugs.webkit.org/show_bug.cgi?id=198307

        Reviewed by Eric Carlson.

        Add API to set the new runtime flag.
        Make source proxy factories implement this automatic muting.

        * Shared/WebPreferences.yaml:
        * UIProcess/API/Cocoa/WKPreferences.mm:
        (-[WKPreferences _interruptAudioOnPageVisibilityChangeEnabled]):
        (-[WKPreferences _setInterruptAudioOnPageVisibilityChangeEnabled:]):
        * UIProcess/API/Cocoa/WKPreferencesPrivate.h:
        * WebProcess/cocoa/UserMediaCaptureManager.cpp:
        (WebKit::UserMediaCaptureManager::setAudioCapturePageState):
        (WebKit::UserMediaCaptureManager::setVideoCapturePageState):
        * WebProcess/cocoa/UserMediaCaptureManager.h:

2019-05-30  Sihui Liu  <sihui_liu@apple.com>

        WKWebsiteDataStore API fails to fetch web storage data for non-persistent data store
        https://bugs.webkit.org/show_bug.cgi?id=198317
        <rdar://problem/51244662>

        Reviewed by Alex Christensen.

        Use LocalStorageNameSpace instead of SessionStorageNameSpace for localStorage in ephemeral session or 
        websiteDataStore.

        * NetworkProcess/WebStorage/StorageManager.cpp:
        (WebKit::StorageManager::StorageArea::isEphemeral const):
        (WebKit::StorageManager::StorageArea::removeListener):
        (WebKit::StorageManager::StorageArea::setItems):
        (WebKit::StorageManager::StorageArea::openDatabaseAndImportItemsIfNeeded const):
        (WebKit::StorageManager::LocalStorageNamespace::~LocalStorageNamespace):
        (WebKit::StorageManager::LocalStorageNamespace::getOrCreateStorageArea):
        (WebKit::StorageManager::LocalStorageNamespace::clearAllStorageAreas):
        (WebKit::StorageManager::LocalStorageNamespace::ephemeralOrigins const):
        (WebKit::StorageManager::LocalStorageNamespace::cloneTo):
        (WebKit::StorageManager::StorageManager):
        (WebKit::StorageManager::cloneSessionStorageNamespace):
        (WebKit::StorageManager::getLocalStorageOrigins):
        (WebKit::StorageManager::getLocalStorageOriginDetails):
        (WebKit::StorageManager::deleteLocalStorageEntriesForOrigin):
        (WebKit::StorageManager::deleteLocalStorageOriginsModifiedSince):
        (WebKit::StorageManager::deleteLocalStorageEntriesForOrigins):
        (WebKit::StorageManager::createLocalStorageMap):
        (WebKit::StorageManager::createTransientLocalStorageMap):
        (WebKit::StorageManager::createSessionStorageMap):
        (WebKit::StorageManager::destroyStorageMap):
        (WebKit::StorageManager::getValues):
        (WebKit::StorageManager::setItem):
        (WebKit::StorageManager::removeItem):
        (WebKit::StorageManager::clear):
        (WebKit::StorageManager::suspend):
        (WebKit::StorageManager::resume):
        (WebKit::StorageManager::StorageArea::isSessionStorage const): Deleted.
        * NetworkProcess/WebStorage/StorageManager.h:
        (): Deleted.
        * WebProcess/WebStorage/StorageAreaMap.cpp:
        (WebKit::StorageAreaMap::dispatchStorageEvent):
        (WebKit::StorageAreaMap::dispatchSessionStorageEvent):
        (WebKit::StorageAreaMap::connect):
        * WebProcess/WebStorage/StorageNamespaceImpl.cpp:
        (WebKit::StorageNamespaceImpl::createEphemeralLocalStorageNamespace):
        (WebKit::StorageNamespaceImpl::createLocalStorageNamespace):
        * WebProcess/WebStorage/StorageNamespaceImpl.h:
        * WebProcess/WebStorage/WebStorageNamespaceProvider.cpp:
        (WebKit::WebStorageNamespaceProvider::createLocalStorageNamespace):

2019-05-30  Youenn Fablet  <youenn@apple.com>

        REGRESSION (r245873) [Mac WK2] Layout Test http/wpt/service-workers/update-service-worker.https.html is a flaky crash after running new test
        https://bugs.webkit.org/show_bug.cgi?id=198379
        <rdar://problem/51264361>

        Reviewed by Alex Christensen.

        This case can happen when network process is crashing.
        Given the WebSWClientConnection may be kept alive, it might reregister itself but in that case will never be unregistered.
        Remove the WebSWClientConnection from the NetworkProcessConnection corresponding map on destruction time.
        Covered by no longer crashing tests.

        * WebProcess/Network/NetworkProcessConnection.cpp:
        (WebKit::NetworkProcessConnection::removeSWClientConnection):
        * WebProcess/Network/NetworkProcessConnection.h:
        * WebProcess/Storage/WebSWClientConnection.cpp:
        (WebKit::WebSWClientConnection::~WebSWClientConnection):

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

        Network process crash when decoding SecItemResponseData
        https://bugs.webkit.org/show_bug.cgi?id=198388
        <rdar://problem/50408046>

        Reviewed by Alex Christensen.

        * Shared/cf/ArgumentCodersCF.cpp:
        (IPC::decode):
        When decoding the elements inside a CFArrayRef, if decoding was successful but
        the CFTypeRef element is still null then skip it instead of trying to append it
        to the array. A CFArray container is not allowed to contain null.
        Some of our decoders for CFTypeRef types may not initialize the element even if
        the decode() function returns true. For example, the decoders for CFArrayRef and
        CFDictionaryRef return true if the encoded container was null but do not create
        a container.

        * Shared/mac/SecItemResponseData.cpp:
        (WebKit::SecItemResponseData::SecItemResponseData):
        nit: The wrong parameter was being moved. This is more efficient.

        (WebKit::SecItemResponseData::encode const):
        nit: Drop unnecessary .get().

        * UIProcess/mac/SecItemShimProxy.cpp:
        (WebKit::SecItemShimProxy::secItemRequest):
        nit: Use nullptr instead of 0.

2019-05-30  Sihui Liu  <sihui_liu@apple.com>

        Stop StorageManager when network process is ready to suspend
        https://bugs.webkit.org/show_bug.cgi?id=198201
        <rdar://problem/49683172>

        Reviewed by Youenn Fablet.

        To avoid local storage database operations that can hold lock to database files, suspend thread of
        StorageManager when network process is about to suspend.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::actualPrepareToSuspend):
        (WebKit::NetworkProcess::resume):
        * NetworkProcess/NetworkSession.cpp:
        (WebKit::NetworkSession::~NetworkSession):
        * NetworkProcess/WebStorage/StorageManager.cpp:
        (WebKit::StorageManager::suspend):
        (WebKit::StorageManager::resume):
        * NetworkProcess/WebStorage/StorageManager.h:

2019-05-30  Wenson Hsieh  <wenson_hsieh@apple.com>

        Missing caret when focusing an editable field if the selection was set when WKWebView wasn't first responder
        https://bugs.webkit.org/show_bug.cgi?id=198356
        <rdar://problem/50798593>

        Reviewed by Tim Horton.

        In this bug, the DOM selection is initially set by script in a web view that is not the first responder. Then,
        either the user begins editing by tapping somewhere such that the selection does not change, or an editable
        element is programmatically focused and the client allows programmatic focus to show the keyboard. This is
        because the selection clipping rect used by the UI process when computing the bounds of the caret view is empty,
        causing the entire caret to be clipped.

        This is due to two related issues: first, no updated editor state is sent to the UI process after the element is
        focused, if the selection has not also changed. This means that while the selection geometry is sent over to the
        UI process, the selection clipping rect (a member of the EditorState's PostLayoutData called
        "focusedElementRect") becomes stale in the UI process, since the there was no focused element when the
        previously computed editor state was sent to the UI process. To fix this, we schedule a full editor state update
        when an element is focused, to ensure that the selection is eventually updated in the UI process.

        Secondly, even once the editor state update is sent to the UI process, we will actually avoid updating any text
        selection views, since there is no change in WKSelectionDrawingInfo, which currently consists of a selection
        type, and either a caret rect or a list of selection rects. However, since selection drawing is also affected by
        the selection clipping rect, it seems reasonable to add the selection clipping rect to the drawing info, and
        trigger a selection update if this selection clipping rect has changed.

        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (WebKit::WKSelectionDrawingInfo::WKSelectionDrawingInfo):

        Add selectionClippingRect to WKSelectionDrawingInfo, and check against it when comparing two drawing infos.

        (WebKit::operator==):
        (WebKit::operator<<):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::elementDidFocus):

        Schedule an editor state update when focusing an element. In many cases, an editor state update has already been
        scheduled when focusing an element, so this becomes a no-op; however, in this scenario, it delivers updated
        selection clipping rects (i.e. the focused element rect) and other updated information to the UI process.

2019-05-30  David Quesada  <david_quesada@apple.com>

        REGRESSION (r245756) [Mac] 2 TestWebKitAPI.DownloadProgress* and TestWebKitAPI._WKDownload.DownloadMonitorCancel are flaky timeouts
        https://bugs.webkit.org/show_bug.cgi?id=198298
        rdar://problem/51182393

        Reviewed by Alexey Proskuryakov.

        When canceling a download, there has always been a race condition between:

         (A) the execution of Download::didCancel() within the block passed to
             -[NSURLSessionDownloadTask cancelByProducingResumeData:] within
             Download::platformCancelNetworkLoad(), and

         (B) the invocation of -[WKNetworkSessionDelegate URLSession:task:didCompleteWithError:]

        If A happens before B, the block calls didCancel() on the download, which reports the
        cancellation to the UI process and tears down the download. When B happens, WKNetworkSessionDelegate
        gracefully handles the fact that the Download has been removed from the map, and nothing
        else happens. Life is good.

        If B happens before A, -URLSession:task:didCompleteWithError: invokes Download::didFail(),
        which reports a download failure (*not* a cancellation) to the UI process and tears down
        the Download and DownloadProxy. On release builds, this can leave the tests waiting for a
        cancellation until they time out. When A happens, the block calls Download::didCancel().
        This messages the UI process, which results in a debug assertion failure from an unhandled
        message since the DownloadProxy was torn down when the failure was reported. Meanwhile,
        the network process hits a debug assertion in DownloadManager::downloadFinished() when
        trying to remove the Download *again*.

        r245756 made the bad case (B before A) more likely by adding a delay before didCancel()
        is called.

        Make this race condition impossible by eliminating the didCancel() from the cancellation
        block, and instead relying on -URLSession:task:didCompleteWithError: to report the
        download as canceled. This also effectively coalesces calls to platformCancelNetworkLoad(),
        which, if called multiple times before CFNetwork reports that the download was canceled,
        could cause multiple calls to didCancel(), resulting in the same assertion failures seen
        in the B-before-A case.

        No new tests, as recreating this race condition in the test scenario would require
        additional machinery, and is no longer even possible since we don't depend on the calling
        of the cancellation handler in order to report the Download as canceled.

        * NetworkProcess/Downloads/Download.cpp:
        (WebKit::Download::cancel):
        * NetworkProcess/Downloads/Download.h:
        (WebKit::Download::wasCanceled const):
        * NetworkProcess/Downloads/cocoa/DownloadCocoa.mm:
        (WebKit::Download::platformCancelNetworkLoad):
        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (-[WKNetworkSessionDelegate URLSession:task:didCompleteWithError:]):

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

        [iOS] UIProcess' background task expiration handler may get called after the app is foreground again
        https://bugs.webkit.org/show_bug.cgi?id=198380
        <rdar://problem/49762471>

        Reviewed by Geoffrey Garen.

        UIProcess' background task expiration handler may get called after the app is foreground again. When
        this happens, we already have a foreground assertion on behalf of the WebContent process, and the view
        is visible. We would send the WillSuspendImminently IPC to the WebContent process, which would freeze
        its layers, even though it is visible on screen.

        To address the issue, we now check if the app is visible in the expiration handler. If it is visible,
        we do not notify clients of imminent suspension. Instead, we end the background task right away and
        call _updateBackgroundTask asynchronously to start a new background task if necessary.

        * UIProcess/ios/ProcessAssertionIOS.mm:
        (-[WKProcessAssertionBackgroundTaskManager _updateBackgroundTask]):

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

        [iOS] Third-party extensions using WKWebView are unable to render anything
        https://bugs.webkit.org/show_bug.cgi?id=198359
        <rdar://problem/51105015>

        Reviewed by Brent Fulgham and Geoff Garen.

        Third-party extensions using WKWebView are unable to render anything because we do not get notified
        when the extension's visibility changes. Because we do not recognize the extension showing the
        WebView to be foreground, we do not take a process assertion on behalf of the child processes and
        they get suspended before they get a chance to render anything.

        The root of the issue is that WebKit was relying on BKSApplicationStateMonitor.handler to get
        notified when the extension's state switches between foreground and background. However, the handler
        never gets called unless the extension has an appropriate entitlement.

        To address the issue, we now use the same logic for extensions and we do for view services.
        I have verified that the _UIViewServiceHostDidEnterBackgroundNotification / _UIViewServiceHostWillEnterForegroundNotification
        notifications get sent to the extensions (even third-party). We also properly detect MobileSafari as
        host application and are able to get MobileSafari's foreground state accurately.

        * UIProcess/ApplicationStateTracker.mm:

2019-05-30  Wenson Hsieh  <wenson_hsieh@apple.com>

        Rare crash under `WebPage::shouldIgnoreMetaViewport const` when shrinking to fit content
        https://bugs.webkit.org/show_bug.cgi?id=198374
        <rdar://problem/51261348>

        Reviewed by Tim Horton.

        This is a speculative fix for the crash; what appears to be happening is that the shrink-to-fit-content timer
        is somehow being scheduled after the page has already been closed. We can probably fix this by bailing when
        scheduling shrink-to-fit-content if m_isClosed is true.

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

2019-05-30  Truitt Savell  <tsavell@apple.com>

        Unreviewed, rolling out r245881.

        Broke 13 Layout tests on WK2

        Reverted changeset:

        "WKWebsiteDataStore API fails to fetch web storage data for
        non-persistent data store"
        https://bugs.webkit.org/show_bug.cgi?id=198317
        https://trac.webkit.org/changeset/245881

2019-05-30  Philippe Normand  <pnormand@igalia.com>

        Unreviewed, WPE without a11y support build fix.

        * UIProcess/wpe/WebPageProxyWPE.cpp: Include atk headers only when enabled.

2019-05-29  Wenson Hsieh  <wenson_hsieh@apple.com>

        Remove some logic to suppress the text selection assistant during drop
        https://bugs.webkit.org/show_bug.cgi?id=198354

        Reviewed by Tim Horton.

        This logic was originally added to hide the ranged selection after performing a drop in editable content.
        However, after r245803, we (1) no longer show the keyboard and/or text selection views when dropping, and (2)
        the final selection is now a caret, so it's no longer necessary to suppress the selection assistant.

        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView dropInteraction:performDrop:]):
        (-[WKContentView dropInteraction:concludeDrop:]):

2019-05-29  Sihui Liu  <sihui_liu@apple.com>

        WKWebsiteDataStore API fails to fetch web storage data for non-persistent data store
        https://bugs.webkit.org/show_bug.cgi?id=198317

        Reviewed by Alex Christensen.

        Use LocalStorageNameSpace instead of SessionStorageNameSpace for localStorage in ephemeral session or 
        websiteDataStore.

        * NetworkProcess/WebStorage/StorageManager.cpp:
        (WebKit::StorageManager::StorageArea::isEphemeral const):
        (WebKit::StorageManager::StorageArea::removeListener):
        (WebKit::StorageManager::StorageArea::setItems):
        (WebKit::StorageManager::StorageArea::openDatabaseAndImportItemsIfNeeded const):
        (WebKit::StorageManager::LocalStorageNamespace::~LocalStorageNamespace):
        (WebKit::StorageManager::LocalStorageNamespace::getOrCreateStorageArea):
        (WebKit::StorageManager::LocalStorageNamespace::clearAllStorageAreas):
        (WebKit::StorageManager::LocalStorageNamespace::ephemeralOrigins const):
        (WebKit::StorageManager::LocalStorageNamespace::cloneTo):
        (WebKit::StorageManager::StorageManager):
        (WebKit::StorageManager::cloneSessionStorageNamespace):
        (WebKit::StorageManager::getLocalStorageOrigins):
        (WebKit::StorageManager::getLocalStorageOriginDetails):
        (WebKit::StorageManager::deleteLocalStorageEntriesForOrigin):
        (WebKit::StorageManager::deleteLocalStorageOriginsModifiedSince):
        (WebKit::StorageManager::deleteLocalStorageEntriesForOrigins):
        (WebKit::StorageManager::createLocalStorageMap):
        (WebKit::StorageManager::createTransientLocalStorageMap):
        (WebKit::StorageManager::createSessionStorageMap):
        (WebKit::StorageManager::destroyStorageMap):
        (WebKit::StorageManager::getValues):
        (WebKit::StorageManager::setItem):
        (WebKit::StorageManager::removeItem):
        (WebKit::StorageManager::clear):
        (WebKit::StorageManager::StorageArea::isSessionStorage const): Deleted.
        * NetworkProcess/WebStorage/StorageManager.h:
        (): Deleted.
        * WebProcess/WebStorage/StorageAreaMap.cpp:
        (WebKit::StorageAreaMap::dispatchStorageEvent):
        (WebKit::StorageAreaMap::dispatchSessionStorageEvent):
        (WebKit::StorageAreaMap::connect):
        * WebProcess/WebStorage/StorageNamespaceImpl.cpp:
        (WebKit::StorageNamespaceImpl::createEphemeralLocalStorageNamespace):
        (WebKit::StorageNamespaceImpl::createLocalStorageNamespace):
        * WebProcess/WebStorage/StorageNamespaceImpl.h:
        * WebProcess/WebStorage/WebStorageNamespaceProvider.cpp:
        (WebKit::WebStorageNamespaceProvider::createLocalStorageNamespace):

2019-05-29  Don Olmstead  <don.olmstead@sony.com>

        Remove ENABLE definitions from WebKit config files
        https://bugs.webkit.org/show_bug.cgi?id=197858

        Reviewed by Simon Fraser.

        Remove ENABLE flags that were present in the config files. Add the ENABLE flags
        to FeatureDefines.xcconfig instead.

        * Configurations/FeatureDefines.xcconfig:
        * WebKit2Prefix.h:
        * config.h:

2019-05-29  Youenn Fablet  <youenn@apple.com>

        Reestablish WebSWClientConnection in case of network process crash
        https://bugs.webkit.org/show_bug.cgi?id=198333

        Reviewed by Alex Christensen.

        WebSWClientConnection now takes a RefPtr<IPC::Connection> so that on network process crash, it will set it back to null.
        On the next call that needs the connection, WebSWClientConnection will reinitialize its underlying IPC connection and its own identifier.
        Make sure that all code paths requiring this initialization are covered.

        * WebProcess/Network/NetworkProcessConnection.cpp:
        (WebKit::NetworkProcessConnection::didClose):
        (WebKit::NetworkProcessConnection::serviceWorkerConnectionForSession):
        (WebKit::NetworkProcessConnection::isRegisteredActiveSWClientConnection):
        (WebKit::NetworkProcessConnection::initializeSWClientConnection):
        * WebProcess/Network/NetworkProcessConnection.h:
        * WebProcess/Storage/WebSWClientConnection.cpp:
        (WebKit::WebSWClientConnection::WebSWClientConnection):
        (WebKit::WebSWClientConnection::~WebSWClientConnection):
        (WebKit::WebSWClientConnection::initializeConnectionIfNeeded):
        (WebKit::WebSWClientConnection::ensureConnectionAndSend):
        (WebKit::WebSWClientConnection::scheduleJobInServer):
        (WebKit::WebSWClientConnection::finishFetchingScriptInServer):
        (WebKit::WebSWClientConnection::addServiceWorkerRegistrationInServer):
        (WebKit::WebSWClientConnection::removeServiceWorkerRegistrationInServer):
        (WebKit::WebSWClientConnection::registerServiceWorkerClient):
        (WebKit::WebSWClientConnection::unregisterServiceWorkerClient):
        (WebKit::WebSWClientConnection::didResolveRegistrationPromise):
        (WebKit::WebSWClientConnection::matchRegistration):
        (WebKit::WebSWClientConnection::runOrDelayTaskForImport):
        (WebKit::WebSWClientConnection::whenRegistrationReady):
        (WebKit::WebSWClientConnection::getRegistrations):
        (WebKit::WebSWClientConnection::startFetch):
        (WebKit::WebSWClientConnection::cancelFetch):
        (WebKit::WebSWClientConnection::continueDidReceiveFetchResponse):
        (WebKit::WebSWClientConnection::connectionToServerLost):
        (WebKit::WebSWClientConnection::syncTerminateWorker):
        (WebKit::WebSWClientConnection::serverConnectionIdentifier const):
        (WebKit::WebSWClientConnection::updateThrottleState):
        * WebProcess/Storage/WebSWClientConnection.h:

2019-05-29  Said Abou-Hallawa  <sabouhallawa@apple.com>

        [iOS] WebPage::positionInformation() may set InteractionInformationAtPosition.isImage to true but leave image unset
        https://bugs.webkit.org/show_bug.cgi?id=198202

        Reviewed by Tim Horton.

        r192037 added the flags isLink and isImage to InteractionInformationAtPosition.
        It also made WebPage::positionInformation() set isImage to true but before 
        ensuring there is a valid image at the position.

        Safari WebKit additions assumes if isImage is true then the image has to
        hold a valid ShareableBitmap pointer. Since WebPage::positionInformation()
        is the only place that sets isImage, the fix is to set isImage to true
        only  after passing all the image validation checks.

        Since WebPage::positionInformation() is a little bit difficult to read
        (182 lines), It was re-factored by splitting it to static functions. 

        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::focusedElementPositionInformation):
        (WebKit::linkIndicatorPositionInformation):
        (WebKit::dataDetectorLinkPositionInformation):
        (WebKit::imagePositionInformation):
        (WebKit::boundsPositionInformation):
        (WebKit::elementPositionInformation):
        (WebKit::selectionPositionInformation):
        (WebKit::textInteractionPositionInformation):
        (WebKit::WebPage::positionInformation):

2019-05-29  Geoffrey Garen  <ggaren@apple.com>

        WeakPtr breaks vtables when upcasting to base classes
        https://bugs.webkit.org/show_bug.cgi?id=188799

        Reviewed by Youenn Fablet.

        * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::networkSession):
        * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h:
        * Shared/WebBackForwardListItem.cpp:
        (WebKit::WebBackForwardListItem::suspendedPage const):
        * Shared/WebBackForwardListItem.h:
        (WebKit::WebBackForwardListItem::suspendedPage const): Deleted. Moved
        functions out of line to avoid #include explosion for .get().

        * UIProcess/Authentication/cocoa/SecKeyProxyStore.h:
        (WebKit::SecKeyProxyStore::get const):
        (WebKit::SecKeyProxyStore::weakPtrFactory const): Deleted. Adopted
        CanMakeWeakPtr.

        * UIProcess/WebAuthentication/AuthenticatorManager.h:
        * UIProcess/WebProcessProxy.cpp: It takes an extra using declaration
        to disambiguate multiple CanMakeWeakPtr base classes now.

        (WebKit::WebProcessProxy::processPool const):
        * UIProcess/WebProcessProxy.h:
        (WebKit::WebProcessProxy::processPool const): Deleted. Moved
        functions out of line to avoid #include explosion for .get().

2019-05-29  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r245857.

        Breaks internal builds.

        Reverted changeset:

        "WeakPtr breaks vtables when upcasting to base classes"
        https://bugs.webkit.org/show_bug.cgi?id=188799
        https://trac.webkit.org/changeset/245857

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

        [iOS] The WebContent process needs proper entitlement to do secure drawing
        https://bugs.webkit.org/show_bug.cgi?id=198343
        <rdar://problem/50671257>

        Reviewed by Tim Horton.

        The WebContent process needs proper entitlement to do secure drawing on iOS.

        * Configurations/WebContent-iOS.entitlements:

2019-05-29  Youenn Fablet  <youenn@apple.com>

        UserMediaCaptureManager should remove a source from its map once the source is ended
        https://bugs.webkit.org/show_bug.cgi?id=198337

        Reviewed by Eric Carlson.

        When the source is stopped, for instance using MediaStreamTrack.stop,
        remove the source from UserMediaCaptureManager sources map.
        This makes sure the map will not grow over time.
        Add an if check to ensure that the source is still there before processing an incoming IPC call.

        When UIProcess tells us the capture is finished (typically capture failed), remove the entry on WebProcess side as well.

        * WebProcess/cocoa/UserMediaCaptureManager.cpp:
        (WebKit::UserMediaCaptureManager::createCaptureSource):
        (WebKit::UserMediaCaptureManager::sourceStopped):
        (WebKit::UserMediaCaptureManager::captureFailed):
        (WebKit::UserMediaCaptureManager::sourceMutedChanged):
        (WebKit::UserMediaCaptureManager::sourceSettingsChanged):
        (WebKit::UserMediaCaptureManager::storageChanged):
        (WebKit::UserMediaCaptureManager::ringBufferFrameBoundsChanged):
        (WebKit::UserMediaCaptureManager::audioSamplesAvailable):
        (WebKit::UserMediaCaptureManager::remoteVideoSampleAvailable):
        (WebKit::UserMediaCaptureManager::sourceEnded):
        (WebKit::UserMediaCaptureManager::applyConstraintsSucceeded):
        (WebKit::UserMediaCaptureManager::applyConstraintsFailed):

2019-05-29  Youenn Fablet  <youenn@apple.com>

        UserMediaCaptureManagerProxy::SourceProxy should directly have access to its IPC connection
        https://bugs.webkit.org/show_bug.cgi?id=198335

        Reviewed by Eric Carlson.

        Previously, SourceProxy was getting its IPC connection by going through its manager, then its process proxy.
        As some calls can be done from a background thread, it is safer to directly make SourceProxy own a Ref of its IPC connection.

        * UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
        (WebKit::UserMediaCaptureManagerProxy::SourceProxy::SourceProxy):
        (WebKit::UserMediaCaptureManagerProxy::createMediaSourceForCaptureDeviceWithConstraints):

2019-05-28  Geoffrey Garen  <ggaren@apple.com>

        WeakPtr breaks vtables when upcasting to base classes
        https://bugs.webkit.org/show_bug.cgi?id=188799

        Reviewed by Youenn Fablet.

        * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::networkSession):
        * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h:
        * Shared/WebBackForwardListItem.cpp:
        (WebKit::WebBackForwardListItem::suspendedPage const):
        * Shared/WebBackForwardListItem.h:
        (WebKit::WebBackForwardListItem::suspendedPage const): Deleted. Moved
        functions out of line to avoid #include explosion for .get().

        * UIProcess/Authentication/cocoa/SecKeyProxyStore.h:
        (WebKit::SecKeyProxyStore::get const):
        (WebKit::SecKeyProxyStore::weakPtrFactory const): Deleted. Adopted
        CanMakeWeakPtr.

        * UIProcess/WebAuthentication/AuthenticatorManager.h:
        * UIProcess/WebProcessProxy.cpp: It takes an extra using declaration
        to disambiguate multiple CanMakeWeakPtr base classes now.

        (WebKit::WebProcessProxy::processPool const):
        * UIProcess/WebProcessProxy.h:
        (WebKit::WebProcessProxy::processPool const): Deleted. Moved
        functions out of line to avoid #include explosion for .get().

2019-05-29  Youenn Fablet  <youenn@apple.com>

        Modernize getting proxies of UserMediaCaptureManagerProxy
        https://bugs.webkit.org/show_bug.cgi?id=198336

        Reviewed by Eric Carlson.

        No change of behavior, use HashMap::get instead of find.

        * UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
        (WebKit::UserMediaCaptureManagerProxy::startProducingData):
        (WebKit::UserMediaCaptureManagerProxy::stopProducingData):
        (WebKit::UserMediaCaptureManagerProxy::capabilities):
        (WebKit::UserMediaCaptureManagerProxy::setMuted):
        (WebKit::UserMediaCaptureManagerProxy::applyConstraints):

2019-05-29  Andy Estes  <aestes@apple.com>

        [watchOS] Remove an unneeded #import
        https://bugs.webkit.org/show_bug.cgi?id=198339
        <rdar://problem/51195415>

        Reviewed by Wenson Hsieh.

        * UIProcess/ios/forms/WKTimePickerViewController.mm:

2019-05-29  Brent Fulgham  <bfulgham@apple.com>

        Correct flaky WebAuthN test cases
        https://bugs.webkit.org/show_bug.cgi?id=198308
        <rdar://problem/48677219>

        Reviewed by David Kilzer.

        Correct offset math in the MockHidConnection implementation. The write position of
        the payload buffer was computed using the value of 'size()', which is set to the full
        capacity of the vector after a 'grow()' operation.

        Tests: http/wpt/webauthn

        * UIProcess/WebAuthentication/Mock/MockHidConnection.cpp:
        (WebKit::MockHidConnection::feedReports): 

2019-05-28  Fujii Hironori  <Hironori.Fujii@sony.com>

        [WinCairo] REGRESSION(r245186) Crash in NetworkCache::IOChannel::read in http/tests/IndexedDB some tests
        https://bugs.webkit.org/show_bug.cgi?id=197941

        Reviewed by Don Olmstead.

        http/tests/IndexedDB some tests were crashing in
        NetworkCache::IOChannel::read in order to allocate a buffer with
        std::numeric_limits<size_t>::max() as the size.

        IOChannel::read should check the file size, and calculate the read
        size.

        * NetworkProcess/cache/NetworkCacheIOChannelCurl.cpp:
        (WebKit::NetworkCache::IOChannel::read): Limit the read buffer
        size by calling FileSystem::getFileSize.

2019-05-28  Brent Fulgham  <bfulgham@apple.com>

        Fix sandbox violation when using QuickLook on iOS
        https://bugs.webkit.org/show_bug.cgi?id=198312
        <rdar://problem/51134351>

        Reviewed by Alexey Proskuryakov.

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

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

        Horizontal scrollbar flashes after scrolling vertically with keyboard
        https://bugs.webkit.org/show_bug.cgi?id=197942
        <rdar://problem/46169578>

        Reviewed by Dean Jackson.

        * UIProcess/ios/WKKeyboardScrollingAnimator.mm:
        (axesForDelta):
        (-[WKKeyboardScrollViewAnimator scrollToContentOffset:animated:]):
        Only flash relevant axes.

        * Platform/spi/ios/UIKitSPI.h:

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

        Build Fix.

        * UIProcess/WKImagePreviewViewController.mm:
        (-[WKImagePreviewViewController IGNORE_WARNINGS_END]):
        (-[WKImagePreviewViewController previewActionItems]): Deleted.

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

        REGRESSION(r245795): causing internal testers to exit early after 50 crashes.
        https://bugs.webkit.org/show_bug.cgi?id=198310
        <rdar://problem/51192535>

        Reviewed by Simon Fraser.

        * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeViews.mm:
        (WebKit::touchActionsForPoint):
        Initialize hitView to nil.

2019-05-28  Brent Fulgham  <bfulgham@apple.com>

        Remove dead code from sandboxes
        https://bugs.webkit.org/show_bug.cgi?id=198300

        Reviewed by Alexey Proskuryakov.

        SSIA.

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

2019-05-28  Brent Fulgham  <bfulgham@apple.com>

        Update sandbox rules for more News use cases
        https://bugs.webkit.org/show_bug.cgi?id=198236
        <rdar://problem/50054027>

        Reviewed by Alexey Proskuryakov.

        Update the WebContent and Network process sandboxes so that News has the same set of allowed
        service access as regular WebKit views.

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

2019-05-27  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Use WPEBackend-fdo for accelerating compositing in Wayland instead of the nested compositor
        https://bugs.webkit.org/show_bug.cgi?id=197944

        Reviewed by Michael Catanzaro.

        The WPEBackend-fdo implementation is quite similar to our Wayland nested compositor, but more efficient (using
        linux dmabuf, resource caching, etc.). This allows us to share even more code with WPE port too.

        * PlatformGTK.cmake:
        * Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:
        (WebKit::ThreadedCompositor::forceRepaint): WPE doesn't support force repaint yet.
        * Shared/WebPageCreationParameters.cpp:
        (WebKit::WebPageCreationParameters::encode const): Use USE(WPE_RENDERER) instead of PLATFORM(WPE).
        (WebKit::WebPageCreationParameters::decode): Ditto.
        * Shared/WebPageCreationParameters.h:
        * Shared/WebProcessCreationParameters.cpp:
        (WebKit::WebProcessCreationParameters::encode const): Ditto.
        (WebKit::WebProcessCreationParameters::decode): Ditto.
        * Shared/WebProcessCreationParameters.h:
        * SourcesGTK.txt:
        * UIProcess/API/gtk/PageClientImpl.cpp:
        (WebKit::PageClientImpl::hostFileDescriptor): Implement it when using WPE just calling webkitWebViewBaseRenderHostFileDescriptor().
        * UIProcess/API/gtk/PageClientImpl.h:
        * UIProcess/API/gtk/WebKitWebViewBase.cpp:
        (webkitWebViewBaseCreateWebPage): Initialize the web page after the accelerated backing store is created, since
        it's used now during intialization.
        (webkitWebViewBaseRenderHostFileDescriptor): Return AcceleratedBackingStore::renderHostFileDescriptor()
        * UIProcess/API/gtk/WebKitWebViewBasePrivate.h:
        * UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.cpp:
        * UIProcess/PageClient.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::creationParameters): Use USE(WPE_RENDERER) instead of PLATFORM(WPE).
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::initializeNewWebProcess): Remove wayland display name initialization.
        * UIProcess/glib/WebProcessPoolGLib.cpp:
        (WebKit::WebProcessPool::platformInitializeWebProcess): Initialize wayland display name when not using WPE here
        now. In case of using WPE, initialize hostClientFileDescriptor and implementationLibraryName.
        * UIProcess/glib/WebProcessProxyGLib.cpp:
        (WebKit::WebProcessProxy::platformGetLaunchOptions): Remove unused wayland socket command line process parameter.
        * UIProcess/gtk/AcceleratedBackingStore.h:
        (WebKit::AcceleratedBackingStore::renderHostFileDescriptor): Return -1 by default.
        * UIProcess/gtk/AcceleratedBackingStoreWayland.cpp:
        (WebKit::AcceleratedBackingStoreWayland::create): When using WPE call wpe_fdo_initialize_for_egl_display() and
        check we have the required extensions.
        (WebKit::AcceleratedBackingStoreWayland::AcceleratedBackingStoreWayland): When using WPE initialize the view backend.
        (WebKit::AcceleratedBackingStoreWayland::~AcceleratedBackingStoreWayland): When using WPE release the EGL images
        still in use and the view texture.
        (WebKit::AcceleratedBackingStoreWayland::renderHostFileDescriptor): Call wpe_view_backend_get_renderer_host_fd().
        (WebKit::AcceleratedBackingStoreWayland::displayBuffer): Create the view texture if needed, save the pending
        image and schedule a redraw.
        (WebKit::AcceleratedBackingStoreWayland::paint): When using WPE commit the pending image and use it as target of
        the view texture.
        * UIProcess/gtk/AcceleratedBackingStoreWayland.h:
        * UIProcess/gtk/HardwareAccelerationManager.cpp:
        (WebKit::HardwareAccelerationManager::HardwareAccelerationManager): When using WPE disable hardware acceleration
        if wpe_fdo_initialize_for_egl_display() fails.
        * UIProcess/gtk/WaylandCompositor.cpp:
        * UIProcess/gtk/WaylandCompositor.h:
        * WebProcess/WebPage/AcceleratedSurface.cpp:
        (WebKit::AcceleratedSurface::create): Create an AcceleratedSurfaceLibWPE for GTK port when using WPE and shared
        display is Wayland.
        * WebProcess/WebPage/WebPage.cpp:
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/libwpe/AcceleratedSurfaceLibWPE.cpp:
        (WebKit::AcceleratedSurfaceLibWPE::initialize): Use the shared display for compositing instead of shared display.
        * WebProcess/WebPage/libwpe/AcceleratedSurfaceLibWPE.h:
        * WebProcess/WebProcess.h:
        * WebProcess/glib/WebProcessGLib.cpp:
        (WebKit::WebProcess::platformInitializeWebProcess): Initialize the wpe display when using WPE.

2019-05-27  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] Dropping in an editable element should result in a ranged selection
        https://bugs.webkit.org/show_bug.cgi?id=198267
        <rdar://problem/51145977>

        Reviewed by Tim Horton.

        When drag and drop was first implemented for iOS in iOS 11, selection behavior when dropping into editable
        elements matched that of macOS, by leaving the inserted content selected after performing the drop. However, in
        other parts of the platform (e.g. Notes), both the keyboard and selection views are not shown after a drop.

        Instead of matching macOS behavior, WebKit on iOS should match the rest of the platform. This is a little
        tricky, since we use the selection range after a drop to create a TextIndicator snapshot when creating a drag
        preview. To resolve this, we refactor some of the logic introduced in r245778 to remember the DOM range to
        snapshot before collapsing the range to the end of the inserted content.

        Tested by adjusting some existing API tests.

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _elementDidFocus:userIsInteracting:blurPreviousNode:activityStateChanges:userObject:]):

        Remove some logic that currently presents the keyboard while the user is performing a drop that focuses an
        editable element.

        * WebProcess/WebPage/WebPage.h:

        Add a member variable to keep track of which range should be snapshotted when generating a drop preview.

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

        Collapse the selection range to the end after an edit drag (i.e., a drop in an editable area that inserted
        content).

        (WebKit::WebPage::computeAndSendEditDragSnapshot):

2019-05-27  Chris Dumez  <cdumez@apple.com>

        Unreviewed Win Cairo build fix after r245796.

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

2019-05-27  Chris Dumez  <cdumez@apple.com>

        Unreviewed Win Cairo build fix after r245796.

        * Shared/WebPageCreationParameters.cpp:
        (WebKit::WebPageCreationParameters::decode):

2019-05-27  Chris Dumez  <cdumez@apple.com>

        Use a strongly-typed identifier for pages
        https://bugs.webkit.org/show_bug.cgi?id=198206

        Reviewed by Youenn Fablet.

        * WebKit/*:

2019-05-27  Antoine Quint  <graouts@apple.com>

        [Pointer Events] Test at pointerevents/ios/touch-action-none-in-overflow-scrolling-touch.html times out
        https://bugs.webkit.org/show_bug.cgi?id=198275
        <rdar://problem/50618496>

        Reviewed by Antti Koivisto.

        Only WKCompositingView instances may have associated touch-action data, so we should filter out any hit-testing view
        that isn't a WKCompositingView when finding the view that should hit-test when looking for touch-action information.

        * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeViews.mm:
        (WebKit::touchActionsForPoint):

2019-05-27  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Update OptionsGTK.cmake and NEWS for 2.25.1 release

        * gtk/NEWS: Add release notes for 2.25.1.

2019-05-27  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Fix GTK distcheck

        Remove symbols that are not longer present in the library.

        * webkitglib-symbols.map:

2019-05-26  Simon Fraser  <simon.fraser@apple.com>

        Move VelocityData to WebCore
        https://bugs.webkit.org/show_bug.cgi?id=198261

        Reviewed by Antti Koivisto.

        Move VelocityData and HistoricalVelocityData to WebCore for future use in overflow scroll.

        VisibleContentRectUpdateInfo can now store a VelocityData (its timestamp is used as
        the timetamp for the entire update).

        * Shared/VisibleContentRectUpdateInfo.cpp:
        (WebKit::VisibleContentRectUpdateInfo::encode const):
        (WebKit::VisibleContentRectUpdateInfo::decode):
        (WebKit::operator<<):
        * Shared/VisibleContentRectUpdateInfo.h:
        (WebKit::VisibleContentRectUpdateInfo::VisibleContentRectUpdateInfo):
        (WebKit::VisibleContentRectUpdateInfo::scrollVelocity const):
        (WebKit::VisibleContentRectUpdateInfo::enclosedInScrollableAncestorView const):
        (WebKit::VisibleContentRectUpdateInfo::timestamp const):
        (WebKit::operator==):
        (WebKit::VisibleContentRectUpdateInfo::horizontalVelocity const): Deleted.
        (WebKit::VisibleContentRectUpdateInfo::verticalVelocity const): Deleted.
        (WebKit::VisibleContentRectUpdateInfo::scaleChangeRate const): Deleted.
        * Shared/WebCoreArgumentCoders.cpp:
        (IPC::ArgumentCoder<VelocityData>::encode):
        (IPC::ArgumentCoder<VelocityData>::decode):
        * Shared/WebCoreArgumentCoders.h:
        * UIProcess/ios/WKContentView.mm:
        (-[WKContentView didUpdateVisibleRect:unobscuredRect:contentInsets:unobscuredRectInScrollViewCoordinates:obscuredInsets:unobscuredSafeAreaInsets:inputViewBounds:scale:minimumScale:inStableState:isChangingObscuredInsetsInteractively:enclosedInScrollableAncestorView:]):
        (WebKit::HistoricalVelocityData::VelocityData::VelocityData): Deleted.
        (WebKit::HistoricalVelocityData::HistoricalVelocityData): Deleted.
        (WebKit::HistoricalVelocityData::velocityForNewData): Deleted.
        (WebKit::HistoricalVelocityData::clear): Deleted.
        (WebKit::HistoricalVelocityData::append): Deleted.
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::dynamicViewportSizeUpdate):
        (WebKit::WebPage::viewportConfigurationChanged):
        (WebKit::adjustVelocityDataForBoundedScale):
        (WebKit::WebPage::updateVisibleContentRects):

2019-05-26  John Wilander  <wilander@apple.com>

        Resource Load Statistics: Downgrade document.referrer to the referrer's eTLD+1 if the page was navigated to with a prevalent resource referrer containing link decoration
        https://bugs.webkit.org/show_bug.cgi?id=198227
        <rdar://problem/51117258>

        Reviewed by Alex Christensen.

        This patch adds a call back to the UI process if the network process finds the navigational
        data transfer was done by a prevalent resource and we need to adjust something for the page.
        Currently, that adjustment is to downgrade document.referrer.

        The patch also removes an unused completion handler.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::didCommitCrossSiteLoadWithDataTransfer):
        (WebKit::NetworkProcess::committedCrossSiteLoadWithLinkDecoration): Deleted.
            New name since we no longer only look for link decoration but also other means of navigational data transfer.
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::didCommitCrossSiteLoadWithDataTransfer):
        (WebKit::NetworkProcessProxy::didCommitCrossSiteLoadWithDataTransferFromPrevalentResource):
        (WebKit::NetworkProcessProxy::committedCrossSiteLoadWithLinkDecoration): Deleted.
            New name since we no longer only look for link decoration but also other means of navigational data transfer.
        * UIProcess/Network/NetworkProcessProxy.h:
        * UIProcess/Network/NetworkProcessProxy.messages.in:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::checkIfNavigationContainsDataTransfer):
        (WebKit::WebPageProxy::didCommitLoadForFrame):
        (WebKit::WebPageProxy::didCommitCrossSiteLoadWithDataTransferFromPrevalentResource):
        (WebKit::isNonUniqueNavigationWithLinkDecoration): Deleted.
            New name since we no longer only look for link decoration but also other means of navigational data transfer.
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::didCommitCrossSiteLoadWithDataTransfer):
        (WebKit::WebProcessPool::committedCrossSiteLoadWithLinkDecoration): Deleted.
            New name since we no longer only look for link decoration but also other means of navigational data transfer.
        * UIProcess/WebProcessPool.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::wasLoadedWithDataTransferFromPrevalentResource):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:

2019-05-26  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] Dropped text, attachments, and images should animate into place
        https://bugs.webkit.org/show_bug.cgi?id=198243
        <rdar://problem/35205373>

        Reviewed by Tim Horton.

        Adds support for targeted drop animations on iOS in modern WebKit by adopting UIKit SPI introduced in
        <rdar://problem/31075005> to allow updating the drop preview mid-flight. To get the animation right, we refactor
        and augment existing logic for taking snapshots after performing a drop in an editable content.

        Currently, upon dropping in editable content, we first snapshot the web view and temporarily cover the real web
        view with this snapshot. When the TextIndicator data arrives that contains (1) a snapshot of the visible part of
        the web view ignoring the selection, and (2) a snapshot of just the selected contents after drop, we crossfade
        from the web view snapshot to the snapshot in (1) using a hard-coded time delay (~500ms), and target the drop
        preview to the drag caret rect. During this process, snapshot (2) is completely ignored.

        This was effectively a halfway implemention of the desired effect of animating the dropped content into place
        and crossfading to the final content; before UIKit implemented updateable drag previews, the full implementation
        was not possible in modern WebKit (without using synchronous IPC).

        Now that we're able to update the drag preview in the middle of the drop animation, we can now utilize snapshot
        (2) above and clean up some parts of the drop animation in editable content. See below for more details.

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

        Add a testing hook to perform the given block after any pending edit drag snapshot has been received. See
        TestWebKitAPI changes for more detail.

        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        * UIProcess/PageClient.h:
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:

        Split up the existing DidConcludeEditDrag IPC message into two messages: WillReceiveEditDragSnapshot and
        DidReceiveEditDragSnapshot. This allows us to defer cleaning up the drag session state during an edit drop,
        until after the final edit drag snapshot has been received.

        * UIProcess/ios/DragDropInteractionState.h:

        Add some new methods to help manage the lifecycle of drop preview provider blocks.

        * UIProcess/ios/DragDropInteractionState.mm:
        (WebKit::createTargetedDragPreview):

        Drive-by fix: make this return a RetainPtr.

        (WebKit::DragDropInteractionState::prepareForDelayedDropPreview):

        Stores a drop preview provider, given to us by UIKit.

        (WebKit::DragDropInteractionState::deliverDelayedDropPreview):

        Invokes the stored drop preview providers with given text indicator data. This is invoked after snapshots are
        taken following an edit drag (this is additionally after all images in the inserted fragment have finished
        loading).

        (WebKit::DragDropInteractionState::clearAllDelayedItemPreviewProviders):

        Invokes all stored drop preview providers with a nil preview. This is invoked in any case where drag session
        cleanup occurs earlier than normal (e.g., if the web process crashes during drop), and ensures that the handlers
        are always invoked when cleaning up the drag session.

        (WebKit::DragDropInteractionState::previewForDragItem const):
        (WebKit::DragDropInteractionState::dragAndDropSessionsDidEnd):

        Call clearAllDelayedItemPreviewProviders.

        * UIProcess/ios/PageClientImplIOS.h:
        * UIProcess/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::willReceiveEditDragSnapshot):
        (WebKit::PageClientImpl::didReceiveEditDragSnapshot):
        (WebKit::PageClientImpl::didConcludeEditDrag): Deleted.

        More plumbing (see changes to DidConcludeEditDrag above).

        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView cleanupInteraction]):
        (-[WKContentView cleanUpDragSourceSessionState]):
        (-[WKContentView _willReceiveEditDragSnapshot]):
        (-[WKContentView _didReceiveEditDragSnapshot:]):

        Set _waitingForEditDragSnapshot to YES in the gap between when -_willReceiveEditDragSnapshot is invoked, and
        when -_didReceiveEditDragSnapshot is invoked. If _waitingForEditDragSnapshot is YES, we bail out of
        -cleanUpDragSourceSessionState, and instead clean up drag session state after the edit drag snapshot is
        received.

        (-[WKContentView _deliverDelayedDropPreviewIfPossible:]):
        (-[WKContentView _didPerformDragOperation:]):
        (-[WKContentView textEffectsWindow]):

        Drive-by fix to remove a workaround for a deprecation warning.

        (-[WKContentView dropInteraction:item:willAnimateDropWithAnimator:]):
        (-[WKContentView dropInteraction:concludeDrop:]):

        Implement this hook to ensure that the unselected content snapshot view and visible content snapshot view are
        guaranteed to be removed from the view after a drop in editable content, even if the drag edit snapshot arrives
        after the drop is concluded.

        (-[WKContentView dropInteraction:previewForDroppingItem:withDefault:]):
        (-[WKContentView _dropInteraction:delayedPreviewProviderForDroppingItem:previewProvider:]):

        Implement the new UIKit SPI here. UIKit hands us a preview provider here, which we can invoke at a later time
        to update the drop preview. We do this in _didReceiveEditDragSnapshot.

        (-[WKContentView _doAfterReceivingEditDragSnapshotForTesting:]):
        (-[WKContentView _didConcludeEditDrag:]): Deleted.
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::willReceiveEditDragSnapshot):
        (WebKit::WebPageProxy::didReceiveEditDragSnapshot):
        (WebKit::WebPageProxy::didConcludeDrop):
        (WebKit::WebPageProxy::didConcludeEditDrag): Deleted.
        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::didFinishLoadingImageForElement):
        * WebProcess/WebCoreSupport/WebChromeClient.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::didFinishLoadingImageForElement):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::didConcludeDrop):

        If an edit drag has been concluded, there's no need to hang on to pending dropped image elements anymore; clear
        out the set here.

        (WebKit::WebPage::didConcludeEditDrag):

        After concluding an edit drag, we try to deliver two web content snapshots to the UI process, so that the UI
        process can assemble a targeted drop preview for UIKit. One snapshot is of the visible content area, not
        including any selected content. The other snapshot is of the selected content only. However, when dropping
        images (or a text selection containing images), these images may not yet have been loaded. If that is the case,
        these images will appear to be missing from these snapshots.

        To ensure that we don't take this snapshot too early, defer it until all image elements in the dropped content
        range have finished loading. We can tell that all dropped images have finished loading by using a new client
        hook that is invoked when an image has finished loading.

        (WebKit::WebPage::didFinishLoadingImageForElement):
        (WebKit::WebPage::computeAndSendEditDragSnapshot):

        Snapshot the selected content and send it to the UI process.

2019-05-24  Youenn Fablet  <youenn@apple.com>

        REGRESSION (r245715?) [WK2] Layout Test http/wpt/cache-storage/cache-storage-networkprocess-crash.html is a flaky failure
        https://bugs.webkit.org/show_bug.cgi?id=198222
        <rdar://problem/51114899>

        Reviewed by Alex Christensen.

        In case a connection gets closed, handle all of its async reply completion handlers.
        This ensures they handlers are called in case the connection does not get destroyed until a much later stage.

        * Platform/IPC/Connection.cpp:
        (IPC::Connection::~Connection):
        (IPC::Connection::connectionDidClose):
        (IPC::addAsyncReplyHandler):
        (IPC::clearAsyncReplyHandlers):
        (IPC::CompletionHandler<void):

2019-05-24  Per Arne Vollan  <pvollan@apple.com>

        Remove unused member in WebsiteDataRecord
        https://bugs.webkit.org/show_bug.cgi?id=198231

        Reviewed by Brent Fulgham.

        The data member 'originsWithCredentials' in WebsiteDataRecord is no longer needed since origins
        with credentials are now stored in the 'origins' member.

        * UIProcess/WebsiteData/WebsiteDataRecord.cpp:
        (WebKit::WebsiteDataRecord::addOriginWithCredential): Deleted.
        * UIProcess/WebsiteData/WebsiteDataRecord.h:
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::fetchDataAndApply):

2019-05-24  David Quesada  <david_quesada@apple.com>

        Crash under WebCore::TimerBase::~TimerBase after a download is canceled
        https://bugs.webkit.org/show_bug.cgi?id=197927
        rdar://problem/50822728

        Reviewed by Ryosuke Niwa.

        * NetworkProcess/Downloads/cocoa/DownloadCocoa.mm:
        (WebKit::Download::platformCancelNetworkLoad):
            CFNetwork makes no guarantees about what thread is used to call the completion block
            passed to -[NSURLSessionDownloadTask cancelByProducingResumeData], and in some cases,
            it can be called on a background queue. This eventually causes the Download to be
            deallocated on the background queue, which triggers a release assertion failure in
            ~TimerBase. When CFNetwork finishes canceling the download, we should move to the
            main thread before calling didCancel().

2019-05-24  Youenn Fablet  <youenn@apple.com>

        Update messages_unittest.py after r245715
        https://bugs.webkit.org/show_bug.cgi?id=198214

        Reviewed by Alexey Proskuryakov.

        Update expected results for messages.py output.i
        Small refactoring to messages.py: instead of calling the completionHandler in case of decoding error with AsyncReply errors,
        call cancelReply directly as it does the same thing.

        * Scripts/webkit/MessageReceiverSuperclass-expected.cpp:
        (Messages::WebPage::TestAsyncMessage::callReply):
        (Messages::WebPage::TestAsyncMessage::cancelReply):
        (Messages::WebPage::TestAsyncMessageWithMultipleArguments::callReply):
        (Messages::WebPage::TestAsyncMessageWithMultipleArguments::cancelReply):
        * Scripts/webkit/messages.py:

2019-05-23  Ross Kirsling  <ross.kirsling@sony.com>

        Socket-based RWI should be able to inspect a JSContext
        https://bugs.webkit.org/show_bug.cgi?id=198197

        Reviewed by Don Olmstead.

        * UIProcess/socket/RemoteInspectorClient.cpp:
        (WebKit::RemoteInspectorClient::inspect):
        * UIProcess/socket/RemoteInspectorClient.h:
        * UIProcess/socket/RemoteInspectorProtocolHandler.cpp:
        (WebKit::RemoteInspectorProtocolHandler::inspect):
        (WebKit::RemoteInspectorProtocolHandler::targetListChanged):
        (WebKit::RemoteInspectorProtocolHandler::platformStartTask):
        * UIProcess/socket/RemoteInspectorProtocolHandler.h:
        Have the RWI client actually pass the debuggableType to WebInspectorUI.

2019-05-22  Stephanie Lewis  <slewis@apple.com>

        release builds of webkit cannot be used to generate a dyld shared cache
        https://bugs.webkit.org/show_bug.cgi?id=198150
        <rdar://problem/50675982>

        Reviewed by Dan Bernstein.

        Restrict the -not_for_dyld_shared_cache linker flag to macosx

        * Configurations/WebKit.xcconfig:


2019-05-23  Zalan Bujtas  <zalan@apple.com>

        [Hittest] Move hittesting from RenderView to Document
        https://bugs.webkit.org/show_bug.cgi?id=198192
        <rdar://problem/51077762>

        Reviewed by Antti Koivisto.

        * WebProcess/WebPage/ViewGestureGeometryCollector.cpp:
        (WebKit::ViewGestureGeometryCollector::collectGeometryForSmartMagnificationGesture):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::determinePrimarySnapshottedPlugIn):
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::dynamicViewportSizeUpdate):

2019-05-23  Youenn Fablet  <youenn@apple.com>

        CacheStorageConnection callbacks should be completed on network connection close
        https://bugs.webkit.org/show_bug.cgi?id=195757

        Reviewed by Alex Christensen.

        Update according new WebCore CacheStorageConnection interface.
        Use Async IPC replies so that the completion handlers are called on network crash.

        Allow to have specific error handling in case of cancelled reply or badly decoded message.
        This allows to reject the corresponding JS promise.

        * CMakeLists.txt:
        * DerivedSources-output.xcfilelist:
        * DerivedSources.make:
        * NetworkProcess/cache/CacheStorageEngine.cpp:
        (WebKit::CacheStorage::Engine::clearMemoryRepresentation):
        * NetworkProcess/cache/CacheStorageEngineCaches.cpp:
        (WebKit::CacheStorage::Caches::requestSpace):
        (WebKit::CacheStorage::Caches::writeRecord):
        * NetworkProcess/cache/CacheStorageEngineConnection.cpp:
        (WebKit::CacheStorageEngineConnection::open):
        (WebKit::CacheStorageEngineConnection::remove):
        (WebKit::CacheStorageEngineConnection::caches):
        (WebKit::CacheStorageEngineConnection::retrieveRecords):
        (WebKit::CacheStorageEngineConnection::deleteMatchingRecords):
        (WebKit::CacheStorageEngineConnection::putRecords):
        * NetworkProcess/cache/CacheStorageEngineConnection.h:
        (IPC::AsyncReplyError<WebCore::DOMCacheEngine::CacheIdentifierOrError>::create):
        (IPC::AsyncReplyError<WebCore::DOMCacheEngine::RecordIdentifiersOrError>::create):
        (IPC::AsyncReplyError<WebCore::DOMCacheEngine::CacheInfosOrError>::create):
        (IPC::AsyncReplyError<WebCore::DOMCacheEngine::RecordsOrError>::create):
        * NetworkProcess/cache/CacheStorageEngineConnection.messages.in:
        * Platform/IPC/ArgumentCoders.h:
        * Platform/IPC/Connection.h:
        (IPC::AsyncReplyError::create):
        * Scripts/webkit/messages.py:
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/Cache/WebCacheStorageConnection.cpp:
        (WebKit::WebCacheStorageConnection::open):
        (WebKit::WebCacheStorageConnection::remove):
        (WebKit::WebCacheStorageConnection::retrieveCaches):
        (WebKit::WebCacheStorageConnection::retrieveRecords):
        (WebKit::WebCacheStorageConnection::batchDeleteOperation):
        (WebKit::WebCacheStorageConnection::batchPutOperation):
        (WebKit::WebCacheStorageConnection::engineRepresentation):
        * WebProcess/Cache/WebCacheStorageConnection.h:
        * WebProcess/Cache/WebCacheStorageConnection.messages.in: Removed.
        * WebProcess/Network/NetworkProcessConnection.cpp:
        (WebKit::NetworkProcessConnection::didReceiveMessage):

2019-05-23  Sihui Liu  <sihui_liu@apple.com>

        Handling for non-persistent data should be consistent in computeNetworkProcessAccessTypeForDataFetch
        https://bugs.webkit.org/show_bug.cgi?id=198050

        Reviewed by Youenn Fablet.

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

2019-05-23  Youenn Fablet  <youenn@apple.com>

        Set default WebsiteDataStore storage quota based on StorageQuotaManager
        https://bugs.webkit.org/show_bug.cgi?id=198133
        <rdar://problem/51031436>

        Reviewed by Geoffrey Garen.

        * UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h:

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

        Deprecate more preview API
        https://bugs.webkit.org/show_bug.cgi?id=198152

        Reviewed by Dean Jackson.

        This is working towards <rdar://problem/51003503>

        * UIProcess/API/Cocoa/WKPreviewActionItem.h:
        * UIProcess/API/Cocoa/WKPreviewActionItem.mm:
        * UIProcess/API/Cocoa/WKPreviewActionItemIdentifiers.h:
        * UIProcess/API/Cocoa/WKPreviewActionItemInternal.h:
        * UIProcess/API/Cocoa/WKPreviewElementInfo.h:
        * UIProcess/API/Cocoa/WKPreviewElementInfo.mm:
        * UIProcess/API/Cocoa/WKUIDelegate.h:
        * UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.h:
        (WebKit::ScrollingTreeScrollingNodeDelegateIOS::activeTouchActions const):
        * UIProcess/ios/WKContentViewInteraction.mm:
        (previewIdentifierForElementAction):
        (-[WKContentView _interactionShouldBeginFromPreviewItemController:forPosition:]):
        (-[WKContentView _presentedViewControllerForPreviewItemController:]):
        (-[WKContentView _previewItemController:commitPreview:]):

2019-05-23  Antoine Quint  <graouts@apple.com>

        [tvOS] Build broken by r245639
        https://bugs.webkit.org/show_bug.cgi?id=198172
        <rdar://problem/51048991>

        Unreviewed build fix.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::touchWithIdentifierWasRemoved):
        * UIProcess/WebPageProxy.h:
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::touchWithIdentifierWasRemoved): Deleted.
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::touchWithIdentifierWasRemoved):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::touchWithIdentifierWasRemoved): Deleted.

2019-05-23  Antoine Quint  <graouts@apple.com>

        [tvOS] Build broken by r245639
        https://bugs.webkit.org/show_bug.cgi?id=198172
        <rdar://problem/51048991>

        Unreviewed build fix.

        * WebProcess/WebPage/WebPage.messages.in:

2019-05-23  Adrian Perez de Castro  <aperez@igalia.com>

        [WPE] Build fails with ENABLE_VIDEO=OFF and ENABLE_WEB_AUDIO=OFF
        https://bugs.webkit.org/show_bug.cgi?id=198125

        Reviewed by Philippe Normand.

        * UIProcess/glib/WebProcessPoolGLib.cpp: Guard the inclusion of GStreamerCommon.h with USE(GSTREAMER).
        * WebProcess/glib/WebProcessGLib.cpp: Ditto.

2019-05-22  Antoine Quint  <graouts@apple.com>

        [tvOS] Build broken by r245639
        https://bugs.webkit.org/show_bug.cgi?id=198172
        <rdar://problem/51048991>

        Unreviewed build fix.

        * UIProcess/ios/WKSyntheticTapGestureRecognizer.m:
        (-[WKSyntheticTapGestureRecognizer reset]):
        (-[WKSyntheticTapGestureRecognizer touchesEnded:withEvent:]):

2019-05-22  Youenn Fablet  <youenn@apple.com>

        Use modern async IPC for EngineRepresentationCompleted and ClearMemoryRepresentationCompleted
        https://bugs.webkit.org/show_bug.cgi?id=198134

        Reviewed by Alex Christensen.

        * NetworkProcess/cache/CacheStorageEngineConnection.cpp:
        (WebKit::CacheStorageEngineConnection::clearMemoryRepresentation):
        (WebKit::CacheStorageEngineConnection::engineRepresentation):
        * NetworkProcess/cache/CacheStorageEngineConnection.h:
        * NetworkProcess/cache/CacheStorageEngineConnection.messages.in:
        * WebProcess/Cache/WebCacheStorageConnection.cpp:
        (WebKit::WebCacheStorageConnection::clearMemoryRepresentation):
        (WebKit::WebCacheStorageConnection::engineRepresentation):
        (WebKit::WebCacheStorageConnection::clearMemoryRepresentationCompleted): Deleted.
        (WebKit::WebCacheStorageConnection::engineRepresentationCompleted): Deleted.
        * WebProcess/Cache/WebCacheStorageConnection.h:
        * WebProcess/Cache/WebCacheStorageConnection.messages.in:

2019-05-22  Ryosuke Niwa  <rniwa@webkit.org>

        REGRESSION(r245148): Removing inputmode="none" does not bring up software keyboard
        https://bugs.webkit.org/show_bug.cgi?id=198141

        Reviewed by Geoffrey Garen.

        r245148 changed _requiresKeyboardWhenFirstResponder to return NO when shouldShowAutomaticKeyboardUI
        returns NO with regards to software keyboard. This introduced a regression that removing inputmode="none"
        no longer brings up the software keyboard. Fixed the bug by making it return YES when inputmode="none"
        is present on an editable element in shouldShowAutomaticKeyboardUI, partially restoring the old behavior.

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView shouldShowAutomaticKeyboardUI]):
        (-[WKContentView _shouldShowAutomaticKeyboardUIIgnoringInputMode]):
        (-[WKContentView _requiresKeyboardWhenFirstResponder]):

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

        REGRESSION (r240552): PDF contents are not exposed to Accessibility (VO, etc.)
        https://bugs.webkit.org/show_bug.cgi?id=198146
        <rdar://problem/50698533>

        Reviewed by Simon Fraser.

        * WebProcess/WebPage/Cocoa/WebPageCocoa.mm:
        (WebKit::WebPage::updateMockAccessibilityElementAfterCommittingLoad):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::didCommitLoad):
        (WebKit::WebPage::updateMockAccessibilityElementAfterCommittingLoad):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/mac/WKAccessibilityWebPageObjectBase.h:
        * WebProcess/WebPage/mac/WKAccessibilityWebPageObjectBase.mm:
        (-[WKAccessibilityWebPageObjectBase accessibilityRootObjectWrapper]):
        (-[WKAccessibilityWebPageObjectBase setWebPage:]):
        (-[WKAccessibilityWebPageObjectBase setHasMainFramePlugin:]):
        In r240552, we changed to only defer to the main frame PluginView's
        accessibility tree if the cached "has a plugin" bit is true. That bit
        was only updated in WebPage::platformInitialize, which is long before
        we've actually loaded anything or have any clue if we're going to have
        a plugin.

        Instead, push updates every time we commit a load, which coincides
        with when we make other decisions based on having a plugin or not.
        Also, just use the existence of a PluginDocument to make the decision,
        instead of actually digging in to see if there's a PluginView, since
        PluginView comes in asynchronously.

2019-05-22  Ryosuke Niwa  <rniwa@webkit.org>

        Crash in WebFrame::jsContext() when m_coreFrame is null
        https://bugs.webkit.org/show_bug.cgi?id=198067

        Reviewed by Alex Christensen.

        Added missing null checks. Unfortunately no new tests since we don't have a reproducible test case.

        * WebProcess/WebPage/WebFrame.cpp:
        (WebKit::WebFrame::jsContext):
        (WebKit::WebFrame::jsContextForWorld):

2019-05-22  Sihui Liu  <sihui_liu@apple.com>

        API Test landed in r245540 [Mac WK2] TestWebKitAPI.WKWebView.LocalStorageProcessCrashes is a flaky failure
        https://bugs.webkit.org/show_bug.cgi?id=198090
        <rdar://problem/51003644>

        Reviewed by Youenn Fablet.

        We used to dispatch StorageManager message to StorageManager's work queue, which required message handler to be
        added to queue before receiving first StorageManager message, otherwise network process would not know how to
        decode the message.

        After r245540, when netork process crashes and dom storage is accessed from web process after that, web process 
        re-establishes its connection to network process, asks network process to add message handler, and then sends 
        StorageManager message immediately. Because work queue message receiver is added on a background thread in 
        network process, it is possible the StorageManager message is received before that.

        A safe and easy resolution is to not dispatch StorageManager message to work queue, so that we don't need to 
        wait for the message receiver to be added. Handling message on the main thread also allows us to untying the 
        knot that binds StorageManager and connection, which may be a preferred design in the future.

        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::didReceiveMessage):
        (WebKit::NetworkConnectionToWebProcess::didReceiveSyncMessage):
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::webPageWasAdded):
        * NetworkProcess/WebStorage/StorageManager.cpp:
        (WebKit::StorageManager::processDidCloseConnection):
        (WebKit::StorageManager::createLocalStorageMap):
        (WebKit::StorageManager::createTransientLocalStorageMap):
        (WebKit::StorageManager::createSessionStorageMap):
        (WebKit::StorageManager::destroyStorageMap):
        (WebKit::didGetValues):
        (WebKit::StorageManager::getValues):
        (WebKit::StorageManager::setItem):
        (WebKit::StorageManager::setItems):
        (WebKit::StorageManager::removeItem):
        (WebKit::StorageManager::clear):
        (WebKit::StorageManager::processWillOpenConnection): Deleted.
        (WebKit::StorageManager::dispatchMessageToQueue): Deleted.
        (WebKit::StorageManager::dispatchSyncMessageToQueue): Deleted.
        * NetworkProcess/WebStorage/StorageManager.h:

2019-05-22  Antoine Quint  <graouts@apple.com>

        [iOS] Compatibility mouse events aren't prevented by calling preventDefault() on pointerdown
        https://bugs.webkit.org/show_bug.cgi?id=198124
        <rdar://problem/50410863>

        Reviewed by Tim Horton.

        In order to correctly prevent "compatibility" mouse events from being dispatched when the initial "pointerdown" event had preventDefault()
        called while handled, we need to pass the PointerID for the touch that triggered a tap gesture in the UI process down in the Web process
        and into the resulting PlatformMouseEvent.

        This means we need to identify the touch identifier, which is the same as the PointerID used for Pointer Events, in the single tap gesture
        recognizer, an instance of WKSyntheticTapGestureRecognizer. To do this, we subclass the -[UIResponder touchesEnded:withEvent:] method and
        track the touch identifier as the lastActiveTouchIdentifier, a new public property of WKSyntheticTapGestureRecognizer. To allow for this,
        we need the support of the content view's UIWebTouchEventsGestureRecognizer which is exposed to the WKSyntheticTapGestureRecognizer as its
        supportingWebTouchEventsGestureRecognizer property. This lastActiveTouchIdentifier property is cleared as the gesture recognizer is reset.

        This allows the content view to pass the PointerID down to the Web process starting from -[WKContentView _singleTapRecognized:], going
        through WebPageProxy::commitPotentialTap() and eventually WebPage::completeSyntheticClick().

        While we used to tell the PointerCaptureController that a PointerID was no longer active when a given touch ended or was canceled (in
        WebKitAdditions code), we can no longer do this as the dispatch of a synthetic tap is performed asynchronously and will happen past the
        dispatch of "pointerup" and "pointercancel" Pointer Events. To clear inactive PointerIDs from the PointerCaptureController, we add a new
        touchWithIdentifierWasRemoved() method on the WebPage and its proxy. When the WKSyntheticTapGestureRecognizer resets and -[WKContentView _singleTapDidReset:]
        is called, we call that method which allows for only active PointerIDs to be tracked by the PointerCaptureController.

        * UIProcess/WebPageProxy.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView setupInteraction]):
        (-[WKContentView cleanupInteraction]):
        (-[WKContentView _singleTapDidReset:]):
        (-[WKContentView _singleTapRecognized:]):
        * UIProcess/ios/WKSyntheticTapGestureRecognizer.h:
        * UIProcess/ios/WKSyntheticTapGestureRecognizer.m:
        (-[WKSyntheticTapGestureRecognizer reset]):
        (-[WKSyntheticTapGestureRecognizer touchesEnded:withEvent:]):
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::touchWithIdentifierWasRemoved):
        (WebKit::WebPageProxy::commitPotentialTap):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::dispatchSyntheticMouseMove):
        (WebKit::WebPage::handleSyntheticClick):
        (WebKit::WebPage::completePendingSyntheticClickForContentChangeObserver):
        (WebKit::WebPage::completeSyntheticClick):
        (WebKit::WebPage::commitPotentialTap):
        (WebKit::WebPage::touchWithIdentifierWasRemoved):

2019-05-22  Jiewen Tan  <jiewen_tan@apple.com>

        [WebAuthN] Support Attestation Conveyance Preference
        https://bugs.webkit.org/show_bug.cgi?id=192722
        <rdar://problem/49939647>

        Reviewed by Brent Fulgham.

        * UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm:
        (WebKit::LocalAuthenticator::continueMakeCredentialAfterAttested):
        * UIProcess/WebAuthentication/fido/CtapHidAuthenticator.cpp:
        (WebKit::CtapHidAuthenticator::continueMakeCredentialAfterResponseReceived const):
        * UIProcess/WebAuthentication/fido/U2fHidAuthenticator.cpp:
        (WebKit::U2fHidAuthenticator::continueRegisterCommandAfterResponseReceived):

2019-05-22  Zalan Bujtas  <zalan@apple.com>

        [Paste] Add support for preferred presentation size when pasting an image
        https://bugs.webkit.org/show_bug.cgi?id=198132
        <rdar://problem/50886917>

        Reviewed by Wenson Hsieh.

        * UIProcess/API/Cocoa/_WKElementAction.mm:
        (addToReadingList):
        * UIProcess/ios/WKActionSheetAssistant.mm:
        (-[WKActionSheetAssistant defaultActionsForLinkSheet:]):
        (-[WKActionSheetAssistant defaultActionsForImageSheet:]):

2019-05-22  Youenn Fablet  <youenn@apple.com>

        Implement Feature policy self/none/* parsing
        https://bugs.webkit.org/show_bug.cgi?id=198078

        Reviewed by Eric Carlson.

        Fix a case where completion handler might not always be called.

        * WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp:
        (WebKit::UserMediaPermissionRequestManager::userMediaAccessWasGranted):

2019-05-22  Ross Kirsling  <ross.kirsling@sony.com>

        Unreviewed fix for non-unified build after r245320.

        * WebProcess/Automation/WebAutomationSessionProxy.cpp:
        (WebKit::convertRectFromFrameClientToRootView):
        (WebKit::convertPointFromFrameClientToRootView):
        (WebKit::WebAutomationSessionProxy::computeElementLayout):

2019-05-22  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Fix GTK unit tests after r245565

        * UIProcess/API/gtk/WebKitWebViewBase.cpp:
        (webkitWebViewBaseDispose): Null check accessible before calling webkitWebViewAccessibleSetWebView().

2019-05-21  Ross Kirsling  <ross.kirsling@sony.com>

        [PlayStation] Don't call fcntl.
        https://bugs.webkit.org/show_bug.cgi?id=197961

        Reviewed by Fujii Hironori.

        * Platform/IPC/unix/ConnectionUnix.cpp:
        (IPC::Connection::open):
        Use WTF::setNonBlock.

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

        [PSON] Assertion hit when navigating back after a process swap forced by the client
        https://bugs.webkit.org/show_bug.cgi?id=198006

        Reviewed by Alex Christensen.

        After r245198, we construct a SuspendedPageProxy when a process-swap is forced by the client
        and we delay to closing of the WebPage in the old WebProcess until it is safe to do so without
        flashing (by calling SuspendedPageProxy::closeWithoutFlashing()). The issue is that our logic
        deciding if we should reuse a SuspendedPageProxy's WebPage relied on the SuspendedPageProxy's
        m_suspensionState not being set to FailedToSuspend. In the case of a process-swap forced by the
        client with delayed page closing, the suspended state may be suspended but is still not usable
        because it is about to get closed. We would wrongly believe there is a WebPage to be reused so
        the ProvisionalPageProxy would construct a proxy for the main frame in its constructor, we would
        then hit the ASSERT(!m_mainFrame) assertion in ProvisionalPageProxy::didCreateMainFrame() when
        the WebContent process would unexpectedly create a main frame.

        To address the issue, stop relying on the suspended state to determine if we can reuse a WebPage
        or not and introduce a new pageIsClosedOrClosing() getter on the SuspendedPageProxy instead
        which indicates if the WebPage in the WebContent process has been closed or is about to be.

        * UIProcess/ProvisionalPageProxy.cpp:
        (WebKit::ProvisionalPageProxy::ProvisionalPageProxy):
        * UIProcess/SuspendedPageProxy.cpp:
        (WebKit::SuspendedPageProxy::pageEnteredAcceleratedCompositingMode):
        (WebKit::SuspendedPageProxy::pageIsClosedOrClosing const):
        (WebKit::SuspendedPageProxy::didProcessRequestToSuspend):
        * UIProcess/SuspendedPageProxy.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::receivedNavigationPolicyDecision):

2019-05-21  Per Arne Vollan  <pvollan@apple.com>

        Sandbox violation is making the WebContent process crash
        https://bugs.webkit.org/show_bug.cgi?id=198089
        <rdar://problem/50999499>

        Reviewed by Brent Fulgham.

        A new syscall rule needs to be added to the sandbox on iOS and macOS.

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

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

        Mark WKUIDelegate webView:shouldPreviewElement: and webView:previewingViewControllerForElement:defaultActions: as deprecated
        https://bugs.webkit.org/show_bug.cgi?id=198083
        <rdar://problem/50735687>

        Reviewed by Geoffrey Garen.

        * UIProcess/API/Cocoa/WKUIDelegate.h:

2019-05-21  Wenson Hsieh  <wenson_hsieh@apple.com>

        The cost of WebViewImpl::hasMarkedTextWithCompletionHandler should not increase with document size
        https://bugs.webkit.org/show_bug.cgi?id=198075
        <rdar://problem/37560103>

        Reviewed by Tim Horton.

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

        Refactor hasMarkedTextWithCompletionHandler to use Editor::hasComposition, instead of computing the actual
        marked text range. The latter is more expensive and unnecessary, since it uses TextIterator from the document
        root to find editing offsets. This makes the cost of determining whether there is marked text proportional to
        the document size.

        This matches behavior in legacy WebKit, as well as iOS.

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

2019-05-21  Jiewen Tan  <jiewen_tan@apple.com>

        [WebAuthN] Make WebAuthN default on only on macOS
        https://bugs.webkit.org/show_bug.cgi?id=198068
        <rdar://problem/50971874>

        Reviewed by Brent Fulgham.

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

2019-05-21  Pablo Saavedra  <psaavedra@igalia.com>

        Undefined reference platformCloseFrontendPageAndWindow() linking against libWPEWebKit-1.0.so after r245536
        https://bugs.webkit.org/show_bug.cgi?id=198069

        Reviewed by Ross Kirsling.

        * UIProcess/RemoteWebInspectorProxy.cpp:

2019-05-21  Sihui Liu  <sihui_liu@apple.com>

        REGRESSION(r245540): ASSERTION FAILED: identifier.isNull() || RunLoop::isMain()
        https://bugs.webkit.org/show_bug.cgi?id=198074

        Reviewed by Youenn Fablet.

        * NetworkProcess/WebStorage/LocalStorageDatabaseTracker.cpp:
        (WebKit::LocalStorageDatabaseTracker::databasePath const):

2019-05-21  Antti Koivisto  <antti@apple.com>

        RTL/overflow scroll tests fail with async overflow enabled
        https://bugs.webkit.org/show_bug.cgi?id=196013
        <rdar://problem/49066649>

        Reviewed by Simon Fraser.

        Add missing scroll offset <-> scroll position conversions.

        * UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.h:
        * UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.mm:
        (WebKit::ScrollingTreeScrollingNodeDelegateIOS::repositionScrollingLayers):
        (WebKit::ScrollingTreeScrollingNodeDelegateIOS::scrollViewDidScroll):

2019-05-21  Carlos Garcia Campos  <cgarcia@igalia.com>

        [WPE] Add initial accessibility support using ATK
        https://bugs.webkit.org/show_bug.cgi?id=197413

        Reviewed by Michael Catanzaro.

        Rename WebKitWebViewBaseAccessible as WebKitWebViewAccessible and move it to glib removing its dependency on
        GTK. WPEView now implements get_accessible to return its associated WebKitWebViewAccessible.

        * PlatformWPE.cmake:
        * SourcesGTK.txt:
        * SourcesWPE.txt:
        * UIProcess/API/glib/WebKitWebViewAccessible.cpp: Added.
        (webkitWebViewAccessibleInitialize):
        (webkitWebViewAccessibleRefStateSet):
        (webkitWebViewAccessibleGetIndexInParent):
        (webkit_web_view_accessible_class_init):
        (webkitWebViewAccessibleNew):
        (webkitWebViewAccessibleSetWebView):
        * UIProcess/API/glib/WebKitWebViewAccessible.h: Added.
        * UIProcess/API/gtk/WebKitWebViewBase.cpp:
        (webkitWebViewBaseDispose):
        (webkitWebViewBaseGetAccessible):
        * UIProcess/API/gtk/WebKitWebViewBaseAccessible.cpp: Removed.
        * UIProcess/API/gtk/WebKitWebViewBaseAccessible.h: Removed.
        * UIProcess/API/wpe/PageClientImpl.cpp:
        (WebKit::PageClientImpl::accessible):
        * UIProcess/API/wpe/PageClientImpl.h:
        * UIProcess/API/wpe/WPEView.cpp:
        (WKWPE::m_backend):
        (WKWPE::View::~View):
        (WKWPE::View::accessible):
        * UIProcess/API/wpe/WPEView.h:
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * UIProcess/wpe/WebPageProxyWPE.cpp:
        (WebKit::WebPageProxy::bindAccessibilityTree): Call atk_socket_embed() with the given plug ID.
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/wpe/WebPageWPE.cpp:
        (WebKit::WebPage::platformInitialize): Create the WebKitWebPageAccessibilityObject and send
        BindAccessibilityTree message to the UI process.
        * WebProcess/wpe/WebProcessMainWPE.cpp:
        (WebKit::initializeAccessibility): Implement AtkUtil interface and initialize the atk bridge.

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

        Revert r245501
        https://bugs.webkit.org/show_bug.cgi?id=198007

        That change did not fix <rdar://problem/49808949> but it caused <rdar://problem/50967271> so out it goes.

        * Shared/API/Cocoa/WKMain.h: Added.
        * Shared/API/Cocoa/WKMain.mm: Added.
        (WKXPCServiceMain):
        * Shared/EntryPointUtilities/Cocoa/AuxiliaryProcessMain.cpp: Added.
        (main):
        * Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceMain.mm:
        (main): Deleted.
        * UIProcess/Launcher/mac/ProcessLauncherMac.mm:
        (WebKit::ProcessLauncher::launchProcess):
        * WebKit.xcodeproj/project.pbxproj:

2019-05-20  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] Layout viewport size on google.com increases after rotating to landscape and back
        https://bugs.webkit.org/show_bug.cgi?id=198062
        <rdar://problem/50547895>

        Reviewed by Maciej Stachowiak.

        During an animated resize (e.g. when rotating the device on iOS), we currently immediately trigger the new
        shrink-to-fit content size heuristic in the middle of dynamicViewportSizeUpdate, after the new view layout size
        has been applied to the viewport configuration but before we've issued a resize event to the page.

        Thus, on pages that use listen to the resize event and adjust their content accordingly to fit within the new
        layout width, we prematurely declare that the page has horizontally overflowed, and try to lay out at a larger
        width and scale down. This causes the page to unnecessarily shrink after rotating to landscale orientation and
        back.

        To fix this, we simply move the call to shrink-to-fit-content to the end of the dynamic viewport size update,
        such that the page has had a chance to adjust to the new layout size.

        Test: fast/events/ios/rotation/do-not-shrink-to-fit-content-after-rotation.html

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

2019-05-20  Ross Kirsling  <ross.kirsling@sony.com>

        Make lossy LayoutUnit constructors explicit
        https://bugs.webkit.org/show_bug.cgi?id=191811

        Reviewed by Antti Koivisto.

        * WebProcess/WebPage/WebPage.cpp:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        Make usage of LayoutUnit(float) explicit.

2019-05-20  Per Arne Vollan  <pvollan@apple.com>

        [iOS] WebKit crash loop
        https://bugs.webkit.org/show_bug.cgi?id=198061
        <rdar://problem/50967271>

        Reviewed by Brent Fulgham.

        A new syscall rule needs to be added to the sandbox on iOS.

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

2019-05-20  Sihui Liu  <sihui_liu@apple.com>

        Move Web Storage to Network Process
        https://bugs.webkit.org/show_bug.cgi?id=197636

        Reviewed by Youenn Fablet.

        * CMakeLists.txt:
        * DerivedSources.make:
        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::didReceiveMessage):
        (WebKit::NetworkConnectionToWebProcess::didReceiveSyncMessage):
        (WebKit::NetworkConnectionToWebProcess::didClose):
        (WebKit::NetworkConnectionToWebProcess::webPageWasAdded):
        (WebKit::NetworkConnectionToWebProcess::webPageWasRemoved):
        (WebKit::NetworkConnectionToWebProcess::webProcessSessionChanged):
        * NetworkProcess/NetworkConnectionToWebProcess.h:
        * NetworkProcess/NetworkConnectionToWebProcess.messages.in:
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::networkSessionByConnection const):
        (WebKit::NetworkProcess::hasLocalStorage):
        (WebKit::NetworkProcess::fetchWebsiteData):
        (WebKit::NetworkProcess::deleteWebsiteData):
        (WebKit::NetworkProcess::deleteWebsiteDataForOrigins):
        (WebKit::filterForRegistrableDomains):
        (WebKit::NetworkProcess::deleteWebsiteDataForRegistrableDomains):
        (WebKit::NetworkProcess::webPageWasAdded):
        (WebKit::NetworkProcess::webPageWasRemoved):
        (WebKit::NetworkProcess::webProcessWasDisconnected):
        (WebKit::NetworkProcess::webProcessSessionChanged):
        (WebKit::NetworkProcess::getLocalStorageOriginDetails):
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:
        * NetworkProcess/NetworkSession.cpp:
        (WebKit::NetworkSession::NetworkSession):
        (WebKit::NetworkSession::~NetworkSession):
        * NetworkProcess/NetworkSession.h:
        (WebKit::NetworkSession::storageManager):
        * NetworkProcess/NetworkSessionCreationParameters.cpp:
        (WebKit::NetworkSessionCreationParameters::privateSessionParameters):
        (WebKit::NetworkSessionCreationParameters::encode const):
        (WebKit::NetworkSessionCreationParameters::decode):
        * NetworkProcess/NetworkSessionCreationParameters.h:
        * NetworkProcess/WebStorage/LocalStorageDatabase.cpp: Renamed from Source/WebKit/UIProcess/WebStorage/LocalStorageDatabase.cpp.
        (WebKit::LocalStorageDatabase::create):
        (WebKit::LocalStorageDatabase::LocalStorageDatabase):
        (WebKit::LocalStorageDatabase::~LocalStorageDatabase):
        (WebKit::LocalStorageDatabase::openDatabase):
        (WebKit::LocalStorageDatabase::tryToOpenDatabase):
        (WebKit::LocalStorageDatabase::migrateItemTableIfNeeded):
        (WebKit::LocalStorageDatabase::importItems):
        (WebKit::LocalStorageDatabase::setItem):
        (WebKit::LocalStorageDatabase::removeItem):
        (WebKit::LocalStorageDatabase::clear):
        (WebKit::LocalStorageDatabase::close):
        (WebKit::LocalStorageDatabase::itemDidChange):
        (WebKit::LocalStorageDatabase::scheduleDatabaseUpdate):
        (WebKit::LocalStorageDatabase::updateDatabase):
        (WebKit::LocalStorageDatabase::updateDatabaseWithChangedItems):
        (WebKit::LocalStorageDatabase::databaseIsEmpty):
        * NetworkProcess/WebStorage/LocalStorageDatabase.h: Renamed from Source/WebKit/UIProcess/WebStorage/LocalStorageDatabase.h.
        * NetworkProcess/WebStorage/LocalStorageDatabaseTracker.cpp: Renamed from Source/WebKit/UIProcess/WebStorage/LocalStorageDatabaseTracker.cpp.
        (WebKit::LocalStorageDatabaseTracker::create):
        (WebKit::LocalStorageDatabaseTracker::LocalStorageDatabaseTracker):
        (WebKit::LocalStorageDatabaseTracker::~LocalStorageDatabaseTracker):
        (WebKit::LocalStorageDatabaseTracker::databasePath const):
        (WebKit::LocalStorageDatabaseTracker::didOpenDatabaseWithOrigin):
        (WebKit::LocalStorageDatabaseTracker::deleteDatabaseWithOrigin):
        (WebKit::LocalStorageDatabaseTracker::deleteAllDatabases):
        (WebKit::LocalStorageDatabaseTracker::databasesModifiedSince):
        (WebKit::LocalStorageDatabaseTracker::origins const):
        (WebKit::LocalStorageDatabaseTracker::originDetails):
        * NetworkProcess/WebStorage/LocalStorageDatabaseTracker.h: Renamed from Source/WebKit/UIProcess/WebStorage/LocalStorageDatabaseTracker.h.
        * NetworkProcess/WebStorage/StorageManager.cpp: Renamed from Source/WebKit/UIProcess/WebStorage/StorageManager.cpp.
        (WebKit::StorageManager::StorageArea::securityOrigin const):
        (WebKit::StorageManager::StorageArea::isSessionStorage const):
        (WebKit::StorageManager::LocalStorageNamespace::storageManager const):
        (WebKit::StorageManager::TransientLocalStorageNamespace::create):
        (WebKit::StorageManager::TransientLocalStorageNamespace::~TransientLocalStorageNamespace):
        (WebKit::StorageManager::TransientLocalStorageNamespace::getOrCreateStorageArea):
        (WebKit::StorageManager::TransientLocalStorageNamespace::origins const):
        (WebKit::StorageManager::TransientLocalStorageNamespace::clearStorageAreasMatchingOrigin):
        (WebKit::StorageManager::TransientLocalStorageNamespace::clearAllStorageAreas):
        (WebKit::StorageManager::TransientLocalStorageNamespace::TransientLocalStorageNamespace):
        (WebKit::StorageManager::StorageArea::create):
        (WebKit::StorageManager::StorageArea::StorageArea):
        (WebKit::StorageManager::StorageArea::~StorageArea):
        (WebKit::StorageManager::StorageArea::addListener):
        (WebKit::StorageManager::StorageArea::removeListener):
        (WebKit::StorageManager::StorageArea::hasListener const):
        (WebKit::StorageManager::StorageArea::clone const):
        (WebKit::StorageManager::StorageArea::setItem):
        (WebKit::StorageManager::StorageArea::removeItem):
        (WebKit::StorageManager::StorageArea::clear):
        (WebKit::StorageManager::StorageArea::items const):
        (WebKit::StorageManager::StorageArea::openDatabaseAndImportItemsIfNeeded const):
        (WebKit::StorageManager::StorageArea::dispatchEvents const):
        (WebKit::StorageManager::LocalStorageNamespace::create):
        (WebKit::StorageManager::LocalStorageNamespace::LocalStorageNamespace):
        (WebKit::StorageManager::LocalStorageNamespace::~LocalStorageNamespace):
        (WebKit::StorageManager::LocalStorageNamespace::getOrCreateStorageArea):
        (WebKit::StorageManager::LocalStorageNamespace::didDestroyStorageArea):
        (WebKit::StorageManager::LocalStorageNamespace::clearStorageAreasMatchingOrigin):
        (WebKit::StorageManager::LocalStorageNamespace::clearAllStorageAreas):
        (WebKit::StorageManager::SessionStorageNamespace::isEmpty const):
        (WebKit::StorageManager::SessionStorageNamespace::allowedConnections const):
        (WebKit::StorageManager::SessionStorageNamespace::origins const):
        (WebKit::StorageManager::SessionStorageNamespace::clearStorageAreasMatchingOrigin):
        (WebKit::StorageManager::SessionStorageNamespace::clearAllStorageAreas):
        (WebKit::StorageManager::SessionStorageNamespace::create):
        (WebKit::StorageManager::SessionStorageNamespace::SessionStorageNamespace):
        (WebKit::StorageManager::SessionStorageNamespace::~SessionStorageNamespace):
        (WebKit::StorageManager::SessionStorageNamespace::addAllowedConnection):
        (WebKit::StorageManager::SessionStorageNamespace::removeAllowedConnection):
        (WebKit::StorageManager::SessionStorageNamespace::getOrCreateStorageArea):
        (WebKit::StorageManager::SessionStorageNamespace::cloneTo):
        (WebKit::StorageManager::create):
        (WebKit::StorageManager::StorageManager):
        (WebKit::StorageManager::~StorageManager):
        (WebKit::StorageManager::createSessionStorageNamespace):
        (WebKit::StorageManager::destroySessionStorageNamespace):
        (WebKit::StorageManager::addAllowedSessionStorageNamespaceConnection):
        (WebKit::StorageManager::removeAllowedSessionStorageNamespaceConnection):
        (WebKit::StorageManager::cloneSessionStorageNamespace):
        (WebKit::StorageManager::processWillOpenConnection):
        (WebKit::StorageManager::processDidCloseConnection):
        (WebKit::StorageManager::getSessionStorageOrigins):
        (WebKit::StorageManager::deleteSessionStorageOrigins):
        (WebKit::StorageManager::deleteSessionStorageEntriesForOrigins):
        (WebKit::StorageManager::getLocalStorageOrigins):
        (WebKit::StorageManager::getLocalStorageOriginDetails):
        (WebKit::StorageManager::deleteLocalStorageEntriesForOrigin):
        (WebKit::StorageManager::deleteLocalStorageOriginsModifiedSince):
        (WebKit::StorageManager::deleteLocalStorageEntriesForOrigins):
        (WebKit::StorageManager::createLocalStorageMap):
        (WebKit::StorageManager::createTransientLocalStorageMap):
        (WebKit::StorageManager::createSessionStorageMap):
        (WebKit::StorageManager::destroyStorageMap):
        (WebKit::StorageManager::getValues):
        (WebKit::StorageManager::setItem):
        (WebKit::StorageManager::removeItem):
        (WebKit::StorageManager::clear):
        (WebKit::StorageManager::applicationWillTerminate):
        (WebKit::StorageManager::findStorageArea const):
        (WebKit::StorageManager::getOrCreateLocalStorageNamespace):
        (WebKit::StorageManager::getOrCreateTransientLocalStorageNamespace):
        * NetworkProcess/WebStorage/StorageManager.h: Renamed from Source/WebKit/UIProcess/WebStorage/StorageManager.h.
        * NetworkProcess/WebStorage/StorageManager.messages.in: Renamed from Source/WebKit/UIProcess/WebStorage/StorageManager.messages.in.
        * NetworkProcess/WebStorage/ios/LocalStorageDatabaseTrackerIOS.mm: Copied from Source/WebKit/UIProcess/WebStorage/ios/LocalStorageDatabaseTrackerIOS.mm.
        (WebKit::LocalStorageDatabaseTracker::platformMaybeExcludeFromBackup const):
        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (WebKit::NetworkSessionCocoa::NetworkSessionCocoa):
        * NetworkProcess/curl/NetworkSessionCurl.cpp:
        (WebKit::NetworkSessionCurl::NetworkSessionCurl):
        * NetworkProcess/soup/NetworkSessionSoup.cpp:
        (WebKit::NetworkSessionSoup::NetworkSessionSoup):
        * PlatformMac.cmake:
        * PlatformWin.cmake:
        * Shared/WebPageCreationParameters.cpp:
        (WebKit::WebPageCreationParameters::encode const):
        (WebKit::WebPageCreationParameters::decode):
        * Shared/WebPageCreationParameters.h:
        * Shared/WebsiteData/WebsiteData.cpp:
        (WebKit::WebsiteData::ownerProcess):
        * Sources.txt:
        * SourcesCocoa.txt:
        * UIProcess/API/C/WKKeyValueStorageManager.cpp:
        (WKKeyValueStorageManagerGetKeyValueStorageOrigins):
        (WKKeyValueStorageManagerGetStorageDetailsByOrigin):
        (WKKeyValueStorageManagerDeleteEntriesForOrigin):
        (WKKeyValueStorageManagerDeleteAllEntries):
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::hasLocalStorage):
        (WebKit::NetworkProcessProxy::getLocalStorageDetails):
        * UIProcess/Network/NetworkProcessProxy.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::createNewPage):
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::ensureNetworkProcess):
        * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:
        (WebKit::WebsiteDataStore::parameters):
        (WebKit::WebsiteDataStore::platformInitialize):
        (WebKit::WebsiteDataStore::platformDestroy):
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::WebsiteDataStore):
        (WebKit::computeNetworkProcessAccessTypeForDataFetch):
        (WebKit::WebsiteDataStore::fetchDataAndApply):
        (WebKit::WebsiteDataStore::removeData):
        (WebKit::WebsiteDataStore::hasLocalStorageForTesting const):
        (WebKit::WebsiteDataStore::parameters):
        (WebKit::WebsiteDataStore::getLocalStorageDetails):
        (WebKit::m_client): Deleted.
        (WebKit::WebsiteDataStore::cloneSessionData): Deleted.
        (WebKit::WebsiteDataStore::webPageWasAdded): Deleted.
        (WebKit::WebsiteDataStore::webPageWasInvalidated): Deleted.
        (WebKit::WebsiteDataStore::webProcessWillOpenConnection): Deleted.
        (WebKit::WebsiteDataStore::webPageWillOpenConnection): Deleted.
        (WebKit::WebsiteDataStore::webPageDidCloseConnection): Deleted.
        (WebKit::WebsiteDataStore::webProcessDidCloseConnection): Deleted.
        * UIProcess/WebsiteData/WebsiteDataStore.h:
        (WebKit::WebsiteDataStore::resolvedLocalStorageDirectory const):
        (WebKit::WebsiteDataStore::storageManager): Deleted.
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/InjectedBundle/InjectedBundle.cpp:
        (WebKit::InjectedBundle::setPrivateBrowsingEnabled):
        * WebProcess/Network/NetworkProcessConnection.cpp:
        (WebKit::NetworkProcessConnection::didReceiveMessage):
        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::createWindow):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::close):
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::createWebPage):
        (WebKit::WebProcess::removeWebPage):
        (WebKit::WebProcess::ensureNetworkProcessConnection):
        (WebKit::WebProcess::networkProcessConnectionClosed):
        (WebKit::WebProcess::registerStorageAreaMap):
        (WebKit::WebProcess::unregisterStorageAreaMap):
        (WebKit::WebProcess::storageAreaMap const):
        (WebKit::WebProcess::enablePrivateBrowsingForTesting):
        * WebProcess/WebProcess.h:
        * WebProcess/WebStorage/StorageAreaMap.cpp:
        (WebKit::StorageAreaMap::StorageAreaMap):
        (WebKit::StorageAreaMap::~StorageAreaMap):
        (WebKit::StorageAreaMap::setItem):
        (WebKit::StorageAreaMap::removeItem):
        (WebKit::StorageAreaMap::clear):
        (WebKit::StorageAreaMap::loadValuesIfNeeded):
        (WebKit::StorageAreaMap::connect):
        (WebKit::StorageAreaMap::disconnect):
        * WebProcess/WebStorage/StorageAreaMap.h:
        (WebKit::StorageAreaMap::identifier const):

2019-05-20  Ross Kirsling  <ross.kirsling@sony.com>

        [WinCairo] Implement Remote Web Inspector Client.
        https://bugs.webkit.org/show_bug.cgi?id=197434

        Reviewed by Don Olmstead.

        * PlatformWin.cmake:
        * UIProcess/RemoteWebInspectorProxy.cpp:
        * UIProcess/RemoteWebInspectorProxy.h:
        * UIProcess/socket/RemoteInspectorClient.cpp: Added.
        * UIProcess/socket/RemoteInspectorClient.h: Added.
        * UIProcess/socket/RemoteInspectorProtocolHandler.cpp: Added.
        * UIProcess/socket/RemoteInspectorProtocolHandler.h: Added.
        * UIProcess/win/RemoteWebInspectorProxyWin.cpp: Added.
        * UIProcess/win/WebView.cpp:
        (WebKit::WebView::WebView):

2019-05-20  Per Arne Vollan  <pvollan@apple.com>

        [macOS] STP can't launch any WebContent processes
        https://bugs.webkit.org/show_bug.cgi?id=198045
        <rdar://problem/50931110>

        Reviewed by Brent Fulgham.

        This is caused by a syscall sandbox violation.

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

2019-05-20  Zhifei Fang  <zhifei_fang@apple.com>

        Allow WebContent mach-lookup AGXCompilerService
        https://bugs.webkit.org/show_bug.cgi?id=198031
        <rdar://problem/50552974>

        Reviewed by Per Arne Vollan.

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

2019-05-20  Sihui Liu  <sihui_liu@apple.com>

        [ Mac WK2 iOS Sim] Layout Test http/tests/resourceLoadStatistics/website-data-removal-for-site-navigated-to-with-link-decoration.html is a flaky failure
        https://bugs.webkit.org/show_bug.cgi?id=196307
        <rdar://problem/49345360>

        Reviewed by Alex Christensen.

        Delay dumping statistics if there is data being removed.

        * NetworkProcess/Classifier/ResourceLoadStatisticsStore.cpp:
        (WebKit::ResourceLoadStatisticsStore::removeDataRecords):
        * NetworkProcess/Classifier/ResourceLoadStatisticsStore.h:
        (WebKit::ResourceLoadStatisticsStore::dataRecordsBeingRemoved const):
        * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::dumpResourceLoadStatistics):
        (WebKit::WebResourceLoadStatisticsStore::tryDumpResourceLoadStatistics):
        * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h:

2019-05-20  Ludovico de Nittis  <ludovico.denittis@collabora.com>

        [WPE][Qt] Use C++17 instead of C++14
        https://bugs.webkit.org/show_bug.cgi?id=197415

        Reviewed by Philippe Normand.

        There was a regression introduced with the commit https://bugs.webkit.org/show_bug.cgi?id=197131
        The WPE Qt port was not updated to C++17 and this leaded to a compilation error.

        * PlatformWPE.cmake:

2019-05-20  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Use a repeating timer to populate emoji chooser
        https://bugs.webkit.org/show_bug.cgi?id=197984

        Reviewed by Michael Catanzaro.

        It ensures the emoji chooser popover is shown as soon as it's requested.

        * UIProcess/API/gtk/WebKitEmojiChooser.cpp:
        (webkitEmojiChooserSetupSectionBox):
        (webkitEmojiChooserSetupRecent):
        (webkitEmojiChooserSetupEmojiSections):
        (webkitEmojiChooserConstructed):

2019-05-19  Antoine Quint  <graouts@apple.com>

        [Pointer Events] Listening to a "pointerover", "pointerenter", "pointerout" or "pointerleave" event alone does not fire the event on iOS
        https://bugs.webkit.org/show_bug.cgi?id=197882
        <rdar://problem/50769116>

        Reviewed by Dean Jackson.

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

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

        Revert r240956
        https://bugs.webkit.org/show_bug.cgi?id=198007
        <rdar://problem/49808949>

        Reviewed by Alexey Proskuryakov.

        r240956 made SafariForWebKitDevelopment crash when using WebKit nightly builds.
        Since it's not needed and the binary reduction wasn't too big, just revert that revision.

        * Shared/API/Cocoa/WKMain.h: Removed.
        * Shared/API/Cocoa/WKMain.mm: Removed.
        * Shared/EntryPointUtilities/Cocoa/AuxiliaryProcessMain.cpp: Removed.
        * Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceMain.mm:
        (main):
        * SourcesCocoa.txt:
        * WebKit.xcodeproj/project.pbxproj:

2019-05-18  Jiewen Tan  <jiewen_tan@apple.com>

        [WebAuthN] Allow authenticators that support both CTAP and U2F to try U2F if CTAP fails in authenticatorGetAssertion
        https://bugs.webkit.org/show_bug.cgi?id=197974
        <rdar://problem/50879746>

        Reviewed by Brent Fulgham.

        Authenticators that support both CTAP and U2F protocols can be used in a U2F enabled browser to create a credential in
        U2F format. When such authenticator is used to login in WebKit, it will be treated as a CTAP authenticator. Since the
        previous credential is in U2F format, the authenticator will not consider that as a valid credential when CTAP requests
        come along for that U2F credential. Therefore the previous created U2F credential will not be asked at all, and users
        will not be able to login. This situation is not well documented in the CTAP/WebAuthN spec yet.

        To workaround the above issue, an authenticator that supports both protocols will be downgraded to a U2F authenticator
        to ask a potential U2F credential once a valid error is returned regarding to the first CTAP request.

        * UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
        (WKWebsiteDataStoreSetWebAuthenticationMockConfiguration):
        * UIProcess/WebAuthentication/Authenticator.h:
        * UIProcess/WebAuthentication/AuthenticatorManager.cpp:
        (WebKit::AuthenticatorManager::downgrade):
        * UIProcess/WebAuthentication/AuthenticatorManager.h:
        * UIProcess/WebAuthentication/Mock/MockHidConnection.cpp:
        (WebKit::MockHidConnection::parseRequest):
        (WebKit::MockHidConnection::feedReports):
        * UIProcess/WebAuthentication/Mock/MockWebAuthenticationConfiguration.h:
        * UIProcess/WebAuthentication/fido/CtapHidAuthenticator.cpp:
        (WebKit::CtapHidAuthenticator::makeCredential):
        (WebKit::CtapHidAuthenticator::getAssertion):
        (WebKit::CtapHidAuthenticator::continueGetAssertionAfterResponseReceived):
        (WebKit::CtapHidAuthenticator::tryDowngrade):
        (WebKit::CtapHidAuthenticator::continueGetAssertionAfterResponseReceived const): Deleted.
        * UIProcess/WebAuthentication/fido/CtapHidAuthenticator.h:

2019-05-17  Don Olmstead  <don.olmstead@sony.com>

        [CMake] Use builtin FindICU
        https://bugs.webkit.org/show_bug.cgi?id=197934

        Reviewed by Michael Catanzaro.

        Remove uses of ICU_INCLUDE_DIRS and ICU_LIBRARIES.

        * CMakeLists.txt:

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

        Enable legacy EME for iOS WKWebView
        https://bugs.webkit.org/show_bug.cgi?id=197964
        <rdar://problem/50625666>

        Reviewed by Wenson Hsieh.

        * UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
        (-[WKWebViewConfiguration init]):

2019-05-17  Antoine Quint  <graouts@apple.com>

        Add a website policy to disable the legacy -webkit-overflow-scrolling:touch behavior
        https://bugs.webkit.org/show_bug.cgi?id=197943
        <rdar://problem/49078202>

        Reviewed by Brent Fulgham.

        * Shared/WebsiteLegacyOverflowScrollingTouchPolicy.h: Added.
        * Shared/WebsitePoliciesData.cpp:
        (WebKit::WebsitePoliciesData::encode const):
        (WebKit::WebsitePoliciesData::decode):
        (WebKit::WebsitePoliciesData::applyToDocumentLoader):
        * Shared/WebsitePoliciesData.h:
        * UIProcess/API/APIWebsitePolicies.cpp:
        (API::WebsitePolicies::copy const):
        (API::WebsitePolicies::data):
        * UIProcess/API/APIWebsitePolicies.h:
        * WebKit.xcodeproj/project.pbxproj:

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

        Add SPI to set a list of hosts to which to send custom header fields cross-origin
        https://bugs.webkit.org/show_bug.cgi?id=197397

        Reviewed by Geoff Garen.

        * Shared/API/APIObject.h:
        * Shared/Cocoa/APIObject.mm:
        (API::Object::newObject):
        * Shared/WebsitePoliciesData.cpp:
        (WebKit::WebsitePoliciesData::decode):
        * Shared/WebsitePoliciesData.h:
        * SourcesCocoa.txt:
        * UIProcess/API/APICustomHeaderFields.h: Added.
        * UIProcess/API/APIWebsitePolicies.cpp:
        (API::WebsitePolicies::WebsitePolicies):
        (API::WebsitePolicies::copy const):
        (API::WebsitePolicies::data):
        * UIProcess/API/APIWebsitePolicies.h:
        * UIProcess/API/C/WKWebsitePolicies.cpp:
        (WKWebsitePoliciesCopyCustomHeaderFields):
        (WKWebsitePoliciesSetCustomHeaderFields):
        * UIProcess/API/Cocoa/WKWebpagePreferences.mm:
        (-[WKWebpagePreferences _customHeaderFields]):
        (-[WKWebpagePreferences _setCustomHeaderFields:]):
        * UIProcess/API/Cocoa/WKWebpagePreferencesPrivate.h:
        * UIProcess/API/Cocoa/_WKCustomHeaderFields.h: Added.
        * UIProcess/API/Cocoa/_WKCustomHeaderFields.mm: Added.
        (-[_WKCustomHeaderFields init]):
        (-[_WKCustomHeaderFields dealloc]):
        (-[_WKCustomHeaderFields fields]):
        (-[_WKCustomHeaderFields setFields:]):
        (-[_WKCustomHeaderFields thirdPartyDomains]):
        (-[_WKCustomHeaderFields setThirdPartyDomains:]):
        (-[_WKCustomHeaderFields _apiObject]):
        * UIProcess/API/Cocoa/_WKCustomHeaderFieldsInternal.h: Added.
        * UIProcess/API/Cocoa/_WKWebsitePolicies.h:
        * UIProcess/API/Cocoa/_WKWebsitePolicies.mm:
        (-[_WKWebsitePolicies customHeaderFields]): Deleted.
        (-[_WKWebsitePolicies setCustomHeaderFields:]): Deleted.
        * UIProcess/Cocoa/WebViewImpl.h:
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::takeFocus):
        (WebKit::WebViewImpl::accessibilityAttributeValue):
        * WebKit.xcodeproj/project.pbxproj:

2019-05-17  Brady Eidson  <beidson@apple.com>

        Avoid races in taking networking assertions for downloads by having both Networking and UIProcess do it.
        <rdar://problem/50564630> and https://bugs.webkit.org/show_bug.cgi?id=197995

        Reviewed by Chris Dumez.

        There's a fairly indeterminant time gap between when the UIProcess decides a load becomes a download
        and when the NetworkProcess Download object is created, and therefore the download assertion to be taken.

        The time gap can be long enough for the Networking process to suspend before the download actually starts.

        There's the reverse race when the UIProcess tells a download to stop, as well.

        By having both the UIProcess and NetworkProcess take an assertion on behalf of the NetworkProcess we
        avoid the race.

        * NetworkProcess/Downloads/DownloadMap.cpp:
        (WebKit::DownloadMap::add):
        (WebKit::DownloadMap::remove):

        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::convertToDownload):

        * UIProcess/Downloads/DownloadProxyMap.cpp:
        (WebKit::DownloadProxyMap::createDownloadProxy):
        (WebKit::DownloadProxyMap::downloadFinished):
        (WebKit::DownloadProxyMap::invalidate):
        * UIProcess/Downloads/DownloadProxyMap.h:

2019-05-17  Keith Rollin  <krollin@apple.com>

        Re-enable generate-xcfilelists
        https://bugs.webkit.org/show_bug.cgi?id=197933
        <rdar://problem/50831677>

        Reviewed by Jonathan Bedard.

        The following two tasks have been completed, and we can re-enable
        generate-xcfilelists:

        Bug 197619 <rdar://problem/50507392> Temporarily disable generate-xcfilelists (197619)
        Bug 197622 <rdar://problem/50508222> Rewrite generate-xcfilelists in Python (197622)

        * Scripts/check-xcfilelists.sh:

2019-05-17  Commit Queue  <commit-queue@webkit.org>

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

        Causing internal build failures (Requested by ShawnRoberts on
        #webkit).

        Reverted changeset:

        "Add SPI to set a list of hosts to which to send custom header
        fields cross-origin"
        https://bugs.webkit.org/show_bug.cgi?id=197397
        https://trac.webkit.org/changeset/245401

2019-05-17  Commit Queue  <commit-queue@webkit.org>

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

        New API test causing crashes on Mojave testers (Requested by
        ShawnRoberts on #webkit).

        Reverted changeset:

        "Add a unit test for client certificate authentication"
        https://bugs.webkit.org/show_bug.cgi?id=197800
        https://trac.webkit.org/changeset/245418

2019-05-17  Antti Koivisto  <antti@apple.com>

        [iOS] Respect scrolling="no" on composited frames
        https://bugs.webkit.org/show_bug.cgi?id=197972
        <rdar://problem/50252398>

        Reviewed by Simon Fraser.

        * UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.h:
        * UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.mm:
        (WebKit::ScrollingTreeScrollingNodeDelegateIOS::commitStateAfterChildren):

        Disallow scrolling based on canHaveScrollbars, similar to main frame.

        (WebKit::ScrollingTreeScrollingNodeDelegateIOS::repositionScrollingLayers):
        (WebKit::ScrollingTreeScrollingNodeDelegateIOS::scrollView const):

        Factor into a function.

2019-05-17  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Fix variations shown in GTK emoji chooser after r245460.

        We are tno showing the variations in the sub-popover because of a missing parameter in
        webkitEmojiChooserAddEmoji() call.

        * UIProcess/API/gtk/WebKitEmojiChooser.cpp:
        (webkitEmojiChooserShowVariations): Pass prepend parameter to webkitEmojiChooserAddEmoji().

2019-05-16  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Need WebKitContextMenuItemType to open emoji picker
        https://bugs.webkit.org/show_bug.cgi?id=176760

        Reviewed by Michael Catanzaro.

        Add a default implementation to show the emoji chooser when requested by the application, either using the
        context menu or keyboard shortcuts. GtkEmojiChooser is private in GTK, so we include our own copy, adapted to
        the WebKit coding style. The emoji chooser is always shown by default when using GTK >= 3.24 for any editable
        content. I'm going to add public API in a follow up patch to be able to use your own chooser, or even prevent
        the default chooser from being shown, similar to what we do for other UI elements like file chooser, color
        chooser, print dialog, etc.

        * Shared/API/glib/WebKitContextMenuActions.cpp:
        (webkitContextMenuActionGetActionTag): Handle insert emoji action.
        (webkitContextMenuActionGetForContextMenuItem): Ditto.
        (webkitContextMenuActionGetLabel): Ditto.
        * SourcesGTK.txt:
        * UIProcess/API/gtk/WebKitContextMenuActions.h:
        * UIProcess/API/gtk/WebKitEmojiChooser.cpp: Added.
        (webkitEmojiChooserAddEmoji):
        (webkitEmojiChooserAddRecentItem):
        (emojiActivated):
        (emojiDataHasVariations):
        (webkitEmojiChooserShowVariations):
        (emojiLongPressed):
        (emojiPressed):
        (emojiPopupMenu):
        (verticalAdjustmentChanged):
        (webkitEmojiChooserSetupSectionBox):
        (scrollToSection):
        (webkitEmojiChooserSetupSectionButton):
        (webkitEmojiChooserSetupRecent):
        (webkitEmojiChooserEnsureEmptyResult):
        (webkitEmojiChooserSearchChanged):
        (webkitEmojiChooserSetupFilters):
        (webkitEmojiChooserInitializeEmojiMaxWidth):
        (webkitEmojiChooserConstructed):
        (webkitEmojiChooserShow):
        (webkit_emoji_chooser_class_init):
        (webkitEmojiChooserNew):
        * UIProcess/API/gtk/WebKitEmojiChooser.h: Added.
        * UIProcess/API/gtk/WebKitWebViewBase.cpp:
        (_WebKitWebViewBasePrivate::_WebKitWebViewBasePrivate): Add a timer to release the emoji chooser if not used
        after 2 minutes.
        (_WebKitWebViewBasePrivate::releaseEmojiChooserTimerFired): Destroy the emoji chooser.
        (emojiChooserEmojiPicked): Complete the operation using the given emoji text.
        (emojiChooserClosed): Complete the operation if needed using an empty string.
        (webkitWebViewBaseShowEmojiChooser): Create the emoji chooser if needed and show it.
        * UIProcess/API/gtk/WebKitWebViewBasePrivate.h:
        * UIProcess/WebPageProxy.h: Add showEmojiPicker().
        * UIProcess/WebPageProxy.messages.in: Add ShowEmojiPicker message.
        * UIProcess/gtk/KeyBindingTranslator.cpp:
        (WebKit::insertEmojiCallback): Add GtkInsertEmoji command.
        (WebKit::KeyBindingTranslator::KeyBindingTranslator): Connect to insert-emoji signal.
        * UIProcess/gtk/WebPageProxyGtk.cpp:
        (WebKit::WebPageProxy::showEmojiPicker): Call webkitWebViewBaseShowEmojiChooser().
        * WebProcess/WebCoreSupport/WebContextMenuClient.h: Override insertEmoji() for GTK port.
        * WebProcess/WebCoreSupport/WebEditorClient.h: Add insertEmoji() for GTK port.
        * WebProcess/WebCoreSupport/gtk/WebContextMenuClientGtk.cpp:
        (WebKit::WebContextMenuClient::insertEmoji): Call WebPage::showEmojiPicker().
        * WebProcess/WebCoreSupport/gtk/WebEditorClientGtk.cpp:
        (WebKit::WebEditorClient::handleGtkEditorCommand): Call WebPage::showEmojiPicker() if command is GtkInsertEmoji.
        (WebKit::WebEditorClient::executePendingEditorCommands): Handle Gtk specific commands.
        (WebKit::WebEditorClient::handleKeyboardEvent): Use a reference instead of a pointer for Frame.
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/gtk/WebPageGtk.cpp:
        (WebKit::WebPage::showEmojiPicker): Send ShowEmojiPicker message to the UI process.

2019-05-16  John Wilander  <wilander@apple.com>

        Storage Access API: Call completion handlers in NetworkConnectionToWebProcess::hasStorageAccess() and NetworkConnectionToWebProcess::requestStorageAccess() when feature is off
        https://bugs.webkit.org/show_bug.cgi?id=197967
        <rdar://problem/50753129>

        Reviewed by Brent Fulgham.

        NetworkConnectionToWebProcess::hasStorageAccess() and NetworkConnectionToWebProcess::requestStorageAccess()
        should call their completion handlers when there is no Resource Load Statistics object, i.e. when Resource
        Load Statistics is off. This happens for ephemeral sessions which made code for federated login providers
        hang, waiting for the result to document.hasStorageAccess().

        The existing layout test case was augmented to use an ephemeral session.

        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::hasStorageAccess):
        (WebKit::NetworkConnectionToWebProcess::requestStorageAccess):

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

        Add a unit test for client certificate authentication
        https://bugs.webkit.org/show_bug.cgi?id=197800

        Reviewed by Youenn Fablet.

        * Shared/cf/ArgumentCodersCF.cpp:
        Move SPI declarations to SecuritySPI.h.

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

        Add SPI to set a list of hosts to which to send custom header fields cross-origin
        https://bugs.webkit.org/show_bug.cgi?id=197397

        Reviewed by Geoff Garen.

        * Shared/API/APIObject.h:
        * Shared/Cocoa/APIObject.mm:
        (API::Object::newObject):
        * Shared/WebsitePoliciesData.cpp:
        (WebKit::WebsitePoliciesData::decode):
        * Shared/WebsitePoliciesData.h:
        * SourcesCocoa.txt:
        * UIProcess/API/APICustomHeaderFields.h: Added.
        * UIProcess/API/APIWebsitePolicies.cpp:
        (API::WebsitePolicies::WebsitePolicies):
        (API::WebsitePolicies::copy const):
        (API::WebsitePolicies::data):
        * UIProcess/API/APIWebsitePolicies.h:
        * UIProcess/API/C/WKWebsitePolicies.cpp:
        (WKWebsitePoliciesCopyCustomHeaderFields):
        (WKWebsitePoliciesSetCustomHeaderFields):
        * UIProcess/API/Cocoa/WKWebpagePreferences.mm:
        (-[WKWebpagePreferences _customHeaderFields]):
        (-[WKWebpagePreferences _setCustomHeaderFields:]):
        * UIProcess/API/Cocoa/WKWebpagePreferencesPrivate.h:
        * UIProcess/API/Cocoa/_WKCustomHeaderFields.h: Added.
        * UIProcess/API/Cocoa/_WKCustomHeaderFields.mm: Added.
        (-[_WKCustomHeaderFields init]):
        (-[_WKCustomHeaderFields dealloc]):
        (-[_WKCustomHeaderFields fields]):
        (-[_WKCustomHeaderFields setFields:]):
        (-[_WKCustomHeaderFields thirdPartyDomains]):
        (-[_WKCustomHeaderFields setThirdPartyDomains:]):
        (-[_WKCustomHeaderFields _apiObject]):
        * UIProcess/API/Cocoa/_WKCustomHeaderFieldsInternal.h: Added.
        * UIProcess/API/Cocoa/_WKWebsitePolicies.h:
        * UIProcess/API/Cocoa/_WKWebsitePolicies.mm:
        (-[_WKWebsitePolicies customHeaderFields]): Deleted.
        (-[_WKWebsitePolicies setCustomHeaderFields:]): Deleted.
        * UIProcess/Cocoa/WebViewImpl.h:
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::takeFocus):
        (WebKit::WebViewImpl::accessibilityAttributeValue):
        * WebKit.xcodeproj/project.pbxproj:

2019-05-16  Ryan Walklin  <ryan@testtoast.com>

        [WPE] Rendering on a HiDPI display looks scaled up instead of rendered at 2x
        https://bugs.webkit.org/show_bug.cgi?id=185764

        Reviewed by Carlos Garcia Campos.

        Add a function to the wpe_view_backend_client struct which accepts a device scale factor
        configured through wpe_view_backend_dispatch_set_device_scale_factor() and calls
        setIntrinsicDeviceScaleFactor for the the current View.Page object. The
        function definition has been added in libwpe 1.3.

        * UIProcess/API/wpe/WPEView.cpp:
        (WKWPE::m_backend): Add set_device_scale_factor implementation declared by libwpe.

2019-05-15  Devin Rousso  <drousso@apple.com>

        Web Inspector: user gesture toggle should also force user interaction flag
        https://bugs.webkit.org/show_bug.cgi?id=197269

        Reviewed by Joseph Pecoraro.

        * WebProcess/WebCoreSupport/WebChromeClient.h:
        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::userIsInteracting const): Added.
        (WebKit::WebChromeClient::setUserIsInteracting): Added.

        * WebProcess/WebPage/WebPage.h:
        (WebKit::WebPage::userIsInteracting const): Added.
        (WebKit::WebPage::setUserIsInteracting): Added.

2019-05-15  Brent Fulgham  <bfulgham@apple.com>

        Revise sandbox to allow IOKit properties needed by Metal and LaunchServices
        https://bugs.webkit.org/show_bug.cgi?id=197924
        <rdar://problem/50823976>

        Reviewed by Per Arne Vollan.

        Update sandbox to allow access to some IOKit properties to avoid sandbox violations that could
        lower performance or increase launch times:

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

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

        Unreviewed, fix assertion introduced in r245339.

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

2019-05-15  Sihui Liu  <sihui_liu@apple.com>

        Add assertions to help diagnose crash at WebProcessProxy::processPool()
        https://bugs.webkit.org/show_bug.cgi?id=197856
        <rdar://problem/49341366>

        Reviewed by Chris Dumez.

        * UIProcess/WebProcessCache.cpp:
        (WebKit::WebProcessCache::CachedProcess::CachedProcess):
        * UIProcess/WebProcessLifetimeObserver.cpp:
        (WebKit::WebProcessLifetimeObserver::addWebPage):
        (WebKit::WebProcessLifetimeObserver::removeWebPage):
        * UIProcess/WebProcessLifetimeObserver.h:
        (WebKit::WebProcessLifetimeObserver::hasProcess const):

2019-05-15  Wenson Hsieh  <wenson_hsieh@apple.com>

        inputmode="numeric" should show a number pad with digits 0-9, instead of the numeric keyplane
        https://bugs.webkit.org/show_bug.cgi?id=197916
        <rdar://problem/50815427>

        Reviewed by Timothy Hatcher.

        Use UIKeyboardTypeNumberPad instead of UIKeyboardTypeNumbersAndPunctuation when presenting a keyboard for a
        field with inputmode="numeric". While the WhatWG specification merely requires the UA to display a keyboard
        "capable of numeric input", it suggests that the keyboard should be "useful for PIN entry", which loosely
        implies a number pad.

        This is also generally in line with feedback from web developers.

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

2019-05-15  Don Olmstead  <don.olmstead@sony.com>

        Add USE(LIBWPE) for AcceleratedSurface
        https://bugs.webkit.org/show_bug.cgi?id=197918

        Reviewed by Michael Catanzaro.

        Renamed AcceleratedSurfaceWPE to AcceleratedSurfaceLibWPE since it just uses the
        libwpe APIs.

        * PlatformWPE.cmake:
        * SourcesWPE.txt:
        * WebProcess/WebPage/AcceleratedSurface.cpp:
        (WebKit::AcceleratedSurface::create):
        * WebProcess/WebPage/libwpe/AcceleratedSurfaceLibWPE.cpp: Renamed from Source/WebKit/WebProcess/WebPage/wpe/AcceleratedSurfaceWPE.cpp.
        (WebKit::AcceleratedSurfaceLibWPE::create):
        (WebKit::AcceleratedSurfaceLibWPE::AcceleratedSurfaceLibWPE):
        (WebKit::AcceleratedSurfaceLibWPE::~AcceleratedSurfaceLibWPE):
        (WebKit::AcceleratedSurfaceLibWPE::initialize):
        (WebKit::AcceleratedSurfaceLibWPE::finalize):
        (WebKit::AcceleratedSurfaceLibWPE::window const):
        (WebKit::AcceleratedSurfaceLibWPE::surfaceID const):
        (WebKit::AcceleratedSurfaceLibWPE::clientResize):
        (WebKit::AcceleratedSurfaceLibWPE::willRenderFrame):
        (WebKit::AcceleratedSurfaceLibWPE::didRenderFrame):
        * WebProcess/WebPage/libwpe/AcceleratedSurfaceLibWPE.h: Renamed from Source/WebKit/WebProcess/WebPage/wpe/AcceleratedSurfaceWPE.h.

2019-05-15  Youenn Fablet  <youenn@apple.com>

        getUserMedia sandbox extensions should not be revoked when a getUserMedia allowed request is being processed
        https://bugs.webkit.org/show_bug.cgi?id=197851

        Reviewed by Alex Christensen.

        Before the patch, stopping capture in a document and quickly triggering a new capture
        might fail as the UIProcess would grant access and revoke sandbox access based on the fact
        the page is no longer capturing.
        To fix that issue, keep a state in the UIProcess to not revoke sandbox extensions in case of
        capture being started.
        Add an IPC message back to tell UIProcess when an allowed capture is finished.
        Just after doing that, make sure the document is updating the media state to UIProcess, which will trigger proper sandbox extension handling.

        This should also trigger the case of an allowed getUserMedia call that fails to start for some reason.
        In that case, the patch will automatically trigger a document media state refresh which will trigger a sandbox revokation.

        Covered by added test that exercise a newly added debug assertion.
        This assertion ensures that we revoke extensions while a document is not capturing.

        * UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
        (WebKit::UserMediaPermissionRequestManagerProxy::~UserMediaPermissionRequestManagerProxy):
        (WebKit::UserMediaPermissionRequestManagerProxy::grantAccess):
        (WebKit::UserMediaPermissionRequestManagerProxy::captureStateChanged):
        * UIProcess/UserMediaPermissionRequestManagerProxy.h:
        * UIProcess/UserMediaProcessManager.cpp:
        (WebKit::UserMediaProcessManager::willCreateMediaStream):
        (WebKit::UserMediaProcessManager::revokeSandboxExtensionsIfNeeded):
        * UIProcess/UserMediaProcessManager.h:
        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::isCapturingAudio const):
        (WebKit::WebPageProxy::isCapturingVideo const):
        * WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp:
        (WebKit::UserMediaPermissionRequestManager::userMediaAccessWasGranted):
        * WebProcess/MediaStream/UserMediaPermissionRequestManager.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::userMediaAccessWasGranted):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:
        * WebProcess/WebProcess.cpp:
        (WebKit::checkDocumentsCaptureStateConsistency):
        (WebKit::WebProcess::revokeUserMediaDeviceSandboxExtensions):

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

        [WK2][iOS] UIProcess may get killed because it is taking too long to release its background task after expiration
        https://bugs.webkit.org/show_bug.cgi?id=197893
        <rdar://problem/50234105>

        Reviewed by Alex Christensen.

        The UIProcess may get killed because it is taking too long to release its background task after its expiration handler
        was called. The reason is that the background task's expiration handler was sequentially sending a ProcessWillSuspendImminently
        synchronous IPC to each of its child processes and only then ends the background task. By the time we receive the response from
        all child processes, it may be too late and we get killed.

        To address the issue, we now:
        1. Send the ProcessWillSuspendImminently asynchronously so that all processes can do their processing in parallel
        2. After 2 seconds, the UIProcess releases the background task (We get killed after ~5 seconds)

        Also, to make sure that the UIProcess supends promptly, we now make sure we never start a new background task *after*
        the app has been backgrounded. The intention of our background task is too finish critical work (like releasing locked
        files) after the app gets backgrounded, not to start new work and delay process suspension.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::processWillSuspendImminently):
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::sendProcessWillSuspendImminently):
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::sendProcessWillSuspendImminently):
        * UIProcess/ios/ProcessAssertionIOS.mm:
        (-[WKProcessAssertionBackgroundTaskManager init]):
        (-[WKProcessAssertionBackgroundTaskManager _scheduleReleaseTask]):
        (-[WKProcessAssertionBackgroundTaskManager _cancelPendingReleaseTask]):
        (-[WKProcessAssertionBackgroundTaskManager _updateBackgroundTask]):
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::didReceiveSyncMessage):
        (WebKit::WebProcess::processWillSuspendImminently):
        * WebProcess/WebProcess.h:
        * WebProcess/WebProcess.messages.in:

2019-05-15  Jiewen Tan  <jiewen_tan@apple.com>

        [WebAuthN] Make WebAuthN default on
        https://bugs.webkit.org/show_bug.cgi?id=197805
        <rdar://problem/50683699>

        Reviewed by Darin Adler.

        * Shared/WebPreferences.yaml:

2019-05-15  Youenn Fablet  <youenn@apple.com>

        Reuse existing WebPageProxy quota handler for NetworkProcessProxy quota requests
        https://bugs.webkit.org/show_bug.cgi?id=197463
        <rdar://problem/47403621>

        Reviewed by Alex Christensen.

        Add a getter to know whether websitedatastore client implements the quota delegate.
        If not, find the most visible page that is the same origin as the quota request
        and reuse the existing exceededDatabasQuota delegate.
        This approach allows to call the delegate even if the quota request comes from a service worker.
        If no such page is found, the quota will not be increased.

        Refactoring to make sure we are calling the delegate once a previous call to that delegate is completed.
        Covered by API test.

        * UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::requestStorageSpace):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::StorageRequests::add):
        (WebKit::StorageRequests::processNext):
        (WebKit::StorageRequests::areBeingProcessed const):
        (WebKit::StorageRequests::setAreBeingProcessed):
        (WebKit::StorageRequests::StorageRequests):
        (WebKit::StorageRequests::~StorageRequests):
        (WebKit::StorageRequests::singleton):
        (WebKit::WebPageProxy::forMostVisibleWebPageIfAny):
        (WebKit::WebPageProxy::didChangeMainDocument):
        (WebKit::WebPageProxy::exceededDatabaseQuota):
        (WebKit::WebPageProxy::requestStorageSpace):
        (WebKit::WebPageProxy::makeStorageSpaceRequest):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::forWebPages):
        * UIProcess/WebProcessProxy.h:
        * UIProcess/WebsiteData/WebsiteDataStoreClient.h:
        (WebKit::WebsiteDataStoreClient::implementsRequestStorageSpaceHandler const):

2019-05-15  Youenn Fablet  <youenn@apple.com>

        Constant crashes under WebPage::isThrottleable() after r245299
        https://bugs.webkit.org/show_bug.cgi?id=197902
        <rdar://problem/50793796>

        Reviewed by Alex Christensen.

        Update throttle state after a run loop iteration when page state changes to make sure the pageMap does not have null pages.
        Add appNapEnabled preference that is used by added API test.

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::updateThrottleState):
        * UIProcess/API/Cocoa/WKPreferences.mm:
        (-[WKPreferences _setAppNapEnabled:]):
        (-[WKPreferences _appNapEnabled]):
        * UIProcess/API/Cocoa/WKPreferencesPrivate.h:

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

        Allow NSFileCoordinator to be called from WebContent process
        https://bugs.webkit.org/show_bug.cgi?id=197895
        <rdar://problem/50107679>

        Reviewed by Brent Fulgham.

        * WebProcess/com.apple.WebProcess.sb.in:
        Expand sandbox to allow use of com.apple.FileCoordination mach service like we do on iOS.

2019-05-15  Devin Rousso  <drousso@apple.com>

        Web Automation: elements larger than the viewport have incorrect in-view center point
        https://bugs.webkit.org/show_bug.cgi?id=195696
        <rdar://problem/48737122>

        Reviewed by Simon Fraser.

        Original patch by Brian Burg <bburg@apple.com>.

        This seems to be an omission in the specification. While it does mention that the in-view
        center point (IVCP) must be within the viewport, the algorithm never intersects the element
        bounding box with the viewport rect.

        * WebProcess/Automation/WebAutomationSessionProxy.cpp:
        (WebKit::WebAutomationSessionProxy::computeElementLayout):
        This code is incorrect. For `CoordinateSystem::LayoutViewport`, coordinates should be in
        root view coordinates so that it can be later converted to screen and synthesized as a HID
        event in screen coordinates. Intersect the element rect and the viewport rect before finding
        the center point of the part of the element that's visible in the viewport.

        (WebKit::convertRectFromFrameClientToRootView): Added.
        (WebKit::convertPointFromFrameClientToRootView): Added.
        Added helpers to properly account for scroll contents position on iOS.

        * UIProcess/Automation/WebAutomationSession.cpp:
        (WebKit::WebAutomationSession::viewportInViewCenterPointOfElement):
        Now that we determine whether the element is inside the viewport much earlier, if the
        element has no `inViewCenterPoint`, we can return a `TargetOutOfBounds` instead of a more
        "generic" `ElementNotInteractable`.

        (WebKit::WebAutomationSession::simulateMouseInteraction):
        Rename `locationInView` -> `locationInViewport`.

        (WebKit::WebAutomationSession::simulateTouchInteraction):
        This code is incorrect. The `unobscuredContentRect` is in screen coordinates, but
        we are trying to see if (x, y) is outside the size of the viewport assumed to be at (0, 0).
        Grab the visual viewport rect and see if the location exceeds the viewport size.

        * UIProcess/Automation/ios/WebAutomationSessionIOS.mm:
        (WebKit::operator<<):
        Add logging helper for `TouchInteraction` enum.

        (WebKit::WebAutomationSession::platformSimulateTouchInteraction):
        Move local variable.

        * UIProcess/Automation/SimulatedInputDispatcher.cpp:
        (WebKit::SimulatedInputDispatcher::transitionInputSourceToState):
        Fix a typo in logging.

        * UIProcess/Automation/Automation.json:
        Simplify enum name.

        * Platform/Logging.h:
        Add logging channel to dump fully resolved interaction details.

2019-05-14  Ross Kirsling  <ross.kirsling@sony.com>

        Unreviewed restoration of non-unified build.

        * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:
        * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp:
        * NetworkProcess/cache/NetworkCacheFileSystem.cpp:
        * UIProcess/WebProcessProxy.cpp:

2019-05-14  Youenn Fablet  <youenn@apple.com>

        A service worker process should app nap when all its clients app nap
        https://bugs.webkit.org/show_bug.cgi?id=185626
        <rdar://problem/46785908>

        Reviewed by Alex Christensen.

        Compute whether a given web process can be throttled on every page throttling change.
        Send that information to network process which stores that information in WebSWServerConnection.
        Every WebSWServerToContextConnection throttle state is then computed based on all WebSWServerConnection
        that have a client that matches the registrable domain of the context connection.

        * NetworkProcess/ServiceWorker/WebSWServerConnection.cpp:
        (WebKit::WebSWServerConnection::registerServiceWorkerClient):
        (WebKit::WebSWServerConnection::unregisterServiceWorkerClient):
        (WebKit::WebSWServerConnection::hasMatchingClient const):
        (WebKit::WebSWServerConnection::computeThrottleState const):
        (WebKit::WebSWServerConnection::setThrottleState):
        (WebKit::WebSWServerConnection::updateThrottleState):
        (WebKit::WebSWServerConnection::serverToContextConnectionCreated):
        * NetworkProcess/ServiceWorker/WebSWServerConnection.h:
        (WebKit::WebSWServerConnection::isThrottleable const):
        * NetworkProcess/ServiceWorker/WebSWServerConnection.messages.in:
        * NetworkProcess/ServiceWorker/WebSWServerToContextConnection.cpp:
        (WebKit::WebSWServerToContextConnection::setThrottleState):
        * NetworkProcess/ServiceWorker/WebSWServerToContextConnection.h:
        (WebKit::WebSWServerToContextConnection::isThrottleable const):
        * UIProcess/ServiceWorkerProcessProxy.cpp:
        * UIProcess/ServiceWorkerProcessProxy.h:
        * WebProcess/Storage/WebSWClientConnection.cpp:
        (WebKit::WebSWClientConnection::WebSWClientConnection):
        (WebKit::WebSWClientConnection::updateThrottleState):
        * WebProcess/Storage/WebSWClientConnection.h:
        * WebProcess/Storage/WebSWContextManagerConnection.cpp:
        (WebKit::WebSWContextManagerConnection::setThrottleState):
        (WebKit::WebSWContextManagerConnection::isThrottleable const):
        * WebProcess/Storage/WebSWContextManagerConnection.h:
        * WebProcess/Storage/WebSWContextManagerConnection.messages.in:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::updateUserActivity):
        (WebKit::WebPage::isThrottleable const):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::arePagesThrottleable const):
        * WebProcess/WebProcess.h:

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

        Crash under WebKit::WebProcessProxy::didBecomeUnresponsive()
        https://bugs.webkit.org/show_bug.cgi?id=197883
        <rdar://problem/50665984>

        Reviewed by Alex Christensen.

        Protect |this| in didBecomeUnresponsive() and didExceedCPULimit() since we call client
        delegates and those may cause |this| to get destroyed.

        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::didBecomeUnresponsive):
        (WebKit::WebProcessProxy::didExceedCPULimit):

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

        The network process tries to take a process assertion when NetworkProcess::processWillSuspendImminently() is called
        https://bugs.webkit.org/show_bug.cgi?id=197888

        Reviewed by Geoffrey Garen.

        When actualPrepareToSuspend() in the Network process is called set the 'IsSuspended' flag on the SQLite database tracker and unset
        the flag when the process resume. This is consistent with what we already do in the WebProcess and makes sure that
        the network process does not try and take on a new assertion due to locked files when getting notified it is about to get
        suspended.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::actualPrepareToSuspend):
        (WebKit::NetworkProcess::processWillSuspendImminently):
        (WebKit::NetworkProcess::resume):

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

        Update TBA macros for API / SPI that has already shipped
        https://bugs.webkit.org/show_bug.cgi?id=197841
        <rdar://problem/50698499>

        Reviewed by Geoffrey Garen.

        * Configurations/WebKit.xcconfig:
        Disable header postprocessing when building for macOS Mojave

        * Shared/API/Cocoa/_WKRenderingProgressEvents.h:
        * UIProcess/API/C/WKPage.h:
        * UIProcess/API/Cocoa/WKBackForwardListItemPrivate.h:
        * UIProcess/API/Cocoa/WKBrowsingContextController.h:
        * UIProcess/API/Cocoa/WKBrowsingContextGroup.h:
        * UIProcess/API/Cocoa/WKBrowsingContextHistoryDelegate.h:
        * UIProcess/API/Cocoa/WKBrowsingContextLoadDelegate.h:
        * UIProcess/API/Cocoa/WKBrowsingContextPolicyDelegate.h:
        * UIProcess/API/Cocoa/WKConnection.h:
        * UIProcess/API/Cocoa/WKNavigationActionPrivate.h:
        * UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h:
        * UIProcess/API/Cocoa/WKPreferencesPrivate.h:
        * UIProcess/API/Cocoa/WKProcessGroup.h:
        * UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
        * UIProcess/API/Cocoa/WKTypeRefWrapper.h:
        * UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
        * UIProcess/API/Cocoa/WKView.h:
        (WK_CLASS_DEPRECATED_WITH_REPLACEMENT):
        * UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        * UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
        * UIProcess/API/Cocoa/_WKAttachment.h:
        * UIProcess/API/Cocoa/_WKAutomationSessionConfiguration.h:
        * UIProcess/API/Cocoa/_WKDownload.h:
        * UIProcess/API/Cocoa/_WKFormInputSession.h:
        * UIProcess/API/Cocoa/_WKInspector.h:
        * UIProcess/API/Cocoa/_WKInternalDebugFeature.h:
        * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h:
        * UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h:
        * UIProcess/API/Cocoa/_WKWebsitePolicies.h:
        * WebProcess/API/Cocoa/WKWebProcess.h:
        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandle.h:
        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandlePrivate.h:

2019-05-14  Commit Queue  <commit-queue@webkit.org>

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

        Broke API Test TestWebKitAPI.Challenge.ClientCertificate
        (Requested by aakashjain on #webkit).

        Reverted changeset:

        "Add a unit test for client certificate authentication"
        https://bugs.webkit.org/show_bug.cgi?id=197800
        https://trac.webkit.org/changeset/245281

2019-05-14  Daniel Bates  <dabates@apple.com>

        [iOS] Cannot scroll to beginning of document after scrolling to end of document and vice versa via key commands
        https://bugs.webkit.org/show_bug.cgi?id=197848
        <rdar://problem/49523065>

        Reviewed by Brent Fulgham.

        Following the fix for <rdar://problem/49523065>, UIKit no longer emits a keyup event for a Command-
        modified key. This breaks WebKit's own implementation of key command handling for scrolling to the
        beginning or end of the document (triggered using Command + Arrow Up and Command + Arrow Down,
        respectively) because it watches for keyup events to reset state after initiating a scroll. If state
        is not reset then the scroll key command logic becomes confused and may not perform a subsequent scroll.
        It seems like we can actually get away with supporting these key commands and future Command modified
        commands by preemptively reseting state on keydown if the Command modifier is held down. If this does
        not work out then we can do something more complicated.

        * UIProcess/ios/WKKeyboardScrollingAnimator.mm:
        (-[WKKeyboardScrollingAnimator handleKeyEvent:]):

2019-05-14  Brent Fulgham  <bfulgham@apple.com>

        Protect current WebFrame during form submission
        https://bugs.webkit.org/show_bug.cgi?id=197459
        <rdar://problem/50368618>

        Reviewed by Alex Christensen.

        The 'continueWillSubmitForm' method calls a completion handler that
        might affect the state of the current frame. Ensure the frame is valid
        for the scope of the function.

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

2019-05-14  Daniel Bates  <dabates@apple.com>

        [iOS] Cannot tab or shift + tab out of address bar on google.com
        https://bugs.webkit.org/show_bug.cgi?id=197859
        <rdar://problem/46651565>

        Reviewed by Darin Adler.

        Non-editable elements can participate in tab cycling via the HTML tabindex attribute.
        We should allow setting the initial focus to such an element when transitioning from
        the chrome (e.g. address bar) to the web page.

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

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

        Add a unit test for client certificate authentication
        https://bugs.webkit.org/show_bug.cgi?id=197800

        Reviewed by Youenn Fablet.

        * Shared/cf/ArgumentCodersCF.cpp:
        Move SPI declarations to SecuritySPI.h.

2019-05-13  Wenson Hsieh  <wenson_hsieh@apple.com>

        Followup to r245267: fix some more deprecated uses of -[UIApplication interfaceOrientation]
        https://bugs.webkit.org/show_bug.cgi?id=197867
        <rdar://problem/50743963>

        Reviewed by Simon Fraser.

        Add a helper method on WKContentView that asks the view's window's scene for an interface orientation; then,
        use this helper from various places in WebKit instead of invoking -[UIApplication interfaceOrientation]
        directly. No change in behavior.

        * UIProcess/ios/WKContentView.h:
        * UIProcess/ios/WKContentView.mm:
        (-[WKContentView interfaceOrientation]):
        * UIProcess/ios/WebDataListSuggestionsDropdownIOS.mm:
        (-[WKDataListSuggestionsPicker initWithInformation:inView:]):
        * UIProcess/ios/forms/WKFormColorPicker.mm:
        (-[WKColorPicker initWithView:]):
        * UIProcess/ios/forms/WKFormInputControl.mm:
        (-[WKDateTimePicker initWithView:datePickerMode:]):
        * UIProcess/ios/forms/WKFormSelectPicker.mm:
        (-[WKMultipleSelectPicker initWithView:]):
        * UIProcess/ios/forms/WKFormSelectPopover.mm:
        (-[WKSelectPopover initWithView:hasGroups:]):

2019-05-13  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] When running layout tests that tap in the same location, subsequent tests fail to fire click handlers
        https://bugs.webkit.org/show_bug.cgi?id=197821
        <rdar://problem/50700512>

        Reviewed by Tim Horton.

        After r244775, when running back-to-back layout tests on iOS that simulate taps in the same location, the double
        tap gesture recognizer for recognizing double clicks ends up recognizing instead of the single tap gesture
        recognizer in the subsequent test. This means that click handlers in the subsequent test will fail to recognize,
        unless the element with the click handler is also accompanied by a dblclick handler.

        To avoid this, we reset the double click gesture recognizer when navigating; this has the additional effect of
        making it such that the second page doesn't end up observing a dblclick when the first click was only sent to
        the first page.

        * UIProcess/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::didStartProvisionalLoadForMainFrame):
        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView setupInteraction]):
        (-[WKContentView _didStartProvisionalLoadForMainFrame]):

2019-05-13  Wenson Hsieh  <wenson_hsieh@apple.com>

        Unreviewed, fix some deprecation warnings when using a recent SDK

        * UIProcess/ios/WebDataListSuggestionsDropdownIOS.mm:
        (-[WKDataListSuggestionsPicker initWithInformation:inView:]):

2019-05-13  Jiewen Tan  <jiewen_tan@apple.com>

        [WebAuthN] InvalidStateError should be reported to sites
        https://bugs.webkit.org/show_bug.cgi?id=193269
        <rdar://problem/48298264>

        Reviewed by Brent Fulgham.

        This patch implements step 20 about InvalidStateError of the spec:
        https://www.w3.org/TR/webauthn/#createCredential.

        * UIProcess/WebAuthentication/AuthenticatorManager.cpp:
        (WebKit::AuthenticatorManager::respondReceived):
        * UIProcess/WebAuthentication/fido/CtapHidAuthenticator.cpp:
        (WebKit::CtapHidAuthenticator::continueMakeCredentialAfterResponseReceived const):

2019-05-13  Jer Noble  <jer.noble@apple.com>

        Take out MediaPlayback UI assertion when any WebProcess is playing audible media
        https://bugs.webkit.org/show_bug.cgi?id=197798

        Reviewed by Chris Dumez.

        To keep the system from suspending the UIProcess (and all the other constellation of processes that
        are necessary to play media), take a UIProcess assertion with the MediaPlayback reason whenever there
        is a WebContent process that is playing audible media.

        * Platform/spi/ios/AssertionServicesSPI.h:
        * UIProcess/ProcessAssertion.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::updatePlayingMediaDidChange):
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::setWebProcessIsPlayingAudibleMedia):
        (WebKit::WebProcessPool::clearWebProcessIsPlayingAudibleMedia):
        * UIProcess/WebProcessPool.h:
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::webPageMediaStateDidChange):
        * UIProcess/WebProcessProxy.h:
        * UIProcess/ios/ProcessAssertionIOS.mm:
        (WebKit::toBKSProcessAssertionReason):
        (WebKit::ProcessAssertion::ProcessAssertion):
        * WebProcess/WebProcess.h:

2019-05-13  Per Arne Vollan  <pvollan@apple.com>

        [iOS] Crash when trying to QuickLook
        https://bugs.webkit.org/show_bug.cgi?id=197853
        <rdar://problem/49795964>

        Reviewed by Brent Fulgham.

        This is caused by a syscall sandbox violation.

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

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

        Correct the sandbox to allow loading libraries from /Library/Apple 
        https://bugs.webkit.org/show_bug.cgi?id=197844

        Reviewed by Per Arne Vollan.

        Grant access to '/Library/Apple' as an appropriate place to load
        system frameworks.

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

2019-05-13  Chris Dumez  <cdumez@apple.com>

        Unreviewed, rolling out r245240.

        Broke the build

        Reverted changeset:

        "Update TBA macros for API / SPI that has already shipped"
        https://bugs.webkit.org/show_bug.cgi?id=197841
        https://trac.webkit.org/changeset/245240

2019-05-13  Youenn Fablet  <youenn@apple.com>

        Use kDNSServiceFlagsKnownUnique for DNSServiceRegisterRecord only on platforms supporting it
        https://bugs.webkit.org/show_bug.cgi?id=197802

        Reviewed by Eric Carlson.

        * NetworkProcess/webrtc/NetworkMDNSRegister.cpp:
        (WebKit::NetworkMDNSRegister::registerMDNSName):

2019-05-13  Don Olmstead  <don.olmstead@sony.com>

        decidePolicyForInstallMissingMediaPluginsPermissionRequest requires GStreamer
        https://bugs.webkit.org/show_bug.cgi?id=197843

        Reviewed by Alex Christensen.

        * UIProcess/API/wpe/PageClientImpl.cpp:
        ENABLE(VIDEO) && USE(GSTREAMER)
        * UIProcess/WebPageProxy.h:
        Cleanup the declaration.

2019-05-13  Don Olmstead  <don.olmstead@sony.com>

        Move StorageManager.cpp into WebKit/Sources.txt
        https://bugs.webkit.org/show_bug.cgi?id=197842

        Reviewed by Michael Catanzaro.

        StorageManager.cpp is used by all ports so it should just go into Sources.txt.

        * PlatformMac.cmake:
        * PlatformWin.cmake:
        * Sources.txt:
        * SourcesCocoa.txt:
        * SourcesGTK.txt:
        * SourcesWPE.txt:

2019-05-13  Chris Dumez  <cdumez@apple.com>

        Update TBA macros for API / SPI that has already shipped
        https://bugs.webkit.org/show_bug.cgi?id=197841
        <rdar://problem/50698499>

        Reviewed by Alex Christensen.

        * Shared/API/Cocoa/_WKRenderingProgressEvents.h:
        * UIProcess/API/C/WKPage.h:
        * UIProcess/API/Cocoa/WKBackForwardListItemPrivate.h:
        * UIProcess/API/Cocoa/WKBrowsingContextController.h:
        * UIProcess/API/Cocoa/WKBrowsingContextGroup.h:
        * UIProcess/API/Cocoa/WKBrowsingContextHistoryDelegate.h:
        * UIProcess/API/Cocoa/WKBrowsingContextLoadDelegate.h:
        * UIProcess/API/Cocoa/WKBrowsingContextPolicyDelegate.h:
        * UIProcess/API/Cocoa/WKConnection.h:
        * UIProcess/API/Cocoa/WKNavigationActionPrivate.h:
        * UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h:
        * UIProcess/API/Cocoa/WKPreferencesPrivate.h:
        * UIProcess/API/Cocoa/WKProcessGroup.h:
        * UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
        * UIProcess/API/Cocoa/WKTypeRefWrapper.h:
        * UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
        * UIProcess/API/Cocoa/WKView.h:
        (WK_CLASS_DEPRECATED_WITH_REPLACEMENT):
        * UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        * UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
        * UIProcess/API/Cocoa/_WKAttachment.h:
        * UIProcess/API/Cocoa/_WKAutomationSessionConfiguration.h:
        * UIProcess/API/Cocoa/_WKDownload.h:
        * UIProcess/API/Cocoa/_WKFormInputSession.h:
        * UIProcess/API/Cocoa/_WKInspector.h:
        * UIProcess/API/Cocoa/_WKInternalDebugFeature.h:
        * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h:
        * UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h:
        * UIProcess/API/Cocoa/_WKWebsitePolicies.h:
        * WebProcess/API/Cocoa/WKWebProcess.h:
        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandle.h:
        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandlePrivate.h:

2019-05-13  Chris Fleizach  <cfleizach@apple.com>

        AX: Need an entitlement for WebContent to send accessibility notifications
        https://bugs.webkit.org/show_bug.cgi?id=197832

        Reviewed by Brent Fulgham.

        In order to send accessibility notifications on iOS, we need to be able to look up this port.

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

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

        Unreviewed, fix unused variable warnings in release builds

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::clearWebProcessHasUploads):

2019-05-12  Takashi Komori  <Takashi.Komori@sony.com>

        [Curl] Suppress extra didReceiveAuthenticationChallenge call when accessing a server which checks basic auth.
        https://bugs.webkit.org/show_bug.cgi?id=197650

        Reviewed by Fujii Hironori.

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

2019-05-10  Chris Dumez  <cdumez@apple.com>

        [PSON] Prevent flashing when the process-swap is forced by the client
        https://bugs.webkit.org/show_bug.cgi?id=197799

        Reviewed by Geoffrey Garen.

        When the process-swap is forced by the client, we would not construct a SuspendedPageProxy for
        the previous page, which would cause a white/black flash upon navigation on macOS. The reason
        we did not construct a SuspendedPageProxy is that it would be unsafe to keep the page around
        in this case because other windows might have an opener link to the page when the swap is forced
        and we need those opener / openee links to get severed.

        The new approach to maintain the Web facing behavior without flashing is to create a suspended
        page proxy for the previous page when the process swap is forced by the client. We then close
        the page as soon as we can do so without flashing (when pageEnteredAcceleratedCompositingMode()
        has been called).

        * UIProcess/SuspendedPageProxy.cpp:
        (WebKit::SuspendedPageProxy::SuspendedPageProxy):
        (WebKit::SuspendedPageProxy::close):
        (WebKit::SuspendedPageProxy::pageEnteredAcceleratedCompositingMode):
        (WebKit::SuspendedPageProxy::closeWithoutFlashing):
        (WebKit::SuspendedPageProxy::didProcessRequestToSuspend):
        * UIProcess/SuspendedPageProxy.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::suspendCurrentPageIfPossible):
        (WebKit::WebPageProxy::commitProvisionalPage):
        * UIProcess/WebPageProxy.h:

2019-05-10  Brent Fulgham  <bfulgham@apple.com>

        Streamline test-and-clear operation for ContextMenu
        https://bugs.webkit.org/show_bug.cgi?id=197795
        <rdar://problem/50473746>

        Reviewed by Wenson Hsieh.

        Rather than performing a check when entering the function, doing work,
        then clearing the member variable, perform the check and clear in
        a single operation. Only perform the selection if the menu exists.

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

2019-05-10  Megan Gardner  <megan_gardner@apple.com>

        Returning incorrect marked text rects
        https://bugs.webkit.org/show_bug.cgi?id=197758
        <rdar://problem/46548586>

        Reviewed by Tim Horton.

        We are not returning marked text rects in the correct view coordinate space.
        This is the same translation we are applying to the caret rects. 

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

2019-05-10  Wenson Hsieh  <wenson_hsieh@apple.com>

        Let WebKit clients supply an application name for user agent in modern compatibility mode
        https://bugs.webkit.org/show_bug.cgi?id=197782
        <rdar://problem/50646747>

        Reviewed by Beth Dakin.

        Add plumbing for a new private property on WKWebpagePreferences.

        * UIProcess/API/APIWebsitePolicies.cpp:
        (API::WebsitePolicies::copy const):
        * UIProcess/API/APIWebsitePolicies.h:
        * UIProcess/API/Cocoa/WKWebpagePreferences.mm:
        (-[WKWebpagePreferences _applicationNameForUserAgentWithModernCompatibility]):
        (-[WKWebpagePreferences _setApplicationNameForUserAgentWithModernCompatibility:]):
        * UIProcess/API/Cocoa/WKWebpagePreferencesPrivate.h:

2019-05-10  Chris Dumez  <cdumez@apple.com>

        The active tab sometimes app naps even though it should not
        https://bugs.webkit.org/show_bug.cgi?id=197791
        <rdar://problem/48460054>

        Reviewed by Geoffrey Garen.

        The WebPage constructor was initializing m_activityState but not calling updateThrottleState().
        As a result, we would not take a UserActivity even when warranted by the initial activity state.

        * WebProcess/WebPage/WebPage.cpp:

2019-05-10  Fujii Hironori  <Hironori.Fujii@sony.com>

        [WinCairo] storage/indexeddb tests are timing out
        https://bugs.webkit.org/show_bug.cgi?id=196289

        Reviewed by Alex Christensen.

        storage/indexeddb tests were timing out for WinCairo port because
        WebKit::NetworkCache classes were not implemented yet for Windows.

        Implement WebKit::NetworkCache classes by using WTF::FileSystem
        functions.

        * NetworkProcess/cache/CacheStorageEngine.cpp:
        (WebKit::CacheStorage::Engine::readFile): Use
        IOChannel::isOpened() to check the channel is opened instead of
        checking the file descriptor.
        * NetworkProcess/cache/NetworkCacheBlobStorage.cpp:
        (WebKit::NetworkCache::BlobStorage::add):
        (WebKit::NetworkCache::BlobStorage::remove):
        * NetworkProcess/cache/NetworkCacheData.cpp:
        (WebKit::NetworkCache::Data::mapToFile const):
        (WebKit::NetworkCache::mapFile):
        (WebKit::NetworkCache::adoptAndMapFile):
        (WebKit::NetworkCache::makeSalt):
        (WebKit::NetworkCache::readOrMakeSalt):
        * NetworkProcess/cache/NetworkCacheData.h:
        (WebKit::NetworkCache::Data::isEmpty const):
        (WebKit::NetworkCache::Data::size const):
        * NetworkProcess/cache/NetworkCacheDataCurl.cpp:
        (WebKit::NetworkCache::Data::Data):
        (WebKit::NetworkCache::Data::empty):
        (WebKit::NetworkCache::Data::data const):
        (WebKit::NetworkCache::Data::isNull const):
        (WebKit::NetworkCache::Data::apply const):
        (WebKit::NetworkCache::Data::subrange const):
        (WebKit::NetworkCache::concatenate):
        (WebKit::NetworkCache::Data::adoptMap): Deleted.
        * NetworkProcess/cache/NetworkCacheFileSystem.cpp:
        (WebKit::NetworkCache::traverseDirectory):
        (WebKit::NetworkCache::fileTimes):
        (WebKit::NetworkCache::updateFileModificationTimeIfNeeded):
        (WebKit::NetworkCache::isSafeToUseMemoryMapForPath):
        * NetworkProcess/cache/NetworkCacheIOChannel.h:
        (WebKit::NetworkCache::IOChannel::isOpened const):
        (WebKit::NetworkCache::IOChannel::fileDescriptor const): Deleted.
        * NetworkProcess/cache/NetworkCacheIOChannelCurl.cpp:
        (WebKit::NetworkCache::IOChannel::IOChannel):
        (WebKit::NetworkCache::IOChannel::~IOChannel):
        (WebKit::NetworkCache::runTaskInQueue):
        (WebKit::NetworkCache::IOChannel::read):
        (WebKit::NetworkCache::IOChannel::write):

2019-05-10  Chris Dumez  <cdumez@apple.com>

        Do not wait until requestPermission() is called to fire deviceorientation events if permission was already granted
        https://bugs.webkit.org/show_bug.cgi?id=197750

        Reviewed by Geoffrey Garen.

        The UIProcess remembers previous device orientation permission decisions per origin for the duration of the browsing
        session. However, the WebContent process was not aware of previous decisions and would therefore not fire any
        deviceorientation / devicemotion events until the JS has called requestPermission(). This patches addresses this
        problem by having the UIProcess communicate any previous permission decision for the origin via WebSitePolicies.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::receivedNavigationPolicyDecision):
        * UIProcess/WebsiteData/WebDeviceOrientationAndMotionAccessController.cpp:
        (WebKit::WebDeviceOrientationAndMotionAccessController::shouldAllowAccess):
        (WebKit::WebDeviceOrientationAndMotionAccessController::cachedDeviceOrientationPermission const):
        (WebKit::WebDeviceOrientationAndMotionAccessController::deviceOrientationPermission const): Deleted.
        * UIProcess/WebsiteData/WebDeviceOrientationAndMotionAccessController.h:

2019-05-10  Chris Dumez  <cdumez@apple.com>

        Add WKWebViewConfiguration._canShowWhileLocked SPI
        https://bugs.webkit.org/show_bug.cgi?id=197777
        <rdar://problem/50065100>

        Reviewed by Tim Horton.

        * Platform/mac/LayerHostingContext.h:
        * Platform/mac/LayerHostingContext.mm:
        (WebKit::LayerHostingContext::createForExternalHostingProcess):
        * Shared/WebPageCreationParameters.cpp:
        (WebKit::WebPageCreationParameters::encode const):
        (WebKit::WebPageCreationParameters::decode):
        * Shared/WebPageCreationParameters.h:
        * UIProcess/API/APIPageConfiguration.cpp:
        (API::PageConfiguration::copy const):
        * UIProcess/API/APIPageConfiguration.h:
        (API::PageConfiguration::canShowWhileLocked const):
        (API::PageConfiguration::setCanShowWhileLocked):
        * UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
        (-[WKWebViewConfiguration _setCanShowWhileLocked:]):
        (-[WKWebViewConfiguration _canShowWhileLocked]):
        * UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::creationParameters):
        * WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemoteCustom.mm:
        (WebKit::PlatformCALayerRemoteCustom::PlatformCALayerRemoteCustom):
        * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeContext.h:
        * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeContext.mm:
        (WebKit::RemoteLayerTreeContext::canShowWhileLocked const):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::m_canShowWhileLocked):
        (WebKit::m_shrinkToFitContentTimer): Deleted.
        * WebProcess/WebPage/WebPage.h:
        (WebKit::WebPage::canShowWhileLocked const):

2019-05-10  Michael Catanzaro  <mcatanzaro@igalia.com>

        Fix a bunch of compiler warnings
        https://bugs.webkit.org/show_bug.cgi?id=197785

        Reviewed by Don Olmstead.

        Guard Cocoa-specific format modifier to avoid -Wformat warning.

        * NetworkProcess/AdClickAttributionManager.cpp:
        (WebKit::AdClickAttributionManager::fireConversionRequest):

2019-05-10  Chris Fleizach  <cfleizach@apple.com>

        AX: Crash at WebKit: WebKit::WebSpeechSynthesisClient::speak
        https://bugs.webkit.org/show_bug.cgi?id=197761
        <rdar://problem/50237614>

        Reviewed by Per Arne Vollan.

        It's valid for the incoming voice to be nil, so we need to protect against that.

        Tests: fast/speechsynthesis/speech-synthesis-real-client-version.html

        * WebProcess/WebCoreSupport/WebSpeechSynthesisClient.cpp:
        (WebKit::WebSpeechSynthesisClient::speak):

2019-05-10  Michael Catanzaro  <mcatanzaro@igalia.com>

        [WPE][GTK] Add webkit_frame_get_id() API
        https://bugs.webkit.org/show_bug.cgi?id=197270

        Reviewed by Carlos Garcia Campos.

        It's as simple as can be: just an API to return the ID of a frame.

        * UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt:
        * WebProcess/InjectedBundle/API/glib/WebKitFrame.cpp:
        (webkit_frame_get_id):
        * WebProcess/InjectedBundle/API/gtk/WebKitFrame.h:
        * WebProcess/InjectedBundle/API/wpe/WebKitFrame.h:
        * WebProcess/InjectedBundle/API/wpe/docs/wpe-webextensions-1.0-sections.txt:

2019-05-10  Michael Catanzaro  <mcatanzaro@igalia.com>

        [WPE][GTK] Add WebKitWebPage::did-associate-form-controls-for-frame and deprecate original did-associate-form-controls
        https://bugs.webkit.org/show_bug.cgi?id=197271

        Reviewed by Youenn Fablet.

        * WebProcess/InjectedBundle/API/c/WKBundlePageFormClient.h:
        * WebProcess/InjectedBundle/API/glib/WebKitWebPage.cpp:
        (webkit_web_page_class_init):
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:
        (-[WKWebProcessPlugInBrowserContextController _setFormDelegate:]):
        * WebProcess/InjectedBundle/APIInjectedBundleFormClient.h:
        (API::InjectedBundle::FormClient::didAssociateFormControls):
        * WebProcess/InjectedBundle/InjectedBundlePageFormClient.cpp:
        (WebKit::InjectedBundlePageFormClient::didAssociateFormControls):
        * WebProcess/InjectedBundle/InjectedBundlePageFormClient.h:
        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::didAssociateFormControls):
        * WebProcess/WebCoreSupport/WebChromeClient.h:

2019-05-09  Rob Buis  <rbuis@igalia.com>

        Limit number of prefetches of a given page
        https://bugs.webkit.org/show_bug.cgi?id=197736

        Reviewed by Darin Adler.

        Limit prefetches for same url to 1.

        * NetworkProcess/cache/PrefetchCache.cpp:
        (WebKit::PrefetchCache::store):

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

        Unreviewed, rolling out most of r245151.

        Caused assertions in High Sierra

        Reverted most of changeset:

        "Remove now-unnecessary Connection::sendMessageWithReply"
        https://bugs.webkit.org/show_bug.cgi?id=197747
        https://trac.webkit.org/changeset/245151

2019-05-09  Daniel Bates  <dabates@apple.com>

        [iOS] Lazily request keyboard on first hardware keydown when a non-editable element is focused
        https://bugs.webkit.org/show_bug.cgi?id=197746
        <rdar://problem/50630406>

        Reviewed by Brent Fulgham.

        Be even lazier. We only need to create a keyboard if an editable element is focused or on
        the first hardware keydown when a non-editable element is focused. We currently do the former.
        Let's also do the latter.

        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView cleanupInteraction]): Reset bookkeeping.
        (-[WKContentView _requiresKeyboardWhenFirstResponder]): Further condition the result on
        whether we have seen a hardware keydown event in a non-editable element.
        (-[WKContentView _handleKeyUIEvent:]): If this is the first hardware key event we've seen then
        update state and call -reloadInputView. -reloadInputView will call us back in -_requiresKeyboardWhenFirstResponder
        and we will now return YES. So, it will create the keyboard.
        (-[WKContentView _hardwareKeyboardAvailabilityChanged]): Reset bookkeeping.

2019-05-08  Dean Jackson  <dino@apple.com>

        Guard long press link preview with a USE macro rather than complicated includes
        https://bugs.webkit.org/show_bug.cgi?id=197728
        <rdar://problem/50604700>

        Reviewed by Wenson Hsieh.

        It was getting complicated to manage the coordination between WebKitAdditions
        and WebKit without having to split up the includes into multiple files
        or have lots of duplication.

        Instead, WebKitAdditions will now define a USE macro which can be used
        in various places through WebKit.

        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView dragInteraction:itemsForBeginningSession:]):
        (-[WKContentView _contentsOfUserInterfaceItem:]):
        (previewIdentifierForElementAction):
        (-[WKContentView shouldUsePreviewForLongPress]):
        (-[WKContentView _registerPreview]):
        (-[WKContentView _unregisterPreview]):
        (shouldUsePreviewForLongPress): Deleted.
        (-[WKContentView _registerPreviewLongPress]): Deleted.
        (-[WKContentView _unregisterPreviewLongPress]): Deleted.

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

        Remove now-unnecessary Connection::sendMessageWithReply
        https://bugs.webkit.org/show_bug.cgi?id=197747

        Reviewed by Tim Horton.

        The WebProcess messages that use it already do the right thing with CompletionHandlers and can be replaced by sendWithAsyncReply.
        The SecItemShim message that uses it can be replaced by sendSync.

        This patch only increases responsiveness when clearing website data and removes the need for a WorkQueue dedicated entirely to the SecItemShim.

        * Platform/IPC/Connection.cpp:
        (IPC::Connection::invalidate):
        (IPC::Connection::processIncomingSyncReply):
        (IPC::Connection::connectionDidClose):
        (IPC::Connection::sendMessageWithReply): Deleted.
        * Platform/IPC/Connection.h:
        (IPC::Connection::send):
        (IPC::Connection::sendWithReply): Deleted.
        * Shared/mac/SecItemResponseData.h:
        * Shared/mac/SecItemShim.cpp:
        (WebKit::sendSecItemRequest):
        (WebKit::workQueue): Deleted.
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::fetchWebsiteData):
        (WebKit::WebProcessProxy::deleteWebsiteData):
        (WebKit::WebProcessProxy::deleteWebsiteDataForOrigins):
        * WebProcess/WebProcess.messages.in:

2019-05-09  Dean Jackson  <dino@apple.com>

        Build fix for iOS.

        * UIProcess/WKImagePreviewViewController.mm:

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

        Remove unnecessary test SPI after r244883
        https://bugs.webkit.org/show_bug.cgi?id=197575

        Reviewed by Tim Horton.

        We now have two ways of doing the same thing.  Let's remove the one that's only for testing,
        and make the tests clean up like an application would.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::removeCredential): Deleted.
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:
        * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
        (WebKit::NetworkProcess::removeCredential): Deleted.
        * UIProcess/API/Cocoa/WKProcessPool.mm:
        (-[WKProcessPool _removeCredential:forProtectionSpace:completionHandler:]): Deleted.
        * UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::removeCredential): Deleted.
        * UIProcess/WebProcessPool.h:

2019-05-09  Daniel Bates  <dabates@apple.com>

        REGRESSION (r241734): 1% slower PLT on iPad
        https://bugs.webkit.org/show_bug.cgi?id=197745
        <rdar://problem/50457731>

        Reviewed by Per Arne Vollan.

        For now, only create a keyboard when WKContentView becomes first responder if a hardware keyboard
        is attached or an editable element is focused to recover the 1% loss when a keyboard is not attached.
        We can do better and by that I mean be lazier. We'll do this <https://bugs.webkit.org/show_bug.cgi?id=197746>.

        In r241734 we unified the key event handling code paths so we use exactly one for both software and
        hardware key events. We took a simple approach of always requesting UIKit to create a keyboard when
        the WKContentView becomes first responder. We did this so that we could continue listening for hardware
        key events even when a non-editable element is focused and dispatch DOM events. As it turns out, always
        creating a keyboard is expensive and caused a ~1% slowdown in page load time on iPad.

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _requiresKeyboardWhenFirstResponder]): Only create a keyboard if a hardware keyboard is
        attached or an editable element is focused.
        (-[WKContentView _hardwareKeyboardAvailabilityChanged]): Reload all input view (this will cause keyboard
        creation) if -_requiresKeyboardWhenFirstResponder returns YES.

2019-05-09  Daniel Bates  <dabates@apple.com>

        [iOS] Unable to commit search on MSN.com, qq.com, or sina.com.cn using enter key (hardware or software keyboard)
        https://bugs.webkit.org/show_bug.cgi?id=197632
        <rdar://problem/47902054>

        Reviewed by Brent Fulgham.

        Fixes an issue where it is not possible to submit a <form> with target = "_blank": a form that
        opens a new window.

        By default we only allow popups to open if they were user initiated (like when a person clicks
        on a link). We achieve this by putting a token on the stack, called the UserGestureToken when
        WebCore processes an event from WebKit. So long as this token is on the stack we consider
        all requests to open a popup to be user initiated. And we implicitly submit a form when pressing
        the Return key in an HTML input element during the processing of a TextInputEvent dispatched as
        part of inserting a '\n' into the field. On Mac, the keydown dispatches a TextInputEvent synchronously.
        However on iOS text insertion, and hence a dispatch of a TextInputEvent event, occurs asynchronously
        with respect to the keydown event. So, by the time the UI process calls back to the WebProcess
        to perform the text insertion of '\n' we have long since popped the UserGestureToken off the stack
        and hence we disallow opening a popup. To fix this, when -insertText is called we query the keyboard
        to determine if it's being called by the keyboard. If it is then we can assume that this is
        part of key event handling and hence was initiated by the user. We can pass along this detail
        to the WebProcess for it to push a new UserGestureToken onto the stack.

        For now we only track whether text inserted by the keyboard was user initiated or not. In
        <https://bugs.webkit.org/show_bug.cgi?id=197721> we will fix this up for all editing commands.

        * Platform/spi/ios/UIKitSPI.h: Expose SPI.
        * Shared/Cocoa/InsertTextOptions.cpp:
        (IPC::ArgumentCoder<WebKit::InsertTextOptions>::encode):
        (IPC::ArgumentCoder<WebKit::InsertTextOptions>::decode):
        Encode and decode whether we are processing a user gesture.

        * Shared/Cocoa/InsertTextOptions.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView insertText:]): Query the keyboard to determine whether it called us or
        the embedding client did. We only want to privilege user initiated actions (the keyboard).
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::insertTextAsync): Push a UserGestureToken onto the stack that is initialized
        depending on whether we are or are not processing a user gesture.

2019-05-09  Antoine Quint  <graouts@apple.com>

        pointerevents/ios/touch-action-none-in-overflow-scrolling-touch.html is a timeout
        https://bugs.webkit.org/show_bug.cgi?id=197738
        <rdar://problem/50588613>

        Reviewed by Antti Koivisto.

        We clear the touch actions for a given touch identifier when the matching touch is released in -[WKContentViewInteraction _handleTouchActionsForTouchEvent:].
        This happens before -[WKScrollingNodeScrollViewDelegate scrollViewWillEndDragging:withVelocity:targetContentOffset:] is called and thus, which we correctly
        respected the touch actions during the panning gesture, we would not be able to respect them during the deceleration animation. This caused the test to fail
        because it would check that no scrolling happened after the panning gesture completed, ie. during the deceleration animation.

        To work around this, we now store the touch actions for a given UIScrollView interaction in the ScrollingTreeScrollingNodeDelegateIOS object when the interaction
        starts.

        * UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.h:
        (WebKit::ScrollingTreeScrollingNodeDelegateIOS::activeTouchActions const):
        (WebKit::ScrollingTreeScrollingNodeDelegateIOS::clearActiveTouchActions):
        * UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.mm:
        (-[WKScrollingNodeScrollViewDelegate scrollViewWillEndDragging:withVelocity:targetContentOffset:]):
        (-[WKScrollingNodeScrollViewDelegate _scrollView:adjustedOffsetForOffset:translation:startPoint:locationInView:horizontalVelocity:verticalVelocity:]):
        (WebKit::ScrollingTreeScrollingNodeDelegateIOS::computeActiveTouchActionsForGestureRecognizer):
        (WebKit::ScrollingTreeScrollingNodeDelegateIOS::activeTouchActionsForGestureRecognizer const): Deleted.

2019-05-08  Antoine Quint  <graouts@apple.com>

        [iOS] Correctly handle overlapping regions for elements with a touch-action property
        https://bugs.webkit.org/show_bug.cgi?id=194813
        <rdar://problem/48194708>

        Reviewed by Antti Koivisto.

        We now use WebKit::touchActionsForPoint() to determine the touch actions for a given touch using its location in -[WKContentViewInteraction
        _handleTouchActionsForTouchEvent:]. We then record these touch actions for the touch's identifier on the RemoteScrollingCoordinatorProxy.

        Then, as we interact with a UIScrollView, we get its gesture recognizer and get its active touch identifier through the new
        -[WKContentViewInteraction activeTouchIdentifierForGestureRecognizer:] method, and query the RemoteScrollingCoordinatorProxy for the touch
        actions matching that touch identifier.

        Tests: pointerevents/ios/touch-action-none-overlap.html
               pointerevents/ios/touch-action-pan-x-overlap.html
               pointerevents/ios/touch-action-pan-y-overlap.html
               pointerevents/ios/touch-action-pinch-zoom-overlap.html

        * UIProcess/PageClient.h:
        (WebKit::PageClient::activeTouchIdentifierForGestureRecognizer):
        * UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.cpp: Maintain a touch identifier to touch actions map.
        (WebKit::RemoteScrollingCoordinatorProxy::activeTouchActionsForTouchIdentifier const):
        (WebKit::RemoteScrollingCoordinatorProxy::setTouchActionsForTouchIdentifier):
        (WebKit::RemoteScrollingCoordinatorProxy::clearTouchActionsForTouchIdentifier):
        (WebKit::RemoteScrollingCoordinatorProxy::touchActionDataAtPoint const): Deleted.
        (WebKit::RemoteScrollingCoordinatorProxy::touchActionDataForScrollNodeID const): Deleted.
        (WebKit::RemoteScrollingCoordinatorProxy::setTouchDataForTouchIdentifier): Deleted.
        (WebKit::RemoteScrollingCoordinatorProxy::clearTouchDataForTouchIdentifier): Deleted.
        * UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.h:
        * UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.h:
        * UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.mm:
        (-[WKScrollingNodeScrollViewDelegate scrollViewWillEndDragging:withVelocity:targetContentOffset:]):
        (-[WKScrollingNodeScrollViewDelegate _scrollView:adjustedOffsetForOffset:translation:startPoint:locationInView:horizontalVelocity:verticalVelocity:]):
        (WebKit::ScrollingTreeScrollingNodeDelegateIOS::activeTouchActionsForGestureRecognizer const):
        (WebKit::ScrollingTreeScrollingNodeDelegateIOS::touchActionData const): Deleted.
        * UIProcess/ios/PageClientImplIOS.h:
        * UIProcess/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::activeTouchIdentifierForGestureRecognizer):
        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView activeTouchIdentifierForGestureRecognizer:]):
        (-[WKContentView _handleTouchActionsForTouchEvent:]):

2019-05-08  Megan Gardner  <megan_gardner@apple.com>

        Add quirks to emulate undo and redo in hidden editable areas on some websites
        https://bugs.webkit.org/show_bug.cgi?id=197452

        Reviewed by Alex Christensen.

        We need to make our own undo manager to allow undo even when 
        the manager is empty. This is to interface with rich editing 
        websites that don't actually interface with our undo abilities.
        Then we need to generate synthetic undo and redo in the web process.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::isCurrentURLHost const):
        * UIProcess/WebPageProxy.h:
        * UIProcess/ios/WKContentView.mm:
        (-[WKNSUndoManager initWithContentView:]):
        (-[WKNSUndoManager canUndo]):
        (-[WKNSUndoManager canRedo]):
        (-[WKNSUndoManager undo]):
        (-[WKNSUndoManager redo]):
        (-[WKContentView undoManager]):
        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView generateSyntheticUndoRedo:]):
        (-[WKContentView hasHiddenContentEditable]):
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::generateSyntheticUndoRedo):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::handleEditingKeyboardEvent):
        (WebKit::WebPage::generateSyntheticUndoRedo):

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

        Add SPI to set HSTS storage directory
        https://bugs.webkit.org/show_bug.cgi?id=197259
        <rdar://problem/48797895>

        Reviewed by Brady Eidson.

        It is with great sadness that I lament the design of this SPI, which is necessitated by the process-global nature of the SPI that
        I must call and the time at which I must call it (before any networking calls have been made).
        I'm also not thrilled about the fact that the unit test infrastructure I developed for this in r244594 cannot be used because
        the SPI that I must call does not work on iOS simulator or Mac.  I have verified the SPI is being called and that when called on iOS,
        and that CFNetwork does the right thing with it.

        * 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 setHSTSStorageDirectory:]):
        (-[_WKProcessPoolConfiguration hstsStorageDirectory]):
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::ensureNetworkProcess):

2019-05-08  Daniel Bates  <dabates@apple.com>

        Pass insertTextAsync options as a struct
        https://bugs.webkit.org/show_bug.cgi?id=197710

        Reviewed by Brent Fulgham.

        WebPageProxy::insertTextAsync() is becoming unwieldy to work with given the large number of
        optional arguments that can be passed to it. Let's pass a struct instead.

        * Shared/Cocoa/InsertTextOptions.cpp: Added.
        (IPC::ArgumentCoder<WebKit::InsertTextOptions>::encode):
        (IPC::ArgumentCoder<WebKit::InsertTextOptions>::decode):
        * Shared/Cocoa/InsertTextOptions.h: Added.
        * Shared/EditingRange.h: Add EnumTrait so that we can encode the EditingRangeIsRelativeTo
        enumeration.
        * SourcesCocoa.txt: Add a new file.
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::insertText): Update code now that we pass a struct.
        (WebKit::WebViewImpl::setMarkedText): Ditto.
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::insertTextAsync): Ditto.
        * UIProcess/WebPageProxy.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView insertText:]): Ditto.
        * UIProcess/mac/WebPageProxyMac.mm:
        (WebKit::WebPageProxy::insertDictatedTextAsync): Ditto.
        * WebKit.xcodeproj/project.pbxproj: Add new files.
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::insertTextAsync): Ditto.
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in: Ditto.

2019-05-08  Timothy Hatcher  <timothy@apple.com>

        Add plumbing for inactive system colors in RenderTheme cache.
        https://bugs.webkit.org/show_bug.cgi?id=197699
        rdar://problem/49406936

        Reviewed by Tim Horton.

        * Shared/WebPageCreationParameters.cpp:
        (WebKit::WebPageCreationParameters::encode const):
        (WebKit::WebPageCreationParameters::decode):
        * Shared/WebPageCreationParameters.h:
        * UIProcess/Cocoa/WebViewImpl.h:
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::effectiveAppearanceIsInactive):
        * UIProcess/PageClient.h:
        (WebKit::PageClient::effectiveAppearanceIsInactive const):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::creationParameters):
        (WebKit::WebPageProxy::useInactiveAppearance const):
        (WebKit::WebPageProxy::effectiveAppearanceDidChange):
        * UIProcess/WebPageProxy.h:
        * UIProcess/mac/PageClientImplMac.h:
        * UIProcess/mac/PageClientImplMac.mm:
        (WebKit::PageClientImpl::effectiveAppearanceIsInactive const):
        * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
        (WKBundlePageSetUseDarkAppearance):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::m_shrinkToFitContentTimer):
        (WebKit::WebPage::effectiveAppearanceDidChange): Renamed from setUseDarkAppearance.
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:
        * WebProcess/WebPage/gtk/WebPageGtk.cpp:
        (WebKit::WebPage::effectiveAppearanceDidChange): Renamed from setUseDarkAppearance.

2019-05-08  Chris Dumez  <cdumez@apple.com>

        Regression: Crash at WebKit: PAL::HysteresisActivity::start
        https://bugs.webkit.org/show_bug.cgi?id=197666
        <rdar://problem/50037153>

        Reviewed by Geoffrey Garen.

        We've recently made it so that the WebContent process destroys its WebSQLiteDatabaseTracker when preparing
        for process suspension and then re-constructs it when resuming. The issue is that the WebSQLiteDatabaseTracker
        internal implementation was calling callOnMainThread() and capturing |this| to start/stop its HysteresisActivity.
        As a result, |this| could be dead by the time we're on the main thread and we'd crash.

        To address the issue, we no longer destroy the WebSQLiteDatabaseTracker when preparing to suspend. Instead, we
        set a 'isSuspended' flag on the WebSQLiteDatabaseTracker so that it stops notifying the WebProcess of changes.

        Also clean up the class a bit so that:
        1. The constructor takes in a WTF::Function instead of a NetworkProcess / WebProcess reference. This is provides
           better layering. The WebSQLiteDatabaseTracker should not need to know anything about those objects.
        2. Use RunLoop::main().dispatch() instead of callOnMainThread() since we're in WebKit2 code.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::NetworkProcess):
        * Shared/WebSQLiteDatabaseTracker.cpp:
        (WebKit::WebSQLiteDatabaseTracker::WebSQLiteDatabaseTracker):
        (WebKit::WebSQLiteDatabaseTracker::~WebSQLiteDatabaseTracker):
        (WebKit::WebSQLiteDatabaseTracker::willBeginFirstTransaction):
        (WebKit::WebSQLiteDatabaseTracker::didFinishLastTransaction):
        (WebKit::WebSQLiteDatabaseTracker::hysteresisUpdated): Deleted.
        * Shared/WebSQLiteDatabaseTracker.h:
        * WebProcess/WebProcess.cpp:
        (WebKit::m_nonVisibleProcessCleanupTimer):
        (WebKit::WebProcess::initializeSQLiteDatabaseTracker):
        (WebKit::WebProcess::cancelPrepareToSuspend):
        (WebKit::WebProcess::processDidResume):
        (WebKit::m_webSQLiteDatabaseTracker): Deleted.
        * WebProcess/WebProcess.h:

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

        iOS: Selection is dismissed even if click is preventDefault()'d
        https://bugs.webkit.org/show_bug.cgi?id=197686
        <rdar://problem/49398824>

        Reviewed by Wenson Hsieh.

        We currently unconditionally dismiss the selection on any tap; however
        if a site preventDefault()s on click, we shouldn't perform the default
        action of dismissing the selection.

        Instead of clearing the selection in the UI process, clear it in the
        Web content process if we don't dispatch a synthetic click; the normal
        WebCore machinery will handle it in the case that we do.

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _singleTapRecognized:]):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::commitPotentialTapFailed):
        (WebKit::WebPage::selectWithGesture):
        (WebKit::WebPage::clearSelection):
        (WebKit::WebPage::selectTextWithGranularityAtPoint):

2019-05-08  Alexander Mikhaylenko  <exalm7659@gmail.com>

        [GTK] Support navigation gesture on touchscreens
        https://bugs.webkit.org/show_bug.cgi?id=197690

        Reviewed by Michael Catanzaro.

        Touch events generate scroll events that are handled in webkitWebViewBaseHandleWheelEvent(),
        bypassing webkitWebViewBaseScrollEvent(). Because of that, ViewGestureController never receives
        them. Hence pass scroll events to ViewGestureController in webkitWebViewBaseHandleWheelEvent()
        instead.

        For touch events, gesture progress calculation has to take window width into account to make
        the page perfectly follow finger, and deltas are additionally divided by Scrollbar::pixelsPerLineStep(),
        so compensate for that.

        For touchpad events, change delta multiplier to 10 to match GTK behavior, and introduce a 400px
        base width so the swipe speed doesn't change from the previous behavior.

        Because of the multiplier change, threshold for triggering the gesture with touchpad is now 4
        times larger.

        * UIProcess/API/gtk/WebKitWebViewBase.cpp:
        (webkitWebViewBaseHandleWheelEvent): Move ViewGestureController bits here.
        (webkitWebViewBaseScrollEvent): Removed ViewGestureController bits.
        * UIProcess/gtk/ViewGestureControllerGtk.cpp:
        (WebKit::ViewGestureController::PendingSwipeTracker::scrollEventCanInfluenceSwipe):
        Allow events from touchscreen devices.
        (WebKit::isTouchEvent): Added.
        (WebKit::ViewGestureController::PendingSwipeTracker::scrollEventGetScrollingDeltas):
        Change delta multipliers.
        (WebKit::ViewGestureController::SwipeProgressTracker::handleEvent):
        Change delta multipliers, account for view width for touchscreen events.

2019-05-08  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] Add a quirk to synthesize mouse events when modifying the selection
        https://bugs.webkit.org/show_bug.cgi?id=197683
        <rdar://problem/48003980>

        Reviewed by Tim Horton.

        Introduces support for dispatching synthetic mouse events when modifying the selection on some websites. See
        below for more details.

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

        Instead of executing a "SelectAll" editing command using the generic WebPage::executeEditCommand method,
        introduce a separate method for selectAll that executes the "SelectAll" edit command and then does some
        platform-specific work. See platformDidSelectAll.

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView selectAllForWebView:]):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::selectAll):
        (WebKit::WebPage::shouldDispatchSyntheticMouseEventsWhenModifyingSelection const):

        Add a helper method to determine whether the quirk should be enabled.

        (WebKit::WebPage::platformDidSelectAll):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::elementRectInRootViewCoordinates):

        Move this function closer to the top of the file so that it can be used in
        dispatchSyntheticMouseEventsForSelectionGesture.

        (WebKit::WebPage::clearSelection):
        (WebKit::WebPage::dispatchSyntheticMouseEventsForSelectionGesture):

        Add a helper method to dispatch a synthetic mouse event for a given selection gesture type. Used in several
        places in WebPageIOS to synthesize and dispatch mouse events during selection.

        (WebKit::WebPage::updateSelectionWithTouches):

        When changing the selection with selection handles, fake mousedown when the user first touches down on the
        selection handle; mousemove as the user is moving the handle around; and finally, mouseup when the user lets go.

        (WebKit::WebPage::extendSelection):
        (WebKit::WebPage::platformDidSelectAll):

        When tapping "Select All" and/or "Select" in the callout menu, fake a mousedown at the selection start, then a
        mousemove at selection end, and finally, a mouseup at selection end.

        (WebKit::WebPage::getFocusedElementInformation):

2019-05-08  Alexander Mikhaylenko  <exalm7659@gmail.com>

        [GTK] Pinch Zooming has no maximum
        https://bugs.webkit.org/show_bug.cgi?id=194865

        Reviewed by Michael Catanzaro.

        Set maximum zoom to 3.0, reflecting the value on macOS and iOS.

        * UIProcess/gtk/GestureController.cpp:
        (WebKit::GestureController::ZoomGesture::scaleChanged):

2019-05-08  Rob Buis  <rbuis@igalia.com>

        Link prefetch not useful for top-level navigation
        https://bugs.webkit.org/show_bug.cgi?id=195623

        Reviewed by Youenn Fablet.

        Cache cross-domain top-level prefetches in a dedicated cache. When a navigation
        to the same url is done within a threshold (5 seconds), reuse the
        prefetch cache entry, move it to the disk cache and navigate to
        the url, meaning no extra network trip is needed. When not used within
        the threshold period, the prefetch entry will be erased using a timer.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::lowMemoryHandler):
        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::retrieveCacheEntry):
        (WebKit::NetworkResourceLoader::didReceiveResponse):
        (WebKit::NetworkResourceLoader::didReceiveBuffer):
        (WebKit::NetworkResourceLoader::tryStoreAsCacheEntry):
        (WebKit::NetworkResourceLoader::isCrossOriginPrefetch const):
        * NetworkProcess/NetworkResourceLoader.h:
        * NetworkProcess/NetworkSession.h:
        (WebKit::NetworkSession::prefetchCache):
        (WebKit::NetworkSession::clearPrefetchCache):
        * NetworkProcess/cache/PrefetchCache.cpp: Added.
        (WebKit::PrefetchCache::Entry::Entry):
        (WebKit::PrefetchCache::PrefetchCache):
        (WebKit::PrefetchCache::~PrefetchCache):
        (WebKit::PrefetchCache::clear):
        (WebKit::PrefetchCache::take):
        (WebKit::PrefetchCache::store):
        (WebKit::PrefetchCache::clearExpiredEntries):
        * NetworkProcess/cache/PrefetchCache.h: Added.
        (WebKit::PrefetchCache::Entry::releaseBuffer):
        * Shared/WebPreferences.yaml:
        * Sources.txt:
        * WebKit.xcodeproj/project.pbxproj:

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

        Simplify logic to prevent App Nap in WebPage
        https://bugs.webkit.org/show_bug.cgi?id=197674

        Reviewed by Geoff Garen.

        Simplify logic to prevent App Nap in WebPage. We do not need both m_userActivityHysteresis and
        m_userActivity since UserActivity is already a HysteresisActivity. We had 2 levels of
        HysteresisActivity stacked on top of one another. Also rename "process suppression" to "app nap" as
        I find it clearer.

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::updateThrottleState):
        (WebKit::WebPage::mouseEvent):
        (WebKit::WebPage::wheelEvent):
        (WebKit::WebPage::keyEvent):
        (WebKit::WebPage::updatePreferences):
        (WebKit::m_userActivityHysteresis): Deleted.
        (WebKit::WebPage::updateUserActivity): Deleted.
        * WebProcess/WebPage/WebPage.h:

2019-05-07  Carlos Garcia Campos  <cgarcia@igalia.com>

        REGRESSION(r244230): Web Automation: use null instead of empty string as success result of scripts when alert is open
        https://bugs.webkit.org/show_bug.cgi?id=197655

        Reviewed by Devin Rousso.

        This regressed in r244230, the case of an alert open while running a script is now handled in WebKit side, but
        an empty string is returned as a result, which is not a valid JSON serialized string. That made all user prompts
        tests to fail.

        * UIProcess/Automation/WebAutomationSession.cpp:
        (WebKit::WebAutomationSession::willShowJavaScriptDialog): Use null as script result instead of an empty string.

2019-05-07  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r245038.

        Breaks internal builds.

        Reverted changeset:

        "Add SPI to set a list of hosts to which to send custom header
        fields cross-origin"
        https://bugs.webkit.org/show_bug.cgi?id=197397
        https://trac.webkit.org/changeset/245038

2019-05-07  Jiewen Tan  <jiewen_tan@apple.com>

        [WebAuthN] A new request should always suppress the pending request if any
        https://bugs.webkit.org/show_bug.cgi?id=191517
        <rdar://problem/46888222>

        Reviewed by Brent Fulgham.

        Previously we blocked new WebAuthN requests whenever a pending request was in progress
        to prevent background tabs from DoS foreground tabs. However, in r244938, the WebAuthN
        API was changed to restrict request handling to the focused document. Therefore, we no
        longer have a risk of DoS.

        Apart from the vanished benefit, this behavoir actually blocks new pages to use
        WebAuthN API in the period between [the previous initating page is closed, the pending
        request is hanedled/timeout].

        Also, it makes sense to have the current focused document preempt the pending request.
        Therefore, the policy will be to always cancel any pending requests whenever a new
        request is made. This will enforce the policy of handling only one request at a time.

        Note that the current implementation doesn't explicitly cancel pending requests in the
        Authenticators, which means that we could receive responses from the Authenticator that
        were meant for a previous (now cancelled) request. A follow-up patch (see Bug 191523)
        will implement an Authenticator feature to support immediate cancellation.

        In the meantime, to protect the atomicity of the request/response pair, i.e., preventing an old
        response being used for a new request, there are two safeguards:
        1) In web process, each request to UI process is paired with an incremental ID, and therefore an old
        response from UI process would have a different ID than the current request, which will then be ignored.
        2) In UI process, all responses from authenticators will be piped to the main run loop for processing.
        Therefore, when the new request comes in, the old response is either processed or waiting in the pipe.
        To prevent the latter being processed, the new request will immediately destroy any authenticators bound
        to the old response in the current run loop. Hence, in the next run loop when dealing the old response,
        the lambda will have no where to hand the response over.

        * UIProcess/WebAuthentication/AuthenticatorManager.cpp:
        (WebKit::AuthenticatorManager::makeCredential):
        (WebKit::AuthenticatorManager::getAssertion):
        (WebKit::AuthenticatorManager::clearStateAsync):
        (WebKit::AuthenticatorManager::clearState):
        (WebKit::AuthenticatorManager::timeOutTimerFired):
        * UIProcess/WebAuthentication/AuthenticatorManager.h:
        * UIProcess/WebAuthentication/WebAuthenticatorCoordinatorProxy.cpp:
        (WebKit::WebAuthenticatorCoordinatorProxy::makeCredential):
        (WebKit::WebAuthenticatorCoordinatorProxy::getAssertion):
        (WebKit::WebAuthenticatorCoordinatorProxy::requestReply):
        * UIProcess/WebAuthentication/WebAuthenticatorCoordinatorProxy.h:
        * UIProcess/WebAuthentication/WebAuthenticatorCoordinatorProxy.messages.in:
        * WebProcess/WebAuthentication/WebAuthenticatorCoordinator.cpp:
        (WebKit::WebAuthenticatorCoordinator::makeCredential):
        (WebKit::WebAuthenticatorCoordinator::getAssertion):
        * WebProcess/WebAuthentication/WebAuthenticatorCoordinator.messages.in:

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

        [macOS] Crash with sandbox error
        https://bugs.webkit.org/show_bug.cgi?id=197675
        <rdar://problem/50473330>

        Reviewed by Geoffrey Garen.

        This crash is caused by missing syscall rules in the sandbox.

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

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

        Add SPI to set a list of hosts to which to send custom header fields cross-origin
        https://bugs.webkit.org/show_bug.cgi?id=197397

        Reviewed by Geoff Garen.

        * Shared/API/APIObject.h:
        * Shared/Cocoa/APIObject.mm:
        (API::Object::newObject):
        * Shared/WebsitePoliciesData.cpp:
        (WebKit::WebsitePoliciesData::decode):
        * Shared/WebsitePoliciesData.h:
        * SourcesCocoa.txt:
        * UIProcess/API/APICustomHeaderFields.h: Added.
        * UIProcess/API/APIWebsitePolicies.cpp:
        (API::WebsitePolicies::WebsitePolicies):
        (API::WebsitePolicies::copy const):
        (API::WebsitePolicies::data):
        * UIProcess/API/APIWebsitePolicies.h:
        * UIProcess/API/C/WKWebsitePolicies.cpp:
        (WKWebsitePoliciesCopyCustomHeaderFields):
        (WKWebsitePoliciesSetCustomHeaderFields):
        * UIProcess/API/Cocoa/WKWebpagePreferences.mm:
        (-[WKWebpagePreferences _customHeaderFields]):
        (-[WKWebpagePreferences _setCustomHeaderFields:]):
        * UIProcess/API/Cocoa/WKWebpagePreferencesPrivate.h:
        * UIProcess/API/Cocoa/_WKCustomHeaderFields.h: Added.
        * UIProcess/API/Cocoa/_WKCustomHeaderFields.mm: Added.
        (-[_WKCustomHeaderFields init]):
        (-[_WKCustomHeaderFields dealloc]):
        (-[_WKCustomHeaderFields fields]):
        (-[_WKCustomHeaderFields setFields:]):
        (-[_WKCustomHeaderFields thirdPartyDomains]):
        (-[_WKCustomHeaderFields setThirdPartyDomains:]):
        (-[_WKCustomHeaderFields _apiObject]):
        * UIProcess/API/Cocoa/_WKCustomHeaderFieldsInternal.h: Added.
        * UIProcess/API/Cocoa/_WKWebsitePolicies.h:
        * UIProcess/API/Cocoa/_WKWebsitePolicies.mm:
        (-[_WKWebsitePolicies customHeaderFields]): Deleted.
        (-[_WKWebsitePolicies setCustomHeaderFields:]): Deleted.
        * UIProcess/Cocoa/WebViewImpl.h:
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::takeFocus):
        (WebKit::WebViewImpl::accessibilityAttributeValue):
        * WebKit.xcodeproj/project.pbxproj:

2019-05-07  Adrian Perez de Castro  <aperez@igalia.com>

        [GTK][WPE] Cannot build documentation with gtk-doc
        https://bugs.webkit.org/show_bug.cgi?id=197663

        Reviewed by Philippe Normand.

        * UIProcess/API/glib/WebKitSettings.cpp:
        (webkit_settings_class_init): Escape content which gets wrongly interpreted as
        SGML tags by gtk-doc as Markdown preformatted content, which fits well for the
        tag names in the documentation for the WebKitSettings:enable-media property.

2019-05-07  John Wilander  <wilander@apple.com>

        Storage Access API: Make two changes requested by developers and complete refactoring and cleanup
        https://bugs.webkit.org/show_bug.cgi?id=197648
        <rdar://problem/50527493>

        Reviewed by Chris Dumez.

        Developers have requested two minor changes to the Storage Access API:
        - Only consume the user gesture when the user explicitly denies access.
        - Make document.hasStorageAccess() return true instead of false when the feature is off.

        In addition to this, we have refactoring and cleanup to do. Namely:
        - Make use of WebCore::RegistrableDomain all the way.
        - Remove dead code in WebKit::NetworkProcess since the calls now go through NetworkConnectionToWebProcess.
        - Introduce boolean enums for state handling.
        - Break out the Storage Access API functionality into a supplement of WebCore::Document.

        * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:
        (WebKit::ResourceLoadStatisticsDatabaseStore::insertDomainRelationships):
        (WebKit::ResourceLoadStatisticsDatabaseStore::requestStorageAccess):
        (WebKit::ResourceLoadStatisticsDatabaseStore::requestStorageAccessUnderOpener):
        (WebKit::ResourceLoadStatisticsDatabaseStore::grantStorageAccess):
        (WebKit::ResourceLoadStatisticsDatabaseStore::grantStorageAccessInternal):
        (WebKit::ResourceLoadStatisticsDatabaseStore::hasUserGrantedStorageAccessThroughPrompt const):
            These changes are due to the new enums WebCore::StorageAccessWasGranted and
            WebCore::StorageAccessPromptWasShown.
        * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h:
        * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp:
        (WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccess):
        (WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccessUnderOpener):
        (WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccess):
        (WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccessInternal):
        (WebKit::ResourceLoadStatisticsMemoryStore::hasUserGrantedStorageAccessThroughPrompt):
            These changes are due to the new enums WebCore::StorageAccessWasGranted and
            WebCore::StorageAccessPromptWasShown.
        * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.h:
        * NetworkProcess/Classifier/ResourceLoadStatisticsStore.h:
            These changes are due to the new enums WebCore::StorageAccessWasGranted and
            WebCore::StorageAccessPromptWasShown.
        * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::requestStorageAccess):
        (WebKit::WebResourceLoadStatisticsStore::grantStorageAccess):
        (WebKit::WebResourceLoadStatisticsStore::callGrantStorageAccessHandler):
            These changes are due to the new enums WebCore::StorageAccessWasGranted and
            WebCore::StorageAccessPromptWasShown.
        (WebKit::WebResourceLoadStatisticsStore::requestStorageAccessGranted): Deleted.
            This function is now no longer exposed and its functionality could be folded into
            the existing WebResourceLoadStatisticsStore::requestStorageAccess() which is more
            clearly named.
        * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h:
        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::hasStorageAccess):
        (WebKit::NetworkConnectionToWebProcess::requestStorageAccess):
            These changes are due to the new enums WebCore::StorageAccessWasGranted and
            WebCore::StorageAccessPromptWasShown.
        * NetworkProcess/NetworkConnectionToWebProcess.h:
        * NetworkProcess/NetworkConnectionToWebProcess.messages.in:
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::hasStorageAccessForFrame): Deleted.
        (WebKit::NetworkProcess::hasStorageAccess): Deleted.
        (WebKit::NetworkProcess::requestStorageAccess): Deleted.
        (WebKit::NetworkProcess::requestStorageAccessGranted): Deleted.
        (WebKit::NetworkProcess::grantStorageAccess): Deleted.
        (WebKit::NetworkProcess::removeAllStorageAccess): Deleted.
            These functions were left behind in the move of ITP to the network process.
            This communication goes through WebKit::NetworkConnectionToWebProcess since a while back.
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:
        * Scripts/webkit/messages.py:
            Instructions for derived IPC code on how to include the new enums
            WebCore::StorageAccessWasGranted and WebCore::StorageAccessPromptWasShown.
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::hasStorageAccessForFrame): Deleted.
        (WebKit::NetworkProcessProxy::hasStorageAccess): Deleted.
        (WebKit::NetworkProcessProxy::requestStorageAccess): Deleted.
        (WebKit::NetworkProcessProxy::grantStorageAccess): Deleted.
        (WebKit::NetworkProcessProxy::removeAllStorageAccess): Deleted.
            These functions were left behind in the move of ITP to the network process.
            This communication goes through WebKit::NetworkConnectionToWebProcess since a while back.
        * UIProcess/Network/NetworkProcessProxy.h:
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::hasStorageAccess): Deleted.
        (WebKit::WebsiteDataStore::requestStorageAccess): Deleted.
        (WebKit::WebsiteDataStore::grantStorageAccess): Deleted.
            These functions were left behind in the move of ITP to the network process.
            This communication goes through WebKit::NetworkConnectionToWebProcess since a while back.
        * UIProcess/WebsiteData/WebsiteDataStore.h:
        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::hasStorageAccess):
        (WebKit::WebChromeClient::requestStorageAccess):
            These changes are due to the new enums WebCore::StorageAccessWasGranted and
            WebCore::StorageAccessPromptWasShown. They also receive WebCore::RegistrableDomain
            objects instead of Strings now.
        * WebProcess/WebCoreSupport/WebChromeClient.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::hasStorageAccess):
        (WebKit::WebPage::requestStorageAccess):
            These changes are due to the new enums WebCore::StorageAccessWasGranted and
            WebCore::StorageAccessPromptWasShown. They also receive WebCore::RegistrableDomain
            objects instead of Strings now.
        * WebProcess/WebPage/WebPage.h:

2019-05-07  John Wilander  <wilander@apple.com>

        Change IsITPFirstPartyWebsiteDataRemovalEnabled from DEFAULT_EXPERIMENTAL_FEATURES_ENABLED to true.
        https://bugs.webkit.org/show_bug.cgi?id=197667
        <rdar://problem/50549288>

        Reviewed by Brent Fulgham.

        * Shared/WebPreferences.yaml:

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

        iOSMac Share Sheet shows up at the wrong place
        https://bugs.webkit.org/show_bug.cgi?id=197649
        <rdar://problem/49922942>

        Reviewed by Megan Gardner.

        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _showShareSheet:inRect:completionHandler:]):
        (-[WKContentView _hoverGestureRecognizerChanged:]):
        Pass the last mouse-over location as the presentation location for the 
        share sheet, if we don't have a rect to present from. Centering the popover
        like we do on iPad doesn't work so well (at all) with a macOS context menu.

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

        Rename ConnectionMac.mm to ConnectionCocoa.mm since it is used on both macOS and iOS
        https://bugs.webkit.org/show_bug.cgi?id=197661

        Reviewed by Alexey Proskuryakov.

        * Platform/IPC/cocoa/ConnectionCocoa.mm: Renamed from Source/WebKit/Platform/IPC/mac/ConnectionMac.mm.
        (IPC::ConnectionTerminationWatchdog::createConnectionTerminationWatchdog):
        (IPC::ConnectionTerminationWatchdog::ConnectionTerminationWatchdog):
        (IPC::ConnectionTerminationWatchdog::watchdogTimerFired):
        (IPC::Connection::platformInvalidate):
        (IPC::Connection::cancelReceiveSource):
        (IPC::Connection::terminateSoon):
        (IPC::Connection::platformInitialize):
        (IPC::Connection::open):
        (IPC::Connection::sendMessage):
        (IPC::Connection::platformCanSendOutgoingMessages const):
        (IPC::Connection::sendOutgoingMessage):
        (IPC::Connection::initializeSendSource):
        (IPC::Connection::resumeSendSource):
        (IPC::createMessageDecoder):
        (IPC::readFromMachPort):
        (IPC::Connection::receiveSourceEventHandler):
        (IPC::Connection::identifier const):
        (IPC::Connection::getAuditToken):
        (IPC::Connection::kill):
        (IPC::AccessibilityProcessSuspendedNotification):
        (IPC::Connection::willSendSyncMessage):
        (IPC::Connection::didReceiveSyncReply):
        (IPC::Connection::remoteProcessID const):
        * Platform/IPC/cocoa/ImportanceAssertion.h: Renamed from Source/WebKit/Platform/IPC/mac/ImportanceAssertion.h.
        (IPC::ImportanceAssertion::ImportanceAssertion):
        (IPC::ImportanceAssertion::~ImportanceAssertion):
        * Platform/IPC/cocoa/MachMessage.cpp: Renamed from Source/WebKit/Platform/IPC/mac/MachMessage.cpp.
        (IPC::MachMessage::create):
        (IPC::MachMessage::MachMessage):
        (IPC::MachMessage::~MachMessage):
        (IPC::MachMessage::messageSize):
        (IPC::MachMessage::leakDescriptors):
        * Platform/IPC/cocoa/MachMessage.h: Renamed from Source/WebKit/Platform/IPC/mac/MachMessage.h.
        (IPC::MachMessage::size const):
        (IPC::MachMessage::header):
        (IPC::MachMessage::messageReceiverName const):
        (IPC::MachMessage::messageName const):
        * Platform/IPC/cocoa/MachPort.h: Renamed from Source/WebKit/Platform/IPC/mac/MachPort.h.
        (IPC::MachPort::MachPort):
        (IPC::MachPort::encode const):
        (IPC::MachPort::decode):
        (IPC::MachPort::port const):
        (IPC::MachPort::disposition const):
        * PlatformMac.cmake:
        * SourcesCocoa.txt:
        * WebKit.xcodeproj/project.pbxproj:

2019-05-07  Antti Koivisto  <antti@apple.com>

        <body> with overflow:hidden shouldn't be keyboard scrollable on iOS
        https://bugs.webkit.org/show_bug.cgi?id=197659
        <rdar://problem/50541453>

        Reviewed by Antoine Quint.

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

        Disable also keyboard scrolling when touch scrolling is disabled.

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

        [macOS] Avoid crashing the UI process when writing empty data to the pasteboard
        https://bugs.webkit.org/show_bug.cgi?id=197644
        <rdar://problem/50526364>

        Reviewed by Tim Horton.

        Test: WebKit.WKWebProcessPlugInDoNotCrashWhenCopyingEmptyClientData

        * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
        (WebKit::WebPlatformStrategies::setBufferForType):

        Make this function robust by not attempting to create a shared memory buffer in the case where the given data
        buffer is empty.

2019-05-07  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Crash in webkitWebViewBaseSetEnableBackForwardNavigationGesture
        https://bugs.webkit.org/show_bug.cgi?id=197653

        Reviewed by Žan Doberšek.

        We still need to null-check the ViewGestureController there, since it can be called with a running process but
        not yet attached when using a related view.

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

2019-05-07  Antti Koivisto  <antti@apple.com>

        <body> with overflow:hidden CSS is scrollable on iOS
        https://bugs.webkit.org/show_bug.cgi?id=153852
        <rdar://problem/38715356>

        Reviewed by Antoine Quint.

        Disable touch scrolling of the main scroll view when <body> has overflow:hidden.

        This already works for subframes where we don't create a scrollview in the first place.
        The patch also adds a test for that.

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

        Update scrollability after scrolling tree commits.

        * UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.cpp:
        (WebKit::RemoteScrollingCoordinatorProxy::hasScrollableMainFrame const):

        Base the decision on root ScrollingTreeScrollingNode::canHaveScrollbars() which is computed from overflow.
        This matches Mac where wheel event dispatch is similarly blocked based on this property.

        * UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.h:

2019-05-06  James Savage  <james.savage@apple.com>

        Improve coordination for creating UIWindow instances.
        https://bugs.webkit.org/show_bug.cgi?id=197578.
        <rdar://problem/50456965>.

        Reviewed by Wenson Hsieh.

        * UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm:
        (makeWindowFromView): Pull out window creation.
        (-[WKFullScreenWindowController enterFullScreen]): Call new helper function.

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

        _overrideViewportWithArguments does not work when called before loading
        https://bugs.webkit.org/show_bug.cgi?id=197638
        <rdar://problem/50505111>

        Reviewed by Wenson Hsieh.

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

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

        ASSERT at WebKit::NetworkCache::makeSafeToUseMemoryMapForPath under Storage::StoreBodyAsBlob when running WebDriver tests
        https://bugs.webkit.org/show_bug.cgi?id=197635
        <rdar://problem/50473149>

        Reviewed by Geoffrey Garen.

        We need to make sure the the path at blobPathString exists before calling FileSystem::makeSafeToUseMemoryMapForPath().
        If the blob does not already exist when BlobStorage::add() is called, what will create it is the call to Data::mapToFile().

        * NetworkProcess/cache/NetworkCacheBlobStorage.cpp:
        (WebKit::NetworkCache::BlobStorage::add):

2019-05-06  Wenson Hsieh  <wenson_hsieh@apple.com>

        Occasional crashes in layout tests when firing the shrink-to-fit-content timer
        https://bugs.webkit.org/show_bug.cgi?id=197629
        <rdar://problem/50514382>

        Reviewed by Tim Horton.

        Fixes several crashing layout tests by stopping the shrink-to-fit-content timer when the page closes.

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

2019-05-04  Per Arne Vollan  <pvollan@apple.com>

        -[WKWebsiteDataStore removeDataOfTypes:forDataRecords:completionHandler:] doesn't delete _WKWebsiteDataTypeCredentials
        https://bugs.webkit.org/show_bug.cgi?id=197510

        Reviewed by Alex Christensen.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::fetchWebsiteData):
        (WebKit::NetworkProcess::deleteWebsiteDataForOrigins):
        (WebKit::NetworkProcess::registrableDomainsWithWebsiteData):

2019-05-06  Keith Rollin  <krollin@apple.com>

        Temporarily disable generate-xcfilelists
        https://bugs.webkit.org/show_bug.cgi?id=197619
        <rdar://problem/50507392>

        Reviewed by Alex Christensen.

        We need to perform a significant update to the generate-xcfilelist
        scripts. This work involves coordinated work with another facility. If
        the work does not occur in tandem, the build will be broken. To avoid
        this, disable the invoking of the scripts during the transition. The
        checking will be restored once the new scripts are in place.

        * Scripts/check-xcfilelists.sh:

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

        Unreviewed build fix after r244984.

        * WebProcess/cocoa/WebProcessCocoa.mm:

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

        Prewarmed WebContent processes never app nap
        https://bugs.webkit.org/show_bug.cgi?id=197630

        Reviewed by Geoffrey Garen.

        Do not require actually having a WebPage in the WebContent process to App Nap.

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::updateThrottleState):
        * WebProcess/cocoa/WebProcessCocoa.mm:
        (WebKit::WebProcess::platformInitializeWebProcess):

2019-05-06  Daniel Bates  <dabates@apple.com>

        Fix the build after r244975
        (https://bugs.webkit.org/show_bug.cgi?id=197474)

        Actually make use of the Keyboard Event when building with USE(UIKIT_KEYBOARD_ADDITIONS)
        and substitute -> for . since it's now passed by reference.

        * WebProcess/WebCoreSupport/ios/WebEditorClientIOS.mm:
        (WebKit::WebEditorClient::handleInputMethodKeydown):

2019-05-06  Jer Noble  <jer.noble@apple.com>

        Adopt AVStreamDataParser.audiovisualMIMETypes
        https://bugs.webkit.org/show_bug.cgi?id=197581
        <rdar://problem/50458981>

        Reviewed by Eric Carlson.

        * WebProcess/cocoa/WebProcessCocoa.mm:
        (WebKit::WebProcess::platformInitializeWebProcess):
        (WebKit::WebProcess::platformTerminate):
        (WebKit::WebProcess::setMediaMIMETypes):

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

        Terminate service workers that use too much CPU / power
        https://bugs.webkit.org/show_bug.cgi?id=197626
        <rdar://problem/50374707>

        Reviewed by Geoffrey Garen.

        Terminate service worker processes that use over 50% CPU on average over the last 8 minutes,
        similarly to what we do for background WebContent processes.

        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::didExceedCPULimit):
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::initializeProcess):
        * WebProcess/cocoa/WebProcessCocoa.mm:
        (WebKit::WebProcess::updateCPULimit):
        (WebKit::WebProcess::updateCPUMonitorState):

2019-05-06  Daniel Bates  <dabates@apple.com>

        Google Docs & Yahoo! Japan: Can’t compose characters with Chinese or Japanese keyboard
        https://bugs.webkit.org/show_bug.cgi?id=197474
        <rdar://problem/47219324>

        Reviewed by Ryosuke Niwa.

        Adopt UIKit SPI (added in <rdar://problem/50181162>) to ask the Input Manager to handle
        the key event. If the Input Manager handled it then we pass along this information to
        WebCore, just as we do for Mac, so that it can alter its event handling logic. Otherwise,
        we handle the event as we do now.

        A large part of this patch is fixing up #if defs to compile more Mac code when building
        on iOS.

        * Platform/spi/ios/UIKitSPI.h: Expose more SPI.
        * Shared/NativeWebKeyboardEvent.h:
        * Shared/WebEvent.h:
        * Shared/WebEventConversion.cpp:
        (WebKit::WebKit2PlatformKeyboardEvent::WebKit2PlatformKeyboardEvent):
        * Shared/WebKeyboardEvent.cpp:
        (WebKit::WebKeyboardEvent::WebKeyboardEvent):
        (WebKit::WebKeyboardEvent::encode const):
        (WebKit::WebKeyboardEvent::decode):
        * Shared/ios/NativeWebKeyboardEventIOS.mm:
        (WebKit::NativeWebKeyboardEvent::NativeWebKeyboardEvent):
        * Shared/ios/WebIOSEventFactory.h:
        * Shared/ios/WebIOSEventFactory.mm:
        (WebIOSEventFactory::createWebKeyboardEvent):
        Compile more Mac code on iOS. Just like on Mac we maintain some bookkeeping on
        whether an event was handled by the Input Manager.

        * UIProcess/Automation/ios/WebAutomationSessionIOS.mm:
        (WebKit::WebAutomationSession::sendSynthesizedEventsToPage): Pass NativeWebKeyboardEvent::HandledByInputMethod::No
        to keep the behavior we have now.

        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView cleanupInteraction]):
        (-[WKContentView shouldSuppressUpdateCandidateView]): Added. Used to tell UIKit whether to
        suppress updating/showing the candidate view.
        (-[WKContentView setMarkedText:selectedRange:]):
        Bookkeeping to track whether we need to delay showing/updating the inline candidate view.
        The concept in UIKit is deferment, but at the time of writing its simply a request to delay
        the update for 0.4 seconds. We opt into this delay only for the first key that begins
        marked text (i.e. the transition from no marked text to marked text). We do this because we
        may not have up-to-date editor state at the time UIKit is ready to show/update the inline
        candidate view for us to answer -textFirstRect and -textLastRect, which UIKit calls as part
        of computing the frame rect for the inline candidate view on screen. Once we receive up-to-date
        editor state, in -selectionChanged, we tell UIKit to layout the keyboard, which ultimately
        causes it to re-compute the frame rect for the inline candidate view and show it.

        (-[WKContentView handleKeyWebEvent:]): Pass NativeWebKeyboardEvent::HandledByInputMethod::No
        to keep the behavior we have now. 
        (-[WKContentView handleKeyWebEvent:withCompletionHandler:]): Ask the keyboard to handle the
        event using the Input Manager. If it was handled then there is no need to delay calling the
        completion handler, call it, then tell the web process about the key event and that it was
        already handled by the Input Manager.
        (-[WKContentView _selectionChanged]): Tell the keyboard to update the candidate view, if needed.
        * WebProcess/WebCoreSupport/ios/WebEditorClientIOS.mm:
        (WebKit::WebEditorClient::handleInputMethodKeydown): Mark the event as default handled if
        the UI process told us that the event was handled by the Input Manager just like we do on Mac.

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

        Null check m_mainFrame in WebPageProxy.cpp
        https://bugs.webkit.org/show_bug.cgi?id=197618
        <rdar://problem/47463054>

        Reviewed by Geoffrey Garen.

        It's already null checked in some places, and the places where it isn't are causing crashes.
        Let's fix all of them.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::decidePolicyForNavigationAction):
        (WebKit::WebPageProxy::decidePolicyForNewWindowAction):
        (WebKit::WebPageProxy::createNewPage):

2019-05-06  Brent Fulgham  <bfulgham@apple.com>

        Use more efficient path resolution logic
        https://bugs.webkit.org/show_bug.cgi?id=197389
        <rdar://problem/50268491>

        Reviewed by Maciej Stachowiak.

        The code in SandboxExtensionsCocoa.mm 'resolveSymlinksInPath' is pretty inefficient, and tries to reproduce (badly)
        logic that is already provided by the operating system.

        To make matters worse, 'resolvePathForSandboxExtension' was effectively performing the work of fully resolving
        symlinks twice, since NSString's 'stringByStandardizingPath' method does some of this already.

        Instead, we should just use NSString's 'stringByResolvingSymlinksInPath', which does the symlink resolution
        using more efficient logic than our 'resolveSymlinksInPath' code.

        * Shared/Cocoa/SandboxExtensionCocoa.mm:
        (WebKit::resolveSymlinksInPath): Removed.
        (WebKit::resolvePathForSandboxExtension): Remove redundant call to 'resolveSymlinksInPath', and switches from
        'stringByStandardizingPath' to 'stringByResolvingSymlinksInPath', which can take the place of both calls.
        (WebKit::stringByResolvingSymlinksInPath): Switch to call 'stringByResolvingSymlinksInPath'.

2019-05-06  Wenson Hsieh  <wenson_hsieh@apple.com>

        Introduce SPI to request modern compatibility mode but defer to site-specific quirks
        https://bugs.webkit.org/show_bug.cgi?id=197614
        <rdar://problem/50208577>

        Reviewed by Tim Horton.

        Add plumbing for a new _allowSiteSpecificQuirksToOverrideCompatibilityMode SPI property on
        WKWebpagePreferences.

        * UIProcess/API/APIWebsitePolicies.cpp:
        (API::WebsitePolicies::copy const):
        * UIProcess/API/APIWebsitePolicies.h:
        * UIProcess/API/Cocoa/WKWebpagePreferences.mm:
        (-[WKWebpagePreferences _allowSiteSpecificQuirksToOverrideCompatibilityMode]):
        (-[WKWebpagePreferences _setAllowSiteSpecificQuirksToOverrideCompatibilityMode:]):
        * UIProcess/API/Cocoa/WKWebpagePreferencesPrivate.h:
        * UIProcess/WebPageProxy.cpp:

        Use currentRequest instead of originalRequest; see internal change for more details.

        (WebKit::WebPageProxy::decidePolicyForNavigationAction):

2019-05-06  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r244917.

        Caused
        TestWebKitAPI.WKWebView.InitializingWebViewWithEphemeralStorageDoesNotLog
        failure on debug bots.

        Reverted changeset:

        "Use more efficient path resolution logic"
        https://bugs.webkit.org/show_bug.cgi?id=197389
        https://trac.webkit.org/changeset/244917

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

        Revert r244953 and r244954 because they broke internal builds.
        https://bugs.webkit.org/show_bug.cgi?id=197534

        * Platform/spi/ios/PDFKitSPI.h:
        * Platform/spi/ios/UIKitSPI.h: Added.
        (currentUserInterfaceIdiomIsPad):
        * Shared/DocumentEditingContext.mm:
        * Shared/RemoteLayerTree/RemoteLayerTreePropertyApplier.mm:
        * Shared/ios/NativeWebKeyboardEventIOS.mm:
        * Shared/ios/NativeWebTouchEventIOS.mm:
        * Shared/ios/WebIconUtilities.mm:
        * UIProcess/API/Cocoa/NSAttributedString.mm:
        * UIProcess/API/Cocoa/WKWebView.mm:
        * UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
        * UIProcess/API/Cocoa/WKWebViewInternal.h:
        * UIProcess/ApplicationStateTracker.mm:
        * UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:
        * UIProcess/Cocoa/WKSafeBrowsingWarning.mm:
        * UIProcess/Cocoa/WKShareSheet.mm:
        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        * UIProcess/Gamepad/ios/UIGamepadProviderIOS.mm:
        * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeHostIOS.mm:
        * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeViews.h:
        * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeViews.mm:
        * UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.mm:
        * UIProcess/WKImagePreviewViewController.mm:
        * UIProcess/_WKTouchEventGenerator.mm:
        * UIProcess/ios/DragDropInteractionState.h:
        * UIProcess/ios/InputViewUpdateDeferrer.mm:
        * UIProcess/ios/PageClientImplIOS.mm:
        * UIProcess/ios/SmartMagnificationController.mm:
        * UIProcess/ios/TextCheckerIOS.mm:
        * UIProcess/ios/ViewGestureControllerIOS.mm:
        * UIProcess/ios/WKActionSheet.mm:
        * UIProcess/ios/WKActionSheetAssistant.mm:
        * UIProcess/ios/WKContentView.mm:
        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        * UIProcess/ios/WKGeolocationProviderIOSObjCSecurityOrigin.mm:
        * UIProcess/ios/WKKeyboardScrollingAnimator.mm:
        * UIProcess/ios/WKPDFPageNumberIndicator.mm:
        * UIProcess/ios/WKPDFView.mm:
        * UIProcess/ios/WKPasswordView.mm:
        * UIProcess/ios/WKScrollView.h:
        * UIProcess/ios/WKScrollView.mm:
        * UIProcess/ios/WKSyntheticTapGestureRecognizer.h:
        * UIProcess/ios/WKWebEvent.mm:
        * UIProcess/ios/WebDataListSuggestionsDropdownIOS.h:
        * UIProcess/ios/WebPageProxyIOS.mm:
        * UIProcess/ios/forms/WKAirPlayRoutePicker.mm:
        * UIProcess/ios/forms/WKFileUploadPanel.mm:
        * UIProcess/ios/forms/WKFocusedFormControlView.h:
        * UIProcess/ios/forms/WKFormColorControl.mm:
        * UIProcess/ios/forms/WKFormColorPicker.mm:
        * UIProcess/ios/forms/WKFormInputControl.mm:
        * UIProcess/ios/forms/WKFormPopover.mm:
        * UIProcess/ios/forms/WKFormSelectControl.h:
        * UIProcess/ios/forms/WKFormSelectControl.mm:
        * UIProcess/ios/forms/WKFormSelectPicker.mm:
        * UIProcess/ios/forms/WKFormSelectPopover.mm:
        * UIProcess/ios/forms/WKNumberPadViewController.mm:
        * UIProcess/ios/forms/WKQuickboardListViewController.h:
        * UIProcess/ios/forms/WKSelectMenuListViewController.mm:
        * UIProcess/ios/fullscreen/WKFullScreenViewController.mm:
        * UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm:
        * UIProcess/ios/fullscreen/WKFullscreenStackView.mm:
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/WebCoreSupport/ios/WebChromeClientIOS.mm:
        * WebProcess/WebCoreSupport/mac/WebDragClientMac.mm:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        * WebProcess/cocoa/WebProcessCocoa.mm:

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

        Merge the three UIKitSPI.h files into a single one in PAL
        https://bugs.webkit.org/show_bug.cgi?id=197534

        Reviewed by Darin Adler.

        * Platform/spi/ios/PDFKitSPI.h:
        * Platform/spi/ios/UIKitSPI.h: Removed.
        * Shared/DocumentEditingContext.mm:
        * Shared/RemoteLayerTree/RemoteLayerTreePropertyApplier.mm:
        * Shared/ios/NativeWebKeyboardEventIOS.mm:
        * Shared/ios/NativeWebTouchEventIOS.mm:
        * Shared/ios/WebIconUtilities.mm:
        * UIProcess/API/Cocoa/NSAttributedString.mm:
        * UIProcess/API/Cocoa/WKWebView.mm:
        * UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
        * UIProcess/API/Cocoa/WKWebViewInternal.h:
        * UIProcess/ApplicationStateTracker.mm:
        * UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:
        * UIProcess/Cocoa/WKSafeBrowsingWarning.mm:
        * UIProcess/Cocoa/WKShareSheet.mm:
        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        * UIProcess/Gamepad/ios/UIGamepadProviderIOS.mm:
        * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeHostIOS.mm:
        * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeViews.h:
        * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeViews.mm:
        * UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.mm:
        * UIProcess/WKImagePreviewViewController.mm:
        * UIProcess/_WKTouchEventGenerator.mm:
        * UIProcess/ios/DragDropInteractionState.h:
        * UIProcess/ios/InputViewUpdateDeferrer.mm:
        * UIProcess/ios/PageClientImplIOS.mm:
        * UIProcess/ios/SmartMagnificationController.mm:
        * UIProcess/ios/TextCheckerIOS.mm:
        * UIProcess/ios/ViewGestureControllerIOS.mm:
        * UIProcess/ios/WKActionSheet.mm:
        * UIProcess/ios/WKActionSheetAssistant.mm:
        * UIProcess/ios/WKContentView.mm:
        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        * UIProcess/ios/WKGeolocationProviderIOSObjCSecurityOrigin.mm:
        * UIProcess/ios/WKKeyboardScrollingAnimator.mm:
        * UIProcess/ios/WKPDFPageNumberIndicator.mm:
        * UIProcess/ios/WKPDFView.mm:
        * UIProcess/ios/WKPasswordView.mm:
        * UIProcess/ios/WKScrollView.h:
        * UIProcess/ios/WKScrollView.mm:
        * UIProcess/ios/WKSyntheticTapGestureRecognizer.h:
        * UIProcess/ios/WKWebEvent.mm:
        * UIProcess/ios/WebDataListSuggestionsDropdownIOS.h:
        * UIProcess/ios/WebPageProxyIOS.mm:
        * UIProcess/ios/forms/WKAirPlayRoutePicker.mm:
        * UIProcess/ios/forms/WKFileUploadPanel.mm:
        * UIProcess/ios/forms/WKFocusedFormControlView.h:
        * UIProcess/ios/forms/WKFormColorControl.mm:
        * UIProcess/ios/forms/WKFormColorPicker.mm:
        * UIProcess/ios/forms/WKFormInputControl.mm:
        * UIProcess/ios/forms/WKFormPopover.mm:
        * UIProcess/ios/forms/WKFormSelectControl.h:
        * UIProcess/ios/forms/WKFormSelectControl.mm:
        * UIProcess/ios/forms/WKFormSelectPicker.mm:
        * UIProcess/ios/forms/WKFormSelectPopover.mm:
        * UIProcess/ios/forms/WKNumberPadViewController.mm:
        * UIProcess/ios/forms/WKQuickboardListViewController.h:
        * UIProcess/ios/forms/WKSelectMenuListViewController.mm:
        * UIProcess/ios/fullscreen/WKFullScreenViewController.mm:
        * UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm:
        * UIProcess/ios/fullscreen/WKFullscreenStackView.mm:
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/WebCoreSupport/ios/WebChromeClientIOS.mm:
        * WebProcess/WebCoreSupport/mac/WebDragClientMac.mm:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        * WebProcess/cocoa/WebProcessCocoa.mm:

2019-05-03  Wenson Hsieh  <wenson_hsieh@apple.com>

        REGRESSION (r244897): Caret may appear wider than normal after zooming to focus an editable element
        https://bugs.webkit.org/show_bug.cgi?id=197579

        Reviewed by Tim Horton.

        Fixes a couple of flaky tests (CaretSelectionRectAfterRestoringFirstResponderWithRetainActiveFocusedState and
        CaretSelectionRectAfterRestoringFirstResponder) that began failing after r244897. These tests both begin by
        focusing an editable element, which causes the web view to zoom in. The tests subsequently check that the caret
        rect is {{ 16, 13 }, { 2, 15 }}. While the specified caret rect (coming from EditorState) is {{ 16, 13 }, { 3,
        15 }}, the narrower caret rect is used because we take measures to preserve the width of the caret relative to
        the view (see the inverse scaling logic in -[WKContentView selectedTextRange] for more details).

        See below for more details.

        * UIProcess/ios/WKContentViewInteraction.h:

        Remove _isZoomingToRevealFocusedElement, now that we don't need it anymore (see -observeValueForKeyPath:).

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView cleanupInteraction]):
        (-[WKContentView observeValueForKeyPath:ofObject:change:context:]):

        Stop bailing from a selection update when changing scale, while zooming to reveal the focused element. This
        check was added in r239441 to prevent UIWKTextInteractionAssistant's selection scrolling logic from interfering
        with WKContentView-driven logic for zooming to the focused element. However, since r244141, this is no longer
        necessary since selection scrolling is only driven by code in the web process.

        This new update while zooming to reveal the focused element ensures that the WKTextRange returned by
        -selectedTextRange after zooming will have a width that is inversely scaled using the content view's current
        scale, such that it has a consistent width (relative to the web view) across different scales.

        (-[WKContentView _zoomToRevealFocusedElement]):
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::layerTreeCommitComplete):

        Remove any attempt here to notify PageClient about editor states after focus. This logic was actually incorrect,
        since it didn't ensure that the layer tree commit that is being completed actually contained an editor state; as
        such, the "editor state" received here could be stale.

2019-05-03  Zalan Bujtas  <zalan@apple.com>

        [iOS] outlook.live.com: Compose email frame not fully visible and not scrollable
        https://bugs.webkit.org/show_bug.cgi?id=197573
        <rdar://problem/48008441>

        Reviewed by Wenson Hsieh.

        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::adjustLayoutSizeIfNeeded):
        (WebKit::WebPage::setViewportConfigurationViewLayoutSize):
        (WebKit::WebPage::dynamicViewportSizeUpdate):
        (WebKit::WebPage::immediatelyShrinkToFitContent):

2019-05-03  Dean Jackson  <dino@apple.com>

        Make imageForElementActionType a class method on _WKElementAction
        https://bugs.webkit.org/show_bug.cgi?id=197588
        <rdar://problem/50463157>

        Reviewed by Wenson Hsieh.

        Make this helper function a class method, so that it can
        be more easily detected.

        * UIProcess/API/Cocoa/_WKElementAction.h:
        * UIProcess/API/Cocoa/_WKElementAction.mm:
        (+[_WKElementAction imageForElementActionType:]):
        (_WKUIImageForElementActionType): Deleted.

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

        Unresponsive Service Worker processes should get killed
        https://bugs.webkit.org/show_bug.cgi?id=197580
        <rdar://problem/50458239>

        Reviewed by Geoffrey Garen.

        Enable the background responsiveness logic for service worker processes so that they get
        killed if they becomes unresponsive. The logic was previously not enabling the timer for
        service worker processes because it required having a page.

        * UIProcess/BackgroundProcessResponsivenessTimer.cpp:
        (WebKit::BackgroundProcessResponsivenessTimer::shouldBeActive const):
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::didBecomeUnresponsive):
        (WebKit::WebProcessProxy::didFinishLaunching):

2019-05-03  Youenn Fablet  <youenn@apple.com>

        [iOS] set the default maximum camera count to 1 for enumerateDevices
        https://bugs.webkit.org/show_bug.cgi?id=197566

        Reviewed by Eric Carlson.

        The previous number for iOS was 2 as there is a front and a back camera.
        Since we are by default setting deviceIds to "", it is better to just have one,
        as it might confuse applications to have two devices with the same ID.

        Covered by updated test.

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

2019-05-03  Daniel Bates  <dabates@apple.com>

        Pass KeyboardEvent by reference in more places
        https://bugs.webkit.org/show_bug.cgi?id=197480

        Reviewed by Wenson Hsieh.

        * WebProcess/WebCoreSupport/WebEditorClient.cpp:
        (WebKit::WebEditorClient::handleKeyboardEvent):
        (WebKit::WebEditorClient::handleInputMethodKeydown):
        * WebProcess/WebCoreSupport/WebEditorClient.h:
        * WebProcess/WebCoreSupport/gtk/WebEditorClientGtk.cpp:
        (WebKit::WebEditorClient::handleKeyboardEvent):
        (WebKit::WebEditorClient::handleInputMethodKeydown):
        * WebProcess/WebCoreSupport/ios/WebEditorClientIOS.mm:
        (WebKit::WebEditorClient::handleKeyboardEvent):
        (WebKit::WebEditorClient::handleInputMethodKeydown):
        * WebProcess/WebCoreSupport/mac/WebEditorClientMac.mm:
        (WebKit::WebEditorClient::handleKeyboardEvent):
        (WebKit::WebEditorClient::handleInputMethodKeydown):
        * WebProcess/WebCoreSupport/wpe/WebEditorClientWPE.cpp:
        (WebKit::WebEditorClient::handleKeyboardEvent):
        (WebKit::WebEditorClient::handleInputMethodKeydown):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::handleEditingKeyboardEvent):
        * WebProcess/WebPage/mac/WebPageMac.mm:
        (WebKit::WebPage::handleEditingKeyboardEvent):
        * WebProcess/WebPage/win/WebPageWin.cpp:
        (WebKit::WebPage::handleEditingKeyboardEvent):

2019-05-03  Youenn Fablet  <youenn@apple.com>

        Enable Fetch Keep Alive by default
        https://bugs.webkit.org/show_bug.cgi?id=197331

        Reviewed by Geoffrey Garen.

        * Shared/WebPreferences.yaml:

2019-05-03  Devin Rousso  <drousso@apple.com>

        REGRESSION(r230367): a "." is prepended before cookies set without an explicit domain
        https://bugs.webkit.org/show_bug.cgi?id=197268
        <rdar://problem/49767847>

        Reviewed by Alex Christensen.

        RFC 2965 states "If an explicitly specified value does not start with a dot, the user agent
        supplies a leading dot.", so we should only be adding a leading "." if a `domain` is provided.

        In order to not regress r230367, also delete all cookies for the non-"."-prefixed domain.

        * UIProcess/Automation/WebAutomationSession.cpp:
        (WebKit::WebAutomationSession::addSingleCookie):
        (WebKit::WebAutomationSession::deleteAllCookies):

        * UIProcess/WebCookieManagerProxy.h:
        * UIProcess/WebCookieManagerProxy.cpp:
        (WebKit::WebCookieManagerProxy::deleteCookiesForHostnames): Added.
        (WebKit::WebCookieManagerProxy::deleteCookiesForHostname): Deleted.
        * UIProcess/API/C/WKCookieManager.cpp:
        (WKCookieManagerDeleteCookiesForHostname):
        * NetworkProcess/Cookies/WebCookieManager.messages.in:
        * NetworkProcess/Cookies/WebCookieManager.h:
        * NetworkProcess/Cookies/WebCookieManager.cpp:
        (WebKit::WebCookieManager::deleteCookiesForHostnames): Added.
        (WebKit::WebCookieManager::deleteCookiesForHostname): Deleted.
        Since the underlying `NetworkStorageSession` accepts a list of domains, extend that support
        to allow the IPC to send a list of domains as well, but still keep the C API the same.

2019-05-03  Sihui Liu  <sihui_liu@apple.com>

        Add assertion to check whether shm files have maximum FileProtection of CompleteUnlessOpen
        https://bugs.webkit.org/show_bug.cgi?id=197390
        <rdar://problem/42685773>

        Reviewed by Geoffrey Garen.

        Move data protection check to WebCore so it can be applied to database files.

        * NetworkProcess/cache/NetworkCacheBlobStorage.cpp:
        (WebKit::NetworkCache::BlobStorage::add):
        * NetworkProcess/cache/NetworkCacheFileSystem.cpp:
        (WebKit::NetworkCache::makeSafeToUseMemoryMapForPath): Deleted.
        * NetworkProcess/cache/NetworkCacheFileSystem.h:
        * NetworkProcess/cache/NetworkCacheFileSystemCocoa.mm: Removed.
        * SourcesCocoa.txt:
        * UIProcess/API/APIContentRuleListStore.cpp:
        (API::openAndMapOrCopyContentRuleList):
        (API::compiledToFile):

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

        ASSERTION FAILED: [weakThis->m_view window] == weakThis->m_targetWindowForMovePreparation
        https://bugs.webkit.org/show_bug.cgi?id=197574
        <rdar://problem/50453181>

        Reviewed by Tim Horton.

        Tweak the assertion so that it holds even if the WebView gets closed because the completion
        handler has been called.

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

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

        Use more efficient path resolution logic
        https://bugs.webkit.org/show_bug.cgi?id=197389
        <rdar://problem/50268491>

        Reviewed by Maciej Stachowiak.

        The code in SandboxExtensionsCocoa.mm 'resolveSymlinksInPath' is pretty inefficient, and tries to reproduce (badly)
        logic that is already provided by the operating system.

        To make matters worse, 'resolvePathForSandboxExtension' was effectively performing the work of fully resolving
        symlinks twice, since NSString's 'stringByStandardizingPath' method does some of this already.

        Instead, we should just use NSString's 'stringByResolvingSymlinksInPath', which does the symlink resolution
        using more efficient logic than our 'resolveSymlinksInPath' code.

        * Shared/Cocoa/SandboxExtensionCocoa.mm:
        (WebKit::resolveSymlinksInPath): Removed.
        (WebKit::resolvePathForSandboxExtension): Remove redundant call to 'resolveSymlinksInPath', and switches from
        'stringByStandardizingPath' to 'stringByResolvingSymlinksInPath', which can take the place of both calls.
        (WebKit::stringByResolvingSymlinksInPath): Switch to call 'stringByResolvingSymlinksInPath'.

2019-05-02  Dean Jackson  <dino@apple.com>

        Need additional UIPreviewAction information in WKImagePreviewViewController
        https://bugs.webkit.org/show_bug.cgi?id=197540
        <rdar://problem/50430510>

        Reviewed by Wenson Hsieh.

        Include a WebKitAdditions file to provide a macro for
        additional UIPreviewAction information.

        While here, take the opportunity to move from the deprecated
        UIViewControllerPreviewAction to the newer UIPreviewAction.

        * UIProcess/WKImagePreviewViewController.mm:
        (-[WKImagePreviewViewController previewActionItems]):

2019-05-02  Dean Jackson  <dino@apple.com>

        Provide UIImages for element actions
        https://bugs.webkit.org/show_bug.cgi?id=197539
        <rdar://problem/50430363>

        Reviewed by Wenson Hsieh.

        Use an additions include to export a function that
        relates a UIImage to a _WKElementAction.

        * UIProcess/API/Cocoa/_WKElementAction.h:
        * UIProcess/API/Cocoa/_WKElementAction.mm:
        (_WKUIImageForElementActionType):

2019-05-03  Jay Mulani  <jmulani@apple.com>

        Expose full screen controller SPI to check if full screen is open and close full screen
        https://bugs.webkit.org/show_bug.cgi?id=197263

        Reviewed by Jer Noble.

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

2019-05-03  Youenn Fablet  <youenn@apple.com>

        LayoutTest imported/w3c/web-platform-tests/xhr/event-upload-progress-crossorigin.htm is a flaky failure
        https://bugs.webkit.org/show_bug.cgi?id=182849
        <rdar://problem/50353372>

        Reviewed by Alex Christensen.

        In case of restarting the load after a redirection, which now happens in case
        of following cross origin redirections with same-origin credentials, make sure to
        update the request as would do NetworkLoad.
        This is in particular important to preserve the request body.

        Covered by WPT updated test.

        * NetworkProcess/NetworkLoad.cpp:
        (WebKit::updateRequest):
        (WebKit::NetworkLoad::updateRequestAfterRedirection const):
        (WebKit::NetworkLoad::continueWillSendRequest):
        * NetworkProcess/NetworkLoad.h:
        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::continueWillSendRequest):

2019-05-03  Commit Queue  <commit-queue@webkit.org>

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

        Breaks compilation of jsconly on linux, breaking compilation
        for jsc-i386-ews, jsc-mips-ews and jsc-armv7-ews (Requested by
        guijemont on #webkit).

        Reverted changeset:

        "[CMake] Refactor WEBKIT_MAKE_FORWARDING_HEADERS into
        WEBKIT_COPY_FILES"
        https://bugs.webkit.org/show_bug.cgi?id=197174
        https://trac.webkit.org/changeset/244881

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

        REGRESSION: Layout test editing/selection/ios/selection-after-changing-text-with-callout-menu.html is failing
        https://bugs.webkit.org/show_bug.cgi?id=197532
        <rdar://problem/50177144>

        Reviewed by Ryosuke Niwa.

        Fixes layout tests that began failing after r244546. See below for details.

        * UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm:
        (WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTree):

        Partially reverts a change in r244546, after which we commit the layer tree and scroll before updating the
        page's editor state. The purpose of this change was to ensure that UI process-side element focus scrolling logic
        would not conflict with web-process-driven scrolling logic.

        Instead, we split the existing logic in WebPageProxy::editorStateChanged into two pieces: one that updates the
        editor state (by setting m_editorState), and a second that dispatches updates to PageClient when the first
        editor state is received after focusing an element. During a layer tree commit in the UI process, we first
        update the editor state, then commit the layer tree and apply scroll position changes, and finally scroll to
        reveal the focused element if necessary.

        When an editor state is delivered to the UI process in an out-of-band update (i.e. not in a layer tree commit),
        simply dispatch the initial editor state for a focused element immediately.

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

        Add an IPC message to schedule an editor state update in the next remote layer tree commit. See below for more
        details.

        (WebKit::WebPageProxy::editorStateChanged):
        (WebKit::WebPageProxy::dispatchDidReceiveEditorStateAfterFocus):
        * UIProcess/WebPageProxy.h:
        * UIProcess/gtk/WebPageProxyGtk.cpp:
        (WebKit::WebPageProxy::updateEditorState):
        (WebKit::WebPageProxy::editorStateChanged): Deleted.
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView willFinishIgnoringCalloutBarFadeAfterPerformingAction]):

        Additionally ensure that an editor state update is scheduled. This addresses a potential source of flakiness in
        the layout test editing/selection/ios/selection-after-changing-text-with-callout-menu.html, where an editor
        state update may only be scheduled after the next layout timer fires (this is the case in custom callout menu
        actions that change the DOM but do not otherwise trigger any editing commands).

        In the problematic scenario, the client could make a change that triggers layout soon; but before the layout
        timer fires, the timer for the next remote layer tree commit could fire, such that the next layer tree commit
        would not contain the relevant editor state.

        This extra step ensures that we always *schedule* an editor state update when performing a callout menu action
        that does not automatically dismiss, so that we can prevent the callout bar from dismissing during the correct
        scope.

        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::layerTreeCommitComplete):
        (WebKit::WebPageProxy::updateEditorState):

        Rename editorStateChanged to updateEditorState, and make the editorStateChanged codepath only executed when an
        out-of-band editor state update is delivered to the UI process.

        (WebKit::WebPageProxy::dispatchDidReceiveEditorStateAfterFocus):

        Notify the UI process that the initial editor state has been received; this prompts us to scroll to reveal the
        focused element, if needed.

        (WebKit::WebPageProxy::editorStateChanged): Deleted.
        * UIProcess/mac/WebPageProxyMac.mm:
        (WebKit::WebPageProxy::updateEditorState):
        (WebKit::WebPageProxy::editorStateChanged): Deleted.
        * UIProcess/win/WebPageProxyWin.cpp:
        (WebKit::WebPageProxy::updateEditorState):
        (WebKit::WebPageProxy::editorStateChanged): Deleted.
        * UIProcess/wpe/WebPageProxyWPE.cpp:
        (WebKit::WebPageProxy::updateEditorState):
        (WebKit::WebPageProxy::editorStateChanged): Deleted.
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:

2019-05-02  Timothy Hatcher  <timothy@apple.com>

        NSAttributedString conversion in a loop returns nil and WKUnknownError every other time.
        https://bugs.webkit.org/show_bug.cgi?id=197523

        Reviewed by Darin Adler.

        Caching the WKWebView was loading about:blank to unload the previous content.
        This was causing subsequent rapid conversions to fail since the blank load
        would be confused with the real content loading. Loading a blank page wasn't
        really needed, it just helped keep the cached view in a cleaner state. Instead
        of adding complexity to track the extra navigation, we can eliminate the blank load.
        Ultimately a process swap will likely happen on the next navigation, and unused
        cached views are closed quickly -- so stale content isn't held around too long.
        This also avoids extra work and speeds up conversions a bit.

        * UIProcess/API/Cocoa/NSAttributedString.mm:
        (+[_WKAttributedStringWebViewCache cacheWebView:]): Don't load about:blank when caching.
        * WebProcess/WebPage/Cocoa/WebPageCocoa.mm:
        (WebKit::WebPage::getContentsAsAttributedString): Use rangeOfContents() for a fail
        safe way to get the range needed.

2019-05-02  John Wilander  <wilander@apple.com>

        Make both filterForRegistrableDomains() in WebKit::NetworkProcess use WebCore::RegistrableDomain::uncheckedCreateFromHost()
        https://bugs.webkit.org/show_bug.cgi?id=197521
        <rdar://problem/49651503>

        Reviewed by Brent Fulgham.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::filterForRegistrableDomains):

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

        -[WKWebsiteDataStore removeDataOfTypes:forDataRecords:completionHandler:] doesn't delete _WKWebsiteDataTypeCredentials
        https://bugs.webkit.org/show_bug.cgi?id=197510
        <rdar://problem/50372338>

        Reviewed by Alex Christensen.

        When asked to delete persistent credentials for a set of origins, send a message to the network process with the
        list of origins. The network process will then delete all persistent credentials from these origins from
        NSURLCredentialStorage.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::removeCredentialsWithOrigins):
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:
        * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
        (WebKit::NetworkProcess::removeCredentialsWithOrigins):
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::removeData):

2019-05-02  Don Olmstead  <don.olmstead@sony.com>

        [CMake] Refactor WEBKIT_MAKE_FORWARDING_HEADERS into WEBKIT_COPY_FILES
        https://bugs.webkit.org/show_bug.cgi?id=197174

        Reviewed by Alex Christensen.

        Replace WEBKIT_MAKE_FORWARDING_HEADERS with WEBKIT_COPY_FILES and make dependencies
        for framework headers explicit.

        * CMakeLists.txt:
        * PlatformWin.cmake:

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

        [macOS] Fix syscall sandbox violation
        https://bugs.webkit.org/show_bug.cgi?id=197517
        <rdar://problem/49945031>

        Reviewed by Brent Fulgham.

        A syscall needs to be added to the sandbox on macOS.

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

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

        Safe browsing warning should update colors when a user switches between light and dark appearance
        https://bugs.webkit.org/show_bug.cgi?id=197443
        <rdar://problem/49883917>

        Reviewed by Tim Horton.

        We draw the WKSafeBrowsingExclamationPoint ourselves, so we need to call setNeedsDisplay when viewDidChangeEffectiveAppearance is called.
        Instead of setting NSView.layer.backgroundColor we need to make an NSView subclass I call WKSafeBrowsingBox and we need to set its layer's
        backgroundColor in updateLayer, otherwise the CGColor isn't updated from the NSColor.

        * UIProcess/Cocoa/WKSafeBrowsingWarning.h:
        * UIProcess/Cocoa/WKSafeBrowsingWarning.mm:
        (colorForItem):
        (-[WKSafeBrowsingExclamationPoint viewDidChangeEffectiveAppearance]):
        (-[WKSafeBrowsingBox setSafeBrowsingBackgroundColor:]):
        (-[WKSafeBrowsingBox updateLayer]):
        (-[WKSafeBrowsingWarning initWithFrame:safeBrowsingWarning:completionHandler:]):
        (-[WKSafeBrowsingWarning addContent]):
        (-[WKSafeBrowsingWarning showDetailsClicked]):
        (setBackground): Deleted.

2019-05-02  Frederic Wang  <fwang@igalia.com>

        [GTK][WPE] Disable "thin", "thick", "medium" values of mfrac@linethickness at runtime
        https://bugs.webkit.org/show_bug.cgi?id=196142

        This patch introduces some experimental runtime flag to let users
        disable MathML features that are removed from MathML Core [1]. For now,
        these features are only disabled on GTK and WPE ports.

        [1] https://mathml-refresh.github.io/mathml-core/

        Reviewed by Rob Buis.

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

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

        Add the ability to import WebKitAdditions snippets in WebKit.apinotes
        https://bugs.webkit.org/show_bug.cgi?id=197487
        <rdar://problem/50389085>

        Reviewed by Tim Horton.

        * Shared/API/Cocoa/WebKit.apinotes: Import a new WebKitAdditions file.

        * WebKit.xcodeproj/project.pbxproj: Check all files in Headers/ and PrivateHeaders/ that need replacement, not
        simply anything ending with ".h".

        * mac/replace-webkit-additions-includes.py:
        (main): Teach the replacement script to handle files in Headers/ or PrivateHeaders/ that don't end in ".h".

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

        Protect against null crash in fetchDiskCacheEntries
        https://bugs.webkit.org/show_bug.cgi?id=197399
        <rdar://problem/47759337>

        Reviewed by Antti Koivisto.

        If the call to Entry::decodeStorageRecord returns nullptr in Storage::traverse, do not call the traverseHandler, which expects
        that when it is called with nullptr that is the end of the traversal.

        * NetworkProcess/cache/NetworkCache.cpp:
        (WebKit::NetworkCache::Cache::traverse):

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

        [iOS] Add a version of viewport shrink-to-fit heuristics that preserves page layout
        https://bugs.webkit.org/show_bug.cgi?id=197342
        <rdar://problem/50063091>

        Reviewed by Tim Horton.

        This patch introduces a new shrink-to-fit heuristic that attempts to lay out the contents of the page at a
        larger width in order to shrink content to fit the viewport. This is similar to existing shrink-to-fit behaviors
        used for viewport sizing in multitasking mode, except that it not only scales the view, but additionally expands
        the layout size, such that the overall layout of the page is preserved. In fact, the reason we ended up
        reverting the existing flavor of shrink-to-fit in all cases except for multitasking was that page layout was not
        preserved, which caused elements that poke out of the viewport to make the rest of the page look out of
        proportion — see <rdar://problem/23818102> and related radars.

        Covered by 5 new layout tests, and by adjusting a couple of existing layout tests. See comments below for more
        details.

        * Platform/Logging.h:

        Add a new ViewportSizing logging channel. This will only log on pages that overflow the viewport and shrink to
        fit as a result.

        * Shared/WebPreferences.yaml:

        Turn IgnoreViewportScalingConstraints off by default. This preference currently controls whether we allow
        shrink-to-fit behaviors, and is only used by Safari when it is in multitasking mode. The value of this
        preference is currenly *on* by default, and is turned off almost immediately during every page load after the
        first visible content rect update, wherein visibleContentRectUpdateInfo.allowShrinkToFit() is false.

        However, this sometimes causes a brief jitter during page load; to fix this, make the default value for
        IgnoreViewportScalingConstraints false, and change the logic in WebPage::updateVisibleContentRects to
        setCanIgnoreScalingConstraints to true if either the IgnoreViewportScalingConstraints preference (not only
        affected by an internal debug switch) is true, or WKWebView SPI is used to enable the behavior.

        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDidFinishDocumentLoad):
        (WebKit::WebFrameLoaderClient::dispatchDidFinishLoad):

        Add a new hook for WebFrameLoaderClient to call into WebPage when document load finishes. Also, tweak
        dispatchDidFinishLoad to take a WebFrame& instead of a WebFrame* in a drive-by fix (the frame is assumed to be
        non-null anyways).

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::didCommitLoad):
        (WebKit::WebPage::didFinishDocumentLoad):
        (WebKit::WebPage::didFinishLoad):

        When finishing document load or finishing the overall load, kick off the shrink-to-fit timer; when committing a
        load, cancel the timer.

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

        Don't allow the minimum effective device width from the client to stomp over any minimum effective device width
        set as a result of the new shrink-to-fit heuristic; on some pages that load quickly, this can result in a race
        where the minimum effective device width (i.e. a value that lower-bounds the minimum layout width) is first set
        by the shrink-to-fit heuristic, and then set to an incorrect value by the client.

        In the near future, web view SPI used to set the minimum effective device width should actually be removed
        altogether, since the new shrink-to-fit heuristic supersedes any need for the client to fiddle with the minimum
        effective device width.

        (WebKit::WebPage::dynamicViewportSizeUpdate):

        When performing a dynamic viewport size update, additionally re-run the shrink-to-fit heuristic. This allows
        the minimum layout size of the viewport to be updated, if necessary. An example of where this matters is when a
        web page is *below* a tablet/desktop layout breakpoint in portrait device orientation, but then exceeds this
        layout breakpoint in landscape orientation. In this scenario, rotating the device should swap between these two
        page layouts.

        (WebKit::WebPage::resetViewportDefaultConfiguration):
        (WebKit::WebPage::scheduleShrinkToFitContent):
        (WebKit::WebPage::shrinkToFitContentTimerFired):
        (WebKit::WebPage::immediatelyShrinkToFitContent):

        Leverage the existing capability for a viewport to have a "minimum effective device width" to grant the viewport
        a larger layout size than it would normally have, and then scale down to fit within the bounds of the view. One
        challenge with this overall approach is that laying out at a larger width may cause the page to lay out even
        wider in response, which may actually worsen horizontal scrolling. To mitigate this, we only attempt to lay out
        at the current content width once; if laying out at this width reduced the amount of horizontal scrolling by any
        amount, then proceed with this layout width; otherwise, revert to the previous layout width.

        (WebKit::WebPage::shouldIgnoreMetaViewport const):

        Pull some common logic out into a readonly getter.

        (WebKit::WebPage::updateVisibleContentRects):

        See the comment below WebPreferences.yaml, above.

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

        Link Previews that use WKImagePreviewViewController are not always scaled correctly
        https://bugs.webkit.org/show_bug.cgi?id=197450
        <rdar://problem/50357695>

        Reviewed by Wenson Hsieh.

        Tell the UIImageView that we create in WKImagePreviewViewController to use
        a filling scaling method.

        * UIProcess/WKImagePreviewViewController.mm:
        (-[WKImagePreviewViewController initWithCGImage:defaultActions:elementInfo:]):

2019-05-01  Darin Adler  <darin@apple.com>

        WebKit has too much of its own UTF-8 code and should rely more on ICU's UTF-8 support
        https://bugs.webkit.org/show_bug.cgi?id=195535

        Reviewed by Alexey Proskuryakov.

        * Shared/API/APIString.h: Removed uneeded includes and also switched to #pragma once.

        * Shared/API/c/WKString.cpp: Moved include of UTF8Conversion.h here.
        (WKStringGetUTF8CStringImpl): Updated for changes to return values.

2019-05-01  Shawn Roberts  <sroberts@apple.com>

        Unreviewed, rolling out r244821.

        Causing

        Reverted changeset:

        "WebKit has too much of its own UTF-8 code and should rely
        more on ICU's UTF-8 support"
        https://bugs.webkit.org/show_bug.cgi?id=195535
        https://trac.webkit.org/changeset/244821

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

        Kept alive loaders should use the redirected request in case of redirections
        https://bugs.webkit.org/show_bug.cgi?id=197337

        Reviewed by Alex Christensen.

        Instead of using the request, the redirected request should be used in case of redirection.

        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::m_shouldCaptureExtraNetworkLoadMetrics):
        (WebKit::NetworkResourceLoader::continueWillSendRedirectedRequest):

2019-04-29  Darin Adler  <darin@apple.com>

        WebKit has too much of its own UTF-8 code and should rely more on ICU's UTF-8 support
        https://bugs.webkit.org/show_bug.cgi?id=195535

        Reviewed by Alexey Proskuryakov.

        * Shared/API/APIString.h: Removed uneeded includes and also switched to #pragma once.

        * Shared/API/c/WKString.cpp: Moved include of UTF8Conversion.h here.
        (WKStringGetUTF8CStringImpl): Updated for changes to return values.

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

        Regression(PSON) URL scheme handlers can no longer respond asynchronously
        https://bugs.webkit.org/show_bug.cgi?id=197426
        <rdar://problem/50256169>

        Reviewed by Brady Eidson.

        The issue was that when committing the provisional process, we would call WebPageProxy::processDidTerminate()
        which would call WebPageProxy::stopAllURLSchemeTasks(). This would terminate all URL scheme tasks associated
        with the page, including the one associated with the provisisional page / process.

        To address the issue, pass m_process to stopAllURLSchemeTasks() in processDidTerminate() and only stop the
        tasks associated with the m_process (which is the process we're about to swap away from).

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::processDidTerminate):
        (WebKit::WebPageProxy::stopAllURLSchemeTasks):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebURLSchemeHandler.cpp:
        (WebKit::WebURLSchemeHandler::processForTaskIdentifier):
        (WebKit::WebURLSchemeHandler::stopAllTasksForPage):
        * UIProcess/WebURLSchemeHandler.h:
        * UIProcess/WebURLSchemeTask.h:
        (WebKit::WebURLSchemeTask::process const):

2019-04-30  John Wilander  <wilander@apple.com>

        Add logging of Ad Click Attribution errors and events to a dedicated channel
        https://bugs.webkit.org/show_bug.cgi?id=197332
        <rdar://problem/49918800>

        Reviewed by Youenn Fablet.

        This patch adds an experimental Ad Click Attribution debug mode which
        logs information. Most changes are just log output in the various
        functions in WebKit::AdClickAttributionManager.

        The constructor to WebKit::AdClickAttributionManager now takes a
        PAL::SessionID so that the log functions can make sure they don't
        output anything in ephemeral sessions.

        WebProcessPool::platformInitializeNetworkProcess() now picks up the
        debug mode setting from the incoming
        WebKit::NetworkProcessCreationParameters object.

        NetworkResourceLoader::handleAdClickAttributionConversion() was
        moved to AdClickAttributionManager::handleConversion() to keep all
        the logging in one file.

        * NetworkProcess/AdClickAttributionManager.cpp:
        (WebKit::AdClickAttributionManager::storeUnconverted):
        (WebKit::AdClickAttributionManager::handleConversion):
        (WebKit::AdClickAttributionManager::convert):
        (WebKit::AdClickAttributionManager::fireConversionRequest):
        (WebKit::AdClickAttributionManager::firePendingConversionRequests):
        (WebKit::AdClickAttributionManager::clearExpired):
        (WebKit::AdClickAttributionManager::debugModeEnabled const):
        * NetworkProcess/AdClickAttributionManager.h:
        (WebKit::AdClickAttributionManager::AdClickAttributionManager):
        (WebKit::AdClickAttributionManager::m_sessionID):
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::initializeNetworkProcess):
        * NetworkProcess/NetworkProcessCreationParameters.cpp:
        (WebKit::NetworkProcessCreationParameters::encode const):
        (WebKit::NetworkProcessCreationParameters::decode):
        * NetworkProcess/NetworkProcessCreationParameters.h:
        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::continueWillSendRedirectedRequest):
        (WebKit::NetworkResourceLoader::handleAdClickAttributionConversion): Deleted.
        * NetworkProcess/NetworkSession.cpp:
        (WebKit::NetworkSession::NetworkSession):
        (WebKit::NetworkSession::handleAdClickAttributionConversion):
        (WebKit::NetworkSession::convertAdClickAttribution): Deleted.
        * NetworkProcess/NetworkSession.h:
        * Platform/Logging.h:
        * Shared/WebPreferences.yaml:
        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        (WebKit::WebProcessPool::platformInitializeNetworkProcess):

2019-04-30  Devin Rousso  <drousso@apple.com>

        Crash when running test wpt/tests/element_click/bubbling.py::test_element_disappears_during_click
        https://bugs.webkit.org/show_bug.cgi?id=197361
        <rdar://problem/49861407>

        Reviewed by Brian Burg.

        Don't assume that all elements have client rects (e.g. `getClientRects`). If the container
        element isn't visible, then the child won't be either.

        * UIProcess/Automation/SimulatedInputDispatcher.cpp:
        (WebKit::SimulatedInputDispatcher::resolveLocation):
        (WebKit::SimulatedInputDispatcher::transitionInputSourceToState):
        * UIProcess/Automation/WebAutomationSession.cpp:
        (WebKit::WebAutomationSession::viewportInViewCenterPointOfElement):

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

        Unreviewed, rolling out r244802.

        Caused an API test failure

        Reverted changeset:

        "Regression(PSON) URL scheme handlers can no longer respond
        asynchronously"
        https://bugs.webkit.org/show_bug.cgi?id=197426
        https://trac.webkit.org/changeset/244802

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

        Regression(PSON) URL scheme handlers can no longer respond asynchronously
        https://bugs.webkit.org/show_bug.cgi?id=197426
        <rdar://problem/50256169>

        Reviewed by Brady Eidson.

        The issue was that when committing the provisional process, we would call WebPageProxy::processDidTerminate()
        which would call WebPageProxy::stopAllURLSchemeTasks(). This would terminate all URL scheme tasks associated
        with the page, including the one associated with the provisisional page / process.

        To address the issue, pass m_process to stopAllURLSchemeTasks() in processDidTerminate() and only stop the
        tasks associated with the m_process (which is the process we're about to swap away from).

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::processDidTerminate):
        (WebKit::WebPageProxy::stopAllURLSchemeTasks):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebURLSchemeHandler.cpp:
        (WebKit::WebURLSchemeHandler::processForTaskIdentifier):
        (WebKit::WebURLSchemeHandler::stopAllTasksForPage):
        * UIProcess/WebURLSchemeHandler.h:
        * UIProcess/WebURLSchemeTask.h:
        (WebKit::WebURLSchemeTask::process const):

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

        Only use a related page's process if that page has not been closed yet
        https://bugs.webkit.org/show_bug.cgi?id=197393
        <rdar://problem/50302423>

        Reviewed by Tim Horton.

        We should not attempt to use a related page's process if that related page has already been closed.
        Once closed, a page's process is invalid and trying to launch a new process for the closed page
        leads to crashes such as the one in the radar.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::launchProcess):
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::createWebPage):

2019-04-30  Tim Horton  <timothy_horton@apple.com>

        Long-standing rare crash under -[WKWebView _web_immediateActionAnimationControllerForHitTestResultInternal...]
        https://bugs.webkit.org/show_bug.cgi?id=197404
        <rdar://problem/24589331>

        Reviewed by Wenson Hsieh.

        * UIProcess/mac/WKImmediateActionController.mm:
        (-[WKImmediateActionController _updateImmediateActionItem]):
        (-[WKImmediateActionController menuItem:previewItemAtPoint:]):
        (-[WKImmediateActionController menuItem:itemFrameForPoint:]):
        (-[WKImmediateActionController _animationControllerForDataDetectedLink]):
        Add some null checks; _webHitTestResult can be null if we (somehow) get
        an immediate action gesture without having previously gotten a
        mouseDidMoveOverElement from the Web Content process. Cover all our bases.

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

        [iOS] Fix crash caused by sandbox violation
        https://bugs.webkit.org/show_bug.cgi?id=197416
        <rdar://problem/50266257>

        Reviewed by Brent Fulgham.

        Add syscall to the iOS sandbox.

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

2019-04-30  Zalan Bujtas  <zalan@apple.com>

        [iOS] Double-tapping a post to like doesn't work on Instagram.com (needs 'dblclick' event)
        https://bugs.webkit.org/show_bug.cgi?id=197347
        <rdar://problem/49393423>

        Reviewed by Wenson Hsieh.

        This patch adds support for dispatching dblclick event as the result of the double tap gesture.

        1. The new double tap gesture recognizer always fires regardless of what type of action the other, existing double gesture recognizers (double-tap to zoom) trigger.
        2. The dblclick event is dispatched on the node with registered dblclick event handler unless the node prohibits double tap gesture (touch-action != auto).

        * UIProcess/WebPageProxy.h:
        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView setupInteraction]):
        (-[WKContentView cleanupInteraction]):
        (-[WKContentView _removeDefaultGestureRecognizers]):
        (-[WKContentView _addDefaultGestureRecognizers]):
        (-[WKContentView gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:]):
        (-[WKContentView gestureRecognizerShouldBegin:]):
        (-[WKContentView _doubleTapRecognizedForDoubleClick:]):
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::handleDoubleTapForDoubleClickAtPoint):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::handleDoubleTapForDoubleClickAtPoint):

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

        Tighten type of ScrollingTree:rootNode() to ScrollingTreeFrameScrollingNode
        https://bugs.webkit.org/show_bug.cgi?id=197414

        Reviewed by Frédéric Wang.

        * UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.cpp:

2019-04-30  Carlos Garcia Campos  <cgarcia@igalia.com>

        REGRESSION(r244750): [GTK][WPE] Network process is crashing in all layout tests
        https://bugs.webkit.org/show_bug.cgi?id=197406

        Reviewed by Žan Doberšek.

        Do not trasnfer ownership of cachePath to traverseDirectory() lambda, since it's passed also as first argument
        and it can be passed as a reference.

        * NetworkProcess/cache/NetworkCacheStorage.cpp:
        (WebKit::NetworkCache::Storage::deleteOldVersions):

2019-04-29  Truitt Savell  <tsavell@apple.com>

        Unreviewed, rolling out r244755.

        Casued several test failures on iOS

        Reverted changeset:

        "Double-tapping a post to like doesn't work on Instagram.com
        (needs 'dblclick' event)"
        https://bugs.webkit.org/show_bug.cgi?id=197347
        https://trac.webkit.org/changeset/244755

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

        [iOS] The UIProcess may get killed for trying to stay runnable in the background for more than 30 seconds
        https://bugs.webkit.org/show_bug.cgi?id=197385
        <rdar://problem/50001505>

        Reviewed by Geoffrey Garen.

        If the UIProcess holds a background assertion for itself for 30 seconds, the assertion's invalidation handler
        will get called and it is our responsibility to release this assertion or the UIProcess will get killed by the
        system. The logic in ProcessAssertion would normally do that but it would also happily try and re-take another
        background process assertion shortly after the previous one expired (and before the UIProcess got suspended).
        When doing so, the new background assertion would expire right away and we would get killed without its
        invalidation handler getting called.

        To address the issue, the logic in ProcessAssertion will now prevent taking a new background assertion after
        one expires and until the application becomes foreground again.

        * UIProcess/ios/ProcessAssertionIOS.mm:
        (-[WKProcessAssertionBackgroundTaskManager init]):
        (-[WKProcessAssertionBackgroundTaskManager _updateBackgroundTask]):

2019-04-29  Alex Christensen  <achristensen@webkit.org>

        <rdar://problem/50299396> Fix internal High Sierra build
        https://bugs.webkit.org/show_bug.cgi?id=197388

        * Configurations/Base.xcconfig:

2019-04-29  Zalan Bujtas  <zalan@apple.com>

        [iOS] Double-tapping a post to like doesn't work on Instagram.com (needs 'dblclick' event)
        https://bugs.webkit.org/show_bug.cgi?id=197347
        <rdar://problem/49393423>

        Reviewed by Wenson Hsieh.

        This patch adds support for dispatching dblclick event as the result of the double tap gesture.

        1. The new double tap gesture recognizer always fires regardless of what type of action the other, existing double gesture recognizers (double-tap to zoom) trigger.
        2. The dblclick event is dispatched on the node with registered dblclick event handler unless the node prohibits double tap gesture (touch-action != auto).

        * UIProcess/WebPageProxy.h:
        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView setupInteraction]):
        (-[WKContentView cleanupInteraction]):
        (-[WKContentView _removeDefaultGestureRecognizers]):
        (-[WKContentView _addDefaultGestureRecognizers]):
        (-[WKContentView gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:]):
        (-[WKContentView gestureRecognizerShouldBegin:]):
        (-[WKContentView _doubleTapRecognizedForDoubleClick:]):
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::handleDoubleTapForDoubleClickAtPoint):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::handleDoubleTapForDoubleClickAtPoint):

2019-04-29  Tim Horton  <timothy_horton@apple.com>

        REGRESSION (r244142): Fandango accounts tab crashes under Color()
        https://bugs.webkit.org/show_bug.cgi?id=197380
        <rdar://problem/50186175>

        Reviewed by Megan Gardner.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (baseScrollViewBackgroundColor):
        We now call -_updateScrollViewBackground from -setBackgroundColor:.
        -setBackgroundColor: can be called from -[UIView initWithCoder:]; if it
        is, WKWebView's _page is not yet initialized, so we crash. Return an invalid color.
        Then, the caller falls back to WKContentView's backgroundColor. But WKContentView
        isn't initialized yet either. So add a further fallback.

2019-04-29  Dean Jackson  <dino@apple.com>

        Add InteractionIsHappening to SuppressSelectionAssistantReason
        https://bugs.webkit.org/show_bug.cgi?id=197375
        <rdar://problem/50304986>

        Reviewed by Megan Gardner.

        Add a new reason for suppressing the selection assistant, to
        be used in a follow-up patch.

        * UIProcess/ios/WKContentViewInteraction.h: Add InteractionIsHappening.

2019-04-29  Alex Christensen  <achristensen@webkit.org>

        Storage::deleteOldVersions does not need to retain Storage
        https://bugs.webkit.org/show_bug.cgi?id=197336
        <rdar://problem/48679972>

        Reviewed by Darin Adler.

        * NetworkProcess/cache/NetworkCacheStorage.cpp:
        (WebKit::NetworkCache::Storage::deleteOldVersions):
        Something is wrong with the lifetime of Storage, but we only need a String, not the whole Storage.

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

        [Cocoa] Move common sandbox files from Shared/mac to Shared/Cocoa
        https://bugs.webkit.org/show_bug.cgi?id=197376
        <rdar://problem/50305272>

        Reviewed by Dean Jackson.

        The Apple sandboxing logic currently lives in the inappropriate 'Shared/mac' directory. This is
        confusing because the code is used by all Apple ports, not just macOS.

        This patch just moves the relevant files from 'Shared/mac' to 'Shared/Cocoa' to avoid this confusion.

        * Shared/Cocoa/SandboxExtensionCocoa.mm: Renamed from Source/WebKit/Shared/mac/SandboxExtensionMac.mm.
        * Shared/Cocoa/SandboxInitialiationParametersCocoa.mm: Renamed from Source/WebKit/Shared/mac/SandboxInitialiationParametersMac.mm.
        * Shared/Cocoa/SandboxUtilities.h: Renamed from Source/WebKit/Shared/mac/SandboxUtilities.h.
        * Shared/Cocoa/SandboxUtilities.mm: Renamed from Source/WebKit/Shared/mac/SandboxUtilities.mm.
        * SourcesCocoa.txt:
        * WebKit.xcodeproj/project.pbxproj:

2019-04-29  Alexander Mikhaylenko  <exalm7659@gmail.com>

        [GTK] Back/forward gesture snapshot always times out
        https://bugs.webkit.org/show_bug.cgi?id=197233

        Reviewed by Michael Catanzaro.

        Delaying web process launch caused a regression where we create ViewGestureController when the
        web process doesn't yet exist. The controller immediately tries to connect to it and fails,
        and because of that never receives DidHitRenderTreeSizeThreshold() message, so navigation
        snapshot always stays until timeout after performing the gesture.

        To prevent this, create the controller in webkitWebViewBaseDidRelaunchWebProcess() instead of
        webkitWebViewBaseCreateWebPage(). Additionally, since settings are now created earlier than
        ViewGestureController, store the value of whether swipe gesture is enabled in WebKitWebViewBase
        and immediately apply it when creating the controller.

        Since there is now a point where controller is null, make webkitWebViewBaseViewGestureController()
        return null and add null checks everywhere.

        * UIProcess/API/glib/WebKitWebView.cpp:
        (enableBackForwardNavigationGesturesChanged):
        Move the logic into webkitWebViewBaseSetEnableBackForwardNavigationGesture().
        * UIProcess/API/gtk/PageClientImpl.cpp:
        (WebKit::PageClientImpl::wheelEventWasNotHandledByWebCore): Add a null check.
        * UIProcess/API/gtk/WebKitWebViewBase.cpp:
        (webkitWebViewBaseDraw): Ditto.
        (webkitWebViewBaseScrollEvent): Ditto.
        (webkitWebViewBaseSetEnableBackForwardNavigationGesture): Added. In addition to what was in
        WebKitWebViewBase::enableBackForwardNavigationGesturesChanged(), store the value in a field
        for the case ViewGestureController doesn't exist yet.
        (webkitWebViewBaseViewGestureController): Return a pointer instead of reference.
        (webkitWebViewBaseCreateWebPage): Stop creating ViewGestureController.
        (webkitWebViewBaseDidRelaunchWebProcess): Move creating ViewGestureController here. Also
        immediately call setSwipeGestureEnabled() with the stored value.
        (webkitWebViewBaseDidStartProvisionalLoadForMainFrame): Add a null check.
        (webkitWebViewBaseDidFirstVisuallyNonEmptyLayoutForMainFrame):Ditto.
        (webkitWebViewBaseDidFinishLoadForMainFrame): Ditto.
        (webkitWebViewBaseDidFailLoadForMainFrame): Ditto.
        (webkitWebViewBaseDidSameDocumentNavigationForMainFrame): Ditto.
        (webkitWebViewBaseDidRestoreScrollPosition): Ditto.
        * UIProcess/API/gtk/WebKitWebViewBasePrivate.h:

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

        User-facing strings should use curly quotes instead of straight
        https://bugs.webkit.org/show_bug.cgi?id=197370

        Reviewed by Geoffrey Garen.

        Update localizable alert text that was recently added to use curly quotes instead of
        straight ones, as per our guidelines.

        * UIProcess/Cocoa/WKOrientationAccessAlert.mm:
        (WebKit::presentOrientationAccessAlert):
        * UIProcess/Cocoa/WKStorageAccessAlert.mm:
        (WebKit::presentStorageAccessAlert):

2019-04-29  Alex Christensen  <achristensen@webkit.org>

        Build fix.

        * UIProcess/ios/WKActionSheet.mm:
        (-[WKActionSheet updateSheetPosition]):

2019-04-29  Commit Queue  <commit-queue@webkit.org>

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

         Lots of tests  are crashing (Requested by KaL on #webkit).

        Reverted changeset:

        "[GTK] Back/forward gesture snapshot always times out"
        https://bugs.webkit.org/show_bug.cgi?id=197233
        https://trac.webkit.org/changeset/244648

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

        [WPE][GTK] window-object-cleared documentation should reference webkit_frame_get_js_context_for_script_world()
        https://bugs.webkit.org/show_bug.cgi?id=197357

        Reviewed by Carlos Garcia Campos.

        We should recommend using the non-deprecated replacement for
        webkit_frame_get_javascript_context_for_script_world().

        * WebProcess/InjectedBundle/API/glib/WebKitScriptWorld.cpp:

2019-04-27  Chris Dumez  <cdumez@apple.com>

        Improve safety of MachMessage class
        https://bugs.webkit.org/show_bug.cgi?id=197323
        <rdar://problem/44291920>

        Reviewed by Darin Adler.

        Improve safety of MachMessage class and clean things up a bit.

        * Platform/IPC/mac/ConnectionMac.mm:
        (IPC::Connection::sendOutgoingMessage):
        - Pass MessageReceiverName / MessageName when constructing the MachMessage rather
          than setting them afterwards since they never change for a given MachMessage.
        - Set header->msgh_id to the right value right away instead of setting it first
          to inlineBodyMessageID and then later fixing it to be outOfLineBodyMessageID
          when the body is out of line.
        - When messageBodyIsOOL was true, we would call getDescriptorAndSkip() which
          would advance the pointer by sizeof(mach_msg_port_descriptor_t), even though
          the descriptor type is mach_msg_ool_descriptor_t. This would not matter in
          the end because we would not use the messageData pointer after this but
          still.

        * Platform/IPC/mac/MachMessage.cpp:
        (IPC::MachMessage::create):
        Use fastZeroedMalloc() instead of fastMalloc() for safety, given that this class
        has a mach_msg_header_t flexible array member. This is what is recommended by the
        mach documentation. It is much safer because it otherwize relies on the user
        (Connection::sendOutgoingMessage()) to initialize ALL the message members
        correctly. I suspect this was the cause of <rdar://problem/44291920> because
        Connection::sendOutgoingMessage() would fail to initialize header->msgh_voucher_port
        and the MachMessage destructor would then call mach_msg_destroy(header()), which
        would mach_msg_destroy_port(header->msgh_voucher_port).

        (IPC::MachMessage::MachMessage):
        Pass MessageReceiverName / MessageName when constructing the MachMessage rather
        than setting them afterwards since they never change for a given MachMessage.

        (IPC::MachMessage::messageSize):
        Drop if checks for portDescriptorCount and memoryDescriptorCount since the logic
        will do the right thing even if they are 0.

        * Platform/IPC/mac/MachMessage.h:
        (IPC::MachMessage::header):
        (IPC::MachMessage::messageReceiverName const):
        (IPC::MachMessage::messageName const):

2019-04-26  Wenson Hsieh  <wenson_hsieh@apple.com>

        Rename m_LayerTreeFreezeReasons to m_layerTreeFreezeReasons
        https://bugs.webkit.org/show_bug.cgi?id=197343

        Reviewed by Antti Koivisto.

        No change in behavior.

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::freezeLayerTree):
        (WebKit::WebPage::unfreezeLayerTree):
        (WebKit::WebPage::updateDrawingAreaLayerTreeFreezeState):
        * WebProcess/WebPage/WebPage.h:

2019-04-26  Keith Rollin  <krollin@apple.com>

        Enable new build rule for post-processing headers when using XCBuild
        https://bugs.webkit.org/show_bug.cgi?id=197340
        <rdar://problem/50226685>

        Reviewed by Brent Fulgham.

        In Bug 197116, we conditionally disabled the old method for
        post-processing header files when we are using the new XCBuild build
        system. This check-in conditionally enables the new post-processing
        facility. Note that the old system is disabled and the new system
        enabled only when the USE_NEW_BUILD_SYSTEM environment variable is set
        to YES.

        * Configurations/WebKit.xcconfig:

2019-04-26  Jessie Berlin  <jberlin@webkit.org>

        Add new mac target numbers
        https://bugs.webkit.org/show_bug.cgi?id=197313

        Reviewed by Alex Christensen.

        * Configurations/Version.xcconfig:
        * Configurations/WebKitTargetConditionals.xcconfig:

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

        Use kDNSServiceFlagsKnownUnique to speed up mdns name registration for ICE candidates
        https://bugs.webkit.org/show_bug.cgi?id=197328

        Reviewed by Eric Carlson.

        This allows skipping the probing step of MDNS name registration.
        We can do that as registered names are random UUIDs.

        * NetworkProcess/webrtc/NetworkMDNSRegister.cpp:
        (WebKit::NetworkMDNSRegister::registerMDNSName):

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

        [iOS] Our process assertion should not allow idle sleep
        https://bugs.webkit.org/show_bug.cgi?id=197317
        <rdar://problem/50137740>

        Reviewed by Geoffrey Garen.

        Our process assertion should not allow idle sleep. This is bad for power because the device
        may switch between sleep and awake state frequently, as it get woken up by network packages.

        * UIProcess/ios/ProcessAssertionIOS.mm:

2019-04-26  Eric Carlson  <eric.carlson@apple.com>

        Create AVFoundationSoftLink.{h,mm} to reduce duplicate code
        https://bugs.webkit.org/show_bug.cgi?id=197171
        <rdar://problem/47454979>

        Reviewed by Youenn Fablet.

        * Shared/ios/WebIconUtilities.mm:
        (WebKit::iconForVideoFile):
        * Shared/mac/WebCoreArgumentCodersMac.mm:
        (IPC::ArgumentCoder<WebCore::MediaPlaybackTargetContext>::encodePlatformData):
        (IPC::ArgumentCoder<WebCore::MediaPlaybackTargetContext>::decodePlatformData):
        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::UIDelegate::UIClient::decidePolicyForUserMediaPermissionRequest):
        * WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemoteCustom.mm:
        (WebKit::PlatformCALayerRemoteCustom::clone const):

2019-04-26  Commit Queue  <commit-queue@webkit.org>

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

        Causing crash on iOS Simulator and EWS failures (Requested by
        sroberts on #webkit).

        Reverted changeset:

        "[iOS] Add internal setting to force -webkit-text-size-adjust
        to "auto""
        https://bugs.webkit.org/show_bug.cgi?id=197275
        https://trac.webkit.org/changeset/244683

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

        Use normal loading path for ping loads
        https://bugs.webkit.org/show_bug.cgi?id=196807

        Reviewed by Alex Christensen.

        In case a NetworkResourceLoader has the keepAlive option we do the following:
        - Always use NetworkLoadChecker as we might need it to do checks after the Web context is gone.
        - In case of aborting a KeepAlive loader, remove it from NetworkConnectionToWebProcess map
        and add it to a kept-alive NetworkSession load set. The loader is only kept alive if it
        has not yet received a response. Mark the loader as kept-alive.
        - In case loader is kept-alive, cancel the load as soon as a response is gathered.

        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::transferKeptAliveLoad):
        * NetworkProcess/NetworkConnectionToWebProcess.h:
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::addKeptAliveLoad):
        (WebKit::NetworkProcess::removeKeptAliveLoad):
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkResourceLoadMap.cpp:
        (WebKit::NetworkResourceLoadMap::remove):
        (WebKit::NetworkResourceLoadMap::take):
        * NetworkProcess/NetworkResourceLoadMap.h:
        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::m_shouldCaptureExtraNetworkLoadMetrics):
        (WebKit::NetworkResourceLoader::cleanup):
        (WebKit::NetworkResourceLoader::abort):
        (WebKit::NetworkResourceLoader::didReceiveResponse):
        (WebKit::NetworkResourceLoader::continueWillSendRedirectedRequest):
        * NetworkProcess/NetworkResourceLoader.h:
        * WebProcess/Network/WebLoaderStrategy.cpp:
        (WebKit::maximumBufferingTime):
        (WebKit::WebLoaderStrategy::usePingLoad const):
        * WebProcess/Network/WebLoaderStrategy.h:

2019-04-26  Alex Christensen  <achristensen@webkit.org>

        Fix internal High Sierra build after r244653
        https://bugs.webkit.org/show_bug.cgi?id=197131

        * DerivedSources.make:
        -std=gnu++17 didn't exist yet.  -std=gnu++1z did.

2019-04-26  Alex Christensen  <achristensen@webkit.org>

        Fix an internal High Sierra build after r244653
       ​https://bugs.webkit.org/show_bug.cgi?id=197131

        * DerivedSources.make:
        Apparently we can't use gnu++17 when preprocessing Platform.h in the makefile.

2019-04-26  Sihui Liu  <sihui_liu@apple.com>

        Stop IDB transactions to release locked database files when network process is ready to suspend
        https://bugs.webkit.org/show_bug.cgi?id=196372
        <rdar://problem/48930116>

        Reviewed by Brady Eidson.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::processWillSuspendImminently):
        (WebKit::NetworkProcess::prepareToSuspend):
        (WebKit::NetworkProcess::resume):

2019-04-25  Myles C. Maxfield  <mmaxfield@apple.com>

        [iOS] Add internal setting to force -webkit-text-size-adjust to "auto"
        https://bugs.webkit.org/show_bug.cgi?id=197275
        <rdar://problem/50211019>

        Reviewed by Simon Fraser.

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

2019-04-25  Myles C. Maxfield  <mmaxfield@apple.com>

        [iOS] Implement idempotent mode for text autosizing
        https://bugs.webkit.org/show_bug.cgi?id=197250
        <rdar://problem/50211034>

        Reviewed by Jon Lee.

        Push the initial scale down into the page.

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

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

        Make NetworkCache blobs safe for mmap instead of not using blobs
        https://bugs.webkit.org/show_bug.cgi?id=197264
        <rdar://problem/49564348>

        Reviewed by Antti Koivisto.

        This does what r244597 did for WKContentRuleLists but for the NetworkCache's blobs.
        Those are the two cases where we were calling mmap and seeing crashes in apps with
        default file protection of NSFileProtectionComplete.

        * NetworkProcess/cache/NetworkCacheBlobStorage.cpp:
        (WebKit::NetworkCache::BlobStorage::add):
        * NetworkProcess/cache/NetworkCacheFileSystem.cpp:
        (WebKit::NetworkCache::isSafeToUseMemoryMapForPath): Deleted.
        * NetworkProcess/cache/NetworkCacheFileSystem.h:
        * NetworkProcess/cache/NetworkCacheFileSystemCocoa.mm:
        (WebKit::NetworkCache::isSafeToUseMemoryMapForPath):
        * NetworkProcess/cache/NetworkCacheStorage.cpp:
        (WebKit::NetworkCache::Storage::Storage):
        (WebKit::NetworkCache::Storage::synchronize):
        (WebKit::NetworkCache::Storage::mayContainBlob const):
        (WebKit::NetworkCache::Storage::shouldStoreBodyAsBlob):
        (WebKit::NetworkCache::estimateRecordsSize): Deleted.
        * NetworkProcess/cache/NetworkCacheStorage.h:

2019-04-25  Simon Fraser  <simon.fraser@apple.com>

        REGRESSION (r234330): 3 legacy-animation-engine/compositing tests are flaky failures
        https://bugs.webkit.org/show_bug.cgi?id=188357
        <rdar://problem/42986633>

        Reviewed by Dean Jackson.
        
        DumpRenderTree had no code that set page.setCompositingPolicyOverride() to Normal, so some
        tests would fall into low memory mode and have different behavior.
        
        Fix by moving the code that calls setCompositingPolicyOverride(Normal) from the WK2 layer
        to Internals, so it's shared by DRT and WTR.
        
        We no longer need the WK2 C SPI glue.

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

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

        Trying to load a main resource outside the sandbox should not crash the WebContent process
        https://bugs.webkit.org/show_bug.cgi?id=197299
        <rdar://problem/49808042>

        Reviewed by Geoffrey Garen.

        Trying to load a main resource outside the sandbox should not crash the WebContent process. We should
        simply ignore the load and log an error message.

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

2019-04-25  Timothy Hatcher  <timothy@apple.com>

        Only send a synthetic mouse out event if synthetic mouse move events were sent.
        https://bugs.webkit.org/show_bug.cgi?id=197295
        rdar://problem/49040233

        Reviewed by Zalan Bujtas.

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

2019-04-25  Timothy Hatcher  <timothy@apple.com>

        Disable date and time inputs on iOSMac.
        https://bugs.webkit.org/show_bug.cgi?id=197287
        rdar://problem/46794376

        Reviewed by Wenson Hsieh.

        * Configurations/FeatureDefines.xcconfig:

2019-04-25  Brady Eidson  <beidson@apple.com>

        REGRESSION (243388): WebProcess::shouldFreezeOnSuspension() decision is flipped
        <rdar://problem/49755494> and https://bugs.webkit.org/show_bug.cgi?id=197284

        Reviewed by Chris Dumez.

        * WebProcess/cocoa/WebProcessCocoa.mm:
        (WebKit::WebProcess::shouldFreezeOnSuspension const): If any non-suspended pages are in the process it should
          be eligible. Only if all pages are suspended should it be jetsam-able.

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

        Start using C++17
        https://bugs.webkit.org/show_bug.cgi?id=197131

        Reviewed by Darin Adler.

        * Configurations/Base.xcconfig:
        * DerivedSources.make:

2019-04-25  Alexander Mikhaylenko  <exalm7659@gmail.com>

        [GTK] Back/Forward gesture interferes with scrolling
        https://bugs.webkit.org/show_bug.cgi?id=197168

        Reviewed by Michael Catanzaro.

        When the gesture is released with 0 velocity close to an edge of the webview,
        the finishing animation is way too long, and in some cases it can look like the
        gesture is already over, when it's still animating. By scrolling vertically while
        that happens, it's possible to reset animation over and over again.

        To reduce the duration in this case, instead of using maximum possible duration
        (400ms), introduce a base velocity and use it for calculating the duration if
        the actual velocity, relative to the end point, is equal to or less than 0.

        * UIProcess/gtk/ViewGestureControllerGtk.cpp:
        (WebKit::ViewGestureController::SwipeProgressTracker::startAnimation):

2019-04-25  Alexander Mikhaylenko  <exalm7659@gmail.com>

        [GTK] Back/forward gesture snapshot always times out
        https://bugs.webkit.org/show_bug.cgi?id=197233

        Reviewed by Michael Catanzaro.

        Delaying web process launch caused a regression where we create ViewGestureController when the
        web process doesn't yet exist. The controller immediately tries to connect to it and fails,
        and because of that never receives DidHitRenderTreeSizeThreshold() message, so navigation
        snapshot always stays until timeout after performing the gesture.

        To prevent this, create the controller in webkitWebViewBaseDidRelaunchWebProcess() instead of
        webkitWebViewBaseCreateWebPage(). Additionally, since settings are now created earlier than
        ViewGestureController, store the value of whether swipe gesture is enabled in WebKitWebViewBase
        and immediately apply it when creating the controller.

        * UIProcess/API/glib/WebKitWebView.cpp:
        (enableBackForwardNavigationGesturesChanged):
        Move the logic into webkitWebViewBaseSetEnableBackForwardNavigationGesture().
        * UIProcess/API/gtk/WebKitWebViewBase.cpp:
        (webkitWebViewBaseSetEnableBackForwardNavigationGesture): Added. In addition to what was in
        WebKitWebViewBase::enableBackForwardNavigationGesturesChanged(), store the value in a field
        for the case ViewGestureController doesn't exist yet.
        (webkitWebViewBaseCreateWebPage): Stop creating ViewGestureController.
        (webkitWebViewBaseDidRelaunchWebProcess): Move creating ViewGestureController here. Also
        immediately call setSwipeGestureEnabled() with the stored value.
        * UIProcess/API/gtk/WebKitWebViewBasePrivate.h:

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

        [Mac iOS WK2] Layout Test http/wpt/cache-storage/cache-quota-after-restart.any.html is a flaky failure
        https://bugs.webkit.org/show_bug.cgi?id=197040
        <rdar://problem/49997641>

        Reviewed by Antti Koivisto.

        Delay write operations in case synchronize is ongoing.
        This is restricted to AvoidRandomness mode which is always used by CacheAPI
        and is also used by network cache for layout tests.

        Tested by cache-quota-after-restart.any.html no longer exhibiting write disk errors.

        * NetworkProcess/cache/NetworkCacheStorage.cpp:
        (WebKit::NetworkCache::Storage::synchronize):
        (WebKit::NetworkCache::Storage::store):

2019-04-25  Commit Queue  <commit-queue@webkit.org>

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

        Causing internal build failures (Requested by ShawnRoberts on
        #webkit).

        Reverted changeset:

        "Create AVFoundationSoftLink.{h,mm} to reduce duplicate code"
        https://bugs.webkit.org/show_bug.cgi?id=197171
        https://trac.webkit.org/changeset/244627

2019-04-24  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Hardcoded text color in input fields
        https://bugs.webkit.org/show_bug.cgi?id=126907

        Reviewed by Michael Catanzaro.

        Implement PageClient::effectiveAppearanceIsDark() for GTK port.

        * UIProcess/API/gtk/PageClientImpl.cpp:
        (WebKit::PageClientImpl::effectiveAppearanceIsDark const): Check if gtk-application-prefer-dark-theme setting is
        enabled, or the theme name contains the -dark suffix or the GTK_THEME environment variable contains the :dark suffix.
        * UIProcess/API/gtk/PageClientImpl.h:
        * UIProcess/API/gtk/WebKitWebViewBase.cpp:
        (themeChanged): Notify the WebPageProxy that the theme has changed.
        (webkitWebViewBaseSetToplevelOnScreenWindow): Connect to notify::gtk-application-prefer-dark-theme and notify::gtk-theme-name.
        * WebProcess/WebPage/WebPage.cpp:
        * WebProcess/WebPage/gtk/WebPageGtk.cpp:
        (WebKit::WebPage::setUseDarkAppearance): Set gtk-application-prefer-dark-theme setting accordingly.

2019-04-24  Zalan Bujtas  <zalan@apple.com>

        Regression (r244291): Broken API Test AutoLayoutRenderingProgressRelativeOrdering
        https://bugs.webkit.org/show_bug.cgi?id=196948
        <rdar://problem/49927131>

        Reviewed by Tim Horton.

        Move intrinsicContentSizeDidChange out of DrawingArea. Intrinsic content size is a layout concept and
        after r244291 there's no reason to have it in DrawingArea.

        * UIProcess/DrawingAreaProxy.h:
        (WebKit::DrawingAreaProxy::didUpdateGeometry):
        (WebKit::DrawingAreaProxy::intrinsicContentSizeDidChange): Deleted.
        * UIProcess/DrawingAreaProxy.messages.in:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didChangeIntrinsicContentSize):
        (WebKit::WebPageProxy::setViewLayoutSize):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.h:
        * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm:
        (WebKit::TiledCoreAnimationDrawingAreaProxy::intrinsicContentSizeDidChange): Deleted.
        * UIProcess/mac/WebPageProxyMac.mm:
        (WebKit::WebPageProxy::intrinsicContentSizeDidChange): Deleted.
        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::intrinsicContentsSizeChanged const):
        * WebProcess/WebCoreSupport/WebChromeClient.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::updateIntrinsicContentSizeIfNeeded):
        (WebKit::WebPage::dispatchDidReachLayoutMilestone):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
        (WebKit::TiledCoreAnimationDrawingArea::flushLayers):
        (WebKit::TiledCoreAnimationDrawingArea::updateIntrinsicContentSizeIfNeeded): Deleted.

2019-04-24  Commit Queue  <commit-queue@webkit.org>

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

        Causes compat issues (Requested by smfr on #webkit).

        Reverted changeset:

        "Unreviewed test gardening for Windows."
        https://trac.webkit.org/changeset/244228

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

        Create AVFoundationSoftLink.{h,mm} to reduce duplicate code
        https://bugs.webkit.org/show_bug.cgi?id=197171
        <rdar://problem/47454979>

        Reviewed by Youenn Fablet.

        * Shared/ios/WebIconUtilities.mm:
        (WebKit::iconForVideoFile):
        * Shared/mac/WebCoreArgumentCodersMac.mm:
        (IPC::ArgumentCoder<WebCore::MediaPlaybackTargetContext>::encodePlatformData):
        (IPC::ArgumentCoder<WebCore::MediaPlaybackTargetContext>::decodePlatformData):
        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::UIDelegate::UIClient::decidePolicyForUserMediaPermissionRequest):
        * WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemoteCustom.mm:
        (WebKit::PlatformCALayerRemoteCustom::clone const):

2019-04-24  Per Arne Vollan  <pvollan@apple.com>

        [macOS] Fix syscall sandbox violation
        https://bugs.webkit.org/show_bug.cgi?id=197247
        <rdar://problem/50026580>

        Reviewed by Brent Fulgham.

        A missing syscall in the sandbox of the WebContent process is causing a crash.

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

2019-04-24  John Wilander  <wilander@apple.com>

        Age out unconverted Ad Click Attributions after one week.
        https://bugs.webkit.org/show_bug.cgi?id=197238
        <rdar://problem/50177349>

        Reviewed by Chris Dumez.

        AdClickAttributionManager::storeUnconverted() and
        AdClickAttributionManager::convert() now start by calling the new
        AdClickAttributionManager::clearExpired() function to remove any
        expired, unconverted attributions before continuing.

        The rest of the patch is infrastructure to allow tests to expire
        all unconverted attributions early.

        * NetworkProcess/AdClickAttributionManager.cpp:
        (WebKit::AdClickAttributionManager::storeUnconverted):
        (WebKit::AdClickAttributionManager::convert):
        (WebKit::AdClickAttributionManager::clearExpired):
        (WebKit::AdClickAttributionManager::markAllUnconvertedAsExpiredForTesting):
        * NetworkProcess/AdClickAttributionManager.h:
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::markAdClickAttributionsAsExpiredForTesting):
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:
        * NetworkProcess/NetworkSession.cpp:
        (WebKit::NetworkSession::markAdClickAttributionsAsExpiredForTesting):
        * NetworkProcess/NetworkSession.h:
        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetAdClickAttributionConversionURLForTesting):
        (WKPageMarkAdClickAttributionsAsExpiredForTesting):
        * UIProcess/API/C/WKPagePrivate.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::markAdClickAttributionsAsExpiredForTesting):
        * UIProcess/WebPageProxy.h:

2019-04-24  Wenson Hsieh  <wenson_hsieh@apple.com>

        Plumb the navigation's request when determining recommended compatibility mode
        https://bugs.webkit.org/show_bug.cgi?id=197225
        <rdar://problem/48389965>

        Reviewed by Alex Christensen.

        Adds a new argument to effectiveCompatibilityModeAfterAdjustingPolicies.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::decidePolicyForNavigationAction):
        (WebKit::WebPageProxy::effectiveCompatibilityModeAfterAdjustingPolicies):
        * UIProcess/WebPageProxy.h:

2019-04-24  Tim Horton  <timothy_horton@apple.com>

        Clean up WKActionSheetAssistant's use of LaunchServices
        https://bugs.webkit.org/show_bug.cgi?id=194645
        <rdar://problem/47707952>

        Reviewed by Andy Estes.

        * UIProcess/ios/WKActionSheetAssistant.mm:
        (applicationHasAppLinkEntitlements):
        (-[WKActionSheetAssistant _appendAppLinkOpenActionsForURL:actions:elementInfo:]):
        (-[WKActionSheetAssistant _appendOpenActionsForURL:actions:elementInfo:]):
        (appLinkForURL): Deleted.
        Make this function much more early-returny and flat.
        Adopt LS sync SPI instead of using a semaphore ourselves.
        Adopt modern open SPI.

2019-04-24  Simon Fraser  <simon.fraser@apple.com>

        Make it possible to control the renderTreeAsText output by setting options on testRunner
        https://bugs.webkit.org/show_bug.cgi?id=197133

        Reviewed by Sam Weinig.

        Add testRunner.setRenderTreeDumpOptions() and expose the subset of RenderAsTextFlag flags
        that make sense in testing (those that don't dump unstable data like addresses), and plumb
        these flags through the various framework layers.

        Convert RenderAsTextBehavior to an OptionSet<RenderAsTextFlag>.

        Fix code generation in WebKitTestRunner to generate bindings for IDL const values,
        and hand-code DumpRenderTree bindings.

        Some cleanup of the TestRunners, using member initializers.

        * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
        (WKBundlePageCopyRenderTreeExternalRepresentation):
        * WebProcess/InjectedBundle/API/c/WKBundlePagePrivate.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::toRenderAsTextFlags):
        (WebKit::WebPage::renderTreeExternalRepresentation const):
        (WebKit::WebPage::renderTreeExternalRepresentationForPrinting const):
        * WebProcess/WebPage/WebPage.h:

2019-04-24  Alex Christensen  <achristensen@webkit.org>

        WKContentRuleLists should have a maximum FileProtection of CompleteUnlessOpen
        https://bugs.webkit.org/show_bug.cgi?id=197078
        <rdar://problem/49564348>

        Reviewed by Geoff Garen.

        r242735 was a fix for crashes when using mmap'd memory in apps with default FileProtection of NSFileProtectionComplete.
        It is more memory efficient and just as secure to reduce the FileProtection of these files to NSFileProtectionCompleteUnlessOpen.

        * NetworkProcess/cache/NetworkCacheFileSystem.cpp:
        (WebKit::NetworkCache::isSafeToUseMemoryMapForPath):
        (WebKit::NetworkCache::makeSafeToUseMemoryMapForPath):
        (WebKit::NetworkCache::pathRegisteredAsUnsafeToMemoryMapForTesting): Deleted.
        (WebKit::NetworkCache::registerPathAsUnsafeToMemoryMapForTesting): Deleted.
        * NetworkProcess/cache/NetworkCacheFileSystem.h:
        * NetworkProcess/cache/NetworkCacheFileSystemCocoa.mm: Added.
        (WebKit::NetworkCache::isSafeToUseMemoryMapForPath):
        (WebKit::NetworkCache::makeSafeToUseMemoryMapForPath):
        * Shared/WebCompiledContentRuleList.cpp:
        (WebKit::WebCompiledContentRuleList::conditionsApplyOnlyToDomain const):
        (WebKit::WebCompiledContentRuleList::filtersWithoutConditionsBytecode const):
        (WebKit::WebCompiledContentRuleList::filtersWithConditionsBytecode const):
        (WebKit::WebCompiledContentRuleList::topURLFiltersBytecode const):
        (WebKit::WebCompiledContentRuleList::actions const):
        (WebKit::WebCompiledContentRuleList::usesCopiedMemory const): Deleted.
        * Shared/WebCompiledContentRuleList.h:
        * Shared/WebCompiledContentRuleListData.cpp:
        (WebKit::WebCompiledContentRuleListData::encode const):
        (WebKit::WebCompiledContentRuleListData::decode):
        (WebKit::WebCompiledContentRuleListData::size const): Deleted.
        (WebKit::WebCompiledContentRuleListData::dataPointer const): Deleted.
        * Shared/WebCompiledContentRuleListData.h:
        (WebKit::WebCompiledContentRuleListData::WebCompiledContentRuleListData):
        * SourcesCocoa.txt:
        * UIProcess/API/APIContentRuleList.cpp:
        (API::ContentRuleList::usesCopiedMemory const): Deleted.
        * UIProcess/API/APIContentRuleList.h:
        * UIProcess/API/APIContentRuleListStore.cpp:
        (API::openAndMapOrCopyContentRuleList):
        (API::compiledToFile):
        (API::createExtension):
        (API::ContentRuleListStore::getContentRuleListSource):
        (API::ContentRuleListStore::readContentsOfFile): Deleted.
        (API::MappedOrCopiedData::dataPointer const): Deleted.
        * UIProcess/API/APIContentRuleListStore.h:
        * UIProcess/API/Cocoa/APIContentRuleListStoreCocoa.mm:
        (API::ContentRuleListStore::readContentsOfFile): Deleted.
        * UIProcess/API/Cocoa/WKContentRuleListStore.mm:
        (+[WKContentRuleListStore _registerPathAsUnsafeToMemoryMapForTesting:]): Deleted.
        * UIProcess/API/Cocoa/WKContentRuleListStorePrivate.h:
        * UIProcess/API/Cocoa/_WKUserContentFilter.mm:
        (-[_WKUserContentFilter usesCopiedMemory]): Deleted.
        * UIProcess/API/Cocoa/_WKUserContentFilterPrivate.h:
        * WebKit.xcodeproj/project.pbxproj:

2019-04-24  David Kilzer  <ddkilzer@apple.com>

        Fix build due to missing SPI declaration of kAXSFullKeyboardAccessEnabledNotification

        * UIProcess/Cocoa/WKFullKeyboardAccessWatcher.mm: Import
        AccessibilitySupportSPI.h.

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

        URL set by document.open() is communicated with the WebPageProxy but not the WebFrameProxy
        https://bugs.webkit.org/show_bug.cgi?id=197214
        <rdar://problem/49237544>

        Reviewed by Alex Christensen.

        URL set by document.open() is communicated with the WebPageProxy (since r244361) but not the
        WebFrameProxy. This patch fixes this.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _mainFrameURL]):
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        * UIProcess/FrameLoadState.cpp:
        (WebKit::FrameLoadState::didExplicitOpen):
        * UIProcess/FrameLoadState.h:
        * UIProcess/WebFrameProxy.cpp:
        (WebKit::WebFrameProxy::didExplicitOpen):
        * UIProcess/WebFrameProxy.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didExplicitOpenForFrame):

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

        X-Frame-Options header should be ignored when frame-ancestors CSP directive is present
        https://bugs.webkit.org/show_bug.cgi?id=197226
        <rdar://problem/50155649>

        Reviewed by Alex Christensen.

        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::shouldInterruptLoadForCSPFrameAncestorsOrXFrameOptions):

2019-04-24  Dean Jackson  <dino@apple.com>

        Rename _highlightLongPressCanClick and only add gesture recognizer when necessary
        https://bugs.webkit.org/show_bug.cgi?id=197231
        <rdar://problem/50164234>

        Reviewed by Antoine Quint.

        Rename _highlightLongPressCanClick to _longPressCanClick since it will be
        used in other places.

        Only attach the _highlightLongPressGestureRecognizer when we're not
        using long presses for preview. This might revert in the future, if we
        can set up an appropriate gesture resolution between the two.

        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView setupInteraction]):
        (-[WKContentView _webTouchEvent:preventsNativeGestures:]):
        (-[WKContentView _highlightLongPressRecognized:]):
        (-[WKContentView _interactionShouldBeginFromPreviewItemController:forPosition:]):
        (-[WKContentView _presentedViewControllerForPreviewItemController:]):
        (-[WKContentView _previewItemControllerDidCancelPreview:]):

2019-04-24  chris fleizach  <cfleizach@apple.com>

        AX: Remove deprecated Accessibility Object Model events
        https://bugs.webkit.org/show_bug.cgi?id=197073
        <rdar://problem/50027819>

        Reviewed by Ryosuke Niwa.

        * Platform/spi/ios/AccessibilitySupportSPI.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _initializeWithConfiguration:]):
        (-[WKWebView dealloc]):
        (accessibilityEventsEnabledChangedCallback): Deleted.
        (-[WKWebView _updateAccessibilityEventsEnabled]): Deleted.
        * UIProcess/API/Cocoa/WKWebViewInternal.h:
        * UIProcess/Cocoa/WKFullKeyboardAccessWatcher.mm:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::updateAccessibilityEventsEnabled): Deleted.
        * UIProcess/WebPageProxy.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::updateAccessibilityEventsEnabled): Deleted.
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:

2019-04-23  John Wilander  <wilander@apple.com>

        Move Ad Click Attribution from internal feature to experimental feature
        https://bugs.webkit.org/show_bug.cgi?id=197218
        <rdar://problem/47651691>

        Reviewed by Brent Fulgham.

        * Shared/WebPreferences.yaml:

2019-04-23  Keith Rollin  <krollin@apple.com>

        Add Xcode version check for Header post-processing scripts
        https://bugs.webkit.org/show_bug.cgi?id=197116
        <rdar://problem/50058968>

        Reviewed by Brent Fulgham.

        There are several places in our Xcode projects that post-process
        header files after they've been exported. Because of XCBuild, we're
        moving to a model where the post-processing is performed at the same
        time the header files are exported, rather than as a distinct
        post-processing step. This patch disables the distinct step when the
        inline processing is available.

        In practice, this means prefixing appropriate post-processing Custom
        Build phases with:

        if [ "${XCODE_VERSION_MAJOR}" -ge "1100" -a "${USE_NEW_BUILD_SYSTEM}" = "YES" ]; then
            # In this configuration, post-processing is performed at the same time as copying in the postprocess-header-rule script, so there's no need for this separate step.
            exit 0
        fi

        * WebKit.xcodeproj/project.pbxproj:

2019-04-23  John Wilander  <wilander@apple.com>

        Remove Ad Click Attribution data when removing website data
        https://bugs.webkit.org/show_bug.cgi?id=197215
        <rdar://problem/47668988>

        Reviewed by Chris Dumez.

        This patch adds a new WebsiteDataType called AdClickAttributions and flags
        it as owned by the network process.

        The new website data type is added to the Cocoa API layer for
        website data records management.

        When either of the two WebsiteDataStore::removeData() functions calls
        NetworkProcess::deleteWebsiteData() or
        NetworkProcess::deleteWebsiteDataForOrigins() over IPC, the network
        process now calls into AdClickAttributionManager::clear() and
        AdClickAttributionManager::clearForRegistrableDomain() respectively,
        if the website datatypes include WebsiteDataType::AdClickAttributions.

        The patch removes a couple of completion handlers in NetworkSession function
        calls are because those are not asynchronous.

        * NetworkProcess/AdClickAttributionManager.cpp:
        (WebKit::AdClickAttributionManager::clear):
        (WebKit::AdClickAttributionManager::clearForRegistrableDomain):
        (WebKit::AdClickAttributionManager::toString const):
        * NetworkProcess/AdClickAttributionManager.h:
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::deleteWebsiteData):
        (WebKit::NetworkProcess::deleteWebsiteDataForOrigins):
        (WebKit::NetworkProcess::clearAdClickAttribution):
        * NetworkProcess/NetworkSession.cpp:
        (WebKit::NetworkSession::clearAdClickAttribution):
        (WebKit::NetworkSession::clearAdClickAttributionForRegistrableDomain):
        * NetworkProcess/NetworkSession.h:
        * Shared/WebsiteData/WebsiteData.cpp:
        (WebKit::WebsiteData::ownerProcess):
        * Shared/WebsiteData/WebsiteDataType.h:
        * UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
        (WKWebsiteDataStoreClearAdClickAttributionsThroughWebsiteDataRemoval):
        * UIProcess/API/C/WKWebsiteDataStoreRef.h:
        * UIProcess/API/Cocoa/WKWebsiteDataRecord.mm:
        (dataTypesToString):
        * UIProcess/API/Cocoa/WKWebsiteDataRecordInternal.h:
        (WebKit::toWebsiteDataType):
        (WebKit::toWKWebsiteDataTypes):
        * UIProcess/API/Cocoa/WKWebsiteDataRecordPrivate.h:
        * UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
        (+[WKWebsiteDataStore _allWebsiteDataTypesIncludingPrivate]):

2019-04-23  Tim Horton  <timothy_horton@apple.com>

        Return annotated text checking strings via UIWKDocumentContext
        https://bugs.webkit.org/show_bug.cgi?id=197177
        <rdar://problem/49064839>

        Reviewed by Ryosuke Niwa.

        * WebProcess/WebPage/Cocoa/TextCheckingControllerProxy.h:
        * WebProcess/WebPage/Cocoa/TextCheckingControllerProxy.mm:
        (WebKit::TextCheckingControllerProxy::annotatedSubstringBetweenPositions):
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::requestDocumentEditingContext):
        Respect the UIWKDocumentRequestAnnotation flag, returning an attributed
        string containing the platform text checking annotations.

2019-04-23  Commit Queue  <commit-queue@webkit.org>

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

        Causing build failures on multiple builders (Requested by
        ShawnRoberts on #webkit).

        Reverted changeset:

        "Create AVFoundationSoftLink.{h,mm} to reduce duplicate code"
        https://bugs.webkit.org/show_bug.cgi?id=197171
        https://trac.webkit.org/changeset/244556

2019-04-23  Remy Demarest  <rdemarest@apple.com>

        Build fix after r244545.

        Reviewed by Tim Horton.

        * Platform/spi/mac/AppKitSPI.h:
        The SPI was an IPI in High Sierra.

2019-04-23  Per Arne Vollan  <pvollan@apple.com>

        [iOS] Input field on ddg.gg is auto focused when url is entered with the software keyboard
        https://bugs.webkit.org/show_bug.cgi?id=196740

        Reviewed by Megan Gardner.

        When an url for a page with an autofocused input field  is entered with the software keyboard,
        the input field is auto selected, and the software keyboard reappears. This does not happen
        when picking the url from favorites. After using the software keyboard to enter the url, the
        activity state is being changed to focused. The method '_elementDidFocus' checks whether the
        activity state changed, and allows the software keyboard to be shown in this case. To avoid
        showing the software keyboard in this case, send the changing activity state bitfield to the
        UI process, and check if the focus flag is the only flag set.
  
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _elementDidFocus:userIsInteracting:blurPreviousNode:changingActivityState:userObject:]):

2019-04-23  Guy Lewin  <guy@lewin.co.il>

        Multiple File Input Icon Set Regardless of File List
        https://bugs.webkit.org/show_bug.cgi?id=195537

        Reviewed by Alexey Proskuryakov.

        Add WKOpenPanelResultListenerChooseMediaFiles() to choose files with
        icon and display string on iOS file open panels

        * UIProcess/API/C/WKOpenPanelResultListener.cpp:
        (WKOpenPanelResultListenerChooseMediaFiles):
        * UIProcess/API/C/WKOpenPanelResultListener.h:

2019-04-23  Eric Carlson  <eric.carlson@apple.com>

        Create AVFoundationSoftLink.{h,mm} to reduce duplicate code
        https://bugs.webkit.org/show_bug.cgi?id=197171
        <rdar://problem/47454979>

        Reviewed by Youenn Fablet.

        * Shared/ios/WebIconUtilities.mm:
        (WebKit::iconForVideoFile):
        * Shared/mac/WebCoreArgumentCodersMac.mm:
        (IPC::ArgumentCoder<WebCore::MediaPlaybackTargetContext>::encodePlatformData):
        (IPC::ArgumentCoder<WebCore::MediaPlaybackTargetContext>::decodePlatformData):
        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::UIDelegate::UIClient::decidePolicyForUserMediaPermissionRequest):
        * WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemoteCustom.mm:
        (WebKit::PlatformCALayerRemoteCustom::clone const):

2019-04-22  Dean Jackson  <dino@apple.com>

        Use additional members and protocols from WebKitAdditions in WKContentViewInteraction
        https://bugs.webkit.org/show_bug.cgi?id=197184
        <rdar://problem/50113848>

        Reviewed by Wenson Hsieh.

        WebKitAdditions defines some macros to include additional members
        and protocols for WKContentViewInteraction.

        It also defines some new functions. Provide empty version
        of those functions when WebKitAdditions is not available.

        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _registerPreview]):
        (-[WKContentView _unregisterPreview]):

2019-04-23  Tim Horton  <timothy_horton@apple.com>

        Action sheet shares a stringified URL instead of a URL object
        https://bugs.webkit.org/show_bug.cgi?id=197185
        <rdar://problem/49962249>

        Reviewed by Darin Adler.

        * UIProcess/Cocoa/WKShareSheet.h:
        * UIProcess/Cocoa/WKShareSheet.mm:
        (-[WKShareSheet presentWithParameters:inRect:completionHandler:]):
        (-[WKShareSheet presentWithParameters:completionHandler:]): Deleted.
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::showShareSheet):
        * UIProcess/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::showShareSheet):
        Make it possible to optionally provide WKShareSheet with
        a rect to present relative to.

        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _showShareSheet:inRect:completionHandler:]):
        (-[WKContentView actionSheetAssistant:shareElementWithURL:rect:]):
        (-[WKContentView _showShareSheet:completionHandler:]): Deleted.
        Instead of stringifying the URL and using the text selection assistant's
        share method, hand WKShareSheet a proper URL.

2019-04-23  Ryosuke Niwa  <rniwa@webkit.org>

        [iOS] element.focus() sometimes fails to reveal the focused element when it becomes editable dynamically
        https://bugs.webkit.org/show_bug.cgi?id=197188

        Reviewed by Wenson Hsieh.

        Commit the scroll tree update before revealing the keyboard via editor state update.

        * UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm:
        (WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTree):

2019-04-23  Remy Demarest  <rdemarest@apple.com>

        Fix layout issues occuring when entering full screen mode.
        https://bugs.webkit.org/show_bug.cgi?id=197086
        <rdar://problem/47733671>.

        Reviewed by Darin Adler.

        This issue is the result of changing the style mask of the window after entering
        full screen mode. Safari adds an invisible toolbar to display the URL of the page
        which ends up breaking the layout. Having that window use a style that includes a
        titlebar fixes the bug.

        * Platform/spi/mac/AppKitSPI.h:
        Declare an SPI to be used in WKFullScreenWindowController.

        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::fullScreenWindow): Make the full screen window show a titlebar
        and make the content view underlap the titlebar to match the current behavior.
        Remove NSWindowStyleMaskBorderless which has no effects since it is equal to zero.

        * UIProcess/mac/WKFullScreenWindowController.mm:
        (-[WKFullScreenWindowController initWithWindow:webView:page:]): Hide the titlebar
        before beginning the animation to full screen.
        (-[WKFullScreenWindowController finishedEnterFullScreenAnimation:]): Show the title
        bar when in full screen instead of a blank bar.
        (-[WKFullScreenWindowController finishedExitFullScreenAnimation:]): Hide the title
        bar to restore the initial setting.

2019-04-23  John Wilander  <wilander@apple.com>

        Ad Click Attribution redirects to well-known location should not trigger a conversion if they are blocked by content blockers
        https://bugs.webkit.org/show_bug.cgi?id=197183
        <rdar://problem/47763188>

        Reviewed by Alex Christensen.

        Ad Click Attribution conversions are picked up in the redirect handler
        in WebKit::NetworkResourceLoader. Content blocking typically happens in
        the continued redirect request handling in the web content process and
        a blocked request comes back empty.

        We need to call the WebKit::NetworkLoadChecker in the network process
        for these specific redirects, just like we do for Ping.

        The change makes use of the existing function
        NetworkLoadChecker::enableContentExtensionsCheck() for this purpose.

        In essence, this change makes it possible to block all conversions made
        to a "/.well-known/ad-click-attribution/" URL.

        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::handleAdClickAttributionConversion):
            New convenience function.
        (WebKit::NetworkResourceLoader::willSendRedirectedRequest):
            Now calls NetworkLoadChecker::enableContentExtensionsCheck() if
            an Ad Click Attribution conversion was found in the redirect URL.
        (WebKit::NetworkResourceLoader::continueWillSendRedirectedRequest):
            If the request was not blocked, it will store any found conversion here.
        * NetworkProcess/NetworkResourceLoader.h:

2019-04-23  Don Olmstead  <don.olmstead@sony.com>

        [CMake][Win] Use target oriented design for WebKit
        https://bugs.webkit.org/show_bug.cgi?id=197173

        Reviewed by Alex Christensen.

        Enumerate public framework headers for WinCairo's WebKit implementation and copy them.
        Migrate to use WebKit_DERIVED_SOURCES_DIR.

        * CMakeLists.txt:
        * PlatformGTK.cmake:
        * PlatformWPE.cmake:
        * PlatformWin.cmake:

2019-04-23  Chris Dumez  <cdumez@apple.com>

        [Process-Swap-On-Navigation] WebKit hangs when going back to a form submission's page due to Process-Swap-On-Navigation on iOS 12.2 and higher
        https://bugs.webkit.org/show_bug.cgi?id=197097
        <rdar://problem/50048318>

        Reviewed by Alex Christensen.

        The issue is that when doing a history navigation with form data, we try to resubmit the form.
        We initially use the ReturnCacheDataDontLoad cache policy without prompting the user to get
        cached data. If this fails, we sent a DidFailProvisionalLoadForFrame IPC to the UIProcess but
        the WebContent process actually retries the load with ReturnCacheDataElseLoad cache policy.
        This new load triggers a new decidePolicyForNavigationAction.

        This would cause trouble with process-swapping because we normally destroy the
        ProvisionalPageProxy as soon as we receive a DidFailProvisionalLoadForFrame IPC from the
        provisional process. As a result, the provisional process would not be able to retry.

        To address the issue, we add pass a flag with the DidFailProvisionalLoadForFrame IPC to
        if the load will continue or not. When this flag is set, the UIProcess does not destroy
        the provisional page.

        * Scripts/webkit/messages.py:
        Minor IPC message handler build fix.

        * UIProcess/API/Cocoa/WKURLSchemeTask.mm:
        (-[WKURLSchemeTaskImpl _onlyIfCached]):
        * UIProcess/API/Cocoa/WKURLSchemeTaskPrivate.h:
        Add new _onlyIfCached SPI to WKURLSchemeTaskPrivate to allow for API testing.

        * UIProcess/ProvisionalPageProxy.cpp:
        (WebKit::ProvisionalPageProxy::cancel):
        Pass WillContinueLoading flag.

        (WebKit::ProvisionalPageProxy::validateInput):
        Consider IPC with a navigationID of 0 as valid. When the navigation is triggered by the
        WebContent process, it sends us a DecidePolicyForNavigationActionAsync IPC with a navigationID
        of 0, until the UIProcess can generate a valid identifier.

        (WebKit::ProvisionalPageProxy::didFailProvisionalLoadForFrame):

        (WebKit::ProvisionalPageProxy::decidePolicyForNavigationActionAsync):
        When the WebPageProxy has generated a navigationID for the new WebContent process-initiated
        navigation, update m_navigationID so that follow-up IPC is considered valid.

        * UIProcess/ProvisionalPageProxy.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didFailProvisionalLoadForFrame):
        (WebKit::WebPageProxy::didFailProvisionalLoadForFrameShared):
        (WebKit::WebPageProxy::decidePolicyForNavigationActionAsyncShared):
        (WebKit::WebPageProxy::decidePolicyForNavigationAction):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDidFailProvisionalLoad):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.h:

2019-04-22  Zalan Bujtas  <zalan@apple.com>

        [ContentChangeObserver] Some dropdown menus may close without user gesture on americanexpress.com
        https://bugs.webkit.org/show_bug.cgi?id=197175
        <rdar://problem/49613013>

        Reviewed by Simon Fraser.

        Do not generate additional synthetic mouse events (e.g. mouseout in this case) when the content handles the click event. This helps cases when the synthetic mouseout ended up dismissing the dropdown menus.
        However it won't regress cases like youtube.com, where sending mouseout is required to have the control bar dismissed on play. 

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

2019-04-22  Alex Christensen  <achristensen@webkit.org>

        Deprecate WKContextCreateWithInjectedBundlePath
        https://bugs.webkit.org/show_bug.cgi?id=197169

        Reviewed by Youenn Fablet.

        * UIProcess/API/C/WKContext.h:

2019-04-22  Alex Christensen  <achristensen@webkit.org>

        REGRESSION(r230681) Do not use stored credentials if WKBundlePageResourceLoadClient.shouldUseCredentialStorage returns false
        https://bugs.webkit.org/show_bug.cgi?id=197093
        <rdar://problem/49708268>

        Reviewed by Chris Dumez.

        Only get the StoredCredentialsPolicy from the NetworkLoadChecker if we haven't already been told not to use credentials.
        Also add some test infrastructure for clearing persistent credentials added by the test.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::removeCredential):
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:
        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::startNetworkLoad):
        * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
        (WebKit::NetworkProcess::removeCredential):
        * UIProcess/API/Cocoa/WKProcessPool.mm:
        (-[WKProcessPool _removeCredential:forProtectionSpace:completionHandler:]):
        * UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::removeCredential):
        * UIProcess/WebProcessPool.h:

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

        Delayed WebProcessLaunch may break the _relatedWebView SPI
        https://bugs.webkit.org/show_bug.cgi?id=197160

        Reviewed by Alex Christensen.

        Delayed WebProcessLaunch may break the _relatedWebView SPI. The breakage would happen if the client
        would relate a WebView to another which has not launched its initial process yet.

        To address the issue, when we need a running process for a WebView which has a related view, we need
        to make sure the related view has a running process and use that process. Previously, we would share
        the "dummy" process instead.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::launchProcess):
        (WebKit::WebPageProxy::ensureRunningProcess):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::createWebPage):

2019-04-22  David Quesada  <david_quesada@apple.com>

        Remove linked-on-or-after check for download attribute handling
        https://bugs.webkit.org/show_bug.cgi?id=197176
        rdar://problem/48459714

        Reviewed by Alex Christensen.

        There are no apps linked prior to this SDK version that are using the _WKDownload SPI,
        so it doesn't make sense to preserve the old behavior of forcing download-attribute
        links to start downloads.

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

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

        Unreviewed, rolling out r244502.

        Caused crashes on the bots

        Reverted changeset:

        "Delayed WebProcessLaunch may break the _relatedWebView SPI"
        https://bugs.webkit.org/show_bug.cgi?id=197160
        https://trac.webkit.org/changeset/244502

2019-04-22  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r244437.

        Still breaks internal tests.

        Reverted changeset:

        "InjectedBundle parameters often need initialization function
        called before unarchiving"
        https://bugs.webkit.org/show_bug.cgi?id=189709
        https://trac.webkit.org/changeset/244437

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

        Delayed WebProcessLaunch may break the _relatedWebView SPI
        https://bugs.webkit.org/show_bug.cgi?id=197160

        Reviewed by Alex Christensen.

        Delayed WebProcessLaunch may break the _relatedWebView SPI. The breakage would happen if the client
        would relate a WebView to another which has not launched its initial process yet.

        To address the issue, when we need a running process for a WebView which has a related view, we need
        to make sure the related view has a running process and use that process. Previously, we would share
        the "dummy" process instead.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::launchProcess):
        (WebKit::WebPageProxy::ensureRunningProcess):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::createWebPage):

2019-04-22  Ludovico de Nittis  <ludovico.denittis@collabora.com>

        [GTK] fix gtk_style_context_set_background deprecation
        https://bugs.webkit.org/show_bug.cgi?id=196912

        Reviewed by Carlos Garcia Campos.

        Since gtk 3.18 gtk_style_context_set_background has been deprecated.
        Backgrounds are not rendered in the UI process, so it can be
        simply removed.

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

2019-04-21  Wenson Hsieh  <wenson_hsieh@apple.com>

        Defer EditorState updates until the next layer tree flush in a few additional circumstances
        https://bugs.webkit.org/show_bug.cgi?id=197145
        <rdar://problem/50078170>

        Reviewed by Darin Adler.

        Gets rid of sendPartialEditorStateAndSchedulePostLayoutUpdate(), in favor of always scheduling a full editor
        state update after the next compositing flush.

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::updateEditorStateAfterLayoutIfEditabilityChanged):
        (WebKit::WebPage::setNeedsFontAttributes):
        (WebKit::WebPage::didChangeOverflowScrollPosition):
        (WebKit::WebPage::didChangeSelection):
        (WebKit::WebPage::didChangeSelectionOrOverflowScrollPosition):
        (WebKit::WebPage::sendPartialEditorStateAndSchedulePostLayoutUpdate): Deleted.
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::platformEditorState const):
        (WebKit::WebPage::updateVisibleContentRects):

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

        Regression(r243767) WebFrame::m_navigationIsContinuingInAnotherProcess flag is never reset
        https://bugs.webkit.org/show_bug.cgi?id=197144

        Reviewed by Darin Adler.

        WebFrame::m_navigationIsContinuingInAnotherProcess flag is never reset since it was introduced in
        r243767. This leads to leaking Navigation objects in the UIProcess when reusing a previously
        suspended process because such process will no longer send the DidDestroyNavigation IPC.

        It turns out that resetting the flags causes API tests such as ProcessSwap.QuickBackForwardNavigationWithPSON
        to ASSERT. This is because when the UIProcess quickly navigate back and forth without waiting for policy
        decisions, we may end up getting the policy decision for a particular navigation *after* we've sent the
        DidDestroyNavigation.

        As a result, this patch reverts r243767 and fixes in the assertion in http/tests/adClickAttribution/store-ad-click-attribution.html
        another way. We initially assumed that the logic in WebPageProxy::didDestroyNavigation() was failing to
        ignore the DidDestroyNavigation from the previous process after a swap due to a race, maybe because it was
        sometimes received too late and m_provisionalPage was already cleared. However, this would not make sense
        since the test is crashing consistently and the page would no longer be able to receive IPC from the
        previous process *after* we've committed the provisional process/page.

        The real issue was that the DidDestroyNavigation IPC was received *before* we could construct the
        provisional page, which is why the logic in WebPageProxy::didDestroyNavigation() was failing to ignore
        the bad IPC. In WebPageProxy::receivedNavigationPolicyDecision(), we were calling receivedPolicyDecision()
        (which would send the DidReceivePolicyDecision to the previous WebProcess) and then continueNavigationInNewProcess()
        in order to construct the provisional page. I personally did not expect we could receive IPC between the
        calls to receivedNavigationPolicyDecision() and receivedPolicyDecision(), since we are not yielding and since
        the DidReceivePolicyDecision IPC is asynchronous. However, this is exactly what was happening in the context
        of this test. The reason is that the DidReceivePolicyDecision IPC was getting wrapped in a synchronous message
        and sent as synchronous message due to the Connection::m_inDispatchMessageMarkedToUseFullySynchronousModeForTesting
        flag which seems to get set in the test due to some EventSender IPC. I believe this is because the test uses
        EventSender to do a click on a link which triggers the navigation.

        To address the issue, I now call receivedNavigationPolicyDecision() *after* continueNavigationInNewProcess()
        to make sure that we always start the provisional load in the new process before we tell the previous process
        to stop loading. This way, there is no way we get IPC from the previous process about the current navigation
        before we have a provisional page.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::receivedNavigationPolicyDecision):
        (WebKit::WebPageProxy::didDestroyNavigation):
        * WebProcess/WebPage/WebFrame.cpp:
        (WebKit::WebFrame::didReceivePolicyDecision):
        (WebKit::WebFrame::documentLoaderDetached):
        * WebProcess/WebPage/WebFrame.h:

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

        Unreviewed, fix iOS build with recent SDKs.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (deviceOrientation):
        * UIProcess/ios/fullscreen/WKFullScreenViewController.mm:
        (-[WKFullScreenViewController initWithWebView:]):
        (-[WKFullScreenViewController viewWillTransitionToSize:withTransitionCoordinator:]):
        (-[WKFullScreenViewController _statusBarFrameDidChange:]):

2019-04-19  John Wilander  <wilander@apple.com>

        Disable Ad Click Attribution in ephemeral sessions and make sure conversion requests use an ephemeral, stateless session
        https://bugs.webkit.org/show_bug.cgi?id=197108
        <rdar://problem/49918702>

        Reviewed by Alex Christensen.

        This patch introduces a new NSURLSession in WebKit::NetworkSessionCocoa called
        m_ephemeralStatelessCookielessSession. As its name implies, it's ephemeral, 
        stateless, and has a NSHTTPCookieAcceptPolicyNever cookie policy.

        The new session can be invoked with the new enum value of
        WebCore::StoredCredentialsPolicy called EphemeralStatelessCookieless.

        WebKit::AdClickAttributionManager::fireConversionRequest() makes use of
        the new session for its conversion requests.

        This patch also makes sure that Ad Click Attributions cannot be stored in
        ephemeral sessions and already stored attributions cannot be converted in
        ephemeral sessions.

        * NetworkProcess/AdClickAttributionManager.cpp:
        (WebKit::AdClickAttributionManager::fireConversionRequest):
        (WebKit::AdClickAttributionManager::toString const):
        * NetworkProcess/NetworkLoadChecker.h:
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:
        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::willSendRedirectedRequest):
        * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
        (WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa):
            Calls NetworkSessionCocoa::initializeEphemeralStatelessCookielessSession() lazily.
        (WebKit::NetworkDataTaskCocoa::~NetworkDataTaskCocoa):
        (WebKit::NetworkDataTaskCocoa::willPerformHTTPRedirection):
        * NetworkProcess/cocoa/NetworkSessionCocoa.h:
        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (WebKit::NetworkSessionCocoa::initializeEphemeralStatelessCookielessSession):
        (WebKit::NetworkSessionCocoa::invalidateAndCancel):
        * Shared/WebCoreArgumentCoders.h:

2019-04-19  Daniel Bates  <dabates@apple.com>

        Use RetainPtr and rename +autocorrectionRectsWithRects:lastRect: to +autocorrectionRectsWithFirstCGRect:lastCGRect:
        https://bugs.webkit.org/show_bug.cgi?id=197122

        Reviewed by Wenson Hsieh.

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView requestAutocorrectionRectsForString:withCompletionHandler:]): Renamed; formerly named +autocorrectionRectsWithRects:lastRect:.
        While I am here use else-branch to initialize firstRect and lastRect just to make the code closer to the optimal
        assembly. Also use Vector::{isEmpty, first, last}() instead of using the index operator overload and size() for
        emptiness checks. The code is more readable at the cost being ever so slightly slower (due to the overflow checks
        in first() and last()), but this code is likely not hot enough for it to matter.
        (-[WKContentView applyAutocorrection:toString:withCompletionHandler:]): Update for renaming.
        (+[WKAutocorrectionRects autocorrectionRectsWithFirstCGRect:lastCGRect:]): Ditto.
        (+[WKAutocorrectionRects autocorrectionRectsWithRects:lastRect:]): Deleted.

2019-04-19  Daniel Bates  <dabates@apple.com>

        -[WKAutocorrectionContext emptyAutocorrectionContext:] generates invalid empty context
        https://bugs.webkit.org/show_bug.cgi?id=197119

        Reviewed by Wenson Hsieh.

        Use the existing EditingRange type to represent the location and length of the marked text
        range for an autocorrection instead of managing integers. This type avoid the need to handle
        the special case for an empty range represented as NSMakeRange(NSNotFound, 0). Currently
        WKAutocorrectionContext incorrectly represents the empty range as NSMakeRange(WTF::notFound, 0).

        While I am here, simplify the existing WebAutocorrectionContext encoder/decoder code and rename
        +[WKAutocorrectionContext autocorrectionContextWithContext:] to +autocorrectionContextWithWebContext
        to better reflect the expected source of the conversion: a Web-type.

        * Shared/ios/WebAutocorrectionContext.h:
        (WebKit::WebAutocorrectionContext::encode const): Reformat while I am here to make this logic easy
        to amend without losing SVN history.
        (WebKit::WebAutocorrectionContext::decode): Simplify the code while I am here.
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _handleAutocorrectionContext:]): Update for renaming.
        (+[WKAutocorrectionContext emptyAutocorrectionContext]): Update for renaming.
        (+[WKAutocorrectionContext autocorrectionContextWithWebContext:]): Renamed; formerly named autocorrectionContextWithContext.
        (+[WKAutocorrectionContext autocorrectionContextWithContext:]): Deleted.
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::autocorrectionContext): Update to make use of EditingRange. Also instantiate
        the struct and return it, initializing its fields individually instead of using the constructor to
        make this code less error prone. It's easy to introduce an error with the constructor notation when
        amending the the struct because so many of the arguments are of the same data type. Individually
        initializing the struct fields makes it less likely for an ordering mistake to be introduced.

2019-04-19  Dean Jackson  <dino@apple.com>

        Add more _WKElementActionTypes and provide API to create with custom types
        https://bugs.webkit.org/show_bug.cgi?id=197117
        <rdar://problem/50059548>

        Reviewed by Tim Horton.

        We were missing a few obvious types that are well-known
        browser actions, and/or should be visible in share sheets.
        Also, clean up the API for constructing new types.

        * UIProcess/API/Cocoa/_WKElementAction.h: Add new types for opening
        in new tabs, windows and downloading.
        * UIProcess/API/Cocoa/_WKElementAction.mm:
        (+[_WKElementAction elementActionWithType:title:actionHandler:]): New constructor
        with type, title and action.
        (+[_WKElementAction elementActionWithType:]): Call new method.

2019-04-18  Daniel Bates  <dabates@apple.com>

        Use existing KeyEventCodesIOS constants instead of duplicating them
        https://bugs.webkit.org/show_bug.cgi?id=197081

        Rubber-stamped by Wenson Hsieh.

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _interpretKeyEvent:isCharEvent:]): While I am here, remove the case for the space key
        as it is identical to the default switch case.

2019-04-19  Keith Rollin  <krollin@apple.com>

        Add postprocess-header-rule scripts
        https://bugs.webkit.org/show_bug.cgi?id=197072
        <rdar://problem/50027299>

        Reviewed by Brent Fulgham.

        Several projects have post-processing build phases where exported
        headers are tweaked after they've been copied. This post-processing is
        performed via scripts called postprocess-headers.sh. For reasons
        related to XCBuild, we are now transitioning to a build process where
        the post-processing is performed at the same time as the
        exporting/copying. To support this process, add similar scripts named
        postprocess-header-rule, which are geared towards processing a single
        file at a time rather than all exported files at once. Also add a
        build rule that makes use of these scripts. These scripts and build
        rules are not used at the moment; they will come into use in an
        imminent patch.

        Note that I've named these postprocess-header-rule rather than
        postprocess-header-rule.sh. Scripts in Tools/Scripts do not have
        suffixes indicating how the tool is implemented. Scripts in
        per-project Scripts folders appear to be mixed regarding the use of
        suffixes. I'm opting here to follow the Tools/Scripts convention, with
        the expectation that over time we completely standardize on that.

        * Scripts/postprocess-header-rule: Added.
        * WebKit.xcodeproj/project.pbxproj:

2019-04-19  Brady Eidson  <beidson@apple.com>

        Deprecate WebKit2 plug-in support.
        <rdar://problem/43812306> and https://bugs.webkit.org/show_bug.cgi?id=197080

        Reviewed by Andy Estes.

        * UIProcess/API/Cocoa/WKPreferences.h:
        * UIProcess/API/Cocoa/WKPreferences.mm:
        (-[WKPreferences encodeWithCoder:]):
        (-[WKPreferences initWithCoder:]):
        (-[WKPreferences javaEnabled]):
        (-[WKPreferences setJavaEnabled:]):
        (-[WKPreferences plugInsEnabled]):
        (-[WKPreferences setPlugInsEnabled:]):

2019-04-19  Chris Dumez  <cdumez@apple.com>

        Minor PSON release logging improvements
        https://bugs.webkit.org/show_bug.cgi?id=197104

        Reviewed by Darin Adler.

        * UIProcess/SuspendedPageProxy.cpp:
        (WebKit::SuspendedPageProxy::didProcessRequestToSuspend):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::continueNavigationInNewProcess):

2019-04-19  Tim Horton  <timothy_horton@apple.com>

        YouTube and Twitter embeds don't load in News
        https://bugs.webkit.org/show_bug.cgi?id=197111
        <rdar://problem/50010081>

        Reviewed by Timothy Hatcher.

        * WebProcess/com.apple.WebProcess.sb.in:
        Adjust this sandbox exception to include both platforms.

2019-04-19  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] Add quirks to disable autocorrection and autocapitalization in hidden editable areas on some websites
        https://bugs.webkit.org/show_bug.cgi?id=197102
        <rdar://problem/49864669>

        Reviewed by Ryosuke Niwa.

        If the quirk for disabling autocorrection and autocapitalization in hidden editable areas is active, then check
        whether the focused element is hidden, and turn off autocorrection and autocapitalization if needed.

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

2019-04-19  Commit Queue  <commit-queue@webkit.org>

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

        Caused build failures with Internal and Opensource builders
        (Requested by ShawnRoberts on #webkit).

        Reverted changeset:

        "Deprecate WebKit2 plug-in support."
        https://bugs.webkit.org/show_bug.cgi?id=197080
        https://trac.webkit.org/changeset/244447

2019-04-18  Brady Eidson  <beidson@apple.com>

        Deprecate WebKit2 plug-in support.
        <rdar://problem/43812306> and https://bugs.webkit.org/show_bug.cgi?id=197080

        Reviewed by Andy Estes.

        * UIProcess/API/Cocoa/WKPreferences.h:
        * UIProcess/API/Cocoa/WKPreferences.mm:
        (-[WKPreferences encodeWithCoder:]):
        (-[WKPreferences initWithCoder:]):
        (-[WKPreferences javaEnabled]):
        (-[WKPreferences setJavaEnabled:]):
        (-[WKPreferences plugInsEnabled]):
        (-[WKPreferences setPlugInsEnabled:]):

2019-04-18  Commit Queue  <commit-queue@webkit.org>

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

        caused 1 API test failure (Requested by zalan on #webkit).

        Reverted changeset:

        "Regression (r244291): Broken API Test
        AutoLayoutRenderingProgressRelativeOrdering"
        https://bugs.webkit.org/show_bug.cgi?id=196948
        https://trac.webkit.org/changeset/244434

2019-04-18  Wenson Hsieh  <wenson_hsieh@apple.com>

        Add new compatibility mode API on WKNavigation
        https://bugs.webkit.org/show_bug.cgi?id=197069
        <rdar://problem/50025800>

        Reviewed by Tim Horton.

        Adds a new property on WKNavigation.

        * Shared/WebCompatibilityMode.h:

        Drive-by fix: make this enum class 8 bits wide.

        * UIProcess/API/APINavigation.h:
        (API::Navigation::setEffectiveCompatibilityMode):
        (API::Navigation::effectiveCompatibilityMode const):

        Add a new member variable to API::Navigation.

        * UIProcess/API/Cocoa/WKNavigation.h:
        * UIProcess/API/Cocoa/WKNavigation.mm:
        * UIProcess/API/Cocoa/WKWebpagePreferences.mm:
        * UIProcess/API/Cocoa/WKWebpagePreferencesInternal.h:

        Add various hooks into WebKitAdditions.

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

        Set API::Navigation's effective compatibility mode.

        (WebKit::WebPageProxy::effectiveCompatibilityModeAfterAdjustingPolicies):

        Renamed and refactored this method to return the effective compatibility mode, chosen while adjusting website
        policies.

        (WebKit::WebPageProxy::adjustPoliciesForCompatibilityMode): Deleted.
        * UIProcess/WebPageProxy.h:

2019-04-18  Don Olmstead  <don.olmstead@sony.com>

        [CMake] Make WebCore headers copies
        https://bugs.webkit.org/show_bug.cgi?id=182512
        <rdar://problem/37510435>

        Reviewed by Alex Christensen.

        WebCore now uses WebCore_PRIVATE_INCLUDE_DIRECTORIES for all ports. This revealed
        problems with WebKit's usage of WebCore headers. All include directories directly
        referencing the WebCore source tree we're removed from the CMake files. Any includes
        of WebCore headers using "*.h" were modified to <WebCore/*.h>

        Removed generation of forwarding headers for WebCore using the perl script.

        * CMakeLists.txt:
        * NetworkProcess/curl/NetworkDataTaskCurl.h:
        * PlatformWPE.cmake:
        * PlatformWin.cmake:
        * Scripts/generate-forwarding-headers.pl:
        * UIProcess/API/glib/WebKitUserContentFilterStore.cpp:
        * UIProcess/API/wpe/WebKitColorPrivate.h:
        * UIProcess/WebsiteData/win/WebsiteDataStoreWin.cpp:
        * UIProcess/win/PageClientImpl.cpp:

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

        [iOS] Improve detection of when web views go to background / foreground
        https://bugs.webkit.org/show_bug.cgi?id=197035
        <rdar://problem/45281182>

        Reviewed by Tim Horton.

        Improve detection of when web views go to background / foreground on iOS.

        * UIProcess/ApplicationStateTracker.mm:
        (WebKit::ApplicationStateTracker::ApplicationStateTracker): Deleted.
        (WebKit::ApplicationStateTracker::~ApplicationStateTracker): Deleted.
        (WebKit::ApplicationStateTracker::applicationDidEnterBackground): Deleted.
        (WebKit::ApplicationStateTracker::applicationDidFinishSnapshottingAfterEnteringBackground): Deleted.
        (WebKit::ApplicationStateTracker::applicationWillEnterForeground): Deleted.

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

        Refactoring: Pull all fullscreen code out of Document and into its own helper class
        https://bugs.webkit.org/show_bug.cgi?id=197017

        Reviewed by Eric Carlson.

        * WebProcess/FullScreen/WebFullScreenManager.cpp:
        (WebKit::WebFullScreenManager::willEnterFullScreen):
        (WebKit::WebFullScreenManager::didEnterFullScreen):
        (WebKit::WebFullScreenManager::willExitFullScreen):
        (WebKit::WebFullScreenManager::didExitFullScreen):
        (WebKit::WebFullScreenManager::setAnimatingFullScreen):
        (WebKit::WebFullScreenManager::requestExitFullScreen):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDocumentGtk.cpp:
        (webkit_dom_document_webkit_cancel_fullscreen):
        (webkit_dom_document_webkit_exit_fullscreen):
        (webkit_dom_document_get_webkit_is_fullscreen):
        (webkit_dom_document_get_webkit_fullscreen_keyboard_input_allowed):
        (webkit_dom_document_get_webkit_current_fullscreen_element):
        (webkit_dom_document_get_webkit_fullscreen_element):
        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::createWindow):

2019-04-18  Megan Gardner  <megan_gardner@apple.com>

        Update UIKit when a cut causes a selection change
        https://bugs.webkit.org/show_bug.cgi?id=197047
        <rdar://problem/36311563>

        Reviewed by Wenson Hsieh.

        We need to let UIKit know when a cut causes a selection change (always),
        so that is can appropriately update the button on the keyboard bar.

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

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

        InjectedBundle parameters often need initialization function called before unarchiving
        https://bugs.webkit.org/show_bug.cgi?id=189709
        <rdar://problem/44573653>

        Reviewed by Ryosuke Niwa.

        Handle the case where the InjectedBundle parameters do not successfully decode because they contain
        an unexpected class from the embedding program. If this happens, try decoding the bundle parameters
        after the bundle initialiation function runs, which gives the embedding program the opportunity to
        register additional classes that are safe for serialization.

        Extend WKWebProcessPlugIn with a method that returns the names of any custom classes that need
        to be serialized by the InjectedBundle.
        
        Create a new 'decodeBundleParameters' method that contains the logic that used to live in 'initialize'.
        Revise 'initialize' to call this new method.

        * WebProcess/InjectedBundle/InjectedBundle.h:
        * WebProcess/InjectedBundle/mac/InjectedBundleMac.mm:
        (WebKit::InjectedBundle::initialize): Use the new method.
        (WebKit::InjectedBundle::decodeBundleParameters): Added.
        (WebKit::InjectedBundle::setBundleParameters): Use 'decodeObjectOfClasses' with the more complete
        'classesForCoder' method to unarchive the passed bundle parameters, rather than the
        NSDictionary-specific method, since InjectedBundles often encode other types of objects, and the
        NSDictionary object may itself hold other kinds of objects.
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugIn.h:
        (WebKit::WKWebProcessPlugIn::additionalClassesForParameterCoder): Added.

2019-04-18  Zalan Bujtas  <zalan@apple.com>

        Regression (r244291): Broken API Test AutoLayoutRenderingProgressRelativeOrdering
        https://bugs.webkit.org/show_bug.cgi?id=196948
        <rdar://problem/49927131>

        Reviewed by Tim Horton.

        Move intrinsicContentSizeDidChange out of DrawingArea. Intrinsic content size is a layout concept and
        after r244291 there's no reason to have it in DrawingArea.

        * UIProcess/DrawingAreaProxy.h:
        (WebKit::DrawingAreaProxy::didUpdateGeometry):
        (WebKit::DrawingAreaProxy::intrinsicContentSizeDidChange): Deleted.
        * UIProcess/DrawingAreaProxy.messages.in:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didChangeIntrinsicContentSize):
        (WebKit::WebPageProxy::setViewLayoutSize):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.h:
        * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm:
        (WebKit::TiledCoreAnimationDrawingAreaProxy::intrinsicContentSizeDidChange): Deleted.
        * UIProcess/mac/WebPageProxyMac.mm:
        (WebKit::WebPageProxy::intrinsicContentSizeDidChange): Deleted.
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::updateIntrinsicContentSizeIfNeeded):
        (WebKit::WebPage::dispatchDidReachLayoutMilestone):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
        (WebKit::TiledCoreAnimationDrawingArea::flushLayers):
        (WebKit::TiledCoreAnimationDrawingArea::updateIntrinsicContentSizeIfNeeded): Deleted.

2019-04-18  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r244299.

        Breaks internal tests.

        Reverted changeset:

        "InjectedBundle parameters often need initialization function
        called before unarchiving"
        https://bugs.webkit.org/show_bug.cgi?id=189709
        https://trac.webkit.org/changeset/244299

2019-04-18  Shawn Roberts  <sroberts@apple.com>

        Unreviewed manual rollout of r244248 and r244409
        Causing assertion failures on Mac WK2 Debug builds
        https://bugs.webkit.org/show_bug.cgi?id=195623

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::lowMemoryHandler):
        * NetworkProcess/NetworkProcess.h:
        (WebKit::NetworkProcess::prefetchCache): Deleted.
        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::retrieveCacheEntry):
        (WebKit::NetworkResourceLoader::didReceiveResponse):
        (WebKit::NetworkResourceLoader::didReceiveBuffer):
        (WebKit::NetworkResourceLoader::tryStoreAsCacheEntry):
        (WebKit::NetworkResourceLoader::isCrossOriginPrefetch const): Deleted.
        * NetworkProcess/NetworkResourceLoader.h:
        * NetworkProcess/cache/PrefetchCache.cpp: Removed.
        * NetworkProcess/cache/PrefetchCache.h: Removed.
        * Shared/WebPreferences.yaml:
        * Sources.txt:
        * WebKit.xcodeproj/project.pbxproj:

2019-04-18  Devin Rousso  <drousso@apple.com>

        Web Inspector: Canvas: enable WebGL2 for inspector page
        https://bugs.webkit.org/show_bug.cgi?id=196932
        <rdar://problem/49916213>

        Reviewed by Timothy Hatcher.

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

2019-04-17  Devin Rousso  <drousso@apple.com>

        Web Inspector: InspectorFrontendHost::inspectionLevel returns wrong value for inspector3
        https://bugs.webkit.org/show_bug.cgi?id=197044

        Reviewed by Joseph Pecoraro.

        * UIProcess/WebInspectorUtilities.h:
        * UIProcess/WebInspectorUtilities.cpp:
        (WebKit::trackInspectorPage):
        (WebKit::untrackInspectorPage):
        Determine the level of the inspector page by looking to see if the page being inspected is
        in the inspector page map. If so, we must be inspecting an inspector page and should use
        that inspector page's inspection level as the value to increment.

        * UIProcess/WebInspectorProxy.cpp:
        (WebKit::WebInspectorProxy::createFrontendPage):
        * UIProcess/RemoteWebInspectorProxy.cpp:
        (WebKit::RemoteWebInspectorProxy::createFrontendPageAndWindow):

2019-04-17  Tim Horton  <timothy_horton@apple.com>

        Adopt different scroll view flashing SPI
        https://bugs.webkit.org/show_bug.cgi?id=197043
        <rdar://problem/49996476>

        Reviewed by Wenson Hsieh.

        * Platform/spi/ios/UIKitSPI.h:
        * UIProcess/ios/WKKeyboardScrollingAnimator.mm:
        (-[WKKeyboardScrollViewAnimator scrollToContentOffset:animated:]):

2019-04-17  Tim Horton  <timothy_horton@apple.com>

        REGRESSION (r241988): Switching tabs is slow
        https://bugs.webkit.org/show_bug.cgi?id=197037
        <rdar://problem/49951473>

        Reviewed by Simon Fraser.

        * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm:
        (WebKit::TiledCoreAnimationDrawingAreaProxy::waitForDidUpdateActivityState):
        r241988 changed to wait for a WebPageProxy message to a given DrawingArea ID,
        but WebPageProxy messages are identified by their WebPageProxy ID.
        Revert that one change. The rest of the patch looks OK.

2019-04-17  Rob Buis  <rbuis@igalia.com>

        Link prefetch not useful for top-level navigation
        https://bugs.webkit.org/show_bug.cgi?id=195623

        Reviewed by Alex Christensen.

        Fix macOS and iOS Debug WK2 bots ASSERTS after r367404, by simply
        not sending the DidReceiveResponse message.

        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::didReceiveResponse):

2019-04-17  Truitt Savell  <tsavell@apple.com>

        Unreviewed, rolling out r244400.

        Caused testing to exit early with assertionon Debug WK2

        Reverted changeset:

        "UI↔Web deadlock when printing with a JavaScript alert
        visible"
        https://bugs.webkit.org/show_bug.cgi?id=196839
        https://trac.webkit.org/changeset/244400

2019-04-17  Brady Eidson  <beidson@apple.com>

        Link clicks in PDFs shouldn't send referrer headers.
        <rdar://problem/21142581> and https://bugs.webkit.org/show_bug.cgi?id=196980

        Reviewed by Tim Horton.

        * WebProcess/Plugins/PDF/PDFPlugin.mm:
        (WebKit::PDFPlugin::clickedLink):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::navigateToPDFLinkWithSimulatedClick):

2019-04-17  Andy Estes  <aestes@apple.com>

        [iOS] Support multiple file selection in UIDocumentPickerViewController
        https://bugs.webkit.org/show_bug.cgi?id=197014
        <rdar://problem/49963514>

        Reviewed by Tim Horton.

        * UIProcess/ios/forms/WKFileUploadPanel.mm:
        (-[WKFileUploadPanel _showDocumentPickerMenu]):
        Allowed multiple file selection in our UIDocumentPickerViewController when
        _allowMultipleFiles is YES.

        (displayStringForDocumentsAtURLs):
        (-[WKFileUploadPanel documentPicker:didPickDocumentsAtURLs:]):
        Changed to support multiple file selection. When more than one file is selected, use
        WebCore::multipleFileUploadText() as the display string.

2019-04-17  Alex Christensen  <achristensen@webkit.org>

        Make WebCompiledContentRuleListData non-default-constructible, move its nonserialized member to API::ContentRuleList
        https://bugs.webkit.org/show_bug.cgi?id=197033

        Reviewed by Tim Horton.

        This is just cleanup that makes the code nicer without changing behavior.

        * Shared/WebCompiledContentRuleListData.cpp:
        (WebKit::WebCompiledContentRuleListData::encode const):
        (WebKit::WebCompiledContentRuleListData::decode):
        * Shared/WebCompiledContentRuleListData.h:
        (WebKit::WebCompiledContentRuleListData::WebCompiledContentRuleListData):
        * UIProcess/API/APIContentRuleList.h:
        * UIProcess/API/APIContentRuleListStore.cpp:
        (API::createExtension):

2019-04-17  John Wilander  <wilander@apple.com>

        Add prioritization of ad click conversions and cleaning of sent ad click conversions
        https://bugs.webkit.org/show_bug.cgi?id=196934
        <rdar://problem/49917773>

        Reviewed by Chris Dumez.

        In this description, by "pair" I mean { AdClickAttribution::Source, AdClickAttribution::Destination }.

        This patch adds handling of prioritization of conversions according to these rules:
        - If we have a matching unconverted attribution, convert it. This consumes the conversion.
        - If we have no previously converted attribution for this pair, just store.
        - If we have a previously converted attribution for this pair, replace it if the new one has higher priority.
        - If we had no matching unconverted attribution but do have a previously converted attribution for this
        pair, re-convert the previously converted attribution to make sure the highest priority gets set.

        This handling is in part done by dividing the previous m_adClickAttributionMap into 
        m_unconvertedAdClickAttributionMap and m_convertedAdClickAttributionMap, which now use a std::pair
        as key instead of a nested HashMap.

        This patch also changes AdClickAttributionManager::firePendingConversionRequests() so that it now
        removes attributions which have been sent out.

        Finally, AdClickAttributionManager::clear() no longer clears m_conversionBaseURLForTesting and
        m_isRunningTest since doing so caused test flakiness. It is now up to the test case that sets these
        members to also clear them when done.

        * NetworkProcess/AdClickAttributionManager.cpp:
        (WebKit::AdClickAttributionManager::storeUnconverted):
        (WebKit::AdClickAttributionManager::convert):
        (WebKit::AdClickAttributionManager::firePendingConversionRequests):
        (WebKit::AdClickAttributionManager::clear):
        (WebKit::AdClickAttributionManager::toString const):
        (WebKit::AdClickAttributionManager::setConversionURLForTesting):
        (WebKit::AdClickAttributionManager::ensureDestinationMapForSource): Deleted.
        (WebKit::AdClickAttributionManager::store): Deleted.
        * NetworkProcess/AdClickAttributionManager.h:
        (WebKit::AdClickAttributionManager::AdClickAttributionManager):
        (WebKit::AdClickAttributionManager::setConversionURLForTesting): Deleted.
        * NetworkProcess/NetworkSession.cpp:
        (WebKit::NetworkSession::storeAdClickAttribution):

2019-04-17  Tim Horton  <timothy_horton@apple.com>

        UI↔Web deadlock when printing with a JavaScript alert visible
        https://bugs.webkit.org/show_bug.cgi?id=196839
        <rdar://problem/49157642>

        Reviewed by Andy Estes.

        * Platform/IPC/Connection.cpp:
        (IPC::Connection::dispatchWorkQueueMessageReceiverMessage):
        (IPC::Connection::sendSyncReply):
        (IPC::Connection::dispatchSyncMessage):
        * Platform/IPC/Connection.h:
        (IPC::Connection::hasOutstandingOutgoingSynchronousReplies const):
        Keep track of whether we owe the other side of the connection any
        delayed sync replies.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _webViewPrintFormatter]):
        Most actions one can take with a _WKWebViewPrintFormatter involve
        synchronously messaging the Web Content process with an infinite timeout.
        Doing so while the Web Content process is awaiting a reply to a deferred-reply
        synchronous message (like, say, an alert()) results in an app-destroying deadlock.
        Instead of that, return a nil _WKWebViewPrintFormatter, indicating to the client
        that we can't print right now.

        * UIProcess/ios/WKContentView.mm:
        (-[WKContentView _wk_pageCountForPrintFormatter:]):
        (-[WKContentView _wk_printedDocument]):
        The above isn't sufficient, though, because a sync message could arrive and
        be handled between creation and use of the _WKWebViewPrintFormatter.
        So, we also bail with a zero page count and null CGPDFDocument immediately
        before we would send a sync message to the Web Content process. Clients
        handle this less gracefully (e.g. showing a zero page PDF), but it is
        very rare compared to the above case.

2019-04-17  Zalan Bujtas  <zalan@apple.com>

        [ContentChangeObserver] Use aria role as a hint whether a tap should result in a synthetic click
        https://bugs.webkit.org/show_bug.cgi?id=196988
        <rdar://problem/49955328>

        Reviewed by Simon Fraser.

        Tapping on elements with cretain aria role attributes should trigger synthetic click the same way it does on form control elements. 

        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::isAriaRoleForImmediateClick):
        (WebKit::nodeAlwaysRequiresClick):
        (WebKit::WebPage::handleSyntheticClick):

2019-04-17  Alex Christensen  <achristensen@webkit.org>

        WKRetainPtr's adoption constructor should be private
        https://bugs.webkit.org/show_bug.cgi?id=197019

        Reviewed by Tim Horton.

        RefPtr and RetainPtr have already done this.  It makes us use nicer syntax.

        * UIProcess/API/C/WKContext.cpp:
        (WKContextSetDownloadClient):
        * UIProcess/API/cpp/WKRetainPtr.h:
        (WebKit::WKRetainPtr::WKRetainPtr):
        (WebKit::adoptWK):

2019-04-17  Alex Christensen  <achristensen@webkit.org>

        Fix crash during teardown of PingLoad
        https://bugs.webkit.org/show_bug.cgi?id=197024
        <rdar://problem/49973077>

        Reviewed by Jer Noble.

        * NetworkProcess/PingLoad.cpp:
        (WebKit::PingLoad::initialize):
        Early return if weakThis is null.

2019-04-17  Wenson Hsieh  <wenson_hsieh@apple.com>

        REGRESSION (r243926): [iOS] Release assertion when computing editor state during an overflow scroll triggered by layout
        https://bugs.webkit.org/show_bug.cgi?id=197012
        <rdar://problem/49908848>

        Reviewed by Simon Fraser.

        We hit the release assertion due to the following sequence of events:
        - Dispatch a queued event (in this case, a scroll event)
        - Invoke the scroll event listener, which modifies layout in some way
        - This scrolls an overflow scrollable container under the scope of layout
        - Overflow scrolling then calls didChangeSelection and triggers an editor state update, which updates layout

        In the case where the selection is in the main frame, we bail early due to the check for recursive layout (i.e.
        frameView->layoutContext().isInRenderTreeLayout()). However, in the case where the selection is inside a
        subframe, we end up skipping past this check, since the subframe's FrameView isn't currently laying out, and so
        we end up hitting the release assertion underneath the early return.

        To fix this, simply defer editor state updates due to overflow scrolling until the next remote layer tree commit
        instead of computing and sending the information immediately. While this only defers editor state updates during
        overflow scrolling, <rdar://problem/47258878> tracks making editor state updates deferred in the general case.

        Test: editing/selection/overflow-scroll-while-selecting-text.html

        * WebProcess/WebCoreSupport/ios/WebEditorClientIOS.mm:
        (WebKit::WebEditorClient::overflowScrollPositionChanged):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::didChangeOverflowScrollPosition):
        (WebKit::WebPage::didChangeSelection):
        (WebKit::WebPage::didChangeSelectionOrOverflowScrollPosition):
        * WebProcess/WebPage/WebPage.h:

2019-04-17  Chris Dumez  <cdumez@apple.com>

        Remember device orientation permission for the duration of the browsing session
        https://bugs.webkit.org/show_bug.cgi?id=196992
        <rdar://problem/49946067>

        Reviewed by Alex Christensen.

        Implement caching of device orientation permission decisions on the WebDeviceOrientationAndMotionAccessController,
        which is owned by the WebsiteDataStore. This way, if we already prompted the user of a given origin, we will
        remember the previous decision for the duration of the session and not prompt again.

        * Shared/WebsitePoliciesData.cpp:
        (WebKit::WebsitePoliciesData::encode const):
        (WebKit::WebsitePoliciesData::decode):
        * Shared/WebsitePoliciesData.h:
        * UIProcess/API/APIWebsitePolicies.cpp:
        (API::WebsitePolicies::copy const):
        (API::WebsitePolicies::data):
        * UIProcess/API/APIWebsitePolicies.h:
        * UIProcess/API/Cocoa/WKWebpagePreferences.mm:
        (toDeviceOrientationOrMotionPermissionState):
        (-[WKWebpagePreferences _setDeviceOrientationAndMotionAccessPolicy:]):
        (toWKWebsiteDeviceOrientationAndMotionAccessPolicy):
        (-[WKWebpagePreferences _deviceOrientationAndMotionAccessPolicy]):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::shouldAllowDeviceOrientationAndMotionAccess):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * UIProcess/WebsiteData/WebDeviceOrientationAndMotionAccessController.cpp: Added.
        (WebKit::WebDeviceOrientationAndMotionAccessController::shouldAllowDeviceOrientationAndMotionAccess):
        (WebKit::WebDeviceOrientationAndMotionAccessController::deviceOrientationPermission const):
        * UIProcess/WebsiteData/WebDeviceOrientationAndMotionAccessController.h: Copied from Source/WebCore/dom/DeviceOrientationAndMotionAccessController.h.
        * UIProcess/WebsiteData/WebsiteDataStore.h:
        (WebKit::WebsiteDataStore::deviceOrientationAndMotionAccessController):
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::shouldAllowDeviceOrientationAndMotionAccess):
        * WebProcess/WebCoreSupport/WebChromeClient.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::shouldAllowDeviceOrientationAndMotionAccess):
        * WebProcess/WebPage/WebPage.h:

2019-04-16  Andy Estes  <aestes@apple.com>

        [iOSMac] Use UIDocumentPickerViewController for picking files
        https://bugs.webkit.org/show_bug.cgi?id=196999
        <rdar://problem/49961414>

        Reviewed by Tim Horton.

        * UIProcess/ios/forms/WKFileUploadPanel.mm:
        (-[WKFileUploadPanel _showDocumentPickerMenu]):
        Changed to present a UIDocumentPickerViewController on iOSMac.

        (-[WKFileUploadPanel documentPicker:didPickDocumentsAtURLs:]):
        (-[WKFileUploadPanel documentPicker:didPickDocumentAtURL:]):
        Replaced a deprecated delegate method implementation.

2019-04-16  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] [WebKit2] Add support for honoring -[UIMenuItem dontDismiss]
        https://bugs.webkit.org/show_bug.cgi?id=196919
        <rdar://problem/41630459>

        Reviewed by Tim Horton.

        Adds modern WebKit support for -dontDismiss by implementing a couple of new platform hooks. Covered by a new
        layout test: editing/selection/ios/selection-after-changing-text-with-callout-menu.html.

        * Platform/spi/ios/UIKitSPI.h:

        Declare the private -dontDismiss property of UIMenuItem.

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

        Additionally teach the web view (not just the content view) to respond to the hook. This matters in the case
        where the WebKit client (most notably, Mail) overrides WKWebView methods to define custom actions in the menu
        controller. This scenario is exercised by the new layout test.

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

        If an action was performed where callout bar fading was ignored, then in WebKit, don't allow selection changes
        to fade the callout bar until after the next remote layer tree commit.

        (-[WKContentView _updateChangedSelection:]):

        Stop suppressing selection updates when showing B/I/U controls, now that we can properly honor the -dontDismiss
        property. This was originally introduced in <rdar://problem/15199925>, presumably to ensure that B/I/U buttons
        (which have -dontDismiss set to YES) don't trigger selection change and end up dismissing themselves; however,
        if triggering B/I/U actually changes the selection rects, this also means that the selection rects on-screen
        would be stale after triggering these actions. This effect is most noticeable when bolding text.

        (-[WKContentView shouldAllowHidingSelectionCommands]):

2019-04-16  Ross Kirsling  <ross.kirsling@sony.com>

        Unreviewed non-unified build fix after r244307.

        * WebProcess/WebCoreSupport/WebDiagnosticLoggingClient.h:

2019-04-16  Megan Gardner  <megan_gardner@apple.com>

        Allow sharing from imageSheet on an image document
        https://bugs.webkit.org/show_bug.cgi?id=196891
        <rdar://problem/25377386>

        Reviewed by Tim Horton.

        Allow sharing from an image sheet generated from an image document
        by storing the image URL and using it as a fallback for the URL.
        Store it as an image on WKElementAction to not accidentally trigger
        any actions that should actually be associated with pure URLs.

        * UIProcess/API/Cocoa/_WKActivatedElementInfo.h:
        * UIProcess/API/Cocoa/_WKActivatedElementInfo.mm:
        (-[_WKActivatedElementInfo _initWithInteractionInformationAtPosition:]):
        (-[_WKActivatedElementInfo _initWithType:URL:imageURL:location:title:ID:rect:image:]):
        (-[_WKActivatedElementInfo _initWithType:URL:imageURL:location:title:ID:rect:image:userInfo:]):
        (-[_WKActivatedElementInfo imageURL]):
        (-[_WKActivatedElementInfo _initWithType:URL:location:title:ID:rect:image:]): Deleted.
        (-[_WKActivatedElementInfo _initWithType:URL:location:title:ID:rect:image:userInfo:]): Deleted.
        * UIProcess/API/Cocoa/_WKActivatedElementInfoInternal.h:
        * UIProcess/API/Cocoa/_WKElementAction.mm:
        (+[_WKElementAction _elementActionWithType:customTitle:assistant:]):
        * UIProcess/ios/WKActionSheetAssistant.mm:
        (-[WKActionSheetAssistant showImageSheet]):
        (-[WKActionSheetAssistant defaultActionsForImageSheet:]):
        (-[WKActionSheetAssistant showLinkSheet]):
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _showAttachmentSheet]):
        (-[WKContentView _dataForPreviewItemController:atPosition:type:]):
        (-[WKContentView _presentedViewControllerForPreviewItemController:]):

2019-04-16  Wenson Hsieh  <wenson_hsieh@apple.com>

        [Cocoa] Add a way for Apple-internal clients to opt into recommended compatibility mode
        https://bugs.webkit.org/show_bug.cgi?id=196977
        <rdar://problem/49871194>

        Reviewed by Tim Horton.

        Add a helper method to query whether the navigation client should bypass policy safeguards when determining the
        recommended compatibility mode. We bypass policy safeguards in Cocoa platforms if the navigation delegate
        implements the new navigation delegate API.

        * UIProcess/API/APINavigationClient.h:
        (API::NavigationClient::shouldBypassCompatibilityModeSafeguards const):
        * UIProcess/Cocoa/NavigationState.h:
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::NavigationClient::shouldBypassCompatibilityModeSafeguards const):

2019-04-16  Per Arne Vollan  <pvollan@apple.com>

        -[WKWebsiteDataStore fetchDataRecordsOfTypes:completionHandler:] never returns _WKWebsiteDataTypeCredentials
        https://bugs.webkit.org/show_bug.cgi?id=196991
        <rdar://problem/45507423>

        Reviewed by Brent Fulgham.

        The credentials are stored in the Network process. To enable fetching credentials from the Network process,
        a proper process access type needs to be set for the credential Website data type.

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

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

        REGRESSION(r244162) Clearing website data from ephemeral WKWebsiteDataStore should finish instead of asserting or hanging
        https://bugs.webkit.org/show_bug.cgi?id=196995

        Reviewed by Brady Eidson.

        Always call CompletionHandlers.  Otherwise things hang or assert.
        I added an API test that asserts without this change so we don't regress this again.

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

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

        URL set by document.open() is not communicated to the UIProcess
        https://bugs.webkit.org/show_bug.cgi?id=196941
        <rdar://problem/49237544>

        Reviewed by Geoff Garen.

        Whenever the UIProcess is notified of an explicit document.open() call, update the
        PageLoadState to make sure the URL is up-to-date. Also make sure the page / process
        knows it committed a load (i.e. It is no longer showing the initially empty document).

        * UIProcess/PageLoadState.cpp:
        (WebKit::PageLoadState::didExplicitOpen):
        * UIProcess/PageLoadState.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didExplicitOpenForFrame):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDidExplicitOpen):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.h:

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

        Show prompt for device orientation access if the client does not implement the corresponding API delegate
        https://bugs.webkit.org/show_bug.cgi?id=196971
        <rdar://problem/49945840>

        Reviewed by Alex Christensen.

        Show prompt for device orientation access if the client does not implement the corresponding
        API delegate, instead of rejecting access by default.

        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::UIDelegate::UIClient::shouldAllowDeviceOrientationAndMotionAccess):
        * UIProcess/Cocoa/WKOrientationAccessAlert.h: Added.
        * UIProcess/Cocoa/WKOrientationAccessAlert.mm: Added.
        (WebKit::presentOrientationAccessAlert):
        * WebKit.xcodeproj/project.pbxproj:

2019-04-16  Zalan Bujtas  <zalan@apple.com>

        REGRESSION(r243557)[ContentChangeObserver] Need to double tap text formatting elements in MS Word web app
        https://bugs.webkit.org/show_bug.cgi?id=196975
        <rdar://problem/49489849>

        Reviewed by Simon Fraser.

        This patch ensures that we always proceed with synthetic click on form elements.

        Covered by existing tests.

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

2019-04-16  Timothy Hatcher  <timothy@apple.com>

        FrameView base background color always starts white.
        https://bugs.webkit.org/show_bug.cgi?id=196976

        Reviewed by Beth Dakin.

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::WebPage): Set m_backgroundColor before calling
        WebFrame::createWithCoreMainFrame so the call to create the FrameView
        for the empty page in transitionToCommittedForNewPage() gets
        the correct color from WebPage.

2019-04-16  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, fix the build with recent SDKs.

        * UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm:
        (WebKit::WKWebViewState::store):

2019-04-16  Commit Queue  <commit-queue@webkit.org>

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

        Causing all WK2 Debug builds to exit early after Assertion
        failures. (Requested by ShawnRoberts on #webkit).

        Reverted changeset:

        "URL set by document.open() is not communicated to the
        UIProcess"
        https://bugs.webkit.org/show_bug.cgi?id=196941
        https://trac.webkit.org/changeset/244321

2019-04-15  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: CRASH when reopening tab with docked inspector on crashed page
        https://bugs.webkit.org/show_bug.cgi?id=196954
        <rdar://problem/48716433>

        Reviewed by Ryosuke Niwa.

        * UIProcess/mac/WebInspectorProxyMac.mm:
        (WebKit::WebInspectorProxy::inspectedViewFrameDidChange):

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

        URL set by document.open() is not communicated to the UIProcess
        https://bugs.webkit.org/show_bug.cgi?id=196941
        <rdar://problem/49237544>

        Reviewed by Geoffrey Garen.

        Whenever the UIProcess is notified of an explicit document.open() call, update the
        PageLoadState to make sure the URL is up-to-date. Also make sure the page / process
        knows it committed a load (i.e. It is no longer showing the initially empty document).

        * UIProcess/PageLoadState.cpp:
        (WebKit::PageLoadState::didExplicitOpen):
        * UIProcess/PageLoadState.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didExplicitOpenForFrame):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDidExplicitOpen):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.h:

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

        Stop using hyphenationFactor
        https://bugs.webkit.org/show_bug.cgi?id=196949
        <rdar://problem/49779594>

        Reviewed by Geoffrey Garen.

        * UIProcess/Cocoa/WKSafeBrowsingWarning.mm:
        (-[WKSafeBrowsingTextView initWithAttributedString:forWarning:]):
        I added this use of hyphenationFactor in r241124 but the other changes in that revision make the use of hyphenationFactor redundant.
        There is a reason to remove it in the radar.

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

        Forward declare WKWebView in _WKDiagnosticLoggingDelegate.h

        * UIProcess/API/Cocoa/_WKDiagnosticLoggingDelegate.h:
        This fixes builds where _WKDiagnosticLoggingDelegate.h is the only WebKit header included, such as my work on rdar://problem/35175989

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

        Add a DiagnosticLogging method taking an arbitrary dictionary of values.
        https://bugs.webkit.org/show_bug.cgi?id=196773

        Reviewed by Alex Christensen.

        In addition to adding the new logging delegate method (and piping everything into it), 
        add a new APIObject class to represent a signed integer.

        * Shared/API/APINumber.h:
        * Shared/API/APIObject.h:
        * Shared/Cocoa/APIObject.mm:
        (API::Object::newObject):
        * Shared/Cocoa/WKNSNumber.mm:
        (-[WKNSNumber dealloc]):
        (-[WKNSNumber objCType]):
        (-[WKNSNumber getValue:]):
        (-[WKNSNumber longLongValue]):
        (-[WKNSNumber _apiObject]):
        * Shared/UserData.cpp:
        (WebKit::UserData::encode):
        (WebKit::UserData::decode):
        * UIProcess/API/APIDiagnosticLoggingClient.h:
        * UIProcess/API/C/WKPageDiagnosticLoggingClient.h:
        * UIProcess/API/Cocoa/_WKDiagnosticLoggingDelegate.h:
        * UIProcess/Cocoa/DiagnosticLoggingClient.h:
        * UIProcess/Cocoa/DiagnosticLoggingClient.mm:
        (WebKit::DiagnosticLoggingClient::logDiagnosticMessageWithValueDictionary):
        * UIProcess/ProvisionalPageProxy.cpp:
        (WebKit::ProvisionalPageProxy::didReceiveMessage):
        * UIProcess/WebPageDiagnosticLoggingClient.cpp:
        (WebKit::WebPageDiagnosticLoggingClient::logDiagnosticMessageWithValueDictionary):
        * UIProcess/WebPageDiagnosticLoggingClient.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::logDiagnosticMessageWithValueDictionary):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * WebProcess/WebCoreSupport/WebDiagnosticLoggingClient.cpp:
        (WebKit::WebDiagnosticLoggingClient::logDiagnosticMessageWithValueDictionary):
        * WebProcess/WebCoreSupport/WebDiagnosticLoggingClient.h:

2019-04-15  Dean Jackson  <dino@apple.com>

        Provide option to not create a longpress gesture recognizer
        https://bugs.webkit.org/show_bug.cgi?id=196937
        <rdar://problem/49918278>

        Build fix for iOS platforms that don't have link preview.

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

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

        InjectedBundle parameters often need initialization function called before unarchiving
        https://bugs.webkit.org/show_bug.cgi?id=189709
        <rdar://problem/44573653>

        Reviewed by Ryosuke Niwa.

        Handle the case where the InjectedBundle parameters do not successfully decode because they contain
        an unexpected class from the embedding program. If this happens, try decoding the bundle parameters
        after the bundle initialiation function runs, which gives the embedding program the opportunity to
        register additional classes that are safe for serialization.

        Extend WKWebProcessPlugIn with a method that returns the names of any custom classes that need
        to be serialized by the InjectedBundle.
        
        Create a new 'decodeBundleParameters' method that contains the logic that used to live in 'initialize'.
        Revise 'initialize' to call this new method.

        * WebProcess/InjectedBundle/InjectedBundle.h:
        * WebProcess/InjectedBundle/mac/InjectedBundleMac.mm:
        (WebKit::InjectedBundle::initialize): Use the new method.
        (WebKit::InjectedBundle::decodeBundleParameters): Added.
        (WebKit::InjectedBundle::setBundleParameters): Use 'decodeObjectOfClasses' with the more complete
        'classesForCoder' method to unarchive the passed bundle parameters, rather than the
        NSDictionary-specific method, since InjectedBundles often encode other types of objects, and the
        NSDictionary object may itself hold other kinds of objects.
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugIn.h:
        (WebKit::WKWebProcessPlugIn::additionalClassesForParameterCoder): Added.

2019-04-15  Dean Jackson  <dino@apple.com>

        Provide option to not create a longpress gesture recognizer
        https://bugs.webkit.org/show_bug.cgi?id=196937
        <rdar://problem/49918278>

        Reviewed by Antoine Quint.

        A WebKitAdditions file has changed name to WKContentViewInteractionWKInteraction.mm.

        Add a property to toggle if we should add a long press gesture
        recognizer.

        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView setupInteraction]):
        (shouldUsePreviewForLongPress):
        (-[WKContentView shouldUsePreviewForLongPress]):

2019-04-15  Don Olmstead  <don.olmstead@sony.com>

        [CMake] WebCore derived sources should only be referenced inside WebCore
        https://bugs.webkit.org/show_bug.cgi?id=196904

        Reviewed by Konstantin Tokarev.

        Remove reference to DERIVED_SOURCES_WEBCORE_DIR in PlatformMac.cmake.

        * PlatformMac.cmake:

2019-04-15  Zalan Bujtas  <zalan@apple.com>

        DrawingArea should only capture painting related milestones
        https://bugs.webkit.org/show_bug.cgi?id=196926
        <rdar://problem/48003845>

        Reviewed by Tim Horton.

        While dispatching layout milestones (mixture of layout and painting items), the associated drawing areas should only capture the painting related milestones.
        These captured milestones get dispatched later in the commit handler to ensure that they are not forwarded prematurely.
        However the truly layout related milestones (e.g. DidFirstVisuallyNonEmptyLayout) should be dispatched right away with no delay.

        * Shared/RemoteLayerTree/RemoteLayerTreeTransaction.h:
        (WebKit::RemoteLayerTreeTransaction::newlyReachedPaintingMilestones const):
        (WebKit::RemoteLayerTreeTransaction::setNewlyReachedPaintingMilestones):
        (WebKit::RemoteLayerTreeTransaction::newlyReachedLayoutMilestones const): Deleted.
        (WebKit::RemoteLayerTreeTransaction::setNewlyReachedLayoutMilestones): Deleted.
        * Shared/RemoteLayerTree/RemoteLayerTreeTransaction.mm:
        (WebKit::RemoteLayerTreeTransaction::encode const):
        (WebKit::RemoteLayerTreeTransaction::decode):
        * UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm:
        (WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTree):
        * WebProcess/WebPage/DrawingArea.h:
        (WebKit::DrawingArea::addMilestonesToDispatch):
        (WebKit::DrawingArea::dispatchDidReachLayoutMilestone): Deleted.
        * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h:
        (WebKit::RemoteLayerTreeDrawingArea::addMilestonesToDispatch):
        * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm:
        (WebKit::RemoteLayerTreeDrawingArea::flushLayers):
        (WebKit::RemoteLayerTreeDrawingArea::dispatchDidReachLayoutMilestone): Deleted.
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::dispatchDidReachLayoutMilestone):
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
        (WebKit::TiledCoreAnimationDrawingArea::addMilestonesToDispatch):
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
        (WebKit::TiledCoreAnimationDrawingArea::sendPendingNewlyReachedPaintingMilestones):
        (WebKit::TiledCoreAnimationDrawingArea::flushLayers):
        (WebKit::TiledCoreAnimationDrawingArea::sendPendingNewlyReachedLayoutMilestones): Deleted.
        (WebKit::TiledCoreAnimationDrawingArea::dispatchDidReachLayoutMilestone): Deleted.

2019-04-15  John Wilander  <wilander@apple.com>

        Send delayed Ad Click Attribution conversion requests to the click source
        https://bugs.webkit.org/show_bug.cgi?id=196838
        <rdar://problem/47650157>

        Reviewed by Chris Dumez and Youenn Fablet.

        This patch schedules a conversion request with appropriate data going to the
        click source as a result of an ad click conversion.

        WebKit::AdClickAttributionManager makes use of existing WebKit::PingLoad
        infrastructure to make the request. This will probably be reworked into a
        dedicated load class further on.

        New test infrastructure allows for an override of both the conversion URL
        and the 24-48 hour timer.

        * NetworkProcess/AdClickAttributionManager.cpp: Added.
        (WebKit::AdClickAttributionManager::ensureDestinationMapForSource):
        (WebKit::AdClickAttributionManager::store):
        (WebKit::AdClickAttributionManager::startTimer):
            Convenience function to support test override.
        (WebKit::AdClickAttributionManager::convert):
            This function now sets the timer.
        (WebKit::AdClickAttributionManager::fireConversionRequest):
            Fire an individual request.
        (WebKit::AdClickAttributionManager::firePendingConversionRequests):
            This is the timer function that iterates over all pending attributions.
        (WebKit::AdClickAttributionManager::clear):
            Now clears the two new test settings members.
        (WebKit::AdClickAttributionManager::toString const):
        * NetworkProcess/AdClickAttributionManager.h: Renamed from Source/WebKit/NetworkProcess/NetworkAdClickAttribution.h.
        (WebKit::AdClickAttributionManager::AdClickAttributionManager):
        (WebKit::AdClickAttributionManager::setPingLoadFunction):
        (WebKit::AdClickAttributionManager::setOverrideTimerForTesting):
        (WebKit::AdClickAttributionManager::setConversionURLForTesting):
        * NetworkProcess/NetworkAdClickAttribution.cpp: Renamed from Source/WebKit/NetworkProcess/NetworkAdClickAttribution.cpp.
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::storeAdClickAttribution):
        (WebKit::NetworkProcess::dumpAdClickAttribution):
        (WebKit::NetworkProcess::clearAdClickAttribution):
        (WebKit::NetworkProcess::setAdClickAttributionOverrideTimerForTesting):
        (WebKit::NetworkProcess::setAdClickAttributionConversionURLForTesting):
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:
        * NetworkProcess/NetworkSession.cpp:
        (WebKit::NetworkSession::NetworkSession):
        (WebKit::NetworkSession::setAdClickAttributionOverrideTimerForTesting):
        (WebKit::NetworkSession::setAdClickAttributionConversionURLForTesting):
        * NetworkProcess/NetworkSession.h:
        * NetworkProcess/PingLoad.cpp:
        (WebKit::PingLoad::PingLoad):
        (WebKit::m_blobFiles):
        (WebKit::PingLoad::initialize):
            The PingLoad constructor is now split in two to allow for construction
            without a WebKit::NetworkConnectionToWebProcess object. The body of
            the constructor was moved into the new initialize() function which is
            shared between constructors.
        * NetworkProcess/PingLoad.h:
        * Sources.txt:
            Removed NetworkProcess/NetworkAdClickAttribution.cpp and added
            NetworkProcess/NetworkAdClickAttribution.cpp.
        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetAdClickAttributionOverrideTimerForTesting):
        (WKPageSetAdClickAttributionConversionURLForTesting):
        * UIProcess/API/C/WKPagePrivate.h:
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::dumpAdClickAttribution): Deleted.
        (WebKit::NetworkProcessProxy::clearAdClickAttribution): Deleted.
        * UIProcess/Network/NetworkProcessProxy.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::dumpAdClickAttribution):
        (WebKit::WebPageProxy::clearAdClickAttribution):
        (WebKit::WebPageProxy::setAdClickAttributionOverrideTimerForTesting):
        (WebKit::WebPageProxy::setAdClickAttributionConversionURLForTesting):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::dumpAdClickAttribution): Deleted.
        (WebKit::WebProcessPool::clearAdClickAttribution): Deleted.
        * UIProcess/WebProcessPool.h:
        * WebKit.xcodeproj/project.pbxproj:

2019-04-15  Devin Rousso  <drousso@apple.com>

        WebDriver: Set Cookie endpoint does not correctly set subdomain cookies
        https://bugs.webkit.org/show_bug.cgi?id=196872
        <rdar://problem/49233240>

        Reviewed by Joseph Pecoraro.

        * UIProcess/Automation/WebAutomationSession.cpp:
        (WebKit::WebAutomationSession::addSingleCookie):
        Rather than try to "force" the cookie to be set on the current active URL, use the cookie
        itself to figure out which domain it should be set on.

2019-04-15  Philippe Normand  <pnormand@igalia.com>

        [GTK][WPE] Add enable-media websetting
        https://bugs.webkit.org/show_bug.cgi?id=196863

        Reviewed by Michael Catanzaro.

        It can be useful for headless browsers, for instance. The setting is enabled by default.

        * Shared/WebPreferences.yaml:
        * UIProcess/API/glib/WebKitSettings.cpp:
        (webKitSettingsSetProperty):
        (webKitSettingsGetProperty):
        (webkit_settings_class_init):
        (webkit_settings_get_enable_media):
        (webkit_settings_set_enable_media):
        * UIProcess/API/gtk/WebKitSettings.h:
        * UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt:
        * UIProcess/API/wpe/WebKitSettings.h:
        * UIProcess/API/wpe/docs/wpe-1.0-sections.txt:

2019-04-14  Rob Buis  <rbuis@igalia.com>

        Link prefetch not useful for top-level navigation
        https://bugs.webkit.org/show_bug.cgi?id=195623

        Reviewed by Youenn Fablet.

        Cache cross-domain top-level prefetches in a dedicated cache. When a navigation
        to the same url is done within a threshold (5 seconds), reuse the
        prefetch cache entry, move it to the disk cache and navigate to
        the url, meaning no extra network trip is needed. When not used within
        the threshold period, the prefetch entry will be erased using a timer.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::lowMemoryHandler):
        * NetworkProcess/NetworkProcess.h:
        (WebKit::NetworkProcess::prefetchCache):
        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::retrieveCacheEntry):
        (WebKit::NetworkResourceLoader::didReceiveResponse):
        (WebKit::NetworkResourceLoader::didReceiveBuffer):
        (WebKit::NetworkResourceLoader::tryStoreAsCacheEntry):
        (WebKit::NetworkResourceLoader::isCrossOriginPrefetch const):
        * NetworkProcess/NetworkResourceLoader.h:
        * NetworkProcess/cache/PrefetchCache.cpp: Added.
        (WebKit::PrefetchCache::Entry::Entry):
        (WebKit::PrefetchCache::PrefetchCache):
        (WebKit::PrefetchCache::~PrefetchCache):
        (WebKit::PrefetchCache::clear):
        (WebKit::PrefetchCache::take):
        (WebKit::PrefetchCache::store):
        (WebKit::PrefetchCache::sessionPrefetchMap const):
        (WebKit::PrefetchCache::clearExpiredEntries):
        * NetworkProcess/cache/PrefetchCache.h: Added.
        (WebKit::PrefetchCache::Entry::response const):
        (WebKit::PrefetchCache::Entry::releaseBuffer):
        * Shared/WebPreferences.yaml:
        * Sources.txt:
        * WebKit.xcodeproj/project.pbxproj:

2019-04-14  Andy Estes  <aestes@apple.com>

        [Cocoa] WKCustomProtocolLoader should store a WeakPtr to its LegacyCustomProtocolManagerProxy
        https://bugs.webkit.org/show_bug.cgi?id=196893
        <rdar://problem/48318983>

        Reviewed by Anders Carlsson.

        In addition to manually invalidating each WKCustomProtocolLoader's _customProtocolManagerProxy
        pointer when the LegacyCustomProtocolManagerClient is invalidated, use a WeakPtr in case the
        LegacyCustomProtocolManagerProxy is ever destroyed without first invalidating the client.
        Also add null pointer checks to NSURLConnectionDelegate methods, which might be called after
        the LegacyCustomProtocolManagerProxy has been destroyed.

        * UIProcess/Cocoa/LegacyCustomProtocolManagerClient.mm:
        (-[WKCustomProtocolLoader initWithLegacyCustomProtocolManagerProxy:customProtocolID:request:]):
        (-[WKCustomProtocolLoader cancel]):
        (-[WKCustomProtocolLoader connection:didFailWithError:]):
        (-[WKCustomProtocolLoader connection:didReceiveResponse:]):
        (-[WKCustomProtocolLoader connection:didReceiveData:]):
        (-[WKCustomProtocolLoader connection:willSendRequest:redirectResponse:]):
        (-[WKCustomProtocolLoader connectionDidFinishLoading:]):
        (WebKit::LegacyCustomProtocolManagerClient::startLoading):
        (WebKit::LegacyCustomProtocolManagerClient::invalidate):
        (-[WKCustomProtocolLoader customProtocolManagerProxyDestroyed]): Deleted.
        * UIProcess/Network/CustomProtocols/LegacyCustomProtocolManagerProxy.h:

2019-04-14  Don Olmstead  <don.olmstead@sony.com>

        [CMake] JavaScriptCore derived sources should only be referenced inside JavaScriptCore
        https://bugs.webkit.org/show_bug.cgi?id=196742

        Reviewed by Konstantin Tokarev.

        Don't set JavaScriptCore_SCRIPTS_DIR now that it is set within WebKitFS.

        * CMakeLists.txt:
        * PlatformWin.cmake:
        
        Remove use of DERIVED_SOURCES_JAVASCRIPTCORE_DIR.

2019-04-13  Chris Dumez  <cdumez@apple.com>

        [ Mac Debug ] TestWebKitAPI.ProcessSwap.ReuseSuspendedProcessForRegularNavigationRetainBundlePage is a flaky crash
        https://bugs.webkit.org/show_bug.cgi?id=196548
        <rdar://problem/49567254>

        Reviewed by Darin Adler.

        Update ProvisionalPageProxy methods to more consistently ignore unexpected IPC from the process. Previously,
        some of the methods were doing this, but some other like didFailProvisionalLoadForFrame() weren't and this
        was leading to this flaky crash. The issue is that if we do the load in an existing process that was recently
        doing, there may be leftover IPC for the same pageID and this IPC gets received by the ProvisionalPageProxy
        even though it is from a previous navigation. For this reason, the ProvisionalPageProxy should ignore all
        incoming IPC that is not for its associated navigation.

        * UIProcess/ProvisionalPageProxy.cpp:
        (WebKit::ProvisionalPageProxy::didPerformClientRedirect):
        (WebKit::ProvisionalPageProxy::didStartProvisionalLoadForFrame):
        (WebKit::ProvisionalPageProxy::didFailProvisionalLoadForFrame):
        (WebKit::ProvisionalPageProxy::didCommitLoadForFrame):
        (WebKit::ProvisionalPageProxy::didNavigateWithNavigationData):
        (WebKit::ProvisionalPageProxy::didChangeProvisionalURLForFrame):
        (WebKit::ProvisionalPageProxy::decidePolicyForNavigationActionAsync):
        (WebKit::ProvisionalPageProxy::decidePolicyForResponse):
        (WebKit::ProvisionalPageProxy::didPerformServerRedirect):
        (WebKit::ProvisionalPageProxy::didReceiveServerRedirectForProvisionalLoadForFrame):
        (WebKit::ProvisionalPageProxy::decidePolicyForNavigationActionSync):

2019-04-13  Wenson Hsieh  <wenson_hsieh@apple.com>

        Unreviewed, try to fix the internal build after r244239

        Force the bots to regenerate WKWebpagePreferences.h by touching the file. Adds a `Foundation/Foundation.h`
        import that was missing anyways.

        * UIProcess/API/Cocoa/WKWebpagePreferences.h:

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

        Enable modern compatibility mode by default in WKWebView on some devices
        https://bugs.webkit.org/show_bug.cgi?id=196883
        <rdar://problem/49864527>

        Reviewed by Tim Horton.

        Make some minor adjustments to new API.

        * Shared/WebCompatibilityMode.h:

        Rename WebCompatibilityMode::Default to WebCompatibilityMode::Recommended.

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

        Now that the role of the UseModernCompatibilityModeByDefault debug preference is limited to bypassing linked-on-
        or-after and app bundle compatibility hacks, we no longer make this default to true in iOSMac.

        * UIProcess/API/APIWebsitePolicies.h:
        * UIProcess/API/Cocoa/WKNavigationDelegate.h:

        Rename the withPreferences: label to just preferences:.

        * UIProcess/API/Cocoa/WKWebViewConfiguration.h:
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::setNavigationDelegate):
        (WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction):
        * UIProcess/Cocoa/VersionChecks.h:
        * UIProcess/ios/WebPageProxyIOS.mm:

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

        WebDriver: fix typo in EnterFullscreen.js in error-handling code
        https://bugs.webkit.org/show_bug.cgi?id=196882
        <rdar://problem/49867122>

        Reviewed by Devin Rousso.

        * UIProcess/Automation/atoms/EnterFullscreen.js:
        (enterFullscreen):

2019-04-12  Ross Kirsling  <ross.kirsling@sony.com>

        Unreviewed fix for non-unified build.

        * Shared/PrintInfo.cpp:
        Add missing include from r244202.

2019-04-12  Saam barati  <sbarati@apple.com>

        Sometimes we need to user fewer CPUs in our threading calculations
        https://bugs.webkit.org/show_bug.cgi?id=196794
        <rdar://problem/49389497>

        Reviewed by Yusuke Suzuki.

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

2019-04-12  Devin Rousso  <drousso@apple.com>

        WebDriver: evaluating javascript shouldn't fail if a dialog is shown
        https://bugs.webkit.org/show_bug.cgi?id=196847
        <rdar://problem/49609396>

        Reviewed by Brian Burg.

        * UIProcess/Automation/WebAutomationSession.cpp:
        (WebKit::WebAutomationSession::willShowJavaScriptDialog):

2019-04-12  Ross Kirsling  <ross.kirsling@sony.com>

        WebKit should build successfully even with -DENABLE_UNIFIED_BUILDS=OFF
        https://bugs.webkit.org/show_bug.cgi?id=196845

        Reviewed by Ryosuke Niwa.

        * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h:
        * NetworkProcess/NetworkCORSPreflightChecker.cpp:
        * NetworkProcess/NetworkDataTask.cpp:
        * NetworkProcess/NetworkHTTPSUpgradeChecker.cpp:
        * NetworkProcess/NetworkHTTPSUpgradeChecker.h: Include wtf/Forward.h for String and CompletionHandler fwd decls.
        * NetworkProcess/NetworkProcess.cpp:
        * NetworkProcess/NetworkResourceLoadMap.cpp:
        * NetworkProcess/NetworkResourceLoadMap.h:
        * NetworkProcess/NetworkResourceLoader.cpp:
        * NetworkProcess/PingLoad.h:
        * Shared/WebCompiledContentRuleListData.cpp:
        * Shared/gtk/WebEventFactory.cpp:
        * UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
        (WKWebsiteDataStoreStatisticsClearInMemoryAndPersistentStore):
        (WKWebsiteDataStoreStatisticsClearInMemoryAndPersistentStoreModifiedSinceHours):
        (WKWebsiteDataStoreStatisticsResetToConsistentState):
        * UIProcess/Downloads/DownloadProxyMap.cpp:
        * UIProcess/InspectorTargetProxy.cpp:
        * UIProcess/PageClient.h:
        * UIProcess/ProcessAssertion.cpp:
        * UIProcess/ProvisionalPageProxy.h:
        * UIProcess/WebPageInspectorTargetAgent.h:
        * UIProcess/geoclue/GeoclueGeolocationProvider.cpp:
        * WebProcess/Cache/WebCacheStorageConnection.cpp:
        (WebKit::WebCacheStorageConnection::updateQuotaBasedOnSpaceUsage):
        * WebProcess/InjectedBundle/API/c/WKBundle.cpp:
        (WKBundleSetDatabaseQuota):
        * WebProcess/Storage/WebServiceWorkerFetchTaskClient.h:
        Add missing includes / forward declarations to address compiler errors on GTK / WinCairo.

2019-04-12  Eric Carlson  <eric.carlson@apple.com>

        Update AudioSession route sharing policy
        https://bugs.webkit.org/show_bug.cgi?id=196776
        <rdar://problem/46501611>

        Reviewed by Jer Noble.

        * UIProcess/ios/forms/WKAirPlayRoutePicker.mm:
        (-[WKAirPlayRoutePicker showFromView:routeSharingPolicy:routingContextUID:hasVideo:]):

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

        WebsitePolicies doesn't copy its media source policy in WebsitePolicies::copy
        https://bugs.webkit.org/show_bug.cgi?id=196862

        Reviewed by Darin Adler.

        Add a missing bit of code to copy m_mediaSourcePolicy over when making a copy of WebsitePolicies. This doesn't
        have any observable effect, since m_mediaSourcePolicy isn't currently exposed as SPI on WKWebpagePreferences.

        * UIProcess/API/APIWebsitePolicies.cpp:
        (API::WebsitePolicies::copy const):

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

        [iOS WK2] Make -webkit-overflow-scrolling be a no-op
        https://bugs.webkit.org/show_bug.cgi?id=196803
        rdar://problem/49078202

        Reviewed by Antti Koivisto.

        Flip LegacyOverflowScrollingTouchEnabled to false.

        * Shared/WebPreferences.yaml:

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

        [iOS] Software keyboard is shown too frequently on some websites
        https://bugs.webkit.org/show_bug.cgi?id=195856
        <rdar://problem/49191395>

        Reviewed by Darin Adler.

        On some websites, hidden editable elements are very frequently focused upon user interaction. Currently, this
        causes the software keyboard to pop in and out unexpectedly; luckily, these same sites also apply
        inputmode="none" to the hidden editable element, which ought to ensure that the software keyboard doesn't appear
        when the element is focused.

        However, since we disabled support for inputmode="none" in r240497, the software keyboard is no longer
        suppressed, and becomes a big nuissance. r240497 removed support for this feature because, when using a hardware
        keyboard, pressing the globe key no longer showed UI for switching languages. However, support for inputmode
        none makes a much larger impact when a software keyboard is used (since the entire software keyboard animates in
        and out), whereas a hardware keyboard only displays an input accessory view. For this reason, we can mitigate
        this bug without reintroducing <rdar://problem/47406553> by re-enabling inputmode="none", but only when a
        hardware keyboard is not attached.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (hardwareKeyboardAvailabilityChangedCallback):
        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView shouldShowAutomaticKeyboardUI]):

        Don't show the keyboard if inputmode is none and a hardware keyboard is not attached.

        (-[WKContentView _hardwareKeyboardAvailabilityChanged]):

        Reload input views if the inputmode is none to ensure that if a hardware keyboard is attached while editing an
        element with inputmode="none", we'll show the input accessory view once again.

2019-04-12  Antoine Quint  <graouts@apple.com>

        Opt some websites into the simulated mouse events dispatch quirk when in modern compatibility mode
        https://bugs.webkit.org/show_bug.cgi?id=196830
        <rdar://problem/49124313>

        Reviewed by Wenson Hsieh.

        We add a new policy to determine whether simulated mouse events dispatch are allowed.

        * Shared/WebsitePoliciesData.cpp:
        (WebKit::WebsitePoliciesData::encode const):
        (WebKit::WebsitePoliciesData::decode):
        (WebKit::WebsitePoliciesData::applyToDocumentLoader):
        * Shared/WebsitePoliciesData.h:
        * Shared/WebsiteSimulatedMouseEventsDispatchPolicy.h: Added.
        * UIProcess/API/APIWebsitePolicies.cpp:
        (API::WebsitePolicies::copy const):
        (API::WebsitePolicies::data):
        * UIProcess/API/APIWebsitePolicies.h:
        * WebKit.xcodeproj/project.pbxproj:

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

        [iOS Sim Debug] ASSERTION FAILED: m_downloads.isEmpty() Layout Test http/tests/websocket/tests/hybi/network-process-crash-error.html is a flaky crash
        https://bugs.webkit.org/show_bug.cgi?id=196781
        <rdar://problem/49789381>

        Reviewed by Darin Adler.

        When the network process gets terminated by the client, the NetworkProcessProxy object (and thus its DownloadProxyMap member) get
        destroyed right away, before we get a call to didClose(IPC::Connection&). As a result, if there are ongoing downloads at the time
        of the termination, we will hit the assertion above. To address the issue, update the NetworkProcessProxy destructor to invalidate
        its DownloadProxyMap member, similator to what it does in didClose(IPC::Connection&).

        * UIProcess/Downloads/DownloadProxyMap.cpp:
        (WebKit::DownloadProxyMap::invalidate):
        (WebKit::DownloadProxyMap::processDidClose): Deleted.
        * UIProcess/Downloads/DownloadProxyMap.h:
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::~NetworkProcessProxy):
        (WebKit::NetworkProcessProxy::didClose):

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

        [GTK] REGRESSION(r243860): Many tests failing
        https://bugs.webkit.org/show_bug.cgi?id=196791

        Reviewed by Joanmarie Diggs.

        Calling updateAccessibilityTree() on document loaded was causing a re-layout because of the backing store update
        that confused all those tests. We shouldn't need to update the accessibility tree on document load, it should
        happen automatically when root object is attached/detached. This patch emits children-changed::add when the root
        object wrapper is attached and children-changed::remove when the root object is detached. That way ATs are
        notified of the changes in the accessibility tree.

        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDidFinishDocumentLoad): Remove call to WebPage::updateAccessibilityTree().
        * WebProcess/WebPage/WebPage.h: Remove updateAccessibilityTree().
        * WebProcess/WebPage/atk/WebKitWebPageAccessibilityObject.cpp:
        (coreRootObjectWrapperDetachedCallback): Emit children-changed::remove.
        (rootWebAreaWrapper): Helper to get the root WebArea wrapper.
        (accessibilityRootObjectWrapper): Set the parent here when root object is created and emit children-changed::add.
        (webkitWebPageAccessibilityObjectRefChild): Dot no set the parent here, it's now set when the root object is created.
        * WebProcess/WebPage/atk/WebKitWebPageAccessibilityObject.h: Remove webkitWebPageAccessibilityObjectRefresh().
        * WebProcess/WebPage/gtk/WebPageGtk.cpp:

2019-04-11  Megan Gardner  <megan_gardner@apple.com>

        Update 'Save Image' to more clear instructions
        https://bugs.webkit.org/show_bug.cgi?id=196833
        <rdar://problem/47446845>

        Reviewed by Wenson Hsieh.

        Just updating to a new string.

        * UIProcess/API/Cocoa/_WKElementAction.mm:
        (+[_WKElementAction _elementActionWithType:customTitle:assistant:]):

2019-04-11  Chris Dumez  <cdumez@apple.com>

        Unable to run system Safari with trunk WebKit
        https://bugs.webkit.org/show_bug.cgi?id=196777
        <rdar://problem/49784574>

        Reviewed by Alex Christensen.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _initializeWithConfiguration:]):
        Add a linkedOnAfter check so that throwing exceptions when related web views use a different
        data store only happens for apps rebuilt using recent SDK.

        * UIProcess/Cocoa/VersionChecks.h:
        * UIProcess/Cocoa/VersionChecks.mm:
        (WebKit::linkedOnOrAfter):
        - By default, linkedOnOrAfter assumed Safari / MobileSafari is always linked-on-after. To satisfy my
          use cases, I introduced a new AssumeSafariIsAlwaysLinkedOnAfter parameter so that this behavior can
          be controlled by the caller.
        - In the header, DYLD_IOS_VERSION_* / DYLD_MACOS_VERSION_* constants are 0 when building with the
          non-internal SDK. As a result, the check instead linkedOnOrAfter() would cause us to always return
          true, which was wrong. I therefore updated the check inside linkedOnOrAfter() to special-case the
          0 value for sdkVersion.

2019-04-11  Zalan Bujtas  <zalan@apple.com>

        Add @page margin support
        https://bugs.webkit.org/show_bug.cgi?id=196680
        <rdar://problem/45217707>

        Reviewed by Tim Horton.

        * Shared/PrintInfo.cpp:
        (WebKit::PrintInfo::encode const):
        (WebKit::PrintInfo::decode):
        * Shared/PrintInfo.h:
        * Shared/WebPreferences.yaml:
        * Shared/gtk/PrintInfoGtk.cpp:
        (WebKit::PrintInfo::PrintInfo):
        * Shared/mac/PrintInfoMac.mm:
        (WebKit::PrintInfo::PrintInfo):
        * UIProcess/API/C/WKPage.cpp:
        (WKPageComputePagesForPrinting):
        * UIProcess/API/C/WKPreferences.cpp:
        (WKPreferencesSetPageAtRuleSupportEnabled):
        (WKPreferencesGetPageAtRuleSupportEnabled):
        * UIProcess/API/C/WKPreferencesRefPrivate.h:
        * UIProcess/GenericCallback.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::computedPagesCallback):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * UIProcess/mac/WKPrintingView.mm:
        (pageDidComputePageRects):
        (-[WKPrintingView _askPageToComputePageRects]):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::beginPrinting):
        (WebKit::WebPage::computePagesForPrinting):
        (WebKit::WebPage::computePagesForPrintingImpl):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::computePagesForPrintingAndDrawToPDF):

2019-04-11  Dean Jackson  <dino@apple.com>

        Extract UTI mapping and allow for additions
        https://bugs.webkit.org/show_bug.cgi?id=196822
        <rdar://problem/49822339>

        Reviewed by Tim Horton.

        Use the new helper to map MIME type to UTI.

        * UIProcess/Cocoa/SystemPreviewControllerCocoa.mm:
        (-[_WKPreviewControllerDataSource previewController:previewItemAtIndex:]):
        * UIProcess/ios/WKSystemPreviewView.mm:
        (getUTIForSystemPreviewMIMEType):


2019-04-11  Said Abou-Hallawa  <sabouhallawa@apple.com>

        REGRESSION (r244182): RemoteLayerTreeDrawingArea::flushLayers() should not be reentrant
        https://bugs.webkit.org/show_bug.cgi?id=196825

        Reviewed by Simon Fraser.

        Ensure the layer transactions IDs are sequential. So bail out of
        RemoteLayerTreeDrawingArea::flushLayers() if reentrancy is detected.

        * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h:
        * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm:
        (WebKit::RemoteLayerTreeDrawingArea::flushLayers):

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

        Allow the MediaSource API to be enabled via website policy
        https://bugs.webkit.org/show_bug.cgi?id=196429
        <rdar://problem/48774333>

        Reviewed by Tim Horton.

        Adds support for using WebsitePolicies to determine whether to enable the MediaSource API.

        * Shared/WebPreferences.yaml:

        Disengage the mediaSourceEnabled internal preference from the corresponding WebCore setting; to ensure that
        setting the preference to `true` still results in enabling the MediaSource API, we instead make it such that
        turning on mediaSourceEnabled causes WebsitePolicies to set its WebsiteMediaSourcePolicy to Enable.

        In the future, we should deprecate and remove this preference, in favor of simply setting preferred
        compatibility mode on WKWebpagePreferences.

        * Shared/WebPreferences.yaml:
        * Shared/WebsiteMediaSourcePolicy.h: Copied from Source/WebKit/Shared/WebsitePoliciesData.h.
        * Shared/WebsitePoliciesData.cpp:
        (WebKit::WebsitePoliciesData::encode const):
        (WebKit::WebsitePoliciesData::decode):

        Add plumbing for m_mediaSourcePolicy in the set of website policies.

        (WebKit::WebsitePoliciesData::applyToDocumentLoader):

        Update the document loader with the given media source policy. There are two possibilities when applying the set
        of policies to the document loader; either the document loader is already attached to a Frame, or the document
        loader is yet to be attached to a Frame.

        In the first case, we update Frame's settings on the spot, by calling the new applyPoliciesToSettings helper
        method. In the second scenario, we stash the policy state on DocumentLoader; when the DocumentLoader is attached
        to a Frame, we'll then update the Frame's settings using DocumentLoader's policy.

        * Shared/WebsitePoliciesData.h:
        * UIProcess/API/APIWebsitePolicies.cpp:
        (API::WebsitePolicies::data):
        * UIProcess/API/APIWebsitePolicies.h:
        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetPageNavigationClient):
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction):

        Move code that adjusts website policies after deciding policies for the navigation action from NavigationClient
        ::decidePolicyForNavigationAction to the completion handler of the policy listener. This allows us to respect
        default website policies on the web view configuration, even when using the C API to set the navigation client,
        and also allows us to have a single call site for adjustPoliciesForCompatibilityMode. This also enables our
        layout tests to opt into modern compatibility mode by default, when specifying modern compatibility mode on
        webpage preferences.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::decidePolicyForNavigationAction):
        (WebKit::WebPageProxy::adjustPoliciesForCompatibilityMode):
        * UIProcess/WebPageProxy.h:
        * WebKit.xcodeproj/project.pbxproj:

2019-04-11  Antti Koivisto  <antti@apple.com>

        REGRESSION: changing iPad orientation on blogger.com crashes under RemoteScrollingCoordinatorProxy::establishLayerTreeScrollingRelations()
        https://bugs.webkit.org/show_bug.cgi?id=196813
        <rdar://problem/49393264>

        Reviewed by Simon Fraser.

        No test, can't repro.

        * UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.mm:
        (WebKit::RemoteScrollingCoordinatorProxy::establishLayerTreeScrollingRelations):

        Null check the nodes.

2019-04-10  Chris Dumez  <cdumez@apple.com>

        Regression(r244144) ProcessSwap.ReuseSuspendedProcessLoadHTMLString API test is flaky
        https://bugs.webkit.org/show_bug.cgi?id=196784

        Reviewed by Antti Koivisto.

        When we enter accelerated compositing mode in the new process, we supposed to *close* the last
        SuspendedPageProxy, not destroy it. This was causing flakiness in the test because it was testing
        that we were using the SuspendedPageProxy's process for a cross-site link navigation, which is
        an optimization. This optimization was partly broken by r244144 as the SuspendedPageProxy would
        not sometimes be gone by the time we need it.

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

2019-04-10  Alex Christensen  <achristensen@webkit.org>

        WKNavigationResponse._downloadAttribute should be nil when no download attribute is present
        https://bugs.webkit.org/show_bug.cgi?id=196809
        <rdar://49800762>

        Reviewed by Brady Eidson.

        * UIProcess/API/Cocoa/WKNavigationResponse.mm:
        (-[WKNavigationResponse _downloadAttribute]):

2019-04-10  Tim Horton  <timothy_horton@apple.com>

        REGRESSION (r241734): ⌥⌘↑ and ⌥⌘↓ no longer navigate to previous/next Reading List article
        https://bugs.webkit.org/show_bug.cgi?id=196797
        <rdar://problem/48484715>

        Reviewed by Simon Fraser.

        * UIProcess/ios/WKKeyboardScrollingAnimator.mm:
        (-[WKKeyboardScrollingAnimator keyboardScrollForEvent:]):
        Validate the set of modifier keys pressed when handling a key event for scrolling:
        Ignore key events with multiple modifier keys pressed.
        Ignore key events with an invalid modifier key pressed for a given primary key.

2019-04-10  Said Abou-Hallawa  <sabouhallawa@apple.com>

        requestAnimationFrame should execute before the next frame
        https://bugs.webkit.org/show_bug.cgi?id=177484

        Reviewed by Simon Fraser.

        Replace the calls to Page::layoutIfNeeded() and willDisplayPage() by
        a single call to Page::updateRendering(). This new function implements 
        "Update the rendering" step of the HTML Event Loop specification
        <https://html.spec.whatwg.org/multipage/webappapis.html#update-the-rendering>.

        * WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp:
        (WebKit::DrawingAreaCoordinatedGraphics::scheduleCompositingLayerFlush):
        (WebKit::DrawingAreaCoordinatedGraphics::updateBackingStoreState):
        (WebKit::DrawingAreaCoordinatedGraphics::display):
        * WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.cpp:
        (WebKit::LayerTreeHost::layerFlushTimerFired):

        * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm:
        (WebKit::RemoteLayerTreeDrawingArea::flushLayers):
        -- Call Page::updateRendering() to make sure that "Update the rendering"
           happens immediately before updating the page.

        -- Move the call to RemoteLayerBackingStoreCollection::willFlushLayers()
           to be exactly before flushing the layers. This fixes the assertion
           ASSERT(m_inLayerFlush) which was firing when running a layout test.
           RemoteLayerTreeDrawingArea::flushLayers() now can call itself through
           TestRunner::notifyDone(). flushLayers() was calling willFlushLayers()
           twice before calling didFlushLayers().

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::layoutIfNeeded):
        (WebKit::WebPage::updateRendering):
        (WebKit::WebPage::willDisplayPage): Deleted.
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
        (WebKit::TiledCoreAnimationDrawingArea::flushLayers):

2019-04-10  Devin Rousso  <drousso@apple.com>

        Web Inspector: save sheet should be anchored underneath the tab bar when detached
        https://bugs.webkit.org/show_bug.cgi?id=196722
        <rdar://problem/49613280>

        Reviewed by Timothy Hatcher.

        * WebProcess/WebPage/WebInspectorUI.h:
        * WebProcess/WebPage/WebInspectorUI.cpp:
        (WebKit::WebInspectorUI::changeSheetRect): Added.
        * UIProcess/WebInspectorProxy.messages.in:
        * UIProcess/WebInspectorProxy.h:
        (WebKit::WebInspectorProxy::sheetRect const): Added.
        * UIProcess/WebInspectorProxy.cpp:
        (WebKit::WebInspectorProxy::setSheetRect): Added.
        (WebKit::WebInspectorProxy::platformSetSheetRect): Added.
        * UIProcess/gtk/WebInspectorProxyGtk.cpp:
        (WebKit::WebInspectorProxy::platformSetSheetRect): Added.
        * UIProcess/mac/WebInspectorProxyMac.mm:
        (-[WKWebInspectorProxyObjCAdapter window:willPositionSheet:usingRect:]): Added.
        (WebKit::WebInspectorProxy::platformSetSheetRect): Added.
        * UIProcess/win/WebInspectorProxyWin.cpp:
        (WebKit::WebInspectorProxy::platformSetSheetRect): Added.
        * UIProcess/wpe/WebInspectorProxyWPE.cpp:
        (WebKit::WebInspectorProxy::platformSetSheetRect): Added.

        * WebProcess/WebPage/RemoteWebInspectorUI.h:
        * WebProcess/WebPage/RemoteWebInspectorUI.cpp:
        (WebKit::RemoteWebInspectorUI::changeSheetRect): Added.
        * UIProcess/RemoteWebInspectorProxy.messages.in:
        * UIProcess/RemoteWebInspectorProxy.h:
        (WebKit::RemoteWebInspectorProxy::sheetRect const): Added.
        * UIProcess/RemoteWebInspectorProxy.cpp:
        (WebKit::RemoteWebInspectorProxy::setSheetRect): Added.
        (WebKit::RemoteWebInspectorProxy::platformSetSheetRect): Added.
        * UIProcess/gtk/RemoteWebInspectorProxyGtk.cpp:
        (WebKit::RemoteWebInspectorProxy::platformSetSheetRect): Added.
        * UIProcess/mac/RemoteWebInspectorProxyMac.mm:
        (-[WKRemoteWebInspectorProxyObjCAdapter window:willPositionSheet:usingRect:]): Added.
        (WebKit::RemoteWebInspectorProxy::platformCreateFrontendPageAndWindow):
        (WebKit::RemoteWebInspectorProxy::platformSetSheetRect): Added.

2019-04-10  Andy Estes  <aestes@apple.com>

        [iOS] Let PDFHostViewController specify the background color to use for WKPDFView
        https://bugs.webkit.org/show_bug.cgi?id=196785
        <rdar://problem/48240051>

        Reviewed by Tim Horton.

        * UIProcess/ios/WKPDFView.mm:
        (-[WKPDFView web_initWithFrame:webView:mimeType:]):

2019-04-10  Chris Dumez  <cdumez@apple.com>

        Unreviewed, rolling out r244146.

        Caused a few DeviceOrientation API test failures on iOS

        Reverted changeset:

        "Unable to run system Safari with trunk WebKit"
        https://bugs.webkit.org/show_bug.cgi?id=196777
        https://trac.webkit.org/changeset/244146

2019-04-10  Devin Rousso  <drousso@apple.com>

        Web Inspector: REGRESSION: lazy agents used outside of frontend/instrumentation can be accessed before being created
        https://bugs.webkit.org/show_bug.cgi?id=196725
        <rdar://problem/49669810>

        Reviewed by Timothy Hatcher.

        * WebProcess/WebPage/WebInspector.cpp:
        (WebKit::WebInspector::showMainResourceForFrame):

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

        Clear Cache Storage structures before removing all related files
        https://bugs.webkit.org/show_bug.cgi?id=196650

        Reviewed by Alex Christensen.

        Previously, we were clearing files in parallel to clearing the internal CacheStorage structures.
        To make things more deterministic, clear files/folders directly
        after CachesStorage structures have finished being cleared.

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

2019-04-10  Alex Christensen  <achristensen@webkit.org>

        Add SPI WKNavigationResponse._downloadAttribute
        https://bugs.webkit.org/show_bug.cgi?id=196755
        <rdar://49587365>

        Reviewed by Brady Eidson.

        * UIProcess/API/APINavigationResponse.h:
        * UIProcess/API/Cocoa/WKNavigationResponse.mm:
        (-[WKNavigationResponse _downloadAttribute]):
        * UIProcess/API/Cocoa/WKNavigationResponsePrivate.h:
        * UIProcess/ProvisionalPageProxy.cpp:
        (WebKit::ProvisionalPageProxy::decidePolicyForResponse):
        * UIProcess/ProvisionalPageProxy.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::decidePolicyForResponse):
        (WebKit::WebPageProxy::decidePolicyForResponseShared):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForResponse):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.h:

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

        SWClientConnection should not double hop to fire some events
        https://bugs.webkit.org/show_bug.cgi?id=196735

        Reviewed by Alex Christensen.

        Removed unnecessary method.

        * WebProcess/Storage/WebSWClientConnection.cpp:
        * WebProcess/Storage/WebSWClientConnection.h:

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

        [iOS] Fix iokit-get-properties sandbox violations
        https://bugs.webkit.org/show_bug.cgi?id=196782
        <rdar://problem/49497720>

        Reviewed by Brent Fulgham.

        Add iokit properties to the WebContent sandbox on iOS.

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

2019-04-10  Tim Horton  <timothy_horton@apple.com>

        Add modern API for overriding the page's specified viewport configuration
        https://bugs.webkit.org/show_bug.cgi?id=167734
        <rdar://problem/30331795>

        Reviewed by Simon Fraser.

        * Shared/WebPageCreationParameters.cpp:
        (WebKit::WebPageCreationParameters::encode const):
        (WebKit::WebPageCreationParameters::decode):
        * Shared/WebPageCreationParameters.h:
        Plumb overrideViewportArguments in WebPageCreationParameters, so that
        if the process crashes (or swaps) they are maintained.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (viewportArgumentsFromDictionary):
        (-[WKWebView _overrideViewportWithArguments:]):
        Add SPI to set override viewport arguments. Parse them into a ViewportArguments
        object and use the existing (now improved) overrideViewportArguments mechanism
        to take over the page's viewport arguments.

        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::creationParameters):
        * UIProcess/WebPageProxy.h:
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::setOverrideViewportArguments):
        * WebProcess/WebPage/WebPage.cpp:
        Plumb overrideViewportArguments around more.

2019-04-10  Jiewen Tan  <jiewen_tan@apple.com>

        Add runJavaScriptInFrame for WebPageProxy/WebPage
        https://bugs.webkit.org/show_bug.cgi?id=196750
        <rdar://problem/49755738>

        Reviewed by Youenn Fablet.

        Tests of the new method will be covered by the internal counterpart.

        * UIProcess/WebFrameProxy.cpp:
        (WebKit::WebFrameProxy::loadData):
        * UIProcess/WebFrameProxy.h:
        Add a comment.
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::runJavaScriptInMainFrame):
        (WebKit::WebPageProxy::runJavaScriptInMainFrameScriptWorld):
        Merge the above two runJavaScriptInMainFrame*.
        (WebKit::WebPageProxy::runJavaScriptInFrame):
        * UIProcess/WebPageProxy.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::loadDataInFrame):
        Add an assertion.
        (WebKit::WebPage::runJavaScript):
        (WebKit::WebPage::runJavaScriptInMainFrameScriptWorld):
        (WebKit::WebPage::runJavaScriptInFrame):
        (WebKit::WebPage::runJavaScriptInMainFrame): Deleted.
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:

2019-04-10  Chris Dumez  <cdumez@apple.com>

        Unable to run system Safari with trunk WebKit
        https://bugs.webkit.org/show_bug.cgi?id=196777
        <rdar://problem/49784574>

        Reviewed by Alex Christensen.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _initializeWithConfiguration:]):
        Add a linkedOnAfter check so that throwing exceptions when related web views use a different
        data store only happens for apps rebuilt using recent SDK.

        * UIProcess/Cocoa/VersionChecks.h:
        * UIProcess/Cocoa/VersionChecks.mm:
        (WebKit::linkedOnOrAfter):
        - By default, linkedOnOrAfter assumed Safari / MobileSafari is always linked-on-after. To satisfy my
          use cases, I introduced a new AssumeSafariIsAlwaysLinkedOnAfter parameter so that this behavior can
          be controlled by the caller.
        - In the header, DYLD_IOS_VERSION_* / DYLD_MACOS_VERSION_* constants are 0 when building with the
          non-internal SDK. As a result, the check instead linkedOnOrAfter() would cause us to always return
          true, which was wrong. I therefore updated the check inside linkedOnOrAfter() to special-case the
          0 value for sdkVersion.

2019-04-10  Chris Dumez  <cdumez@apple.com>

        Regression(r240562) Audio sometimes keeps playing in previous process after a process-swap
        https://bugs.webkit.org/show_bug.cgi?id=196774
        <rdar://problem/49460572>

        Reviewed by Alex Christensen.

        r240562 added logic to prevent flashing on navigation. When we receive the DidFailToSuspendAfterProcessSwap
        IPC from the previous process, we would delay closing the WebPage in that process until EnterAcceleratedCompositingMode
        IPC is received from the new process. The issue is that this was racy as we would receive the EnterAcceleratedCompositingMode
        IPC from the new process *before* receiving the DidFailToSuspendAfterProcessSwap IPC from the previous process, which which
        case we would fail to close the WebPage and audio could keep playing.

        To address the issue, the WebPageProxy keeps track of its last suspended page and notifies it whenever it receives the
        EnterAcceleratedCompositingMode IPC. If the suspended page already received the DidFailToSuspendAfterProcessSwap IPC, it
        will close the page. Otherwise, it will set a boolean data member indicating that we should not delay page closing when
        the DidFailToSuspendAfterProcessSwap is eventually received.

        * UIProcess/SuspendedPageProxy.cpp:
        (WebKit::SuspendedPageProxy::SuspendedPageProxy):
        (WebKit::SuspendedPageProxy::pageEnteredAcceleratedCompositingMode):
        (WebKit::SuspendedPageProxy::didProcessRequestToSuspend):
        * UIProcess/SuspendedPageProxy.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::suspendCurrentPageIfPossible):
        (WebKit::WebPageProxy::enterAcceleratedCompositingMode):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebProcessPool.cpp:
        * UIProcess/WebProcessPool.h:

2019-04-10  Timothy Hatcher  <timothy@apple.com>

        WKScrollView background color does not match WKWebView before content is loaded.
        https://bugs.webkit.org/show_bug.cgi?id=196745
        rdar://problem/49750810

        Reviewed by Megan Gardner.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (scrollViewBackgroundColor): Default to _contentView.backgroundColor on invalid base color.
        (-[WKWebView _processDidExit]): Reset to _contentView.backgroundColor.
        (-[WKWebView setBackgroundColor:]): Call _updateScrollViewBackground since it can use
        _contentView.backgroundColor and it has changed.

2019-04-10  Megan Gardner  <megan_gardner@apple.com>

        Fix text autoscrolling when typing in modern webkit
        https://bugs.webkit.org/show_bug.cgi?id=196718
        <rdar://problem/49225507>

        Reviewed by Tim Horton.

        For staging only. We need to turn off UIKit's scrolling behavior to land
        the changes we are making. To keep from the build ever breaking,
        I am temporarily circumventing the changes in UIKit. This will be removed
        once the next UIKit submission happens.

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKUIWKTextInteractionAssistant scrollSelectionToVisible]):
        (-[WKContentView setUpTextSelectionAssistant]):

2019-04-10  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOSMac] Opt into modern compatibility mode by default
        https://bugs.webkit.org/show_bug.cgi?id=196763
        <rdar://problem/49038732>

        Reviewed by Tim Horton.

        Achieve this by limiting legacy compatibility mode by default to non-iOSMac iOS only.

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

2019-04-10  Alex Christensen  <achristensen@webkit.org>

        RemoteObjectRegistry message receiver should be removed when WebPage::close is called instead of waiting until dealloc
        https://bugs.webkit.org/show_bug.cgi?id=196744
        <rdar://49415309>

        Reviewed by Chris Dumez.

        This is a similar problem to the one I fixed in r241306 so I piggy-backed on the same test.
        When you do a cross site navigation but the previous page is in a suspended process then you navigate back,
        you can get two WebPage objects in the same process with the same IDs.  WebPage::close has been called
        on the old one which is supposed to make it so all the message receivers associated with it have been removed
        so we don't have any loss of communication, but we missed the RemoteObjectRegistry messages, which are owned
        by the ObjC bundle object wrapping the WebPage (which can keep it alive if a strong reference to it is held).
        To fix the assertion that happens in this case and the resulting communication breakage, teach the WebPage about
        these messages so it can tear down the message receiver with the others it removes at close time.

        * Shared/API/Cocoa/RemoteObjectRegistry.h:
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:
        (-[WKWebProcessPlugInBrowserContextController dealloc]):
        (-[WKWebProcessPlugInBrowserContextController _remoteObjectRegistry]):
        * WebProcess/WebPage/Cocoa/WebPageCocoa.mm:
        (WebKit::WebPage::addRemoteObjectRegistry):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::close):
        * WebProcess/WebPage/WebPage.h:

2019-04-10  Chris Dumez  <cdumez@apple.com>

        Unreviewed, drop SuspendedPageProxy data member that is unused after r244075.

        * UIProcess/SuspendedPageProxy.h:

2019-04-10  Antoine Quint  <graouts@apple.com>

        Enable Pointer Events on watchOS
        https://bugs.webkit.org/show_bug.cgi?id=196771
        <rdar://problem/49040909>

        Reviewed by Dean Jackson.

        * Configurations/FeatureDefines.xcconfig:

2019-04-10  Brady Eidson  <beidson@apple.com>

        Background tabs are not fully reactivated after a link is opened from an external application.
        <rdar://problem/49533278> and https://bugs.webkit.org/show_bug.cgi?id=196705

        Reviewed by Chris Dumez.

        If an app unparents a WKWebView right after activation but before the "applicationWillEnterForeground" notification
        is dispatched, then that WKWebView is in a broken state with a frozen layer tree.

        The WKApplicationStateTrackingView logic needs to be a little more resilient.

        * UIProcess/ios/WKApplicationStateTrackingView.mm:
        (-[WKApplicationStateTrackingView willMoveToWindow:]): When clearing the window, remember the current background state.
        (-[WKApplicationStateTrackingView didMoveToWindow]): If our last observed background state doesn't match the current
          background state then fake the relevant notification.
        (-[WKApplicationStateTrackingView _applicationDidEnterBackground]): Remember that we've observed a backgrounding.
        (-[WKApplicationStateTrackingView _applicationWillEnterForeground]): Remember that we've observed a foregrounding.

2019-04-10  Diego Pino Garcia  <dpino@igalia.com>

        Unreviewed, build fix for r244097

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::actualPrepareToSuspend):
        (WebKit::NetworkProcess::resume):
        Added guards for ENABLE(SERVICE_WORKER)

2019-04-09  Keith Rollin  <krollin@apple.com>

        Unreviewed build maintenance -- update .xcfilelists.

        * DerivedSources-input.xcfilelist:
        * DerivedSources-output.xcfilelist:

2019-04-09  Zalan Bujtas  <zalan@apple.com>

        [AutoSizing] Avoid making text paragraphs scroll horizontally when there is a wide table
        https://bugs.webkit.org/show_bug.cgi?id=196743
        <rdar://problem/43897551>

        Reviewed by Tim Horton.

        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::transitionToCommittedForNewPage):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::setViewLayoutSize):

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

        Close service worker database on network process suspension
        https://bugs.webkit.org/show_bug.cgi?id=196623
        <rdar://problem/48930869>

        Reviewed by Alex Christensen.

        Close service worker database when preparing to suspend.
        On resume, push changes if any is needed.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::actualPrepareToSuspend):
        (WebKit::NetworkProcess::cancelPrepareToSuspend):
        (WebKit::NetworkProcess::processDidResume):
        * UIProcess/API/Cocoa/WKProcessPool.mm:
        (-[WKProcessPool _sendNetworkProcessWillSuspendImminently]):
        (-[WKProcessPool _sendNetworkProcessDidResume]):
        * UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
        * UIProcess/Network/NetworkProcessProxy.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::sendNetworkProcessWillSuspendImminently):
        (WebKit::WebProcessPool::sendNetworkProcessDidResume):
        * UIProcess/WebProcessPool.h:

2019-04-09  Daniel Bates  <dabates@apple.com>

        [iPad] Should open popover when the spacebar is pressed
        https://bugs.webkit.org/show_bug.cgi?id=196360
        <rdar://problem/49389129>

        Reviewed by Brent Fulgham.

        Pressing the spacebar should open the popover for a focused popup button (e.g. <select>) on iOS
        just like it does on the Mac.

        For now, we keep the iPhone behavior of blurring the element when the Done button is pressed and
        hence pressing spacebar does nothing (because there is no focused element).

        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView accessoryOpen]): Added. Extracted the logic from -_elementDidFocus to scroll to
        the focused element, update the accessory and then tell the accessory to begin editing.
        (-[WKContentView _elementDidFocus:userIsInteracting:blurPreviousNode:changingActivityState:userObject:]):
        Write in terms of -accessoryOpen.
        * UIProcess/ios/forms/WKFormPeripheralBase.mm:
        (-[WKFormPeripheralBase handleKeyEvent:]): Interpret the spacebar when the peripheral is closed (!_editing)
        and call -accessoryOpen to ultimately call back to this peripheral to tell it to begin editing,
        which will cause the popover to appear again.

2019-04-09  Chris Dumez  <cdumez@apple.com>

        Unreviewed, fix webkitpy failure after r244085.

        Use a list instead of a set for header includes so that the order is
        maintained.

        * Scripts/webkit/messages.py:

2019-04-09  Andy Estes  <aestes@apple.com>

        [Apple Pay] Add release logging to PaymentCoordinator
        https://bugs.webkit.org/show_bug.cgi?id=196738

        Reviewed by Alex Christensen.

        * WebProcess/ApplePay/WebPaymentCoordinator.cpp:
        (WebKit::WebPaymentCoordinator::isAlwaysOnLoggingAllowed const):
        * WebProcess/ApplePay/WebPaymentCoordinator.h:

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

        [Cocoa] Awaken UIProcess if WebContent process is awakened from suspensions unexpectedly.
        https://bugs.webkit.org/show_bug.cgi?id=196659

        Reviewed by Chris Dumez.

        * Platform/IPC/Connection.h:
        (IPC::Connection::sendWithAsyncReply):
        * Platform/spi/ios/AssertionServicesSPI.h:
        * Shared/Cocoa/ProcessTaskStateObserver.h: Added.
        (WebKit::ProcessTaskStateObserver::setClient):
        (WebKit::ProcessTaskStateObserver::client):
        (WebKit::ProcessTaskStateObserver::taskState const):
        * Shared/Cocoa/ProcessTaskStateObserver.mm: Added.
        (-[WKProcessTaskStateObserverDelegate process:taskStateDidChange:]):
        (WebKit::toProcessTaskStateObserverTaskState):
        (WebKit::ProcessTaskStateObserver::ProcessTaskStateObserver):
        (WebKit::ProcessTaskStateObserver::~ProcessTaskStateObserver):
        (WebKit::ProcessTaskStateObserver::setTaskState):
        * UIProcess/Cocoa/WebProcessProxyCocoa.mm:
        (WebKit::WebProcessProxy::processWasUnexpectedlyUnsuspended):
        * UIProcess/ProcessAssertion.h:
        * UIProcess/ProcessThrottler.cpp:
        (WebKit::ProcessThrottler::updateAssertion):
        * UIProcess/ProcessThrottler.h:
        (WebKit::ProcessThrottler::shouldBeRunnable const):
        * UIProcess/WebProcessProxy.h:
        * UIProcess/WebProcessProxy.messages.in:
        * UIProcess/ios/ProcessAssertionIOS.mm:
        (WebKit::reasonForState):
        (WebKit::toBKSProcessAssertionReason):
        (WebKit::ProcessAssertion::ProcessAssertion):
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::actualPrepareToSuspend):
        (WebKit::WebProcess::cancelPrepareToSuspend):
        (WebKit::WebProcess::processDidResume):
        * WebProcess/WebProcess.h:
        * WebProcess/cocoa/WebProcessCocoa.mm:
        (WebKit::WebProcess::processTaskStateDidChange):

2019-04-09  Alex Christensen  <achristensen@webkit.org>

        Clicking "Go Back" from a safe browsing warning from an iframe should navigate the WKWebView back to the previous page
        https://bugs.webkit.org/show_bug.cgi?id=196665
        <rdar://45115669>

        Reviewed by Geoff Garen.

        It is insufficient to just not navigate the subframe.  We must leave the page that contained it.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _showSafeBrowsingWarning:completionHandler:]):
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::showSafeBrowsingWarning):

2019-04-09  John Wilander  <wilander@apple.com>

        Pick up Ad Click Attribution conversions in NetworkResourceLoader::willSendRedirectedRequest()
        https://bugs.webkit.org/show_bug.cgi?id=196558
        <rdar://problem/47650245>

        Reviewed by Youenn Fablet.

        So called pixel requests have traditionally been used to send ad click
        attribution data to click sources. The privacy implications of such
        pixel requests are severe which is in part why browsers have started to
        block cookies from being sent in such third-party requests.

        To allow for a smooth transition to more privacy-friendly ad click
        attribution, we should allow servers to make a redirect to
        https://click-source.example/.well-known/ad-click-attribution/ to
        trigger a so called conversion.

        This patch checks for the well-known location in the path component of
        the redirect URL. If the request indeed goes to the well-known location,
        we parse the conversion data and send it to the storage in the network
        session.

        * NetworkProcess/NetworkAdClickAttribution.cpp:
        (WebKit::NetworkAdClickAttribution::convert):
            Reporting function.
        * NetworkProcess/NetworkAdClickAttribution.h:
        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::willSendRedirectedRequest):
            Now checks for the well-known location through a call to
            WebCore::AdClickAttribution::parseConversionRequest().
        * NetworkProcess/NetworkSession.cpp:
        (WebKit::NetworkSession::convertAdClickAttribution):
            Piping to WebKit::NetworkAdClickAttribution::convert().
        * NetworkProcess/NetworkSession.h:

2019-04-09  Chris Dumez  <cdumez@apple.com>

        [iOS] WebContent processes should be marked as "Foreground Running" when their view is visible
        https://bugs.webkit.org/show_bug.cgi?id=196695
        <rdar://problem/48073787>

        Reviewed by Tim Horton.

        In order for WebContent processes to get marked as "Foreground Running" when their view
        is visible on iOS, we now construct a _UILayerHostView in the UIProcess and add it as
        a subview of the WKContentView. The _UILayerHostView's visibility target is the
        WebContent process currently associated with the view.

        * Platform/spi/ios/UIKitSPI.h:
        * UIProcess/PageClient.h:
        (WebKit::PageClient::didCreateContextForVisibilityPropagation):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebProcessProxy.h:
        (WebKit::WebProcessProxy::contextIDForVisibilityPropagation):
        * UIProcess/WebProcessProxy.messages.in:
        * UIProcess/ios/PageClientImplIOS.h:
        * UIProcess/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::didCreateContextForVisibilityPropagation):
        * UIProcess/ios/WKContentView.h:
        * UIProcess/ios/WKContentView.mm:
        (-[WKContentView _commonInitializationWithProcessPool:configuration:]):
        (-[WKContentView _setupVisibilityPropagationView]):
        (-[WKContentView _processDidExit]):
        (-[WKContentView _didRelaunchProcess]):
        (-[WKContentView _processDidCreateContextForVisibilityPropagation]):
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::didCreateContextForVisibilityPropagation):
        * UIProcess/ios/WebProcessProxyIOS.mm:
        (WebKit::WebProcessProxy::didCreateContextForVisibilityPropagation):
        * WebProcess/WebProcess.h:
        * WebProcess/cocoa/WebProcessCocoa.mm:
        (WebKit::WebProcess::platformInitializeWebProcess):

2019-04-09  Sihui Liu  <sihui_liu@apple.com>

        Remove unnecessary network process assertion for IDB close
        https://bugs.webkit.org/show_bug.cgi?id=196693

        Reviewed by Geoffrey Garen.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::createIDBServer):
        (WebKit::NetworkProcess::notifyHoldingLockedFiles): Deleted.
        * NetworkProcess/NetworkProcess.h:
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::didClose):
        (WebKit::NetworkProcessProxy::setIsIDBDatabaseHoldingLockedFiles): Deleted.
        * UIProcess/Network/NetworkProcessProxy.h:
        * UIProcess/Network/NetworkProcessProxy.messages.in:

2019-04-09  Chris Dumez  <cdumez@apple.com>

        Loads using loadHTMLString() cause flashing when process-swapping
        https://bugs.webkit.org/show_bug.cgi?id=196714
        <rdar://problem/49637354>

        Reviewed by Antti Koivisto.

        Our logic to decide if we should construct a SuspendedPageProxy on process-swap was assuming
        a SuspendedPageProxy is only useful for PageCache and would therefore not create one if PageCache
        is disabled or if there is no associated WebBackForwardListItem. However, constructing a
        SuspendedPageProxy is also useful to prevent flashing when process-swapping as we need to keep
        displaying the layer of the previous process until there is something meaningful to show in the
        new process.

        This patch makes it so that we now construct a SuspendedPageProxy on process-swap, even if
        PageCache is disabled or if there is no associated WebBackForwardListItem. The process in
        question will not be useful for PageCache but it will avoid flashing. The SuspendedPageProxy's
        process may also get used for future navigations to the same site (as demonstrated by the
        API test) which is beneficial for performance.

        * UIProcess/SuspendedPageProxy.cpp:
        (WebKit::SuspendedPageProxy::SuspendedPageProxy):
        * UIProcess/SuspendedPageProxy.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::suspendCurrentPageIfPossible):
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::findReusableSuspendedPageProcess):

2019-04-08  Don Olmstead  <don.olmstead@sony.com>

        [CMake][WinCairo] Separate copied headers into different directories
        https://bugs.webkit.org/show_bug.cgi?id=196655

        Reviewed by Michael Catanzaro.

        * CMakeLists.txt:
        * PlatformWin.cmake:

2019-04-08  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] Do not allow starting selection drags when selection views are not visible
        https://bugs.webkit.org/show_bug.cgi?id=196686
        <rdar://problem/49399192>

        Reviewed by Tim Horton.

        Currently, on iOS, it's possible to start dragging selected text in a web view even if the selection itself is
        not visible. This can happen if the user selects some text, focuses a native text field, and then long presses
        the previously selected text. This is because the text is still selected in the document since we don't clear
        the selection when resigning first responder on iOS, despite the fact that the native selection view is no
        longer present.

        To fix this, we add plumbing to specify the set of allowed drag source actions when requesting drag start; this
        set of allowed drag source actions only includes DragSourceActionSelection if the selection view can be visible
        (i.e. the content view is first responder, and isn't suppressing text interactions). We then update WebPage's
        allowed drag source actions with this given set of actions, while sending "dragstart" to the page.

        * UIProcess/WebPageProxy.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView hasSelectablePositionAtPoint:]):
        (-[WKContentView textInteractionGesture:shouldBeginAtPoint:]):

        Only bail out of text selection in text that is already selected if the web view allows dragging text selections
        (i.e. the web view is first responder, and is not suppressing text interactions).

        (-[WKContentView _allowedDragSourceActions]):
        (-[WKContentView _dragInteraction:itemsForAddingToSession:withTouchAtPoint:completion:]):
        (-[WKContentView _dragInteraction:prepareForSession:completion:]):

        Pass the set of allowed drag source actions when requesting a drag start or adding items to an existing session.

        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::requestDragStart):
        (WebKit::WebPageProxy::requestAdditionalItemsForDragSession):

        Plumb the allowed drag source actions from the UI process (WKContentView) over to the web process (WebPage).

        * WebProcess/WebCoreSupport/WebDragClient.cpp:
        (WebKit::WebDragClient::dragSourceActionMaskForPoint):

        Instead of always returning Any, consult WebPage's allowed drag source actions.

        * WebProcess/WebPage/WebPage.h:
        (WebKit::WebPage::allowedDragSourceActions const):
        * WebProcess/WebPage/WebPage.messages.in:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::requestDragStart):
        (WebKit::WebPage::requestAdditionalItemsForDragSession):

        Set WebPage's allowed drag source actions to the given set of actions when sending a drag start to the page.

2019-04-08  Justin Fan  <justin_fan@apple.com>

        [Web GPU] Fix Web GPU experimental feature on iOS
        https://bugs.webkit.org/show_bug.cgi?id=196632

        Reviewed by Myles C. Maxfield.

        Add feature conditionals for iOS 11.
        Properly make Web GPU available on iOS 11+.

        * Configurations/FeatureDefines.xcconfig:
        * Configurations/WebKitTargetConditionals.xcconfig:

2019-04-08  Alex Christensen  <achristensen@webkit.org>

        Fix selector name after r243834
        https://bugs.webkit.org/show_bug.cgi?id=196549

        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (WebKit::NetworkSessionCocoa::NetworkSessionCocoa):
        I forgot the colon in the setter's name.

2019-04-08  Antti Koivisto  <antti@apple.com>

        Compute touch actions for touch point from remote layer tree regions
        https://bugs.webkit.org/show_bug.cgi?id=196701

        Reviewed by Simon Fraser.

        Add a function for finding the right layer and getting the touch actions in UI process side.

        The code is not used yet.

        * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeViews.h:
        * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeViews.mm:
        (WebKit::touchActionsForPoint):

        Use the same code as overlap hit testing for collecting the candidate layers for the touch point,
        taking event regions into account.
        Return the touch actions from the deepest event sensitive layer hit.

        (-[UIView _web_findDescendantViewAtPoint:withEvent:]):

        Modernize.

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

        Make HSTS list handling more robust against unexpected content 
        https://bugs.webkit.org/show_bug.cgi?id=196552
        <rdar://problem/43403817>

        Reviewed by Chris Dumez.

        Crash logs indicate we sometimes encounter null key values during processing.
        This patch adds some debug assertions to catch this in test environments, and
        allows the code to skip the bad entries if encountered.

        It also avoids calling CFDictionaryApplyFunction when the HSTS policies returned
        by _CFNetworkCopyHSTSPolicies is nullptr, which is a possible return value.

        * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
        (WebKit::filterPreloadHSTSEntry):
        (WebKit::NetworkProcess::getHostNamesWithHSTSCache):

2019-04-05  Brian Burg  <bburg@apple.com>

        Web Automation: clean up some WebAutomationSession methods to use modern async IPC
        https://bugs.webkit.org/show_bug.cgi?id=196168

        Reviewed by Devin Rousso.

        Modern WebKit IPC is capable of providing completion handlers and can track callback IDs.
        So, most messages between WebAutomationSession and its proxy can use this facility and stop
        keeping track of callback IDs manually. This makes most code easier to read on both the
        sender and receiver side.

        There are two cases that could not be converted:
        - For evaluateJavaScript, we cannot use async IPC because WebAutomationSession expects to
        be able to cancel all pending replies when a page navigates away, the web process crashes,
        or when handling an alert.
        - For takeScreenshot, there is not currently support in the modern async IPC code paths for
        sending the result back. ShareableBitmap and friends lack a modern decoder implementation.

        * UIProcess/Automation/WebAutomationSession.cpp:
        (WebKit::WebAutomationSession::resolveChildFrameHandle):
        (WebKit::WebAutomationSession::resolveParentFrameHandle):
        (WebKit::WebAutomationSession::computeElementLayout):
        (WebKit::WebAutomationSession::selectOptionElement):
        (WebKit::WebAutomationSession::getAllCookies):
        (WebKit::WebAutomationSession::deleteSingleCookie):
        (WebKit::WebAutomationSession::viewportInViewCenterPointOfElement):
        (WebKit::WebAutomationSession::didResolveChildFrame): Deleted.
        (WebKit::WebAutomationSession::didResolveParentFrame): Deleted.
        (WebKit::WebAutomationSession::didComputeElementLayout): Deleted.
        (WebKit::WebAutomationSession::didSelectOptionElement): Deleted.
        (WebKit::WebAutomationSession::didGetCookiesForFrame): Deleted.
        (WebKit::WebAutomationSession::didDeleteCookie): Deleted.
        * UIProcess/Automation/WebAutomationSession.h:
        * UIProcess/Automation/WebAutomationSession.messages.in:
        * WebProcess/Automation/WebAutomationSessionProxy.cpp:
        (WebKit::WebAutomationSessionProxy::resolveChildFrameWithOrdinal):
        (WebKit::WebAutomationSessionProxy::resolveChildFrameWithNodeHandle):
        (WebKit::WebAutomationSessionProxy::resolveChildFrameWithName):
        (WebKit::WebAutomationSessionProxy::resolveParentFrame):
        (WebKit::WebAutomationSessionProxy::computeElementLayout):
        (WebKit::WebAutomationSessionProxy::selectOptionElement):
        (WebKit::WebAutomationSessionProxy::getCookiesForFrame):
        (WebKit::WebAutomationSessionProxy::deleteCookie):
        * WebProcess/Automation/WebAutomationSessionProxy.h:
        * WebProcess/Automation/WebAutomationSessionProxy.messages.in:

2019-04-08  Alex Christensen  <achristensen@webkit.org>

        REGRESSION(236463) DownloadManager can call a null CompletionHandler
        https://bugs.webkit.org/show_bug.cgi?id=196414
        <rdar://problem/48389434>

        Reviewed by Geoff Garen.

        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::convertToDownload):
        DownloadManager::continueDecidePendingDownloadDestination is being called when there is no completion handler.
        r236463 introduced an unchecked code path that can allow this to happen.

2019-04-07  Commit Queue  <commit-queue@webkit.org>

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

        Broke API Test SafeBrowsing.WKWebViewGoBackIFrame (Requested
        by aakashjain on #webkit).

        Reverted changeset:

        "Clicking "Go Back" from a safe browsing warning from an
        iframe should navigate the WKWebView back to the previous
        page"
        https://bugs.webkit.org/show_bug.cgi?id=196665
        https://trac.webkit.org/changeset/243956

2019-04-07  Geoffrey Garen  <ggaren@apple.com>

        Remove stray byte added by r241131
        https://bugs.webkit.org/show_bug.cgi?id=196682

        Reviewed by Alexey Proskuryakov.

        Sublime Text thinks WKWebView.mm is binary instead of text.

        According to online documentation and bisecting, this is because r241131
        introduced a stray byte (probably a null byte?) into the file.

        I fixed this with Cmd-C Cmd-V.

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

2019-04-06  Wenson Hsieh  <wenson_hsieh@apple.com>

        Hide next and previous form control buttons when WKWebView is editable
        https://bugs.webkit.org/show_bug.cgi?id=196672
        <rdar://problem/35625321>

        Reviewed by Tim Horton.

        Adopt new UIKit SPI to hide or show next and previous controls in the form accessory view when changing
        editability.

        Test: KeyboardInputTests.FormNavigationAssistantBarButtonItems

        * Platform/spi/ios/UIKitSPI.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _setEditable:]):
        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _updateAccessory]):
        (-[WKContentView _didChangeWebViewEditability]):

2019-04-06  Antti Koivisto  <antti@apple.com>

        Combine event and touch action regions into a single class
        https://bugs.webkit.org/show_bug.cgi?id=196644
        <rdar://problem/49643614>

        Reviewed by Darin Adler.

        * Shared/RemoteLayerTree/RemoteLayerTreeTransaction.h:
        * Shared/RemoteLayerTree/RemoteLayerTreeTransaction.mm:
        (WebKit::RemoteLayerTreeTransaction::LayerProperties::decode):
        * UIProcess/RemoteLayerTree/RemoteLayerTreeNode.h:
        (WebKit::RemoteLayerTreeNode::eventRegion const):
        * UIProcess/RemoteLayerTree/RemoteLayerTreeNode.mm:
        (WebKit::RemoteLayerTreeNode::setEventRegion):
        * WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.cpp:
        (WebKit::PlatformCALayerRemote::setEventRegion):
        * WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.h:

2019-04-05  Yongjun Zhang  <yongjun_zhang@apple.com>

        We should pass minimumEffectiveDeviceWidth to web process on new page creation.
        https://bugs.webkit.org/show_bug.cgi?id=196077
        <rdar://problem/49108202>

        Reviewed by Chris Dumez.

        When a new web view is created, it is possible we don't have the web content process till a load
        is requested. This patch stashes minimumEffectiveDeviceWidth in WebPageProxy.cpp and passes that
        value down to web process via WebPageCreationParameters when a new process is created, just like
        we did for other values like viewportConfigurationLayoutSizeScaleFactor or viewportConfigurationViewLayoutSize.

        * Shared/WebPageCreationParameters.cpp:
        (WebKit::WebPageCreationParameters::encode const): Encode viewportConfigurationMinimumEffectiveDeviceWidth value.
        (WebKit::WebPageCreationParameters::decode): Decode viewportConfigurationMinimumEffectiveDeviceWidth value.
        * Shared/WebPageCreationParameters.h:
        * UIProcess/API/Cocoa/WKWebView.mm: Now that we stash the minimumEffectiveDeviceWidth value in WebPageProxy, we
            don't need the iVar in WKWebView any more.
        (-[WKWebView _dispatchSetViewLayoutSize:]): Use _page->minimumEffectiveDeviceWidth().
        (-[WKWebView _setViewScale:]): Ditto.
        (-[WKWebView _setMinimumEffectiveDeviceWidth:]): Ditto.
        (-[WKWebView _minimumEffectiveDeviceWidth]): Ditto.
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::creationParameters): Also add viewportConfigurationMinimumEffectiveDeviceWidth to
            web process creation parameter.
        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::minimumEffectiveDeviceWidth const): Returns m_viewportConfigurationMinimumEffectiveDeviceWidth.
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::setViewportConfigurationViewLayoutSize): Pass parameters.viewportConfigurationMinimumEffectiveDeviceWidth
            to web process.
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::WebPage): Take viewportConfigurationMinimumEffectiveDeviceWidth value from the parameter and
            set that to viewport configuration.

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

        [Cocoa] Deactivate the audio session before the WebProcess suspends.
        https://bugs.webkit.org/show_bug.cgi?id=196658

        Reviewed by Eric Carlson.

        Notify the PlatformMediaSessionManager when the process suspends or resumes.

        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::actualPrepareToSuspend):
        (WebKit::WebProcess::cancelPrepareToSuspend):
        (WebKit::WebProcess::processDidResume):

2019-04-05  Sihui Liu  <sihui_liu@apple.com>

        [iOS] Web process gets suspended while holding locked database files
        https://bugs.webkit.org/show_bug.cgi?id=196519
        <rdar://problem/49531797>

        Reviewed by Chris Dumez.

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

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

        Clicking "Go Back" from a safe browsing warning from an iframe should navigate the WKWebView back to the previous page
        https://bugs.webkit.org/show_bug.cgi?id=196665
        <rdar://45115669>

        Reviewed by Geoff Garen.

        It is insufficient to just not navigate the subframe.  We must leave the page that contained it.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _showSafeBrowsingWarning:completionHandler:]):
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::showSafeBrowsingWarning):

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

        Undeprecate WKNavigationData
        https://bugs.webkit.org/show_bug.cgi?id=196559
        <rdar://44927425>

        Reviewed by Geoff Garen.

        * UIProcess/API/Cocoa/WKNavigationData.h:
        It is used to communicate information from FrameLoaderClient::updateGlobalHistory() to the application.
        This use in WKBrowsingContextHistoryDelegate is definitely still deprecated, but its use in
        WKHistoryDelegatePrivate does not have an adequate replacement yet, so it must remain undeprecated SPI.

2019-04-05  Sihui Liu  <sihui_liu@apple.com>

        [iOS] Web process gets suspended while holding locked database files
        https://bugs.webkit.org/show_bug.cgi?id=196519
        <rdar://problem/49531797>

        Reviewed by Chris Dumez.

        * Shared/WebSQLiteDatabaseTracker.cpp:
        (WebKit::WebSQLiteDatabaseTracker::~WebSQLiteDatabaseTracker):
        * Shared/WebSQLiteDatabaseTracker.h:
        * WebProcess/WebProcess.cpp:
        (WebKit::m_webSQLiteDatabaseTracker):
        (WebKit::WebProcess::actualPrepareToSuspend):
        (WebKit::WebProcess::processWillSuspendImminently):
        (WebKit::WebProcess::cancelPrepareToSuspend):
        (WebKit::WebProcess::processDidResume):
        * WebProcess/WebProcess.h:

2019-04-05  Commit Queue  <commit-queue@webkit.org>

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

        This change breaks build of WPE and GTK ports (Requested by
        annulen on #webkit).

        Reverted changeset:

        "[CMake][WTF] Mirror XCode header directories"
        https://bugs.webkit.org/show_bug.cgi?id=191662
        https://trac.webkit.org/changeset/243833

2019-04-05  David Kilzer  <ddkilzer@apple.com>

        REGRESSION(r240685): Remove duplicate Headers entry for _WKInspectorWindow.h in Xcode project
        <https://bugs.webkit.org/show_bug.cgi?id=193951>
        <rdar://problem/47621366>

        Fixes the following build warnings:
            Warning: Multiple build commands for output file WebKit2_WebKit.roots/BuildRecords/WebKit2_installhdrs/Root/System/Library/Frameworks/WebKit.framework/PrivateHeaders/_WKInspectorWindow.h
            Warning: Multiple build commands for output file WebKit2_WebKit.roots/BuildRecords/WebKit2_installapi/Root/System/Library/Frameworks/WebKit.framework/PrivateHeaders/_WKInspectorWindow.h
            Warning: Multiple build commands for output file WebKit2_WebKit.roots/BuildRecords/WebKit2_install/Root/System/Library/Frameworks/WebKit.framework/PrivateHeaders/_WKInspectorWindow.h

        * WebKit.xcodeproj/project.pbxproj: Remove duplicate entry for
        _WKInspectorWindow.h.  In r240685, a second Headers entry was
        added, but the first one was never removed.

2019-04-05  Carlos Garcia Campos  <cgarcia@igalia.com>

        [ATK] Use a smart pointer for AccessibilityObject wrapper and remove GTK specific code
        https://bugs.webkit.org/show_bug.cgi?id=196593
        <rdar://problem/49599153>

        Reviewed by Michael Catanzaro.

        * WebProcess/WebPage/atk/WebKitWebPageAccessibilityObject.cpp:
        (accessibilityRootObjectWrapper): Cast wrapper() as AtkObject.

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

        Simple iframe scrolling test fails to get a composited scrolling frame in WebKitTestRunnerApp
        https://bugs.webkit.org/show_bug.cgi?id=196635

        Reviewed by Antti Koivisto.

        Remove WKBundleSetAsyncFrameScrollingEnabled().

        * WebProcess/InjectedBundle/API/c/WKBundle.cpp:
        (WKBundleSetAsyncFrameScrollingEnabled): Deleted.
        * WebProcess/InjectedBundle/API/c/WKBundlePrivate.h:

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

        [iOS WK2] REGRESSION (r242687): Programmatic scroll of overflow scroll results in bad rendering
        https://bugs.webkit.org/show_bug.cgi?id=195584

        Reviewed by Zalan Bujtas.

        Push data to the scrolling tree about whether an overflow:scroll scroll was programmatic, by having
        RenderLayer::scrollToOffset() call into AsyncScrollingCoordinator::requestScrollPositionUpdate(),
        just as we do for frames.

        AsyncScrollingCoordinator::requestScrollPositionUpdate() is generalized to take any ScrollableArea.

        Fix an assumption in the ScrollingTree that we only care about programmatic scrolls on the root node.
        ScrollingTree::commitTreeState() no longer sets isHandlingProgrammaticScroll; instead,
        callers of ScrollingTreeScrollingNode::scrollTo() pass a ScrollType. Commit functions pass
        ScrollType::Programmatic when handling RequestedScrollPosition changes as necessary.

        Programmatic scrolls need to get to the scrolling tree in the UI process so that we update
        the tree's notion of scroll position, and trigger actual UIScrollView scrolls (layers may have
        already been put in the right locations, but the UI process needs to know that a scroll happened).
        However, we need to prevent notifications from programmatic scrolls getting back to the
        web process, because this causes jumpiness. This is done via an early return in
        RemoteScrollingCoordinatorProxy::scrollingTreeNodeDidScroll().

        * UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.cpp:
        (WebKit::RemoteScrollingCoordinatorProxy::scrollingTreeNodeDidScroll):
        * UIProcess/RemoteLayerTree/ios/ScrollingTreeFrameScrollingNodeRemoteIOS.mm:
        (WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::commitStateAfterChildren): Subframe nodes have
        a delegate, and that will take care of the requestedScrollPosition update.
        * UIProcess/RemoteLayerTree/ios/ScrollingTreeOverflowScrollingNodeIOS.h:
        * UIProcess/RemoteLayerTree/ios/ScrollingTreeOverflowScrollingNodeIOS.mm:
        (WebKit::ScrollingTreeOverflowScrollingNodeIOS::commitStateAfterChildren):
        * UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.mm:
        (WebKit::ScrollingTreeScrollingNodeDelegateIOS::commitStateAfterChildren):

2019-04-04  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r243888.

        Introduced layout test crashes.

        Reverted changeset:

        "[macOS][iOS] Add filter to syscall sandbox rule"
        https://bugs.webkit.org/show_bug.cgi?id=196613
        https://trac.webkit.org/changeset/243888

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

        Pass storage quota parameters from UIProcess to NetworkProcess as part of WebsiteDataStore parameters
        https://bugs.webkit.org/show_bug.cgi?id=196543

        Reviewed by Alex Christensen.

        Renamed methods used to set cache storage quota to be storage generic
        since they will apply to all storage.

        Pass quota parameters as part of WebsiteDataStoreParameters from UIProcess
        to NetworkProcess (start-up time and new WebsiteDataStore time).

        Compute on UIProcess the quota for third party origins using the default rule of dividing by 10.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::initializeNetworkProcess):
        (WebKit::NetworkProcess::addWebsiteDataStore):
        (WebKit::NetworkProcess::initializeStorageQuota):
        (WebKit::NetworkProcess::setCacheStorageParameters):
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:
        * Shared/WebsiteDataStoreParameters.cpp:
        (WebKit::WebsiteDataStoreParameters::encode const):
        (WebKit::WebsiteDataStoreParameters::decode):
        * Shared/WebsiteDataStoreParameters.h:
        * UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
        (WKWebsiteDataStoreSetPerOriginStorageQuota):
        (WKWebsiteDataStoreSetCacheStoragePerOriginQuota): Deleted.
        * UIProcess/API/C/WKWebsiteDataStoreRef.h:
        * UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
        (-[WKWebsiteDataStore _perOriginStorageQuota]):
        (-[WKWebsiteDataStore _setPerOriginStorageQuota:]):
        (-[WKWebsiteDataStore _cacheStoragePerOriginQuota]): Deleted.
        (-[WKWebsiteDataStore _setCacheStoragePerOriginQuota:]): Deleted.
        * UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::retrieveCacheStorageParameters):
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::parameters):
        * UIProcess/WebsiteData/WebsiteDataStore.h:
        (WebKit::WebsiteDataStore::perOriginStorageQuota const):
        (WebKit::WebsiteDataStore::setPerOriginStorageQuota):
        (WebKit::WebsiteDataStore::cacheStoragePerOriginQuota const): Deleted.
        (WebKit::WebsiteDataStore::setCacheStoragePerOriginQuota): Deleted.
        * UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp:
        (WebKit::WebsiteDataStoreConfiguration::copy):
        * UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h:
        (WebKit::WebsiteDataStoreConfiguration::perOriginStorageQuota):
        (WebKit::WebsiteDataStoreConfiguration::setPerOriginStorageQuota):
        (WebKit::WebsiteDataStoreConfiguration::cacheStoragePerOriginQuota): Deleted.
        (WebKit::WebsiteDataStoreConfiguration::setCacheStoragePerOriginQuota): Deleted.

2019-04-04  Wenson Hsieh  <wenson_hsieh@apple.com>

        Changing default website policies shouldn't change default website policies in subsequent navigations
        https://bugs.webkit.org/show_bug.cgi?id=196562
        <rdar://problem/49573377>

        Reviewed by Tim Horton.

        Currently, changing the default WKWebpagePreferences object when deciding navigation policy causes the set of
        default policies to change in subsequent navigations. Among other things, this prevents clients from passing
        a modified version of the default website policies into the decision handler without impacting future
        navigations. To fix this, teach API::WebsitePolicies to make a copy of itself, and then use this to pass a copy
        of the default website policies to the navigation delegate when deciding navigation policies.

        Test: DoNotAllowChangingDefaultWebpagePreferencesInDelegateMethod

        * UIProcess/API/APIWebsitePolicies.cpp:
        (API::WebsitePolicies::copy const):

        Add a helper method to copy a set of website policies.

        * UIProcess/API/APIWebsitePolicies.h:
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction):

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

        Unreviewed, fix -Wreturn-type warning

        * Shared/WebsiteData/WebsiteData.cpp:
        (WebKit::WebsiteData::ownerProcess):

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

        [macOS] Fix sandbox violations
        https://bugs.webkit.org/show_bug.cgi?id=196616
        <rdar://problem/49498040>

        Reviewed by Brent Fulgham.

        Fix some observed sandbox violations in the WebContent process on macOS.

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

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

        [MediaStream] Host should be able to mute screen capture and camera/microphone independently
        https://bugs.webkit.org/show_bug.cgi?id=196555
        <rdar://problem/47303865>

        Reviewed by Youenn Fablet.

        * UIProcess/API/C/WKPagePrivate.h: Add kWKMediaScreenCaptureMuted.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _setPageMuted:]):
        (-[WKWebView _setMediaCaptureMuted:]): Deleted, it was unused.
        (-[WKWebView _muteMediaCapture]): Deleted, it was unused.
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:

        * UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
        (WebKit::UserMediaPermissionRequestManagerProxy::processUserMediaPermissionValidRequest): Fix
        a log comment typo.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::setMediaStreamCaptureMuted): Use the new flag.
        (WebKit::WebPageProxy::activateMediaStreamCaptureInPage): Ditto.
        (WebKit::WebPageProxy::setMuted): Ditto.
        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::isMediaStreamCaptureMuted const): Ditto.

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

        [macOS][iOS] Add filter to syscall sandbox rule
        https://bugs.webkit.org/show_bug.cgi?id=196613
        <rdar://problem/49531420>

        Reviewed by Brent Fulgham.

        This will restrict the existing sandbox rule for the syscall.

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

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

        Service Worker Process does not have the right domain name
        https://bugs.webkit.org/show_bug.cgi?id=196585

        Reviewed by Chris Dumez.

        * Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceEntryPoint.mm:
        (WebKit::XPCServiceInitializerDelegate::getExtraInitializationData):
        Updated extraInitializationData to go from "security-origin" to "registrable-domain".

2019-04-04  Chris Dumez  <cdumez@apple.com>

        Temporarily disable delayed WebProcess launch on iOS to address PLT regression
        https://bugs.webkit.org/show_bug.cgi?id=196604
        <rdar://problem/49074131>

        Reviewed by Geoffrey Garen.

        Temporarily disable delayed WebProcess launch on iOS to address PLT regression. This
        is while I figure out how to enable this on iOS without regressed PLT.

        * UIProcess/WebProcessPool.h:

2019-04-04  Miguel Gomez  <magomez@igalia.com>

        [CoordGraphics] Revalidate need for 'coordinated update completion' in ThreadedCompositor
        https://bugs.webkit.org/show_bug.cgi?id=188839

        Reviewed by Žan Doberšek.

        Even if a platform layer has changed, don't wait for a main thread callback to finish the
        CompositingRunLoop update. It can be finished as soon as we receive the frameComplete signal.

        * Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.cpp:
        (WebKit::CompositingRunLoop::scheduleUpdate):
        (WebKit::CompositingRunLoop::stopUpdates):
        (WebKit::CompositingRunLoop::updateCompleted):
        (WebKit::CompositingRunLoop::updateTimerFired):
        (WebKit::CompositingRunLoop::compositionCompleted): Deleted.
        * Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.h:
        * Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:
        (WebKit::ThreadedCompositor::renderLayerTree):
        (WebKit::ThreadedCompositor::sceneUpdateFinished):
        (WebKit::ThreadedCompositor::displayRefreshMonitor):
        (WebKit::ThreadedCompositor::handleDisplayRefreshMonitorUpdate): Deleted.
        * Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.h:
        * WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.cpp:
        (WebKit::LayerTreeHost::handleDisplayRefreshMonitorUpdate):

2019-04-03  Carlos Garcia Campos  <cgarcia@igalia.com>

        [ATK] Cleanup WebPageAccessibilityObjectAtk
        https://bugs.webkit.org/show_bug.cgi?id=196537

        Reviewed by Michael Catanzaro.

        Several changes and cleanups:

         - Add WebKit prefix so that style checker doesn't complain about GObject conventions.
         - Rename the header to remove the Atk prefix to match the cpp file and class name.
         - Use pragma once.
         - Use nullptr instead of 0.
         - Use WEBKIT_DEFINE_TYPE instead of G_DEFINE_TYPE.
         - Return generic AtkObject* from constructor.

        * SourcesGTK.txt:
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/atk/WebKitWebPageAccessibilityObject.cpp: Renamed from Source/WebKit/WebProcess/WebPage/atk/WebPageAccessibilityObjectAtk.cpp.
        (accessibilityRootObjectWrapper):
        (webkitWebPageAccessibilityObjectInitialize):
        (webkitWebPageAccessibilityObjectGetIndexInParent):
        (webkitWebPageAccessibilityObjectGetNChildren):
        (webkitWebPageAccessibilityObjectRefChild):
        (webkit_web_page_accessibility_object_class_init):
        (webkitWebPageAccessibilityObjectNew):
        (webkitWebPageAccessibilityObjectRefresh):
        * WebProcess/WebPage/atk/WebKitWebPageAccessibilityObject.h: Added.
        * WebProcess/WebPage/atk/WebPageAccessibilityObject.h: Removed.
        * WebProcess/WebPage/gtk/WebPageGtk.cpp:
        (WebKit::WebPage::platformInitialize):
        (WebKit::WebPage::updateAccessibilityTree):

2019-04-03  Carlos Garcia Campos  <cgarcia@igalia.com>

        [ATK] Set ATK_STATE_TRANSIENT on the atk socket until it's embedded
        https://bugs.webkit.org/show_bug.cgi?id=196535

        Reviewed by Michael Catanzaro.

        This way the properties are not cached. Right now, if number of children is queried before the socket is
        embedded, 0 is returned and cached, so ATs don't see the child even after the socket has been embedded.

        * UIProcess/API/gtk/WebKitWebViewBaseAccessible.cpp:
        (webkitWebViewBaseAccessibleRefStateSet): Set ATK_STATE_TRANSIENT is the socket is not occupied.
        * UIProcess/gtk/WebPageProxyGtk.cpp:
        (WebKit::WebPageProxy::bindAccessibilityTree): Unset ATK_STATE_TRANSIENT.

2019-04-03  Carlos Garcia Campos  <cgarcia@igalia.com>

        [ATK] Embed the AtkSocket as soon as we receive the plug ID
        https://bugs.webkit.org/show_bug.cgi?id=196534

        Reviewed by Michael Catanzaro.

        We are currently storing the ID and waiting for the next time get_accessible is called to embed the socket. We
        can simply embed the socket when the plug ID is received.

        * UIProcess/API/gtk/WebKitWebViewBase.cpp:
        (webkitWebViewBaseGetAccessible):
        * UIProcess/WebPageProxy.h:
        * UIProcess/gtk/WebPageProxyGtk.cpp:
        (WebKit::WebPageProxy::bindAccessibilityTree):

2019-04-03  Carlos Garcia Campos  <cgarcia@igalia.com>

        [ATK] Don't touch accessibility tree in WebFrameLoaderClient::dispatchDidClearWindowObjectInWorld
        https://bugs.webkit.org/show_bug.cgi?id=193914

        Reviewed by Michael Catanzaro.

        Move it to dispatchDidFinishDocumentLoad, since we know we have the document at that point and we can create the
        root accessibility object wrapper.

        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDidFinishDocumentLoad):
        (WebKit::WebFrameLoaderClient::dispatchDidClearWindowObjectInWorld):

2019-04-03  Simon Fraser  <simon.fraser@apple.com>

        Simplify some "programmaticScroll" code paths
        https://bugs.webkit.org/show_bug.cgi?id=196589

        Reviewed by Zalan Bujtas.

        * WebProcess/WebPage/RemoteLayerTree/RemoteScrollingCoordinator.mm: Remove the parameter.
        (WebKit::RemoteScrollingCoordinator::scrollPositionChangedForNode): Use the enum type.
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::updateVisibleContentRects):

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

        The page's focusedFrame / frameSetLargestFrame do not get cleared on process swap or crash
        https://bugs.webkit.org/show_bug.cgi?id=196588
        <rdar://problem/49365787>

        Reviewed by Ryosuke Niwa.

        The page's focusedFrame / frameSetLargestFrame do not get cleared on process swap or crash.
        This can lead to returning stale frames to the client if it asks for those.

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

2019-04-03  Simon Fraser  <simon.fraser@apple.com>

        Remove the isProgrammaticScroll argument to requestScroll() because no-one uses it
        https://bugs.webkit.org/show_bug.cgi?id=196587

        Reviewed by Zalan Bujtas.

        This argument was unused.

        * UIProcess/API/gtk/PageClientImpl.cpp:
        (WebKit::PageClientImpl::requestScroll):
        * UIProcess/API/gtk/PageClientImpl.h:
        * UIProcess/API/wpe/PageClientImpl.cpp:
        (WebKit::PageClientImpl::requestScroll):
        * UIProcess/API/wpe/PageClientImpl.h:
        * UIProcess/PageClient.h:
        * UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm:
        (WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTree):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::requestScroll):
        * UIProcess/WebPageProxy.h:
        * UIProcess/ios/PageClientImplIOS.h:
        * UIProcess/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::requestScroll):
        * UIProcess/mac/PageClientImplMac.h:
        * UIProcess/mac/PageClientImplMac.mm:
        (WebKit::PageClientImpl::requestScroll):
        * UIProcess/win/PageClientImpl.cpp:
        (WebKit::PageClientImpl::requestScroll):
        * UIProcess/win/PageClientImpl.h:

2019-04-03  Myles C. Maxfield  <mmaxfield@apple.com>

        -apple-trailing-word is needed for browser detection
        https://bugs.webkit.org/show_bug.cgi?id=196575

        Unreviewed.

        * Configurations/FeatureDefines.xcconfig:

2019-04-03  Wenson Hsieh  <wenson_hsieh@apple.com>

        Add a WebKit internal feature flag to always enable modern compatibility mode by default
        https://bugs.webkit.org/show_bug.cgi?id=196526
        <rdar://problem/49532923>

        Reviewed by Tim Horton.

        Change UseModernCompatibilityModeByDefault from an internal preference to a debug preference, so that it may be
        enabled for all apps on the system.

        * Shared/WebPreferences.yaml:

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

        Fix internal build after r243829
        https://bugs.webkit.org/show_bug.cgi?id=196549

        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (WebKit::NetworkSessionCocoa::NetworkSessionCocoa):
        Some SDK's don't include this selector in the header.
        Use NSSelectorFromString.

2019-04-03  Don Olmstead  <don.olmstead@sony.com>

        [CMake][WTF] Mirror XCode header directories
        https://bugs.webkit.org/show_bug.cgi?id=191662

        Reviewed by Konstantin Tokarev.

        Use WTFFramework as a dependency and include frameworks/WTF.cmake for AppleWin internal
        builds.

        * CMakeLists.txt:

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

        Add SPI to disable legacy TLS fallback
        https://bugs.webkit.org/show_bug.cgi?id=196549
        <rdar://44979744>

        Reviewed by Geoffrey Garen.

        * NetworkProcess/NetworkSessionCreationParameters.cpp:
        (WebKit::NetworkSessionCreationParameters::privateSessionParameters):
        (WebKit::NetworkSessionCreationParameters::encode const):
        (WebKit::NetworkSessionCreationParameters::decode):
        * NetworkProcess/NetworkSessionCreationParameters.h:
        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (WebKit::NetworkSessionCocoa::NetworkSessionCocoa):
        * UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
        (-[WKWebsiteDataStore _setAllowsTLSFallback:]):
        (-[WKWebsiteDataStore _allowsTLSFallback]):
        * UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::ensureNetworkProcess):
        * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:
        (WebKit::WebsiteDataStore::parameters):
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::setSourceApplicationSecondaryIdentifier):
        (WebKit::WebsiteDataStore::setAllowsTLSFallback):
        (WebKit::WebsiteDataStore::setSourceApplicationBundleIdentifier):
        * UIProcess/WebsiteData/WebsiteDataStore.h:
        (WebKit::WebsiteDataStore::allowsTLSFallback const):
        (WebKit::WebsiteDataStore::networkingHasBegun):
        (WebKit::WebsiteDataStore::finalizeApplicationIdentifiers): Deleted.

2019-04-03  Myles C. Maxfield  <mmaxfield@apple.com>

        Remove support for -apple-trailing-word
        https://bugs.webkit.org/show_bug.cgi?id=196525

        Reviewed by Zalan Bujtas.

        This CSS property is nonstandard and not used.

        * Configurations/FeatureDefines.xcconfig:

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

        Resurrect and fix layout test http/tests/adClickAttribution/store-ad-click-attribution.html
        https://bugs.webkit.org/show_bug.cgi?id=196476

        Reviewed by Chris Dumez.

        Re-apply a change I reverted in r241754 now that it's safe to do so.

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

2019-04-03  Daniel Bates  <dabates@apple.com>

        [iOS] Should be able to dismiss picker or popover using the keyboard
        https://bugs.webkit.org/show_bug.cgi?id=196272
        <rdar://problem/48943170>

        Reviewed by Wenson Hsieh.

        Intercept key events and route them to the current input peripheral (if we have one). Add a base key event handler
        for all form peripherals that dismisses the accessory when either the Escape key is pressed or Command + . is pressed.
        I will fix this issue for the file upload picker/popover in <https://bugs.webkit.org/show_bug.cgi?id=196287>.

        * SourcesCocoa.txt: Add file WKFormPeripheralBase.mm.
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView endEditingAndUpdateFocusAppearanceWithReason]): Added.
        (-[WKContentView resignFirstResponderForWebView]): Write in terms of -endEditingAndUpdateFocusAppearance.
        (-[WKContentView inputView]): Code style nit while I am here; add an empty line to demarcate the "crazy"
        code that the FIXME is referring to and should ideally be removed from the code that is sane to always do.
        (-[WKContentView accessoryDone]): When the accessory is dismissed via the Done button (iPhone) or by pressing
        Escape or Command + . using a hardware keyboard (iPhone or iPad) then end the current editing session, but
        do not resign first responder status as the page activation state should not be changed.
        (-[WKContentView _handleKeyUIEvent:]): Bring back this code when building with USE(UIKIT_KEYBOARD_ADDITIONS)
        as we need to route key events to the input peripheral (if we have one). If the input peripheral handles it
        then we're done: no need to let UIKit or WebKit handle it when building with USE(UIKIT_KEYBOARD_ADDITIONS),
        respectively. If the input peripheral does not handle it then do what we do now.
        (-[WKContentView _elementDidFocus:userIsInteracting:blurPreviousNode:changingActivityState:userObject:]):
        If the element is re-focused and we have an input peripheral then we want to ensure we are first responder,
        reveal the focused element, update the accessory and tell the peripheral that editing has begun (again).
        For all other element re-focusing where we don't have a peripheral do what we do now. Also, update _isEditable
        to reflect whether the focused element contains selectable text. This is what UIKit wants to know when it queries
        -isEditable. Now that we no longer blur the focused element on iPad when the popover is dismissed and keep the
        peripheral until there is a focus change we need to ensure that we give the correct answer to UIKit on view
        editability. Otherwise, UIKit thinks it needs to update the text selection state when a popup button is tapped
        again (as part of its gesture recognizer logic) and this causes an assertion failure in UIKit after it calls back
        into us to ask for selection details, which we correctly respond with the equivalent of "we have none" and is
        not the answer UIKit expects since we told it we are editable. (Currently we manage to get away with telling UIKit
        we are always editable because it is not possible to perform a selection operation when we have a popover open.
        Closing the popover blurs the element, setting -isEditable to NO and deallocates the peripheral avoiding this issue).
        * UIProcess/ios/forms/WKFormColorControl.h:
        * UIProcess/ios/forms/WKFormColorControl.mm:
        (-[WKColorPopover controlEndEditing]): Dismiss the popover.
        (-[WKFormColorControl initWithView:]): Modified to call base class initializer.
        (-[WKFormColorControl assistantView]): Deleted.
        (-[WKFormColorControl beginEditing]): Deleted.
        (-[WKFormColorControl endEditing]): Deleted.
        * UIProcess/ios/forms/WKFormInputControl.h:
        * UIProcess/ios/forms/WKFormInputControl.mm:
        (-[WKFormInputControl initWithView:]): Modified to call base class initializer.
        (-[WKFormInputControl dateTimePickerCalendarType]): Write in terms of self.control.
        (-[WKDateTimePopover controlEndEditing]): Dismiss the popover and tell the controller that editing ended.
        (-[WKFormInputControl beginEditing]): Deleted.
        (-[WKFormInputControl endEditing]): Deleted.
        (-[WKFormInputControl assistantView]): Deleted.
        * UIProcess/ios/forms/WKFormPeripheral.h:
        * UIProcess/ios/forms/WKFormPeripheralBase.h: Added.
        * UIProcess/ios/forms/WKFormPeripheralBase.mm: Added.
        (-[WKFormPeripheralBase initWithView:control:]): Take ownership of the passed WKFormControl.
        (-[WKFormPeripheralBase beginEditing]): Turn around and tell the control.
        (-[WKFormPeripheralBase endEditing]): Ditto.
        (-[WKFormPeripheralBase assistantView]): Ditto.
        (-[WKFormPeripheralBase control]): Return the control.
        (-[WKFormPeripheralBase handleKeyEvent:]): Dismiss the accessory (in the same way we dismiss when the Done
        button is pressed on iPhone) on keydown of the Escape key or when we receive a UIKeyInputEscape event (for
        Command + .).
        * UIProcess/ios/forms/WKFormSelectControl.h:
        * UIProcess/ios/forms/WKFormSelectControl.mm:
        (-[WKFormSelectControl initWithView:]): Modified to call base class initializer.
        (-[WKFormSelectControl selectRow:inComponent:extendingSelection:]): Write in terms of self.control.
        (-[WKFormSelectControl selectFormPopoverTitle]): Ditto.
        (-[WKFormSelectControl assistantView]): Deleted.
        (-[WKFormSelectControl beginEditing]): Deleted.
        (-[WKFormSelectControl endEditing]): Deleted.
        * UIProcess/ios/forms/WKFormSelectPopover.mm:
        (-[WKSelectPopover controlEndEditing]): Dismiss the popover.
        * WebKit.xcodeproj/project.pbxproj: Add files WKFormPeripheralBase.{h, mm}.

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

        Resetting quota should take into account third party origins
        https://bugs.webkit.org/show_bug.cgi?id=196462

        Reviewed by Geoffrey Garen.

        When clearing the storage quota, we were resetting it to the default value
        without taking care of whether third party or not.
        Updated the code to ensure that the default quota is computed based on the origin.

        Updated existing test to cover this case.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::clearStorageQuota):
        (WebKit::NetworkProcess::setCacheStorageParameters):
        (WebKit::NetworkProcess::updateQuotaBasedOnSpaceUsageForTesting):
        (WebKit::NetworkProcess::storageQuotaManager):
        * NetworkProcess/NetworkProcess.h:
        (WebKit::NetworkProcess::StorageQuotaManagers::defaultQuota const):
        (WebKit::NetworkProcess::StorageQuotaManagers::setDefaultQuotas):
        (WebKit::NetworkProcess::StorageQuotaManagers::managersPerOrigin):

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

        Get rid of HTMLInputElement::setEditingValue
        https://bugs.webkit.org/show_bug.cgi?id=196402

        Reviewed by Darin Adler.

        * WebProcess/InjectedBundle/API/glib/DOM/WebKitDOMElement.cpp:
        (webkit_dom_element_html_input_element_set_editing_value):
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLInputElement.cpp:
        (webkit_dom_html_input_element_set_editing_value):

2019-04-03  Wenson Hsieh  <wenson_hsieh@apple.com>

        Add a WebKit internal feature flag to always enable modern compatibility mode by default
        https://bugs.webkit.org/show_bug.cgi?id=196526
        <rdar://problem/49532923>

        Reviewed by Antoine Quint.

        * Shared/WebPreferences.yaml:

2019-04-03  Wenson Hsieh  <wenson_hsieh@apple.com>

        Introduce and add plumbing for a website policy for meta viewport tag handling
        https://bugs.webkit.org/show_bug.cgi?id=196285

        Reviewed by Tim Horton.

        Add WebsiteMetaViewportPolicy, a bit that can be used to determine whether to respect or ignore the meta
        viewport tag and use native web page parameters instead of the default parameters.

        * Shared/WebsiteMetaViewportPolicy.h: Copied from Source/WebKit/Shared/WebsitePoliciesData.h.
        * Shared/WebsitePoliciesData.cpp:
        (WebKit::WebsitePoliciesData::encode const):
        (WebKit::WebsitePoliciesData::decode):
        (WebKit::WebsitePoliciesData::applyToDocumentLoader):

        Convert WebKit::WebsiteMetaViewportPolicy into WebCore::MetaViewportPolicy.

        * Shared/WebsitePoliciesData.h:
        * UIProcess/API/APIWebsitePolicies.cpp:
        (API::WebsitePolicies::data):
        * UIProcess/API/APIWebsitePolicies.h:

        Add additional plumbing for the policy flag.

        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::resetViewportDefaultConfiguration):

        Use native web page parameters if either "shouldIgnoreMetaViewport" is enabled, or the new policy is set.
        Eventually, the policy should completely replace the former preference once no internal clients depend on it.

2019-04-03  Wenson Hsieh  <wenson_hsieh@apple.com>

        Add plumbing for a compatibility mode preference in WebKit
        https://bugs.webkit.org/show_bug.cgi?id=196005

        Reviewed by Tim Horton.

        Add plumbing between the Cocoa API object (WKWebpagePreferences) and the inner C++ API object
        (API::WebsitePolicies) for compatibility mode.

        * Shared/WebCompatibilityMode.h: Added.
        * UIProcess/API/APIWebsitePolicies.h:
        * UIProcess/API/Cocoa/WKWebpagePreferences.mm:
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::adjustPoliciesForCompatibilityMode):
        * UIProcess/WebPageProxy.h:
        * UIProcess/ios/WebPageProxyIOS.mm:
        * WebKit.xcodeproj/project.pbxproj:

2019-04-03  Carlos Garcia Campos  <cgarcia@igalia.com>

        [CoordinatedGraphics] Hidden pages are not suspended after a web view resize
        https://bugs.webkit.org/show_bug.cgi?id=196487

        Reviewed by Žan Doberšek.

        When resizing the window, the hidden tabs are updated too, to avoid flickering or getting the old size when
        switching tabs. For that we need to resume painting but we are not suspending it again after the update.

        * WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp:
        (WebKit::DrawingAreaCoordinatedGraphics::updateBackingStoreState): Suspend the painting again after a
        synchronous update if needed.

2019-04-03  Carlos Garcia Campos  <cgarcia@igalia.com>

        Web Inspector: [GTK] Copy copies to nowhere
        https://bugs.webkit.org/show_bug.cgi?id=181228

        Reviewed by Michael Catanzaro.

        The thing is that those items are actually submenu items, with options, for example in the case of Copy to copy
        HTML, Text, XPath, etc. We are not correctly handling submenus when populating the context menu received from
        the web process.

        * UIProcess/gtk/WebContextMenuProxyGtk.cpp:
        (WebKit::WebContextMenuProxyGtk::populateSubMenu): Helper to populate submenu items recursively.
        (WebKit::WebContextMenuProxyGtk::populate): Handle submenu items.
        * UIProcess/gtk/WebContextMenuProxyGtk.h:

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

        [Cocoa] Add new API around WKWebpagePreferences in WKNavigationDelegate and WKWebViewConfiguration
        https://bugs.webkit.org/show_bug.cgi?id=196284
        <rdar://problem/47228232>

        Reviewed by Tim Horton.

        Tests for both of these APIs will be added in a subsequent patch.

        * Shared/API/Cocoa/WebKit.h:
        * UIProcess/API/APIPageConfiguration.cpp:
        (API::PageConfiguration::defaultWebsitePolicies const):
        (API::PageConfiguration::setDefaultWebsitePolicies):
        * UIProcess/API/APIPageConfiguration.h:
        * UIProcess/API/Cocoa/WKNavigationDelegate.h:

        Add a new navigation delegate hook to allow clients to return a WKWebpagePreference targeting the given
        navigation action.

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

        Add new API on WKWebViewConfiguration to specify a default WKWebpagePreference to use when navigating.

        (-[WKWebViewConfiguration copyWithZone:]):
        (-[WKWebViewConfiguration defaultWebpagePreferences]):
        (-[WKWebViewConfiguration setDefaultWebpagePreferences:]):
        * UIProcess/API/Cocoa/WKWebpagePreferences.h:
        * UIProcess/Cocoa/NavigationState.h:
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::setNavigationDelegate):
        (WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction):

        Invoke the new WKWebpagePreferences-based navigation delegate method.

        * WebKit.xcodeproj/project.pbxproj:
        * mac/postprocess-framework-headers.sh:
        * mac/replace-webkit-additions-in-framework-headers.sh: Added.

        Move logic in the "Postprocess Framework Headers" step responsible for stripping away included files from
        WebKitAdditions out into a separate build phase, called "Replace WebKitAdditions in Framework Headers". This
        ensures headers attempting to include from WebKitAdditions have these additional statements removed.

2019-04-02  Geoffrey Garen  <ggaren@apple.com>

        Eliminate plugin sandbox exceptions
        https://bugs.webkit.org/show_bug.cgi?id=196510

        Reviewed by Chris Dumez.

        * PluginProcess/mac/PluginProcessMac.mm:
        (WebKit::PluginProcess::initializeSandbox):
        * UIProcess/Plugins/PluginInfoStore.cpp:
        (WebKit::PluginInfoStore::shouldAllowPluginToRunUnsandboxed): Deleted.
        * UIProcess/Plugins/PluginInfoStore.h:
        * UIProcess/Plugins/mac/PluginInfoStoreMac.mm:
        (WebKit::PluginInfoStore::shouldUsePlugin):
        (WebKit::PluginInfoStore::shouldAllowPluginToRunUnsandboxed): Deleted.

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

        Fix assertion in http/tests/adClickAttribution/store-ad-click-attribution.html
        https://bugs.webkit.org/show_bug.cgi?id=196503

        Reviewed by Chris Dumez.

        In WebPageProxy::didDestroyNavigation we try to ignore a request to destroy a navigation from a page being navigated from
        during a cross-site navigation, but if the old web process sends the message after WebPageProxy::commitProvisionalPage
        has been called, we can still destroy a navigation when we are continuing a navigation in another process.  To prevent this,
        have the process not send the message when it knows the navigation is continuing in another process.
        Also make the use of unchecked navigation pointers more robust by checking it for nullity.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didCommitLoadForFrame):
        * WebProcess/WebPage/WebFrame.cpp:
        (WebKit::WebFrame::didReceivePolicyDecision):
        (WebKit::WebFrame::documentLoaderDetached):
        * WebProcess/WebPage/WebFrame.h:

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

        [iOS] Fix iokit-get-properties sandbox violation in the WebContent process
        https://bugs.webkit.org/show_bug.cgi?id=196500
        <rdar://problem/49497788>

        Reviewed by Brent Fulgham.

        Attempting to get the iokit properties 'product-description', 'artwork-display-gamut' and
        'artwork-scale-factor' is causing sandbox violations.

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

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

        [WK2] Add support for Window's beforeprint / afterprint events
        https://bugs.webkit.org/show_bug.cgi?id=196478

        Reviewed by Alex Christensen.

        Add support for Window's beforeprint / afterprint events as per:
        - https://html.spec.whatwg.org/#dom-print

        Blink and Gecko already support this.

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::beginPrinting):
        (WebKit::WebPage::endPrinting):

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

        REGRESSION (r243726): Crash at unrecognized selector: -[WKWebpagePreferences webpagePreferences]
        https://bugs.webkit.org/show_bug.cgi?id=196496
        <rdar://problem/49521634>

        Reviewed by Chris Dumez.

        r243726 made an incorrect assumption that all callers of -decidePolicyForNavigationAction:decisionHandler: and
        -decidePolicyForNavigationAction:userInfo:decisionHandler: must be instances of _WKWebsitePolicies, as opposed
        to the new WKWebpagePreferences. However, it's possible for clients (in this case, Safari) to already generate
        and pass in an instance of WKWebpagePreferences by bridging the C API opaque ref (WKWebsitePoliciesRef) into the
        Objective-C object (which is now WKWebpagePreferences, after my change).

        To maintain binary compatibility of trunk WebKit against prior versions of Safari, we need to handle both
        WKWebpagePreferences and the soon-to-be-deprecated _WKWebsitePolicies in the navigation action policy decision
        handler.

        Tests:  WebKit.WebsitePoliciesWithBridgingCast
                WebKit.WebsitePoliciesWithUnexpectedType

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

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

        Unreviewed, drop debug logging landed as part of r242903 by mistake.

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

2019-04-01  Remy Demarest  <rdemarest@apple.com>

        Add SPI to give injected bundles access to displayed PDFDocuments
        https://bugs.webkit.org/show_bug.cgi?id=196471
        <rdar://problem/48080768>

        Reviewed by Tim Horton.

        * WebKit.xcodeproj/project.pbxproj:

        * WebProcess/InjectedBundle/API/c/mac/WKBundlePageMac.h: Added.
        * WebProcess/InjectedBundle/API/c/mac/WKBundlePageMac.mm: Added.
        (WKBundlePageGetPDFDocumentInFrame):

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

        [WebKit2] Introduce a public version of WKWebsitePolicies
        https://bugs.webkit.org/show_bug.cgi?id=195989
        <rdar://problem/47228232>

        Reviewed by Tim Horton.

        Expose the existing _WKWebsitePolicies object as WKWebpagePreferences, in what will eventually become a public
        header in the WebKit SDK (WKWebpagePreferences.h). Following a similar transitioning strategy as
        _WKWebsiteDataStore and WKWebsiteDataStore, we move existing logic from _WKWebsitePolicies to WKWebpagePreferences
        and make _WKWebsitePolicies a wrapper around WKWebpagePreferences.

        No change in behavior.

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

        Wrap API::WebsitePolicies with WKWebpagePreferences.

        * SourcesCocoa.txt:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _updateWebsitePolicies:]):
        * UIProcess/API/Cocoa/WKWebpagePreferences.h: Copied from Source/WebKit/UIProcess/API/Cocoa/_WKWebsitePoliciesInternal.h.
        * UIProcess/API/Cocoa/WKWebpagePreferences.mm: Copied from Source/WebKit/UIProcess/API/Cocoa/_WKWebsitePolicies.mm.

        Introduce WKWebpagePreferences.

        (+[WKWebpagePreferences defaultPreferences]):
        (-[WKWebpagePreferences dealloc]):
        (-[WKWebpagePreferences init]):
        (-[WKWebpagePreferences _setContentBlockersEnabled:]):
        (-[WKWebpagePreferences _contentBlockersEnabled]):
        (-[WKWebpagePreferences _setAllowedAutoplayQuirks:]):
        (-[WKWebpagePreferences _allowedAutoplayQuirks]):
        (-[WKWebpagePreferences _setAutoplayPolicy:]):
        (-[WKWebpagePreferences _autoplayPolicy]):
        (-[WKWebpagePreferences _setDeviceOrientationAndMotionAccessPolicy:]):
        (-[WKWebpagePreferences _deviceOrientationAndMotionAccessPolicy]):
        (-[WKWebpagePreferences _setPopUpPolicy:]):
        (-[WKWebpagePreferences _popUpPolicy]):
        (-[WKWebpagePreferences _customHeaderFields]):
        (-[WKWebpagePreferences _setCustomHeaderFields:]):
        (-[WKWebpagePreferences _websiteDataStore]):
        (-[WKWebpagePreferences _setWebsiteDataStore:]):
        (-[WKWebpagePreferences _setCustomUserAgent:]):
        (-[WKWebpagePreferences _customUserAgent]):
        (-[WKWebpagePreferences _setCustomJavaScriptUserAgentAsSiteSpecificQuirks:]):
        (-[WKWebpagePreferences _customJavaScriptUserAgentAsSiteSpecificQuirks]):
        (-[WKWebpagePreferences _setCustomNavigatorPlatform:]):
        (-[WKWebpagePreferences _customNavigatorPlatform]):
        (-[WKWebpagePreferences _apiObject]):
        * UIProcess/API/Cocoa/WKWebpagePreferencesInternal.h: Copied from Source/WebKit/UIProcess/API/Cocoa/_WKWebsitePoliciesInternal.h.
        * UIProcess/API/Cocoa/WKWebpagePreferencesPrivate.h: Copied from Source/WebKit/UIProcess/API/Cocoa/_WKWebsitePolicies.h.

        Reintroduce all the interfaces currently available on _WKWebsitePolicies as underscore-prefixed SPI on
        WKWebpagePreferences.

        * UIProcess/API/Cocoa/_WKWebsitePolicies.h:
        * UIProcess/API/Cocoa/_WKWebsitePolicies.mm:

        Make _WKWebsitePolicies wrap WKWebpagePreferences, and plumb all existing SPI on WKWebsitePolicies through to
        WKWebpagePreferences.

        (-[_WKWebsitePolicies init]):
        (-[_WKWebsitePolicies webpagePreferences]):
        (-[_WKWebsitePolicies setContentBlockersEnabled:]):
        (-[_WKWebsitePolicies contentBlockersEnabled]):
        (-[_WKWebsitePolicies setAllowedAutoplayQuirks:]):
        (-[_WKWebsitePolicies allowedAutoplayQuirks]):
        (-[_WKWebsitePolicies setAutoplayPolicy:]):
        (-[_WKWebsitePolicies autoplayPolicy]):
        (-[_WKWebsitePolicies setDeviceOrientationAndMotionAccessPolicy:]):
        (-[_WKWebsitePolicies deviceOrientationAndMotionAccessPolicy]):
        (-[_WKWebsitePolicies setPopUpPolicy:]):
        (-[_WKWebsitePolicies popUpPolicy]):
        (-[_WKWebsitePolicies customHeaderFields]):
        (-[_WKWebsitePolicies setCustomHeaderFields:]):
        (-[_WKWebsitePolicies websiteDataStore]):
        (-[_WKWebsitePolicies setWebsiteDataStore:]):
        (-[_WKWebsitePolicies setCustomUserAgent:]):
        (-[_WKWebsitePolicies customUserAgent]):
        (-[_WKWebsitePolicies setCustomJavaScriptUserAgentAsSiteSpecificQuirks:]):
        (-[_WKWebsitePolicies customJavaScriptUserAgentAsSiteSpecificQuirks]):
        (-[_WKWebsitePolicies setCustomNavigatorPlatform:]):
        (-[_WKWebsitePolicies customNavigatorPlatform]):
        (-[_WKWebsitePolicies description]):
        (-[_WKWebsitePolicies _apiObject]):
        (-[_WKWebsitePolicies dealloc]): Deleted.
        * UIProcess/API/Cocoa/_WKWebsitePoliciesInternal.h:
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction):
        * WebKit.xcodeproj/project.pbxproj:

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

        Unable to copy and paste a PDF from Notes into Mail compose body
        https://bugs.webkit.org/show_bug.cgi?id=196442
        <rdar://problem/48573098>

        Reviewed by Tim Horton.

        Relax the -canPerformAction: logic in the case of pasting an attachment. Consider an NSItemProvider to possibly
        paste as an attachment if either it has a preferred presentation style of UIPreferredPresentationStyleAttachment
        or has a style of UIPreferredPresentationStyleUnspecified, but has a suggested file name.

        This allows for the "Paste" action to be shown in the callout menu when copying and pasting a non-text file.

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

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

        Make UIWKDocumentContext rects per-character instead of per-word
        https://bugs.webkit.org/show_bug.cgi?id=196459

        Reviewed by Wenson Hsieh.

        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::requestDocumentEditingContext):
        Switch to CharacterIterator instead of TextIterator directly, to get
        per-character rects as the API requests.

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

        UIProcess crash when a prewarmed process is terminated
        https://bugs.webkit.org/show_bug.cgi?id=196451
        <rdar://problem/49245471>

        Reviewed by Geoffrey Garen.

        Stop assuming that WebProcessProxy::m_websiteDataStore is non-null as this is no longer
        true after r243384. For example, prewarmed WebContent processe do not get a data store
        until they actually get used.

        * UIProcess/API/Cocoa/WKProcessPool.mm:
        (-[WKProcessPool _prewarmedProcessIdentifier]):
        * UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::networkProcessIdentifier):
        (WebKit::WebProcessPool::prewarmedProcessIdentifier):
        * UIProcess/WebProcessPool.h:
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::didClose):
        (WebKit::WebProcessProxy::didFinishLaunching):
        (WebKit::WebProcessProxy::requestTermination):
        (WebKit::WebProcessProxy::isReleaseLoggingAllowed const):
        * UIProcess/WebProcessProxy.h:

2019-04-01  Patrick Griffis  <pgriffis@igalia.com>

        [GTK][WPE] Add more websitedatastore directories to web process sandbox
        https://bugs.webkit.org/show_bug.cgi?id=196447

        Reviewed by Michael Catanzaro.

        * UIProcess/Launcher/glib/BubblewrapLauncher.cpp:
        (WebKit::bubblewrapSpawn):
        * UIProcess/glib/WebProcessProxyGLib.cpp:
        (WebKit::WebProcessProxy::platformGetLaunchOptions):

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

        [macOS] Crash when loading Twitter with autoplay video enabled.
        https://bugs.webkit.org/show_bug.cgi?id=196446
        <rdar://problem/49060359>

        Reviewed by Brent Fulgham.

        This is caused by a syscall violation.

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

2019-04-01  Patrick Griffis  <pgriffis@igalia.com>

        [GTK][WPE] Fix seccomp rule for blacklisting TIOCSTI
        https://bugs.webkit.org/show_bug.cgi?id=196297

        Reviewed by Michael Catanzaro.

        More information can be found here: https://www.exploit-db.com/exploits/46594

        Note that this sandbox never made it into production so does not
        warrant any CVE specific to WebKit.

        * UIProcess/Launcher/glib/BubblewrapLauncher.cpp:
        (WebKit::setupSeccomp):

2019-03-31  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] Crash when changing inputmode for certain types of focusable elements
        https://bugs.webkit.org/show_bug.cgi?id=196431
        <rdar://problem/49454962>

        Reviewed by Tim Horton.

        The crash is happening because WebPage::focusedElementDidChangeInputMode assumes that the document's focused
        element must be the same as m_focusedElement in WebPage. However, this is not the case, since m_focusedElement
        is only set for certain types of elements that require user input (e.g. text fields, editable content, select
        menus, etc.). The function then attempts to dereference m_focusedElement, which may be null if the document's
        focused element doesn't fall into one of the aforementioned categories.

        To fix this, bail if the element that is changing inputmode is not equal to the WebPage's current focused
        element. See below for more details.

        Test: fast/forms/change-inputmode-crash.html

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

        Clean up some existing logic by introducing a helper method for determining whether an element should
        propagate inputmode attribute changes to the UI process. Also, check the element type using type traits instead
        of checking against the tag name.

        (WebKit::WebPage::elementDidFocus):
        (WebKit::WebPage::focusedElementDidChangeInputMode):

2019-03-31  Sam Weinig  <weinig@apple.com>

        Remove more i386 specific configurations
        https://bugs.webkit.org/show_bug.cgi?id=196430

        Reviewed by Alexey Proskuryakov.

        * Configurations/BaseTarget.xcconfig:
        WK_HAVE_CORE_PREDICTION can now be enabled unconditionally.
 
        * Configurations/FeatureDefines.xcconfig:
        ENABLE_WEB_AUTHN_macosx can now be enabled unconditionally on macOS.

2019-03-31  Andy Estes  <aestes@apple.com>

        [iOS] WebKit should consult the navigation response policy delegate before previewing a QuickLook document
        https://bugs.webkit.org/show_bug.cgi?id=196433
        <rdar://problem/49293305>

        Reviewed by Tim Horton.

        Added WKWebViewConfiguration SPI for setting the QuickLook navigation response policy
        decision behavior. The configuration setting defaults to YES for clients linked on or after
        this WebKit change and NO otherwise.

        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::shouldInterruptLoadForCSPFrameAncestorsOrXFrameOptions):
        * Shared/WebPreferences.yaml:
        * Shared/ios/QuickLookDocumentData.cpp:
        (WebKit::QuickLookDocumentData::isEmpty const):
        * Shared/ios/QuickLookDocumentData.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _initializeWithConfiguration:]):
        * UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
        (defaultShouldDecidePolicyBeforeLoadingQuickLookPreview):
        (-[WKWebViewConfiguration init]):
        (-[WKWebViewConfiguration encodeWithCoder:]):
        (-[WKWebViewConfiguration initWithCoder:]):
        (-[WKWebViewConfiguration copyWithZone:]):
        (-[WKWebViewConfiguration _shouldDecidePolicyBeforeLoadingQuickLookPreview]):
        (-[WKWebViewConfiguration _setShouldDecidePolicyBeforeLoadingQuickLookPreview:]):
        * UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
        * UIProcess/Cocoa/VersionChecks.h:
        * WebProcess/WebCoreSupport/ios/WebPreviewLoaderClient.cpp:
        (WebKit::WebPreviewLoaderClient::didReceiveDataArray):

2019-03-30  Zalan Bujtas  <zalan@apple.com>

        [ContentChangeObserver] Subframe load should not reset content observation on the mainframe
        https://bugs.webkit.org/show_bug.cgi?id=196408
        <rdar://problem/49436797>

        Reviewed by Simon Fraser.

        Hover intent fails when an unrelated frame commits a load the same time.
        cancelPotentialTapInFrame is called from didCommitLoad, but what we are looking for here is the user initiated cancel of a tap (cancelPotentialTap).
        (If the current frame navigates away, willDetachPage takes care of canceling the observation.)

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

2019-03-29  John Wilander  <wilander@apple.com>

        Move WebResourceLoadStatisticsStore IPC calls from the UI process to the network process
        https://bugs.webkit.org/show_bug.cgi?id=196407
        <rdar://problem/47859936>

        Reviewed by Brent Fulgham.

        The two WebResourceLoadStatisticsStore IPC endpoints were left behind when we
        moved Resource Load Statistics from the UI process to the network process. One
        of the endpoints is the message RequestStorageAccessUnderOpener which underpins
        our compatibility fix for federated logins using popups. This patch redirects
        these IPC calls to the network process and cleans up some assumptions around
        them.

        * CMakeLists.txt:
            Removed the old IPC receiver.
        * DerivedSources.make:
            Removed the old IPC receiver.
        * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::requestUpdate): Deleted.
            This is no longer needed since there is a dedicated update mechanism
            that actually sends the update.
        * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h:
        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::resourceLoadStatisticsUpdated):
        (WebKit::NetworkConnectionToWebProcess::requestStorageAccessUnderOpener):
            Two new IPC receivers to pipe the calls to the network process.
        (WebKit::NetworkConnectionToWebProcess::requestResourceLoadStatisticsUpdate): Deleted.
            NetworkConnectionToWebProcess::resourceLoadStatisticsUpdated now serves
            this purpose.
        * NetworkProcess/NetworkConnectionToWebProcess.h:
        * NetworkProcess/NetworkConnectionToWebProcess.messages.in:
        * UIProcess/WebResourceLoadStatisticsStore.messages.in: Removed.
            Removed the old IPC receiver.
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/InjectedBundle/API/c/WKBundle.cpp:
        (WKBundleResourceLoadStatisticsNotifyObserver):
            Function name update.
        * WebProcess/WebProcess.cpp:
            Now calls IPC to the network process instead of the UI process.

2019-03-29  Myles C. Maxfield  <mmaxfield@apple.com>

        Delete WebMetal implementation in favor of WebGPU
        https://bugs.webkit.org/show_bug.cgi?id=195418

        Reviewed by Dean Jackson.

        * Configurations/FeatureDefines.xcconfig:
        * Shared/WebPreferences.yaml:
        * WebProcess/InjectedBundle/InjectedBundle.cpp:
        (WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner):

2019-03-29  Takashi Komori  <Takashi.Komori@sony.com>

        [Curl] Add Server Trust Evaluation Support.
        https://bugs.webkit.org/show_bug.cgi?id=191646

        Reviewed by Fujii Hironori.

        Tests: http/tests/ssl/iframe-upgrade.https.html
               http/tests/ssl/mixedContent/insecure-websocket.html
               http/tests/ssl/upgrade-origin-usage.html

        * NetworkProcess/curl/NetworkDataTaskCurl.cpp:
        (WebKit::NetworkDataTaskCurl::curlDidFailWithError):
        (WebKit::NetworkDataTaskCurl::tryServerTrustEvaluation):
        (WebKit::NetworkDataTaskCurl::restartWithCredential):
        * NetworkProcess/curl/NetworkDataTaskCurl.h:

2019-03-29  Cathie Chen  <cathiechen@igalia.com>

        Implement ResizeObserver.
        https://bugs.webkit.org/show_bug.cgi?id=157743

        Reviewed by Simon Fraser.

        Add WebPreferences and FeatureDefines for ResizeObserver.

        * Configurations/FeatureDefines.xcconfig:
        * Shared/WebPreferences.yaml:

2019-03-28  Timothy Hatcher  <timothy@apple.com>

        CFDictionary encoder crashes on non-string keys.
        https://bugs.webkit.org/show_bug.cgi?id=196388
        rdar://problem/49339242

        Reviewed by Ryosuke Niwa.

        Allow non-string keys in CFDictionary encoding/decoding. Encode the correct
        size for dictionaries and arrays when unknown keys or values are skipped.
        Allow null array encoding and decoding like dictionary already allowed.

        * Shared/cf/ArgumentCodersCF.cpp:
        (IPC::encode):
        (IPC::decode):

2019-03-28  John Wilander  <wilander@apple.com>

        Resource Load Statistics: IPC to the WebsiteDataStore in the UI process from NetworkProcess::deleteWebsiteDataForRegistrableDomains()
        https://bugs.webkit.org/show_bug.cgi?id=196281
        <rdar://problem/48938748>

        Reviewed by Alex Christensen.

        The move of Resource Load Statistics to the network process requires that it
        calls the UI process when clearing website data (previously the other way
        around). This patch achieves that.

        Specifically, NetworkProcess::deleteWebsiteDataForRegistrableDomains() now
        filters its WebsiteDataTypes down to just the ones applicable for the UI
        process and then calls DeleteWebsiteDataInUIProcessForRegistrableDomains over
        IPC.

        NetworkProcessProxy::deleteWebsiteDataInUIProcessForRegistrableDomains() on
        the UI process side makes use of the re-introduced
        WebsiteDataStore::fetchDataForRegistrableDomains() function to get the relevant
        data records and call WebsiteDataStore::removeData(). The re-introduced
        WebsiteDataStore::fetchDataForRegistrableDomains() was removed as dead code in
        https://trac.webkit.org/changeset/242056/webkit, then under the name
        WebsiteDataStore::fetchDataForTopPrivatelyControlledDomains(). The reason it
        was dead code was the lack of IPC call that this patch adds.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::deleteWebsiteDataForRegistrableDomains):
           Now calls DeleteWebsiteDataInUIProcessForRegistrableDomains over IPC if there
           are WebsiteDataTypes applicable to the UI process.
        * NetworkProcess/NetworkProcess.h:
        * Shared/WebsiteData/WebsiteData.cpp:
        (WebKit::WebsiteData::ownerProcess):
        (WebKit::WebsiteData::filter):
            Convenience functions to manage process ownership of website data types.
        * Shared/WebsiteData/WebsiteData.h:
        * UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
        (WKWebsiteDataStoreStatisticsHasLocalStorage):
            Test infrastructure, called by the TestRunner.
        * UIProcess/API/C/WKWebsiteDataStoreRef.h:
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::deleteWebsiteDataInUIProcessForRegistrableDomains):
            New function to be called from the network process.
        * UIProcess/Network/NetworkProcessProxy.h:
        * UIProcess/Network/NetworkProcessProxy.messages.in:
        * UIProcess/WebsiteData/WebsiteDataRecord.cpp:
        (WebKit::WebsiteDataRecord::matches const):
            Now matches with WebCore::RegistrableDomain instead of a string.
        (WebKit::WebsiteDataRecord::matchesTopPrivatelyControlledDomain const): Deleted.
            Replaced by WebsiteDataRecord::matches().
        * UIProcess/WebsiteData/WebsiteDataRecord.h:
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::fetchDataForRegistrableDomains):
            Re-introduced. It was removed as dead code in r242056.
        (WebKit::computeNetworkProcessAccessTypeForDataRemoval):
        (WebKit::WebsiteDataStore::hasLocalStorageForTesting const):
            Test infrastructure, called by the TestRunner.
        * UIProcess/WebsiteData/WebsiteDataStore.h:

2019-03-28  Jiewen Tan  <jiewen_tan@apple.com>

        API::Data::createWithoutCopying should do a null check before calling CFRelease
        https://bugs.webkit.org/show_bug.cgi?id=196276
        <rdar://problem/48059859>

        Reviewed by Alex Christensen.

        * Shared/Cocoa/APIDataCocoa.mm:
        (API::Data::createWithoutCopying):

2019-03-28  Per Arne Vollan  <pvollan@apple.com>

        [iOS] Automatic focus of input field is flaky
        https://bugs.webkit.org/show_bug.cgi?id=196302

        Reviewed by Brent Fulgham.

        Sometimes the status of whether a keyboard is connected can be incorrect, both in the UI process, and in
        the WebContent process. Fix this by sending the keyboard status to the WebContent process as part of the
        Web page creation parameters. Stop caching the keyboard status in the Web process proxy, and call
        [UIKeyboard isInHardwareKeyboardMode] instead, since this method is swizzled in the test harness.

        * Shared/WebPageCreationParameters.cpp:
        (WebKit::WebPageCreationParameters::encode const):
        (WebKit::WebPageCreationParameters::decode):
        * Shared/WebPageCreationParameters.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (hardwareKeyboardAvailabilityChangedCallback):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::creationParameters):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebProcessProxy.cpp:
        * UIProcess/WebProcessProxy.h:
        (WebKit::WebProcessProxy::setKeyboardIsAttached): Deleted.
        (WebKit::WebProcessProxy::keyboardIsAttached const): Deleted.
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _elementDidFocus:userIsInteracting:blurPreviousNode:changingActivityState:userObject:]):
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::isInHardwareKeyboardMode):
        (WebKit::WebPageProxy::applicationWillEnterForeground):
        * WebProcess/WebPage/WebPage.cpp:
        * WebProcess/WebPage/WebPage.h:

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

        Fix the build.

        * UIProcess/ios/WKActionSheetAssistant.mm:
        (-[WKActionSheetAssistant showImageSheet]):
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView actionSheetAssistant:showCustomSheetForElement:]):

2019-03-28  Michael Catanzaro  <mcatanzaro@igalia.com>

        [WPE][GTK] webkit_web_resource_get_data_finish can return NULL without setting error
        https://bugs.webkit.org/show_bug.cgi?id=186276

        Reviewed by Carlos Garcia Campos.

        Currently it's possible for webkit_web_resource_get_data_finish() to return NULL without
        setting the error parameter. This is illegal because it is an API guarantee (and a GObject
        convention) that if an error parameter exists, it should be set whenever a function call
        returns NULL. Epiphany correctly dereferences the error in this case without checking if it
        is NULL, because it knows it does not have to, and crashes. Fix this. We'll return a byte
        array of length 1 containing a NUL character. This isn't great, but there's not really any
        better solution without deprecating the API or returning an error code to indicate an empty
        resource, and it at least fixes the Epiphany crash.

        This does not fix bug #186276, in which this function incorrectly returns no data when it
        ought to. But that is a different bug. Now, at least we won't crash when no data is
        available.

        * UIProcess/API/glib/WebKitWebResource.cpp:
        (resourceDataCallback):

2019-03-28  Daniel Bates  <dabates@apple.com>

        [iPad] Tapping on a popup form control may not show a popover
        https://bugs.webkit.org/show_bug.cgi?id=196322
        <rdar://problem/49229632>

        Reviewed by Wenson Hsieh.

        Stop taking advantage of -[WKContentView inputView] being called when we invoke -reloadInputViews
        to "lazily" allocate the input peripheral for the currently focused element. In theory, UIKit only
        needs to call -inputView when it actually needs to display the input view (the keyboard). For
        popup menu buttons, like <select>, no keyboard is needed. Instead we should create the peripheral
        as part of the logic in the UI process to focus a new element before we call -reloadInputViews.

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView inputView]): Extract logic to allocate the peripheral from here and moved it to createInputPeripheralWithView().
        (-[WKContentView accessoryTab:]): While I am here, add a FIXME comment to explain why we need to
        end the input sessions and nullify the input peripheral before we tell the web process to switch
        focus as opposed to letting this happen after the web process tells us it focused a new element.
        (createInputPeripheralWithView): Added.
        (-[WKContentView _elementDidFocus:userIsInteracting:blurPreviousNode:changingActivityState:userObject:]):
        Write in terms of createInputPeripheralWithView(). Create the input peripheral after becoming
        first responder because creating the peripheral has known side-effects: for popup buttons it
        tells the popup controller to present the popover. For key input to popovers to work from the get-go,
        the content view must be the first responder. See <https://bugs.webkit.org/show_bug.cgi?id=196272>
        for more details.

2019-03-28  Víctor Manuel Jáquez Leal  <vjaquez@igalia.com>

        Silence lot of warnings when compiling with clang
        https://bugs.webkit.org/show_bug.cgi?id=196310

        Reviewed by Michael Catanzaro.

        * UIProcess/API/glib/WebKitInjectedBundleClient.cpp: add missing
        override clause.
        * WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.h: add
        missing override clause.

2019-03-27  Ryosuke Niwa  <rniwa@webkit.org>

        [macOS] Select element doesn't show popup if select element had lost focus while popup was previosuly shown
        https://bugs.webkit.org/show_bug.cgi?id=196336

        Reviewed by Tim Horton.

        The bug was caused by WebPopupMenu::hide never notifying PopupClient that the popup had been dismissed.
        This resulted in RenderMenuList::m_popupIsVisible to be never reset.

        Also fixed a bug in WebPopupMenuProxyMac::hidePopupMenu that this function was never dismissing
        the popup as the selector "dismissPopUp", on the contrary to its name, does not dimiss the popup.
        Send cancelTracking to NSMenu instead, which DOES dismiss the popup.

        Tests: fast/forms/select/mac-wk2/blur-dismisses-select-popup.html
               fast/forms/select/mac-wk2/open-select-popup-after-dismissing-by-blur.html

        * UIProcess/mac/WebPopupMenuProxyMac.mm:
        (WebKit::WebPopupMenuProxyMac::hidePopupMenu):
        * WebProcess/WebCoreSupport/WebPopupMenu.cpp:
        (WebKit::WebPopupMenu::hide):

2019-03-27  Dean Jackson  <dino@apple.com>

        [ARKit] Black view when opening a 3D model usdz file in new tab
        https://bugs.webkit.org/show_bug.cgi?id=196333
        <rdar://problem/47693367>

        Reviewed by Tim Horton.

        When opening a new WKSystemPreviewView, we were exiting if there was no
        presentingViewController. This code was unnecessary, and causing blank
        content when opening a new tab.

        * UIProcess/ios/WKSystemPreviewView.mm:
        (-[WKSystemPreviewView web_setContentProviderData:suggestedFilename:]):
        Remove the code looking for a presentingViewController.

2019-03-27  Wenson Hsieh  <wenson_hsieh@apple.com>

        Need a way to include WebKitAdditions code in WebKit API headers
        https://bugs.webkit.org/show_bug.cgi?id=196173

        Reviewed by Tim Horton.

        Introduce a mechanism that allows us to insert code from WebKitAdditions into public or private SDK headers
        using `#import`s of the form:

        ```
        #if USE(APPLE_INTERNAL_SDK)
        #import <WebKitAdditions/WKWebViewConfigurationAdditions.h>
        #endif
        ```

        The resulting header in the built products directory will contain the contents of the imported file inserted in
        place of the `#if USE(APPLE_INTERNAL_SDK) … #endif` block; however, when building with the Apple internal SDK,
        the additions header content will be imported by the usual means.

        * mac/postprocess-framework-headers.sh:
        * mac/replace-webkit-additions-includes.py: Added.

        Add a step when post-processing framework headers to replace instances of `#if USE(APPLE_INTERNAL_SDK) … #endif`
        with the text content of the additions files. The replacement script first searches in the built products
        directory for the matching additions file, and falls back to the SDK if no matching file is found. If neither
        are present (e.g. a build using the public SDK), then the block is simply replaced by the empty string.

        (read_content_from_webkit_additions):
        (main):

2019-03-27  Andy Estes  <aestes@apple.com>

        REGRESSION (r242686): package-root creates roots with broken symlinks in WebKit.framework/XPCServices/
        https://bugs.webkit.org/show_bug.cgi?id=196317

        Reviewed by Dan Bernstein.

        Removed some remnants of the Storage Process.

        * Configurations/BaseTarget.xcconfig:
        * Resources/SandboxProfiles/ios/com.apple.WebKit.Storage.sb: Removed.
        * WebKit.xcodeproj/project.pbxproj:

2019-03-27  Keith Rollin  <krollin@apple.com>

        Include the CFNetworking task UUID to the NSError when a resource-load fails
        https://bugs.webkit.org/show_bug.cgi?id=196156

        Reviewed by Alex Christensen.

        In order to help track the connection between a failed resource-load
        and a user-visible error message, include the CFNetworking task UUID
        in the associated error as an element of the userInfo property. This
        can then be pulled out and reported in the logging at the point the
        error is reported to the user.

        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (-[WKNetworkSessionDelegate URLSession:task:didCompleteWithError:]):

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

        [ iOS Sim ] REGRESSION (r242277) Layout Test http/tests/cookies/same-site/lax-samesite-cookie-after-cross-site-history-load.php is a flaky timeout
        https://bugs.webkit.org/show_bug.cgi?id=195425
        <rdar://problem/48682403>

        Reviewed by Alex Christensen.

        When process-swapping on history navigation, we lookup the WebProcessProxy we'd like to use from the
        process identifier that is saved on the WebBackForwardListItem, to try and load the item in the process
        in which it was previously loaded. However, we were failing to check if the WebProcess in question was
        still running so we could potentially try to use a process that's already exited.

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::processForNavigationInternal):

2019-03-27  Zalan Bujtas  <zalan@apple.com>

        [ContentChangeObserver] Always dispatch the synthetic click asynchronously
        https://bugs.webkit.org/show_bug.cgi?id=196278
        <rdar://problem/49299968>

        Reviewed by Simon Fraser.

        This patch ensures that all completeSyntheticClick() calls happen in an asynchronous manner (unless the feature is turned off).

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

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

        Fix some more deprecation warnings in WKDrawingView
        https://bugs.webkit.org/show_bug.cgi?id=196282
        <rdar://problem/47637608>

        Reviewed by Wenson Hsieh.

        * Platform/spi/ios/PencilKitSPI.h:
        * SourcesCocoa.txt:
        * UIProcess/ios/PencilKitSoftLink.h:
        * UIProcess/ios/PencilKitSoftLink.mm:
        * UIProcess/ios/WKContentViewInteraction.mm:
        * UIProcess/ios/WKDrawingCoordinator.h:
        * UIProcess/ios/WKDrawingCoordinator.mm:
        (-[WKDrawingCoordinator initWithContentView:]):
        (-[WKDrawingCoordinator currentInk]):
        (-[WKDrawingCoordinator undoManagerForInkPicker:]):
        (-[WKDrawingCoordinator containingViewForInkPicker:]):
        (-[WKDrawingCoordinator inkPickerDidToggleRuler:]):
        (-[WKDrawingCoordinator inkPickerDidChangeInk:]):
        (-[WKDrawingCoordinator installInkPickerForDrawing:]):
        (-[WKDrawingCoordinator uninstallInkPicker]):
        (-[WKDrawingCoordinator inkPicker]): Deleted.
        (-[WKDrawingCoordinator didChangeRulerState:]): Deleted.
        (-[WKDrawingCoordinator didChangeInk:]): Deleted.
        * UIProcess/ios/WKDrawingView.mm:
        (-[WKDrawingView _canvasViewWillBeginDrawing:]):
        * UIProcess/ios/WKInkPickerView.h: Removed.
        * UIProcess/ios/WKInkPickerView.mm: Removed.
        * WebKit.xcodeproj/project.pbxproj:
        Adopt the new names.

2019-03-27  Carlos Garcia Campos  <cgarcia@igalia.com>

        Geolocation request not complete when watch request was started in a different web process
        https://bugs.webkit.org/show_bug.cgi?id=195996

        Reviewed by Alex Christensen.

        In WebGeolocationManagerProxy::startUpdating() we do nothing when the provider is already updating. We should
        reply with a DidChangePosition using the last known position, if available. If we are updating, but we still
        don't have a known position, the request will be completed when
        WebGeolocationManagerProxy::providerDidChangePosition() is called since it always notifies all web
        processes.

        * UIProcess/WebGeolocationManagerProxy.cpp:
        (WebKit::WebGeolocationManagerProxy::providerDidChangePosition): Cache the position.
        (WebKit::WebGeolocationManagerProxy::startUpdating): Reply using cached position if already known.
        * UIProcess/WebGeolocationManagerProxy.h:
        (WebKit::WebGeolocationManagerProxy::lastPosition const): Return cached position.
        * WebProcess/WebCoreSupport/WebGeolocationClient.cpp:
        (WebKit::WebGeolocationClient::lastPosition): Remove the FIXME since we don't want this feature.

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

        [macOS] Correct kerberos-related sandbox violations
        https://bugs.webkit.org/show_bug.cgi?id=196279
        <rdar://problem/48622502>

        Reviewed by Per Arne Vollan.

        We need to allow communications with a Kerberos-related service on macOS
        until <rdar://problem/35542803> is fixed.

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

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

        [macOS] The network process is not exiting reliably when the WebProcessPool is destroyed
        https://bugs.webkit.org/show_bug.cgi?id=196277
        <rdar://problem/49127581>

        Reviewed by Alex Christensen.

        When, an AuxiliaryProcess receives the AuxiliaryProcess::Terminate IPC, it calls stopRunLoop()
        to exit. WebProcess overrides AuxiliaryProcess::stopRunLoop() to call exit(0) on the main
        thread. Other auxiliary processes such as the NetworkProcess would end up calling
        platformStopRunLoop(). On iOS and iOSMac, platformStopRunLoop() calls XPCServiceExit(), which
        makes sense since auxiliary processes run their run loop by calling xpc_main(). However, on
        macOS, platformStopRunLoop() was calling RunLoop::main().stop() to exit instead, which was
        unreliable as demonstrated by the test app attached to the radar.

        Updating platformStopRunLoop() to call XPCServiceExit() on macOS fixes the problem and I now
        see the NetworkProcess exiting reliably there. This is the approach I have chosen in this
        patch since it appears to be reliable and it makes the code consistent on all Cocoa platforms.

        * Shared/AuxiliaryProcess.cpp:
        * Shared/Cocoa/AuxiliaryProcessCocoa.mm:
        (WebKit::AuxiliaryProcess::platformStopRunLoop):
        * Shared/ios/AuxiliaryProcessIOS.mm:
        (WebKit::AuxiliaryProcess::platformStopRunLoop): Deleted.
        * Shared/mac/AuxiliaryProcessMac.mm:
        (WebKit::AuxiliaryProcess::platformStopRunLoop): Deleted.

2019-03-26  Keith Rollin  <krollin@apple.com>

        Inhibit CFNetwork logging in private sessions
        https://bugs.webkit.org/show_bug.cgi?id=196268
        <rdar://problem/48210793>

        Reviewed by Alex Christensen.

        Before performing any logging, the NetworkProcess checks to see if
        it's performing an operation associated with a private (ephemeral)
        browsing session. If so, it skips the logging. However, networking
        layers below the NetworkProcess don't know about private browsing, so
        they would still perform their own logging. CFNetwork now has a flag
        that lets us control that, so set it to False if private browsing.

        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (WebKit::configurationForSessionID):

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

        Add basic layout test coverage for File Picker on iOS
        https://bugs.webkit.org/show_bug.cgi?id=196265

        Reviewed by Wenson Hsieh.

        Add layout test infrastructure to test the file picker on iOS.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _dismissFilePicker]):
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView dismissFilePicker]):
        (-[WKContentView _contentsOfUserInterfaceItem:]):
        * UIProcess/ios/forms/WKFileUploadPanel.h:
        * UIProcess/ios/forms/WKFileUploadPanel.mm:
        (-[WKFileUploadPanel currentAvailableActionTitles]):

2019-03-26  Daniel Bates  <dabates@apple.com>

        [iOS][WK2] Use a better concept to describe the reason we defer zooming a focused element: selectabiltiy
        https://bugs.webkit.org/show_bug.cgi?id=196264

        Reviewed by Wenson Hsieh.

        Rename shouldDeferZoomingToSelectionWhenRevealingFocusedElement() to mayContainSelectableText() to describe
        the criterion that we will use to decide whether to defer zooming or not. We defer zooming only for elements
        that may support text selection on initial focus because we do not have an up-to-date selection rect at that
        time. For element, like <select>, that do not support text selection, we can zoom them immediately when focused.

        * UIProcess/ios/WKContentViewInteraction.mm:
        (mayContainSelectableText): Renamed from shouldDeferZoomingToSelectionWhenRevealingFocusedElement.
        List all the input types in the switch block and remove the default case to force the compiler to check that we
        covered all cases. This will prevent unforseen keyboard issues (why isn't the keyboard shown? or why is the keyboard shown?)
        for future input types that we may add.
        (rectToRevealWhenZoomingToFocusedElement): Update for renaming.
        (-[WKContentView _elementDidFocus:userIsInteracting:blurPreviousNode:changingActivityState:userObject:]): Add a
        comment to explain why we may need to defer the zoom: the focused element supports text selection and we need
        to wait for the web process to call back to provide an up-to-date selection rect for us to zoom and reveal.
        (-[WKContentView _didReceiveEditorStateUpdateAfterFocus]): Update for renaming.
        (shouldDeferZoomingToSelectionWhenRevealingFocusedElement): Deleted.

2019-03-26  Wenson Hsieh  <wenson_hsieh@apple.com>

        Implement async paste method on UIWKInteractionViewProtocol
        https://bugs.webkit.org/show_bug.cgi?id=196267
        <rdar://problem/49236346>

        Reviewed by Tim Horton.

        Implement a new UIWKInteractionViewProtocol hook to perform a paste command, and invoke the given completion
        handler when pasting is finished.

        Test: UIPasteboardTests.PasteWithCompletionHandler

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

2019-03-26  Per Arne Vollan  <pvollan@apple.com>

        [macOS] Fix sandbox violations
        https://bugs.webkit.org/show_bug.cgi?id=196262
        <rdar://problem/47738015>

        Reviewed by Brent Fulgham.

        Fix various observed sandbox violations.

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

2019-03-26  Tomoki Imai  <Tomoki.Imai@sony.com>

        Assertion failure !isInAcceleratedCompositingMode() in DrawingAreaProxyCoordinatedGraphics::incorporateUpdate when forceCompositingMode is turned on
        https://bugs.webkit.org/show_bug.cgi?id=195879

        Reviewed by Carlos Garcia Campos.

        The root cause is that DrawingAreaProxyCoordinatedGraphics::isInAcceleratedCompositingMode checks both of alwaysUseCompositing() and !m_layerTreeContext.isEmpty().
        alwaysUseCompositing() refers preferences, which is written by the application (UIProcess).
        On the other hand, m_layerTreeContext is changed when it receives enterAcceleratedCompositingMode/exitAcceleratedCompositingMode from WebProcess.

        It results when we set forceCompositingMode and acceleratedCompositingEnabled to true, WebProcess and UIProcess is out of sync until WebProcess sends enterAcceleratedCompositingMode message.
        In such situation, WebProcess sends incorporateUpdate to UIProcess because WebProcess is in non-AC mode, but isInAcceleratedCompositingMode becomes true in UIProcess side.

        * UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.cpp:
        (WebKit::DrawingAreaProxyCoordinatedGraphics::~DrawingAreaProxyCoordinatedGraphics): Should call exitAcceleratedCompositingMode even when alwaysUseCompositing is true.
        (WebKit::DrawingAreaProxyCoordinatedGraphics::enterAcceleratedCompositingMode): enterAcceleratedCompositingMode should check enterAcceleratedCompositingMode is not called twice.
        * UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.h: Remove alwaysUseCompositing from isInAcceleratedCompositingMode

2019-03-26  Antoine Quint  <graouts@apple.com>

        Remove mousemoveEventHandlingPreventsDefault internal setting and quirk
        https://bugs.webkit.org/show_bug.cgi?id=196254
        <rdar://problem/49124334>

        Reviewed by Dean Jackson.

        * Shared/WebPreferences.yaml:

2019-03-26  Philippe Normand  <pnormand@igalia.com>

        [WPE][Qt] Uninitialized racy ViewBackend
        https://bugs.webkit.org/show_bug.cgi?id=196247

        Reviewed by Carlos Garcia Campos.

        * UIProcess/API/wpe/qt/WPEQtView.h: Initialize the backend pointer to nullptr.

2019-03-26  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Fix typo in GLib geolocation API after r243285.

        gelocation -> geolocation.

        * UIProcess/API/glib/WebKitGeolocationManager.cpp:
        (webkit_geolocation_manager_class_init):
        (webkit_geolocation_manager_update_position):
        (webkit_geolocation_manager_failed):
        (webkit_gelocation_manager_update_position): Deleted.
        (webkit_gelocation_manager_failed): Deleted.
        * UIProcess/API/gtk/WebKitGeolocationManager.h:
        * UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt:
        * UIProcess/API/wpe/WebKitGeolocationManager.h:
        * UIProcess/API/wpe/docs/wpe-1.0-sections.txt:

2019-03-26  Patrick Griffis  <pgriffis@igalia.com>

        [GTK][WPE] Disable process warming
        https://bugs.webkit.org/show_bug.cgi?id=196208

        Reviewed by Chris Dumez.

        Fixes crash caused by r243384.

        Process warming is incompatible with our launcher as it expects a valid
        WebsiteDataStore at initialization time for sandbox permissions.

        * UIProcess/glib/WebProcessPoolGLib.cpp:
        (WebKit::WebProcessPool::platformInitialize):

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

        Do not terminate the NetworkProcess if a third party application sends a NSCredential with a SecIdentityRef
        https://bugs.webkit.org/show_bug.cgi?id=196213

        Reviewed by Geoff Garen.

        A release assertion added in r230225 was reachable.  I reached it in a unit test that responds to a challenge
        with a SecIdentityRef wrapped in an NSCredential.

        * Shared/cf/ArgumentCodersCF.cpp:
        (IPC::decode):

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

        Regression(r242369) Trying to change profile picture on linked in shows file picker, not the image picker
        https://bugs.webkit.org/show_bug.cgi?id=196205
        <rdar://problem/49083324>

        Reviewed by Geoffrey Garen.

        Update our FileUploadPanel code on iOS to properly deal with the MIME types containing
        wild cards (e.g. "image/*") that are defined in the HTML specification:
        - https://html.spec.whatwg.org/multipage/input.html#attr-input-accept

        Previously, we would fail to convert those to UTIs.

        * UIProcess/ios/forms/WKFileUploadPanel.mm:

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

        Remove some now-unnecessary dynamic class lookup
        https://bugs.webkit.org/show_bug.cgi?id=196237

        Reviewed by Simon Fraser.

        * Shared/DocumentEditingContext.mm:
        (WebKit::DocumentEditingContext::toPlatformContext):

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

        Get rid of ENABLE(ANIMATED_KEYBOARD_SCROLLING)
        https://bugs.webkit.org/show_bug.cgi?id=196224

        Reviewed by Simon Fraser.

        * Platform/spi/ios/AccessibilitySupportSPI.h:
        * UIProcess/ios/WKKeyboardScrollingAnimator.mm:
        (-[WKKeyboardScrollingAnimator invalidate]):
        (perpendicularAbsoluteUnitVector):
        (-[WKKeyboardScrollingAnimator beginWithEvent:]):
        (-[WKKeyboardScrollingAnimator stopAnimatedScroll]):
        (-[WKKeyboardScrollingAnimator willStartInteractiveScroll]):
        (-[WKKeyboardScrollViewAnimator scrollToContentOffset:animated:]):
        (-[WKKeyboardScrollViewAnimator scrollWithScrollToExtentAnimationTo:]):
        (-[WKKeyboardScrollingAnimator startRepeatTimerIfNeeded]): Deleted.
        (-[WKKeyboardScrollingAnimator stopRepeatTimer]): Deleted.
        (-[WKKeyboardScrollingAnimator performDiscreteScroll]): Deleted.

2019-03-25  Fujii Hironori  <Hironori.Fujii@sony.com>

        Enable IPC sending and receiving non-default-constructible types
        https://bugs.webkit.org/show_bug.cgi?id=196132
        <rdar://problem/49229221>

        Unreviewed build fix for WinCairo port.

        error C2440: '=': cannot convert from 'int' to 'HANDLE'

        * Platform/win/SharedMemoryWin.cpp:
        (WebKit::SharedMemory::Handle::Handle): std::exchange HANDLE with nullptr, not 0.
        (WebKit::SharedMemory::Handle::operator=): Ditto.

2019-03-25  Fujii Hironori  <Hironori.Fujii@sony.com>

        [Coordinated Graphics][WinCairo] ASSERTION FAILED: state.id == m_nicosia.state.id
        https://bugs.webkit.org/show_bug.cgi?id=196190

        Reviewed by Žan Doberšek.

        This assertion assumes the pre-committed and the committed scenes
        are identical. But, the pre-committed scene is updated in the main
        thread. Removed the false assertion.

        * Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:
        (WebKit::CoordinatedGraphicsScene::purgeGLResources): Remove the
        assertion. Removed layers of committed scene, not pre-committed
        scene.

2019-03-25  Brady Eidson  <beidson@apple.com>

        Add socket-delegate to another entitlements config
        rdar://problem/48090350 and https://bugs.webkit.org/show_bug.cgi?id=196227

        Reviewed by Geoffrey Garen.

        * Configurations/Network-iOSMac.entitlements:

2019-03-25  Commit Queue  <commit-queue@webkit.org>

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

        the test doesn't build (Requested by thorton on #webkit).

        Reverted changeset:

        "Do not terminate the NetworkProcess if a third party
        application sends a NSCredential with a SecIdentityRef"
        https://bugs.webkit.org/show_bug.cgi?id=196213
        https://trac.webkit.org/changeset/243465

2019-03-25  Simon Fraser  <simon.fraser@apple.com>

        REGRESSION (r242687): Flicker when pinch-zooming pages in macOS Safari
        https://bugs.webkit.org/show_bug.cgi?id=196126
        rdar://problem/49095791

        Reviewed by Tim Horton.
        
        I fumbled the commit after the enum rename. Make this actually work.

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

2019-03-25  Simon Fraser  <simon.fraser@apple.com>

        Zoom on macOS is centered around a point lower than the cursor
        https://bugs.webkit.org/show_bug.cgi?id=196225
        rdar://problem/49213574

        Reviewed by Tim Horton.
        
        The origin handed to ViewGestureController::handleMagnificationGestureEvent is in WKWebView
        coordinates, but we end up setting the transform on the RenderView's layer, so we need
        to subtract the topContentInset.

        * UIProcess/mac/ViewGestureControllerMac.mm:
        (WebKit::ViewGestureController::handleMagnificationGestureEvent):

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

        Do not terminate the NetworkProcess if a third party application sends a NSCredential with a SecIdentityRef
        https://bugs.webkit.org/show_bug.cgi?id=196213

        Reviewed by Geoff Garen.

        A release assertion added in r230225 was reachable.  I reached it in a unit test that responds to a challenge
        with a SecIdentityRef wrapped in an NSCredential.

        * Shared/cf/ArgumentCodersCF.cpp:
        (IPC::decode):

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

        Get rid of WebPage::m_shouldResetDrawingAreaAfterSuspend flag
        https://bugs.webkit.org/show_bug.cgi?id=196210
        <rdar://problem/48681326>

        Reviewed by Geoffrey Garen.

        Get rid of WebPage::m_shouldResetDrawingAreaAfterSuspend flag and use the drawing area identifier
        instead to reset the DrawingArea in the WebProcess whenever the UIProcess did.

        This is less error-prone and guarantees that the WebProcess and the UIProcess can reliably
        communicate via DrawingArea IPC.

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::reinitializeWebPage):
        (WebKit::WebPage::setIsSuspended):
        * WebProcess/WebPage/WebPage.h:

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

        Enable IPC sending and receiving non-default-constructible types
        https://bugs.webkit.org/show_bug.cgi?id=196132

        Reviewed by Geoff Garen.

        * Platform/IPC/ArgumentCoder.h:
        * Platform/IPC/ArgumentCoders.h:
        (IPC::TupleEncoder::encode):
        (IPC::tupleFromTupleAndObject):
        (IPC::TupleDecoderImpl::decode):
        (IPC::TupleDecoderImpl<Type>::decode):
        (IPC::TupleDecoder::decode):
        (IPC::TupleDecoder<0>::decode):
        (IPC::TupleCoder::encode): Deleted.
        (IPC::TupleCoder::decode): Deleted.
        * Platform/IPC/Connection.h:
        (IPC::Connection::sendWithReply):
        (IPC::TupleMover::move):
        (IPC::moveTuple):
        (IPC::Connection::sendSync):
        * Platform/IPC/Decoder.h:
        (IPC::Decoder::decode):
        (IPC::Decoder::operator>>):
        * Platform/IPC/HandleMessage.h:
        (IPC::handleMessage):
        (IPC::handleMessageSynchronous):
        (IPC::handleMessageSynchronousWantsConnection):
        (IPC::handleMessageAsync):
        * Platform/SharedMemory.h:
        * Scripts/webkit/LegacyMessages-expected.h:
        * Scripts/webkit/Messages-expected.h:
        * Scripts/webkit/MessagesSuperclass-expected.h:
        * Scripts/webkit/messages.py:
        * Shared/Databases/IndexedDB/WebIDBResult.h:
        * Shared/RemoteLayerTree/RemoteLayerTreeTransaction.h:
        * Shared/RemoteLayerTree/RemoteLayerTreeTransaction.mm:
        * Shared/ShareableBitmap.h:
        * Shared/ShareableResource.h:
        * Shared/UpdateInfo.h:
        * Shared/WebEvent.h:
        * Shared/WebProcessCreationParameters.cpp:
        * Shared/WebProcessCreationParameters.h:
        * Shared/mac/SecItemResponseData.cpp:
        (WebKit::SecItemResponseData::SecItemResponseData):
        (WebKit::SecItemResponseData::decode):
        * Shared/mac/SecItemResponseData.h:
        * WebProcess/MediaStream/MediaDeviceSandboxExtensions.h:

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

        Animated keyboard scrolling is extremely chaotic
        https://bugs.webkit.org/show_bug.cgi?id=196164
        <rdar://problem/48702444>

        Reviewed by Simon Fraser.

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _interpretKeyEvent:isCharEvent:]):
        Consume keyboard events instead of interpreting them traditionally
        if WKKeyboardScrollingAnimator is animating.

        * UIProcess/ios/WKKeyboardScrollingAnimator.h:
        * UIProcess/ios/WKKeyboardScrollingAnimator.mm:
        (-[WKKeyboardScrollingAnimator beginWithEvent:]):
        (-[WKKeyboardScrollingAnimator handleKeyEvent:]):
        (-[WKKeyboardScrollingAnimator stopAnimatedScroll]):
        (-[WKKeyboardScrollingAnimator scrollTriggeringKeyIsPressed]):
        (-[WKKeyboardScrollingAnimator displayLinkFired:]):
        (-[WKKeyboardScrollViewAnimator scrollTriggeringKeyIsPressed]):
        Expose the current state of interactive scrolling, and rename the related member.

2019-03-25  Keith Rollin  <krollin@apple.com>

        Add WebKit logging for first paint and other interesting layout milestones
        https://bugs.webkit.org/show_bug.cgi?id=196159
        <rdar://problem/49128952>

        Reviewed by Simon Fraser.

        Add some logging to indicate what layout milestones have been reached.
        This should help us determine if there's a client, rendering, layout,
        or some other issue when page content does not appear in the client
        window.

        The logging is being added to
        WebFrameLoaderClient::dispatchDidReachLayoutMilestone. This seems like
        a nice central place to capture layout milestones. However, it will
        only log notifications that are being sent to clients. It does not
        indicate all milestones that have occurred. That is, it does not
        report milestones that are filtered out due to client disinterest.
        There doesn't seem to be a good central place to capture all
        milestones, regardless of client interest.

        * Platform/Logging.h:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDidReachLayoutMilestone):

2019-03-25  Patrick Griffis  <pgriffis@igalia.com>

        [GTK][WPE] Remove network access from web process sandbox
        https://bugs.webkit.org/show_bug.cgi?id=189967

        Reviewed by Michael Catanzaro.

        * UIProcess/Launcher/glib/BubblewrapLauncher.cpp:
        (WebKit::createFlatpakInfo):
        (WebKit::bubblewrapSpawn):
        * UIProcess/Launcher/glib/FlatpakLauncher.cpp:
        (WebKit::flatpakSpawn):

2019-03-25  Andy Estes  <aestes@apple.com>

        [Apple Pay] Call +canMakePayments on a work queue
        https://bugs.webkit.org/show_bug.cgi?id=196179
        <rdar://problem/45388749>

        Reviewed by Brady Eidson.

        Calling +canMakePayments on either PKPaymentAuthorizationController or
        PKPaymentAuthorizationViewController results in synchronous IPC and is therefore very
        expensive to call on the main thread. On iOS, these calls are made in the network process,
        and on Mac in the UI process.

        Call these methods on a work queue to avoid main thread spins.

        * Shared/ApplePay/WebPaymentCoordinatorProxy.cpp:
        (WebKit::WebPaymentCoordinatorProxy::canMakePayments):
        * Shared/ApplePay/WebPaymentCoordinatorProxy.h:
        * Shared/ApplePay/ios/WebPaymentCoordinatorProxyIOS.mm:
        (WebKit::WebPaymentCoordinatorProxy::platformCanMakePayments):
        * Shared/ApplePay/mac/WebPaymentCoordinatorProxyMac.mm:
        (WebKit::WebPaymentCoordinatorProxy::platformCanMakePayments):

2019-03-25  Andy Estes  <aestes@apple.com>

        [Apple Pay] Remove the AvailablePaymentNetworks synchronous message
        https://bugs.webkit.org/show_bug.cgi?id=196180

        Reviewed by Youenn Fablet.

        Unlike many PassKit interactions, it's ok to call +[PKPaymentRequest availableNetworks]
        without an entitlement. Therefore, we can call it from the web process directly rather than
        synchronously messaging the entitled UI or networking process.

        * Shared/ApplePay/WebPaymentCoordinatorProxy.cpp:
        * Shared/ApplePay/WebPaymentCoordinatorProxy.h:
        * Shared/ApplePay/WebPaymentCoordinatorProxy.messages.in:
        * Shared/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
        * SourcesCocoa.txt:
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/ApplePay/WebPaymentCoordinator.cpp:
        (WebKit::WebPaymentCoordinator::availablePaymentNetworks):
        * WebProcess/ApplePay/WebPaymentCoordinator.h:
        * WebProcess/ApplePay/cocoa/WebPaymentCoordinatorCocoa.mm: Added.
        (WebKit::WebPaymentCoordinator::platformAvailablePaymentNetworks const):
        * WebProcess/WebPage/mac/WKAccessibilityWebPageObjectBase.mm:
        (-[WKAccessibilityWebPageObjectBase accessibilityRootObjectWrapper]):
        (-[WKAccessibilityWebPageObjectBase setWebPage:]):

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

        Unreviewed, tiny fix after r243388 to address API test failures on iOS

        m_processType was properly initialized on macOS but not iOS.

        * WebProcess/cocoa/WebProcessCocoa.mm:
        (WebKit::WebProcess::platformInitializeProcess):

2019-03-25  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK][WPE] Do not allow changes in active URI before provisional load starts for non-API requests
        https://bugs.webkit.org/show_bug.cgi?id=194208

        Reviewed by Michael Catanzaro.

        * UIProcess/API/glib/WebKitWebView.cpp:
        (webkitWebViewWillStartLoad): Block updates of active URL.
        (webkitWebViewLoadChanged): Unblock updates of active URL on WEBKIT_LOAD_STARTED.

2019-03-25  Gyuyoung Kim  <gyuyoung.kim@webkit.org>

        Remove NavigatorContentUtils in WebCore/Modules
        https://bugs.webkit.org/show_bug.cgi?id=196070

        Reviewed by Alex Christensen.

        NavigatorContentUtils was to support the custom scheme spec [1].
        However, in WebKit side, no port has supported the feature in
        WebKit layer after EFL port was removed. So there has been the
        only IDL implementation of the NavigatorContentUtils in WebCore.
        So we don't need to keep the implementation in WebCore anymore.

        [1] https://html.spec.whatwg.org/multipage/system-state.html#custom-handlers

        * Configurations/FeatureDefines.xcconfig:
        * WebProcess/WebCoreSupport/WebNavigatorContentUtilsClient.h: Removed.

2019-03-24  Zan Dobersek  <zdobersek@igalia.com>

        Unreviewed WPE build fix.

        * UIProcess/wpe/WebPasteboardProxyWPE.cpp:
        Add an explicit CompletionHandler.h include to avoid a trip-up in
        unified builds.

2019-03-24  Fujii Hironori  <Hironori.Fujii@sony.com>

        [WinCairo] WebProcessDataStoreParameters.h(32): error C2653: 'SandboxExtension': is not a class or namespace name
        https://bugs.webkit.org/show_bug.cgi?id=196192

        Unreviewed for WinCairo port.

        * Shared/WebProcessDataStoreParameters.h: Added #include "SandboxExtension.h".

2019-03-24  Andy Estes  <aestes@apple.com>

        [watchOS] Remove unused Proximity Networking code
        https://bugs.webkit.org/show_bug.cgi?id=196188

        Reviewed by Tim Horton.

        * Configurations/WebKit.xcconfig:
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::NetworkProcess):
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcessCreationParameters.cpp:
        (WebKit::NetworkProcessCreationParameters::encode const):
        (WebKit::NetworkProcessCreationParameters::decode):
        * NetworkProcess/NetworkProcessCreationParameters.h:
        * NetworkProcess/cocoa/NetworkDataTaskCocoa.h:
        * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
        (WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa):
        * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
        (WebKit::NetworkProcess::platformPrepareToSuspend):
        (WebKit::NetworkProcess::platformProcessDidResume):
        (WebKit::NetworkProcess::platformProcessDidTransitionToBackground):
        (WebKit::NetworkProcess::platformProcessDidTransitionToForeground):
        * NetworkProcess/watchos/NetworkProximityAssertion.h: Removed.
        * NetworkProcess/watchos/NetworkProximityAssertion.mm: Removed.
        * NetworkProcess/watchos/NetworkProximityManager.h: Removed.
        * NetworkProcess/watchos/NetworkProximityManager.mm: Removed.
        * SourcesCocoa.txt:
        * 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):
        * WebKit.xcodeproj/project.pbxproj:

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

        Unreviewed, fix typo in comment added in r243379.

        * UIProcess/API/Cocoa/WKProcessGroup.mm:
        (-[WKProcessGroup setDelegate:]):

2019-03-23  Simon Fraser  <simon.fraser@apple.com>

        REGRESSION (iOS 8): Scrollbar can't be hidden when webkit-overflow-scrolling is set to touch
        https://bugs.webkit.org/show_bug.cgi?id=137043
        rdar://problem/16595330

        Reviewed by Zalan Bujtas.

        Plumb horizontalScrollbarHiddenByStyle/verticalScrollbarHiddenByStyle through ScrollableAreaParameters
        to the UI process, and use it to set UIScrollView indicators visible or not.
        
        The scroll snap changes in ScrollingTreeScrollingNodeDelegateIOS::commitStateAfterChildren() fix a bug
        where hasChangedProperty(HorizontalSnapOffsets) was nested inside another set of hasChangedProperty()
        tests, so would never get called.

        * Shared/WebCoreArgumentCoders.cpp:
        (IPC::ArgumentCoder<ScrollableAreaParameters>::encode):
        (IPC::ArgumentCoder<ScrollableAreaParameters>::decode):
        * UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.mm:
        (WebKit::ScrollingTreeScrollingNodeDelegateIOS::commitStateAfterChildren):

2019-03-23  Zalan Bujtas  <zalan@apple.com>

        [ContentChangeObserver] Taping on a form control should always result in click.
        https://bugs.webkit.org/show_bug.cgi?id=196177

        Reviewed by Simon Fraser.

        This patch enures that we send a synthetic click when the traget node is a form control (button, edit field etc) even if
        the mousemove brings up some hover content.

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

2019-03-23  Andy Estes  <aestes@apple.com>

        [Apple Pay] Stop calling PKPaymentAuthorizationViewController class methods on iOS
        https://bugs.webkit.org/show_bug.cgi?id=196163
        <rdar://problem/48787564>

        Reviewed by Anders Carlsson.

        Now that we've transitioned to PKPaymentAuthorizationController on iOS, we should stop
        calling PKPaymentAuthorizationViewController class methods on iOS in favor of their
        PKPaymentAuthorizationController alternatives.

        While we're here, we should also transition to calling
        +paymentServicesMerchantURLForAPIType:completion: on both
        PKPaymentAuthorizationViewController and PKPaymentAuthorizationController.

        * Platform/cocoa/PaymentAuthorizationViewController.mm:
        (-[WKPaymentAuthorizationViewControllerDelegate _paymentServicesMerchantURLForAPIType:completion:]):
        * Platform/cocoa/WKPaymentAuthorizationDelegate.h:
        * Platform/cocoa/WKPaymentAuthorizationDelegate.mm:
        (-[WKPaymentAuthorizationDelegate _initWithRequest:presenter:]):
        (-[WKPaymentAuthorizationDelegate _paymentServicesMerchantURLForAPIType:completion:]):
        * Platform/ios/PaymentAuthorizationController.mm:
        (-[WKPaymentAuthorizationControllerDelegate _paymentServicesMerchantURLForAPIType:completion:]):
        * Shared/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
        (WebKit::WebPaymentCoordinatorProxy::platformCanMakePayments): Deleted.
        * Shared/ApplePay/ios/WebPaymentCoordinatorProxyIOS.mm:
        (WebKit::WebPaymentCoordinatorProxy::platformCanMakePayments):
        * Shared/ApplePay/mac/WebPaymentCoordinatorProxyMac.mm:
        (WebKit::WebPaymentCoordinatorProxy::platformCanMakePayments):

2019-03-23  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Fix GTK build after r243409.

        Build failure is actually unrelated to r243409, it's yet another unified build failure that happens when source
        file list changes.

        * UIProcess/gtk/WebInspectorProxyGtk.cpp:
        (WebKit::WebInspectorProxy::platformShowCertificate): Use WebCore namespace for CertificateInfo parameter.

2019-03-23  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Remove build time dependency on Geoclue2
        https://bugs.webkit.org/show_bug.cgi?id=195994

        Reviewed by Michael Catanzaro.

        Add GeoclueGeolocationProvider class to provide geolocation position updates using Geoclue2 DBus service.

        * PlatformGTK.cmake:
        * PlatformWPE.cmake:
        * SourcesGTK.txt:
        * SourcesWPE.txt:
        * UIProcess/API/glib/WebKitGeolocationManager.cpp:
        (_WebKitGeolocationPosition::_WebKitGeolocationPosition):
        (webkitGeolocationManagerStop):
        (webkitGeolocationManagerSetEnableHighAccuracy):
        (webkitGeolocationManagerDispose):
        (webkit_geolocation_manager_class_init):
        * UIProcess/geoclue/GeoclueGeolocationProvider.cpp: Added.
        (WebKit::GeoclueGeolocationProvider::GeoclueGeolocationProvider):
        (WebKit::GeoclueGeolocationProvider::~GeoclueGeolocationProvider):
        (WebKit::GeoclueGeolocationProvider::start):
        (WebKit::GeoclueGeolocationProvider::stop):
        (WebKit::GeoclueGeolocationProvider::setEnableHighAccuracy):
        (WebKit::GeoclueGeolocationProvider::destroyManagerLater):
        (WebKit::GeoclueGeolocationProvider::destroyManager):
        (WebKit::GeoclueGeolocationProvider::setupManager):
        (WebKit::GeoclueGeolocationProvider::createClient):
        (WebKit::GeoclueGeolocationProvider::setupClient):
        (WebKit::GeoclueGeolocationProvider::startClient):
        (WebKit::GeoclueGeolocationProvider::stopClient):
        (WebKit::GeoclueGeolocationProvider::requestAccuracyLevel):
        (WebKit::GeoclueGeolocationProvider::clientLocationUpdatedCallback):
        (WebKit::GeoclueGeolocationProvider::createLocation):
        (WebKit::GeoclueGeolocationProvider::locationUpdated):
        (WebKit::GeoclueGeolocationProvider::didFail):
        * UIProcess/geoclue/GeoclueGeolocationProvider.h: Added.

2019-03-22  Simon Fraser  <simon.fraser@apple.com>

        Undo collision with r243390.

        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (stringForSSLProtocol):

2019-03-22  Simon Fraser  <simon.fraser@apple.com>

        Fix internal builds.

        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (stringForSSLProtocol):

2019-03-22  Keith Rollin  <krollin@apple.com>

        Enable ThinLTO support in Production builds
        https://bugs.webkit.org/show_bug.cgi?id=190758
        <rdar://problem/45413233>

        Reviewed by Daniel Bates.

        Enable building with Thin LTO in Production when using Xcode 10.2 or
        later. This change results in a 1.45% progression in PLT5. Full
        Production build times increase about 2-3%. Incremental build times
        are more severely affected, and so LTO is not enabled for local
        engineering builds.

        LTO is enabled only on macOS for now, until rdar://problem/49013399,
        which affects ARM builds, is fixed.

        To change the LTO setting when building locally:

        - If building with `make`, specify WK_LTO_MODE={none,thin,full} on the
          command line.
        - If building with `build-webkit`, specify --lto-mode={none,thin,full}
          on the command line.
        - If building with `build-root`, specify --lto={none,thin,full} on the
          command line.
        - If building with Xcode, create a LocalOverrides.xcconfig file at the
          top level of your repository directory (if needed) and define
          WK_LTO_MODE to full, thin, or none.

        * Configurations/Base.xcconfig:

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

        Unreviewed build fix after r243388.

        * WebProcess/WebProcess.h:

2019-03-22  Per Arne Vollan  <pvollan@apple.com>

        [macOS] Fix sandbox violation
        https://bugs.webkit.org/show_bug.cgi?id=196153
        <rdar://problem/49123855>

        Reviewed by Brent Fulgham.

        The sandbox on macOS is blocking the mach lookup.

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

2019-03-21  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, fix the build with recent SDKs.

        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (stringForSSLProtocol):

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

        Implement WebProcess freezer opt-in completely on WebContent process side
        https://bugs.webkit.org/show_bug.cgi?id=196149

        Reviewed by Brady Eidson.

        Implement WebProcess freezer opt-in completely on WebContent process side, we do not need
        to involve the UIProcess with this and rely on IPC which may be fragile.

        In the future, we may want to set freezable state from the UIProcess when the API supports
        it. We can move the logic to be fully on the UIProcess side then. In the mean time, it is
        likely best not to rely on IPC and process coordination for this.

        * UIProcess/WebProcessProxy.cpp:
        (WebKit::globalPageMap):
        (WebKit::WebProcessProxy::WebProcessProxy):
        (WebKit::WebProcessProxy::setIsInProcessCache):
        (WebKit::WebProcessProxy::markIsNoLongerInPrewarmedPool):
        (WebKit::WebProcessProxy::didFinishLaunching):
        (WebKit::WebProcessProxy::validateFreezerStatus): Deleted.
        * UIProcess/WebProcessProxy.h:
        (WebKit::WebProcessProxy::removeProvisionalPageProxy):
        (WebKit::WebProcessProxy::WebPageProxyMap::WebPageProxyMap): Deleted.
        (WebKit::WebProcessProxy::WebPageProxyMap::size const): Deleted.
        (WebKit::WebProcessProxy::WebPageProxyMap::values): Deleted.
        (WebKit::WebProcessProxy::WebPageProxyMap::values const): Deleted.
        (WebKit::WebProcessProxy::WebPageProxyMap::begin): Deleted.
        (WebKit::WebProcessProxy::WebPageProxyMap::end): Deleted.
        (WebKit::WebProcessProxy::WebPageProxyMap::get): Deleted.
        (WebKit::WebProcessProxy::WebPageProxyMap::contains const): Deleted.
        (WebKit::WebProcessProxy::WebPageProxyMap::isEmpty const): Deleted.
        (WebKit::WebProcessProxy::WebPageProxyMap::set): Deleted.
        (WebKit::WebProcessProxy::WebPageProxyMap::take): Deleted.
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::setIsInProcessCache):
        (WebKit::WebProcess::markIsNoLongerPrewarmed):
        (WebKit::WebProcess::actualPrepareToSuspend):
        (WebKit::WebProcess::setFreezable): Deleted.
        * WebProcess/WebProcess.h:
        * WebProcess/WebProcess.messages.in:
        * WebProcess/cocoa/WebProcessCocoa.mm:
        (WebKit::WebProcess::updateProcessName):
        (WebKit::WebProcess::shouldFreezeOnSuspension const):
        (WebKit::WebProcess::updateFreezerStatus):

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

        Prewarmed processes should be usable with any website data store
        https://bugs.webkit.org/show_bug.cgi?id=196104

        Reviewed by Alex Christensen.

        Split WebsiteDataStore-specific data out of WebProcessCreationParameters and into a new
        WebProcessDataStoreParameters struct so that we do not need a WebsiteDataStore in order
        to lauch and initialize a WebProcess. When the process finally gets used and we thus
        know which WebsiteDataStore they will be used for, we send the WebProcessDataStoreParameters
        to the process to that it can do its data store-specific initialization.

        This allows prewarmed processes not not have a WebsiteDataStore assocated with them. They
        can then be used for any WebsiteDataStore when we need them.

        This is also used by our dummy WebProcessProxy since it does not have a backing process and
        thus has no associated WebsiteDataStore.

        * Shared/WebProcessCreationParameters.cpp:
        (WebKit::WebProcessCreationParameters::encode const):
        (WebKit::WebProcessCreationParameters::decode):
        * Shared/WebProcessCreationParameters.h:
        * Shared/WebProcessDataStoreParameters.h: Added.
        (WebKit::WebProcessDataStoreParameters::encode const):
        (WebKit::WebProcessDataStoreParameters::decode):
        * UIProcess/API/C/WKContext.cpp:
        (WKContextWarmInitialProcess):
        * UIProcess/API/Cocoa/WKProcessPool.mm:
        (-[WKProcessPool _warmInitialProcess]):
        * UIProcess/ServiceWorkerProcessProxy.cpp:
        (WebKit::ServiceWorkerProcessProxy::ServiceWorkerProcessProxy):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::notifyProcessPoolToPrewarm):
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::establishWorkerContextConnectionToNetworkProcess):
        (WebKit::WebProcessPool::createNewWebProcess):
        (WebKit::WebProcessPool::tryTakePrewarmedProcess):
        (WebKit::WebProcessPool::sendWebProcessDataStoreParameters):
        (WebKit::WebProcessPool::initializeNewWebProcess):
        (WebKit::WebProcessPool::prewarmProcess):
        (WebKit::WebProcessPool::processForRegistrableDomain):
        (WebKit::WebProcessPool::createWebPage):
        (WebKit::WebProcessPool::didReachGoodTimeToPrewarm):
        * UIProcess/WebProcessPool.h:
        (WebKit::WebProcessPool::sendToOneProcess):
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::create):
        (WebKit::WebProcessProxy::WebProcessProxy):
        (WebKit::WebProcessProxy::setWebsiteDataStore):
        (WebKit::WebProcessProxy::addExistingWebPage):
        * UIProcess/WebProcessProxy.h:
        (WebKit::WebProcessProxy::websiteDataStore const):
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/MediaCache/WebMediaKeyStorageManager.cpp:
        (WebKit::WebMediaKeyStorageManager::setWebsiteDataStore):
        * WebProcess/MediaCache/WebMediaKeyStorageManager.h:
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::initializeWebProcess):
        (WebKit::WebProcess::setWebsiteDataStoreParameters):
        * WebProcess/WebProcess.h:
        * WebProcess/WebProcess.messages.in:
        * WebProcess/WebProcessSupplement.h:
        (WebKit::WebProcessSupplement::initialize):
        (WebKit::WebProcessSupplement::setWebsiteDataStore):
        * WebProcess/cocoa/WebProcessCocoa.mm:
        (WebKit::WebProcess::platformInitializeWebProcess):
        (WebKit::WebProcess::platformSetWebsiteDataStoreParameters):
        * WebProcess/win/WebProcessWin.cpp:
        (WebKit::WebProcess::platformInitializeWebProcess):
        (WebKit::WebProcess::platformSetWebsiteDataStoreParameters):

2019-03-22  Simon Fraser  <simon.fraser@apple.com>

        REGRESSION (r242687): Flicker when pinch-zooming pages in macOS Safari
        https://bugs.webkit.org/show_bug.cgi?id=196126
        rdar://problem/49095791

        Reviewed by Antti Koivisto.

        The scrolling tree doesn't have an accurate picture of the main view's scroll position
        during pinch-zooming, so don't have it apply layer positions if a transient zoom is
        in progress.

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

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

        Handle UI side hit testing for ScrollPositioningBehavior::Stationary positioned nodes
        https://bugs.webkit.org/show_bug.cgi?id=196100
        <rdar://problem/49117933>

        Reviewed by Simon Fraser.

        Test: fast/scrolling/ios/overflow-scroll-overlap-6.html

        * UIProcess/RemoteLayerTree/RemoteLayerTreeNode.h:
        (WebKit::RemoteLayerTreeNode::relatedScrollContainerIDs const):
        (WebKit::RemoteLayerTreeNode::relatedScrollContainerPositioningBehavior const):

        Make more generic and save the associated positioning behavior.

        (WebKit::RemoteLayerTreeNode::nonAncestorScrollContainerIDs const): Deleted.
        (WebKit::RemoteLayerTreeNode::addNonAncestorScrollContainerID): Deleted.
        (WebKit::RemoteLayerTreeNode::clearNonAncestorScrollContainerIDs): Deleted.
        * UIProcess/RemoteLayerTree/RemoteLayerTreeNode.mm:
        (WebKit::RemoteLayerTreeNode::setRelatedScrollContainerBehaviorAndIDs):
        * UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.h:
        * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeViews.mm:
        (WebKit::isScrolledBy):

        Stationary relationship means the layer won't scroll the scroller.

        * UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.mm:
        (WebKit::RemoteScrollingCoordinatorProxy::establishLayerTreeScrollingRelations):

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

        REGRESSION (r243094): ePub files do not render or open in Books
        https://bugs.webkit.org/show_bug.cgi?id=196119
        <rdar://problem/49121686>

        Reviewed by Brady Eidson.

        Do not delay the WebProcess launch until a load when contructing a web view and the client
        may observe when its injected bundle is loaded via WKProcessGroupDelegate's
        didCreateConnectionToWebProcessPlugIn.

        * UIProcess/API/Cocoa/WKProcessGroup.mm:
        (-[WKProcessGroup setDelegate:]):
        * UIProcess/WebInspectorUtilities.cpp:
        (WebKit::inspectorProcessPool):
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::createWebPage):
        * UIProcess/WebProcessPool.h:

2019-03-22  Carlos Garcia Campos  <cgarcia@igalia.com>

        REGRESSION(r243094): Automation: browser crash in WebAutomationSession::exitFullscreenWindowForPage()
        https://bugs.webkit.org/show_bug.cgi?id=196140

        Reviewed by Chris Dumez.

        Since r243094, the WebPageProxy fullscreen manager is not created in the constructor, but once the page has a
        process launched.

        * UIProcess/Automation/WebAutomationSession.cpp:
        (WebKit::WebAutomationSession::exitFullscreenWindowForPage): Null check WebPageProxy::fullScreenManager() before
        using it.

2019-03-22  Timothy Hatcher  <timothy@apple.com>

        Change macosx() to macos() in WK_API... and JSC_API... macros.
        https://bugs.webkit.org/show_bug.cgi?id=196106

        Reviewed by Brian Burg.

        * Shared/API/Cocoa/WKBrowsingContextHandle.h:
        * Shared/API/Cocoa/WKDragDestinationAction.h:
        * Shared/API/Cocoa/WKMain.h:
        * Shared/API/Cocoa/_WKFrameHandle.h:
        * Shared/API/Cocoa/_WKHitTestResult.h:
        * Shared/API/Cocoa/_WKNSWindowExtras.h:
        * Shared/API/Cocoa/_WKRemoteObjectInterface.h:
        * Shared/API/Cocoa/_WKRemoteObjectRegistry.h:
        * Shared/API/Cocoa/_WKRenderingProgressEvents.h:
        * Shared/API/Cocoa/_WKSameDocumentNavigationType.h:
        * UIProcess/API/C/WKPage.h:
        * UIProcess/API/Cocoa/NSAttributedString.h:
        * UIProcess/API/Cocoa/WKBackForwardList.h:
        * UIProcess/API/Cocoa/WKBackForwardListItem.h:
        * UIProcess/API/Cocoa/WKBackForwardListItemPrivate.h:
        * UIProcess/API/Cocoa/WKBrowsingContextLoadDelegate.h:
        * UIProcess/API/Cocoa/WKContentRuleList.h:
        * UIProcess/API/Cocoa/WKContentRuleListStore.h:
        * UIProcess/API/Cocoa/WKError.h:
        * UIProcess/API/Cocoa/WKErrorPrivate.h:
        * UIProcess/API/Cocoa/WKFrameInfo.h:
        * UIProcess/API/Cocoa/WKFrameInfoPrivate.h:
        * UIProcess/API/Cocoa/WKHTTPCookieStore.h:
        * UIProcess/API/Cocoa/WKMenuItemIdentifiersPrivate.h:
        * UIProcess/API/Cocoa/WKNavigation.h:
        * UIProcess/API/Cocoa/WKNavigationAction.h:
        * UIProcess/API/Cocoa/WKNavigationActionPrivate.h:
        * UIProcess/API/Cocoa/WKNavigationDelegate.h:
        * UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h:
        * UIProcess/API/Cocoa/WKNavigationResponse.h:
        * UIProcess/API/Cocoa/WKOpenPanelParameters.h:
        * UIProcess/API/Cocoa/WKOpenPanelParametersPrivate.h:
        * UIProcess/API/Cocoa/WKPreferences.h:
        * UIProcess/API/Cocoa/WKPreferencesPrivate.h:
        * UIProcess/API/Cocoa/WKProcessPool.h:
        * UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
        * UIProcess/API/Cocoa/WKScriptMessage.h:
        * UIProcess/API/Cocoa/WKSecurityOrigin.h:
        * UIProcess/API/Cocoa/WKSnapshotConfiguration.h:
        * UIProcess/API/Cocoa/WKUIDelegate.h:
        * UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
        * UIProcess/API/Cocoa/WKURLSchemeHandler.h:
        * UIProcess/API/Cocoa/WKURLSchemeTask.h:
        * UIProcess/API/Cocoa/WKURLSchemeTaskPrivate.h:
        * UIProcess/API/Cocoa/WKUserContentController.h:
        * UIProcess/API/Cocoa/WKUserContentControllerPrivate.h:
        * UIProcess/API/Cocoa/WKUserScript.h:
        * UIProcess/API/Cocoa/WKUserScriptPrivate.h:
        * UIProcess/API/Cocoa/WKViewPrivate.h:
        * UIProcess/API/Cocoa/WKWebView.h:
        * UIProcess/API/Cocoa/WKWebViewConfiguration.h:
        * UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        * UIProcess/API/Cocoa/WKWebsiteDataRecord.h:
        * UIProcess/API/Cocoa/WKWebsiteDataRecordPrivate.h:
        * UIProcess/API/Cocoa/WKWebsiteDataStore.h:
        * UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
        * UIProcess/API/Cocoa/WKWindowFeatures.h:
        * UIProcess/API/Cocoa/WKWindowFeaturesPrivate.h:
        * UIProcess/API/Cocoa/_WKActivatedElementInfo.h:
        * UIProcess/API/Cocoa/_WKApplicationManifest.h:
        * UIProcess/API/Cocoa/_WKAttachment.h:
        * UIProcess/API/Cocoa/_WKAutomationDelegate.h:
        * UIProcess/API/Cocoa/_WKAutomationSession.h:
        * UIProcess/API/Cocoa/_WKAutomationSessionConfiguration.h:
        * UIProcess/API/Cocoa/_WKAutomationSessionDelegate.h:
        * UIProcess/API/Cocoa/_WKContextMenuElementInfo.h:
        * UIProcess/API/Cocoa/_WKDiagnosticLoggingDelegate.h:
        * UIProcess/API/Cocoa/_WKDownload.h:
        * UIProcess/API/Cocoa/_WKDownloadDelegate.h:
        * UIProcess/API/Cocoa/_WKElementAction.h:
        * UIProcess/API/Cocoa/_WKExperimentalFeature.h:
        * UIProcess/API/Cocoa/_WKFindOptions.h:
        * UIProcess/API/Cocoa/_WKFocusedElementInfo.h:
        * UIProcess/API/Cocoa/_WKFormInputSession.h:
        * UIProcess/API/Cocoa/_WKFullscreenDelegate.h:
        * UIProcess/API/Cocoa/_WKGeolocationCoreLocationProvider.h:
        * UIProcess/API/Cocoa/_WKInspector.h:
        * UIProcess/API/Cocoa/_WKInspectorWindow.h:
        * UIProcess/API/Cocoa/_WKInternalDebugFeature.h:
        * UIProcess/API/Cocoa/_WKLayoutMode.h:
        * UIProcess/API/Cocoa/_WKLinkIconParameters.h:
        * UIProcess/API/Cocoa/_WKOverlayScrollbarStyle.h:
        * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h:
        * UIProcess/API/Cocoa/_WKRemoteWebInspectorViewController.h:
        * UIProcess/API/Cocoa/_WKSessionState.h:
        * UIProcess/API/Cocoa/_WKTextInputContext.h:
        * UIProcess/API/Cocoa/_WKThumbnailView.h:
        * UIProcess/API/Cocoa/_WKUserContentExtensionStore.h:
        * UIProcess/API/Cocoa/_WKUserContentExtensionStorePrivate.h:
        * UIProcess/API/Cocoa/_WKUserContentFilter.h:
        * UIProcess/API/Cocoa/_WKUserContentFilterPrivate.h:
        * UIProcess/API/Cocoa/_WKUserContentWorld.h:
        * UIProcess/API/Cocoa/_WKUserInitiatedAction.h:
        * UIProcess/API/Cocoa/_WKUserStyleSheet.h:
        * UIProcess/API/Cocoa/_WKVisitedLinkStore.h:
        * UIProcess/API/Cocoa/_WKWebsiteDataSize.h:
        * UIProcess/API/Cocoa/_WKWebsiteDataStore.h:
        * UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h:
        * UIProcess/API/Cocoa/_WKWebsiteDataStoreDelegate.h:
        * UIProcess/API/Cocoa/_WKWebsitePolicies.h:
        * WebProcess/API/Cocoa/WKWebProcess.h:
        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInEditingDelegate.h:
        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.h:
        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInHitTestResult.h:
        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandle.h:
        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandlePrivate.h:
        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInPageGroup.h:
        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInRangeHandle.h:
        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInScriptWorld.h:
        * WebProcess/InjectedBundle/API/mac/WKDOMDocument.h:
        * WebProcess/InjectedBundle/API/mac/WKDOMElement.h:
        * WebProcess/InjectedBundle/API/mac/WKDOMNode.h:
        * WebProcess/InjectedBundle/API/mac/WKDOMRange.h:
        * WebProcess/InjectedBundle/API/mac/WKDOMText.h:
        * WebProcess/InjectedBundle/API/mac/WKDOMTextIterator.h:
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugIn.h:
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.h:
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextControllerPrivate.h:

2019-03-22  Yousuke Kimoto  <Yousuke.Kimoto@sony.com>

        Unreviewed build fix.

        * UIProcess/WebsiteData/WebsiteDataStore.cpp:

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

        Fix the build after r243354
        https://bugs.webkit.org/show_bug.cgi?id=196138
        <rdar://problem/49145951>

        * Platform/spi/ios/UIKitSPI.h:
        * Shared/DocumentEditingContext.mm:
        (WebKit::DocumentEditingContext::toPlatformContext):
        * UIProcess/ios/WKContentViewInteraction.mm:

2019-03-21  Simon Fraser  <simon.fraser@apple.com>

        Clean up some TiledCoreAnimationDrawingArea members
        https://bugs.webkit.org/show_bug.cgi?id=196124

        Reviewed by Tim Horton.

        The giant m_transform was unused.
        
        Group the bools etc.

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

2019-03-21  Brady Eidson  <beidson@apple.com>

        Certain WebProcesses should opt-out of the freezer.
        <rdar://problem/42846139> and https://bugs.webkit.org/show_bug.cgi?id=196062

        Reviewed by Andy Estes.

        WebProcesses should opt-in and opt-out of the freezer as is appropriate.
        By default a WebProcess is freezer eligible.
        If any of the following become true then it should become ineligible:
        - The WebProcess is a pre-warmed process.
        - The WebProcess is in the process cache.
        - The WebProcess is not actively hosting any web pages (e.g. it only has suspending web pages)

        The most complicated part of the above is guaranteeing that any operation that changes
        the active pages hosted by the process causes a recalculation of the freezer opt-in state.

        To do that this replaces the basic WebPageProxyMap with a custom class.

        * UIProcess/WebProcessProxy.cpp:
        (WebKit::globalPageMap):
        (WebKit::WebProcessProxy::WebProcessProxy):
        (WebKit::WebProcessProxy::validateFreezerStatus):
        (WebKit::WebProcessProxy::setIsInProcessCache):
        (WebKit::WebProcessProxy::markIsNoLongerInPrewarmedPool):
        (WebKit::WebProcessProxy::didFinishLaunching):
        * UIProcess/WebProcessProxy.h:
        (WebKit::WebProcessProxy::WebPageProxyMap::WebPageProxyMap):
        (WebKit::WebProcessProxy::WebPageProxyMap::size const):
        (WebKit::WebProcessProxy::WebPageProxyMap::values):
        (WebKit::WebProcessProxy::WebPageProxyMap::values const):
        (WebKit::WebProcessProxy::WebPageProxyMap::begin):
        (WebKit::WebProcessProxy::WebPageProxyMap::end):
        (WebKit::WebProcessProxy::WebPageProxyMap::get):
        (WebKit::WebProcessProxy::WebPageProxyMap::contains const):
        (WebKit::WebProcessProxy::WebPageProxyMap::isEmpty const):
        (WebKit::WebProcessProxy::WebPageProxyMap::set):
        (WebKit::WebProcessProxy::WebPageProxyMap::take):

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

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

        Adopt UIWKDocumentContext
        https://bugs.webkit.org/show_bug.cgi?id=196040
        <rdar://problem/48642440>

        Reviewed by Ryosuke Niwa.

        * Platform/spi/ios/UIKitSPI.h:
        * Scripts/webkit/messages.py:
        * Shared/DocumentEditingContext.h: Added.
        * Shared/DocumentEditingContext.mm: Added.
        (WebKit::toNSRange):
        (WebKit::DocumentEditingContext::toPlatformContext):
        (IPC::ArgumentCoder<WebKit::DocumentEditingContext::Range>::encode):
        (IPC::ArgumentCoder<WebKit::DocumentEditingContext::Range>::decode):
        (IPC::ArgumentCoder<WebKit::DocumentEditingContext::TextRect>::encode):
        (IPC::ArgumentCoder<WebKit::DocumentEditingContext::TextRect>::decode):
        (IPC::ArgumentCoder<WebKit::DocumentEditingContext>::encode):
        (IPC::ArgumentCoder<WebKit::DocumentEditingContext>::decode):
        (IPC::ArgumentCoder<WebKit::DocumentEditingContextRequest>::encode):
        (IPC::ArgumentCoder<WebKit::DocumentEditingContextRequest>::decode):
        Add DocumentEditingContext(Request), and coders.
        Also expose DocumentEditingContext::toPlatformContext, which populates
        a UIWKDocumentContext with the relevant values.

        * SourcesCocoa.txt:
        * UIProcess/WebPageProxy.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (toWebDocumentRequestOptions):
        (toWebRequest):
        (-[WKContentView adjustSelectionWithDelta:completionHandler:]):
        (-[WKContentView requestDocumentContext:completionHandler:]):
        (-[WKContentView selectPositionAtPoint:withContextRequest:completionHandler:]):
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::adjustSelectionWithDelta):
        (WebKit::WebPageProxy::requestDocumentEditingContext):
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:
        Plumb DocumentEditingContext(Request) around.

        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::adjustSelectionWithDelta):
        Adjust the current selection given deltas to apply to the location and length.

        (WebKit::visiblePositionAdjacentToVisiblePosition):
        (WebKit::visiblePositionForPointInRootViewCoordinates):
        (WebKit::WebPage::requestDocumentEditingContext):
        Retrieve the relevant part of the selection, as well as the context,
        given either the selection, or a rect.
        If we're collecting context for a rect, we split the context between
        before and after (except for the part that intersects the selection).
        The three strings will always be directly adjacent, and any of the three
        can sometimes be null.

2019-03-21  James Magahern  <jmagahern@apple.com>

        Long press gesture recognizers in WKWebView are conflicting with internal scroll view long press gesture recognizers
        https://bugs.webkit.org/show_bug.cgi?id=195726
        rdar://problem/48582449

        Reviewed by Megan Gardner.

        We just need to add another clause to WKContentViewInteraction's
        canPreventGestureRecognizer whitelist. 

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

2019-03-21  Simon Fraser  <simon.fraser@apple.com>

        [iOS WK2] Turn on async overflow scrolling by default
        https://bugs.webkit.org/show_bug.cgi?id=196011
        rdar://problem/48453859

        Reviewed by Antti Koivisto.

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

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

        Remove last use of LegacySync IPC messages
        https://bugs.webkit.org/show_bug.cgi?id=196113

        Reviewed by Chris Dumez.

        Also rename "Delayed" to "Synchronous" now that there's only one type of synchronous message.

        * NetworkProcess/NetworkConnectionToWebProcess.messages.in:
        * NetworkProcess/NetworkProcess.messages.in:
        * NetworkProcess/ServiceWorker/WebSWServerConnection.cpp:
        (WebKit::WebSWServerConnection::syncTerminateWorkerFromClient):
        * NetworkProcess/ServiceWorker/WebSWServerConnection.h:
        * NetworkProcess/ServiceWorker/WebSWServerConnection.messages.in:
        * Platform/IPC/Connection.cpp:
        (IPC::Connection::dispatchMessage):
        * Platform/IPC/HandleMessage.h:
        (IPC::handleMessageSynchronous):
        (IPC::handleMessageSynchronousWantsConnection):
        (IPC::handleMessageLegacySync): Deleted.
        (IPC::handleMessageDelayed): Deleted.
        (IPC::handleMessageDelayedWantsConnection): Deleted.
        * PluginProcess/PluginControllerProxy.messages.in:
        * PluginProcess/WebProcessConnection.messages.in:
        * Scripts/webkit/LegacyMessageReceiver-expected.cpp:
        (WebKit::WebPage::didReceiveSyncWebPageMessage):
        * Scripts/webkit/MessageReceiver-expected.cpp:
        (WebKit::WebPage::didReceiveSyncMessage):
        * Scripts/webkit/MessageReceiverSuperclass-expected.cpp:
        (Messages::WebPage::TestSyncMessage::send):
        (Messages::WebPage::TestSynchronousMessage::send):
        (WebKit::WebPage::didReceiveSyncMessage):
        (Messages::WebPage::TestDelayedMessage::send): Deleted.
        * Scripts/webkit/MessagesSuperclass-expected.h:
        (Messages::WebPage::TestSynchronousMessage::name):
        (Messages::WebPage::TestSynchronousMessage::TestSynchronousMessage):
        (Messages::WebPage::TestDelayedMessage::receiverName): Deleted.
        (Messages::WebPage::TestDelayedMessage::name): Deleted.
        (Messages::WebPage::TestDelayedMessage::TestDelayedMessage): Deleted.
        (Messages::WebPage::TestDelayedMessage::arguments const): Deleted.
        * Scripts/webkit/messages.py:
        * Scripts/webkit/messages_unittest.py:
        * Scripts/webkit/test-legacy-messages.in:
        * Scripts/webkit/test-messages.in:
        * Scripts/webkit/test-superclass-messages.in:
        * Shared/ApplePay/WebPaymentCoordinatorProxy.messages.in:
        * Shared/Plugins/NPObjectMessageReceiver.messages.in:
        * UIProcess/Cocoa/UserMediaCaptureManagerProxy.messages.in:
        * UIProcess/Plugins/PluginProcessProxy.messages.in:
        * UIProcess/WebFullScreenManagerProxy.messages.in:
        * UIProcess/WebPageProxy.messages.in:
        * UIProcess/WebPasteboardProxy.messages.in:
        * UIProcess/WebProcessPool.messages.in:
        * UIProcess/WebProcessProxy.messages.in:
        * UIProcess/WebStorage/StorageManager.messages.in:
        * UIProcess/mac/SecItemShimProxy.messages.in:
        * WebProcess/Plugins/PluginProcessConnection.messages.in:
        * WebProcess/Plugins/PluginProxy.messages.in:
        * WebProcess/Storage/WebSWClientConnection.cpp:
        (WebKit::WebSWClientConnection::syncTerminateWorker):
        * WebProcess/Storage/WebSWContextManagerConnection.messages.in:
        * WebProcess/WebPage/WebPage.messages.in:
        * WebProcess/WebProcess.messages.in:

2019-03-21  Brian Burg  <bburg@apple.com>

        Web Automation: support uploading non-local file paths
        https://bugs.webkit.org/show_bug.cgi?id=196081
        <rdar://problem/45819897>

        Reviewed by Devin Rousso and Joseph Pecoraro.

        To support cases where supplied file paths do not exist on the session host, add support for
        receiving file contents via Automation.setFilesToSelectForFileUpload.

        * UIProcess/Automation/Automation.json: Add new parameter.

        * UIProcess/Automation/WebAutomationSession.h:
        * UIProcess/Automation/WebAutomationSession.cpp:
        (WebKit::WebAutomationSession::setFilesToSelectForFileUpload):
        Add support for receiving and saving file contents to a temporary directory. Rewrite the used paths so
        that WebCore knows to look at the revised paths where the file contents have been saved.

        (WebKit::WebAutomationSession::platformGenerateLocalFilePathForRemoteFile):
        Since WebKit does not have usable FileSystem implementations for all ports, shell out the actual
        saving of base64-encoded file data. Provide a Cocoa implementation, since that's what I can test.

        * UIProcess/Automation/cocoa/WebAutomationSessionCocoa.mm:
        (WebKit::WebAutomationSession::platformGenerateLocalFilePathForRemoteFile):
        Use WTF::FileSystem to create a temporary directory, and use Cocoa methods to actually write the file.

2019-03-21  Youenn Fablet  <youenn@apple.com>

        Cache API and IDB space usages should be initialized on first quota check
        https://bugs.webkit.org/show_bug.cgi?id=195707

        Reviewed by Chris Dumez.

        When the quota manager is created, make sure it delays quota check decisions until IDB and Cache API quota users are initialized.
        For IDB, the creation is synchronous but it may not be synchronous for Cache API.
        For that purpose, add a temporary quota user that will stay uninitialized until these two quota users are added.
        Once added, the temporary quota user is removed.
        The addition of the real users is made asynchronously as this is triggered by the creation of one of the two quota users.

        In the case of a Cache API caches being cleared, make sure to reset the size to zero and to redo the quota user initialization dance.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::QuotaUserInitializer::initialize):
        (WebKit::QuotaUserInitializer::~QuotaUserInitializer):
        (WebKit::QuotaUserInitializer::QuotaUserInitializer):
        (WebKit::NetworkProcess::storageQuotaManager):
        * NetworkProcess/cache/CacheStorageEngine.cpp:
        (WebKit::CacheStorage::Engine::initializeQuotaUser):
        * NetworkProcess/cache/CacheStorageEngine.h:
        * NetworkProcess/cache/CacheStorageEngineCaches.cpp:
        (WebKit::CacheStorage::Caches::clear):

2019-03-21  Per Arne Vollan  <pvollan@apple.com>

        [iOS][macOS] Fix sandbox call violations
        https://bugs.webkit.org/show_bug.cgi?id=195809
        <rdar://problem/48829655>

        Reviewed by Brent Fulgham.

        An additional syscall needs to be added to the sandbox allow list.

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

2019-03-21  Eric Carlson  <eric.carlson@apple.com>

        Add UI process WebRTC runtime logging.
        https://bugs.webkit.org/show_bug.cgi?id=196020
        <rdar://problem/49071443>

        Reviewed by Youenn Fablet.

        * Platform/Logging.cpp:
        (WebKit::getLogChannel): New.
        * Platform/Logging.h:
        * Shared/WebCoreArgumentCoders.h: Add coders for WTFLogChannelState and WTFLogLevel.

        Add runtime logging.
        * UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
        (WebKit::UserMediaPermissionRequestManagerProxy::UserMediaPermissionRequestManagerProxy):
        (WebKit::UserMediaPermissionRequestManagerProxy::stopCapture):
        (WebKit::UserMediaPermissionRequestManagerProxy::captureDevicesChanged):
        (WebKit::UserMediaPermissionRequestManagerProxy::clearCachedState):
        (WebKit::UserMediaPermissionRequestManagerProxy::userMediaAccessWasDenied):
        (WebKit::UserMediaPermissionRequestManagerProxy::denyRequest):
        (WebKit::UserMediaPermissionRequestManagerProxy::userMediaAccessWasGranted):
        (WebKit::UserMediaPermissionRequestManagerProxy::resetAccess):
        (WebKit::UserMediaPermissionRequestManagerProxy::grantAccess):
        (WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame):
        (WebKit::UserMediaPermissionRequestManagerProxy::processUserMediaPermissionRequest):
        (WebKit::UserMediaPermissionRequestManagerProxy::processUserMediaPermissionInvalidRequest):
        (WebKit::UserMediaPermissionRequestManagerProxy::processUserMediaPermissionValidRequest):
        (WebKit::UserMediaPermissionRequestManagerProxy::computeFilteredDeviceList):
        (WebKit::UserMediaPermissionRequestManagerProxy::enumerateMediaDevicesForFrame):
        (WebKit::UserMediaPermissionRequestManagerProxy::captureStateChanged):
        (WebKit::UserMediaPermissionRequestManagerProxy::watchdogTimerFired):
        (WebKit::UserMediaPermissionRequestManagerProxy::logChannel const):
        (WebKit::convertEnumerationToString):

        * UIProcess/UserMediaPermissionRequestManagerProxy.h:
        (WTF::LogArgument<WebKit::UserMediaPermissionRequestManagerProxy::RequestAction>::toString):
        * UIProcess/UserMediaPermissionRequestProxy.cpp:
        (WebKit::convertEnumerationToString): Add an enum specialization for logging.

        * UIProcess/UserMediaPermissionRequestProxy.h:
        (WTF::LogArgument<WebKit::UserMediaPermissionRequestProxy::UserMediaAccessDenialReason>::toString): Ditto.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::logger):
        (WebKit::WebPageProxy::configureLoggingChannel):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:

        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::configureLoggingChannel):
        * WebProcess/WebCoreSupport/WebChromeClient.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::configureLoggingChannel):
        * WebProcess/WebPage/WebPage.h:

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

        Stop using LegacySync messages in WebPageProxy
        https://bugs.webkit.org/show_bug.cgi?id=196056

        Reviewed by Chris Dumez.

        * UIProcess/Cocoa/WebPageProxyCocoa.mm:
        (WebKit::WebPageProxy::loadRecentSearches):
        * UIProcess/ProvisionalPageProxy.cpp:
        (WebKit::ProvisionalPageProxy::backForwardGoToItem):
        (WebKit::ProvisionalPageProxy::didReceiveSyncMessage):
        * UIProcess/ProvisionalPageProxy.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::handleSynchronousMessage):
        (WebKit::WebPageProxy::hasInsecureContent):
        (WebKit::WebPageProxy::accessibilityScreenToRootView):
        (WebKit::WebPageProxy::rootViewToAccessibilityScreen):
        (WebKit::WebPageProxy::printFrame):
        (WebKit::WebPageProxy::backForwardGoToItem):
        (WebKit::WebPageProxy::backForwardGoToItemShared):
        (WebKit::WebPageProxy::backForwardItemAtIndex):
        (WebKit::WebPageProxy::backForwardBackListCount):
        (WebKit::WebPageProxy::backForwardForwardListCount):
        (WebKit::WebPageProxy::canUndoRedo):
        (WebKit::WebPageProxy::executeUndoRedo):
        (WebKit::WebPageProxy::checkTextOfParagraph):
        (WebKit::WebPageProxy::checkSpellingOfString):
        (WebKit::WebPageProxy::checkGrammarOfString):
        (WebKit::WebPageProxy::spellingUIIsShowing):
        (WebKit::WebPageProxy::getGuessesForWord):
        (WebKit::WebPageProxy::substitutionsPanelIsShowing):
        (WebKit::WebPageProxy::showCorrectionPanel):
        (WebKit::WebPageProxy::dismissCorrectionPanel):
        (WebKit::WebPageProxy::dismissCorrectionPanelSoon):
        (WebKit::WebPageProxy::recordAutocorrectionResponse):
        (WebKit::WebPageProxy::dictationAlternatives):
        (WebKit::WebPageProxy::wrapCryptoKey):
        (WebKit::WebPageProxy::unwrapCryptoKey):
        (WebKit::WebPageProxy::signedPublicKeyAndChallengeString):
        (WebKit::WebPageProxy::serializedAttachmentDataForIdentifiers):
        (WebKit::WebPageProxy::speechSynthesisVoiceList):
        (WebKit::WebPageProxy::printMainFrame): Deleted.
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * UIProcess/gtk/WebPageProxyGtk.cpp:
        (WebKit::WebPageProxy::createPluginContainer):
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::interpretKeyEvent):
        * UIProcess/mac/WebPageProxyMac.mm:
        (WebKit::WebPageProxy::getIsSpeaking):
        (WebKit::WebPageProxy::executeSavedCommandBySelector):
        (WebKit::WebPageProxy::showPDFContextMenu):

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

        Stop using LegacySync messages in WebPage
        https://bugs.webkit.org/show_bug.cgi?id=196057

        Reviewed by Chris Dumez.

        * WebProcess/WebPage/WebPage.h:
        (WebKit::WebPage::markLayersVolatile):
        * WebProcess/WebPage/WebPage.messages.in:
        * WebProcess/WebPage/gtk/WebPageGtk.cpp:
        (WebKit::WebPage::getCenterForZoomGesture):
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::readSelectionFromPasteboard):
        (WebKit::WebPage::getStringSelectionForPasteboard):
        (WebKit::WebPage::getDataSelectionForPasteboard):
        (WebKit::WebPage::shouldDelayWindowOrderingEvent):
        (WebKit::WebPage::acceptsFirstMouse):
        * WebProcess/WebPage/mac/WebPageMac.mm:
        (WebKit::WebPage::replaceSelectionWithPasteboardData):
        (WebKit::WebPage::readSelectionFromPasteboard):
        (WebKit::WebPage::getStringSelectionForPasteboard):
        (WebKit::WebPage::getDataSelectionForPasteboard):
        (WebKit::WebPage::shouldDelayWindowOrderingEvent):
        (WebKit::WebPage::acceptsFirstMouse):

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

        Stop using LegacySync messages in WebPasteboardProxy
        https://bugs.webkit.org/show_bug.cgi?id=196060

        Reviewed by Chris Dumez.

        * UIProcess/Cocoa/WebPasteboardProxyCocoa.mm:
        (WebKit::WebPasteboardProxy::getPasteboardTypes):
        (WebKit::WebPasteboardProxy::getPasteboardPathnamesForType):
        (WebKit::WebPasteboardProxy::getPasteboardStringForType):
        (WebKit::WebPasteboardProxy::getPasteboardStringsForType):
        (WebKit::WebPasteboardProxy::getPasteboardBufferForType):
        (WebKit::WebPasteboardProxy::pasteboardCopy):
        (WebKit::WebPasteboardProxy::getPasteboardChangeCount):
        (WebKit::WebPasteboardProxy::getPasteboardUniqueName):
        (WebKit::WebPasteboardProxy::getPasteboardColor):
        (WebKit::WebPasteboardProxy::getPasteboardURL):
        (WebKit::WebPasteboardProxy::addPasteboardTypes):
        (WebKit::WebPasteboardProxy::setPasteboardTypes):
        (WebKit::WebPasteboardProxy::setPasteboardURL):
        (WebKit::WebPasteboardProxy::setPasteboardColor):
        (WebKit::WebPasteboardProxy::setPasteboardStringForType):
        (WebKit::WebPasteboardProxy::setPasteboardBufferForType):
        (WebKit::WebPasteboardProxy::getNumberOfFiles):
        (WebKit::WebPasteboardProxy::typesSafeForDOMToReadAndWrite):
        (WebKit::WebPasteboardProxy::writeCustomData):
        (WebKit::WebPasteboardProxy::readStringFromPasteboard):
        (WebKit::WebPasteboardProxy::readURLFromPasteboard):
        (WebKit::WebPasteboardProxy::readBufferFromPasteboard):
        (WebKit::WebPasteboardProxy::getPasteboardItemsCount):
        (WebKit::WebPasteboardProxy::allPasteboardItemInfo):
        (WebKit::WebPasteboardProxy::informationForItemAtIndex):
        * UIProcess/WebPasteboardProxy.cpp:
        (WebKit::WebPasteboardProxy::typesSafeForDOMToReadAndWrite):
        (WebKit::WebPasteboardProxy::writeCustomData):
        * UIProcess/WebPasteboardProxy.h:
        * UIProcess/WebPasteboardProxy.messages.in:
        * UIProcess/gtk/WebPasteboardProxyGtk.cpp:
        (WebKit::WebPasteboardProxy::writeToClipboard):
        (WebKit::WebPasteboardProxy::readFromClipboard):
        * UIProcess/wpe/WebPasteboardProxyWPE.cpp:
        (WebKit::WebPasteboardProxy::getPasteboardTypes):
        (WebKit::WebPasteboardProxy::readStringFromPasteboard):
        (WebKit::WebPasteboardProxy::writeWebContentToPasteboard):
        (WebKit::WebPasteboardProxy::writeStringToPasteboard):

2019-03-21  Andy Estes  <aestes@apple.com>

        [iOS] Apple Pay should be available in documents with no user agent scripts
        https://bugs.webkit.org/show_bug.cgi?id=196061
        <rdar://problem/48649391>

        Reviewed by Brady Eidson.

        * Shared/AuxiliaryProcess.h:
        * Shared/Cocoa/AuxiliaryProcessCocoa.mm:
        (WebKit::AuxiliaryProcess::parentProcessHasEntitlement):

        Added a convenience function for checking parent process entitlements.

        * Shared/WebPreferences.yaml:
        * Shared/WebPreferencesDefaultValues.h:
        * UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
        (-[WKWebViewConfiguration init]):

        Enabled Apple Pay by default on platforms that enable APPLE_PAY_REMOTE_UI.

        * WebProcess/ApplePay/WebPaymentCoordinator.cpp:
        (WebKit::WebPaymentCoordinator::supportsUnrestrictedApplePay const):
        * WebProcess/ApplePay/WebPaymentCoordinator.h:

        Implemented supportsUnrestrictedApplePay by checking for the
        com.apple.private.WebKit.UnrestrictedApplePay entitlement on platforms that enable
        APPLE_PAY_REMOTE_UI.

        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInLoadDelegate.h:
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:
        (didClearWindowObjectForFrame):
        (setUpPageLoaderClient):

        Added injected bundle SPI that TestWebKitAPI uses to inject the WebCore Internals interface.

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

        Changed to call ScriptController::executeUserAgentScriptInWorld.

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

        WebKit should throw when trying to create a WKWebView with a related view that is using a different data store
        https://bugs.webkit.org/show_bug.cgi?id=196041
        <rdar://problem/49083230>

        Reviewed by Alex Christensen.

        WebKit should throw when trying to create a WKWebView with a related view that is using a different data store.
        We do not support having several WebsiteDataStores sharing the same WebProcess.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _initializeWithConfiguration:]):
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::createWebPage):

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

        Add SPI to inform applications of WKContentRuleList actions
        https://bugs.webkit.org/show_bug.cgi?id=195965
        <rdar://problem/42664365>

        Reviewed by Geoff Garen.

        * NetworkProcess/NetworkLoadChecker.cpp:
        (WebKit::NetworkLoadChecker::checkRequest):
        (WebKit::NetworkLoadChecker::processContentRuleListsForLoad):
        (WebKit::NetworkLoadChecker::processContentExtensionRulesForLoad): Deleted.
        * NetworkProcess/NetworkLoadChecker.h:
        * UIProcess/API/APINavigationClient.h:
        (API::NavigationClient::contentRuleListNotification):
        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetPageNavigationClient):
        * UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h:
        * UIProcess/Cocoa/NavigationState.h:
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::setNavigationDelegate):
        (WebKit::NavigationState::NavigationClient::contentRuleListNotification):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::contentRuleListNotification):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::contentRuleListNotification):
        * WebProcess/WebCoreSupport/WebChromeClient.h:

2019-03-21  Simon Fraser  <simon.fraser@apple.com>

        Add an internal feature flag to disable the -webkit-overflow-scrolling CSS property
        https://bugs.webkit.org/show_bug.cgi?id=196058
        rdar://problem/49078202

        Reviewed by Antti Koivisto.

        Add an internal feature flag called "LegacyOverflowScrollingTouchEnabled", initially
        on by default.

        * Shared/WebPreferences.yaml:

2019-03-21  Antti Koivisto  <antti@apple.com>

        UI-process hit-testing needs to know about containing block relationships
        https://bugs.webkit.org/show_bug.cgi?id=195845
        <rdar://problem/48949633>

        Reviewed by Simon Fraser.

        Test: fast/scrolling/ios/overflow-scroll-overlap-5.html

        When an overflow scroller contains a positioned element the element may not be on a descendant layer of the scroller,
        yet should move along with it. This needs to be taken into account in UI-side hit testing.

        * UIProcess/RemoteLayerTree/RemoteLayerTreeNode.h:
        (WebKit::RemoteLayerTreeNode::nonAncestorScrollContainerIDs const):
        (WebKit::RemoteLayerTreeNode::addNonAncestorScrollContainerID):
        (WebKit::RemoteLayerTreeNode::clearNonAncestorScrollContainerIDs):

        Maintain non-ancestor scrolling relationships for layers.

        * UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.cpp:
        (WebKit::RemoteScrollingCoordinatorProxy::commitScrollingTreeState):
        (WebKit::RemoteScrollingCoordinatorProxy::establishLayerTreeScrollingRelations):
        * UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.h:
        * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeViews.mm:
        (WebKit::isScrolledBy):

        Helper to figure out who scrolls who.

        (-[UIView _web_findDescendantViewAtPoint:withEvent:]):
        * UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.mm:
        (WebKit::RemoteScrollingCoordinatorProxy::establishLayerTreeScrollingRelations):

        After commit, pull the non-ancestor scrolling relationships from the scrolling tree and update the layer tree.

2019-03-21  Daniel Bates  <dabates@apple.com>

        [iOS] Inline -_ensureFormAccessoryView into -formAccessoryView and have -_updateAccessory ensure we have a form accessory
        https://bugs.webkit.org/show_bug.cgi?id=196021

        Reviewed by Wenson Hsieh.

        Every caller of -_ensureFormAccessoryView, except -formAccessoryView, immediately follows the call
        with a call to -_updateAccessory. Let's just have -_updateAccessory ensure we have a form accessory
        view and inline the implementation of -_ensureFormAccessoryView into -formAccessoryView so we can
        remove one method.

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView inputView]): Remove call to -_ensureFormAccessoryView, -_updateAccessory will do
        the equivalent work for us.
        (-[WKContentView formAccessoryView]): Moved implementation of -_ensureFormAccessoryView into here.
        (-[WKContentView _updateAccessory]): Call self.formAccessoryView to ensure we have a form accessory view.
        (-[WKContentView _elementDidFocus:userIsInteracting:blurPreviousNode:changingActivityState:userObject:]):
        Remove call to -_ensureFormAccessoryView, -_updateAccessory will do
        the equivalent work for us.
        (-[WKContentView _ensureFormAccessoryView]): Deleted.

2019-03-21  Shawn Roberts  <sroberts@apple.com>

        Unreviewed, rolling out r243250.

        Causing 109 Failures and 2 crashes on iOS Sim Debug
        OpenSource/Internal queues

        Reverted changeset:

        "[iOS WK2] Turn on async overflow scrolling by default"
        https://bugs.webkit.org/show_bug.cgi?id=196011
        https://trac.webkit.org/changeset/243250

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

        Fix possible memory leak when dismissing a color picker
        https://bugs.webkit.org/show_bug.cgi?id=196026
        <rdar://problem/48778568>

        Reviewed by Wenson Hsieh.

        Fix a problem with WebPageProxy::endColorPicker where an early return could leave a color picker
        with a +1 reference count after dismissing it.

        * UIProcess/WebColorPicker.cpp:
        (WebKit::WebColorPicker::endPicker):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::endColorPicker):
        (WebKit::WebPageProxy::didEndColorPicker):

2019-03-21  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK][WPE] Add API to provide geolocation information
        https://bugs.webkit.org/show_bug.cgi?id=195940

        Reviewed by Michael Catanzaro.

        Add WebKitGeolocationManager public class to handle geolocation position updates. WebKitGeolocationProvider has
        been removed and the default implementation based on GeoClue is done by WebKitGeolocationManager.

        * PlatformGTK.cmake:
        * PlatformWPE.cmake:
        * SourcesGTK.txt:
        * SourcesWPE.txt:
        * UIProcess/API/glib/WebKitGeolocationManager.cpp: Added.
        (_WebKitGeolocationPosition::_WebKitGeolocationPosition):
        (webkit_geolocation_position_new):
        (webkit_geolocation_position_copy):
        (webkit_geolocation_position_free):
        (webkit_geolocation_position_set_timestamp):
        (webkit_geolocation_position_set_altitude):
        (webkit_geolocation_position_set_altitude_accuracy):
        (webkit_geolocation_position_set_heading):
        (webkit_geolocation_position_set_speed):
        (webkitGeolocationManagerStop):
        (webkitGeolocationManagerSetEnableHighAccuracy):
        (webkitGeolocationManagerCreate):
        (webkitGeolocationManagerGetProperty):
        (webkit_geolocation_manager_class_init):
        (webkit_gelocation_manager_update_position):
        (webkit_gelocation_manager_failed):
        (webkit_geolocation_manager_get_enable_high_accuracy):
        * UIProcess/API/glib/WebKitGeolocationManagerPrivate.h: Copied from Source/WebCore/platform/geoclue/GeolocationProviderGeoclueClient.h.
        * UIProcess/API/glib/WebKitGeolocationProvider.cpp: Removed.
        * UIProcess/API/glib/WebKitGeolocationProvider.h: Removed.
        * UIProcess/API/glib/WebKitWebContext.cpp:
        (webkitWebContextConstructed): Create a WebKitGeolocationManager instead of a WebKitGeolocationProvider.
        (webkit_web_context_get_geolocation_manager): Get the WebKitGeolocationManager.
        * UIProcess/API/gtk/WebKitGeolocationManager.h: Added.
        * UIProcess/API/gtk/WebKitWebContext.h:
        * UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt:
        * UIProcess/API/gtk/docs/webkit2gtk-4.0.types:
        * UIProcess/API/gtk/docs/webkit2gtk-docs.sgml:
        * UIProcess/API/gtk/webkit2.h:
        * UIProcess/API/wpe/WebKitGeolocationManager.h: Added.
        * UIProcess/API/wpe/WebKitWebContext.h:
        * UIProcess/API/wpe/docs/wpe-0.1-sections.txt:
        * UIProcess/API/wpe/docs/wpe-docs.sgml:
        * UIProcess/API/wpe/webkit.h:

2019-03-20  Youenn Fablet  <youenn@apple.com>

        Compute quota after network process restart based on default quota and space used
        https://bugs.webkit.org/show_bug.cgi?id=195804

        Reviewed by Chris Dumez.

        Make sure that Cache Storage quota user waits to declare as initialized to its manager
        until all data is loaded so that it can report a valid space used from the start.

        Add test API to reset the quota to its default value and compute it according current space use.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::updateQuotaBasedOnSpaceUsageForTesting):
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:
        * NetworkProcess/cache/CacheStorageEngineCaches.cpp:
        (WebKit::CacheStorage::Caches::create):
        (WebKit::CacheStorage::Caches::Caches):
        (WebKit::CacheStorage::Caches::whenInitialized):
        * NetworkProcess/cache/CacheStorageEngineCaches.h:
        * NetworkProcess/cache/CacheStorageEngineConnection.cpp:
        (WebKit::CacheStorageEngineConnection::dereference):
        * WebProcess/Cache/WebCacheStorageConnection.cpp:
        (WebKit::WebCacheStorageConnection::setQuotaBasedOnSpaceUsage):
        * WebProcess/Cache/WebCacheStorageConnection.h:

2019-03-20  Simon Fraser  <simon.fraser@apple.com>

        Rename ENABLE_ACCELERATED_OVERFLOW_SCROLLING macro to ENABLE_OVERFLOW_SCROLLING_TOUCH
        https://bugs.webkit.org/show_bug.cgi?id=196049

        Reviewed by Tim Horton.

        This macro is about the -webkit-overflow-scrolling CSS property, not accelerated
        overflow scrolling in general, so rename it.

        * Configurations/FeatureDefines.xcconfig:

2019-03-20  Jiewen Tan  <jiewen_tan@apple.com>

        Extend Networking Process sandbox for some system frameworks
        https://bugs.webkit.org/show_bug.cgi?id=196036
        <rdar://problem/47594150>

        Reviewed by Brent Fulgham.

        * NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in:
        * Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb:

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

        Reduce use of LegacySync IPC message type
        https://bugs.webkit.org/show_bug.cgi?id=194835

        Reviewed by Darin Adler.

        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::cookiesForDOM):
        (WebKit::NetworkConnectionToWebProcess::cookiesEnabled):
        (WebKit::NetworkConnectionToWebProcess::cookieRequestHeaderFieldValue):
        (WebKit::NetworkConnectionToWebProcess::getRawCookies):
        (WebKit::NetworkConnectionToWebProcess::blobSize):
        (WebKit::NetworkConnectionToWebProcess::establishIDBConnectionToServer):
        (WebKit::NetworkConnectionToWebProcess::establishSWServerConnection):
        * NetworkProcess/NetworkConnectionToWebProcess.h:
        (WebKit::NetworkConnectionToWebProcess::getNetworkLoadInformationRequest):
        (WebKit::NetworkConnectionToWebProcess::getNetworkLoadInformationResponse):
        (WebKit::NetworkConnectionToWebProcess::getNetworkLoadIntermediateInformation):
        (WebKit::NetworkConnectionToWebProcess::takeNetworkLoadInformationMetrics):
        * NetworkProcess/NetworkConnectionToWebProcess.messages.in:
        * UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
        (WebKit::UserMediaCaptureManagerProxy::createMediaSourceForCaptureDeviceWithConstraints):
        (WebKit::UserMediaCaptureManagerProxy::capabilities):
        * UIProcess/Cocoa/UserMediaCaptureManagerProxy.h:
        * UIProcess/Cocoa/UserMediaCaptureManagerProxy.messages.in:
        * UIProcess/Plugins/PluginProcessProxy.h:
        * UIProcess/Plugins/PluginProcessProxy.messages.in:
        * UIProcess/Plugins/mac/PluginProcessProxyMac.mm:
        (WebKit::PluginProcessProxy::launchProcess):
        (WebKit::PluginProcessProxy::launchApplicationAtURL):
        (WebKit::PluginProcessProxy::openURL):
        (WebKit::PluginProcessProxy::openFile):
        * UIProcess/WebFullScreenManagerProxy.cpp:
        (WebKit::WebFullScreenManagerProxy::supportsFullScreen):
        * UIProcess/WebFullScreenManagerProxy.h:
        * UIProcess/WebFullScreenManagerProxy.messages.in:
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::fetchWebsiteData):
        (WebKit::WebProcess::deleteWebsiteData):
        (WebKit::WebProcess::deleteWebsiteDataForOrigins):
        (WebKit::WebProcess::processWillSuspendImminently):
        * WebProcess/WebProcess.h:
        * WebProcess/WebProcess.messages.in:

2019-03-20  Keith Rollin  <krollin@apple.com>

        Update checks that determine if WebKit is system WebKit
        https://bugs.webkit.org/show_bug.cgi?id=195756

        Unreviewed tweak of r243251 after unreviewed build fix after r243230.

        * Shared/mac/AuxiliaryProcessMac.mm:
        (WebKit::AuxiliaryProcess::isSystemWebKit):

2019-03-20  Keith Rollin  <krollin@apple.com>

        Update checks that determine if WebKit is system WebKit
        https://bugs.webkit.org/show_bug.cgi?id=195756

        Unreviewed build fix after r243230.

        * Shared/mac/AuxiliaryProcessMac.mm:
        (WebKit::AuxiliaryProcess::isSystemWebKit):

2019-03-20  Simon Fraser  <simon.fraser@apple.com>

        [iOS WK2] Turn on async overflow scrolling by default
        https://bugs.webkit.org/show_bug.cgi?id=196011
        rdar://problem/48453859

        Reviewed by Antti Koivisto.

        Turn async overflow scroll on by default for iOS WK2.

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

2019-03-20  Youenn Fablet  <youenn@apple.com>

        Have smaller default quotas for third party frames
        https://bugs.webkit.org/show_bug.cgi?id=195841

        Reviewed by Geoffrey Garen.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::storageQuotaManager):
        For third party iframes, use the default quota divided by 10.

2019-03-20  Dean Jackson  <dino@apple.com>

        [iOS] Enable fast clicking everywhere
        https://bugs.webkit.org/show_bug.cgi?id=196023
        <rdar://problem/49073589>

        Reviewed by Wenson Hsieh.

        Set FastClicksEverywhere to on by default for iPhone & iPad.

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

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

        Regression(PSON): ViewGestureController is not properly notified of process swaps on iOS
        https://bugs.webkit.org/show_bug.cgi?id=196029
        <rdar://problem/48954651>

        Reviewed by Tim Horton.

        If there is a ViewGestureController when process swapping, make sure we disconnect it
        from the old process and reconnect it to the new one. This matches what is done in
        WebViewImpl for macOS (see r238356).

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _processWillSwap]):
        (-[WKWebView _processDidExit]):
        (-[WKWebView _didRelaunchProcess]):

2019-03-20  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] REGRESSION(r243094): crash when launching minibrowser
        https://bugs.webkit.org/show_bug.cgi?id=195951

        Reviewed by Joseph Pecoraro.

        Always return the inspector from WebPageProxy::inspector() when the page hasn't been closed. The inspector is
        created in WebPageProxy constructor and it's safe to use even before a process has been launched, because
        m_inspectedPage is null-checked everywhere.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::inspector const):

2019-03-20  Keith Rollin  <krollin@apple.com>

        Update checks that determine if WebKit is system WebKit
        https://bugs.webkit.org/show_bug.cgi?id=195756

        Reviewed by Alexey Proskuryakov.

        The system WebKit can be installed in additional locations, so check
        for and allow those, too.

        * Shared/mac/AuxiliaryProcessMac.mm:
        (WebKit::AuxiliaryProcess::isSystemWebKit):

2019-03-20  Per Arne Vollan  <pvollan@apple.com>

        [iOS] Unable to PiP web videos in Safari due to sandbox violation
        https://bugs.webkit.org/show_bug.cgi?id=196015
        <rdar://problem/48867037>

        Reviewed by Brent Fulgham.

        The sandbox should allow getting the iokit property 'ui-pip'.

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

2019-03-20  John Wilander  <wilander@apple.com>

        (Test fix) Override minimumTimeBetweenDataRecordsRemoval in ResourceLoadStatisticsStore::shouldRemoveDataRecord() during layout tests
        https://bugs.webkit.org/show_bug.cgi?id=196017

        Unreviewed test fix.

        This patch adds a check of parameters().isRunningTest to the return of
        ResourceLoadStatisticsStore::shouldRemoveDataRecord() to allow successive
        layout tests to remove website data, effectively overriding the
        minimumTimeBetweenDataRecordsRemoval setting.

        * NetworkProcess/Classifier/ResourceLoadStatisticsStore.cpp:
        (WebKit::ResourceLoadStatisticsStore::shouldRemoveDataRecords const):

2019-03-20  Daniel Bates  <dabates@apple.com>

        [iOS] Group UIWebFormAccessoryDelegate-related code and tighten it up a bit
        https://bugs.webkit.org/show_bug.cgi?id=196018

        Reviewed by Wenson Hsieh.

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView accessoryClear]): Use uniform initializer syntax. Code could send the empty
        string, but I resisted since null string, as we do now, likely encodes more compactly and we
        avoid a per-process alloc.
        (-[WKContentView accessoryTab:]): Fix style nit; missing space between capture list and arguments
        in lambda. Also use lamdba capture initializer syntax and remove a local.
        (-[WKContentView _updateAccessory]): Remove a FIXME as it can't be satified with the current
        design without more bookkeeping. The design for showing and hiding an AutoFill button added in
        r166933 requires knowing the title for the button when showing it via -setAccessoryViewCustomButtonTitle.
        We could re-implement such that -setAccessoryViewCustomButtonTitle: stores the title and calls
        -_updateAccessory, but that has the disadvantage of increasing the memory footprint of WKContentView
        for the stored title and that seems worse than centralizing the logic in _updateAccessory. So,
        let's not fix this FIXME. Now that we are removing the FIXME, change to use an early return style.
        (-[WKContentView _hideKeyboard]): Micro optimization; only call _updateAccessory if we have
        a form accessory view. This method is called everytime we load a page (more precisely when we
        commit the load for a page) in addition to everytime we blur (defocus) an element. No need to
        update an accessory if we don't have one.
 
2019-03-20  Olivier Robin  <olivierrobin@chromium.org>

        Fix _getContentsAsAttributedStringWithCompletionHandler availability for iOS.
        https://bugs.webkit.org/show_bug.cgi?id=195999

        Reviewed by Tim Horton.

        * UIProcess/API/Cocoa/WKWebViewPrivate.h:

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

        Adopt RegistrableDomain in the Storage Access API prompt code paths
        https://bugs.webkit.org/show_bug.cgi?id=195957
        <rdar://problem/49048028>

        Reviewed by Chris Dumez.

        While making the code changes in Bug 195866 we noticed that strings were being
        used to pass the origins for the API calls. We should adopt the RegistrableDomain
        class to improve type safety and avoid introducing bugs in the future.

        * UIProcess/API/APIUIClient.h:
        (API::UIClient::requestStorageAccessConfirm):
        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetPageUIClient):
        * UIProcess/Cocoa/UIDelegate.h:
        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::UIDelegate::UIClient::requestStorageAccessConfirm):
        * UIProcess/Cocoa/WKStorageAccessAlert.h:
        * UIProcess/Cocoa/WKStorageAccessAlert.mm:
        (WebKit::presentStorageAccessAlert):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::requestStorageAccessConfirm):

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

        Unreviewed, fix typo in comment added in r243156.

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

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

        Unreviewed, drop invalid assertions landed in r243163.

        Those assertions were causing some API tests to crash.
        Also include some post-review suggestions from Darin.

        * Shared/CallbackID.h:
        (WebKit::CallbackID::operator=):
        * Shared/OptionalCallbackID.h:
        (WebKit::OptionalCallbackID::operator=):

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

        Unreviewed, fix assertion failures in API tests after r243159.

        * UIProcess/VisitedLinkStore.cpp:
        (WebKit::VisitedLinkStore::removeProcess):

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

        Add an platform-driven spell-checking mechanism
        https://bugs.webkit.org/show_bug.cgi?id=195795

        Reviewed by Ryosuke Niwa.

        * DerivedSources-input.xcfilelist:
        * DerivedSources-output.xcfilelist:
        * DerivedSources.make:
        * SourcesCocoa.txt:
        * UIProcess/Cocoa/TextCheckingController.h: Added.
        * UIProcess/Cocoa/TextCheckingController.mm: Added.
        (WebKit::TextCheckingController::TextCheckingController):
        (WebKit::TextCheckingController::replaceRelativeToSelection):
        (WebKit::TextCheckingController::removeAnnotationRelativeToSelection):
        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView setupInteraction]):
        (-[WKContentView replaceSelectionOffset:length:withAnnotatedString:relativeReplacementRange:]):
        (-[WKContentView removeAnnotation:forSelectionOffset:length:]):
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/WebPage/WebPage.cpp:
        * WebProcess/WebPage/WebPage.h:
        (WebKit::WebPage::textCheckingController):
        Plumb two UITextInput methods through to the Web Content process.
        I added a new object instead of just sticking things on WebPage
        because there are quite a few more related ones coming down the pipeline,
        and will also end up being messages going in the opposite direction.

        * WebProcess/WebPage/Cocoa/TextCheckingControllerProxy.h: Added.
        * WebProcess/WebPage/Cocoa/TextCheckingControllerProxy.messages.in: Added.
        * WebProcess/WebPage/Cocoa/TextCheckingControllerProxy.mm: Added.
        (WebKit::TextCheckingControllerProxy::TextCheckingControllerProxy):
        (WebKit::TextCheckingControllerProxy::~TextCheckingControllerProxy):
        (WebKit::relevantMarkerTypes):
        (WebKit::TextCheckingControllerProxy::rangeAndOffsetRelativeToSelection):
        (WebKit::TextCheckingControllerProxy::replaceRelativeToSelection):
        (WebKit::TextCheckingControllerProxy::removeAnnotationRelativeToSelection):
        Make it possible for the platform to maintain arbitrary key-value pairs
        attached to document ranges, as a way for it to keep track of various
        text checking context (e.g. if something has been checked, replaced,
        what language it might be, ...).

        Allow it to replace the text of a range and the annotations in that range,
        or remove annotations in a range. Ranges are specified relative to
        the selection.

        One large missing piece is giving the platform the ability to retrieve
        annotations in a range; that is coming in a future patch.

        We translate certain annotations into traditional WebCore spelling
        and grammar document markers, for normal display-time treatment.

        * WebProcess/WebPage/mac/WKAccessibilityWebPageObjectMac.mm:
        (-[WKAccessibilityWebPageObject convertScreenPointToRootView:]):
        (-[WKAccessibilityWebPageObject accessibilityHitTest:]):
        Unified sources fixes.

2019-03-19  Jiewen Tan  <jiewen_tan@apple.com>

        [WebAuthN] Implement FIDO AppID extension
        https://bugs.webkit.org/show_bug.cgi?id=143491
        <rdar://problem/48298273>

        Reviewed by Brent Fulgham.

        In U2fHidAuthenticator::continueSignCommandAfterResponseReceived, it will retry the current command
        with the AppID if it exists when SW_WRONG_DATA is received from devices. Noted, it will not set
        the AuthenticationExtensionsClientOutputs::appid to false in any circumstances. In other words, the
        field will be empty if AppID is supplied in AuthenticationExtensionsClientInputs and not used.

        * UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm:
        (WebKit::LocalAuthenticator::continueMakeCredentialAfterAttested):
        (WebKit::LocalAuthenticator::continueGetAssertionAfterUserConsented):
        * UIProcess/WebAuthentication/fido/U2fHidAuthenticator.cpp:
        (WebKit::U2fHidAuthenticator::issueSignCommand):
        (WebKit::U2fHidAuthenticator::continueSignCommandAfterResponseReceived):
        * UIProcess/WebAuthentication/fido/U2fHidAuthenticator.h:

2019-03-19  Ross Kirsling  <ross.kirsling@sony.com>

        Unreviewed adjustment to r242842 per Darin's request.

        * Platform/win/LoggingWin.cpp:
        (WebKit::logLevelString):

2019-03-19  Gyuyoung Kim  <gyuyoung.kim@lge.com>

        [WPE] Fix build warnings because of missing an argument when initializing wpe_input_axis_event
        https://bugs.webkit.org/show_bug.cgi?id=195931

        Reviewed by Michael Catanzaro.

        There are still build warnings when building wpe port. It looks like
        these build warnings have been caused by missing to set an argument
        for the modifier parameter of wpe_input_axis_event. This patch sets 0
        for the modifier argument to avoid the build warnings.

        * UIProcess/API/wpe/ScrollGestureController.cpp:
        (WebKit::ScrollGestureController::handleEvent):

2019-03-19  John Wilander  <wilander@apple.com>

        Resource Load Statistics (experimental): Clear non-cookie website data for sites that have been navigated to, with link decoration, by a prevalent resource
        https://bugs.webkit.org/show_bug.cgi?id=195923
        <rdar://problem/49001272>

        Reviewed by Alex Christensen.

        Cross-site trackers abuse link query parameters to transport user identifiers and then store
        them in first-party storage space. To address this, we've done three things:
        - r236448 capped all persistent client-side cookies to seven days of storage.
        - r242288 further capped persistent client-side cookies for navigations with link decoration from prevalent resources.
        - r242603 added logging of navigations with link decoration from prevalent resources.

        This patch introduces an experimental feature that removes non-cookie website data for sites
        that have been navigated to, with link decoration, by a prevalent resource.

        To achieve this, resource domains to remove website data for are now marked with an enum called
        WebsiteDataToRemove with values All, AllButHttpOnlyCookies, AllButCookies. As resources are
        iterated, they are marked for either of these values and the new function
        ResourceLoadStatisticsMemoryStore::shouldRemoveAllButCookiesFor() leads to the marking with
        WebsiteDataToRemove::AllButCookies.

        Then NetworkProcess::deleteWebsiteDataForRegistrableDomains() looks at this setting and removes
        website data accordingly.

        The thinking behind this is that the lifetime cap applied in r236448 and r242288 take care of
        script writable cookies, and this patch takes care of all other script writable storage.

        The infrastructure to handle user interaction expiration is now parameterized so that multiple
        expiries can be applied. In this particular case, seven days of browser use.

        * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:
        (WebKit::ResourceLoadStatisticsDatabaseStore::grantStorageAccess):
        (WebKit::ResourceLoadStatisticsDatabaseStore::grantStorageAccessInternal):
        (WebKit::ResourceLoadStatisticsDatabaseStore::hasHadUserInteraction):
        (WebKit::ResourceLoadStatisticsDatabaseStore::shouldRemoveAllWebsiteDataFor const):
        (WebKit::ResourceLoadStatisticsDatabaseStore::shouldRemoveAllButCookiesFor const):
        (WebKit::ResourceLoadStatisticsDatabaseStore::registrableDomainsToRemoveWebsiteDataFor):
        * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h:
        * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp:
        (WebKit::ResourceLoadStatisticsMemoryStore::hasHadUserInteraction):
        (WebKit::ResourceLoadStatisticsMemoryStore::hasHadUnexpiredRecentUserInteraction const):
        (WebKit::ResourceLoadStatisticsMemoryStore::shouldRemoveAllWebsiteDataFor const):
        (WebKit::ResourceLoadStatisticsMemoryStore::shouldRemoveAllButCookiesFor const):
        (WebKit::ResourceLoadStatisticsMemoryStore::registrableDomainsToRemoveWebsiteDataFor):
        * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.h:
        * NetworkProcess/Classifier/ResourceLoadStatisticsStore.cpp:
        (WebKit::domainsToString):
        (WebKit::ResourceLoadStatisticsStore::removeDataRecords):
        (WebKit::ResourceLoadStatisticsStore::statisticsEpirationTime const):
        (WebKit::ResourceLoadStatisticsStore::mergeOperatingDates):
        (WebKit::ResourceLoadStatisticsStore::includeTodayAsOperatingDateIfNecessary):
        (WebKit::ResourceLoadStatisticsStore::hasStatisticsExpired const):
        * NetworkProcess/Classifier/ResourceLoadStatisticsStore.h:
        * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::hasHadUserInteraction):
        (WebKit::WebResourceLoadStatisticsStore::deleteWebsiteDataForRegistrableDomains):
        (WebKit::WebResourceLoadStatisticsStore::deleteWebsiteDataForRegistrableDomainsInAllPersistentDataStores): Deleted.
           Renamed to reflect that it actually takes a parameter for which types of data to remove.
        * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h:
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::initializeNetworkProcess):
        (WebKit::NetworkProcess::setCrossSiteLoadWithLinkDecorationForTesting):
        (WebKit::NetworkProcess::deleteWebsiteDataForRegistrableDomains):
        (WebKit::NetworkProcess::deleteCookiesForTesting):
        (WebKit::NetworkProcess::deleteWebsiteDataForRegistrableDomainsInAllPersistentDataStores): Deleted.
           Renamed to reflect that it actually takes a parameter for which types of data to remove.
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:
        * NetworkProcess/NetworkProcessCreationParameters.cpp:
        (WebKit::NetworkProcessCreationParameters::encode const):
        (WebKit::NetworkProcessCreationParameters::decode):
        * NetworkProcess/NetworkProcessCreationParameters.h:
        * NetworkProcess/NetworkSession.cpp:
        (WebKit::NetworkSession::deleteWebsiteDataForRegistrableDomains):
        (WebKit::NetworkSession::deleteWebsiteDataForRegistrableDomainsInAllPersistentDataStores): Deleted.
           Renamed to reflect that it actually takes a parameter for which types of data to remove.
        * NetworkProcess/NetworkSession.h:
        * Shared/WebPreferences.yaml:
        * UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
        (WKWebsiteDataStoreSetStatisticsCrossSiteLoadWithLinkDecoration):
        (WKWebsiteDataStoreSetStatisticsTimeToLiveUserInteraction):
        (WKWebsiteDataStoreStatisticsProcessStatisticsAndDataRecords):
        * UIProcess/API/C/WKWebsiteDataStoreRef.h:
        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        (WebKit::WebProcessPool::platformInitializeNetworkProcess):
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::setCrossSiteLoadWithLinkDecorationForTesting):
        * UIProcess/Network/NetworkProcessProxy.h:
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::setCrossSiteLoadWithLinkDecorationForTesting):
        * UIProcess/WebsiteData/WebsiteDataStore.h:

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

        Unreviewed build fix after r243173.

        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::UIDelegate::UIClient::requestStorageAccessConfirm):

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

        Add default prompt implementation for the Storage Access API
        https://bugs.webkit.org/show_bug.cgi?id=195866
        <rdar://problem/45150009>

        Reviewed by Chris Dumez.

        This patch revises the UIDelegate implementation with a default permission dialog
        for the Storage Access API. This allows us to use and test the API in MiniBrowser,
        rather than requiring a full-fledged web browser to drive testing.
 
        * UIProcess/Cocoa/UIDelegate.h:
        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::UIDelegate::UIClient::presentStorageAccessConfirmDialog): Added.
        (WebKit::UIDelegate::UIClient::requestStorageAccessConfirm): Modify to call new default
        implementation if the WKWebVIew client doesn't implement the necessary SPI.
        * UIProcess/Cocoa/WKStorageAccessAlert.h: Added.
        * UIProcess/Cocoa/WKStorageAccessAlert.mm: Added.
        (WebKit::presentStorageAccessAlert):
        * WebKit.xcodeproj/project.pbxproj:

2019-03-19  Conrad Shultz  <conrad_shultz@apple.com>

        REGRESSION (r242369): Only use picker-supported UTIs when creating image picker
        https://bugs.webkit.org/show_bug.cgi?id=195955

        Reviewed by Chris Dumez and Wenson Hsieh.

        r242369 started passing UTIs to -[UIImagePickerController setMediaTypes:] that correspond to types accepted by the
        file input element. However, UIImagePickerController expects a specific subset of UTIs. In the worst case, if no
        expected types are passed, this can cause a crash.

        * UIProcess/ios/forms/WKFileUploadPanel.mm:
        (UTIsForMIMETypes):
        Return a set rather than an array.
        (-[WKFileUploadPanel _mediaTypesForPickerSourceType:]):
        Rather than hardcode specific UTIs, ask UIImagePickerController for its available types. If an accepted type
        is in the list of available types, use it. Otherwise, if an accepted type conforms to an available type,
        use the available type. This is an O(n^2) process, but there typically are only a handful of types, so
        this seems acceptable.
        (-[WKFileUploadPanel _showDocumentPickerMenu]):
        Convert the set from UTIsForMIMETypes() to an array.

2019-03-19  Michael Catanzaro  <mcatanzaro@igalia.com>

        Build cleanly with GCC 9
        https://bugs.webkit.org/show_bug.cgi?id=195920

        Reviewed by Chris Dumez.

        WebKit triggers three new GCC 9 warnings:

        """
        -Wdeprecated-copy, implied by -Wextra, warns about the C++11 deprecation of implicitly
        declared copy constructor and assignment operator if one of them is user-provided.
        """

        Solution is to either add a copy constructor or copy assignment operator, if required, or
        else remove one if it is redundant.

        """
        -Wredundant-move, implied by -Wextra, warns about redundant calls to std::move.
        -Wpessimizing-move, implied by -Wall, warns when a call to std::move prevents copy elision.
        """

        These account for most of this patch. Solution is to just remove the bad WTFMove().

        Additionally, -Wclass-memaccess has been enhanced to catch a few cases that GCC 8 didn't.
        These are solved by casting nontrivial types to void* before using memcpy. (Of course, it
        would be safer to not use memcpy on nontrivial types, but that's too complex for this
        patch. Searching for memcpy used with static_cast<void*> will reveal other cases to fix.)

        * NetworkProcess/cache/CacheStorageEngineCache.cpp:
        (WebKit::CacheStorage::Cache::decode):
        * Platform/IPC/ArgumentCoders.h:
        * Shared/CallbackID.h:
        (WebKit::CallbackID::operator=):
        * Shared/OptionalCallbackID.h:
        (WebKit::OptionalCallbackID::operator=):
        * Shared/Plugins/NPIdentifierData.cpp:
        (WebKit::NPIdentifierData::decode):
        * Shared/Plugins/NPVariantData.cpp:
        (WebKit::NPVariantData::decode):
        * Shared/Plugins/Netscape/NetscapePluginModule.cpp:
        (WebKit::NetscapePluginModule::getOrCreate):
        * Shared/RTCNetwork.cpp:
        (WebKit::RTCNetwork::IPAddress::decode):
        * Shared/SessionState.cpp:
        (WebKit::HTTPBody::Element::decode):
        (WebKit::FrameState::decode):
        (WebKit::BackForwardListItemState::decode):
        * Shared/WebCompiledContentRuleListData.cpp:
        (WebKit::WebCompiledContentRuleListData::decode):
        * Shared/WebCoreArgumentCoders.cpp:
        (IPC::ArgumentCoder<FloatPoint>::decode):
        (IPC::ArgumentCoder<FloatRect>::decode):
        (IPC::ArgumentCoder<FloatQuad>::decode):
        (IPC::ArgumentCoder<ViewportArguments>::decode):
        (IPC::ArgumentCoder<IntPoint>::decode):
        (IPC::ArgumentCoder<IntRect>::decode):
        (IPC::ArgumentCoder<IntSize>::decode):
        (IPC::ArgumentCoder<MimeClassInfo>::decode):
        (IPC::ArgumentCoder<PluginInfo>::decode):
        (IPC::ArgumentCoder<SelectionRect>::decode):
        (IPC::ArgumentCoder<CompositionUnderline>::decode):
        (IPC::ArgumentCoder<BlobPart>::decode):
        (IPC::ArgumentCoder<TextIndicatorData>::decode):
        (IPC::ArgumentCoder<ResourceLoadStatistics>::decode):
        (IPC::ArgumentCoder<ScrollOffsetRange<float>>::decode):
        * Shared/WebPageCreationParameters.cpp:
        (WebKit::WebPageCreationParameters::decode):
        * Shared/WebPlatformTouchPoint.cpp:
        (WebKit::WebPlatformTouchPoint::decode):
        * Shared/WebsiteData/WebsiteData.cpp:
        (WebKit::WebsiteData::Entry::decode):
        * Shared/WebsiteDataStoreParameters.cpp:
        (WebKit::WebsiteDataStoreParameters::decode):
        * UIProcess/API/APIContentRuleListStore.cpp:
        (API::decodeContentRuleListMetaData):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::launchProcessForReload):
        (WebKit::WebPageProxy::launchProcessWithItem):
        (WebKit::WebPageProxy::loadRequest):
        (WebKit::WebPageProxy::loadFile):
        (WebKit::WebPageProxy::loadData):
        (WebKit::WebPageProxy::reload):
        * UIProcess/WebProcessCache.cpp:
        (WebKit::WebProcessCache::takeProcess):
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::findReusableSuspendedPageProcess):
        * WebProcess/InjectedBundle/DOM/InjectedBundleCSSStyleDeclarationHandle.cpp:
        (WebKit::InjectedBundleCSSStyleDeclarationHandle::getOrCreate):
        * WebProcess/InjectedBundle/DOM/InjectedBundleRangeHandle.cpp:
        (WebKit::InjectedBundleRangeHandle::getOrCreate):
        * WebProcess/InjectedBundle/InjectedBundle.cpp:
        (WebKit::InjectedBundle::create):
        * WebProcess/Network/WebLoaderStrategy.cpp:
        (WebKit::WebLoaderStrategy::tryLoadingSynchronouslyUsingURLSchemeHandler):
        * WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp:
        (WebKit::CompositingCoordinator::createGraphicsLayer):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::pdfSnapshotAtSize):
        (WebKit::WebPage::createDocumentLoader):
        * WebProcess/WebStorage/StorageNamespaceImpl.cpp:
        (WebKit::StorageNamespaceImpl::copy):

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

        Spew: Unhandled web process message 'VisitedLinkTableController:VisitedLinkStateChanged'
        https://bugs.webkit.org/show_bug.cgi?id=194787
        <rdar://problem/48175520>

        Reviewed by Geoff Garen.

        The unhandled 'VisitedLinkTableController:VisitedLinkStateChanged' message logging happens
        when IPC is sent to a WebProcess which does not have a VisitedLinkTableController with the
        given identifier. VisitedLinkTableController are kept alive by the WebPage in the WebProcess
        side so this indicates that there is no WebPage using this VisitedLinkTableController anymore.

        In the UIProcess side, our tracking of who is using which VisitedLinkStore was very poor.
        WebPageProxy objects would ask their process to register itself with the page's visitedLinkStore
        as soon as the WebPage object has been created on the WebProcess side. This part was fine.
        However, unregistration from the visitedLinkStores would only happen when either the
        visitedLinkStore would get destroyed or when the WebProcess would shutdown. This means that
        WebProcess could stay registered with a visitedLinkStore even after the page that was using it
        has been closed, which would lead to such logging.

        To address the issue, the WebProcessProxy now keeps track for which pages are using which
        visitedLinkStore. When a visitedLinkStore is used by a page for the first time, the
        WebProcessProxy will register itself with the visitedLinkStore. Similarly, when the last page
        using a given visitedLinkStore is closed, the process unregisters itself from the
        visitedLinkStore, thus avoiding the bug.

        I also simplified a lot the logic for having a page telling the WebProcessProxy it started
        using a visitedLinkStore. Previously, it would have to wait until the process is done launching
        before notifying the WebProcessProxy. Now, the WebPageProxy merely tells the WebProcessProxy
        that it is starting to use a visitedLinkStore as soon as it sent the CreateWebPage IPC to the
        WebProcess (no matter if the process is still launching or not). At this point, the
        WebProcessProxy registers the page as a user of the visitedLinkStore and takes care of waiting
        until it is done launching before registering itself with the visitedLinkStore.

        * UIProcess/ProvisionalPageProxy.cpp:
        (WebKit::ProvisionalPageProxy::~ProvisionalPageProxy):
        (WebKit::ProvisionalPageProxy::initializeWebPage):
        (WebKit::ProvisionalPageProxy::processDidFinishLaunching): Deleted.
        (WebKit::ProvisionalPageProxy::finishInitializingWebPageAfterProcessLaunch): Deleted.
        * UIProcess/ProvisionalPageProxy.h:
        * UIProcess/VisitedLinkStore.cpp:
        (WebKit::VisitedLinkStore::~VisitedLinkStore):
        (WebKit::VisitedLinkStore::addProcess):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::finishAttachingToWebProcess):
        (WebKit::WebPageProxy::initializeWebPage):
        (WebKit::WebPageProxy::resetStateAfterProcessExited):
        (WebKit::WebPageProxy::finishInitializingWebPageAfterProcessLaunch): Deleted.
        (WebKit::WebPageProxy::processDidFinishLaunching): Deleted.
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::shutDown):
        (WebKit::WebProcessProxy::removeWebPage):
        (WebKit::WebProcessProxy::addVisitedLinkStoreUser):
        (WebKit::WebProcessProxy::removeVisitedLinkStoreUser):
        (WebKit::WebProcessProxy::addWebUserContentControllerProxy):
        (WebKit::WebProcessProxy::didFinishLaunching):
        (WebKit::WebProcessProxy::addVisitedLinkStore): Deleted.
        (WebKit::WebProcessProxy::didDestroyVisitedLinkStore): Deleted.
        * UIProcess/WebProcessProxy.h:

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

        REGRESSION (r243094): internal media test fairplay-hls-error.html is failing
        https://bugs.webkit.org/show_bug.cgi?id=195954
        <rdar://problem/49005981>

        Reviewed by Geoffrey Garen.

        TestController::resetStateToConsistentValues() tries to send a "reset" message to its
        injected bundle. Part of the "reset" message sets the external hosts that we're allowed
        to load. If there is no WebProcess yet when WKPagePostMessageToInjectedBundle() is called,
        then this message does not get sent and the allowed hosts do not get set, causing this
        test failure.

        To address the issue, make sure we launch the initial process if necessary when
        WebPageProxy::postMessageToInjectedBundle() is called, in order to maintain backward
        compatibility.

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

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

        Unreviewed, rolling out r243142.

        Caused assertion hits in WK2 Debug

        Reverted changeset:

        "Spew: Unhandled web process message
        'VisitedLinkTableController:VisitedLinkStateChanged'"
        https://bugs.webkit.org/show_bug.cgi?id=194787
        https://trac.webkit.org/changeset/243142

2019-03-19  Daniel Bates  <dabates@apple.com>

        [iOS] Focus not preserved when switching between tabs
        https://bugs.webkit.org/show_bug.cgi?id=195820
        <rdar://problem/43614450>

        Reviewed by Brent Fulgham.

        Fixes a usability annoyance when using a hardware keyboard; focus is not preserved when switching between tabs.
        Do not unconditionally tell the WebProcess to blur the currently focused element when the content view (WKContentView)
        resigns first responder. Instead only tell it to blur when the content view is resigning because either the
        accessory view was dismissed (Done button was pressed) or the keyboard was dismissed (the hide keyboard button
        was pressed).

        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm: Add new ivar to track whether the content view is resigning
        first responder status because the accessory view is being dismissed.
        (-[WKContentView resignFirstResponderForWebView]): Only tell WebKit to blur the focused element if we are
        resigning because the accessory view is being dismissed or the keyboard was hidden. We continue to do all
        other steps when resigning, including hiding the keyboard. Note that by not telling WebKit to blur the
        focused element we let it's focus controller manage the focused element with respect to the current
        page activation state (i.e. whether the content view is first responder or not). When the content view
        becomes the first responder then WebKit's focus controller will be told that the page has become activated
        and will tell the UIProcess to focus the currently focused element, which will bring up the keyboard.
        (-[WKContentView accessoryDone]): Update state so we know that a subsequent call to resign first responder
        was due to the accessory view being dismissed.

2019-03-19  Per Arne Vollan  <pvollan@apple.com>

        [iOS] Remove overridden rules in sandbox
        https://bugs.webkit.org/show_bug.cgi?id=193840
        <rdar://problem/47558526>

        Reviewed by Brent Fulgham.

        On iOS, there are some rules overridden in the same sandbox file. The overridden rules
        should be removed.

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

2019-03-19  Timothy Hatcher  <timothy@apple.com>

        Make WebKit/NSAttributedString.h a public header.
        https://bugs.webkit.org/show_bug.cgi?id=195944

        Reviewed by Dean Jackson.

        * WebKit.xcodeproj/project.pbxproj:

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

        Drop NetworkCacheStatistics code
        https://bugs.webkit.org/show_bug.cgi?id=195910

        Reviewed by Antti Koivisto.

        Drop NetworkCacheStatistics code. It was a temporary experiment and has not been used in a long time.

        * NetworkProcess/NetworkProcessCreationParameters.cpp:
        (WebKit::NetworkProcessCreationParameters::encode const):
        (WebKit::NetworkProcessCreationParameters::decode):
        * NetworkProcess/NetworkProcessCreationParameters.h:
        * NetworkProcess/cache/NetworkCache.cpp:
        (WebKit::NetworkCache::Cache::Cache):
        (WebKit::NetworkCache::Cache::retrieve):
        (WebKit::NetworkCache::Cache::store):
        (WebKit::NetworkCache::Cache::storeRedirect):
        (WebKit::NetworkCache::Cache::update):
        (WebKit::NetworkCache::Cache::clear):
        * NetworkProcess/cache/NetworkCache.h:
        * NetworkProcess/cache/NetworkCacheStatistics.cpp: Removed.
        * NetworkProcess/cache/NetworkCacheStatistics.h: Removed.
        * NetworkProcess/cache/NetworkCacheStorage.cpp:
        (WebKit::NetworkCache::traverseRecordsFiles):
        * NetworkProcess/cache/NetworkCacheStorage.h:
        * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
        (WebKit::NetworkProcess::platformInitializeNetworkProcessCocoa):
        * NetworkProcess/soup/NetworkProcessSoup.cpp:
        (WebKit::NetworkProcess::platformInitializeNetworkProcess):
        * Sources.txt:
        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        (WebKit::registerUserDefaultsIfNeeded):
        (WebKit::WebProcessPool::platformInitializeNetworkProcess):
        * UIProcess/soup/WebProcessPoolSoup.cpp:
        (WebKit::WebProcessPool::platformInitializeNetworkProcess):
        * WebKit.xcodeproj/project.pbxproj:

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

        Spew: Unhandled web process message 'VisitedLinkTableController:VisitedLinkStateChanged'
        https://bugs.webkit.org/show_bug.cgi?id=194787
        <rdar://problem/48175520>

        Reviewed by Geoffrey Garen.

        The unhandled 'VisitedLinkTableController:VisitedLinkStateChanged' message logging happens
        when IPC is sent to a WebProcess which does not have a VisitedLinkTableController with the
        given identifier. VisitedLinkTableController are kept alive by the WebPage in the WebProcess
        side so this indicates that there is no WebPage using this VisitedLinkTableController anymore.

        In the UIProcess side, our tracking of who is using which VisitedLinkStore was very poor.
        WebPageProxy objects would ask their process to register itself with the page's visitedLinkStore
        as soon as the WebPage object has been created on the WebProcess side. This part was fine.
        However, unregistration from the visitedLinkStores would only happen when either the
        visitedLinkStore would get destroyed or when the WebProcess would shutdown. This means that
        WebProcess could stay registered with a visitedLinkStore even after the page that was using it
        has been closed, which would lead to such logging.

        To address the issue, the WebProcessProxy now keeps track for which pages are using which
        visitedLinkStore. When a visitedLinkStore is used by a page for the first time, the
        WebProcessProxy will register itself with the visitedLinkStore. Similarly, when the last page
        using a given visitedLinkStore is closed, the process unregisters itself from the
        visitedLinkStore, thus avoiding the bug.

        I also simplified a lot the logic for having a page telling the WebProcessProxy it started
        using a visitedLinkStore. Previously, it would have to wait until the process is done launching
        before notifying the WebProcessProxy. Now, the WebPageProxy merely tells the WebProcessProxy
        that it is starting to use a visitedLinkStore as soon as it sent the CreateWebPage IPC to the
        WebProcess (no matter if the process is still launching or not). At this point, the
        WebProcessProxy registers the page as a user of the visitedLinkStore and takes care of waiting
        until it is done launching before registering itself with the visitedLinkStore.

        * UIProcess/ProvisionalPageProxy.cpp:
        (WebKit::ProvisionalPageProxy::~ProvisionalPageProxy):
        (WebKit::ProvisionalPageProxy::initializeWebPage):
        (WebKit::ProvisionalPageProxy::processDidFinishLaunching): Deleted.
        (WebKit::ProvisionalPageProxy::finishInitializingWebPageAfterProcessLaunch): Deleted.
        * UIProcess/ProvisionalPageProxy.h:
        * UIProcess/VisitedLinkStore.cpp:
        (WebKit::VisitedLinkStore::~VisitedLinkStore):
        (WebKit::VisitedLinkStore::addProcess):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::finishAttachingToWebProcess):
        (WebKit::WebPageProxy::initializeWebPage):
        (WebKit::WebPageProxy::resetStateAfterProcessExited):
        (WebKit::WebPageProxy::finishInitializingWebPageAfterProcessLaunch): Deleted.
        (WebKit::WebPageProxy::processDidFinishLaunching): Deleted.
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::shutDown):
        (WebKit::WebProcessProxy::removeWebPage):
        (WebKit::WebProcessProxy::addVisitedLinkStoreUser):
        (WebKit::WebProcessProxy::removeVisitedLinkStoreUser):
        (WebKit::WebProcessProxy::addWebUserContentControllerProxy):
        (WebKit::WebProcessProxy::didFinishLaunching):
        (WebKit::WebProcessProxy::addVisitedLinkStore): Deleted.
        (WebKit::WebProcessProxy::didDestroyVisitedLinkStore): Deleted.
        * UIProcess/WebProcessProxy.h:

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

        Make WTFLogChannelState and WTFLogLevel enum classes
        https://bugs.webkit.org/show_bug.cgi?id=195904

        Reviewed by Eric Carlson.

        * NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp:
        (WebKit::NetworkCache::logSpeculativeLoadingDiagnosticMessage):
        * NetworkProcess/webrtc/NetworkRTCProvider.cpp:
        (WebKit::NetworkRTCProvider::NetworkRTCProvider):

2019-03-19  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed, rolling out r243132.

        Broke GTK build

        Reverted changeset:

        "Make WTFLogChannelState and WTFLogLevel enum classes"
        https://bugs.webkit.org/show_bug.cgi?id=195904
        https://trac.webkit.org/changeset/243132

2019-03-19  Antti Koivisto  <antti@apple.com>

        Layer with no backing store should still hit-test over a scroller
        https://bugs.webkit.org/show_bug.cgi?id=195378
        <rdar://problem/48652078>

        Reviewed by Simon Fraser.

        * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeHostIOS.mm:
        (WebKit::RemoteLayerTreeHost::makeNode):
        * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeViews.h:
        * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeViews.mm:
        (WebKit::collectDescendantViewsAtPoint):

        No need for special WKTiledBackingView, tiled views now have correct event regions.

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

        Make WTFLogChannelState and WTFLogLevel enum classes
        https://bugs.webkit.org/show_bug.cgi?id=195904

        Reviewed by Eric Carlson.

        * NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp:
        (WebKit::NetworkCache::logSpeculativeLoadingDiagnosticMessage):
        * NetworkProcess/webrtc/NetworkRTCProvider.cpp:
        (WebKit::NetworkRTCProvider::NetworkRTCProvider):

2019-03-18  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r243092 and r243096.
        https://bugs.webkit.org/show_bug.cgi?id=195926

        Caused assertions in tests (Requested by smfr on #webkit).

        Reverted changesets:

        "Layer with no backing store should still hit-test over a
        scroller"
        https://bugs.webkit.org/show_bug.cgi?id=195378
        https://trac.webkit.org/changeset/243092

        "Try to fix Windows build."
        https://trac.webkit.org/changeset/243096

2019-03-18  Timothy Hatcher  <timothy@apple.com>

        WKWebView.GetContentsShouldReturnAttributedString is crashing on iOS Simulator.
        https://bugs.webkit.org/show_bug.cgi?id=195916

        Reviewed by Tim Horton.

        Add direct support for UIColor so it does not try to use the NSSecureCoding path.
        This avoids needs to list the classes when decoding the attributes NSDictionary
        and matches the macOS NSColor encoder/decoder.

        * Shared/Cocoa/ArgumentCodersCocoa.mm:
        (IPC::typeFromObject):
        (IPC::encodeColorInternal):
        (IPC::decodeColorInternal):
        (IPC::encodeObject):
        (IPC::decodeObject):

2019-03-18  Timothy Hatcher  <timothy@apple.com>

        Add new NSAttributedString API for converting HTML.
        https://bugs.webkit.org/show_bug.cgi?id=195636
        rdar://problem/45055697

        Reviewed by Tim Horton.

        * Platform/spi/ios/UIKitSPI.h:
        * SourcesCocoa.txt:
        * UIProcess/API/Cocoa/NSAttributedString.h: Added.
        * UIProcess/API/Cocoa/NSAttributedString.mm: Added.
        (-[_WKAttributedStringNavigationDelegate webView:decidePolicyForNavigationAction:decisionHandler:]):
        (-[_WKAttributedStringNavigationDelegate webView:didFailProvisionalNavigation:withError:]):
        (-[_WKAttributedStringNavigationDelegate webView:didFailNavigation:withError:]):
        (-[_WKAttributedStringNavigationDelegate webView:didFinishNavigation:]):
        (+[_WKAttributedStringWebViewCache cache]):
        (+[_WKAttributedStringWebViewCache configuration]):
        (+[_WKAttributedStringWebViewCache clearConfiguration]):
        (+[_WKAttributedStringWebViewCache retrieveOrCreateWebView]):
        (+[_WKAttributedStringWebViewCache cacheWebView:]):
        (+[_WKAttributedStringWebViewCache resetPurgeDelay]):
        (+[_WKAttributedStringWebViewCache purgeSingleWebView]):
        (+[_WKAttributedStringWebViewCache purgeAllWebViews]):
        (+[NSAttributedString _loadFromHTMLWithOptions:contentLoader:completionHandler:]):
        (+[NSAttributedString loadFromHTMLWithRequest:options:completionHandler:]):
        (+[NSAttributedString loadFromHTMLWithFileURL:options:completionHandler:]):
        (+[NSAttributedString loadFromHTMLWithString:options:completionHandler:]):
        (+[NSAttributedString loadFromHTMLWithData:options:completionHandler:]):
        * UIProcess/API/Cocoa/NSAttributedStringPrivate.h: Copied from Source/WebKit/UIProcess/API/Cocoa/WKErrorInternal.h.
        * UIProcess/API/Cocoa/WKError.h:
        * UIProcess/API/Cocoa/WKError.mm:
        (localizedDescriptionForErrorCode):
        (createNSError):
        * UIProcess/API/Cocoa/WKErrorInternal.h:
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/WebPage/Cocoa/WebPageCocoa.mm:
        (WebKit::WebPage::getContentsAsAttributedString):

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

        Implement DownloadMonitor to prevent long-running slow downloads from background apps
        https://bugs.webkit.org/show_bug.cgi?id=195785

        Reviewed by Geoffrey Garen.

        This is similar to what was updated in <rdar://problem/42677685> but for WebKit Downloads.
        To test it I implemented a throttled TCP server, SPI to speed up DownloadMonitor's timer,
        and SPI to synthesize the application going into the background and foreground, which
        NSNotificationCenter does on iOS.

        * NetworkProcess/Downloads/Download.cpp:
        (WebKit::Download::didReceiveData):
        (WebKit::Download::didFinish):
        (WebKit::Download::didFail):
        (WebKit::Download::didCancel):
        * NetworkProcess/Downloads/Download.h:
        (WebKit::Download::applicationEnteredBackground):
        (WebKit::Download::applicationEnteredForeground):
        (WebKit::Download::manager const):
        * NetworkProcess/Downloads/DownloadManager.cpp:
        (WebKit::DownloadManager::downloadFinished):
        (WebKit::DownloadManager::applicationDidEnterBackground):
        (WebKit::DownloadManager::applicationWillEnterForeground):
        * NetworkProcess/Downloads/DownloadManager.h:
        * NetworkProcess/Downloads/DownloadMap.cpp:
        (WebKit::DownloadMap::values):
        * NetworkProcess/Downloads/DownloadMap.h:
        * NetworkProcess/Downloads/DownloadMonitor.cpp: Added.
        (WebKit::operator _kbps):
        (WebKit::timeUntilNextInterval):
        (WebKit::DownloadMonitor::DownloadMonitor):
        (WebKit::DownloadMonitor::measuredThroughputRate const):
        (WebKit::DownloadMonitor::downloadReceivedBytes):
        (WebKit::DownloadMonitor::applicationEnteredForeground):
        (WebKit::DownloadMonitor::applicationEnteredBackground):
        (WebKit::DownloadMonitor::speedMultiplier const):
        (WebKit::DownloadMonitor::timerFired):
        * NetworkProcess/Downloads/DownloadMonitor.h: Added.
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::initializeNetworkProcess):
        (WebKit::NetworkProcess::applicationDidEnterBackground):
        (WebKit::NetworkProcess::applicationWillEnterForeground):
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:
        * NetworkProcess/NetworkProcessCreationParameters.cpp:
        (WebKit::NetworkProcessCreationParameters::encode const):
        (WebKit::NetworkProcessCreationParameters::decode):
        * NetworkProcess/NetworkProcessCreationParameters.h:
        * Sources.txt:
        * SourcesCocoa.txt:
        * UIProcess/API/APIProcessPoolConfiguration.cpp:
        (API::ProcessPoolConfiguration::copy):
        * UIProcess/API/APIProcessPoolConfiguration.h:
        * UIProcess/API/C/WKContext.cpp:
        (WKContextDownloadURLRequest):
        (WKContextResumeDownload):
        * UIProcess/API/Cocoa/WKProcessPool.mm:
        (-[WKProcessPool _synthesizeAppIsBackground:]):
        (-[WKProcessPool _downloadURLRequest:originatingWebView:]):
        * UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
        * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h:
        * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm:
        (-[_WKProcessPoolConfiguration downloadMonitorSpeedMultiplier]):
        (-[_WKProcessPoolConfiguration setDownloadMonitorSpeedMultiplier:]):
        * UIProcess/Cocoa/DownloadProxyMapCocoa.mm: Added.
        (WebKit::DownloadProxyMap::platformCreate):
        (WebKit::DownloadProxyMap::platformDestroy):
        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        (WebKit::WebProcessPool::platformInitializeNetworkProcess):
        * UIProcess/Downloads/DownloadProxy.cpp:
        (WebKit::DownloadProxy::didFinish):
        (WebKit::DownloadProxy::didFail):
        (WebKit::DownloadProxy::didCancel):
        * UIProcess/Downloads/DownloadProxyMap.cpp:
        (WebKit::DownloadProxyMap::DownloadProxyMap):
        (WebKit::DownloadProxyMap::~DownloadProxyMap):
        (WebKit::DownloadProxyMap::platformCreate):
        (WebKit::DownloadProxyMap::platformDestroy):
        (WebKit::DownloadProxyMap::applicationDidEnterBackground):
        (WebKit::DownloadProxyMap::applicationWillEnterForeground):
        (WebKit::DownloadProxyMap::createDownloadProxy):
        (WebKit::DownloadProxyMap::downloadFinished):
        * UIProcess/Downloads/DownloadProxyMap.h:
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::synthesizeAppIsBackground):
        (WebKit::NetworkProcessProxy::createDownloadProxy):
        * UIProcess/Network/NetworkProcessProxy.h:
        * UIProcess/PageClient.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::receivedPolicyDecision):
        (WebKit::WebPageProxy::handleDownloadRequest):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::download):
        (WebKit::WebProcessPool::resumeDownload):
        (WebKit::WebProcessPool::createDownloadProxy):
        (WebKit::WebProcessPool::synthesizeAppIsBackground):
        * UIProcess/WebProcessPool.h:
        * UIProcess/ios/PageClientImplIOS.h:
        * UIProcess/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::handleDownloadRequest):
        * UIProcess/mac/PageClientImplMac.h:
        * UIProcess/mac/PageClientImplMac.mm:
        (WebKit::PageClientImpl::handleDownloadRequest):
        * WebKit.xcodeproj/project.pbxproj:

2019-03-18  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] Native selection views sometimes appear in hidden editable areas after losing focus
        https://bugs.webkit.org/show_bug.cgi?id=195894
        <rdar://problem/48849989>

        Reviewed by Tim Horton.

        On certain websites, focus is moved away from an editable element while maintaining a selection inside the
        editable element. In the case where the editable element is hidden, this currently breaks our text interaction
        suppression heuristics, which suppress text selection gestures and overlays inside focused hidden editable
        elements. To fix this, we refactor our text interaction suppression heuristics, such that they are not dependent
        on an editable element being focused. See changes below for more details.

        Test: editing/selection/ios/hide-selection-in-non-focused-element.html

        * Shared/EditorState.cpp:
        (WebKit::EditorState::PostLayoutData::encode const):
        (WebKit::EditorState::PostLayoutData::decode):
        * Shared/EditorState.h:

        Rename elementIsTransparentOrFullyClipped to editableRootIsTransparentOrFullyClipped, and additionally compute
        this flag by checking whether the root editable element containing the selection is transparent or clipped,
        instead of using the currently focused element.

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

        Remove the elementIsTransparentOrFullyClipped flag from FocusedElementInformation (see below for more detail).

        * UIProcess/ios/WKContentViewInteraction.h:

        Rename FocusedElementIsTransparentOrFullyClipped to EditableRootIsTransparentOrFullyClipped.

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _zoomToRevealFocusedElement]):
        (-[WKContentView _elementDidFocus:userIsInteracting:blurPreviousNode:changingActivityState:userObject:]):

        Remove logic that currently uses state on FocusedElementInformation to determine whether to suppress platform
        text interactions; instead, only use EditorState to make this determination. This logic was originally added in
        the initial implementation of the text interaction suppression heuristic as a way to begin suppressing text
        selection state before zooming to reveal the focused element; however, since we now zoom to reveal the text
        selection when focusing editable elements, zooming is deferred until the next complete EditorState update
        arrives in the UI process so we don't need to worry about beginning to suppress text interactions prior to this
        initial editor state update.

        (-[WKContentView _elementDidBlur]):
        (-[WKContentView _updateSelectionAssistantSuppressionState]):

        Add a helper method that updates text selection suppression state using the current EditorState.

        (-[WKContentView _selectionChanged]):
        (-[WKContentView _updateChangedSelection:]):

        Always update text suppression state when receiving an EditorState, instead of only doing so when processing a
        text selection gesture.

        (-[WKContentView _startSuppressingSelectionAssistantForReason:]):

        Renamed from _beginSuppressingSelectionAssistantForReason:, to better match "start/end" terminology of
        _endSuppressingSelectionAssistantForReason:.

        (-[WKContentView dropInteraction:performDrop:]):
        (-[WKContentView _beginSuppressingSelectionAssistantForReason:]): Deleted.
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::editorStateChanged):

        Ensure that we run logic to zoom to the focused element *after* updating text selection suppression state, so we
        don't erroneously zoom to reveal hidden editable elements.

        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::platformEditorState const):
        (WebKit::WebPage::getFocusedElementInformation):

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

        Delay WebProcess launch until a load is triggered in a Web view
        https://bugs.webkit.org/show_bug.cgi?id=195758
        <rdar://problem/48126013>

        Reviewed by Geoff Garen.

        This is achieved by constructing WebPageProxy objects with a WebProcessProxy that is in
        terminated state (because it never launched its process). This is convenient because
        it is a state that the WebPageProxy supports, which normally happened by the WebProcess
        crashes. When trying to do a load, we were already checking if the WebPageProxy's process
        was running (via an isValid() check) and we would re-launch the WebProcess if necessary
        by calling reattachToWebProcess(). For clarity, given that this state is no longer
        indicating that the WebProcess crashed, I renamed isValid() to hasRunningProcess() and
        reattachToWebProcess() to launchProcess().

        The reason delaying the WebProcess launch until the first load is useful is because it
        allows us to leverage the WebProcessCache given that we now know which registrable
        domain is going to be loaded in the process.

        This is a progression from a power usage standpoint. When it comes to page load time,
        it would be a progression if we found a suitable process in the cache. I do not expect
        a performance hit when no process is found in the cache because of process prewarming.

        * Shared/API/Cocoa/RemoteObjectRegistry.h:
        * Shared/API/Cocoa/RemoteObjectRegistry.mm:
        (WebKit::m_launchInitialProcessIfNecessary):
        (WebKit::RemoteObjectRegistry::sendInvocation):
        * UIProcess/API/Cocoa/WKProcessPool.mm:
        (-[WKProcessPool _processCacheSize]):
        * UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _isValid]):
        * UIProcess/Automation/WebAutomationSession.cpp:
        (WebKit::WebAutomationSession::willShowJavaScriptDialog):
        * UIProcess/Cocoa/WebPageProxyCocoa.mm:
        (WebKit::WebPageProxy::performDictionaryLookupAtLocation):
        (WebKit::WebPageProxy::performDictionaryLookupOfCurrentSelection):
        * UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.cpp:
        (WebKit::DrawingAreaProxyCoordinatedGraphics::sendUpdateBackingStoreState):
        (WebKit::DrawingAreaProxyCoordinatedGraphics::waitForAndDispatchDidUpdateBackingStoreState):
        (WebKit::DrawingAreaProxyCoordinatedGraphics::dispatchAfterEnsuringDrawing):
        * UIProcess/DrawingAreaProxy.cpp:
        (WebKit::DrawingAreaProxy::setViewExposedRect):
        (WebKit::DrawingAreaProxy::viewExposedRectChangedTimerFired):
        * UIProcess/GeolocationPermissionRequestManagerProxy.cpp:
        (WebKit::GeolocationPermissionRequestManagerProxy::didReceiveGeolocationPermissionDecision):
        * UIProcess/InspectorTargetProxy.cpp:
        (WebKit::InspectorTargetProxy::connect):
        (WebKit::InspectorTargetProxy::disconnect):
        (WebKit::InspectorTargetProxy::sendMessageToTargetBackend):
        * UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm:
        (WebKit::RemoteLayerTreeDrawingAreaProxy::sizeDidChange):
        (WebKit::RemoteLayerTreeDrawingAreaProxy::didRefreshDisplay):
        (WebKit::RemoteLayerTreeDrawingAreaProxy::dispatchAfterEnsuringDrawing):
        * UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
        (WebKit::UserMediaPermissionRequestManagerProxy::captureDevicesChanged):
        (WebKit::UserMediaPermissionRequestManagerProxy::userMediaAccessWasDenied):
        (WebKit::UserMediaPermissionRequestManagerProxy::denyRequest):
        (WebKit::UserMediaPermissionRequestManagerProxy::userMediaAccessWasGranted):
        (WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame):
        (WebKit::UserMediaPermissionRequestManagerProxy::processUserMediaPermissionRequest):
        (WebKit::UserMediaPermissionRequestManagerProxy::enumerateMediaDevicesForFrame):
        (WebKit::UserMediaPermissionRequestManagerProxy::captureStateChanged):
        * UIProcess/ViewGestureController.cpp:
        (WebKit::ViewGestureController::ViewGestureController):
        * UIProcess/WebBackForwardList.cpp:
        (WebKit::WebBackForwardList::~WebBackForwardList):
        * UIProcess/WebCookieManagerProxy.cpp:
        (WebKit::WebCookieManagerProxy::setHTTPCookieAcceptPolicy):
        * UIProcess/WebEditCommandProxy.cpp:
        (WebKit::WebEditCommandProxy::unapply):
        (WebKit::WebEditCommandProxy::reapply):
        * UIProcess/WebFrameProxy.cpp:
        (WebKit::WebFrameProxy::stopLoading const):
        * UIProcess/WebInspectorProxy.cpp:
        (WebKit::WebInspectorProxy::WebInspectorProxy):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::m_resetRecentCrashCountTimer):
        (WebKit::WebPageProxy::hasRunningProcess const):
        (WebKit::WebPageProxy::setUIClient):
        (WebKit::WebPageProxy::setIconLoadingClient):
        (WebKit::WebPageProxy::launchProcess):
        (WebKit::WebPageProxy::swapToWebProcess):
        (WebKit::WebPageProxy::finishAttachingToWebProcess):
        (WebKit::WebPageProxy::didAttachToRunningProcess):
        (WebKit::WebPageProxy::launchProcessForReload):
        (WebKit::WebPageProxy::launchProcessWithItem):
        (WebKit::WebPageProxy::initializeWebPage):
        (WebKit::WebPageProxy::tryClose):
        (WebKit::WebPageProxy::loadRequest):
        (WebKit::WebPageProxy::loadFile):
        (WebKit::WebPageProxy::loadData):
        (WebKit::WebPageProxy::loadAlternateHTML):
        (WebKit::WebPageProxy::loadWebArchiveData):
        (WebKit::WebPageProxy::navigateToPDFLinkWithSimulatedClick):
        (WebKit::WebPageProxy::stopLoading):
        (WebKit::WebPageProxy::reload):
        (WebKit::WebPageProxy::goToBackForwardItem):
        (WebKit::WebPageProxy::tryRestoreScrollPosition):
        (WebKit::WebPageProxy::setControlledByAutomation):
        (WebKit::WebPageProxy::setIndicating):
        (WebKit::WebPageProxy::setBackgroundColor):
        (WebKit::WebPageProxy::setTopContentInset):
        (WebKit::WebPageProxy::setUnderlayColor):
        (WebKit::WebPageProxy::viewWillStartLiveResize):
        (WebKit::WebPageProxy::viewWillEndLiveResize):
        (WebKit::WebPageProxy::dispatchActivityStateChange):
        (WebKit::WebPageProxy::layerHostingModeDidChange):
        (WebKit::WebPageProxy::waitForDidUpdateActivityState):
        (WebKit::WebPageProxy::setInitialFocus):
        (WebKit::WebPageProxy::clearSelection):
        (WebKit::WebPageProxy::restoreSelectionInFocusedEditableElement):
        (WebKit::WebPageProxy::validateCommand):
        (WebKit::WebPageProxy::increaseListLevel):
        (WebKit::WebPageProxy::decreaseListLevel):
        (WebKit::WebPageProxy::changeListType):
        (WebKit::WebPageProxy::setBaseWritingDirection):
        (WebKit::WebPageProxy::setNeedsFontAttributes):
        (WebKit::WebPageProxy::executeEditCommand):
        (WebKit::WebPageProxy::requestFontAttributesAtSelectionStart):
        (WebKit::WebPageProxy::setEditable):
        (WebKit::WebPageProxy::performDragControllerAction):
        (WebKit::WebPageProxy::dragEnded):
        (WebKit::WebPageProxy::didStartDrag):
        (WebKit::WebPageProxy::dragCancelled):
        (WebKit::WebPageProxy::handleMouseEvent):
        (WebKit::WebPageProxy::processNextQueuedMouseEvent):
        (WebKit::WebPageProxy::handleWheelEvent):
        (WebKit::WebPageProxy::handleKeyboardEvent):
        (WebKit::WebPageProxy::handleGestureEvent):
        (WebKit::WebPageProxy::handleTouchEventSynchronously):
        (WebKit::WebPageProxy::handleTouchEventAsynchronously):
        (WebKit::WebPageProxy::handleTouchEvent):
        (WebKit::WebPageProxy::scrollBy):
        (WebKit::WebPageProxy::centerSelectionInVisibleArea):
        (WebKit::WebPageProxy::receivedPolicyDecision):
        (WebKit::WebPageProxy::setUserAgent):
        (WebKit::WebPageProxy::resumeActiveDOMObjectsAndAnimations):
        (WebKit::WebPageProxy::suspendActiveDOMObjectsAndAnimations):
        (WebKit::WebPageProxy::setCustomTextEncodingName):
        (WebKit::WebPageProxy::setTextZoomFactor):
        (WebKit::WebPageProxy::setPageZoomFactor):
        (WebKit::WebPageProxy::setPageAndTextZoomFactors):
        (WebKit::WebPageProxy::scalePage):
        (WebKit::WebPageProxy::scalePageInViewCoordinates):
        (WebKit::WebPageProxy::scaleView):
        (WebKit::WebPageProxy::windowScreenDidChange):
        (WebKit::WebPageProxy::setCustomDeviceScaleFactor):
        (WebKit::WebPageProxy::accessibilitySettingsDidChange):
        (WebKit::WebPageProxy::updateAccessibilityEventsEnabled):
        (WebKit::WebPageProxy::setUseFixedLayout):
        (WebKit::WebPageProxy::setFixedLayoutSize):
        (WebKit::WebPageProxy::setAlwaysShowsHorizontalScroller):
        (WebKit::WebPageProxy::setAlwaysShowsVerticalScroller):
        (WebKit::WebPageProxy::listenForLayoutMilestones):
        (WebKit::WebPageProxy::setSuppressScrollbarAnimations):
        (WebKit::WebPageProxy::setEnableVerticalRubberBanding):
        (WebKit::WebPageProxy::setEnableHorizontalRubberBanding):
        (WebKit::WebPageProxy::setBackgroundExtendsBeyondPage):
        (WebKit::WebPageProxy::setPaginationMode):
        (WebKit::WebPageProxy::setPaginationBehavesLikeColumns):
        (WebKit::WebPageProxy::setPageLength):
        (WebKit::WebPageProxy::setGapBetweenPages):
        (WebKit::WebPageProxy::setPaginationLineGridEnabled):
        (WebKit::WebPageProxy::countStringMatches):
        (WebKit::WebPageProxy::replaceMatches):
        (WebKit::WebPageProxy::launchInitialProcessIfNecessary):
        (WebKit::WebPageProxy::runJavaScriptInMainFrame):
        (WebKit::WebPageProxy::runJavaScriptInMainFrameScriptWorld):
        (WebKit::WebPageProxy::getRenderTreeExternalRepresentation):
        (WebKit::WebPageProxy::getSourceForFrame):
        (WebKit::WebPageProxy::getContentsAsString):
        (WebKit::WebPageProxy::getContentsAsAttributedString):
        (WebKit::WebPageProxy::getBytecodeProfile):
        (WebKit::WebPageProxy::getSamplingProfilerOutput):
        (WebKit::WebPageProxy::getContentsAsMHTMLData):
        (WebKit::WebPageProxy::getSelectionOrContentsAsString):
        (WebKit::WebPageProxy::getSelectionAsWebArchiveData):
        (WebKit::WebPageProxy::getMainResourceDataOfFrame):
        (WebKit::WebPageProxy::getResourceDataFromFrame):
        (WebKit::WebPageProxy::getWebArchiveOfFrame):
        (WebKit::WebPageProxy::forceRepaint):
        (WebKit::WebPageProxy::preferencesDidChange):
        (WebKit::WebPageProxy::setMediaVolume):
        (WebKit::WebPageProxy::setMuted):
        (WebKit::WebPageProxy::setMediaCaptureEnabled):
        (WebKit::WebPageProxy::stopMediaCapture):
        (WebKit::WebPageProxy::stopAllMediaPlayback):
        (WebKit::WebPageProxy::suspendAllMediaPlayback):
        (WebKit::WebPageProxy::resumeAllMediaPlayback):
        (WebKit::WebPageProxy::handleMediaEvent):
        (WebKit::WebPageProxy::setVolumeOfMediaElement):
        (WebKit::WebPageProxy::setMayStartMediaWhenInWindow):
        (WebKit::WebPageProxy::didChooseColor):
        (WebKit::WebPageProxy::didEndColorPicker):
        (WebKit::WebPageProxy::didSelectOption):
        (WebKit::WebPageProxy::inspector const):
        (WebKit::WebPageProxy::didChooseFilesForOpenPanelWithDisplayStringAndIcon):
        (WebKit::WebPageProxy::didChooseFilesForOpenPanel):
        (WebKit::WebPageProxy::didCancelForOpenPanel):
        (WebKit::WebPageProxy::removeEditCommand):
        (WebKit::WebPageProxy::processDidBecomeUnresponsive):
        (WebKit::WebPageProxy::processDidBecomeResponsive):
        (WebKit::WebPageProxy::processDidTerminate):
        (WebKit::WebPageProxy::processWillBecomeSuspended):
        (WebKit::WebPageProxy::processWillBecomeForeground):
        (WebKit::WebPageProxy::resetStateAfterProcessExited):
        (WebKit::WebPageProxy::setCanRunModal):
        (WebKit::WebPageProxy::canRunModal):
        (WebKit::WebPageProxy::computePagesForPrinting):
        (WebKit::WebPageProxy::drawRectToImage):
        (WebKit::WebPageProxy::drawPagesToPDF):
        (WebKit::WebPageProxy::drawPagesForPrinting):
        (WebKit::WebPageProxy::updateBackingStoreDiscardableState):
        (WebKit::WebPageProxy::setViewLayoutSize):
        (WebKit::WebPageProxy::setAutoSizingShouldExpandToViewHeight):
        (WebKit::WebPageProxy::setViewportSizeForCSSViewportUnits):
        (WebKit::WebPageProxy::setComposition):
        (WebKit::WebPageProxy::confirmComposition):
        (WebKit::WebPageProxy::cancelComposition):
        (WebKit::WebPageProxy::setScrollPinningBehavior):
        (WebKit::WebPageProxy::setOverlayScrollbarStyle):
        (WebKit::WebPageProxy::changeFontAttributes):
        (WebKit::WebPageProxy::changeFont):
        (WebKit::WebPageProxy::setTextAsync):
        (WebKit::WebPageProxy::insertTextAsync):
        (WebKit::WebPageProxy::getMarkedRangeAsync):
        (WebKit::WebPageProxy::getSelectedRangeAsync):
        (WebKit::WebPageProxy::characterIndexForPointAsync):
        (WebKit::WebPageProxy::firstRectForCharacterRangeAsync):
        (WebKit::WebPageProxy::setCompositionAsync):
        (WebKit::WebPageProxy::confirmCompositionAsync):
        (WebKit::WebPageProxy::takeSnapshot):
        (WebKit::WebPageProxy::requestActiveNowPlayingSessionInfo):
        (WebKit::WebPageProxy::setUseSystemAppearance):
        (WebKit::WebPageProxy::installActivityStateChangeCompletionHandler):
        (WebKit::WebPageProxy::setPlaybackTarget):
        (WebKit::WebPageProxy::externalOutputDeviceAvailableDidChange):
        (WebKit::WebPageProxy::setShouldPlayToPlaybackTarget):
        (WebKit::WebPageProxy::clearWheelEventTestTrigger):
        (WebKit::WebPageProxy::callAfterNextPresentationUpdate):
        (WebKit::WebPageProxy::setShouldScaleViewToFitDocument):
        (WebKit::WebPageProxy::getLoadDecisionForIcon):
        (WebKit::WebPageProxy::setResourceCachingDisabled):
        (WebKit::WebPageProxy::setUserInterfaceLayoutDirection):
        (WebKit::WebPageProxy::effectiveAppearanceDidChange):
        (WebKit::WebPageProxy::insertAttachment):
        (WebKit::WebPageProxy::updateAttachmentAttributes):
        (WebKit::WebPageProxy::getApplicationManifest):
        (WebKit::WebPageProxy::textInputContextsInRect):
        (WebKit::WebPageProxy::focusTextInputContext):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::setAnyPageGroupMightHavePrivateBrowsingEnabled):
        (WebKit::WebProcessPool::initializeNewWebProcess):
        (WebKit::WebProcessPool::disconnectProcess):
        (WebKit::WebProcessPool::createWebPage):
        (WebKit::WebProcessPool::pageBeginUsingWebsiteDataStore):
        * UIProcess/WebProcessPool.h:
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::create):
        (WebKit::WebProcessProxy::addExistingWebPage):
        (WebKit::WebProcessProxy::maybeShutDown):
        * UIProcess/WebProcessProxy.h:
        * UIProcess/gstreamer/InstallMissingMediaPluginsPermissionRequest.cpp:
        (WebKit::InstallMissingMediaPluginsPermissionRequest::allow):
        (WebKit::InstallMissingMediaPluginsPermissionRequest::didEndRequestInstallMissingMediaPlugins):
        * UIProcess/gtk/WebInspectorProxyGtk.cpp:
        (WebKit::WebInspectorProxy::platformDetach):
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView setupInteraction]):
        (-[WKContentView _webTouchEventsRecognized:]):
        (-[WKContentView _hoverGestureRecognizerChanged:]):
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::requestFocusedElementInformation):
        (WebKit::WebPageProxy::updateVisibleContentRects):
        (WebKit::WebPageProxy::updateStringForFind):
        (WebKit::WebPageProxy::dynamicViewportSizeUpdate):
        (WebKit::WebPageProxy::setViewportConfigurationViewLayoutSize):
        (WebKit::WebPageProxy::setForceAlwaysUserScalable):
        (WebKit::WebPageProxy::setMaximumUnobscuredSize):
        (WebKit::WebPageProxy::setDeviceOrientation):
        (WebKit::WebPageProxy::setOverrideViewportArguments):
        (WebKit::WebPageProxy::selectWithGesture):
        (WebKit::WebPageProxy::updateSelectionWithTouches):
        (WebKit::WebPageProxy::requestAutocorrectionData):
        (WebKit::WebPageProxy::applyAutocorrection):
        (WebKit::WebPageProxy::selectTextWithGranularityAtPoint):
        (WebKit::WebPageProxy::selectPositionAtBoundaryWithDirection):
        (WebKit::WebPageProxy::moveSelectionAtBoundaryWithDirection):
        (WebKit::WebPageProxy::selectPositionAtPoint):
        (WebKit::WebPageProxy::beginSelectionInDirection):
        (WebKit::WebPageProxy::updateSelectionWithExtentPoint):
        (WebKit::WebPageProxy::updateSelectionWithExtentPointAndBoundary):
        (WebKit::WebPageProxy::requestDictationContext):
        (WebKit::WebPageProxy::getSelectionContext):
        (WebKit::WebPageProxy::selectWithTwoTouches):
        (WebKit::WebPageProxy::requestRectsForGranularityWithSelectionOffset):
        (WebKit::WebPageProxy::requestRectsAtSelectionOffsetWithText):
        (WebKit::WebPageProxy::moveSelectionByOffset):
        (WebKit::WebPageProxy::registerUIProcessAccessibilityTokens):
        (WebKit::WebPageProxy::focusNextFocusedElement):
        (WebKit::WebPageProxy::computePagesForPrintingAndDrawToPDF):
        (WebKit::WebPageProxy::requestEvasionRectsAboveSelection):
        (WebKit::WebPageProxy::requestDragStart):
        (WebKit::WebPageProxy::requestAdditionalItemsForDragSession):
        * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm:
        (WebKit::TiledCoreAnimationDrawingAreaProxy::sizeDidChange):
        (WebKit::TiledCoreAnimationDrawingAreaProxy::viewLayoutSizeDidChange):
        (WebKit::TiledCoreAnimationDrawingAreaProxy::createFence):
        (WebKit::TiledCoreAnimationDrawingAreaProxy::dispatchAfterEnsuringDrawing):
        * UIProcess/mac/WebPageProxyMac.mm:
        (WebKit::WebPageProxy::windowAndViewFramesChanged):
        (WebKit::WebPageProxy::setMainFrameIsScrollable):
        (WebKit::WebPageProxy::insertDictatedTextAsync):
        (WebKit::WebPageProxy::attributedSubstringForCharacterRangeAsync):
        (WebKit::WebPageProxy::fontAtSelection):
        (WebKit::WebPageProxy::stringSelectionForPasteboard):
        (WebKit::WebPageProxy::dataSelectionForPasteboard):
        (WebKit::WebPageProxy::readSelectionFromPasteboard):
        (WebKit::WebPageProxy::sendComplexTextInputToPlugin):
        (WebKit::WebPageProxy::registerWebProcessAccessibilityToken):
        (WebKit::WebPageProxy::registerUIProcessAccessibilityTokens):
        (WebKit::WebPageProxy::acceptsFirstMouse):
        * UIProcess/win/WebInspectorProxyWin.cpp:
        (WebKit::WebInspectorProxy::platformDetach):
        * UIProcess/win/WebView.cpp:
        (WebKit::WebView::cursorToShow const):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::m_hostFileDescriptor):

2019-03-18  Antti Koivisto  <antti@apple.com>

        Layer with no backing store should still hit-test over a scroller
        https://bugs.webkit.org/show_bug.cgi?id=195378
        <rdar://problem/48652078>

        Reviewed by Simon Fraser.

        * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeHostIOS.mm:
        (WebKit::RemoteLayerTreeHost::makeNode):
        * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeViews.h:
        * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeViews.mm:
        (WebKit::collectDescendantViewsAtPoint):

        No need for special WKTiledBackingView, tiled views now have correct event regions.

2019-03-18  Daniel Bates  <dabates@apple.com>

        [iOS] No DOM keypress event emitted for cursor key commands when non-editable element is focused
        https://bugs.webkit.org/show_bug.cgi?id=195626
        <rdar://problem/48810626>

        Reviewed by Wenson Hsieh.

        Following the UIKit fix <rdar://problem/47333786> WebKit will be asked whether it can perform some
        more actions, including cursor movements and more editing actions. All such actions are only applicable
        to editable elements. By responding NO to UIKit for such actions when we are not in an editable element
        we avoid the need to do such bookkeeping ourselves as UIKit will forward our response back to us
        on return from -handleKeyTextCommandForCurrentEvent, called from -[WKContentView _interpretKeyEvent].
        WebKit is then in a position to try to handle the event or in the case of all standard text editing
        key commands at the time of writing (e.g. Control + a) tell WebCore that it did not handle the event
        so that WebCore can continue the DOM key event dispatch algorithm. For standard text editing key
        commands, such as Control + a, we will emit a DOM keypress event for the 'a'.

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

2019-03-18  Adrian Perez de Castro  <aperez@igalia.com>

        [WPE] Bump public API to wpe-1.0
        https://bugs.webkit.org/show_bug.cgi?id=195887

        Reviewed by Philippe Normand.

        * UIProcess/API/wpe/docs/wpe-1.0-sections.txt: Renamed from Source/WebKit/UIProcess/API/wpe/docs/wpe-0.1-sections.txt.
        * WebProcess/InjectedBundle/API/wpe/docs/wpe-webextensions-1.0-sections.txt: Renamed from Source/WebKit/WebProcess/InjectedBundle/API/wpe/docs/wpe-webextensions-0.1-sections.txt.

2019-03-18  Adrian Perez de Castro  <aperez@igalia.com>

        [WPE] Bump dependencies to wpe-1.0 and wpebackend-fdo-1.0
        https://bugs.webkit.org/show_bug.cgi?id=195786

        Reviewed by Philippe Normand.

        * wpe/wpe-web-extension.pc.in: Change dependency to wpe-1.0
        * wpe/wpe-webkit.pc.in: Ditto.

2019-03-17  Fujii Hironori  <Hironori.Fujii@sony.com>

        [iOS] Block the accessibility server when accessibility is not enabled.
        https://bugs.webkit.org/show_bug.cgi?id=195342
        <rdar://problem/48615720>

        Unreviewed build fix for WinCairo.

        * Shared/SandboxExtension.h: Use ProcessID instead of pid_t.

2019-03-16  Dean Jackson  <dino@apple.com>

        ASSERT(gestureRecognizer == _doubleTapGestureRecognizer) in _doubleTapDidFail:
        https://bugs.webkit.org/show_bug.cgi?id=195857
        <rdar://problem/48954679>

        Reviewed by Wenson Hsieh.

        Reset an existing gesture recognizer before creating a new one.

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

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

        Add a new MediaCapabilitiesExtensionsEnabled setting
        https://bugs.webkit.org/show_bug.cgi?id=195843

        Reviewed by Geoffrey Garen.

        * Shared/WebPreferences.yaml:

2019-03-16  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] Software keyboard never appears when editing on some websites
        https://bugs.webkit.org/show_bug.cgi?id=195824
        <rdar://problem/48020610>

        Reviewed by Ryosuke Niwa.

        In the scenario where an element has already been programmatically focused but the UI process isn't showing an
        input view for it, there are a couple of different ways in which an input view may still be shown for that
        element:

        1. If the page attempts to programmatically focus the element, we'll invoke elementDidRefocus to recompute
        information about the focused element and propagate it to the UI process. By default, if programmatic focus was
        triggered under the scope of user interaction, we'll allow the input view to appear.

        2. In the case where page does not attempt to programmatically focus the element but a click is dispatched,
        there is logic in WebPage::completeSyntheticClick to send information about the already-focused element.

        On the web page relevant to this bug, focus is programmatically moved to hidden contenteditable areas upon page
        load, and touchstart is also prevented; furthermore, the page does not attempt to programmatically refocus the
        hidden editable area upon receiving touchstart. This means that the user will never be able to bring up the
        keyboard, since the editable area is already programmatically focused and subsequent attempts to tap in the
        page do nothing, because the page has already focused the hidden editable area (with the expectation that the
        software keyboard should already be present).

        To fix this, we bring some of the same logic in completeSyntheticClick over to dispatchTouchEvent, by sending
        focused element information to the UI process if the focused element did not change over the course of
        dispatching the touch event. Similar code was introduced in r167774 to fix the same type of issue (i.e.
        inability to bring up the software keyboard), but this was later reverted in r188405 due to causing bugs such as
        <rdar://problem/22204108>, wherein this logic to bring up the keyboard in dispatchTouchEvent would scroll and
        zoom the page, such that the click event fired after touchend would be dispatched in the wrong location and (in
        the case of <rdar://problem/22204108>) caused the focused element to immediately blur again.

        To mitigate this issue, we add the additional constraint that we only send focused element info in the case
        where the touch won't also generate a click later down the road, by requiring that the dispatched event was
        handled by the page (i.e. prevented).

        Test: fast/events/touch/ios/show-keyboard-after-preventing-touchstart.html

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

2019-03-16  Zalan Bujtas  <zalan@apple.com>

        Unable to close trending window on naver.com.
        https://bugs.webkit.org/show_bug.cgi?id=195842
        <rdar://problem/48067338>

        Reviewed by Simon Fraser.

        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::dispatchSyntheticMouseMove):
        (WebKit::WebPage::handleSyntheticClick):
        (WebKit::WebPage::completePendingSyntheticClickForContentChangeObserver):

2019-03-16  Timothy Hatcher  <timothy@apple.com>

        REGRESSION (r242807): Unified sources build failure from missing imports.
        https://bugs.webkit.org/show_bug.cgi?id=195852

        Unreviewed speculative build fix.

        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        Include <wtf/SoftLinking.h> and "UIKitSPI.h" on iOS.

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

        [iOS] Block the accessibility server when accessibility is not enabled.
        https://bugs.webkit.org/show_bug.cgi?id=195342

        Reviewed by Brent Fulgham.

        By default, block the iOS accessibility server in the sandbox. If accessibility is enabled,
        let the UI process issue a mach extension to the WebContent process. The UI process will
        issue the mach extension the the WebContent process by its process identifier. The sandbox
        extension handle is sent to the WebContent process to be consumed. The message will be sent
        when the WebProcess has finished launching, and also when accessibility is turned on.

        * Platform/spi/ios/AccessibilitySupportSPI.h:
        * Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
        * Shared/SandboxExtension.h:
        * Shared/mac/SandboxExtensionMac.mm:
        (WebKit::SandboxExtensionImpl::create):
        (WebKit::SandboxExtensionImpl::sandboxExtensionForType):
        (WebKit::SandboxExtensionImpl::SandboxExtensionImpl):
        (WebKit::SandboxExtension::createHandleForMachLookupByPid):
        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        (WebKit::WebProcessPool::registerNotificationObservers):
        (WebKit::WebProcessPool::unregisterNotificationObservers):
        * UIProcess/WebProcessPool.h:
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::didFinishLaunching):
        * UIProcess/WebProcessProxy.h:
        * UIProcess/ios/WebProcessProxyIOS.mm:
        (WebKit::WebProcessProxy::unblockAccessibilityServerIfNeeded):
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::unblockAccessibilityServer):
        * WebProcess/WebProcess.h:
        * WebProcess/WebProcess.messages.in:

2019-03-15  Timothy Hatcher  <timothy@apple.com>

        Unreviewed speculative build fix for non-Cocoa ports after r243012.

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

2019-03-15  Truitt Savell  <tsavell@apple.com>

        Unreviewed, rolling out r243008.

        This revision broke High Sierra builders

        Reverted changeset:

        "[iOS] Block the accessibility server when accessibility is
        not enabled."
        https://bugs.webkit.org/show_bug.cgi?id=195342
        https://trac.webkit.org/changeset/243008

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

        All networking from WebKit.Networking fails when Network Extension content filter is enabled
        https://bugs.webkit.org/show_bug.cgi?id=195815
        <rdar://problem/47598758>

        Reviewed by Brent Fulgham.

        The sandbox needs to allow an associated mach lookup.

        * NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in:
        * Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb:

2019-03-15  Sihui Liu  <sihui_liu@apple.com>

        [ Mojave WK1 ] Layout Test storage/indexeddb/database-odd-names.html is failing
        https://bugs.webkit.org/show_bug.cgi?id=190350
        <rdar://problem/45089503>

        Reviewed by Geoffrey Garen.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::collectIndexedDatabaseOriginsForVersion):
        (WebKit::NetworkProcess::indexedDatabaseOrigins):
        * NetworkProcess/NetworkProcess.h:
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::addSession):
        (WebKit::NetworkProcessProxy::createSymLinkForFileUpgrade): For efficientcy and atomicity, we choose to use
        symlink to create v0 folder. Because network process does not have the permission to create a symlink, we need 
        to do this in UI process. UI process would create v0 folder inside the IndexedDB directory if there isn't one.
        Also if there is a v0 directory but it doesn't have content, it means it's not a correct symlink and we need to 
        delete it and create again.

        * UIProcess/Network/NetworkProcessProxy.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::ensureNetworkProcess):

2019-03-15  Sihui Liu  <sihui_liu@apple.com>

        [ Mojave WK1 ] Layout Test storage/indexeddb/database-odd-names.html is failing
        https://bugs.webkit.org/show_bug.cgi?id=190350
        <rdar://problem/45089503>

        Reviewed by Geoffrey Garen.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::collectIndexedDatabaseOriginsForVersion):
        (WebKit::NetworkProcess::indexedDatabaseOrigins):
        * NetworkProcess/NetworkProcess.h:
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::addSession):
        (WebKit::NetworkProcessProxy::createSymLinkForFileUpgrade):
        * UIProcess/Network/NetworkProcessProxy.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::ensureNetworkProcess):

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

        [iOS] Restrict iokit-user-client-class "IOHIDLibUserClient" from WebKit
        https://bugs.webkit.org/show_bug.cgi?id=195821
        <rdar://problem/47606250>

        Reviewed by Brent Fulgham.

        This should be removed from the WebContent sandbox on iOS.

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

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

        _WKDownload should conform to NSCopying protocol
        https://bugs.webkit.org/show_bug.cgi?id=195718

        Reviewed by Tim Horton.

        This will allow us to use it as keys in NSMutableDictionaries, which Safari already kind of does.

        * UIProcess/API/Cocoa/_WKDownload.h:
        * UIProcess/API/Cocoa/_WKDownload.mm:
        (-[_WKDownload copyWithZone:]):

2019-03-15  Dean Jackson  <dino@apple.com>

        Provide an option for an always-on fast click mode in iOS
        https://bugs.webkit.org/show_bug.cgi?id=195822
        <rdar://problem/48939357>

        Reviewed by Sam Weinig.

        Add an option that will always trigger a click and never
        wait for a double tap to zoom. It is disabled by default.

        * Shared/WebPreferences.yaml:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _handleSmartMagnificationInformationForPotentialTap:renderRect:fitEntireRect:viewportMinimumScale:viewportMaximumScale:]):

2019-03-15  Timothy Hatcher  <timothy@apple.com>

        Add support to WebPage for getting the contents as an attributed string.
        https://bugs.webkit.org/show_bug.cgi?id=195636
        rdar://problem/45055697

        Reviewed by Tim Horton.

        * Shared/mac/AttributedString.h:
        (WebKit::AttributedString::AttributedString):
        * Shared/mac/AttributedString.mm:
        (IPC::ArgumentCoder<WebKit::AttributedString>::encode):
        (IPC::ArgumentCoder<WebKit::AttributedString>::decode):
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _getContentsAsAttributedStringWithCompletionHandler:]):
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::getContentsAsAttributedString):
        * UIProcess/WebPageProxy.h:
        * WebProcess/WebPage/Cocoa/WebPageCocoa.mm:
        (WebKit::WebPage::getContentsAsAttributedString):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:

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

        [iOS] Fix sandbox violation
        https://bugs.webkit.org/show_bug.cgi?id=195387
        <rdar://problem/48442387>

        Reviewed by Brent Fulgham.

        The sandbox on iOS and macOS needs to allow mach lookup to the "com.apple.nesessionmanager.content-filter"
        mach service. Also, mach lookups to "com.apple.nehelper" should be allowed.

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

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

        [PSON] Make sure the WebProcessCache is leverage when relaunching a process after termination
        https://bugs.webkit.org/show_bug.cgi?id=195747

        Reviewed by Geoff Garen.

        Make sure the WebProcessCache and the prewarmed process are used when relaunching a process
        after termination (e.g. crash).

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::reattachToWebProcess):
        (WebKit::WebPageProxy::reattachToWebProcessForReload):
        (WebKit::WebPageProxy::reattachToWebProcessWithItem):
        (WebKit::WebPageProxy::loadRequest):
        (WebKit::WebPageProxy::loadFile):
        (WebKit::WebPageProxy::loadData):
        (WebKit::WebPageProxy::loadAlternateHTML):
        (WebKit::WebPageProxy::loadWebArchiveData):
        (WebKit::WebPageProxy::navigateToPDFLinkWithSimulatedClick):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::processForRegistrableDomain):
        (WebKit::WebProcessPool::createWebPage):
        (WebKit::WebProcessPool::processForNavigationInternal):
        (WebKit::WebProcessPool::tryPrewarmWithDomainInformation):
        * UIProcess/WebProcessPool.h:

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

        [iOS] Block the accessibility server when accessibility is not enabled.
        https://bugs.webkit.org/show_bug.cgi?id=195342

        Reviewed by Brent Fulgham.

        By default, block the iOS accessibility server in the sandbox. If accessibility is enabled,
        let the UI process issue a mach extension to the WebContent process. The UI process will
        issue the mach extension the the WebContent process by its process identifier. The sandbox
        extension handle is sent to the WebContent process to be consumed. The message will be sent
        when the WebProcess has finished launching, and also when accessibility is turned on.

        * Platform/spi/ios/AccessibilitySupportSPI.h:
        * Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
        * Shared/SandboxExtension.h:
        * Shared/mac/SandboxExtensionMac.mm:
        (WebKit::SandboxExtensionImpl::create):
        (WebKit::SandboxExtensionImpl::sandboxExtensionForType):
        (WebKit::SandboxExtensionImpl::SandboxExtensionImpl):
        (WebKit::SandboxExtension::createHandleForMachLookupByPid):
        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        (WebKit::WebProcessPool::registerNotificationObservers):
        (WebKit::WebProcessPool::unregisterNotificationObservers):
        * UIProcess/WebProcessPool.h:
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::didFinishLaunching):
        * UIProcess/WebProcessProxy.h:
        * UIProcess/ios/WebProcessProxyIOS.mm:
        (WebKit::WebProcessProxy::unblockAccessibilityServerIfNeeded):
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::unblockAccessibilityServer):
        * WebProcess/WebProcess.h:
        * WebProcess/WebProcess.messages.in:

2019-03-15  Antti Koivisto  <antti@apple.com>

        Use Region for event region even when it is a rectangle
        https://bugs.webkit.org/show_bug.cgi?id=195803

        Reviewed by Simon Fraser.

        * Shared/RemoteLayerTree/RemoteLayerTreePropertyApplier.mm:
        (WebKit::RemoteLayerTreePropertyApplier::applyProperties):
        * Shared/RemoteLayerTree/RemoteLayerTreeTransaction.h:
        * Shared/RemoteLayerTree/RemoteLayerTreeTransaction.mm:
        (WebKit::RemoteLayerTreeTransaction::LayerProperties::LayerProperties):
        (WebKit::RemoteLayerTreeTransaction::LayerProperties::encode const):
        (WebKit::RemoteLayerTreeTransaction::LayerProperties::decode):
        * UIProcess/RemoteLayerTree/RemoteLayerTreeNode.h:
        (WebKit::RemoteLayerTreeNode::eventRegion const):
        * UIProcess/RemoteLayerTree/RemoteLayerTreeNode.mm:
        (WebKit::RemoteLayerTreeNode::setEventRegion):
        * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeViews.mm:
        (WebKit::collectDescendantViewsAtPoint):
        * WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.cpp:
        (WebKit::PlatformCALayerRemote::setEventRegion):
        (WebKit::PlatformCALayerRemote::eventRegion const): Deleted.
        * WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.h:

2019-03-15  Shawn Roberts  <sroberts@apple.com>

        Unreviewed, rolling out r242952.

        Causing API failures on iOS Simulator

        Reverted changeset:

        "[PSON] Make sure the WebProcessCache is leverage when
        relaunching a process after termination"
        https://bugs.webkit.org/show_bug.cgi?id=195747
        https://trac.webkit.org/changeset/242952

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

        [macOS] Broker access to Speech Synthesis
        https://bugs.webkit.org/show_bug.cgi?id=195645
        <rdar://problem/35369026>

        Reviewed by Brent Fulgham.

        To be able to close the connection to the speech synthesis daemon in the WebContent process,
        speech synthesis should be performed in the UI process. This patch forwards speech synthesis
        requests to the UI process by sending messages. On the UI process side, the speech synthesis
        is performed by simply using the existing platform speech synthesizer. Speech synthesis
        events are sent back to the WebContent process. All messages are async, except for the
        message to get the list of available voices.

        * Sources.txt:
        * UIProcess/Cocoa/WebPageProxyCocoa.mm:
        (WebKit::WebPageProxy::didStartSpeaking):
        (WebKit::WebPageProxy::didFinishSpeaking):
        (WebKit::WebPageProxy::didPauseSpeaking):
        (WebKit::WebPageProxy::didResumeSpeaking):
        (WebKit::WebPageProxy::speakingErrorOccurred):
        (WebKit::WebPageProxy::boundaryEventOccurred):
        (WebKit::WebPageProxy::voicesDidChange):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::ensureSpeechSynthesisData):
        (WebKit::WebPageProxy::speechSynthesisVoiceList):
        (WebKit::WebPageProxy::speechSynthesisSpeak):
        (WebKit::WebPageProxy::speechSynthesisCancel):
        (WebKit::WebPageProxy::speechSynthesisPause):
        (WebKit::WebPageProxy::speechSynthesisResume):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/WebCoreSupport/WebSpeechSynthesisClient.cpp: Added.
        (WebKit::WebSpeechSynthesisClient::voiceList):
        (WebKit::WebSpeechSynthesisClient::speak):
        (WebKit::WebSpeechSynthesisClient::cancel):
        (WebKit::WebSpeechSynthesisClient::pause):
        (WebKit::WebSpeechSynthesisClient::resume):
        * WebProcess/WebCoreSupport/WebSpeechSynthesisClient.h: Added.
        (WebKit::WebSpeechSynthesisClient::WebSpeechSynthesisClient):
        (WebKit::WebSpeechSynthesisClient::~WebSpeechSynthesisClient):
        * WebProcess/WebCoreSupport/WebSpeechSynthesisVoice.h: Added.
        (WebKit::WebSpeechSynthesisVoice::encode const):
        (WebKit::WebSpeechSynthesisVoice::decode):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::m_hostFileDescriptor):
        (WebKit::WebPage::speakingErrorOccurred):
        (WebKit::WebPage::boundaryEventOccurred):
        (WebKit::WebPage::voicesDidChange):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:
        * WebProcess/com.apple.WebProcess.sb.in:
        * WebProcess/glib/WebProcessGLib.cpp:

2019-03-15  Antti Koivisto  <antti@apple.com>

        Optimize Region for single rectangle case
        https://bugs.webkit.org/show_bug.cgi?id=195743

        Reviewed by Simon Fraser.

        * Shared/RemoteLayerTree/RemoteLayerTreeTransaction.mm:
        (WebKit::RemoteLayerTreeTransaction::LayerProperties::decode):
        * Shared/WebCoreArgumentCoders.cpp:
        (IPC::ArgumentCoder<EventTrackingRegions>::decode):
        (IPC::ArgumentCoder<Region::Span>::encode): Deleted.
        (IPC::ArgumentCoder<Region::Span>::decode): Deleted.
        (IPC::ArgumentCoder<Region>::encode): Deleted.
        (IPC::ArgumentCoder<Region>::decode): Deleted.
        * Shared/WebCoreArgumentCoders.h:

2019-03-14  Per Arne Vollan  <pvollan@apple.com>

        [iOS] WebKit crashes when opening pages documents
        https://bugs.webkit.org/show_bug.cgi?id=195784
        <rdar://problem/48904334>

        Reviewed by Brent Fulgham.

        The sandbox needs to allow additional syscalls.

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

2019-03-14  Simon Fraser  <simon.fraser@apple.com>

        Make it possible to test scrolling tree layer manipulation more easily
        https://bugs.webkit.org/show_bug.cgi?id=195780

        Reviewed by Tim Horton.

        Add a boolean attribute 'scrollUpdatesDisabled' on UIScriptController that
        cuts off communication of scrolling tree scrolls back to the web process
        (in RemoteScrollingCoordinatorProxy::scrollingTreeNodeDidScroll()). This
        allows tests to trigger scrolls which run the scrolling tree layer positioning
        logic, but never get another commit from the web process that might mask
        scrolling tree bugs.
        
        WKWebView's testing protocol get @property _scrollingUpdatesDisabledForTesting,
        whose getters and setters are overridden by TestRunnerWKWebView. Plumbing
        via PageClient and WebPageProxy makes this flag reachable by RemoteScrollingCoordinatorProxy.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _scrollingUpdatesDisabledForTesting]):
        (-[WKWebView _setScrollingUpdatesDisabledForTesting:]):
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        * UIProcess/Cocoa/PageClientImplCocoa.h:
        * UIProcess/Cocoa/PageClientImplCocoa.mm:
        (WebKit::PageClientImplCocoa::scrollingUpdatesDisabledForTesting):
        * UIProcess/Cocoa/WebPageProxyCocoa.mm:
        (WebKit::WebPageProxy::scrollingUpdatesDisabledForTesting):
        * UIProcess/PageClient.h:
        (WebKit::PageClient::scrollingUpdatesDisabledForTesting):
        * UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.cpp:
        (WebKit::RemoteScrollingCoordinatorProxy::scrollingTreeNodeDidScroll):
        * UIProcess/WebPageProxy.h:

2019-03-14  Youenn Fablet  <youenn@apple.com>

        Move IDB storage in private browsing mode to NetworkProcess
        https://bugs.webkit.org/show_bug.cgi?id=195602

        Reviewed by Brady Eidson.

        Covered by existing IDB tests and added API test.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::createIDBServer):
        Make sure that path is empty for private sessions.
        This will make IDB use a memory backing store.
        * WebProcess/Databases/WebDatabaseProvider.cpp:
        (WebKit::WebDatabaseProvider::idbConnectionToServerForSession):
        Use NetworkProcess IDB server instead of InProcessIDBServer.

2019-03-14  Wenson Hsieh  <wenson_hsieh@apple.com>

        REGRESSION (r242801): [iOS] preventDefault() on touchstart in a subframe does not prevent focusing the subframe
        https://bugs.webkit.org/show_bug.cgi?id=195749
        <rdar://problem/48892367>

        Reviewed by Tim Horton.

        r242801 added logic to fetch interaction information at the touch location upon touch start. However this,
        combined with an existing behavior where the process of computing InteractionInformationAtPosition in WebPage
        moves focus into the frame of the hit-tested node below the touch location, means that we'll always trigger a
        blur event on the window and move focus into the subframe when performing a touch inside a subframe, even if the
        page prevents default on touchstart.

        To fix this, add a "readonly" flag to InteractionInformationRequest, and only change focus when requesting
        position information in the case where the request is not readonly. For now, this readonly flag is false by
        default; in a future patch, we should identify the (hopefully few) places that rely on position information
        requests to move focus, explicitly turn this bit off in those places, and otherwise send readonly position
        information requests by default.

        * Shared/ios/InteractionInformationRequest.cpp:
        (WebKit::InteractionInformationRequest::encode const):
        (WebKit::InteractionInformationRequest::decode):
        (WebKit::InteractionInformationRequest::isValidForRequest):
        (WebKit::InteractionInformationRequest::isApproximatelyValidForRequest):

        Ensure that a readonly request is not valid for a non-readonly request.

        * Shared/ios/InteractionInformationRequest.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _requestActivatedElementAtPosition:completionBlock:]):

        Send a readonly position information request in the case where a WebKit SPI client is querying for element
        information at the given location.

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

        Send a readonly position information request on touchstart.

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

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

        Add WebsitePolicy for the client to specify the device orientation & motion access policy
        https://bugs.webkit.org/show_bug.cgi?id=195750

        Reviewed by Geoffrey Garen.

        Add WebsitePolicy for the client to specify the device orientation & motion access policy. If
        the client already knows access to the device motion & orientation API will be granted / denied,
        it can let WebKit know via WebsitePolicies so that WebKit will not ask the client when the
        permission is requested by JS.

        * Shared/WebsitePoliciesData.cpp:
        (WebKit::WebsitePoliciesData::encode const):
        (WebKit::WebsitePoliciesData::decode):
        (WebKit::WebsitePoliciesData::applyToDocumentLoader):
        * Shared/WebsitePoliciesData.h:
        * UIProcess/API/APIWebsitePolicies.cpp:
        (API::WebsitePolicies::data):
        * UIProcess/API/APIWebsitePolicies.h:
        * UIProcess/API/Cocoa/_WKWebsitePolicies.h:
        * UIProcess/API/Cocoa/_WKWebsitePolicies.mm:
        (-[_WKWebsitePolicies setDeviceOrientationAndMotionAccessPolicy:]):
        (-[_WKWebsitePolicies deviceOrientationAndMotionAccessPolicy]):

2019-03-14  Timothy Hatcher  <timothy@apple.com>

        REGRESSION (r242908): TestWebKitAPI.WebKit.AddAndRemoveDataDetectors Crashed
        https://bugs.webkit.org/show_bug.cgi?id=195751

        Reviewed by Wenson Hsieh.

        * Shared/Cocoa/ArgumentCodersCocoa.mm:
        (IPC::decodeArrayInternal): Added allowedClasses, pass to internal decodeObject for values.
        (IPC::decodeDictionaryInternal): Ditto for keys and values.
        (IPC::decodeObject): Pass allowedClasses to array and dictionary decoders.

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

        [PSON] Make sure the WebProcessCache is leverage when relaunching a process after termination
        https://bugs.webkit.org/show_bug.cgi?id=195747

        Reviewed by Geoff Garen.

        Make sure the WebProcessCache and the prewarmed process are used when relaunching a process
        after termination (e.g. crash).

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::reattachToWebProcess):
        (WebKit::WebPageProxy::reattachToWebProcessForReload):
        (WebKit::WebPageProxy::reattachToWebProcessWithItem):
        (WebKit::WebPageProxy::loadRequest):
        (WebKit::WebPageProxy::loadFile):
        (WebKit::WebPageProxy::loadData):
        (WebKit::WebPageProxy::loadAlternateHTML):
        (WebKit::WebPageProxy::loadWebArchiveData):
        (WebKit::WebPageProxy::navigateToPDFLinkWithSimulatedClick):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::processForRegistrableDomain):
        (WebKit::WebProcessPool::createWebPage):
        (WebKit::WebProcessPool::processForNavigationInternal):
        (WebKit::WebProcessPool::tryPrewarmWithDomainInformation):
        * UIProcess/WebProcessPool.h:

2019-03-14  Timothy Hatcher  <timothy@apple.com>

        Unreviewed speculative build fix for watchOS after r242908.

        * Shared/Cocoa/WebCoreArgumentCodersCocoa.mm:

2019-03-14  Youenn Fablet  <youenn@apple.com>

        Reset storage quota when clearing IDB/Cache API entries
        https://bugs.webkit.org/show_bug.cgi?id=195716

        Reviewed by Chris Dumez.

        On clearing DOMCache or IDB data, reset quota value to the default value.
        This ensures consistent layout test runs.

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

2019-03-13  Zalan Bujtas  <zalan@apple.com>

        [ContentChangeObserver] Stop content observation when content calls preventDefault() on touch events
        https://bugs.webkit.org/show_bug.cgi?id=195724
        <rdar://problem/48873456>

        Reviewed by Simon Fraser.

        * WebProcess/WebCoreSupport/ios/WebChromeClientIOS.mm:
        (WebKit::WebChromeClient::didPreventDefaultForEvent):

2019-03-13  Wenson Hsieh  <wenson_hsieh@apple.com>

        Make -[_WKAttachment setFileWrapper:contentType:completion:] robust when given a nil completion handler
        https://bugs.webkit.org/show_bug.cgi?id=195725
        <rdar://problem/48545062>

        Reviewed by Tim Horton.

        Add a missing nil check before invoking the given completionHandler in the case where the attachment is invalid.
        Tested by augmenting WKAttachmentTests.SetFileWrapperForPDFImageAttachment to exercise this scenario.

        * UIProcess/API/APIAttachment.cpp:
        (API::Attachment::invalidate):

        Additionally make sure that an invalidated _WKAttachment is also considered to be disconnected.

        * UIProcess/API/Cocoa/_WKAttachment.mm:
        (-[_WKAttachment setFileWrapper:contentType:completion:]):

2019-03-13  Timothy Hatcher  <timothy@apple.com>

        REGRESSION (r242908):  'NSInvalidArgumentException', reason: '+[PKPaymentMerchantSession count]: unrecognized selector sent to class 0x1c0fae060'
        https://bugs.webkit.org/show_bug.cgi?id=195720

        Reviewed by Andy Estes.

        Add back decode(Decoder& decoder, Class allowedClass) for Apple Pay code.

        * Shared/Cocoa/ArgumentCodersCocoa.h:
        (IPC::decode): Added.

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

        Stop using some deprecated SPI in WKDrawingView
        https://bugs.webkit.org/show_bug.cgi?id=195706
        <rdar://problem/48062599>

        Reviewed by Wenson Hsieh.

        * UIProcess/ios/WKDrawingView.mm:
        (-[WKDrawingView renderedDrawing]):
        (-[WKDrawingView PNGRepresentation]):
        (-[WKDrawingView loadDrawingFromPNGRepresentation:]):

2019-03-13  Timothy Hatcher  <timothy@apple.com>

        Unreviewed speculative build fix for watchOS after r242908.

        * Shared/Cocoa/ArgumentCodersCocoa.mm:
        (IPC::decodeObject):

2019-03-13  Dean Jackson  <dino@apple.com>

        Block all plugins smaller than 5x5px
        https://bugs.webkit.org/show_bug.cgi?id=195702
        <rdar://problem/28435204>

        Reviewed by Sam Weinig.

        Block all plugins that are smaller than a threshold, in this case
        5x5px. Other browsers have implemented this for a while, and now
        that we have Intersection Observers, small plugins are no longer
        necessary.

        * Shared/WebPreferences.yaml: New setting for this feature.

        * UIProcess/WebPageProxy.cpp: Handle new unavailability type.
        (WebKit::WebPageProxy::unavailablePluginButtonClicked):
        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::shouldUnavailablePluginMessageBeButton const):

        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: Removed this function
        as it was never being called.
        (WebKit::WebFrameLoaderClient::recreatePlugin): Deleted.
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.h:

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::pluginIsSmall): Checks the size of the plugin.
        (WebKit::WebPage::createPlugin): If the plugin is too small, stop it from
        launching.

2019-03-13  Keith Rollin  <krollin@apple.com>

        Add support for new StagedFrameworks layout
        https://bugs.webkit.org/show_bug.cgi?id=195543

        Reviewed by Alexey Proskuryakov.

        When creating the WebKit layout for out-of-band Safari/WebKit updates,
        use an optional path prefix when called for.

        Update the dyld_env path in OTHER_LDFLAGS_VERSIONED_FRAMEWORK_PATH to
        also understand about this layout.

        * Configurations/BaseTarget.xcconfig:

2019-03-13  Simon Fraser  <simon.fraser@apple.com>

        Scrolling tree should reposition non-stacking order descendents of overflow:scroll.
        https://bugs.webkit.org/show_bug.cgi?id=195608

        Reviewed by Zalan Bujtas.

        Step 1: add scrolling tree positioning nodes classes (but don't create them yet).

        Add Scrolling{State,Tree}PositionedNode to track composited layers that have to be repositioned when
        an async overflow:scroll scrolls. There are two instances in which this is necessary, reflected by
        the values of ScrollPositioningBehavior:

        ScrollPositioningBehavior::Moves - a composited layer whose containing block chain includes an
            async overflow scroller, but whose composited (i.e. z-order) parent is outside of the overflow.
            When the overflow scrolls, this layer has to move along with the overflow.

        ScrollPositioningBehavior::Stationary - a composited layer whose containing block chain skips the
            overflow scroller, but whose compositing (z-order) parent is the scroller, or inside the scroller.
            This only applies to position:absolute, on, for example, an overflow:scroll ith opacity.

        PositionedNodes are modeled after Fixed/Sticky nodes, with a new type of layout constraint just called LayoutConstraints.
        
        This patch adds support for PositionedNodes in the scrolling trees, but RenderLayerCompositor::computeCoordinatedPositioningForLayer()
        is just a stub so the new node types aren't created yet.
        
        RenderLayerBacking stores a ScrollingNodeID for the positioning role (just like the other roles). Since the Positioning
        role is about position relative to ancestors, a node with both Positioning and FrameHosting or Scrolling roles treats
        the Positioning node as the parent of the other types. A node should never have both Positioning and ViewportConstrained roles.

        * Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp:
        (ArgumentCoder<ScrollingStateFrameScrollingNode>::encode):
        (ArgumentCoder<ScrollingStatePositionedNode>::encode):
        (ArgumentCoder<ScrollingStatePositionedNode>::decode):
        (WebKit::encodeNodeAndDescendants):
        (WebKit::RemoteScrollingCoordinatorTransaction::decode):
        (WebKit::dump):
        * Shared/WebCoreArgumentCoders.cpp:
        (IPC::ArgumentCoder<LayoutConstraints>::encode):
        (IPC::ArgumentCoder<LayoutConstraints>::decode):
        (IPC::ArgumentCoder<StickyPositionViewportConstraints>::decode):
        * Shared/WebCoreArgumentCoders.h:
        * UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.cpp:
        (WebKit::RemoteScrollingCoordinatorProxy::connectStateNodeLayers):
        * UIProcess/RemoteLayerTree/RemoteScrollingTree.cpp:
        (WebKit::RemoteScrollingTree::createScrollingTreeNode):
        * UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.mm:
        (WebKit::RemoteScrollingCoordinatorProxy::connectStateNodeLayers):

2019-03-13  Youenn Fablet  <youenn@apple.com>

        Check IDB quota usage through QuotaManager
        https://bugs.webkit.org/show_bug.cgi?id=195302

        Reviewed by Chris Dumez.

        Set the quota manager getter for IDBServer at creation time.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::createIDBServer):
        (WebKit::NetworkProcess::idbServer):
        * NetworkProcess/NetworkProcess.h:
        * WebProcess/Databases/WebDatabaseProvider.cpp:
        (WebKit::WebDatabaseProvider::idbConnectionToServerForSession):

2019-03-13  Timothy Hatcher  <timothy@apple.com>

        Consolidate ArgumentCodersMac and ArgumentCodersCocoa.
        https://bugs.webkit.org/show_bug.cgi?id=195636
        rdar://problem/45055697

        Reviewed by Ryosuke Niwa.

        Merge the two similar encoders and decoders. This avoids issues where
        one encoder could be used and the other decoder, which caused a crash.
        It also stops handling NSAttributedString specifically and just uses
        the NSSecureCoding path to handle more complex attributes.

        Some WebCore encoders code needed to move to platform files, since
        ArgumentCodersCocoa.h requires an ObjectiveC++ implementation to work.

        * Shared/Cocoa/ArgumentCodersCocoa.h:
        (IPC::encode):
        (IPC::decode):
        (IPC::ArgumentCoder<RetainPtr<T>>::encode):
        (IPC::ArgumentCoder<RetainPtr<T>>::decode):
        * Shared/Cocoa/ArgumentCodersCocoa.mm:
        (IPC::typeFromObject):
        (IPC::isSerializableFont):
        (IPC::isSerializableValue):
        (IPC::encodeObject):
        (IPC::decodeObject):
        * Shared/Cocoa/LoadParametersCocoa.mm:
        * Shared/Cocoa/WebCoreArgumentCodersCocoa.mm:
        (IPC::ArgumentCoder<WebCore::DictionaryPopupInfo>::encodePlatformData):
        (IPC::ArgumentCoder<WebCore::DictionaryPopupInfo>::decodePlatformData):
        (IPC::ArgumentCoder<WebCore::FontAttributes>::encodePlatformData):
        (IPC::ArgumentCoder<WebCore::FontAttributes>::decodePlatformData):
        * Shared/WebCoreArgumentCoders.cpp:
        (IPC::ArgumentCoder<DictionaryPopupInfo>::encode):
        (IPC::ArgumentCoder<DictionaryPopupInfo>::decode):
        (IPC::ArgumentCoder<FontAttributes>::encode):
        (IPC::ArgumentCoder<FontAttributes>::decode):
        * Shared/WebCoreArgumentCoders.h:
        * Shared/mac/ArgumentCodersMac.h: Removed.
        * Shared/mac/ArgumentCodersMac.mm: Removed.
        * Shared/mac/AttributedString.mm:
        (WebKit::AttributedString::encode const):
        * Shared/mac/ObjCObjectGraph.mm:
        * SourcesCocoa.txt:
        * WebKit.xcodeproj/project.pbxproj:

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

        Use a ServiceWorker process per registrable domain
        https://bugs.webkit.org/show_bug.cgi?id=195649

        Reviewed by Youenn Fablet.

        Use a ServiceWorker process per registrable domain instead of one per security origin. This is
        more in line with PSON and avoids launching too many processes.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::createNetworkConnectionToWebProcess):
        (WebKit::NetworkProcess::connectionToContextProcessWasClosed):
        (WebKit::NetworkProcess::needsServerToContextConnectionForRegistrableDomain const):
        (WebKit::NetworkProcess::serverToContextConnectionForRegistrableDomain):
        (WebKit::NetworkProcess::createServerToContextConnection):
        (WebKit::NetworkProcess::swContextConnectionMayNoLongerBeNeeded):
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:
        * NetworkProcess/ServiceWorker/WebSWServerConnection.cpp:
        (WebKit::WebSWServerConnection::scheduleJobInServer):
        * NetworkProcess/ServiceWorker/WebSWServerToContextConnection.cpp:
        (WebKit::WebSWServerToContextConnection::WebSWServerToContextConnection):
        * NetworkProcess/ServiceWorker/WebSWServerToContextConnection.h:
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::getNetworkProcessConnection):
        (WebKit::NetworkProcessProxy::establishWorkerContextConnectionToNetworkProcess):
        (WebKit::NetworkProcessProxy::establishWorkerContextConnectionToNetworkProcessForExplicitSession):
        * UIProcess/Network/NetworkProcessProxy.h:
        * UIProcess/Network/NetworkProcessProxy.messages.in:
        * UIProcess/ServiceWorkerProcessProxy.cpp:
        (WebKit::ServiceWorkerProcessProxy::create):
        (WebKit::ServiceWorkerProcessProxy::ServiceWorkerProcessProxy):
        (WebKit::ServiceWorkerProcessProxy::getLaunchOptions):
        * UIProcess/ServiceWorkerProcessProxy.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::establishWorkerContextConnectionToNetworkProcess):
        (WebKit::WebProcessPool::disconnectProcess):
        (WebKit::WebProcessPool::updateProcessAssertions):
        * UIProcess/WebProcessPool.h:

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

        REGRESSION(PSON, r240660): Navigation over process boundary is flashy when using Cmd-left/right arrow to navigate
        https://bugs.webkit.org/show_bug.cgi?id=195684
        <rdar://problem/48294714>

        Reviewed by Antti Koivisto.

        * Shared/NavigationActionData.cpp:
        (WebKit::NavigationActionData::encode const):
        (WebKit::NavigationActionData::decode):
        * Shared/NavigationActionData.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::decidePolicyForNavigationAction):
        (WebKit::WebPageProxy::backForwardAddItem):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):

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

        Drop legacy WebCore::toRegistrableDomain() utility function
        https://bugs.webkit.org/show_bug.cgi?id=195637

        Reviewed by Geoffrey Garen.

        Drop legacy toRegistrableDomain() / registrableDomainAreEqual() utility functions.
        Update call sites to use modern RegistrableDomain type instead.

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::processForNavigationInternal):

2019-03-12  Brady Eidson  <beidson@apple.com>

        Take UnboundedNetworking assertion when a file upload is in progress.
        https://bugs.webkit.org/show_bug.cgi?id=195497

        Reviewed by Geoff Garen.

        This patch implements whole bunch of bookkeeping in both the Networking and UI processes.

        The TLDR of that bookkeeping is:
        - Whenever any uploads are in progress, take an assertion for both Networking and UI processes.
        - Whenever a particular WebProcess has an upload in progress, take an assertion for it.

        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::NetworkConnectionToWebProcess):
        (WebKit::NetworkConnectionToWebProcess::setProcessIdentifier):
        (WebKit::NetworkConnectionToWebProcess::setConnectionHasUploads):
        (WebKit::NetworkConnectionToWebProcess::clearConnectionHasUploads):
        * NetworkProcess/NetworkConnectionToWebProcess.h:
        * NetworkProcess/NetworkConnectionToWebProcess.messages.in:

        * NetworkProcess/NetworkResourceLoadMap.cpp: Added.
        (WebKit::NetworkResourceLoadMap::add):
        (WebKit::NetworkResourceLoadMap::remove):
        (WebKit::NetworkResourceLoadMap::get const):
        * NetworkProcess/NetworkResourceLoadMap.h: Added.
        (WebKit::NetworkResourceLoadMap::NetworkResourceLoadMap):
        (WebKit::NetworkResourceLoadMap::isEmpty const):
        (WebKit::NetworkResourceLoadMap::contains const):
        (WebKit::NetworkResourceLoadMap::begin):
        (WebKit::NetworkResourceLoadMap::values):

        * NetworkProcess/NetworkSession.cpp:
 
       * Scripts/webkit/messages.py:

        * Sources.txt:

        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::takeUploadAssertion):
        (WebKit::NetworkProcessProxy::clearUploadAssertion):
        * UIProcess/Network/NetworkProcessProxy.h:

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::setWebProcessHasUploads):
        (WebKit::WebProcessPool::clearWebProcessHasUploads):
        * UIProcess/WebProcessPool.h:
        * UIProcess/WebProcessPool.messages.in:
 
       * WebKit.xcodeproj/project.pbxproj:

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

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

        Use new RegistrableDomain type in PSON code
        https://bugs.webkit.org/show_bug.cgi?id=195634

        Reviewed by Youenn Fablet.

        Use new RegistrableDomain type in PSON code instead of more error-prone String type.

        * UIProcess/SuspendedPageProxy.cpp:
        (WebKit::SuspendedPageProxy::SuspendedPageProxy):
        * UIProcess/SuspendedPageProxy.h:
        * UIProcess/WebProcessCache.cpp:
        (WebKit::WebProcessCache::canCacheProcess const):
        (WebKit::WebProcessCache::addProcessIfPossible):
        (WebKit::WebProcessCache::takeProcess):
        (WebKit::WebProcessCache::clearAllProcessesForSession):
        * UIProcess/WebProcessCache.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::addProcessToOriginCacheSet):
        (WebKit::WebProcessPool::removeProcessFromOriginCacheSet):
        (WebKit::WebProcessPool::processForNavigationInternal):
        (WebKit::WebProcessPool::findReusableSuspendedPageProcess):
        (WebKit::WebProcessPool::didCollectPrewarmInformation):
        (WebKit::WebProcessPool::tryPrewarmWithDomainInformation):
        * UIProcess/WebProcessPool.h:
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::canBeAddedToWebProcessCache const):
        (WebKit::WebProcessProxy::maybeShutDown):
        (WebKit::WebProcessProxy::didCollectPrewarmInformation):
        (WebKit::WebProcessProxy::didStartProvisionalLoadForMainFrame):
        * UIProcess/WebProcessProxy.h:
        (WebKit::WebProcessProxy::registrableDomain const):
        * UIProcess/WebProcessProxy.messages.in:
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::sendPrewarmInformation):

2019-03-13  Fujii Hironori  <Hironori.Fujii@sony.com>

        [Win][PlayStation] Remove WebCore::standardUserAgentForURL
        https://bugs.webkit.org/show_bug.cgi?id=195662

        Reviewed by Ryosuke Niwa.

        * WebProcess/WebPage/win/WebPageWin.cpp:
        (WebKit::WebPage::platformUserAgent const): Return an empty string as well as mac/ios ports.

2019-03-12  Ross Kirsling  <ross.kirsling@sony.com>

        [Win] Fix a slew of simple clang-cl warnings.
        https://bugs.webkit.org/show_bug.cgi?id=195652

        Reviewed by Don Olmstead.

        * NetworkProcess/curl/NetworkDataTaskCurl.cpp:
        (WebKit::NetworkDataTaskCurl::invokeDidReceiveResponse): -Wswitch
        * Platform/IPC/win/ConnectionWin.cpp:
        (IPC::Connection::readEventHandler): -Wunused-variable
        * Platform/win/LoggingWin.cpp:
        (WebKit::logLevelString): -Wwritable-strings
        * UIProcess/Launcher/win/ProcessLauncherWin.cpp:
        (WebKit::ProcessLauncher::launchProcess): -Wunused-variable

2019-03-12  Ryosuke Niwa  <rniwa@webkit.org>

        Move the code for determining the need for touch bar quirks to Quirks class
        https://bugs.webkit.org/show_bug.cgi?id=195654

        Reviewed by Brent Fulgham.

        Moved the code to determine whether touch bar quirks are needed or not to WebCore.

        Also renamed HiddenContentEditableQuirk to IsTouchBarUpdateSupressedForHiddenContentEditable
        and PlainTextQuirk to NeverRichlyEditableForTouchBar.

        * UIProcess/Cocoa/WebViewImpl.h:
        (WebKit::WebViewImpl::isRichlyEditableForTouchBar): Renamed.
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::updateTouchBar):
        (WebKit::WebViewImpl::candidateListTouchBarItem const):
        (WebKit::WebViewImpl::isRichlyEditableForTouchBar const): Renamed from isRichlyEditable.
        (WebKit::WebViewImpl::textTouchBar const):
        (WebKit::WebViewImpl::updateTextTouchBar):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::setIsTouchBarUpdateSupressedForHiddenContentEditable): Renamed from
        setNeedsHiddenContentEditableQuirk.
        (WebKit::WebPageProxy::setIsNeverRichlyEditableForTouchBar): Renamed from setNeedsPlainTextQuirk.
        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::isTouchBarUpdateSupressedForHiddenContentEditable const): Renamed from
        needsHiddenContentEditableQuirk.
        (WebKit::WebPageProxy::isNeverRichlyEditableForTouchBar const): Renamed from needsPlainTextQuirk.
        * UIProcess/WebPageProxy.messages.in: Renamed the IPC messages.
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::needsHiddenContentEditableQuirk): Deleted. Moved to WebCore.
        (WebKit::needsPlainTextQuirk): Deleted. Moved to WebCore.
        (WebKit::WebPage::didStartPageTransition):
        (WebKit::WebPage::didChangeSelection):
        * WebProcess/WebPage/WebPage.h:
        (WebKit::WebPage):

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

        Add WebFrameProxy::loadData
        https://bugs.webkit.org/show_bug.cgi?id=195647
        <rdar://problem/48826856>

        Reviewed by Youenn Fablet.

        This patch adds WebFrameProxy::loadData which is a simplified version of WebPageProxy::loadData that
        loads substitute data to an iframe. This is needed by the Load Optimizer.

        * UIProcess/WebFrameProxy.cpp:
        (WebKit::WebFrameProxy::loadData):
        * UIProcess/WebFrameProxy.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::loadDataInFrame):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:

2019-03-12  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] Input view sometimes flickers when blurring and refocusing an element
        https://bugs.webkit.org/show_bug.cgi?id=195639
        <rdar://problem/48735337>

        Reviewed by Tim Horton.

        On iOS, if a focused element is blurred and immediately refocused in the scope of user interaction, we will end
        up reloading interaction state (input views, autocorrection contexts, etc.) in the UI process. On certain well-
        trafficked websites, this results in the input view and input accessory view flickering (or more egregiously,
        scrolling to re-reveal the focused element) when changing selection.

        To fix the issue, this patch refactors some focus management logic to suppress sending focused element updates
        to the UI process in the case where the same element is being blurred and immediately refocused. To do this, we
        track the most recently blurred element and bail when the recently blurred element is identical to the newly
        focused element. See below for more detail.

        Test: fast/forms/ios/keyboard-stability-when-refocusing-element.html

        * UIProcess/WebPageProxy.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _elementDidFocus:userIsInteracting:blurPreviousNode:changingActivityState:userObject:]):
        (-[WKContentView _elementDidBlur]):

        Update the web process' notion of whether an input view is showing. Importantly, this accounts for decisions
        made by _WKUIDelegate. See below for more details.

        (isAssistableInputType): Deleted.

        Removed this helper function; this was only used in one place as a sanity check that the focused element's type
        is not none, right before attempting to show an input view. Instead, we can just check the focused element's
        type directly against InputType::None in the if statement of the early return.

        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::setIsShowingInputViewForFocusedElement):

        Add a hook to notify the web process when an input view is showing or not (see below for more detail).

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::didStartPageTransition):
        (WebKit::WebPage::elementDidRefocus):
        (WebKit::WebPage::shouldDispatchUpdateAfterFocusingElement const):

        Add a helper to determine whether we notify the UI process about a newly focused element. On macOS, this is true
        only when the new focused element is neither the currently focused element, nor the focused element that was
        just blurred. On iOS, we have an additional constraint that when the input view is not showing, we still need to
        notify the UI process, since the UI process might want to begin showing the keyboard for an element that has
        only been programmatically focused, for which we aren't currently showing the input view.

        (WebKit::WebPage::elementDidFocus):
        (WebKit::WebPage::elementDidBlur):

        Replace a couple of existing member variables in WebPage used for focus management:
        -   Replace m_hasPendingBlurNotification with m_recentlyBlurredElement, a RefPtr to the Element that is being
            blurred. Behavior here is the same as before (i.e. having a pending blur notification is equivalent to
            having recently blurred a focused element). However, this allows us to check newly focused elements against
            the recently blurred element in WebPage::elementDidFocus().
        -   Replace m_isFocusingElementDueToUserInteraction with m_isShowingInputViewForFocusedElement. The flag
            m_isFocusingElementDueToUserInteraction was originally added to fix <webkit.org/b/146735>, by ensuring that
            we don't send redundant ElementDidFocus (formerly, StartAssistingNode) messages to the UI process even when
            the keyboard is already up. In these simpler times, user interaction when focusing an element was equivalent
            to showing an input view for the focused element. However, in today's world, there are a variety of reasons
            why we might or might not show an input view for a given element (including, but not limited to activity
            state changes and decisions made by _WKInputDelegate). As such, it doesn't make sense to continue relying on
            m_isFocusingElementDueToUserInteraction in this early return. Instead, have the UI process propagate a
            message back to the web process, to let it know whether there is a keyboard showing, and use this flag
            instead.

        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::setIsShowingInputViewForFocusedElement):

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

        More attempts at build fixing.

        * UIProcess/ios/WKActionSheetAssistant.mm:
        Yet more.

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

        Device Orientation access permission should be denied unless explicitly granted by the client
        https://bugs.webkit.org/show_bug.cgi?id=195625

        Reviewed by Youenn Fablet.

        Device Orientation access permission should be denied unless explicitly granted by the client.
        Previously, it was granted by default.

        * UIProcess/API/APIUIClient.h:
        (API::UIClient::shouldAllowDeviceOrientationAndMotionAccess):
        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetPageUIClient):
        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::UIDelegate::UIClient::shouldAllowDeviceOrientationAndMotionAccess):

2019-03-12  Antti Koivisto  <antti@apple.com>

        [iOS] Enable asynchronous frame scrolling by default
        https://bugs.webkit.org/show_bug.cgi?id=195622
        <rdar://problem/48658028>

        Reviewed by Simon Fraser

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

2019-03-12  Per Arne Vollan  <pvollan@apple.com>

        [iOS] Block access to backboardd service
        https://bugs.webkit.org/show_bug.cgi?id=195484

        Reviewed by Brent Fulgham.

        This patch is addressing blocking the backboardd service "com.apple.backboard.hid.services". Getting the
        backlight level in the WebContent process will initiate a connection with this service. To be able to
        block the service, the backlight level is queried in the UI process and sent to the WebContent process
        when the WebContent process is started, and when the backlight level is changed. On the WebContent side,
        the method getting the backlight level is swizzled to return the value sent from the UI process.

        * Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        (WebKit::WebProcessPool::displayBrightness):
        (WebKit::WebProcessPool::backlightLevelDidChangeCallback):
        (WebKit::WebProcessPool::registerNotificationObservers):
        (WebKit::WebProcessPool::unregisterNotificationObservers):
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::initializeNewWebProcess):
        * UIProcess/WebProcessPool.h:
        * WebProcess/WebProcess.h:
        * WebProcess/WebProcess.messages.in:
        * WebProcess/cocoa/WebProcessCocoa.mm:
        (WebKit::currentBacklightLevel):
        (WebKit::WebProcess::backlightLevelDidChange):

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

        Fix the build after 242801

        * UIProcess/ios/WKActionSheetAssistant.mm:
        (-[WKActionSheetAssistant _elementActionForDDAction:]):
        More.

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

        Fix the build after 242801

        * UIProcess/ios/WKActionSheetAssistant.mm:
        (-[WKActionSheetAssistant _elementActionForDDAction:]):

2019-03-12  Eric Carlson  <eric.carlson@apple.com>

        [iOS] Sandbox must allow mach lookup required to compress video
        https://bugs.webkit.org/show_bug.cgi?id=195627
        <rdar://problem/48811072>

        Reviewed by Youenn Fablet.

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

2019-03-12  Jennifer Moore  <jennifer.moore@apple.com>

        Check whether to launch a default action instead of action sheet
        https://bugs.webkit.org/show_bug.cgi?id=195225
        <rdar://problem/47715544>

        Reviewed by Daniel Bates and Tim Horton.

        Notify DataDetectors at the start of a touch on a link, and check whether to immediately
        launch the default action instead of an action sheet.

        * UIProcess/ios/WKActionSheetAssistant.h:
        * UIProcess/ios/WKActionSheetAssistant.mm:
        (-[WKActionSheetAssistant interactionDidStart]):
        (-[WKActionSheetAssistant _createSheetWithElementActions:defaultTitle:showLinkTitle:]):
        (-[WKActionSheetAssistant showImageSheet]):
        (-[WKActionSheetAssistant showLinkSheet]):
        (-[WKActionSheetAssistant showDataDetectorsSheet]):
        (-[WKActionSheetAssistant _createSheetWithElementActions:showLinkTitle:]): Deleted.
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _webTouchEventsRecognized:]):
:
2019-03-12  Zalan Bujtas  <zalan@apple.com>

        [Synthetic Click] Dispatch mouseout soon after mouseup
        https://bugs.webkit.org/show_bug.cgi?id=195575
        <rdar://problem/47093049>

        Reviewed by Simon Fraser.

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

2019-03-12  Zalan Bujtas  <zalan@apple.com>

        [ContentChangeObserver] Stop content change observation when the touch event turns into long press
        https://bugs.webkit.org/show_bug.cgi?id=195601
        <rdar://problem/48796324>

        Reviewed by Wenson Hsieh.

        Add didRecognizeLongPress() message to be able to cancel content observation (started at touchStart).

        * UIProcess/WebPageProxy.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _longPressRecognized:]):
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::didRecognizeLongPress):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::didRecognizeLongPress):

2019-03-11  Andy Estes  <aestes@apple.com>

        [Mac] Ensure Apple Pay is unavailable when PassKit.framework is missing
        https://bugs.webkit.org/show_bug.cgi?id=195583
        <rdar://problem/48420224>

        Reviewed by Daniel Bates.

        PassKit.framework is optionally soft-linked on Mac because it is missing from the Recovery
        Partition. We need to check if the framework is available before calling into it.

        * Shared/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
        (WebKit::WebPaymentCoordinatorProxy::platformCanMakePayments):
        (WebKit::WebPaymentCoordinatorProxy::platformCanMakePaymentsWithActiveCard):
        (WebKit::WebPaymentCoordinatorProxy::platformOpenPaymentSetup):
        (WebKit::WebPaymentCoordinatorProxy::platformAvailablePaymentNetworks):
        * Shared/ApplePay/mac/WebPaymentCoordinatorProxyMac.mm:
        (WebKit::WebPaymentCoordinatorProxy::platformShowPaymentUI):

2019-03-12  Antti Koivisto  <antti@apple.com>

        Compositing layer that renders two positioned elements should not hit test
        https://bugs.webkit.org/show_bug.cgi?id=195371
        <rdar://problem/48649586>

        Reviewed by Simon Fraser.

        * Shared/RemoteLayerTree/RemoteLayerTreePropertyApplier.mm:
        (WebKit::RemoteLayerTreePropertyApplier::applyProperties):
        * Shared/RemoteLayerTree/RemoteLayerTreeTransaction.h:
        * Shared/RemoteLayerTree/RemoteLayerTreeTransaction.mm:
        (WebKit::RemoteLayerTreeTransaction::LayerProperties::LayerProperties):
        (WebKit::RemoteLayerTreeTransaction::LayerProperties::encode const):
        (WebKit::RemoteLayerTreeTransaction::LayerProperties::decode):

        Pass event region to UI process.

        * UIProcess/RemoteLayerTree/RemoteLayerTreeNode.h:
        (WebKit::RemoteLayerTreeNode::layerID const):
        (WebKit::RemoteLayerTreeNode::eventRegion const):
        * UIProcess/RemoteLayerTree/RemoteLayerTreeNode.mm:
        (WebKit::RemoteLayerTreeNode::RemoteLayerTreeNode):
        (WebKit::RemoteLayerTreeNode::~RemoteLayerTreeNode):
        (WebKit::RemoteLayerTreeNode::setEventRegion):

        Maintain event region in RemoteLayerTreeNodes.

        (WebKit::RemoteLayerTreeNode::initializeLayer):
        (WebKit::RemoteLayerTreeNode::layerID):
        (WebKit::RemoteLayerTreeNode::forCALayer):

        Move layerID to RemoteLayerTreeNode and store RemoteLayerTreeNode pointer to CALayers instead.
        This makes it easy to find the matching RemoteLayerTreeNode from a layer, globally.

        (WebKit::RemoteLayerTreeNode::setLayerID): Deleted.
        * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeViews.mm:
        (WebKit::collectDescendantViewsAtPoint):

        If we have event region, use it for hit testing.

        (-[UIView _web_findDescendantViewAtPoint:withEvent:]):
        (collectDescendantViewsAtPoint): Deleted.
        * WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.cpp:
        (WebKit::PlatformCALayerRemote::eventRegion const):
        (WebKit::PlatformCALayerRemote::setEventRegion):
        * WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.h:

2019-03-12  Carlos Garcia Campos  <cgarcia@igalia.com>

        [WPE][GTK] Load events may occur in unexpected order when JS redirects page before subresource load finishes
        https://bugs.webkit.org/show_bug.cgi?id=194131

        Reviewed by Michael Catanzaro.

        Ensure we emit the load-failed and load-changed with finished event when there's still an ongoing load when a
        new provisional load strarts. Previous load fails with cancelled error.

        * UIProcess/API/glib/WebKitWebView.cpp:
        (webkitWebViewWillStartLoad): Call webkitWebViewLoadFailed() if current page load state is not finished.
        * UIProcess/API/glib/WebKitWebViewPrivate.h:
        * UIProcess/API/gtk/PageClientImpl.cpp:
        (WebKit::PageClientImpl::didStartProvisionalLoadForMainFrame): Call webkitWebViewWillStartLoad().
        * UIProcess/API/wpe/APIViewClient.h:
        (API::ViewClient::willStartLoad): Add willStartLoad() to API::ViewClient
        * UIProcess/API/wpe/PageClientImpl.cpp:
        (WebKit::PageClientImpl::didStartProvisionalLoadForMainFrame): Call WPEView::willStartLoad().
        * UIProcess/API/wpe/PageClientImpl.h:
        * UIProcess/API/wpe/WPEView.cpp:
        (WKWPE::View::willStartLoad): Call API::ViewClient::willStartLoad().
        * UIProcess/API/wpe/WPEView.h:
        * UIProcess/PageLoadState.h:
        (WebKit::PageLoadState::isProvisional const):
        (WebKit::PageLoadState::isCommitted const):
        (WebKit::PageLoadState::isFinished const):

2019-03-11  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r242763.

        Causes layout test crashes on iOS simulator

        Reverted changeset:

        "[Synthetic Click] Dispatch mouseout soon after mouseup"
        https://bugs.webkit.org/show_bug.cgi?id=195575
        https://trac.webkit.org/changeset/242763

2019-03-11  Ross Kirsling  <ross.kirsling@sony.com>

        Add Optional to Forward.h.
        https://bugs.webkit.org/show_bug.cgi?id=195586

        Reviewed by Darin Adler.

        * Shared/RTCNetwork.cpp:
        * Shared/RTCNetwork.h:
        * Shared/RTCPacketOptions.cpp:
        * Shared/RTCPacketOptions.h:
        * UIProcess/API/APIWebsitePolicies.h:
        * UIProcess/WebStorage/LocalStorageDatabaseTracker.h:
        Remove unnecessary includes from headers.

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

        Unreviewed, rolling out r242745 and r242756.
        https://bugs.webkit.org/show_bug.cgi?id=195606

        Breaks internal builds (Requested by ryanhaddad on #webkit).

        Reverted changesets:

        "[iOS] Block access to backboardd service"
        https://bugs.webkit.org/show_bug.cgi?id=195484
        https://trac.webkit.org/changeset/242745

        "Unreviewed build fix after r242745."
        https://trac.webkit.org/changeset/242756

2019-03-11  Fujii Hironori  <Hironori.Fujii@sony.com>

        [CoordinatedGraphics] ASSERTION FAILED: !m_state.isSuspended
        https://bugs.webkit.org/show_bug.cgi?id=195550

        Reviewed by Carlos Garcia Campos.

        CompositingRunLoop::suspend() locks a mutex and stops the update
        timer. But, the timer can be fired after the lock was acquired and
        before the timer is stopped.

        * Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.cpp:
        (WebKit::CompositingRunLoop::updateTimerFired): Removed the
        assertion. Return early if m_state.isSuspended.

2019-03-11  Per Arne Vollan  <pvollan@apple.com>

        [macOS] Remove the Kerberos rules from the WebContent sandbox
        https://bugs.webkit.org/show_bug.cgi?id=195464
        <rdar://problem/35369230>

        Reviewed by Brent Fulgham.

        Kerberos auth is done in the UIProcess or NetworkProcess now.

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

2019-03-11  Per Arne Vollan  <pvollan@apple.com>

        [iOS] Add entitlement to enable use of graphics endpoint with limited capabilities
        https://bugs.webkit.org/show_bug.cgi?id=195582
        <rdar://problem/36082379>

        Reviewed by Brent Fulgham.

        This is a QuartzCore endpoint with a minimal set of capabilities.

        * Configurations/WebContent-iOS.entitlements:

2019-03-11  John Wilander  <wilander@apple.com>

        Move NetworkProcess/Classifier/ResourceLoadStatisticsStoreCocoa.mm functionality into UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm
        https://bugs.webkit.org/show_bug.cgi?id=195117
        <rdar://problem/48448715>

        Reviewed by Brent Fulgham.

        Reading of user defaults on Cocoa platforms should be done in the UI process and
        forwarded to Resource Load Statistics in the network process through the
        WebKit::NetworkSessionCreationParameters struct.

        This patch does away with some old user defaults we don't use anymore. It also
        changes the developer-facing default name to ITPManualPrevalentResource.

        * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:
        (WebKit::ResourceLoadStatisticsDatabaseStore::ResourceLoadStatisticsDatabaseStore):
            Removed the call to the old registerUserDefaultsIfNeeded().
        * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp:
        (WebKit::ResourceLoadStatisticsMemoryStore::ResourceLoadStatisticsMemoryStore):
            Removed the call to the old registerUserDefaultsIfNeeded().
        * NetworkProcess/Classifier/ResourceLoadStatisticsStore.h:
            Removed the declaration of the old registerUserDefaultsIfNeeded().
        * NetworkProcess/Classifier/ResourceLoadStatisticsStoreCocoa.mm: Removed.
        * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h:
            Added an enum class EnableResourceLoadStatisticsDebugMode.
        * NetworkProcess/NetworkSession.cpp:
        (WebKit::NetworkSession::setResourceLoadStatisticsEnabled):
        * NetworkProcess/NetworkSession.h:
        * NetworkProcess/NetworkSessionCreationParameters.cpp:
        (WebKit::NetworkSessionCreationParameters::encode const):
        (WebKit::NetworkSessionCreationParameters::decode):
        * NetworkProcess/NetworkSessionCreationParameters.h:
           The struct now has two new fields:
           - enableResourceLoadStatisticsDebugMode
           - resourceLoadStatisticsManualPrevalentResource
        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (WebKit::NetworkSessionCocoa::NetworkSessionCocoa):
            Forwarding of the parameters.
        * SourcesCocoa.txt:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::ensureNetworkProcess):
            Forwarding of the parameters.
        * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:
        (WebKit::WebsiteDataStore::parameters):
            This is where user defaults for Resource Load Statistics are now read.
        * WebKit.xcodeproj/project.pbxproj:

2019-03-11  Zalan Bujtas  <zalan@apple.com>

        [Synthetic Click] Dispatch mouseout soon after mouseup
        https://bugs.webkit.org/show_bug.cgi?id=195575
        <rdar://problem/47093049>

        Reviewed by Simon Fraser.

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

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

        API test WebKit.RequestTextInputContext fails on iOS
        https://bugs.webkit.org/show_bug.cgi?id=195585

        Reviewed by Wenson Hsieh and Simon Fraser.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _convertRectFromRootViewCoordinates:]):
        (-[WKWebView _convertRectToRootViewCoordinates:]):
        (-[WKWebView _requestTextInputContextsInRect:completionHandler:]):
        (-[WKWebView _focusTextInputContext:completionHandler:]):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::elementRectInRootViewCoordinates):
        (WebKit::WebPage::textInputContextsInRect):
        (WebKit::elementRectInWindowCoordinates): Deleted.
        Text input context SPI should be in terms of WKWebView coordinates,
        for consistency's sake. This is a bit irritating; WebPage(Proxy) continue
        to operate in "root view" coordinates, which means different things
        depending on if delegatesScrolling is true or not. So, WKWebView does
        the conversion, re-creating objects as needed.

2019-03-09  Jiewen Tan  <jiewen_tan@apple.com>

        Optimizing loads when creating new pages
        https://bugs.webkit.org/show_bug.cgi?id=195516
        <rdar://problem/48738086>

        Reviewed by Darin Adler.

        This patch adds hooks in WebPageProxy::createNewPage to optimize loads, and moves the creationParameters
        of API::NavigationAction from UI clients to WebPageProxy::createNewPage. Also, we now pass the whole
        API::NavigationAction to the load optimizer instead of the request within.

        * UIProcess/API/APINavigationAction.h:
        * UIProcess/API/APIUIClient.h:
        (API::UIClient::createNewPage):
        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetPageUIClient):
        * UIProcess/API/glib/WebKitUIClient.cpp:
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::tryOptimizingLoad):
        (WebKit::tryInterceptNavigation):
        (WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction):
        * UIProcess/Cocoa/UIDelegate.h:
        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::UIDelegate::UIClient::createNewPage):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::decidePolicyForNavigationAction):
        (WebKit::tryOptimizingLoad):
        (WebKit::WebPageProxy::createNewPage):
        * UIProcess/WebPageProxy.h:

2019-03-11  Dean Jackson  <dino@apple.com>

        [iOS] Implement a faster click detection that intercepts double-tap-to-zoom if possible
        https://bugs.webkit.org/show_bug.cgi?id=195473
        <rdar://problem/48718396>

        Reviewed by Wenson Hsieh (with some help from Dan Bates).

        Adds a new algorithm, behind a flag FasterClicksEnabled, that can trigger a click
        event without waiting to see if a double tap will occur. It does this by examining
        the amount of zoom that would be triggered if it was a double tap, and if that value
        doesn't exceed a set threshold, commits to the click event instead.

        This is implemented by having the Web Process respond to the potential click with
        some geometry information. If the UI Process receives the information before the
        second tap in a double tap, it can decide to trigger a click.

        * Shared/WebPreferences.yaml: New internal feature so this can be toggled in
            a UI for testing.

        * SourcesCocoa.txt: Renamed WKSyntheticTapGestureRecognizer.
        * WebKit.xcodeproj/project.pbxproj: Ditto.

        * UIProcess/ios/WKSyntheticTapGestureRecognizer.h:
        * UIProcess/ios/WKSyntheticTapGestureRecognizer.m:
        (-[WKSyntheticTapGestureRecognizer setGestureIdentifiedTarget:action:]):
        (-[WKSyntheticTapGestureRecognizer setGestureFailedTarget:action:]):
        (-[WKSyntheticTapGestureRecognizer setResetTarget:action:]):
        (-[WKSyntheticTapGestureRecognizer setState:]):
        (-[WKSyntheticTapGestureRecognizer reset]):  Renamed WKSyntheticClickTapGestureRecognizer to
            WKSyntheticTapGestureRecognizer, changed the signature of the main function to be a bit
            more clear about what it does, and added a gesture failed target.

        * UIProcess/API/Cocoa/WKWebViewInternal.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _initialScaleFactor]):
        (-[WKWebView _contentZoomScale]):
        (-[WKWebView _targetContentZoomScaleForRect:currentScale:fitEntireRect:minimumScale:maximumScale:]):
            Exposed the initial content scale, the current scale and added a declaration that
            was missing from the .h.

        * UIProcess/WebPageProxy.messages.in: Add a new message,
            HandleSmartMagnificationInformationForPotentialTap, to
            communicate the geometry of the clicked node to the UI Process.

        * UIProcess/PageClient.h: Pure virtual function for the geometry message response.
        * UIProcess/WebPageProxy.h: Ditto.

        * UIProcess/ios/PageClientImplIOS.h: Calls into the WKContentView.
        * UIProcess/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::handleSmartMagnificationInformationForPotentialTap):

        * UIProcess/ios/SmartMagnificationController.h:
        * UIProcess/ios/SmartMagnificationController.mm:
        (WebKit::SmartMagnificationController::calculatePotentialZoomParameters): A new method that
            asks the WKContentView to work out what the zoom factor will be for a potential double
            tap at a location.
        (WebKit::SmartMagnificationController::smartMagnificationTargetRectAndZoomScales): New implementation
            of this function to avoid multiple out-arguments.

        * UIProcess/ios/WKContentView.h:
        * UIProcess/ios/WKContentView.mm:
        (-[WKContentView _initialScaleFactor]):
        (-[WKContentView _contentZoomScale]):
        (-[WKContentView _targetContentZoomScaleForRect:currentScale:fitEntireRect:minimumScale:maximumScale:]):
            Exposed the initial content scale, the current scale and the target zoom scale. These
            all just call into the WKWebView implementation.

        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _createAndConfigureDoubleTapGestureRecognizer]): Use a WKSyntheticTapGestureRecognizer instead
            of a generic one, so we can capture the failure.
        (-[WKContentView setupInteraction]):
        (-[WKContentView cleanupInteraction]):
        (-[WKContentView _handleSmartMagnificationInformationForPotentialTap:origin:renderRect:fitEntireRect:viewportMinimumScale:viewportMaximumScale:]):
            New method that responds to the incoming Web Process message, and decides if any
            potential zoom would be "significant".
        (-[WKContentView _singleTapIdentified:]):
        (-[WKContentView _doubleTapDidFail:]):
        (-[WKContentView _didCompleteSyntheticClick]):
        (-[WKContentView _singleTapRecognized:]):
        (-[WKContentView _doubleTapRecognized:]):
            Add some release logging.
        (-[WKContentView _singleTapCommited:]): Deleted.

        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::potentialTapAtPosition):
        (WebKit::WebPageProxy::handleSmartMagnificationInformationForPotentialTap):
        * WebProcess/WebPage/ViewGestureGeometryCollector.h:
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:
            Removed an unused parameter from the existing message.

        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::potentialTapAtPosition): Calculates the geometry of the element
        if requested, and sends it to the UIProcess.

2019-03-11  Per Arne Vollan  <pvollan@apple.com>

        Unreviewed build fix after r242745.

        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        (WebKit::WebProcessPool::registerNotificationObservers):
        (WebKit::WebProcessPool::unregisterNotificationObservers):

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

        Assert in WebPageProxy::suspendCurrentPageIfPossible()
        https://bugs.webkit.org/show_bug.cgi?id=195506
        <rdar://problem/48733477>

        Reviewed by Alex Christensen.

        The crash was caused by the top-hit preloading logic in MobileSafari which creates a new Web view that is *related*
        to the previous one, restores the session state onto it and then triggers a load in this new Web view.

        Initially, the 2 Web views use the same process as they are related. However, if the new load's URL is cross-site
        with regards to the first view's URL, then we decide to process swap in the new view. This process swap makes
        sense from a security standpoint. However, when we commit the load in the new process and call
        suspendCurrentPageIfPossible() we end up in an unexpected state because we have a fromItem (due to the session
        state having been restored on the new view) but we haven't committed any load yet in this new view.

        To address the issue, suspendCurrentPageIfPossible() now returns early and does not attempt to suspend anything
        if we have not committed any load yet.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::suspendCurrentPageIfPossible):
        Do not attempt to suspend to current page if we have not committed any provisional load yet.

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

        Update device orientation & motion permission native SPI as per latest proposal
        https://bugs.webkit.org/show_bug.cgi?id=195567

        Reviewed by Youenn Fablet.

        The native SPI is now:
        +- (void)_webView:(WKWebView *)webView shouldAllowDeviceOrientationAndMotionAccessRequestedByFrame:(WKFrameInfo *)frameInfo decisionHandler:(void (^)(BOOL))decisionHandler;

        * UIProcess/API/APIUIClient.h:
        (API::UIClient::shouldAllowDeviceOrientationAndMotionAccess):
        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetPageUIClient):
        * UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
        * UIProcess/Cocoa/UIDelegate.h:
        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::UIDelegate::setDelegate):
        (WebKit::UIDelegate::UIClient::shouldAllowDeviceOrientationAndMotionAccess):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::requestDeviceOrientationAndMotionAccess):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::shouldAllowDeviceOrientationAndMotionAccess):
        * WebProcess/WebCoreSupport/WebChromeClient.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::shouldAllowDeviceOrientationAndMotionAccess):
        * WebProcess/WebPage/WebPage.h:

2019-03-11  Andy Estes  <aestes@apple.com>

        [Apple Pay] Use PKPaymentAuthorizationController to present the Apple Pay UI remotely from the Networking service on iOS
        https://bugs.webkit.org/show_bug.cgi?id=195530
        <rdar://problem/48747164>

        Reviewed by Alex Christensen.

        * Configurations/Network-iOS.entitlements: Added the 'com.apple.payment.all-access'
        entitlement and reordered the others.

        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::didReceiveMessage): Forwarded
        WebPaymentCoordinatorProxy messages to the payment coordinator.
        (WebKit::NetworkConnectionToWebProcess::didReceiveSyncMessage): Ditto.
        (WebKit::NetworkConnectionToWebProcess::didClose): Set m_paymentCoordinator to nullptr.
        * NetworkProcess/NetworkConnectionToWebProcess.h: Inherited from
        WebPaymentCoordinatorProxy::Client and added a unique_ptr<WebPaymentCoordinatorProxy> member.

        * NetworkProcess/cocoa/NetworkSessionCocoa.h: Declared getters for source application bundle
        and secondary identifiers, and CTDataConnectionServiceType on iOS.
        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (WebKit::NetworkSessionCocoa::sourceApplicationBundleIdentifier const): Defined getter.
        (WebKit::NetworkSessionCocoa::sourceApplicationSecondaryIdentifier const): Ditto.
        (WebKit::NetworkSessionCocoa::ctDataConnectionServiceType const): Ditto.
        (WebKit::NetworkSessionCocoa::NetworkSessionCocoa): Initialized
        m_sourceApplicationBundleIdentifier and m_sourceApplicationSecondaryIdentifier with
        corresponding NetworkSessionCreationParameters.

        * NetworkProcess/ios/NetworkConnectionToWebProcessIOS.mm: Added.
        (WebKit::NetworkConnectionToWebProcess::paymentCoordinator): Added. Returns
        m_paymentCoordinator after lazily initializing it.
        (WebKit::NetworkConnectionToWebProcess::paymentCoordinatorConnection): Added. Returns the
        connection to the web process.
        (WebKit::NetworkConnectionToWebProcess::paymentCoordinatorPresentingViewController): Added.
        Returns nil.
        (WebKit::NetworkConnectionToWebProcess::paymentCoordinatorCTDataConnectionServiceType):
        Added. Returns the value from the network session identified by sessionID.
        (WebKit::NetworkConnectionToWebProcess::paymentCoordinatorSourceApplicationBundleIdentifier):
        Ditto.
        (WebKit::NetworkConnectionToWebProcess::paymentCoordinatorSourceApplicationSecondaryIdentifier):
        Ditto.
        (WebKit::NetworkConnectionToWebProcess::paymentCoordinatorAuthorizationPresenter): Added.
        Returns a new PaymentAuthorizationController.
        (WebKit::NetworkConnectionToWebProcess::paymentCoordinatorAddMessageReceiver): Added empty
        definition. NetworkConnectionToWebProcess explicitly forwards WebPaymentCoordinatorProxy
        messages to its payment coordinator, so there's no need to register with a MessageReceiverMap.
        (WebKit::NetworkConnectionToWebProcess::paymentCoordinatorRemoveMessageReceiver): Ditto.

        * Platform/ios/PaymentAuthorizationController.h: Added. Declares a
        PaymentAuthorizationPresenter subclass based on PKPaymentAuthorizationController.
        * Platform/ios/PaymentAuthorizationController.mm: Added.
        (-[WKPaymentAuthorizationControllerDelegate initWithRequest:presenter:]):
        Initialized WKPaymentAuthorizationDelegate with request and presenter.
        (-[WKPaymentAuthorizationControllerDelegate paymentAuthorizationControllerDidFinish:]):
        Forwarded call to WKPaymentAuthorizationDelegate.
        (-[WKPaymentAuthorizationControllerDelegate paymentAuthorizationController:didAuthorizePayment:handler:]):
        Ditto.
        (-[WKPaymentAuthorizationControllerDelegate paymentAuthorizationController:didSelectShippingMethod:handler:]):
        Ditto.
        (-[WKPaymentAuthorizationControllerDelegate paymentAuthorizationController:didSelectShippingContact:handler:]):
        Ditto.
        (-[WKPaymentAuthorizationControllerDelegate paymentAuthorizationController:didSelectPaymentMethod:handler:]):
        Ditto.
        (-[WKPaymentAuthorizationControllerDelegate paymentAuthorizationController:willFinishWithError:]):
        Ditto.
        (-[WKPaymentAuthorizationControllerDelegate paymentAuthorizationController:didRequestMerchantSession:]):
        Ditto.
        (WebKit::PaymentAuthorizationController::PaymentAuthorizationController):
        Initialized m_controller with a new PKPaymentAuthorizationController and m_delegate with a
        new WKPaymentAuthorizationControllerDelegate.
        (WebKit::PaymentAuthorizationController::platformDelegate): Returned m_delegate.
        (WebKit::PaymentAuthorizationController::dismiss): Dismissed the controller, set its
        delegates to nil, set m_controller to nil, invalidated the delegate, and set m_delegate to
        nil.
        (WebKit::PaymentAuthorizationController::present): Called -presentWithCompletion: on the
        controller, forwarding the passed-in completion handler.
        * Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb: Allowed PassKit to look up
        the "com.apple.passd.in-app-payment" and "com.apple.passd.library" service endpoints.

        * Shared/ApplePay/WebPaymentCoordinatorProxy.cpp:
        (WebKit::WebPaymentCoordinatorProxy::WebPaymentCoordinatorProxy): Changed to call
        paymentCoordinatorAddMessageReceiver.
        (WebKit::WebPaymentCoordinatorProxy::~WebPaymentCoordinatorProxy): Changed to call
        paymentCoordinatorRemoveMessageReceiver.
        (WebKit::WebPaymentCoordinatorProxy::messageSenderDestinationID const): Deleted.
        (WebKit::WebPaymentCoordinatorProxy::canMakePaymentsWithActiveCard): Passed sessionID to
        platformCanMakePaymentsWithActiveCard.
        (WebKit::WebPaymentCoordinatorProxy::showPaymentUI): Stored destinationID and passed
        sessionID to platformShowPaymentUI.
        (WebKit::WebPaymentCoordinatorProxy::cancelPaymentSession): Changed to account for new
        behavior of didCancelPaymentSession.
        (WebKit::WebPaymentCoordinatorProxy::didCancelPaymentSession): Changed to call hidePaymentUI.
        (WebKit::WebPaymentCoordinatorProxy::presenterDidFinish): Changed to only call hidePaymentUI
        when didReachFinalState is true, since didCancelPaymentSession is called otherwise.
        (WebKit::WebPaymentCoordinatorProxy::didReachFinalState): Cleared m_destinationID.
        * Shared/ApplePay/WebPaymentCoordinatorProxy.h: Added m_destionationID member.
        * Shared/ApplePay/WebPaymentCoordinatorProxy.messages.in: Changed
        CanMakePaymentsWithActiveCard and ShowPaymentUI messages to take destinationID and sessionID
        arguments.

        * Shared/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
        (WebKit::WebPaymentCoordinatorProxy::platformCanMakePaymentsWithActiveCard): Passed
        sessionID to paymentCoordinatorSourceApplicationSecondaryIdentifier.
        (WebKit::WebPaymentCoordinatorProxy::platformPaymentRequest): Passed sessionID to various
        m_client call sites.

        * Shared/ApplePay/ios/WebPaymentCoordinatorProxyIOS.mm:
        (WebKit::WebPaymentCoordinatorProxy::platformShowPaymentUI): Passed sessionID to
        platformPaymentRequest.
        (WebKit::WebPaymentCoordinatorProxy::hidePaymentUI): Null-checked m_authorizationPresenter
        before calling dismiss.

        * Shared/ApplePay/mac/WebPaymentCoordinatorProxyMac.mm:
        (WebKit::WebPaymentCoordinatorProxy::platformShowPaymentUI): Passed sessionID to
        platformPaymentRequest.
        (WebKit::WebPaymentCoordinatorProxy::hidePaymentUI): Null-checked m_authorizationPresenter
        before calling dismiss.

        * Shared/WebPreferences.yaml: Added ApplePayRemoteUIEnabled as an internal preference.

        * SourcesCocoa.txt: Added NetworkConnectionToWebProcessIOS.mm and
        PaymentAuthorizationController.mm.

        * UIProcess/AuxiliaryProcessProxy.h:
        (WebKit::AuxiliaryProcessProxy::messageReceiverMap): Deleted.

        * UIProcess/Cocoa/WebPageProxyCocoa.mm:
        (WebKit::WebPageProxy::paymentCoordinatorConnection): Moved from WebPageProxy.cpp.
        (WebKit::WebPageProxy::paymentCoordinatorSourceApplicationBundleIdentifier): Ditto.
        (WebKit::WebPageProxy::paymentCoordinatorSourceApplicationSecondaryIdentifier): Ditto.
        (WebKit::WebPageProxy::paymentCoordinatorAddMessageReceiver): Ditto.
        (WebKit::WebPageProxy::paymentCoordinatorRemoveMessageReceiver): Ditto.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::paymentCoordinatorConnection): Moved to WebPageProxyCocoa.mm.
        (WebKit::WebPageProxy::paymentCoordinatorMessageReceiver): Ditto.
        (WebKit::WebPageProxy::paymentCoordinatorSourceApplicationBundleIdentifier): Ditto.
        (WebKit::WebPageProxy::paymentCoordinatorSourceApplicationSecondaryIdentifier): Ditto.
        (WebKit::WebPageProxy::paymentCoordinatorDestinationID): Ditto.
        * UIProcess/WebPageProxy.h:

        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::paymentCoordinatorCTDataConnectionServiceType): Asserted that
        sessionID equals the website data store's sessionID.

        * WebKit.xcodeproj/project.pbxproj:

        * WebProcess/ApplePay/WebPaymentCoordinator.cpp:
        (WebKit::WebPaymentCoordinator::networkProcessConnectionClosed): Added. Cancels the current
        session if Apple Pay Remote UI is enabled and the network process connection closes.
        (WebKit::WebPaymentCoordinator::availablePaymentNetworks): Changed to account for
        WebPaymentCoordinator being an IPC::MessageSender.
        (WebKit::WebPaymentCoordinator::canMakePayments): Ditto.
        (WebKit::WebPaymentCoordinator::canMakePaymentsWithActiveCard): Ditto.
        (WebKit::WebPaymentCoordinator::openPaymentSetup): Ditto.
        (WebKit::WebPaymentCoordinator::showPaymentUI): Ditto.
        (WebKit::WebPaymentCoordinator::completeMerchantValidation): Ditto.
        (WebKit::WebPaymentCoordinator::completeShippingMethodSelection): Ditto.
        (WebKit::WebPaymentCoordinator::completeShippingContactSelection): Ditto.
        (WebKit::WebPaymentCoordinator::completePaymentMethodSelection): Ditto.
        (WebKit::WebPaymentCoordinator::completePaymentSession): Ditto.
        (WebKit::WebPaymentCoordinator::abortPaymentSession): Ditto.
        (WebKit::WebPaymentCoordinator::cancelPaymentSession): Ditto.
        (WebKit::WebPaymentCoordinator::messageSenderConnection const): Added. Returns a connection
        to the network process if Apple Pay Remote UI is enabled. Otherwise, returned the web
        process's parent connection.
        (WebKit::WebPaymentCoordinator::messageSenderDestinationID const): Added. Returns the web
        page's ID.
        (WebKit::WebPaymentCoordinator::remoteUIEnabled const): Added. Calls Settings::applePayRemoteUIEnabled.
        * WebProcess/ApplePay/WebPaymentCoordinator.h: Inherited from IPC::MessageSender.

        * WebProcess/Network/NetworkProcessConnection.cpp:
        (WebKit::NetworkProcessConnection::didReceiveMessage): Forwarded WebPaymentCoordinator
        messages to the payment coordinator of the web page matching the decoder's destination ID.
        (WebKit::NetworkProcessConnection::didReceiveSyncMessage): Ditto for sync messages.

        * WebProcess/WebPage/Cocoa/WebPageCocoa.mm:
        (WebKit::WebPage::paymentCoordinator): Added a payment coordinator getter.
        * WebProcess/WebPage/WebPage.h: Ditto.

        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::networkProcessConnectionClosed): Called
        WebPaymentCoordinator::networkProcessConnectionClosed when the network process connection
        closes.

2019-03-11  Per Arne Vollan  <pvollan@apple.com>

        [iOS] Block access to backboardd service
        https://bugs.webkit.org/show_bug.cgi?id=195484

        Reviewed by Brent Fulgham.

        This patch is addressing blocking the backboardd service "com.apple.backboard.hid.services". Getting the
        backlight level in the WebContent process will initiate a connection with this service. To be able to
        block the service, the backlight level is queried in the UI process and sent to the WebContent process
        when the WebContent process is started, and when the backlight level is changed. On the WebContent side,
        the method getting the backlight level is swizzled to return the value sent from the UI process.

        * Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        (WebKit::WebProcessPool::displayBrightness):
        (WebKit::WebProcessPool::backlightLevelDidChangeCallback):
        (WebKit::WebProcessPool::registerNotificationObservers):
        (WebKit::WebProcessPool::unregisterNotificationObservers):
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::initializeNewWebProcess):
        * UIProcess/WebProcessPool.h:
        * WebProcess/WebProcess.h:
        * WebProcess/WebProcess.messages.in:
        * WebProcess/cocoa/WebProcessCocoa.mm:
        (WebKit::currentBacklightLevel):
        (WebKit::WebProcess::backlightLevelDidChange):

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

        Remove obsolete runtime flag for StorageAccess API Prompt
        https://bugs.webkit.org/show_bug.cgi?id=195564
        <rdar://problem/37279014>

        Reviewed by Chris Dumez.

        This bug tracks the work of removing the obsolete flag that had been used to optionally
        prevent display of the StorageAccess API prompt. We have since shipped the final version
        of this feature with an always-on prompt, and should have removed this runtime flag.

        No test changes because this has no change in behavior. Tests already assume the prompt
        behavior, and did not test turning the flag off.

        * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:
        (WebKit::ResourceLoadStatisticsDatabaseStore::requestStorageAccess):
        (WebKit::ResourceLoadStatisticsDatabaseStore::grantStorageAccessInternal):
        * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h:
        * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp:
        (WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccess):
        (WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccessInternal):
        * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.h:
        * NetworkProcess/Classifier/ResourceLoadStatisticsStore.h:
        (WebKit::ResourceLoadStatisticsStore::debugModeEnabled const):
        (WebKit::ResourceLoadStatisticsStore::storageAccessPromptsEnabled const): Deleted.
        (WebKit::ResourceLoadStatisticsStore::setStorageAccessPromptsEnabled): Deleted.
        * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::requestStorageAccessGranted):
        (WebKit::WebResourceLoadStatisticsStore::requestStorageAccess):
        * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h:
        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::requestStorageAccess):
        * NetworkProcess/NetworkConnectionToWebProcess.h:
        * NetworkProcess/NetworkConnectionToWebProcess.messages.in:
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::requestStorageAccess):
        (WebKit::NetworkProcess::requestStorageAccessGranted):
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:
        * Shared/WebPreferences.yaml:
        * UIProcess/API/C/WKPreferences.cpp:
        (WKPreferencesSetStorageAccessPromptsEnabled): Deleted.
        (WKPreferencesGetStorageAccessPromptsEnabled): Deleted.
        * UIProcess/API/C/WKPreferencesRef.h:
        * UIProcess/API/Cocoa/WKPreferences.mm:
        (-[WKPreferences _storageAccessPromptsEnabled]): Deleted.
        (-[WKPreferences _setStorageAccessPromptsEnabled:]): Deleted.
        * UIProcess/API/Cocoa/WKPreferencesPrivate.h:
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::requestStorageAccess):
        * UIProcess/Network/NetworkProcessProxy.h:
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::requestStorageAccess):
        * UIProcess/WebsiteData/WebsiteDataStore.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::requestStorageAccess):

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

        Add a WKContentRuleList variant that uses copied memory instead of mmap'd shared memory for class A containerized apps
        https://bugs.webkit.org/show_bug.cgi?id=195511
        <rdar://problem/44873269>

        Reviewed by Darin Adler.

        * NetworkProcess/NetworkContentRuleListManager.cpp:
        (WebKit::NetworkContentRuleListManager::addContentRuleLists):
        * NetworkProcess/NetworkContentRuleListManager.h:
        * NetworkProcess/cache/NetworkCacheFileSystem.cpp:
        (WebKit::NetworkCache::pathRegisteredAsUnsafeToMemoryMapForTesting):
        (WebKit::NetworkCache::registerPathAsUnsafeToMemoryMapForTesting):
        (WebKit::NetworkCache::isSafeToUseMemoryMapForPath):
        * NetworkProcess/cache/NetworkCacheFileSystem.h:
        * Shared/WebCompiledContentRuleList.cpp:
        (WebKit::WebCompiledContentRuleList::usesCopiedMemory const):
        (WebKit::WebCompiledContentRuleList::conditionsApplyOnlyToDomain const):
        (WebKit::WebCompiledContentRuleList::filtersWithoutConditionsBytecode const):
        (WebKit::WebCompiledContentRuleList::filtersWithConditionsBytecode const):
        (WebKit::WebCompiledContentRuleList::topURLFiltersBytecode const):
        (WebKit::WebCompiledContentRuleList::actions const):
        * Shared/WebCompiledContentRuleList.h:
        * Shared/WebCompiledContentRuleListData.cpp:
        (WebKit::WebCompiledContentRuleListData::size const):
        (WebKit::WebCompiledContentRuleListData::dataPointer const):
        (WebKit::WebCompiledContentRuleListData::encode const):
        (WebKit::WebCompiledContentRuleListData::decode):
        * Shared/WebCompiledContentRuleListData.h:
        (WebKit::WebCompiledContentRuleListData::WebCompiledContentRuleListData):
        * UIProcess/API/APIContentRuleList.cpp:
        (API::ContentRuleList::usesCopiedMemory const):
        * UIProcess/API/APIContentRuleList.h:
        * UIProcess/API/APIContentRuleListStore.cpp:
        (API::getData):
        (API::decodeContentRuleListMetaData):
        (API::ContentRuleListStore::readContentsOfFile):
        (API::MappedOrCopiedData::dataPointer const):
        (API::openAndMapOrCopyContentRuleList):
        (API::compiledToFile):
        (API::createExtension):
        (API::ContentRuleListStore::lookupContentRuleList):
        (API::ContentRuleListStore::compileContentRuleList):
        (API::ContentRuleListStore::getContentRuleListSource):
        (API::openAndMapContentRuleList): Deleted.
        * UIProcess/API/APIContentRuleListStore.h:
        * UIProcess/API/Cocoa/APIContentRuleListStoreCocoa.mm:
        (API::ContentRuleListStore::readContentsOfFile):
        * UIProcess/API/Cocoa/WKContentRuleListStore.mm:
        (+[WKContentRuleListStore _registerPathAsUnsafeToMemoryMapForTesting:]):
        * UIProcess/API/Cocoa/WKContentRuleListStorePrivate.h:
        * UIProcess/API/Cocoa/_WKUserContentFilter.mm:
        (-[_WKUserContentFilter usesCopiedMemory]):
        * UIProcess/API/Cocoa/_WKUserContentFilterPrivate.h:
        * WebProcess/UserContent/WebUserContentController.cpp:
        (WebKit::WebUserContentController::addContentRuleLists):
        * WebProcess/UserContent/WebUserContentController.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::m_hostFileDescriptor):

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

        Unreviewed, fix assertions in layout tests on iOS Simulator after r242666.

        Log an error but do not crash if we fail to acquire a ProcessAssertion.

        * UIProcess/ios/ProcessAssertionIOS.mm:
        (WebKit::ProcessAssertion::ProcessAssertion):

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

        WebProcessCache should keep track of processes being added
        https://bugs.webkit.org/show_bug.cgi?id=195538

        Reviewed by Geoffrey Garen.

        WebProcessCache should keep track of processes being added, while they are being
        checked for responsiveness. This is useful so that:
        - Requests to clear the cache also clear processes being added
        - Requests to remove a given process from the cache (either because it crashed
          or because it is being used for a history navigation) actually remove the
          process if it is still being checked for responsiveness.
        - The cached process eviction timer applies to such processes in case something
          goes wrong with the code and the pending request does not get processed.

        * UIProcess/WebProcessCache.cpp:
        (WebKit::generateAddRequestIdentifier):
        (WebKit::WebProcessCache::addProcessIfPossible):
        (WebKit::WebProcessCache::addProcess):
        (WebKit::WebProcessCache::clear):
        (WebKit::WebProcessCache::clearAllProcessesForSession):
        (WebKit::WebProcessCache::removeProcess):
        (WebKit::WebProcessCache::CachedProcess::evictionTimerFired):
        (WebKit::WebProcessCache::evictProcess): Deleted.
        * UIProcess/WebProcessCache.h:
        (WebKit::WebProcessCache::size const):
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::processForNavigationInternal):
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::processDidTerminateOrFailedToLaunch):

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

        REGRESSION: ( r240978-r240985 ) [ iOS Release ] Layout Test imported/w3c/web-platform-tests/xhr/send-redirect-post-upload.htm is crashing
        https://bugs.webkit.org/show_bug.cgi?id=194523

        Reviewed by Alexey Proskuryakov.

        Attempt another workaround to prevent crashes.

        * NetworkProcess/cocoa/NetworkDataTaskCocoa.h:
        * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
        (WebKit::NetworkDataTaskCocoa::~NetworkDataTaskCocoa):
        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (-[WKNetworkSessionDelegate URLSession:task:needNewBodyStream:]):

2019-03-11  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r242688, r242643, r242624.

        Caused multiple layout test failures and crashes on iOS and macOS.

        Reverted changeset:

        "requestAnimationFrame should execute before the next frame"
        https://bugs.webkit.org/show_bug.cgi?id=177484
        https://trac.webkit.org/changeset/242624/webkit

        * WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp:
        (WebKit::DrawingAreaCoordinatedGraphics::scheduleCompositingLayerFlush):
        (WebKit::DrawingAreaCoordinatedGraphics::updateBackingStoreState):
        (WebKit::DrawingAreaCoordinatedGraphics::display):
        * WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.cpp:
        (WebKit::LayerTreeHost::layerFlushTimerFired):
        * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm:
        (WebKit::RemoteLayerTreeDrawingArea::flushLayers):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::layoutIfNeeded):
        (WebKit::WebPage::willDisplayPage):
        (WebKit::WebPage::renderingUpdate): Deleted.
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
        (WebKit::TiledCoreAnimationDrawingArea::flushLayers):

2019-03-11  Darin Adler  <darin@apple.com>

        Specify fixed precision explicitly to prepare to change String::number and StringBuilder::appendNumber floating point behavior
        https://bugs.webkit.org/show_bug.cgi?id=195533

        Reviewed by Brent Fulgham.

        * NetworkProcess/cache/NetworkCache.cpp:
        (WebKit::NetworkCache::Cache::dumpContentsToFile): Use appendFixedPrecisionNumber.
        * NetworkProcess/cache/NetworkCacheEntry.cpp:
        (WebKit::NetworkCache::Entry::asJSON const): Ditto.
        * Shared/Gamepad/GamepadData.cpp:
        (WebKit::GamepadData::loggingString const): Ditto.
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::logDiagnosticMessageWithValue): Use numberToStringFixedPrecision.

2019-03-11  John Wilander  <wilander@apple.com>

        Resource Load Statistics: Make it possible exclude localhost from classification
        https://bugs.webkit.org/show_bug.cgi?id=195474
        <rdar://problem/47520577>

        Reviewed by Brent Fulgham.

        This patch allows for localhost to be excluded from classification and
        treatment as a prevalent resource.

        * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:
        (WebKit::ResourceLoadStatisticsDatabaseStore::ResourceLoadStatisticsDatabaseStore):
        (WebKit::ResourceLoadStatisticsDatabaseStore::reclassifyResources):
            Makes use of the new ResourceLoadStatisticsMemoryStore::shouldSkip().
        (WebKit::ResourceLoadStatisticsDatabaseStore::setPrevalentResource):
            Makes use of the new ResourceLoadStatisticsMemoryStore::shouldSkip().
        (WebKit::ResourceLoadStatisticsDatabaseStore::isPrevalentResource const):
            Makes use of the new ResourceLoadStatisticsMemoryStore::shouldSkip().
        (WebKit::ResourceLoadStatisticsDatabaseStore::isVeryPrevalentResource const):
            Makes use of the new ResourceLoadStatisticsMemoryStore::shouldSkip().
        (WebKit::ResourceLoadStatisticsDatabaseStore::setVeryPrevalentResource):
            Makes use of the new ResourceLoadStatisticsMemoryStore::shouldSkip().
        * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h:
        * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp:
        (WebKit::ResourceLoadStatisticsMemoryStore::ResourceLoadStatisticsMemoryStore):
        (WebKit::ResourceLoadStatisticsMemoryStore::classifyPrevalentResources):
            Makes use of the new ResourceLoadStatisticsMemoryStore::shouldSkip().
        (WebKit::ResourceLoadStatisticsMemoryStore::setPrevalentResource):
            Makes use of the new ResourceLoadStatisticsMemoryStore::shouldSkip().
        (WebKit::ResourceLoadStatisticsMemoryStore::isPrevalentResource const):
            Makes use of the new ResourceLoadStatisticsMemoryStore::shouldSkip().
        (WebKit::ResourceLoadStatisticsMemoryStore::isVeryPrevalentResource const):
            Makes use of the new ResourceLoadStatisticsMemoryStore::shouldSkip().
        (WebKit::ResourceLoadStatisticsMemoryStore::setVeryPrevalentResource):
            Makes use of the new ResourceLoadStatisticsMemoryStore::shouldSkip().
        * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.h:
        * NetworkProcess/Classifier/ResourceLoadStatisticsStore.cpp:
        (WebKit::ResourceLoadStatisticsStore::ResourceLoadStatisticsStore):
            Now takes a ShouldIncludeLocalhost parameter.
        (WebKit::ResourceLoadStatisticsStore::shouldSkip const):
            Convenience function, currently supporting the localhost exclusion.
        (WebKit::ResourceLoadStatisticsStore::setIsRunningTest):
            Test infrastructure.
        * NetworkProcess/Classifier/ResourceLoadStatisticsStore.h:
        * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::setIsRunningTest):
            Test infrastructure.
        (WebKit::WebResourceLoadStatisticsStore::WebResourceLoadStatisticsStore):
            Now takes a ShouldIncludeLocalhost parameter.
        * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h:
            Defines the new ShouldIncludeLocalhost boolean enum.
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::setIsRunningResourceLoadStatisticsTest):
            Test infrastructure.
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:
        * NetworkProcess/NetworkSession.cpp:
        (WebKit::NetworkSession::setResourceLoadStatisticsEnabled):
            Forwards the localhost setting to the create function.
        * NetworkProcess/NetworkSession.h:
        * NetworkProcess/NetworkSessionCreationParameters.cpp:
        (WebKit::NetworkSessionCreationParameters::encode const):
        (WebKit::NetworkSessionCreationParameters::decode):
        * NetworkProcess/NetworkSessionCreationParameters.h:
            New parameter called shouldIncludeLocalhostInResourceLoadStatistics.
        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (WebKit::NetworkSessionCocoa::NetworkSessionCocoa):
            Picks up the localhost setting from the parameters.
        * UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
        (WKWebsiteDataStoreSetStatisticsIsRunningTest):
            Test infrastructure.
        * UIProcess/API/C/WKWebsiteDataStoreRef.h:
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::setIsRunningResourceLoadStatisticsTest):
            Test infrastructure.
        * UIProcess/Network/NetworkProcessProxy.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::ensureNetworkProcess):
            Picks up the localhost setting from the WebsiteDataStore parameters.
        * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:
        (WebKit::WebsiteDataStore::parameters):
            Makes sure Safari does not exclude localhost.
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::setIsRunningResourceLoadStatisticsTest):
            Test infrastructure.
        * UIProcess/WebsiteData/WebsiteDataStore.h:

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

        Unreviewed, rolling out r242698.

        API test crashes on bots.

        Reverted changeset:

        "Add a WKContentRuleList variant that uses copied memory
        instead of mmap'd shared memory for class A containerized
        apps"
        https://bugs.webkit.org/show_bug.cgi?id=195511
        https://trac.webkit.org/changeset/242698

2019-03-11  Michael Catanzaro  <mcatanzaro@igalia.com>

        [WPE] Enable web process sandbox
        https://bugs.webkit.org/show_bug.cgi?id=195169

        Reviewed by Daniel Bates.

        * PlatformWPE.cmake:
        * UIProcess/Launcher/glib/BubblewrapLauncher.cpp:
        (WebKit::bubblewrapSpawn):

2019-03-11  Truitt Savell  <tsavell@apple.com>

        Unreviewed, rolling out r242697.

        Broke internal builders.

        Reverted changeset:

        "Optimizing loads when creating new pages"
        https://bugs.webkit.org/show_bug.cgi?id=195516
        https://trac.webkit.org/changeset/242697

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

        Add a WKContentRuleList variant that uses copied memory instead of mmap'd shared memory for class A containerized apps
        https://bugs.webkit.org/show_bug.cgi?id=195511
        <rdar://problem/44873269>

        Reviewed by Darin Adler.

        * NetworkProcess/NetworkContentRuleListManager.cpp:
        (WebKit::NetworkContentRuleListManager::addContentRuleLists):
        * NetworkProcess/NetworkContentRuleListManager.h:
        * NetworkProcess/cache/NetworkCacheFileSystem.cpp:
        (WebKit::NetworkCache::pathRegisteredAsUnsafeToMemoryMapForTesting):
        (WebKit::NetworkCache::registerPathAsUnsafeToMemoryMapForTesting):
        (WebKit::NetworkCache::isSafeToUseMemoryMapForPath):
        * NetworkProcess/cache/NetworkCacheFileSystem.h:
        * Shared/WebCompiledContentRuleList.cpp:
        (WebKit::WebCompiledContentRuleList::usesCopiedMemory const):
        (WebKit::WebCompiledContentRuleList::conditionsApplyOnlyToDomain const):
        (WebKit::WebCompiledContentRuleList::filtersWithoutConditionsBytecode const):
        (WebKit::WebCompiledContentRuleList::filtersWithConditionsBytecode const):
        (WebKit::WebCompiledContentRuleList::topURLFiltersBytecode const):
        (WebKit::WebCompiledContentRuleList::actions const):
        * Shared/WebCompiledContentRuleList.h:
        * Shared/WebCompiledContentRuleListData.cpp:
        (WebKit::WebCompiledContentRuleListData::size const):
        (WebKit::WebCompiledContentRuleListData::dataPointer const):
        (WebKit::WebCompiledContentRuleListData::encode const):
        (WebKit::WebCompiledContentRuleListData::decode):
        * Shared/WebCompiledContentRuleListData.h:
        (WebKit::WebCompiledContentRuleListData::WebCompiledContentRuleListData):
        * UIProcess/API/APIContentRuleList.cpp:
        (API::ContentRuleList::usesCopiedMemory const):
        * UIProcess/API/APIContentRuleList.h:
        * UIProcess/API/APIContentRuleListStore.cpp:
        (API::getData):
        (API::decodeContentRuleListMetaData):
        (API::ContentRuleListStore::readContentsOfFile):
        (API::MappedOrCopiedData::dataPointer const):
        (API::openAndMapOrCopyContentRuleList):
        (API::compiledToFile):
        (API::createExtension):
        (API::ContentRuleListStore::lookupContentRuleList):
        (API::ContentRuleListStore::compileContentRuleList):
        (API::ContentRuleListStore::getContentRuleListSource):
        (API::openAndMapContentRuleList): Deleted.
        * UIProcess/API/APIContentRuleListStore.h:
        * UIProcess/API/Cocoa/APIContentRuleListStoreCocoa.mm:
        (API::ContentRuleListStore::readContentsOfFile):
        * UIProcess/API/Cocoa/WKContentRuleListStore.mm:
        (+[WKContentRuleListStore _registerPathAsUnsafeToMemoryMapForTesting:]):
        * UIProcess/API/Cocoa/WKContentRuleListStorePrivate.h:
        * UIProcess/API/Cocoa/_WKUserContentFilter.mm:
        (-[_WKUserContentFilter usesCopiedMemory]):
        * UIProcess/API/Cocoa/_WKUserContentFilterPrivate.h:
        * WebProcess/UserContent/WebUserContentController.cpp:
        (WebKit::WebUserContentController::addContentRuleLists):
        * WebProcess/UserContent/WebUserContentController.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::m_hostFileDescriptor):

2019-03-10  Jiewen Tan  <jiewen_tan@apple.com>

        Optimizing loads when creating new pages
        https://bugs.webkit.org/show_bug.cgi?id=195516
        <rdar://problem/48738086>

        Reviewed by Darin Adler.

        This patch adds hooks in WebPageProxy::createNewPage to optimize loads, and moves the creationParameters
        of API::NavigationAction from UI clients to WebPageProxy::createNewPage. Also, we now pass the whole
        API::NavigationAction to the load optimizer instead of the request within.

        * UIProcess/API/APINavigationAction.h:
        * UIProcess/API/APIUIClient.h:
        (API::UIClient::createNewPage):
        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetPageUIClient):
        * UIProcess/API/glib/WebKitUIClient.cpp:
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::tryOptimizingLoad):
        (WebKit::tryInterceptNavigation):
        (WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction):
        * UIProcess/Cocoa/UIDelegate.h:
        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::UIDelegate::UIClient::createNewPage):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::decidePolicyForNavigationAction):
        (WebKit::tryOptimizingLoad):
        (WebKit::WebPageProxy::createNewPage):
        * UIProcess/WebPageProxy.h:

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

        Add SPI to retrieve the set of text inputs in a given rect, and later focus one
        https://bugs.webkit.org/show_bug.cgi?id=195499

        Reviewed by Darin Adler.

        * Scripts/webkit/messages.py:
        * Shared/TextInputContext.cpp: Added.
        (IPC::ArgumentCoder<WebKit::TextInputContext>::encode):
        (IPC::ArgumentCoder<WebKit::TextInputContext>::decode):
        * Shared/TextInputContext.h: Added.
        (WebKit::TextInputContext::operator== const):
        Add TextInputContext, which represents a minimal set of information
        about a text field.

        * Sources.txt:
        * SourcesCocoa.txt:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _requestTextInputContextsInRect:completionHandler:]):
        (-[WKWebView _focusTextInputContext:completionHandler:]):
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        Add SPI that allows clients to asynchronously request text input
        contexts for a given rect, and later focus a given context.

        * UIProcess/API/Cocoa/_WKTextInputContext.h: Added.
        * UIProcess/API/Cocoa/_WKTextInputContext.mm: Added.
        (-[_WKTextInputContext _initWithTextInputContext:]):
        (-[_WKTextInputContext boundingRect]):
        (-[_WKTextInputContext _textInputContext]):
        (-[_WKTextInputContext isEqual:]):
        (-[_WKTextInputContext hash]):
        (-[_WKTextInputContext copyWithZone:]):
        * UIProcess/API/Cocoa/_WKTextInputContextInternal.h: Added.
        Add an SPI object that exposes a read-only window on a TextInputContext to clients.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::textInputContextsInRect):
        (WebKit::WebPageProxy::focusTextInputContext):
        * UIProcess/WebPageProxy.h:
        Plumbing from WKWebView<->WebPage.

        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::elementRectInWindowCoordinates):
        (WebKit::isEditableTextInputElement):
        (WebKit::WebPage::textInputContextsInRect):
        Search the DOM for text input contexts: <input type='text'> (or other
        form fields that fall back on text field behavior), <textarea>, and
        contenteditable roots. Store the WebPage, Document, and Element identifiers
        so that we can find the element again later.

        (WebKit::WebPage::focusTextInputContext):
        Find the element for a given (web page, document, element) triple and focus it,
        if it's still available.

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

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

        iOS: Using ⌥ to scroll horizontally is no different than arrow key
        https://bugs.webkit.org/show_bug.cgi?id=195268
        <rdar://problem/48326682>

        Reviewed by Brent Fulgham.

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView keyboardScrollViewAnimator:distanceForIncrement:inDirection:]):
        (-[WKContentView keyboardScrollViewAnimator:distanceForIncrement:]): Deleted.
        * UIProcess/ios/WKKeyboardScrollingAnimator.h:
        * UIProcess/ios/WKKeyboardScrollingAnimator.mm:
        (-[WKKeyboardScrollingAnimator keyboardScrollForEvent:]):
        (-[WKKeyboardScrollViewAnimator setDelegate:]):
        (-[WKKeyboardScrollViewAnimator distanceForIncrement:inDirection:]):
        (-[WKKeyboardScrollViewAnimator distanceForIncrement:]): Deleted.
        Add a direction parameter to -distanceForIncrement:, so the client
        can return a different page/document size based on the scrolling axis.
        Adopt it both in the default implementation and in WKContentViewInteraction.
        Make the option key scroll by page when scrolling horizontally, like it
        does when scrolling vertically.

2019-03-10  David Quesada  <david_quesada@apple.com>

        ASSERT(m_downloads.isEmpty()) fails in DownloadProxyMap::~DownloadProxyMap()
        https://bugs.webkit.org/show_bug.cgi?id=152480

        Reviewed by Chris Dumez.

        * UIProcess/Downloads/DownloadProxyMap.cpp:
        (WebKit::DownloadProxyMap::downloadFinished):
            If the DownloadProxy is holding the last reference to the process pool, then
            invalidating the proxy will cause the process pool, the network process proxy,
            and this DownloadProxyMap to deallocate. Ensure that doesn't happen until this
            method has done everything it wants to do to clean up.

2019-03-10  Wenson Hsieh  <wenson_hsieh@apple.com>

        Fix some misleading function and variable names in WKContentViewInteraction.mm
        https://bugs.webkit.org/show_bug.cgi?id=195536

        Reviewed by Tim Horton.

        * UIProcess/ios/WKContentViewInteraction.mm:
        (shouldDeferZoomingToSelectionWhenRevealingFocusedElement):

        Rename shouldZoomToRevealSelectionRect to shouldDeferZoomingToSelectionWhenRevealingFocusedElement; this
        function is used to determine whether we should zoom to the selection rect when revealing the focused element,
        and therefore affects whether we need to defer zooming until we get selection information.

        (rectToRevealWhenZoomingToFocusedElement):
        (-[WKContentView _elementDidFocus:userIsInteracting:blurPreviousNode:changingActivityState:userObject:]):

        Rename shouldShowKeyboard to shouldShowInputView; this boolean indicates whether we should show not only the
        keyboard, but other UI for user input such as date and select pickers.

        (-[WKContentView _didReceiveEditorStateUpdateAfterFocus]):
        (shouldZoomToRevealSelectionRect): Deleted.

2019-03-10  Simon Fraser  <simon.fraser@apple.com>

        ScrollingTree should have the final say on where layers go
        https://bugs.webkit.org/show_bug.cgi?id=195507

        Reviewed by Antti Koivisto.

        * UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm:
        (WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTree):
        * UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.cpp:
        (WebKit::RemoteScrollingCoordinatorProxy::applyScrollingTreeLayerPositions):
        * UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.h:
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
        (WebKit::TiledCoreAnimationDrawingArea::flushLayers):

2019-03-09  Darin Adler  <darin@apple.com>

        [Cocoa] Code signing fails because services are copied into XPCServices after the framework is signed
        https://bugs.webkit.org/show_bug.cgi?id=195523

        Reviewed by Dan Bernstein.

        * WebKit.xcodeproj/project.pbxproj: Make symbolic links while building the WebKit
        framework instead of copying in the services after the framework is built.

2019-03-09  Wenson Hsieh  <wenson_hsieh@apple.com>

        REGRESSION (r242551): Sporadic hangs when tapping to change selection on iOS
        https://bugs.webkit.org/show_bug.cgi?id=195475
        <rdar://problem/48721153>

        Reviewed by Chris Dumez.

        r242551 refactored synchronous autocorrection context requests to send an async IPC message and then use
        waitForAndDispatchImmediately, instead of calling sendSync. However, this exposes a couple of existing issues in
        the implementation of waitForAndDispatchImmediately that causes sporadic IPC deadlocks when changing selection.

        First, passing in InterruptWaitingIfSyncMessageArrives when synchronously waiting for an IPC message currently
        does not fulfill its intended behavior of interrupting waiting when a sync message arrives. This is because sync
        IPC messages, by default, may be dispatched while the receiver is waiting for a sync reply. This means that the
        logic in Connection::SyncMessageState::processIncomingMessage to dispatch an incoming sync message on the main
        thread will attempt to handle the incoming message by enqueueing it on the main thread, and then waking up the
        client runloop (i.e. signaling m_waitForSyncReplySemaphore). This works in the case of sendSync since the sync
        reply semaphore is used to block the main thread, but in the case of waitForAndDispatchImmediately, a different
        m_waitForMessageCondition is used instead, so SyncMessageState::processIncomingMessage will only enqueue the
        incoming sync message on the main thread, and not actually invoke it.

        To fix this first issue, observe that there is pre-existing logic to enqueue the incoming message and signal
        m_waitForMessageCondition in Connection::processIncomingMessage. This codepath is currently not taken because we
        end up bailing early in the call to SyncMessageState::processIncomingMessage. Instead, we can move this early
        return further down in the function, such that if there is an incoming sync message and we're waiting with the
        InterruptWaitingIfSyncMessageArrives option, we will correctly enqueue the incoming message, wake the runloop,
        and proceed to handle the incoming message.

        The second issue is more subtle; consider the scenario in which we send a sync message A from the web process to
        the UI process, and simultaneously, in the UI process, we schedule some work to be done on the main thread.
        Let's additionally suppose that this scheduled work will send an IPC message B to the web process and
        synchronously wait for a reply (in the case of this particular bug, this is the sync autocorrection context
        request). What happens upon receiving sync message A is that the IPC thread in the UI process will schedule A on
        the main thread; however, before the scheduled response to A is invoked, we will first invoke previously
        scheduled work that attempts to block synchronously until a message B is received. In summary:

        1. (Web process)    sends sync IPC message A to UI process.
        2. (UI process)     schedules some main runloop task that will block synchronously on IPC message B.
        3. (UI process)     receives sync IPC message A and schedules A on the main runloop.
        4. (UI process)     carry out the task scheduled in (2) and block on B.

        ...and then, the UI process and web process are now deadlocked because the UI process is waiting for B to
        arrive, but the web process can't send B because it's waiting for a reply for IPC message A! To fix this second
        deadlock, we first make an important observation: when using sendSync, we don't run into this problem because
        immediately before sending sync IPC, we will attempt to handle any incoming sync IPC messages that have been
        queued up. However, when calling waitForAndDispatchImmediately, we don't have this extra step, so a deadlock may
        occur in the manner described above. To fix this, we make waitForAndDispatchImmediately behave more like
        sendSync, by handling all incoming sync messages prior to blocking on an IPC response.

        Test: editing/selection/ios/change-selection-by-tapping.html

        * Platform/IPC/Connection.cpp:
        (IPC::Connection::waitForMessage):
        (IPC::Connection::processIncomingMessage):

2019-03-09  Andy Estes  <aestes@apple.com>

        [Apple Pay] CanMakePaymentsWithActiveCard and OpenPaymentSetup should be async messages
        https://bugs.webkit.org/show_bug.cgi?id=195526
        <rdar://problem/48745636>

        Reviewed by Chris Dumez.

        * Shared/ApplePay/WebPaymentCoordinatorProxy.cpp:
        (WebKit::WebPaymentCoordinatorProxy::canMakePaymentsWithActiveCard):
        (WebKit::WebPaymentCoordinatorProxy::openPaymentSetup):
        * Shared/ApplePay/WebPaymentCoordinatorProxy.h:
        * Shared/ApplePay/WebPaymentCoordinatorProxy.messages.in:
        * WebProcess/ApplePay/WebPaymentCoordinator.cpp:
        (WebKit::WebPaymentCoordinator::canMakePaymentsWithActiveCard):
        (WebKit::WebPaymentCoordinator::openPaymentSetup):
        (WebKit::generateCanMakePaymentsWithActiveCardReplyID): Deleted.
        (WebKit::generateOpenPaymentSetupReplyID): Deleted.
        (WebKit::WebPaymentCoordinator::canMakePaymentsWithActiveCardReply): Deleted.
        (WebKit::WebPaymentCoordinator::openPaymentSetupReply): Deleted.
        * WebProcess/ApplePay/WebPaymentCoordinator.h:
        * WebProcess/ApplePay/WebPaymentCoordinator.messages.in:

2019-03-09  Andy Estes  <aestes@apple.com>

        [iOS] Remove unneeded entitlements and sandbox allowances from the Networking service
        https://bugs.webkit.org/show_bug.cgi?id=195527

        Reviewed by Eric Carlson.

        * Configurations/Network-iOS.entitlements:
        * Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb:

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

        Use modern async IPC with reply for device orientation permission
        https://bugs.webkit.org/show_bug.cgi?id=195529

        Reviewed by Ryosuke Niwa.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::requestDeviceOrientationAndMotionAccess):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::shouldAllowDeviceOrientationAndMotionAccess):
        (WebKit::nextDeviceOrientationAndMotionPermissionCallbackID): Deleted.
        (WebKit::WebPage::didReceiveDeviceOrientationAndMotionAccessDecision): Deleted.
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:

2019-03-09  Zalan Bujtas  <zalan@apple.com>

        [ContentChangeObserver] Start observing for content change between touchEnd and mouseMoved start
        https://bugs.webkit.org/show_bug.cgi?id=195510
        <rdar://problem/48735695>

        Reviewed by Simon Fraser.

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

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

        Enable ProcessAssertions on iOS Simulator
        https://bugs.webkit.org/show_bug.cgi?id=195479

        Reviewed by Alexey Proskuryakov.

        Enable ProcessAssertions on iOS Simulator. We have some layout tests timing out in the
        iOS Simulator due to the WebContent process suspending. Turning on ProcessAssertions in
        the iOS Simulator seems to make those tests pass.

        * UIProcess/ProcessAssertion.cpp:
        * UIProcess/ProcessAssertion.h:
        * UIProcess/ios/ProcessAssertionIOS.mm:

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

        Add support for Device Orientation / Motion permission API
        https://bugs.webkit.org/show_bug.cgi?id=195329
        <rdar://problem/47645367>

        Reviewed by Geoffrey Garen.

        Add support for Device Orientation / Motion permission API:
        - https://github.com/w3c/deviceorientation/issues/57

        This adds new SPI to WKUIDelegatePrivate, until we can make this API.

        * Shared/WebPreferences.yaml:
        * UIProcess/API/APIUIClient.h:
        (API::UIClient::shouldAllowDeviceOrientationAndMotionAccess):
        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetPageUIClient):
        * UIProcess/API/C/WKPageUIClient.h:
        * UIProcess/API/Cocoa/WKUIDelegate.h:
        * UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
        * UIProcess/Cocoa/UIDelegate.h:
        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::UIDelegate::setDelegate):
        (WebKit::UIDelegate::UIClient::shouldAllowDeviceOrientationAndMotionAccess):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::requestDeviceOrientationAndMotionAccess):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::shouldAllowDeviceOrientationAndMotionAccess):
        * WebProcess/WebCoreSupport/WebChromeClient.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::nextDeviceOrientationAndMotionPermissionCallbackID):
        (WebKit::WebPage::shouldAllowDeviceOrientationAndMotionAccess):
        (WebKit::WebPage::didReceiveDeviceOrientationAndMotionAccessDecision):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:

2019-03-08  Brady Eidson  <beidson@apple.com>

        Have the UIProcess take the UnboundedNetworking assertion when downloads are in progress.
        https://bugs.webkit.org/show_bug.cgi?id=195468

        Reviewed by Andy Estes.

        * UIProcess/Downloads/DownloadProxyMap.cpp:
        (WebKit::DownloadProxyMap::DownloadProxyMap):
        (WebKit::DownloadProxyMap::createDownloadProxy): If this is the first download, and the process has the entitlement,
          take the assertion.
        (WebKit::DownloadProxyMap::downloadFinished):
        (WebKit::DownloadProxyMap::processDidClose):
        * UIProcess/Downloads/DownloadProxyMap.h:

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

        Add assertions to help debug a WebProcessCache crash
        https://bugs.webkit.org/show_bug.cgi?id=195469

        Reviewed by Brady Eidson.

        I suspect the process's registrableDomain in null when evictProcess() gets
        called, thus crashing when lookup it up in the HashMap. Confirm this and
        how this could happen via assertions.

        * UIProcess/WebProcessCache.cpp:
        (WebKit::WebProcessCache::evictProcess):
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::didStartProvisionalLoadForMainFrame):

2019-03-08  Brady Eidson  <beidson@apple.com>

        Rename AssertionState::Download.
        https://bugs.webkit.org/show_bug.cgi?id=195465

        Reviewed by Andy Estes.

        It's (currently) about uploads and downloads.
        Let's call it "UnboundedNetworking"

        * NetworkProcess/Downloads/DownloadMap.cpp:
        (WebKit::DownloadMap::add):

        * UIProcess/ProcessAssertion.h:

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

        * UIProcess/ios/ProcessAssertionIOS.mm:
        (WebKit::flagsForState):
        (WebKit::reasonForState):

2019-03-08  Simon Fraser  <simon.fraser@apple.com>

        [macOS UI-side compositing] Mouse handling can trigger a crash before we have a scrolling tree root
        https://bugs.webkit.org/show_bug.cgi?id=195467

        Reviewed by Antti Koivisto.
        
        When launching MiniBrowser with UI-side compositing enabled in a state where the window
        appears under the mouse, we can hit RemoteScrollingTree::handleMouseEvent() for a mouseEnter
        event before we have a scrolling tree root node, so add a null check.

        * UIProcess/RemoteLayerTree/RemoteScrollingTree.cpp:
        (WebKit::RemoteScrollingTree::handleMouseEvent):

2019-03-08  Carlos Garcia Campos  <cgarcia@igalia.com>

        REGRESSION(r242624): [GTK] New rAF code path assumes AC mode
        https://bugs.webkit.org/show_bug.cgi?id=195459

        Reviewed by Žan Doberšek.

        * WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp:
        (WebKit::DrawingAreaCoordinatedGraphics::scheduleCompositingLayerFlush):
        The refresh monitor now calls scheduleLayerFlush() but when AC
        mode is disabled this method does nothing, so setNeedsDisplay()
        needs to be called instead.

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

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

        Reviewed by Simon Fraser.

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

2019-03-07  Zalan Bujtas  <zalan@apple.com>

        [ContentChangeObserver] Introduce fixed duration content observation
        https://bugs.webkit.org/show_bug.cgi?id=195295
        <rdar://problem/48579913>

        Reviewed by Simon Fraser.

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

2019-03-07  Fujii Hironori  <Hironori.Fujii@sony.com>

        [WinCairo][WebKit] Nothing is drawn after Web process crashed
        https://bugs.webkit.org/show_bug.cgi?id=195399

        Reviewed by Alex Christensen.

        PageClientImpl::viewSize returned 0x0 size after Web process
        crashed. Restored the original implementation using GetClientRect
        (Bug 52175).

        * UIProcess/win/PageClientImpl.cpp:
        (WebKit::PageClientImpl::viewSize):

2019-03-07  Said Abou-Hallawa  <sabouhallawa@apple.com>

        requestAnimationFrame should execute before the next frame
        https://bugs.webkit.org/show_bug.cgi?id=177484

        Reviewed by Simon Fraser.

        Replace the calls to Page::layoutIfNeeded() and willDisplayPage() by
        a single call to Page::renderingUpdate(). This new function implements 
        "Update the rendering" step of the HTML Event Loop specification
        <https://html.spec.whatwg.org/multipage/webappapis.html#update-the-rendering>.

        * WebProcess/WebPage/AcceleratedDrawingArea.cpp:
        (WebKit::AcceleratedDrawingArea::updateBackingStoreState):
        * WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.cpp:
        (WebKit::LayerTreeHost::layerFlushTimerFired):
        * WebProcess/WebPage/DrawingAreaImpl.cpp:
        (WebKit::DrawingAreaImpl::display):
        * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm:
        (WebKit::RemoteLayerTreeDrawingArea::flushLayers):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::layoutIfNeeded):
        (WebKit::WebPage::renderingUpdate):
        (WebKit::WebPage::willDisplayPage): Deleted.
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
        (WebKit::TiledCoreAnimationDrawingArea::flushLayers):

2019-03-07  Zalan Bujtas  <zalan@apple.com>

        [ContentChangeObserver] Add a setting to be able to turn content change observation on/off
        https://bugs.webkit.org/show_bug.cgi?id=195353
        <rdar://problem/48626394>

        Reviewed by Simon Fraser.

        * Shared/WebPreferences.yaml:
        * UIProcess/API/C/WKPreferences.cpp:
        (WKPreferencesSetContentChangeObserverEnabled):
        (WKPreferencesGetContentChangeObserverEnabled):
        * UIProcess/API/C/WKPreferencesRefPrivate.h:
        * UIProcess/API/Cocoa/WKPreferences.mm:
        (-[WKPreferences _contentChangeObserverEnabled]):
        (-[WKPreferences _setContentChangeObserverEnabled:]):
        * UIProcess/API/Cocoa/WKPreferencesPrivate.h:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::handleSyntheticClick):

2019-03-07  Andy Estes  <aestes@apple.com>

        [Apple Pay] Untangle PKPaymentAuthorizationViewController from WebPaymentCoordinatorProxy
        https://bugs.webkit.org/show_bug.cgi?id=195349
        <rdar://problem/48625510>

        Reviewed by Alex Christensen.

        Introduced PaymentAuthorizationPresenter and WKPaymentAuthorizationDelegate to encapsulate
        PKPaymentAuthorizationViewController and its delegate. Taught WebPaymentCoordinatorProxy to
        interact with PaymentAuthorizationPresenter rather than PKPAVC directly.

        These changes will allow us to swap out PKPaymentAuthorizationViewController with PKPaymentAuthorizationController in a follow-on patch.

        * Platform/cocoa/PaymentAuthorizationPresenter.h: Added. Defined the abstract interface for
        payment authorization presenters that use PKPA(V)C.
        * Platform/cocoa/PaymentAuthorizationPresenter.mm: Added.
        (WebKit::toPKPaymentAuthorizationStatus): Moved from WebPaymentCoordinatorProxyCocoa.mm.
        (WebKit::toPKPaymentErrorCode): Ditto.
        (WebKit::toNSError): Ditto.
        (WebKit::toNSErrors): Ditto.
        (WebKit::toPKShippingMethods): Ditto.
        (WebKit::PaymentAuthorizationPresenter::completeMerchantValidation): Added. Implements the
        logic previously in WebPaymentCoordinatorProxy::platformCompleteMerchantValidation.
        (WebKit::PaymentAuthorizationPresenter::completePaymentMethodSelection): Ditto for
        WebPaymentCoordinatorProxy::platformCompletePaymentMethodSelection.
        (WebKit::PaymentAuthorizationPresenter::completePaymentSession): Ditto for 
        (WebKit::PaymentAuthorizationPresenter::completeShippingContactSelection): Ditto for
        WebPaymentCoordinatorProxy::platformCompletePaymentSession.
        (WebKit::PaymentAuthorizationPresenter::completeShippingMethodSelection): Ditto for
        WebPaymentCoordinatorProxy::platformCompleteShippingMethodSelection.
        * Platform/cocoa/PaymentAuthorizationViewController.h: Added. Defined a subclass of PaymentAuthorizationPresenter for PKPaymentAuthorizationViewController.
        * Platform/cocoa/PaymentAuthorizationViewController.mm: Added.
        (-[WKPaymentAuthorizationViewControllerDelegate initWithPresenter:]): Added a PKPAVC
        delegate that's a subclass of WKPaymentAuthorizationDelegate.
        (-[WKPaymentAuthorizationViewControllerDelegate paymentAuthorizationViewControllerDidFinish:]):
        Called -[WKPaymentAuthorizationDelegate _didFinish].
        (-[WKPaymentAuthorizationViewControllerDelegate paymentAuthorizationViewController:didAuthorizePayment:handler:]): Called
        -[WKPaymentAuthorizationDelegate _didAuthorizePayment:completion:].
        (-[WKPaymentAuthorizationViewControllerDelegate paymentAuthorizationViewController:didSelectShippingMethod:handler:]): Called
        -[WKPaymentAuthorizationDelegate _didSelectShippingMethod:completion:].
        (-[WKPaymentAuthorizationViewControllerDelegate paymentAuthorizationViewController:didSelectShippingContact:handler:]): Called
        -[WKPaymentAuthorizationDelegate _didSelectShippingContact:completion:].
        (-[WKPaymentAuthorizationViewControllerDelegate paymentAuthorizationViewController:didSelectPaymentMethod:handler:]): Called
        -[WKPaymentAuthorizationDelegate _didSelectPaymentMethod:completion:].
        (-[WKPaymentAuthorizationViewControllerDelegate paymentAuthorizationViewController:willFinishWithError:]):
        Called -[WKPaymentAuthorizationDelegate _willFinishWithError:].
        (-[WKPaymentAuthorizationViewControllerDelegate paymentAuthorizationViewController:didRequestMerchantSession:]): Called
        -[WKPaymentAuthorizationDelegate _didRequestMerchantSession:].
        * Platform/cocoa/WKPaymentAuthorizationDelegate.h: Added.
        * Platform/cocoa/WKPaymentAuthorizationDelegate.mm: Added.
        (-[WKPaymentAuthorizationDelegate summaryItems]): Added a summaryItems getter.
        (-[WKPaymentAuthorizationDelegate shippingMethods]): Ditto for shippingMethods.
        (-[WKPaymentAuthorizationDelegate completeMerchantValidation:error:]): Called
        _didRequestMerchantSessionCompletion then set it to nil.
        (-[WKPaymentAuthorizationDelegate completePaymentMethodSelection:]): Ditto for
        _didSelectPaymentMethodCompletion.
        (-[WKPaymentAuthorizationDelegate completePaymentSession:errors:didReachFinalState:]): Ditto
        for _didAuthorizePaymentCompletion.
        (-[WKPaymentAuthorizationDelegate completeShippingContactSelection:summaryItems:shippingMethods:errors:]):
        Ditto for _didSelectShippingContactCompletion.
        (-[WKPaymentAuthorizationDelegate completeShippingMethodSelection:]): Ditto for
        _didSelectShippingMethodCompletion.
        (-[WKPaymentAuthorizationDelegate invalidate]): If there's an outstanding authorization
        callback, called -completePaymentSession:errors:didReachFinalState: with a state of
        PKPaymentAuthorizationStatusFailure.
        (-[WKPaymentAuthorizationDelegate _initWithPresenter:]):
        (-[WKPaymentAuthorizationDelegate _didAuthorizePayment:completion:]): Added. Implements the
        logic previously in WKPaymentAuthorizationViewControllerDelegate.
        (-[WKPaymentAuthorizationDelegate _didFinish]): Ditto.
        (-[WKPaymentAuthorizationDelegate _didRequestMerchantSession:]): Ditto.
        (-[WKPaymentAuthorizationDelegate _didSelectPaymentMethod:completion:]): Ditto.
        (-[WKPaymentAuthorizationDelegate _didSelectShippingContact:completion:]): Ditto.
        (toShippingMethod): Moved from WebPaymentCoordinatorProxyCocoa.mm.
        (-[WKPaymentAuthorizationDelegate _didSelectShippingMethod:completion:]): Added. Implements
        the logic previously in WKPaymentAuthorizationViewControllerDelegate.
        (-[WKPaymentAuthorizationDelegate _willFinishWithError:]): Ditto.
        * Shared/ApplePay/WebPaymentCoordinatorProxy.cpp:
        (WebKit::WebPaymentCoordinatorProxy::presenterWillValidateMerchant): To conform to
        PaymentAuthorizationPresenter::Client, renamed from validateMerchant.
        (WebKit::WebPaymentCoordinatorProxy::presenterDidAuthorizePayment): Renamed from
        didAuthorizePayment.
        (WebKit::WebPaymentCoordinatorProxy::presenterDidFinish): Moved logic here that previously
        existed in WKPaymentAuthorizationViewControllerDelegate.
        (WebKit::WebPaymentCoordinatorProxy::presenterDidSelectShippingMethod): Renamed from
        didSelectShippingMethod.
        (WebKit::WebPaymentCoordinatorProxy::presenterDidSelectShippingContact): Renamed from
        didSelectShippingContact.
        (WebKit::WebPaymentCoordinatorProxy::presenterDidSelectPaymentMethod): Renamed from
        didSelectPaymentMethod.
        (WebKit::WebPaymentCoordinatorProxy::validateMerchant): Renamed to
        presenterWillValidateMerchant.
        (WebKit::WebPaymentCoordinatorProxy::didAuthorizePayment): Renamed to
        presenterDidAuthorizePayment.
        (WebKit::WebPaymentCoordinatorProxy::didSelectShippingMethod): Renamed to
        presenterDidSelectShippingMethod.
        (WebKit::WebPaymentCoordinatorProxy::didSelectShippingContact): Renamed to
        presenterDidSelectShippingContact.
        (WebKit::WebPaymentCoordinatorProxy::didSelectPaymentMethod): Renamed to
        didSelectPaymentMethod.
        * Shared/ApplePay/WebPaymentCoordinatorProxy.h: Changed WebPaymentCoordinatorProxy to
        subclass PaymentAuthorizationPresenter::Client.
        * Shared/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.h: Removed WKPaymentAuthorizationViewControllerDelegate interface and declared some helper functions
        needed by PaymentAuthorizationPresenter.
        * Shared/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
        (WebKit::toPKPaymentSummaryItemType): Removed static keyword.
        (WebKit::toDecimalNumber): Ditto.
        (WebKit::toPKPaymentSummaryItem): Ditto.
        (WebKit::toPKPaymentSummaryItems): Ditto.
        (WebKit::toPKShippingMethod): Ditto.
        (WebKit::WebPaymentCoordinatorProxy::platformPaymentRequest): Changed to call
        m_authorizationPresenter.
        (WebKit::WebPaymentCoordinatorProxy::platformCompletePaymentSession): Ditto.
        (WebKit::WebPaymentCoordinatorProxy::platformCompleteMerchantValidation): Ditto.
        (WebKit::WebPaymentCoordinatorProxy::platformCompleteShippingMethodSelection): Ditto.
        (WebKit::WebPaymentCoordinatorProxy::platformCompleteShippingContactSelection): Ditto.
        (WebKit::WebPaymentCoordinatorProxy::platformCompletePaymentMethodSelection): Ditto.
        (-[WKPaymentAuthorizationViewControllerDelegate initWithPaymentCoordinatorProxy:]): Deleted.
        (-[WKPaymentAuthorizationViewControllerDelegate invalidate]): Deleted.
        (-[WKPaymentAuthorizationViewControllerDelegate paymentAuthorizationViewController:willFinishWithError:]): Deleted.
        (-[WKPaymentAuthorizationViewControllerDelegate paymentAuthorizationViewController:didRequestMerchantSession:]): Deleted.
        (toShippingMethod): Deleted.
        (-[WKPaymentAuthorizationViewControllerDelegate paymentAuthorizationViewController:didAuthorizePayment:handler:]): Deleted.
        (-[WKPaymentAuthorizationViewControllerDelegate paymentAuthorizationViewController:didSelectPaymentMethod:handler:]): Deleted.
        (-[WKPaymentAuthorizationViewControllerDelegate paymentAuthorizationViewController:didSelectShippingMethod:handler:]): Deleted.
        (-[WKPaymentAuthorizationViewControllerDelegate paymentAuthorizationViewController:didSelectShippingContact:handler:]): Deleted.
        (-[WKPaymentAuthorizationViewControllerDelegate paymentAuthorizationViewController:didAuthorizePayment:completion:]): Deleted.
        (-[WKPaymentAuthorizationViewControllerDelegate paymentAuthorizationViewController:didSelectShippingMethod:completion:]): Deleted.
        (-[WKPaymentAuthorizationViewControllerDelegate paymentAuthorizationViewController:didSelectPaymentMethod:completion:]): Deleted.
        (-[WKPaymentAuthorizationViewControllerDelegate paymentAuthorizationViewController:didSelectShippingContact:completion:]): Deleted.
        (-[WKPaymentAuthorizationViewControllerDelegate paymentAuthorizationViewControllerDidFinish:]): Deleted.
        (WebKit::toPKPaymentAuthorizationStatus): Moved to PaymentAuthorizationPresenter.mm.
        (WebKit::toPKPaymentErrorCode): Ditto.
        (WebKit::toNSError): Ditto.
        (WebKit::toNSErrors): Ditto.
        * Shared/ApplePay/ios/WebPaymentCoordinatorProxyIOS.mm:
        (WebKit::WebPaymentCoordinatorProxy::platformShowPaymentUI): Changed to present a
        PaymentAuthorizationPresenter rather than a PKPAVC.
        (WebKit::WebPaymentCoordinatorProxy::hidePaymentUI): Changed to dismiss a
        PaymentAuthorizationPresenter rather than a PKPAVC.
        * Shared/ApplePay/mac/WebPaymentCoordinatorProxyMac.mm:
        (WebKit::WebPaymentCoordinatorProxy::platformShowPaymentUI): Ditto.
        (WebKit::WebPaymentCoordinatorProxy::hidePaymentUI): Ditto.
        * SourcesCocoa.txt:
        * UIProcess/WebPageProxy.h:
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::paymentCoordinatorAuthorizationPresenter): Added. Returns a new
        PaymentAuthorizationViewController.
        * WebKit.xcodeproj/project.pbxproj:

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

        Regression(r242580) WebKit.NetworkProcessCrashWithPendingConnection API is crashing on iOS debug
        https://bugs.webkit.org/show_bug.cgi?id=195416

        Reviewed by Antti Koivisto.

        Drop ASSERT_NOT_REACHED() in WebPage::didCompletePageTransition() when the tree is still frozen due to
        LayerTreeFreezeReason::ProcessSuspended. As demonstrated by this API test, nothing prevents a load from
        completing and WebPage::didCompletePageTransition() to get called *after* WebProcess::prepareToSuspend()
        has been called. From the logging during the test, I can tell that WebProcess::processDidResume() gets
        called later on and the LayerTreeFreezeReason::ProcessSuspended freezing reason gets dropped, as expected.

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

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

        Clean up / simplify ProcessAssertion code
        https://bugs.webkit.org/show_bug.cgi?id=195394

        Reviewed by Geoffrey Garen.

        Clean up / simplify ProcessAssertion code to facilitate its maintenance and make it
        less error-prone.

        * Platform/IPC/mac/ConnectionMac.mm:
        (IPC::ConnectionTerminationWatchdog::ConnectionTerminationWatchdog):
        * UIProcess/ProcessAssertion.cpp:
        (WebKit::ProcessAssertion::ProcessAssertion):
        (WebKit::ProcessAssertion::setState):
        * UIProcess/ProcessAssertion.h:
        (WebKit::ProcessAssertion::Client::~Client):
        (WebKit::ProcessAssertion::setClient):
        (WebKit::ProcessAssertion::client):
        * UIProcess/ProcessThrottler.cpp:
        (WebKit::ProcessThrottler::didConnectToProcess):
        * UIProcess/ProcessThrottler.h:
        * UIProcess/ios/ProcessAssertionIOS.mm:
        (-[WKProcessAssertionBackgroundTaskManager dealloc]):
        (-[WKProcessAssertionBackgroundTaskManager addAssertionNeedingBackgroundTask:]):
        (-[WKProcessAssertionBackgroundTaskManager removeAssertionNeedingBackgroundTask:]):
        (-[WKProcessAssertionBackgroundTaskManager _notifyAssertionsOfImminentSuspension]):
        (-[WKProcessAssertionBackgroundTaskManager _releaseBackgroundTask]):
        (-[WKProcessAssertionBackgroundTaskManager _updateBackgroundTask]):
        (WebKit::ProcessAssertion::ProcessAssertion):
        (WebKit::ProcessAssertion::processAssertionWasInvalidated):
        (WebKit::ProcessAssertion::setState):
        (WebKit::ProcessAndUIAssertion::updateRunInBackgroundCount):
        (WebKit::ProcessAndUIAssertion::ProcessAndUIAssertion):
        (WebKit::ProcessAndUIAssertion::~ProcessAndUIAssertion):
        (WebKit::ProcessAndUIAssertion::processAssertionWasInvalidated):
        (WebKit::ProcessAndUIAssertion::setState):
        (WebKit::ProcessAndUIAssertion::uiAssertionWillExpireImminently):

2019-03-07  Commit Queue  <commit-queue@webkit.org>

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

        Broke Microsoft Visio. (Requested by dydz on #webkit).

        Reverted changeset:

        "[iOS] Turn mouse event simulation on by default"
        https://bugs.webkit.org/show_bug.cgi?id=195218
        https://trac.webkit.org/changeset/242297

2019-03-07  John Wilander  <wilander@apple.com>

        Resource Load Statistics: Log first-party navigations with link decoration
        https://bugs.webkit.org/show_bug.cgi?id=195301
        <rdar://problem/48569971>

        Reviewed by Brent Fulgham.

        This patch adds a call to the network process' resource load statistics to
        log cross-site navigations with link decoration. The logging checks if the
        source of the navigation is a prevalent resource and if so, sets the
        appropriate flag for the destination.

        * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:
        (WebKit::ResourceLoadStatisticsDatabaseStore::ResourceLoadStatisticsDatabaseStore):
        (WebKit::ResourceLoadStatisticsDatabaseStore::createSchema):
        (WebKit::ResourceLoadStatisticsDatabaseStore::logSubresourceRedirect):
        (WebKit::ResourceLoadStatisticsDatabaseStore::logCrossSiteLoadWithLinkDecoration):
        * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h:
        * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp:
        (WebKit::ResourceLoadStatisticsMemoryStore::logCrossSiteLoadWithLinkDecoration):
        * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.h:
        * NetworkProcess/Classifier/ResourceLoadStatisticsStore.h:
        * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::logCrossSiteLoadWithLinkDecoration):
        * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h:
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::committedCrossSiteLoadWithLinkDecoration):
            This now receives a completion handler. This is in preparation for
            test cases where we need to log such an event and wait for it to
            finish before continuing.
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::committedCrossSiteLoadWithLinkDecoration):
        * UIProcess/Network/NetworkProcessProxy.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didCommitLoadForFrame):
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::committedCrossSiteLoadWithLinkDecoration):
        * UIProcess/WebProcessPool.h:

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

        [iOS] Disable permissive call logging in sandbox
        https://bugs.webkit.org/show_bug.cgi?id=195288
        <rdar://problem/47683804>

        Reviewed by Brent Fulgham.

        As on macOS, we should enable strict call filtering in sandbox on iOS.

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

2019-03-07  Youenn Fablet  <youenn@apple.com>

        Introduce a quota manager for Cache API/Service Worker/IDB storage
        https://bugs.webkit.org/show_bug.cgi?id=195283

        Reviewed by Chris Dumez.

        Remove quota handling from Cache API storage and use StorageQuotaManager/StorageQuotaUser.
        CacheStorage::Caches becomes a quota user and has a StorageQuotaManager to check for space for any cache API write task.
        NetworkProcess is responsible to manage the quota managers.
        Quota managers will go through network process to ask UIProcess for quota extension.

        Remove pending callback handling from CacheStorage since they are queued in QuotaManager now.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::~NetworkProcess):
        (WebKit::NetworkProcess::destroySession):
        (WebKit::NetworkProcess::cacheStorageRootPath):
        (WebKit::NetworkProcess::setCacheStorageParameters):
        (WebKit::NetworkProcess::storageQuotaManager):
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/cache/CacheStorageEngine.cpp:
        (WebKit::CacheStorage::Engine::from):
        (WebKit::CacheStorage::Engine::Engine):
        (WebKit::CacheStorage::Engine::readCachesFromDisk):
        * NetworkProcess/cache/CacheStorageEngine.h:
        * NetworkProcess/cache/CacheStorageEngineCache.cpp:
        (WebKit::CacheStorage::Cache::put):
        * NetworkProcess/cache/CacheStorageEngineCache.h:
        * NetworkProcess/cache/CacheStorageEngineCaches.cpp:
        (WebKit::CacheStorage::Caches::Caches):
        (WebKit::CacheStorage::Caches::~Caches):
        (WebKit::CacheStorage::Caches::requestSpace):
        (WebKit::CacheStorage::Caches::writeRecord):
        * NetworkProcess/cache/CacheStorageEngineCaches.h:

2019-03-07  John Wilander  <wilander@apple.com>

        Resource Load Statistics: Make it possible to purge only script-accessible cookies
        https://bugs.webkit.org/show_bug.cgi?id=195383
        <rdar://problem/48570136>

        Reviewed by Brent Fulgham.

        This patch provides the ability to purge all script-accessible cookies while leaving
        HttpOnly cookies in place.

        * NetworkProcess/Classifier/ResourceLoadStatisticsStore.cpp:
        (WebKit::ResourceLoadStatisticsStore::removeDataRecords):
        * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::deleteWebsiteDataForRegistrableDomainsInAllPersistentDataStores):
            Support for a new boolean flag on whether or not to include HttpOnly Cookies.
        * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h:
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::deleteWebsiteDataForRegistrableDomainsInAllPersistentDataStores):
            Support for a new boolean flag on whether or not to include HttpOnly Cookies.
        (WebKit::NetworkProcess::deleteCookiesForTesting):
            Test infrastructure.
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:
        * NetworkProcess/NetworkSession.cpp:
        (WebKit::NetworkSession::deleteWebsiteDataForRegistrableDomainsInAllPersistentDataStores):
            Support for a new boolean flag on whether or not to include HttpOnly Cookies.
        * NetworkProcess/NetworkSession.h:
        * UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
        (WKWebsiteDataStoreStatisticsDeleteCookiesForTesting):
            Test infrastructure.
        * UIProcess/API/C/WKWebsiteDataStoreRef.h:
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::deleteCookiesForTesting):
            Test infrastructure.
        * UIProcess/Network/NetworkProcessProxy.h:
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::deleteCookiesForTesting):
            Test infrastructure.
        * UIProcess/WebsiteData/WebsiteDataStore.h:

2019-03-07  Carlos Garcia Campos  <cgarcia@igalia.com>

        REGRESSION(r242364): [WPE] Do not stop the compositing run loop update timer on suspend
        https://bugs.webkit.org/show_bug.cgi?id=195410

        Reviewed by Žan Doberšek.

        Calling CompositingRunLoop::stopUpdates() on suspend is leaving the threaded compositor in an inconsistent
        state, failing to resume and stopping the updates forever. This is causing timeouts in WPE layout tests. Instead
        of calling stopUpdates(), a new suspend() is called, that stops the update timer, without changing the current
        updae tha compositing state. A new method resume() is also added to schedule an update if needed.

        * Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.cpp:
        (WebKit::CompositingRunLoop::suspend): Set state as suspended and stop the update timer.
        (WebKit::CompositingRunLoop::resume): Set state as not suspended and start the update timer if it was scheduled
        while suspended.
        (WebKit::CompositingRunLoop::scheduleUpdate): Do not start the update timer when suspended.
        (WebKit::CompositingRunLoop::compositionCompleted): Ditto.
        (WebKit::CompositingRunLoop::updateCompleted): Ditto.
        (WebKit::CompositingRunLoop::updateTimerFired): Add an assert to ensure the update timer is not fired while suspended.
        * Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.h:
        * Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:
        (WebKit::ThreadedCompositor::suspend): Call CompositingRunLoop::suspend() instead of stopUpdates().
        (WebKit::ThreadedCompositor::resume): Call CompositingRunLoop::resume().

2019-03-06  Mark Lam  <mark.lam@apple.com>

        Exception is a JSCell, not a JSObject.
        https://bugs.webkit.org/show_bug.cgi?id=195392

        Reviewed by Saam Barati.

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

2019-03-07  Commit Queue  <commit-queue@webkit.org>

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

        breaks layout tests in all configurations (Requested by
        zdobersek on #webkit).

        Reverted changeset:

        "[WPE] Enable web process sandbox"
        https://bugs.webkit.org/show_bug.cgi?id=195169
        https://trac.webkit.org/changeset/242354

2019-03-06  Ross Kirsling  <ross.kirsling@sony.com>

        [Win] Remove -DUCHAR_TYPE=wchar_t stopgap and learn to live with char16_t.
        https://bugs.webkit.org/show_bug.cgi?id=195346

        Reviewed by Fujii Hironori.

        * Platform/IPC/win/ConnectionWin.cpp:
        (IPC::Connection::createServerAndClientIdentifiers):
        * Platform/win/ModuleWin.cpp:
        (WebKit::Module::load):
        * UIProcess/Launcher/win/ProcessLauncherWin.cpp:
        (WebKit::ProcessLauncher::launchProcess):
        * UIProcess/win/WebContextMenuProxyWin.cpp:
        (WebKit::createMenuItem):
        * UIProcess/win/WebView.cpp:
        (WebKit::WebView::setToolTip):
        * WebProcess/InjectedBundle/win/InjectedBundleWin.cpp:
        (WebKit::InjectedBundle::initialize):
        Use wchar helpers as needed.

2019-03-06  Wenson Hsieh  <wenson_hsieh@apple.com>

        Crash when attempting to change input type while dismissing datalist suggestions
        https://bugs.webkit.org/show_bug.cgi?id=195384
        <rdar://problem/48563718>

        Reviewed by Brent Fulgham.

        See WebCore ChangeLog for more details.

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::setActiveDataListSuggestionPicker):
        (WebKit::WebPage::didSelectDataListOption):
        (WebKit::WebPage::didCloseSuggestions):
        * WebProcess/WebPage/WebPage.h:

        Turn m_activeDataListSuggestionPicker from a raw pointer into a WeakPtr.

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

        [iOS] ProcessDidResume() IPC should be sent upon resuming when ProcessWillSuspendImminently() IPC was sent
        https://bugs.webkit.org/show_bug.cgi?id=195382
        <rdar://problem/48642739>

        Reviewed by Geoffrey Garen.

        ProcessDidResume() IPC should be sent upon resuming when ProcessWillSuspendImminently() IPC was sent. Previously,
        we only send ProcessDidResume() to the WebProcess if PrepareToSuspend() was sent, not when the more urgent
        ProcessWillSuspendImminently() IPC was sent.

        This mismatch has lead to bugs because the WebProcess does not know it got resumed and failed to unfreeze the
        layers it froze upon suspension.

        * UIProcess/ProcessAssertion.h:
        (WebKit::ProcessAssertionClient::~ProcessAssertionClient):

        * UIProcess/ProcessThrottler.cpp:
        (WebKit::ProcessThrottler::updateAssertion):
        (WebKit::ProcessThrottler::uiAssertionWillExpireImminently):
        (WebKit::ProcessThrottler::assertionWillExpireImminently): Deleted.

        * UIProcess/ProcessThrottler.h:
        * UIProcess/ios/ProcessAssertionIOS.mm:
        (-[WKProcessAssertionBackgroundTaskManager _notifyClientsOfImminentSuspension]):
        (WebKit::ProcessAssertion::~ProcessAssertion):
        (WebKit::ProcessAndUIAssertion::~ProcessAndUIAssertion):
        (WebKit::ProcessAndUIAssertion::setClient):

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::didCompletePageTransition):
        Revert change that was landed in r242098 to work around this ProcessThrottler bug.

        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::applicationWillEnterForeground):
        Revert change that was landed in r242554 to work around this ProcessThrottler bug.

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

        Add gettid to allowed syscalls on Mac
        https://bugs.webkit.org/show_bug.cgi?id=195386
        <rdar://problem/48651255>

        Reviewed by Brent Fulgham.

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

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

        [macOS] Sandbox call violation causes WebContent process to crash
        https://bugs.webkit.org/show_bug.cgi?id=195379
        <rdar://problem/48647263>

        Reviewed by Brent Fulgham.

        A new call needs to be added to the allow list in the WebContent process' sandbox.

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

2019-03-06  Antti Koivisto  <antti@apple.com>

        [iOS] Basic hit testing for content overlapping fast-scrollable overflow
        https://bugs.webkit.org/show_bug.cgi?id=195360

        Reviewed by Simon Fraser.

        * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeHostIOS.mm:
        (WebKit::RemoteLayerTreeHost::makeNode):

        Use new UIView subclass for tiled layer hosting (so we know they have content even when contents property is nil).

        * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeViews.h:
        * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeViews.mm:
        (collectDescendantViewsAtPoint):

        Factor collection step into a function.
        Do basic skipping of event-transparent layers.

        (-[UIView _web_findDescendantViewAtPoint:withEvent:]):

        To handle overlap cases, find the scroll view that has the deepest non-transparent view hit as its descendant.

        (-[UIView _web_recursiveFindDescendantInteractibleViewAtPoint:withEvent:]): Deleted.

2019-03-06  Wenson Hsieh  <wenson_hsieh@apple.com>

        Move RenderObject::isTransparentOrFullyClippedRespectingParentFrames() to RenderLayer
        https://bugs.webkit.org/show_bug.cgi?id=195300

        Reviewed by Simon Fraser.

        Refactor some logic to use isTransparentOrFullyClippedRespectingParentFrames on RenderLayer rather than
        RenderObject; introduce a helper method to ask whether the enclosing layer of a renderer is transparent or
        clipped.

        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::enclosingLayerIsTransparentOrFullyClipped):
        (WebKit::WebPage::platformEditorState const):
        (WebKit::WebPage::requestEvasionRectsAboveSelection):
        (WebKit::WebPage::getFocusedElementInformation):

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

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

        Reviewed by Geoffrey Garen.

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

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

2019-03-05  Dean Jackson  <dino@apple.com>

        Fix WKPasswordView compilation on iOS
        https://bugs.webkit.org/show_bug.cgi?id=195344
        <rdar://problem/48620066>

        Reviewed by Dan Bates.

        Use WebKitAdditions.

        * UIProcess/ios/WKPasswordView.mm:
        (-[WKPasswordView showInScrollView:]):

2019-03-06  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] Frequent 1 second IPC deadlocks when showing a paste callout
        https://bugs.webkit.org/show_bug.cgi?id=195354
        <rdar://problem/48624675>

        Reviewed by Tim Horton.

        When triggering programmatic paste, we frequently hit deadlocks due to sync IPC going from the UI process to the
        web process and vice versa. What happens in this scenario is that prior to triggering programmatic paste, the
        page may try to move focus to a different element (e.g. a hidden editable area) before calling `execCommand`.
        This causes us to send an ElementDidFocus message to the UI process, followed by RequestDOMPasteAccess.

        However, upon receiving ElementDidFocus, we reload input views and (in the process) UIKit requests the
        autocorrection context, which we implement in WebKit using a sync message to the web process due to
        <rdar://problem/16207002> and its blocking bug <rdar://problem/48383001>. This means we'll end up in a state
        where both the UI process and web process are blocked on each other waiting for a sync IPC response, and the UI
        process is hung for a second until the IPC message times out.

        Ideally, we should fix this by addressing <rdar://problem/16207002>. However, this requires potentially large
        changes in UIKit (<rdar://problem/48383001>); for the time being, work around this deadlock by refactoring
        synchronous autocorrection context requests such that they can be resolved by an out-of-band IPC response
        (HandleAutocorrectionContext). Then prior to requesting DOM paste access, preemptively send a
        HandleAutocorrectionContext message to the UI process to unblock any pending synchronous autocorrection context
        requests.

        * UIProcess/PageClient.h:
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * UIProcess/ios/PageClientImplIOS.h:
        * UIProcess/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::handleAutocorrectionContext):
        * UIProcess/ios/WKContentViewInteraction.h:

        Make it possible for WKContentView to remember its current pending autocorrection context completion handler.
        This is invoked and cleared out in `-_invokePendingAutocorrectionContextHandler:`.

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _invokePendingAutocorrectionContextHandler:]):
        (-[WKContentView requestAutocorrectionContextWithCompletionHandler:]):
        (-[WKContentView _handleAutocorrectionContext:]):

        Handle an autocorrection context response. This is invoked when the web process either handles an autocorrection
        context message, or when it preemptively sends an autocorrection context before requesting DOM paste access.

        (+[WKAutocorrectionContext emptyAutocorrectionContext]):

        Add a helper to create an empty autocorrection context.

        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::requestAutocorrectionContext):
        (WebKit::WebPageProxy::handleAutocorrectionContext):
        (WebKit::WebPageProxy::autocorrectionContextSync): Deleted.

        Removed this sync version, since we now only have requestAutocorrectionContext.

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

        Send WebPageProxy::HandleAutocorrectionContext, and add a FIXME referencing <rdar://problem/16207002>.

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

        Split AutocorrectionContextSync into RequestAutocorrectionContext and HandleAutocorrectionContext; additionally,
        remove the existing RequestAutocorrectionContext message.

        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::requestAutocorrectionContext):
        (WebKit::WebPage::autocorrectionContextSync): Deleted.

2019-03-06  Rob Buis  <rbuis@igalia.com>

        Consider supporting the `referrerpolicy` attribute.
        https://bugs.webkit.org/show_bug.cgi?id=179053

        Reviewed by Darin Adler.

        Add a runtime flag for referrerpolicy attribute.

        * Shared/WebPreferences.yaml:
        * UIProcess/API/C/WKPreferences.cpp:
        (WKPreferencesSetReferrerPolicyAttributeEnabled):
        (WKPreferencesGetReferrerPolicyAttributeEnabled):
        * UIProcess/API/C/WKPreferencesRefPrivate.h:
        * WebProcess/Network/WebLoaderStrategy.cpp:
        (WebKit::WebLoaderStrategy::loadResource): do not hardcode choosing
        the document referrer policy.

2019-03-06  Philippe Normand  <pnormand@igalia.com>

        Unreviewed, WPE build fix after r242503

        * WebProcess/Storage/WebServiceWorkerFetchTaskClient.cpp:
        ServiceWorker messages moved from network process to another
        header, so it needs to be included.

2019-03-05  David Quesada  <david_quesada@apple.com>

        [WK2] It should be possible to follow links with 'download' attributes
        https://bugs.webkit.org/show_bug.cgi?id=195145
        rdar://problem/48462642

        Reviewed by Alex Christensen.

        When a link with a 'download' attribute is clicked and the navigation client
        says to allow the navigation (i.e. provides PolicyAction::Use),
        WebPageProxy::receivedNavigationPolicyDecision() should stop overriding this
        decision and downloading the link instead. Instead, web view should honor the
        policy chosen by the navigation delegate. This supports clients that want to
        offer the user the ability to view, rather than download, the contents of
        such links, which is permitted per the HTML spec.

        This change is only made on Cocoa platforms for now since no other ports
        expose an API on their navigation action to express whether the page intends
        to download the linked resource.

        * UIProcess/API/APINavigation.h:
        (API::Navigation::shouldPerformDownload const):
            Rename this to be in line with APINavigationAction's shouldPerformDownload()
            for consistency. 'Force' seems like too strong of a word for this property
            considering that 'forcing' the download isn't really an attribute inherent
            to the navigation, but a behavior implemented by the web page proxy.
        (API::Navigation::shouldForceDownload const): Deleted.
        * UIProcess/Cocoa/VersionChecks.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::receivedNavigationPolicyDecision):

2019-03-05  Takashi Komori  <Takashi.Komori@sony.com>

        [Curl] Implement Cookie Accept Policy.
        https://bugs.webkit.org/show_bug.cgi?id=191645

        Reviewed by Fujii Hironori.

        * NetworkProcess/Cookies/curl/WebCookieManagerCurl.cpp:
        (WebKit::WebCookieManager::platformSetHTTPCookieAcceptPolicy):
        (WebKit::WebCookieManager::platformGetHTTPCookieAcceptPolicy):
        * NetworkProcess/curl/NetworkDataTaskCurl.cpp:
        (WebKit::NetworkDataTaskCurl::curlDidReceiveResponse):
        (WebKit::NetworkDataTaskCurl::handleCookieHeaders):
        * NetworkProcess/curl/NetworkDataTaskCurl.h:

2019-03-05  Youenn Fablet  <youenn@apple.com>

        Introduce ServiceWorkerFetchTask
        https://bugs.webkit.org/show_bug.cgi?id=195130

        Reviewed by Chris Dumez.

        ServiceWorkerFetchTask is added to represent NetworkProcess side of an ongoing fetch intercepted by service worker.
        This patch should not change existing behavior.

        * CMakeLists.txt:
        * DerivedSources-input.xcfilelist:
        * DerivedSources-output.xcfilelist:
        * DerivedSources.make:
        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::didReceiveMessage):
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::didFailFetch): Deleted.
        (WebKit::NetworkProcess::didNotHandleFetch): Deleted.
        (WebKit::NetworkProcess::didReceiveFetchRedirectResponse): Deleted.
        (WebKit::NetworkProcess::didReceiveFetchResponse): Deleted.
        (WebKit::NetworkProcess::didReceiveFetchData): Deleted.
        (WebKit::NetworkProcess::didReceiveFetchFormData): Deleted.
        (WebKit::NetworkProcess::didFinishFetch): Deleted.
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:
        * NetworkProcess/ServiceWorker/WebSWServerConnection.cpp:
        (WebKit::WebSWServerConnection::cancelFetch):
        (WebKit::WebSWServerConnection::continueDidReceiveFetchResponse):
        (WebKit::WebSWServerConnection::startFetch):
        (WebKit::WebSWServerConnection::didReceiveFetchRedirectResponse): Deleted.
        (WebKit::WebSWServerConnection::didReceiveFetchResponse): Deleted.
        (WebKit::WebSWServerConnection::didReceiveFetchData): Deleted.
        (WebKit::WebSWServerConnection::didReceiveFetchFormData): Deleted.
        (WebKit::WebSWServerConnection::didFinishFetch): Deleted.
        (WebKit::WebSWServerConnection::didFailFetch): Deleted.
        (WebKit::WebSWServerConnection::didNotHandleFetch): Deleted.
        * NetworkProcess/ServiceWorker/WebSWServerConnection.h:
        * NetworkProcess/ServiceWorker/WebSWServerToContextConnection.cpp:
        (WebKit::WebSWServerToContextConnection::connectionClosed):
        (WebKit::WebSWServerToContextConnection::startFetch):
        (WebKit::WebSWServerToContextConnection::cancelFetch):
        (WebKit::WebSWServerToContextConnection::continueDidReceiveFetchResponse):
        (WebKit::WebSWServerToContextConnection::didReceiveFetchTaskMessage):
        * NetworkProcess/ServiceWorker/WebSWServerToContextConnection.h:
        * SourcesCocoa.txt:
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/Storage/WebSWContextManagerConnection.cpp:
        (WebKit::WebSWContextManagerConnection::startFetch):
        * WebProcess/Storage/WebServiceWorkerFetchTaskClient.cpp:
        (WebKit::WebServiceWorkerFetchTaskClient::didReceiveRedirection):
        (WebKit::WebServiceWorkerFetchTaskClient::didReceiveResponse):
        (WebKit::WebServiceWorkerFetchTaskClient::didReceiveData):
        (WebKit::WebServiceWorkerFetchTaskClient::didReceiveFormDataAndFinish):
        (WebKit::WebServiceWorkerFetchTaskClient::didReceiveBlobChunk):
        (WebKit::WebServiceWorkerFetchTaskClient::didFail):
        (WebKit::WebServiceWorkerFetchTaskClient::didFinish):
        (WebKit::WebServiceWorkerFetchTaskClient::didNotHandle):
        * NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.cpp: Added.
        (WebKit::ServiceWorkerFetchTask::didReceiveRedirectResponse):
        (WebKit::ServiceWorkerFetchTask::didReceiveResponse):
        (WebKit::ServiceWorkerFetchTask::didReceiveData):
        (WebKit::ServiceWorkerFetchTask::didReceiveFormData):
        (WebKit::ServiceWorkerFetchTask::didFinish):
        (WebKit::ServiceWorkerFetchTask::didFail):
        (WebKit::ServiceWorkerFetchTask::didNotHandle):
        * NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.h: Added.
        (WebKit::ServiceWorkerFetchTask::create):
        (WebKit::ServiceWorkerFetchTask::Identifier::hash const):
        (WebKit::ServiceWorkerFetchTask::identifier const):
        (WebKit::ServiceWorkerFetchTask::ServiceWorkerFetchTask):
        (WebKit::operator==):
        (WTF::ServiceWorkerFetchTaskIdentifierHash::hash):
        (WTF::ServiceWorkerFetchTaskIdentifierHash::equal):
        (WTF::HashTraits<WebKit::ServiceWorkerFetchTask::Identifier>::emptyValue):
        (WTF::HashTraits<WebKit::ServiceWorkerFetchTask::Identifier>::constructDeletedValue):
        (WTF::HashTraits<WebKit::ServiceWorkerFetchTask::Identifier>::isDeletedValue):
        * NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.messages.in: Added.

2019-03-05  Youenn Fablet  <youenn@apple.com>

        Rename requestCacheStorageSpace to requestStorageSpace
        https://bugs.webkit.org/show_bug.cgi?id=195282

        Reviewed by Chris Dumez.

        Make the name more abstract as it might be used in the future for other storage
        like IDB or service worker registrations.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::requestStorageSpace):
        (WebKit::NetworkProcess::requestCacheStorageSpace): Deleted.
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/cache/CacheStorageEngine.cpp:
        (WebKit::CacheStorage::Engine::requestSpace):
        * UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
        (WebsiteDataStoreClient::WebsiteDataStoreClient):
        * UIProcess/API/Cocoa/_WKWebsiteDataStoreDelegate.h:
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::requestStorageSpace):
        (WebKit::NetworkProcessProxy::requestCacheStorageSpace): Deleted.
        * UIProcess/Network/NetworkProcessProxy.h:
        * UIProcess/Network/NetworkProcessProxy.messages.in:
        * UIProcess/WebsiteData/WebsiteDataStoreClient.h:
        (WebKit::WebsiteDataStoreClient::requestStorageSpace):
        (WebKit::WebsiteDataStoreClient::requestCacheStorageSpace): Deleted.

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

        Drop cached WebProcesses for a given session when this session is destroyed
        https://bugs.webkit.org/show_bug.cgi?id=195212
        <rdar://problem/48301483>

        Reviewed by Geoffrey Garen.

        Drop cached WebProcesses for a give session when this session is destroyed. This way, when you close
        your private browsing window, all the processes it used get cleared and it cannot leave any state
        behind.

        * UIProcess/WebProcessCache.cpp:
        (WebKit::WebProcessCache::canCacheProcess const):
        (WebKit::WebProcessCache::addProcessIfPossible):
        (WebKit::WebProcessCache::addProcess):
        (WebKit::WebProcessCache::clearAllProcessesForSession):
        * UIProcess/WebProcessCache.h:
        (WebKit::WebProcessCache::capacity const):
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::pageEndUsingWebsiteDataStore):
        (WebKit::WebProcessPool::hasPagesUsingWebsiteDataStore const):
        * UIProcess/WebProcessPool.h:

2019-03-05  Brady Eidson  <beidson@apple.com>

        Correctly handle sandbox extensions when the same WKWebView loads multiple file:// URLs.
        <rdar://problem/47820581> and https://bugs.webkit.org/show_bug.cgi?id=195291

        Reviewed by Tim Horton.

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::SandboxExtensionTracker::shouldReuseCommittedSandboxExtension): If there is a pendingProvisionalSandboxExtension
          then its existence should override our willingness to reuse the existing committed extension.
        (WebKit::shouldReuseCommittedSandboxExtension): Deleted.
        * WebProcess/WebPage/WebPage.h:

2019-03-05  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r242403.

        Caused layout test crashes on iOS simulator.

        Reverted changeset:

        "[ContentChangeObserver] Introduce fixed duration content
        observation"
        https://bugs.webkit.org/show_bug.cgi?id=195295
        https://trac.webkit.org/changeset/242403

2019-03-05  Loïc Yhuel  <loic.yhuel@softathome.com>

        [WPE] Do not create a PlatformDisplay in the Service Worker process
        https://bugs.webkit.org/show_bug.cgi?id=194830

        Reviewed by Žan Doberšek.

        It avoids opening the Wayland socket in this WPEWebProcess, which might cause issues
        depending on the platform, and allocates unneeded resources.

        * Shared/WebProcessCreationParameters.cpp:
        (WebKit::WebProcessCreationParameters::encode const):
        (WebKit::WebProcessCreationParameters::decode):
        * Shared/WebProcessCreationParameters.h: Add new isServiceWorkerProcess parameter.
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::initializeNewWebProcess): Set isServiceWorkerProcess parameter.
        * UIProcess/glib/WebProcessPoolGLib.cpp:
        (WebKit::WebProcessPool::platformInitializeWebProcess): No implementationLibraryName and hostClientFileDescriptor for Service Worker.
        * WebProcess/glib/WebProcessGLib.cpp:
        (WebKit::WebProcess::platformInitializeWebProcess): No wpe_loader_init nor PlatformDisplayLibWPE for Service Worker.

2019-03-04  Brady Eidson  <beidson@apple.com>

        Unreviewed, rolling out r242376.

        Broke some tests

        Reverted changeset:

        "Correctly handle sandbox extensions when the same WKWebView
        loads multiple file:// URLs."
        https://bugs.webkit.org/show_bug.cgi?id=195291
        https://trac.webkit.org/changeset/242376

2019-03-04  Fujii Hironori  <Hironori.Fujii@sony.com>

        Use a SQLite database to hold the ResourceLoadStatistics data
        https://bugs.webkit.org/show_bug.cgi?id=194867
        <rdar://problem/24240854>

        Unreviewed build fix for WinCairo.

        ResourceLoadStatisticsDebug and RELEASE_LOG_INFO_IF are not
        defined because WinCairo port defines RELEASE_LOG_DISABLED.

        * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:
        (WebKit::ResourceLoadStatisticsDatabaseStore::requestStorageAccess): Enclosed RELEASE_LOG_INFO_IF with #if !RELEASE_LOG_DISABLED.
        (WebKit::ResourceLoadStatisticsDatabaseStore::requestStorageAccessUnderOpener): Ditto.
        (WebKit::ResourceLoadStatisticsDatabaseStore::updateCookieBlocking): Ditto.

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

        Use a SQLite database to hold the ResourceLoadStatistics data
        https://bugs.webkit.org/show_bug.cgi?id=194867
        <rdar://problem/24240854>

        Reviewed by Chris Dumez.

        The ResourceLoadStatistics database plist is inefficient. It requires more memory use
        than it needs, and forces lots of looping and string comparisons to find information.

        This problem has already been solved in the form of relational databases. We use them
        elsewhere in WebKit, and should do so for this storage as well.

        This patch creates an optional SQLite database to handle ITP operations.

        1. It adds a new internal experimental feature flag to activate it. It requires the user
           exit and restart the process to take effect.
        2. It populates itself from the existing plist file (if it exists).
        3. It stops using the plist in favor of the database.
        4. It does queries and other operations using the database instead of the old hash table
           implementation.

        This patch refactors the exisiting ResourceLoadStatisticsMemoryStore class into a base
        ResourceLoadStatisticsStore class, which ResourceLoadStatisticsMemoryStore is based on.
        It adds a new ResourceLoadStatisticsDatabaseStore that is implemented in terms of SQL
        operations.

        These code changes should not have any impact on existing operations, and when enabled
        should produce the same test results.

        * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp: Added.
        (WebKit::ResourceLoadStatisticsDatabaseStore::ResourceLoadStatisticsDatabaseStore):
        (WebKit::ResourceLoadStatisticsDatabaseStore::createSchema):
        (WebKit::ResourceLoadStatisticsDatabaseStore::prepareStatements):
        (WebKit::ResourceLoadStatisticsDatabaseStore::insertObservedDomain):
        (WebKit::ResourceLoadStatisticsDatabaseStore::relationshipExists const):
        (WebKit::ResourceLoadStatisticsDatabaseStore::insertDomainRelationship):
        (WebKit::ResourceLoadStatisticsDatabaseStore::confirmDomainDoesNotExist const):
        (WebKit::ResourceLoadStatisticsDatabaseStore::domainIDFromString const):
        (WebKit::ResourceLoadStatisticsDatabaseStore::insertDomainRelationships):
        (WebKit::ResourceLoadStatisticsDatabaseStore::databaseIsEmpty const):
        (WebKit::ResourceLoadStatisticsDatabaseStore::populateFromMemoryStore):
        (WebKit::ResourceLoadStatisticsDatabaseStore::calculateAndSubmitTelemetry const):
        (WebKit::ResourceLoadStatisticsDatabaseStore::incrementRecordsDeletedCountForDomains):
        (WebKit::ResourceLoadStatisticsDatabaseStore::recursivelyFindNonPrevalentDomainsThatRedirectedToThisDomain):
        (WebKit::buildList):
        (WebKit::ResourceLoadStatisticsDatabaseStore::markAsPrevalentIfHasRedirectedToPrevalent):
        (WebKit::listToString):
        (WebKit::ResourceLoadStatisticsDatabaseStore::findNotVeryPrevalentResources):
        (WebKit::ResourceLoadStatisticsDatabaseStore::reclassifyResources):
        (WebKit::ResourceLoadStatisticsDatabaseStore::classifyPrevalentResources):
        (WebKit::ResourceLoadStatisticsDatabaseStore::syncStorageIfNeeded):
        (WebKit::ResourceLoadStatisticsDatabaseStore::syncStorageImmediately):
        (WebKit::ResourceLoadStatisticsDatabaseStore::hasStorageAccess):
        (WebKit::ResourceLoadStatisticsDatabaseStore::requestStorageAccess):
        (WebKit::ResourceLoadStatisticsDatabaseStore::requestStorageAccessUnderOpener):
        (WebKit::ResourceLoadStatisticsDatabaseStore::grantStorageAccess):
        (WebKit::ResourceLoadStatisticsDatabaseStore::grantStorageAccessInternal):
        (WebKit::ResourceLoadStatisticsDatabaseStore::grandfatherDataForDomains):
        (WebKit::ResourceLoadStatisticsDatabaseStore::ensurePrevalentResourcesForDebugMode):
        (WebKit::ResourceLoadStatisticsDatabaseStore::logFrameNavigation):
        (WebKit::ResourceLoadStatisticsDatabaseStore::logSubresourceLoading):
        (WebKit::ResourceLoadStatisticsDatabaseStore::logSubresourceRedirect):
        (WebKit::ResourceLoadStatisticsDatabaseStore::setUserInteraction):
        (WebKit::ResourceLoadStatisticsDatabaseStore::logUserInteraction):
        (WebKit::ResourceLoadStatisticsDatabaseStore::clearUserInteraction):
        (WebKit::ResourceLoadStatisticsDatabaseStore::hasHadUserInteraction):
        (WebKit::ResourceLoadStatisticsDatabaseStore::setPrevalentResource):
        (WebKit::ResourceLoadStatisticsDatabaseStore::setDomainsAsPrevalent):
        (WebKit::ResourceLoadStatisticsDatabaseStore::dumpResourceLoadStatistics const):
        (WebKit::ResourceLoadStatisticsDatabaseStore::predicateValueForDomain const):
        (WebKit::ResourceLoadStatisticsDatabaseStore::isPrevalentResource const):
        (WebKit::ResourceLoadStatisticsDatabaseStore::isVeryPrevalentResource const):
        (WebKit::ResourceLoadStatisticsDatabaseStore::isRegisteredAsSubresourceUnder const):
        (WebKit::ResourceLoadStatisticsDatabaseStore::isRegisteredAsSubFrameUnder const):
        (WebKit::ResourceLoadStatisticsDatabaseStore::isRegisteredAsRedirectingTo const):
        (WebKit::ResourceLoadStatisticsDatabaseStore::clearPrevalentResource):
        (WebKit::ResourceLoadStatisticsDatabaseStore::setGrandfathered):
        (WebKit::ResourceLoadStatisticsDatabaseStore::isGrandfathered const):
        (WebKit::ResourceLoadStatisticsDatabaseStore::setSubframeUnderTopFrameOrigin):
        (WebKit::ResourceLoadStatisticsDatabaseStore::setSubresourceUnderTopFrameOrigin):
        (WebKit::ResourceLoadStatisticsDatabaseStore::setSubresourceUniqueRedirectTo):
        (WebKit::ResourceLoadStatisticsDatabaseStore::setSubresourceUniqueRedirectFrom):
        (WebKit::ResourceLoadStatisticsDatabaseStore::setTopFrameUniqueRedirectTo):
        (WebKit::ResourceLoadStatisticsDatabaseStore::setTopFrameUniqueRedirectFrom):
        (WebKit::ResourceLoadStatisticsDatabaseStore::ensureResourceStatisticsForPrimaryDomain):
        (WebKit::ResourceLoadStatisticsDatabaseStore::clear):
        (WebKit::ResourceLoadStatisticsDatabaseStore::cookieTreatmentForOrigin const):
        (WebKit::ResourceLoadStatisticsDatabaseStore::hasUserGrantedStorageAccessThroughPrompt):
        (WebKit::ResourceLoadStatisticsDatabaseStore::domainsToBlock const):
        (WebKit::ResourceLoadStatisticsDatabaseStore::updateCookieBlocking):
        (WebKit::ResourceLoadStatisticsDatabaseStore::updateCookieBlockingForDomains):
        (WebKit::ResourceLoadStatisticsDatabaseStore::clearBlockingStateForDomains):
        (WebKit::ResourceLoadStatisticsDatabaseStore::processStatistics const):
        (WebKit::ResourceLoadStatisticsDatabaseStore::prevalentDomains const):
        (WebKit::ResourceLoadStatisticsDatabaseStore::findExpiredUserInteractions const):
        (WebKit::ResourceLoadStatisticsDatabaseStore::clearExpiredUserInteractions):
        (WebKit::ResourceLoadStatisticsDatabaseStore::clearGrandfathering):
        (WebKit::ResourceLoadStatisticsDatabaseStore::topPrivatelyControlledDomainsToRemoveWebsiteDataFor):
        (WebKit::ResourceLoadStatisticsDatabaseStore::pruneStatisticsIfNeeded):
        (WebKit::ResourceLoadStatisticsDatabaseStore::updateLastSeen):
        (WebKit::ResourceLoadStatisticsDatabaseStore::setLastSeen):
        (WebKit::ResourceLoadStatisticsDatabaseStore::setVeryPrevalentResource):
        (WebKit::ResourceLoadStatisticsDatabaseStore::removeAllStorageAccess):
        * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h: Added.
        (WebKit::ResourceLoadStatisticsDatabaseStore::isEmpty const):
        * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp:
        (WebKit::ResourceLoadStatisticsMemoryStore::ResourceLoadStatisticsMemoryStore):
        (WebKit::ResourceLoadStatisticsMemoryStore::incrementRecordsDeletedCountForDomains):
        (WebKit::ResourceLoadStatisticsMemoryStore::classifyPrevalentResources):
        (WebKit::ResourceLoadStatisticsMemoryStore::syncStorageIfNeeded):
        (WebKit::ResourceLoadStatisticsMemoryStore::syncStorageImmediately):
        (WebKit::ResourceLoadStatisticsMemoryStore::grandfatherDataForDomains):
        (WebKit::domainsToString): Deleted.
        (WebKit::OperatingDate::fromWallTime): Deleted.
        (WebKit::OperatingDate::today): Deleted.
        (WebKit::OperatingDate::secondsSinceEpoch const): Deleted.
        (WebKit::OperatingDate::operator== const): Deleted.
        (WebKit::OperatingDate::operator< const): Deleted.
        (WebKit::OperatingDate::operator<= const): Deleted.
        (WebKit::OperatingDate::OperatingDate): Deleted.
        (WebKit::mergeOperatingDates): Deleted.
        (WebKit::computeImportance): Deleted.
        (WebKit::ResourceLoadStatisticsMemoryStore::~ResourceLoadStatisticsMemoryStore): Deleted.
        (WebKit::ResourceLoadStatisticsMemoryStore::setNotifyPagesWhenDataRecordsWereScanned): Deleted.
        (WebKit::ResourceLoadStatisticsMemoryStore::setShouldClassifyResourcesBeforeDataRecordsRemoval): Deleted.
        (WebKit::ResourceLoadStatisticsMemoryStore::setShouldSubmitTelemetry): Deleted.
        (WebKit::ResourceLoadStatisticsMemoryStore::removeDataRecords): Deleted.
        (WebKit::ResourceLoadStatisticsMemoryStore::processStatisticsAndDataRecords): Deleted.
        (WebKit::ResourceLoadStatisticsMemoryStore::grandfatherExistingWebsiteData): Deleted.
        (WebKit::ResourceLoadStatisticsMemoryStore::setResourceLoadStatisticsDebugMode): Deleted.
        (WebKit::ResourceLoadStatisticsMemoryStore::setPrevalentResourceForDebugMode): Deleted.
        (WebKit::ResourceLoadStatisticsMemoryStore::scheduleStatisticsProcessingRequestIfNecessary): Deleted.
        (WebKit::ResourceLoadStatisticsMemoryStore::cancelPendingStatisticsProcessingRequest): Deleted.
        (WebKit::ResourceLoadStatisticsMemoryStore::setTimeToLiveUserInteraction): Deleted.
        (WebKit::ResourceLoadStatisticsMemoryStore::setMinimumTimeBetweenDataRecordsRemoval): Deleted.
        (WebKit::ResourceLoadStatisticsMemoryStore::setGrandfatheringTime): Deleted.
        (WebKit::ResourceLoadStatisticsMemoryStore::setCacheMaxAgeCap): Deleted.
        (WebKit::ResourceLoadStatisticsMemoryStore::updateCacheMaxAgeCap): Deleted.
        (WebKit::ResourceLoadStatisticsMemoryStore::setAgeCapForClientSideCookies): Deleted.
        (WebKit::ResourceLoadStatisticsMemoryStore::updateClientSideCookiesAgeCap): Deleted.
        (WebKit::ResourceLoadStatisticsMemoryStore::shouldRemoveDataRecords const): Deleted.
        (WebKit::ResourceLoadStatisticsMemoryStore::setDataRecordsBeingRemoved): Deleted.
        (WebKit::debugLogDomainsInBatches): Deleted.
        (WebKit::ResourceLoadStatisticsMemoryStore::includeTodayAsOperatingDateIfNecessary): Deleted.
        (WebKit::ResourceLoadStatisticsMemoryStore::hasStatisticsExpired const): Deleted.
        (WebKit::ResourceLoadStatisticsMemoryStore::setMaxStatisticsEntries): Deleted.
        (WebKit::ResourceLoadStatisticsMemoryStore::setPruneEntriesDownTo): Deleted.
        (WebKit::ResourceLoadStatisticsMemoryStore::resetParametersToDefaultValues): Deleted.
        (WebKit::ResourceLoadStatisticsMemoryStore::logTestingEvent): Deleted.
        (WebKit::ResourceLoadStatisticsMemoryStore::didCreateNetworkProcess): Deleted.
        * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.h:
        (WebKit::ResourceLoadStatisticsMemoryStore::data const):
        (WebKit::ResourceLoadStatisticsMemoryStore::isDebugModeEnabled const): Deleted.
        (WebKit::ResourceLoadStatisticsMemoryStore::store const): Deleted.
        (WebKit::ResourceLoadStatisticsMemoryStore::setStorageAccessPromptsEnabled): Deleted.
        (WebKit::ResourceLoadStatisticsMemoryStore::setDebugLogggingEnabled): Deleted.
        (): Deleted.
        * NetworkProcess/Classifier/ResourceLoadStatisticsStore.cpp: Added.
        (WebKit::domainsToString):
        (WebKit::OperatingDate::fromWallTime):
        (WebKit::OperatingDate::today):
        (WebKit::OperatingDate::secondsSinceEpoch const):
        (WebKit::OperatingDate::operator== const):
        (WebKit::OperatingDate::operator< const):
        (WebKit::OperatingDate::operator<= const):
        (WebKit::ResourceLoadStatisticsStore::ResourceLoadStatisticsStore):
        (WebKit::ResourceLoadStatisticsStore::~ResourceLoadStatisticsStore):
        (WebKit::ResourceLoadStatisticsStore::calculateAndSubmitTelemetry const):
        (WebKit::ResourceLoadStatisticsStore::computeImportance):
        (WebKit::ResourceLoadStatisticsStore::setNotifyPagesWhenDataRecordsWereScanned):
        (WebKit::ResourceLoadStatisticsStore::setShouldClassifyResourcesBeforeDataRecordsRemoval):
        (WebKit::ResourceLoadStatisticsStore::setShouldSubmitTelemetry):
        (WebKit::ResourceLoadStatisticsStore::removeDataRecords):
        (WebKit::ResourceLoadStatisticsStore::processStatisticsAndDataRecords):
        (WebKit::ResourceLoadStatisticsStore::grandfatherExistingWebsiteData):
        (WebKit::ResourceLoadStatisticsStore::setResourceLoadStatisticsDebugMode):
        (WebKit::ResourceLoadStatisticsStore::setPrevalentResourceForDebugMode):
        (WebKit::ResourceLoadStatisticsStore::scheduleStatisticsProcessingRequestIfNecessary):
        (WebKit::ResourceLoadStatisticsStore::cancelPendingStatisticsProcessingRequest):
        (WebKit::ResourceLoadStatisticsStore::setTimeToLiveUserInteraction):
        (WebKit::ResourceLoadStatisticsStore::setMinimumTimeBetweenDataRecordsRemoval):
        (WebKit::ResourceLoadStatisticsStore::setGrandfatheringTime):
        (WebKit::ResourceLoadStatisticsStore::setCacheMaxAgeCap):
        (WebKit::ResourceLoadStatisticsStore::updateCacheMaxAgeCap):
        (WebKit::ResourceLoadStatisticsStore::setAgeCapForClientSideCookies):
        (WebKit::ResourceLoadStatisticsStore::updateClientSideCookiesAgeCap):
        (WebKit::ResourceLoadStatisticsStore::shouldRemoveDataRecords const):
        (WebKit::ResourceLoadStatisticsStore::setDataRecordsBeingRemoved):
        (WebKit::ResourceLoadStatisticsStore::updateCookieBlockingForDomains):
        (WebKit::ResourceLoadStatisticsStore::clearBlockingStateForDomains):
        (WebKit::ResourceLoadStatisticsStore::processStatistics const):
        (WebKit::ResourceLoadStatisticsStore::statisticsEpirationTime const):
        (WebKit::ResourceLoadStatisticsStore::mergeOperatingDates):
        (WebKit::ResourceLoadStatisticsStore::includeTodayAsOperatingDateIfNecessary):
        (WebKit::ResourceLoadStatisticsStore::hasStatisticsExpired const):
        (WebKit::ResourceLoadStatisticsStore::setMaxStatisticsEntries):
        (WebKit::ResourceLoadStatisticsStore::setPruneEntriesDownTo):
        (WebKit::ResourceLoadStatisticsStore::resetParametersToDefaultValues):
        (WebKit::ResourceLoadStatisticsStore::logTestingEvent):
        (WebKit::ResourceLoadStatisticsStore::removeAllStorageAccess):
        (WebKit::ResourceLoadStatisticsStore::didCreateNetworkProcess):
        (WebKit::ResourceLoadStatisticsStore::debugLogDomainsInBatches):
        * NetworkProcess/Classifier/ResourceLoadStatisticsStore.h: Copied from Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.h.
        (WebKit::OperatingDate::OperatingDate):
        (WebKit::ResourceLoadStatisticsStore::isEmpty const):
        (WebKit::ResourceLoadStatisticsStore::data const):
        (WebKit::ResourceLoadStatisticsStore::isDebugModeEnabled const):
        (WebKit::ResourceLoadStatisticsStore::store const):
        (WebKit::ResourceLoadStatisticsStore::setStorageAccessPromptsEnabled):
        (WebKit::ResourceLoadStatisticsStore::setDebugLogggingEnabled):
        * NetworkProcess/Classifier/ResourceLoadStatisticsStoreCocoa.mm: Renamed from Source/WebKit/UIProcess/Cocoa/ResourceLoadStatisticsMemoryStoreCocoa.mm.
        (WebKit::ResourceLoadStatisticsStore::registerUserDefaultsIfNeeded):
        * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::setNotifyPagesWhenDataRecordsWereScanned):
        (WebKit::WebResourceLoadStatisticsStore::setShouldClassifyResourcesBeforeDataRecordsRemoval):
        (WebKit::WebResourceLoadStatisticsStore::setShouldSubmitTelemetry):
        (WebKit::WebResourceLoadStatisticsStore::WebResourceLoadStatisticsStore):
        (WebKit::WebResourceLoadStatisticsStore::flushAndDestroyPersistentStore):
        (WebKit::WebResourceLoadStatisticsStore::setResourceLoadStatisticsDebugMode):
        (WebKit::WebResourceLoadStatisticsStore::setPrevalentResourceForDebugMode):
        (WebKit::WebResourceLoadStatisticsStore::scheduleStatisticsAndDataRecordsProcessing):
        (WebKit::WebResourceLoadStatisticsStore::hasStorageAccess):
        (WebKit::WebResourceLoadStatisticsStore::requestStorageAccess):
        (WebKit::WebResourceLoadStatisticsStore::requestStorageAccessUnderOpener):
        (WebKit::WebResourceLoadStatisticsStore::grantStorageAccess):
        (WebKit::WebResourceLoadStatisticsStore::performDailyTasks):
        (WebKit::WebResourceLoadStatisticsStore::logFrameNavigation):
        (WebKit::WebResourceLoadStatisticsStore::logWebSocketLoading):
        (WebKit::WebResourceLoadStatisticsStore::logSubresourceLoading):
        (WebKit::WebResourceLoadStatisticsStore::logSubresourceRedirect):
        (WebKit::WebResourceLoadStatisticsStore::logUserInteraction):
        (WebKit::WebResourceLoadStatisticsStore::clearUserInteraction):
        (WebKit::WebResourceLoadStatisticsStore::hasHadUserInteraction):
        (WebKit::WebResourceLoadStatisticsStore::setLastSeen):
        (WebKit::WebResourceLoadStatisticsStore::setPrevalentResource):
        (WebKit::WebResourceLoadStatisticsStore::setVeryPrevalentResource):
        (WebKit::WebResourceLoadStatisticsStore::isPrevalentResource):
        (WebKit::WebResourceLoadStatisticsStore::isVeryPrevalentResource):
        (WebKit::WebResourceLoadStatisticsStore::isRegisteredAsSubresourceUnder):
        (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::scheduleCookieBlockingUpdate):
        (WebKit::WebResourceLoadStatisticsStore::scheduleCookieBlockingUpdateForDomains):
        (WebKit::WebResourceLoadStatisticsStore::scheduleClearBlockingStateForDomains):
        (WebKit::WebResourceLoadStatisticsStore::scheduleClearInMemoryAndPersistent):
        (WebKit::WebResourceLoadStatisticsStore::setTimeToLiveUserInteraction):
        (WebKit::WebResourceLoadStatisticsStore::setMinimumTimeBetweenDataRecordsRemoval):
        (WebKit::WebResourceLoadStatisticsStore::setGrandfatheringTime):
        (WebKit::WebResourceLoadStatisticsStore::setMaxStatisticsEntries):
        (WebKit::WebResourceLoadStatisticsStore::setPruneEntriesDownTo):
        (WebKit::WebResourceLoadStatisticsStore::resetParametersToDefaultValues):
        * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h:
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::initializeNetworkProcess):
        * NetworkProcess/NetworkProcessCreationParameters.cpp:
        (WebKit::NetworkProcessCreationParameters::encode const):
        (WebKit::NetworkProcessCreationParameters::decode):
        * NetworkProcess/NetworkProcessCreationParameters.h:
        * Platform/classifier/ResourceLoadStatisticsClassifier.cpp:
        (WebKit::ResourceLoadStatisticsClassifier::calculateResourcePrevalence):
        * Platform/classifier/ResourceLoadStatisticsClassifier.h:
        * Shared/WebPreferences.yaml:
        * Sources.txt:
        * SourcesCocoa.txt:
        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        (WebKit::WebProcessPool::platformInitializeNetworkProcess):
        * UIProcess/WebProcessPool.cpp:
        * WebKit.xcodeproj/project.pbxproj:

2019-03-04  Zalan Bujtas  <zalan@apple.com>

        [ContentChangeObserver] Introduce fixed duration content observation
        https://bugs.webkit.org/show_bug.cgi?id=195295
        <rdar://problem/48579913>

        Reviewed by Simon Fraser.

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

2019-03-04  Truitt Savell  <tsavell@apple.com>

        Unreviewed, rolling out r242396.

        Found issue to be unrelated. reverting my rollout.

        Reverted changeset:

        "Unreviewed, rolling out r242222."
        https://bugs.webkit.org/show_bug.cgi?id=193683
        https://trac.webkit.org/changeset/242396

2019-03-04  Jiewen Tan  <jiewen_tan@apple.com>

        Unreviewed, a followup after r242336

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::webViewDidMoveToWindow):
        Copy the list of observers before iterating it to avoid observers modifying the list.

2019-03-04  Truitt Savell  <tsavell@apple.com>

        Unreviewed, rolling out r242222.

        Broke internal debug testing

        Reverted changeset:

        "[iOS] Move calls to [UIKeyboard isInHardwareKeyboardMode] to
        the UI process."
        https://bugs.webkit.org/show_bug.cgi?id=193683
        https://trac.webkit.org/changeset/242222

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

        Unreviewed build fix after r242378

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

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

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

        Reviewed by Alex Christensen.

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

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

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

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

        Fix crashes when NetworkResourceLoader/NetworkLoadChecker are destroyed during HTTPS upgrade check
        https://bugs.webkit.org/show_bug.cgi?id=195238
        <rdar://problem/47598656>

        Reviewed by Chris Dumez.

        * NetworkProcess/NetworkLoadChecker.cpp:
        (WebKit::NetworkLoadChecker::checkRequest):

2019-03-04  Brady Eidson  <beidson@apple.com>

        Correctly handle sandbox extensions when the same WKWebView loads multiple file:// URLs.
        <rdar://problem/47820581> and https://bugs.webkit.org/show_bug.cgi?id=195291

        Reviewed by Andy Estes.

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::shouldReuseCommittedSandboxExtension): Only retain the previous sandbox extension if the file URL
          we're currently loading is functionally equivalent to the previous one.

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

        Drop legacy userAgentForURL injected bundle SPI
        https://bugs.webkit.org/show_bug.cgi?id=195222
        <rdar://problem/46734147>

        Reviewed by Darin Adler.

        Drop legacy userAgentForURL injected bundle SPI. There are no longer any clients, and using
        WebsitePolicies.customUserAgent is the way to go nowadays.

        * WebProcess/InjectedBundle/API/APIInjectedBundlePageLoaderClient.h:
        (API::InjectedBundle::PageLoaderClient::willDestroyFrame):
        (API::InjectedBundle::PageLoaderClient::userAgentForURL const): Deleted.
        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInLoadDelegate.h:
        * WebProcess/InjectedBundle/API/c/WKBundlePageLoaderClient.h:
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:
        (setUpPageLoaderClient):
        (userAgentForURL): Deleted.
        * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.cpp:
        (WebKit::InjectedBundlePageLoaderClient::userAgentForURL const): Deleted.
        * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::userAgent const):

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

        Do not share WebProcesses between private and regular sessions
        https://bugs.webkit.org/show_bug.cgi?id=195189
        <rdar://problem/48421064>

        Reviewed by Alex Christensen.

        Do not share WebProcesses between private and regular sessions. There are some privacy concerns.
        Also, some of the WebsiteDataStore informations are passed via WebProcessCreationParameters (e.g.
        ApplicationCache path) and cannot be updated later.

        There were 2 cases where this could happen and that are fixed in the patch:
        - A process may be prewarmed with a given website data store and then later on used for a page
          associated with a different data store. We now prevent this. While this is not necessary for
          privacy reasons, it is still useful because our code currently does not support well uses
          different sessions inside a single WebProcess, as mentioned above.
        - The client can force a WebsiteDataStore swap when responding to the decidePolicyForNavigationAction,
          via the WebsitePolicies. To address the issue, we now force a process swap whenever the client
          makes such a change.

        As a result, WebProcessProxy::websiteDataStore() now makes sense and is always correct. It can
        also only contains pages whose WebPageProxy::websiteDataStore() returns the same store.

        * UIProcess/API/C/WKContext.cpp:
        (WKContextWarmInitialProcess):
        * UIProcess/API/Cocoa/WKProcessPool.mm:
        (-[WKProcessPool _warmInitialProcess]):
        * UIProcess/ProvisionalPageProxy.cpp:
        (WebKit::ProvisionalPageProxy::ProvisionalPageProxy):
        (WebKit::ProvisionalPageProxy::~ProvisionalPageProxy):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::notifyProcessPoolToPrewarm):
        (WebKit::WebPageProxy::reattachToWebProcess):
        (WebKit::WebPageProxy::swapToWebProcess):
        (WebKit::WebPageProxy::close):
        (WebKit::WebPageProxy::receivedNavigationPolicyDecision):
        (WebKit::WebPageProxy::commitProvisionalPage):
        (WebKit::WebPageProxy::creationParameters):
        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::websiteDataStore):
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::ensureNetworkProcess):
        (WebKit::WebProcessPool::tryTakePrewarmedProcess):
        (WebKit::WebProcessPool::prewarmProcess):
        (WebKit::WebProcessPool::createWebPage):
        (WebKit::WebProcessPool::pageBeginUsingWebsiteDataStore):
        (WebKit::WebProcessPool::pageEndUsingWebsiteDataStore):
        (WebKit::WebProcessPool::didReachGoodTimeToPrewarm):
        (WebKit::WebProcessPool::processForNavigation):
        (WebKit::WebProcessPool::processForNavigationInternal):
        (WebKit::WebProcessPool::findReusableSuspendedPageProcess):
        * UIProcess/WebProcessPool.h:
        (WebKit::WebProcessPool::sendToOneProcess):
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::createWebPage):
        (WebKit::WebProcessProxy::addExistingWebPage):
        (WebKit::WebProcessProxy::removeWebPage):
        * UIProcess/WebProcessProxy.h:

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

        [iOS] Improve our file picker
        https://bugs.webkit.org/show_bug.cgi?id=195284
        <rdar://problem/45655856>

        Reviewed by Tim Horton and Wenson Hsieh.

        Improve our file picker on iOS so that:
        - Accepted file extensions specified in the HTML (e.g. <input type="file"> accept=".pdf">) are now
          properly reflected in the file picker. Previously, we only we only supported MIME types in the
          accept attribute that only Image / Video ones.
        - If accepted types are specified in the HTML and not of them are Video or Image types, then bypass
          the UIDocumentMenuViewController and show the file picker directly (as if the user had tapped on
          "Browse..." on that menu). Other menu items such as "Take Photo or Video" and "Photo Library" do
          not make sense if the page only accepts PDF files for example.

        Things that we should do but are not fixed in this patch:
        - Stop using UIDocumentMenuViewController entirely since it was deprecated in favor of using
          UIDocumentPickerViewController directly.
        - Add multiple selection support, which is supported both on the HTML side and in the
          UIDocumentPickerViewController API.

        * UIProcess/ios/forms/WKFileUploadPanel.mm:
        (arrayContainsUTIThatConformsTo):
        (-[WKFileUploadPanel dealloc]):
        (-[WKFileUploadPanel presentWithParameters:resultListener:]):
        (UTIsForMIMETypes):
        (-[WKFileUploadPanel _mediaTypesForPickerSourceType:]):
        (-[WKFileUploadPanel _cameraButtonLabelAllowingPhoto:allowingVideo:]):
        (-[WKFileUploadPanel _showDocumentPickerMenu]):

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

        REGRESSION: ( r240978-r240985 ) [ iOS Release ] Layout Test imported/w3c/web-platform-tests/xhr/send-redirect-post-upload.htm is crashing
        https://bugs.webkit.org/show_bug.cgi?id=194523

        Reviewed by Ryosuke Niwa.

        Attempt to work around a CFNetwork bug in the timing of tearing down tasks with upload streams.
        See rdar://problem/28233746.

        * NetworkProcess/cocoa/NetworkDataTaskCocoa.h:
        * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
        (WebKit::NetworkDataTaskCocoa::~NetworkDataTaskCocoa):
        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (-[WKNetworkSessionDelegate URLSession:task:needNewBodyStream:]):

2019-03-04  Carlos Garcia Campos  <cgarcia@igalia.com>

        [CoordinatedGraphics] The compositing loop is still running even after exiting AC mode
        https://bugs.webkit.org/show_bug.cgi?id=195270

        Reviewed by Don Olmstead.

        Suspend the threaded compositor when the painting is paused or layer flush disabled, and resume it again when
        painting is resumed and layer flush enabled.

        * Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:
        (WebKit::ThreadedCompositor::suspend): Increment the suspend counter and mark the scene as inactive if it was suspended.
        (WebKit::ThreadedCompositor::resume): Decrement the suspend counter and mark the scene as active if it's now resumed.
        * Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.h:
        * WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp:
        (WebKit::DrawingAreaCoordinatedGraphics::forceRepaint): Return early if layer tree state is frozen.
        (WebKit::DrawingAreaCoordinatedGraphics::forceRepaintAsync): Ditto.
        * WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.cpp:
        (WebKit::LayerTreeHost::setLayerFlushSchedulingEnabled): Call ThreadedCompositor::suspend()/resume().
        (WebKit::LayerTreeHost::pauseRendering): Call ThreadedCompositor::suspend.
        (WebKit::LayerTreeHost::resumeRendering): Call ThreadedCompositor::resume().

2019-03-04  Simon Fraser  <simon.fraser@apple.com>

        Share more code between overflow and frame scrolling nodes, fixing overflow scrollbar display
        https://bugs.webkit.org/show_bug.cgi?id=195258

        Reviewed by Antti Koivisto.

        This patch moves management of scrollbar layers and scrollbar painters ("NSScrollerImp") down to
        ScrollingStateScrollingNode to be shared between frame and overflow nodes, allowing for
        scrolling thread updates of overflow scrollbars. It also moves some scrolling tree-side code
        to ScrollingTreeScrollingNodeDelegateMac to be shared between the "tree" nodes for overflow and frames.

        Layers for scrollbars are given to scrolling state nodes via setNodeLayers() now, and
        RenderLayerCompositor::updateScrollingNodeLayers() is added to provide a bottleneck to call that.
        At some point AsyncScrollingCoordinator::scrollableAreaScrollbarLayerDidChange() should be relieved
        of the responsibility of pushing scrollbar layers (but the scrolling state tree needs to hold
        references to GraphicsLayers before that becomes safe).
        
        The actual fix that allows overflow scrollbars to show is the change in
        AsyncScrollingCoordinator::scrollableAreaScrollbarLayerDidChange() that calls scrollableArea.*ScrollbarLayerDidChange()
        for all ScrollableAreas. This ensures that the CALayer is pushed onto the NSScrollerImp.

        * Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp:
        (ArgumentCoder<ScrollingStateScrollingNode>::encode):
        (ArgumentCoder<ScrollingStateFrameScrollingNode>::encode):
        (ArgumentCoder<ScrollingStateScrollingNode>::decode):
        (ArgumentCoder<ScrollingStateFrameScrollingNode>::decode):
        * SourcesCocoa.txt:
        * UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.cpp:
        (WebKit::RemoteScrollingCoordinatorProxy::connectStateNodeLayers):
        * UIProcess/RemoteLayerTree/RemoteScrollingTree.cpp:
        (WebKit::RemoteScrollingTree::createScrollingTreeNode):
        * UIProcess/RemoteLayerTree/mac/ScrollingTreeFrameScrollingNodeRemoteMac.cpp:
        (WebKit::ScrollingTreeFrameScrollingNodeRemoteMac::commitStateBeforeChildren):
        (WebKit::ScrollingTreeFrameScrollingNodeRemoteMac::repositionRelatedLayers):
        (WebKit::ScrollingTreeFrameScrollingNodeRemoteMac::handleMouseEvent):
        * UIProcess/RemoteLayerTree/mac/ScrollingTreeOverflowScrollingNodeRemoteMac.cpp: Copied from Source/WebKit/UIProcess/RemoteLayerTree/mac/ScrollingTreeFrameScrollingNodeRemoteMac.cpp.
        (WebKit::ScrollingTreeOverflowScrollingNodeRemoteMac::create):
        (WebKit::ScrollingTreeOverflowScrollingNodeRemoteMac::ScrollingTreeOverflowScrollingNodeRemoteMac):
        (WebKit::ScrollingTreeOverflowScrollingNodeRemoteMac::~ScrollingTreeOverflowScrollingNodeRemoteMac):
        (WebKit::ScrollingTreeOverflowScrollingNodeRemoteMac::commitStateBeforeChildren):
        (WebKit::ScrollingTreeOverflowScrollingNodeRemoteMac::repositionRelatedLayers):
        (WebKit::ScrollingTreeOverflowScrollingNodeRemoteMac::handleWheelEvent):
        (WebKit::ScrollingTreeOverflowScrollingNodeRemoteMac::handleMouseEvent):
        * WebKit.xcodeproj/project.pbxproj:

2019-03-04  Andy Estes  <aestes@apple.com>

        [Apple Pay] Move WebPaymentCoordinatorProxy from Source/WebKit/UIProcess to Source/WebKit/Shared
        https://bugs.webkit.org/show_bug.cgi?id=195080
        <rdar://problem/48421558>

        Reviewed by Antti Koivisto.

        * CMakeLists.txt:
        * DerivedSources-input.xcfilelist:
        * DerivedSources.make:
        * Shared/ApplePay/WebPaymentCoordinatorProxy.cpp: Renamed from Source/WebKit/UIProcess/ApplePay/WebPaymentCoordinatorProxy.cpp.
        * Shared/ApplePay/WebPaymentCoordinatorProxy.h: Renamed from Source/WebKit/UIProcess/ApplePay/WebPaymentCoordinatorProxy.h.
        * Shared/ApplePay/WebPaymentCoordinatorProxy.messages.in: Renamed from Source/WebKit/UIProcess/ApplePay/WebPaymentCoordinatorProxy.messages.in.
        * Shared/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.h: Renamed from Source/WebKit/UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.h.
        * Shared/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm: Renamed from Source/WebKit/UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm.
        * Shared/ApplePay/ios/WebPaymentCoordinatorProxyIOS.mm: Renamed from Source/WebKit/UIProcess/ApplePay/ios/WebPaymentCoordinatorProxyIOS.mm.
        * Shared/ApplePay/mac/WebPaymentCoordinatorProxyMac.mm: Renamed from Source/WebKit/UIProcess/ApplePay/mac/WebPaymentCoordinatorProxyMac.mm.
        * Shared/mac/WebHitTestResultData.mm:
        * SourcesCocoa.txt:
        * UIProcess/RemoteLayerTree/ios/ScrollingTreeFrameScrollingNodeRemoteIOS.h:
        * UIProcess/RemoteLayerTree/ios/ScrollingTreeFrameScrollingNodeRemoteIOS.mm:
        * UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.h:
        * UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.mm:
        * WebKit.xcodeproj/project.pbxproj:

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

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

        Reviewed by Eric Carlson.

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

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

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

        [WPE] Enable web process sandbox
        https://bugs.webkit.org/show_bug.cgi?id=195169

        Reviewed by Daniel Bates.

        * PlatformWPE.cmake:
        * UIProcess/Launcher/glib/BubblewrapLauncher.cpp:
        (WebKit::bubblewrapSpawn):
        * UIProcess/glib/WebProcessPoolGLib.cpp:
        (WebKit::WebProcessPool::platformInitialize):

2019-03-04  Adrian Perez de Castro  <aperez@igalia.com>

        [GTK][WPE] Wrong license header in WebKit{,WebExtension}Autocleanups.h
        https://bugs.webkit.org/show_bug.cgi?id=195245

        Reviewed by Carlos Garcia Campos.

        Changed license headers to contain the LGPL, which is the correct one for the GTK
        and WPE ports. The change was agreed by the contributors to the files involved.

        * UIProcess/API/gtk/WebKitAutocleanups.h:
        * UIProcess/API/wpe/WebKitAutocleanups.h:
        * WebProcess/InjectedBundle/API/gtk/WebKitWebExtensionAutocleanups.h:
        * WebProcess/InjectedBundle/API/wpe/WebKitWebExtensionAutocleanups.h:

2019-03-04  Commit Queue  <commit-queue@webkit.org>

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

        WE not ready to enable PSON yet (Requested by KaL on #webkit).

        Reverted changeset:

        "[GTK] Enable PSON"
        https://bugs.webkit.org/show_bug.cgi?id=194979
        https://trac.webkit.org/changeset/242045

2019-03-04  Carlos Garcia Campos  <cgarcia@igalia.com>

        [CoordinatedGraphics] Unify DrawingArea classes
        https://bugs.webkit.org/show_bug.cgi?id=195167

        Reviewed by Žan Doberšek.

        Add DrawingAreaProxyCoordinatedGraphics and DrawingAreaCoordinatedGraphics.

        * PlatformGTK.cmake:
        * PlatformWPE.cmake:
        * PlatformWin.cmake:
        * Shared/DrawingAreaInfo.h:
        * SourcesGTK.txt:
        * SourcesWPE.txt:
        * UIProcess/API/gtk/PageClientImpl.cpp:
        (WebKit::PageClientImpl::createDrawingAreaProxy):
        (WebKit::PageClientImpl::viewSize):
        * UIProcess/API/gtk/WebKitWebViewBase.cpp:
        (webkitWebViewBaseRealize):
        (webkitWebViewBaseUnrealize):
        (webkitWebViewBaseDraw):
        (webkitWebViewBaseSizeAllocate):
        (webkitWebViewBaseDidRelaunchWebProcess):
        (webkitWebViewBasePageClosed):
        * UIProcess/API/wpe/PageClientImpl.cpp:
        (WebKit::PageClientImpl::createDrawingAreaProxy):
        * UIProcess/AcceleratedDrawingAreaProxy.cpp: Removed.
        * UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.cpp: Added.
        (WebKit::DrawingAreaProxyCoordinatedGraphics::DrawingAreaProxyCoordinatedGraphics):
        (WebKit::DrawingAreaProxyCoordinatedGraphics::~DrawingAreaProxyCoordinatedGraphics):
        (WebKit::DrawingAreaProxyCoordinatedGraphics::paint):
        (WebKit::DrawingAreaProxyCoordinatedGraphics::sizeDidChange):
        (WebKit::DrawingAreaProxyCoordinatedGraphics::deviceScaleFactorDidChange):
        (WebKit::DrawingAreaProxyCoordinatedGraphics::waitForBackingStoreUpdateOnNextPaint):
        (WebKit::DrawingAreaProxyCoordinatedGraphics::setBackingStoreIsDiscardable):
        (WebKit::DrawingAreaProxyCoordinatedGraphics::update):
        (WebKit::DrawingAreaProxyCoordinatedGraphics::didUpdateBackingStoreState):
        (WebKit::DrawingAreaProxyCoordinatedGraphics::enterAcceleratedCompositingMode):
        (WebKit::DrawingAreaProxyCoordinatedGraphics::exitAcceleratedCompositingMode):
        (WebKit::DrawingAreaProxyCoordinatedGraphics::updateAcceleratedCompositingMode):
        (WebKit::DrawingAreaProxyCoordinatedGraphics::incorporateUpdate):
        (WebKit::DrawingAreaProxyCoordinatedGraphics::alwaysUseCompositing const):
        (WebKit::DrawingAreaProxyCoordinatedGraphics::backingStoreStateDidChange):
        (WebKit::DrawingAreaProxyCoordinatedGraphics::sendUpdateBackingStoreState):
        (WebKit::DrawingAreaProxyCoordinatedGraphics::waitForAndDispatchDidUpdateBackingStoreState):
        (WebKit::DrawingAreaProxyCoordinatedGraphics::discardBackingStoreSoon):
        (WebKit::DrawingAreaProxyCoordinatedGraphics::discardBackingStore):
        (WebKit::DrawingAreaProxyCoordinatedGraphics::setNativeSurfaceHandleForCompositing):
        (WebKit::DrawingAreaProxyCoordinatedGraphics::destroyNativeSurfaceHandleForCompositing):
        (WebKit::DrawingAreaProxyCoordinatedGraphics::DrawingMonitor::DrawingMonitor):
        (WebKit::DrawingAreaProxyCoordinatedGraphics::DrawingMonitor::~DrawingMonitor):
        (WebKit::DrawingAreaProxyCoordinatedGraphics::DrawingMonitor::webViewDrawCallback):
        (WebKit::DrawingAreaProxyCoordinatedGraphics::DrawingMonitor::start):
        (WebKit::DrawingAreaProxyCoordinatedGraphics::DrawingMonitor::stop):
        (WebKit::DrawingAreaProxyCoordinatedGraphics::DrawingMonitor::didDraw):
        (WebKit::DrawingAreaProxyCoordinatedGraphics::dispatchAfterEnsuringDrawing):
        * UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.h: Renamed from Source/WebKit/UIProcess/AcceleratedDrawingAreaProxy.h.
        * UIProcess/DrawingAreaProxyImpl.cpp: Removed.
        * UIProcess/DrawingAreaProxyImpl.h: Removed.
        * UIProcess/gtk/AcceleratedBackingStoreX11.cpp:
        (WebKit::AcceleratedBackingStoreX11::update):
        * UIProcess/win/PageClientImpl.cpp:
        (WebKit::PageClientImpl::createDrawingAreaProxy):
        * UIProcess/win/WebView.cpp:
        (WebKit::WebView::paint):
        * WebProcess/WebPage/AcceleratedDrawingArea.cpp: Removed.
        * WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp: Added.
        (WebKit::DrawingAreaCoordinatedGraphics::DrawingAreaCoordinatedGraphics):
        (WebKit::DrawingAreaCoordinatedGraphics::~DrawingAreaCoordinatedGraphics):
        (WebKit::DrawingAreaCoordinatedGraphics::setNeedsDisplay):
        (WebKit::DrawingAreaCoordinatedGraphics::setNeedsDisplayInRect):
        (WebKit::DrawingAreaCoordinatedGraphics::scroll):
        (WebKit::DrawingAreaCoordinatedGraphics::forceRepaint):
        (WebKit::DrawingAreaCoordinatedGraphics::forceRepaintAsync):
        (WebKit::DrawingAreaCoordinatedGraphics::setLayerTreeStateIsFrozen):
        (WebKit::DrawingAreaCoordinatedGraphics::updatePreferences):
        (WebKit::DrawingAreaCoordinatedGraphics::mainFrameContentSizeChanged):
        (WebKit::DrawingAreaCoordinatedGraphics::deviceOrPageScaleFactorChanged):
        (WebKit::DrawingAreaCoordinatedGraphics::didChangeViewportAttributes):
        (WebKit::DrawingAreaCoordinatedGraphics::graphicsLayerFactory):
        (WebKit::DrawingAreaCoordinatedGraphics::setRootCompositingLayer):
        (WebKit::DrawingAreaCoordinatedGraphics::scheduleCompositingLayerFlush):
        (WebKit::DrawingAreaCoordinatedGraphics::layerHostDidFlushLayers):
        (WebKit::DrawingAreaCoordinatedGraphics::createDisplayRefreshMonitor):
        (WebKit::DrawingAreaCoordinatedGraphics::setNativeSurfaceHandleForCompositing):
        (WebKit::DrawingAreaCoordinatedGraphics::destroyNativeSurfaceHandleForCompositing):
        (WebKit::DrawingAreaCoordinatedGraphics::activityStateDidChange):
        (WebKit::DrawingAreaCoordinatedGraphics::attachViewOverlayGraphicsLayer):
        (WebKit::DrawingAreaCoordinatedGraphics::updateBackingStoreState):
        (WebKit::DrawingAreaCoordinatedGraphics::didUpdate):
        (WebKit::DrawingAreaCoordinatedGraphics::sendDidUpdateBackingStoreState):
        (WebKit::DrawingAreaCoordinatedGraphics::exitAcceleratedCompositingModeSoon):
        (WebKit::DrawingAreaCoordinatedGraphics::exitAcceleratedCompositingModeNow):
        (WebKit::DrawingAreaCoordinatedGraphics::discardPreviousLayerTreeHost):
        (WebKit::DrawingAreaCoordinatedGraphics::suspendPainting):
        (WebKit::DrawingAreaCoordinatedGraphics::resumePainting):
        (WebKit::DrawingAreaCoordinatedGraphics::enterAcceleratedCompositingMode):
        (WebKit::DrawingAreaCoordinatedGraphics::exitAcceleratedCompositingMode):
        (WebKit::DrawingAreaCoordinatedGraphics::scheduleDisplay):
        (WebKit::DrawingAreaCoordinatedGraphics::displayTimerFired):
        (WebKit::DrawingAreaCoordinatedGraphics::display):
        (WebKit::shouldPaintBoundsRect):
        * WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.h: Renamed from Source/WebKit/WebProcess/WebPage/AcceleratedDrawingArea.h.
        * WebProcess/WebPage/DrawingArea.cpp:
        (WebKit::DrawingArea::create):
        * WebProcess/WebPage/DrawingArea.h:
        (WebKit::DrawingArea::layerFlushThrottlingIsActive const):
        * WebProcess/WebPage/DrawingAreaImpl.cpp: Removed.
        * WebProcess/WebPage/DrawingAreaImpl.h: Removed.

2019-03-03  Zalan Bujtas  <zalan@apple.com>

        [ContentChangeObserver] Content observation should be limited to the current document.
        https://bugs.webkit.org/show_bug.cgi?id=195256
        <rdar://problem/48544402>

        Reviewed by Simon Fraser.

        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::handleSyntheticClick):
        (WebKit::WebPage::completePendingSyntheticClickForContentChangeObserver):
        (WebKit::WebPage::completeSyntheticClick):
        (WebKit::WebPage::handleTap):
        (WebKit::WebPage::handleTwoFingerTapAtPoint):
        (WebKit::WebPage::commitPotentialTap):

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

        Rid the world of WK_API_ENABLED
        https://bugs.webkit.org/show_bug.cgi?id=195263

        Reviewed by Dan Bernstein.

        List of changed files elided because it's useless.

2019-03-03  Jiewen Tan  <jiewen_tan@apple.com>

        Add a WebViewDidMoveToWindowObserver for WKWebView
        https://bugs.webkit.org/show_bug.cgi?id=195223
        <rdar://problem/48520161>

        Reviewed by Darin Adler.

        The load optimizer would only allow itself to optimize loads whenever the web view
        who owns the page is (visible && focused), otherwises it will wait until the web view
        becomes (visible && focused). Therefore, we need a way to notify the load optimizer
        changes of statuses.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView didMoveToWindow]):
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::viewDidMoveToWindow):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::addWebViewDidMoveToWindowObserver):
        (WebKit::WebPageProxy::removeWebViewDidMoveToWindowObserver):
        (WebKit::WebPageProxy::webViewDidMoveToWindow):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebViewDidMoveToWindowObserver.h: Added.
        * WebKit.xcodeproj/project.pbxproj:

2019-03-03  Andy Estes  <aestes@apple.com>

        [Apple Pay] Untangle WebPageProxy and WebPaymentCoordinatorProxy
        https://bugs.webkit.org/show_bug.cgi?id=195219
        <rdar://problem/48518082>

        Reviewed by Darin Adler.

        Rather than having WebPaymentCoordinatorProxy know about WebPageProxy, give
        WebPaymentCoordinatorProxy a client interface that WebPageProxy conforms to.

        In a follow-on patch, WebPaymentCoordinatorProxy will have a non-WebPageProxy client.

        * UIProcess/ApplePay/WebPaymentCoordinatorProxy.cpp:
        (WebKit::WebPaymentCoordinatorProxy::WebPaymentCoordinatorProxy): Replaced use of
        m_webPageProxy with m_client.
        (WebKit::WebPaymentCoordinatorProxy::~WebPaymentCoordinatorProxy): Ditto.
        (WebKit::WebPaymentCoordinatorProxy::messageSenderConnection const): Implemented
        IPC::MessageSender via m_client.
        (WebKit::WebPaymentCoordinatorProxy::messageSenderDestinationID const): Ditto.
        (WebKit::WebPaymentCoordinatorProxy::canMakePaymentsWithActiveCard): Replaced use of
        m_webPageProxy with m_client.
        (WebKit::WebPaymentCoordinatorProxy::openPaymentSetup): Ditto.
        (WebKit::WebPaymentCoordinatorProxy::didCancelPaymentSession): Called our own
        MessageSender::send rather than going through m_webPageProxy.
        (WebKit::WebPaymentCoordinatorProxy::validateMerchant): Ditto.
        (WebKit::WebPaymentCoordinatorProxy::didAuthorizePayment): Ditto.
        (WebKit::WebPaymentCoordinatorProxy::didSelectShippingMethod): Ditto.
        (WebKit::WebPaymentCoordinatorProxy::didSelectShippingContact): Ditto.
        (WebKit::WebPaymentCoordinatorProxy::didSelectPaymentMethod): Ditto.
        * UIProcess/ApplePay/WebPaymentCoordinatorProxy.h: Defined the Client abstract class and
        changed m_webPageProxy to m_client.
        * UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.h:
        * UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
        (WebKit::WebPaymentCoordinatorProxy::platformCanMakePaymentsWithActiveCard): Replaced use of
        m_webPageProxy with m_client.
        (WebKit::WebPaymentCoordinatorProxy::platformPaymentRequest): Renamed from toPKPaymentRequest.
        (WebKit::toPKPaymentRequest): Renamed to WebPaymentCoordinatorProxy::platformPaymentRequest.
        * UIProcess/ApplePay/ios/WebPaymentCoordinatorProxyIOS.mm:
        (WebKit::WebPaymentCoordinatorProxy::platformShowPaymentUI): Replaced use of m_webPageProxy
        with m_client.
        * UIProcess/ApplePay/mac/WebPaymentCoordinatorProxyMac.mm:
        (WebKit::WebPaymentCoordinatorProxy::platformShowPaymentUI): Ditto.
        * UIProcess/AuxiliaryProcessProxy.h:
        (WebKit::AuxiliaryProcessProxy::messageReceiverMap): Added.
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::paymentCoordinatorConnection): Implemented WebPaymentCoordinatorProxy::Client.
        (WebKit::WebPageProxy::paymentCoordinatorMessageReceiver): Ditto.
        (WebKit::WebPageProxy::paymentCoordinatorSourceApplicationBundleIdentifier): Ditto.
        (WebKit::WebPageProxy::paymentCoordinatorSourceApplicationSecondaryIdentifier): Ditto.
        (WebKit::WebPageProxy::paymentCoordinatorDestinationID): Ditto.
        * UIProcess/WebPageProxy.h: Made WebPageProxy derive from WebPaymentCoordinatorProxy::Client.
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::paymentCoordinatorPresentingViewController): Implemented WebPaymentCoordinatorProxy::Client.
        (WebKit::WebPageProxy::paymentCoordinatorCTDataConnectionServiceType): Ditto.
        * UIProcess/mac/WebPageProxyMac.mm:
        (WebKit::WebPageProxy::paymentCoordinatorPresentingWindow): Ditto.
        * WebKit.xcodeproj/project.pbxproj:

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

        Remove some more unused 32-bit code
        https://bugs.webkit.org/show_bug.cgi?id=195255

        Reviewed by Darin Adler.

        * Platform/Module.cpp:
        (WebKit::Module::Module):
        * Platform/Module.h:
        * Platform/cf/ModuleCF.cpp:
        (WebKit::Module::unload):
        (WebKit::Module::bundleResourceMap): Deleted.
        * PluginProcess/mac/PluginProcessMac.mm:
        (WebKit::initializeShim):
        (WebKit::PluginProcess::platformInitializeProcess):
        (WebKit::shouldCallRealDebugger): Deleted.
        (WebKit::isWindowActive): Deleted.
        (WebKit::getCurrentEventButtonState): Deleted.
        (WebKit::carbonWindowShown): Deleted.
        (WebKit::carbonWindowHidden): Deleted.
        (WebKit::openCFURLRef): Deleted.
        (WebKit::isMallocTinyMemoryTag): Deleted.
        (WebKit::shouldMapMemoryExecutable): Deleted.
        * PluginProcess/mac/PluginProcessShim.h:
        * PluginProcess/mac/PluginProcessShim.mm:
        (WebKit::shimDebugger): Deleted.
        (WebKit::shimGetCurrentEventButtonState): Deleted.
        (WebKit::shimIsWindowActive): Deleted.
        (WebKit::shimModalDialog): Deleted.
        (WebKit::shimAlert): Deleted.
        (WebKit::shimShowWindow): Deleted.
        (WebKit::shimHideWindow): Deleted.
        (WebKit::shimLSOpenCFURLRef): Deleted.
        (WebKit::shimMachVMMap): Deleted.
        * Shared/API/Cocoa/WKFoundation.h:
        * Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceMain.mm:
        (WebKit::XPCServiceMain):
        * Shared/Plugins/Netscape/NetscapePluginModule.cpp:
        (WebKit::NetscapePluginModule::tryLoad):
        * Shared/Plugins/Netscape/mac/NetscapePluginModuleMac.mm:
        (WebKit::getPluginArchitecture):
        (WebKit::NetscapePluginModule::determineQuirks):
        * Shared/Plugins/PluginQuirks.h:
        * Shared/cf/ArgumentCodersCF.cpp:
        (IPC::sizeForNumberType):
        * Shared/mac/WebEventFactory.mm:
        (WebKit::mouseButtonForEvent):
        (WebKit::globalPointForEvent):
        (WebKit::pointForEvent):
        (WebKit::WebEventFactory::createWebMouseEvent):
        * UIProcess/API/C/mac/WKPagePrivateMac.h:
        * UIProcess/API/C/mac/WKPagePrivateMac.mm:
        (WKPageLoadFileReturningNavigation):
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::pressureChangeWithEvent):
        * UIProcess/Gamepad/cocoa/UIGamepadProviderCocoa.mm:
        (WebKit::UIGamepadProvider::platformSetDefaultGamepadProvider):
        * UIProcess/mac/ServicesController.mm:
        (WebKit::ServicesController::ServicesController):
        * UIProcess/mac/WebContextMenuProxyMac.mm:
        (WebKit::WebContextMenuProxyMac::setupServicesMenu):
        * WebProcess/Plugins/Netscape/NetscapeBrowserFuncs.cpp:
        (WebKit::NPN_GetValue):
        * WebProcess/Plugins/Netscape/NetscapePlugin.cpp:
        (WebKit::NetscapePlugin::NetscapePlugin):
        * WebProcess/Plugins/Netscape/NetscapePlugin.h:
        (WebKit::NetscapePlugin::isWindowActive const): Deleted.
        * WebProcess/Plugins/Netscape/mac/NetscapePluginMac.mm:
        (WebKit::NetscapePlugin::setDrawingModel):
        (WebKit::NetscapePlugin::setEventModel):
        (WebKit::NetscapePlugin::platformPostInitialize):
        (WebKit::NetscapePlugin::platformDestroy):
        (WebKit::NetscapePlugin::platformGeometryDidChange):
        (WebKit::NetscapePlugin::platformPaint):
        (WebKit::NetscapePlugin::platformHandleMouseEvent):
        (WebKit::NetscapePlugin::platformHandleWheelEvent):
        (WebKit::NetscapePlugin::platformHandleMouseEnterEvent):
        (WebKit::NetscapePlugin::platformHandleMouseLeaveEvent):
        (WebKit::NetscapePlugin::platformHandleKeyboardEvent):
        (WebKit::NetscapePlugin::platformSetFocus):
        (WebKit::NetscapePlugin::windowFocusChanged):
        (WebKit::NetscapePlugin::windowAndViewFramesChanged):
        (WebKit::NetscapePlugin::sendComplexTextInput):
        (): Deleted.
        (WebKit::windowMap): Deleted.
        (WebKit::NetscapePlugin::netscapePluginFromWindow): Deleted.
        (WebKit::NetscapePlugin::windowRef const): Deleted.
        (WebKit::NetscapePlugin::updateFakeWindowBounds): Deleted.
        (WebKit::NetscapePlugin::buttonState): Deleted.
        (WebKit::initializeEventRecord): Deleted.
        (WebKit::anyMouseButtonIsDown): Deleted.
        (WebKit::rightMouseButtonIsDown): Deleted.
        (WebKit::modifiersForEvent): Deleted.
        (WebKit::convertStringToKeyCodes): Deleted.
        (WebKit::scriptCodeFromCurrentKeyboardInputSource): Deleted.
        (WebKit::NetscapePlugin::nullEventTimerFired): Deleted.

2019-03-02  Zalan Bujtas  <zalan@apple.com>

        [ContentChangeObserver] Introduce ContentChangeObserver::MouseMovedScope
        https://bugs.webkit.org/show_bug.cgi?id=195252
        <rdar://problem/48539446>

        Reviewed by Simon Fraser.

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

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

        Move EditingRange <-> Range methods to EditingRange instead of WebPage
        https://bugs.webkit.org/show_bug.cgi?id=195201

        Reviewed by Sam Weinig.

        * Shared/EditingRange.h:
        * Shared/EditingRange.cpp:
        Also, modernize the coders.

        * Sources.txt:
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::insertTextAsync):
        (WebKit::WebPage::getMarkedRangeAsync):
        (WebKit::WebPage::getSelectedRangeAsync):
        (WebKit::WebPage::characterIndexForPointAsync):
        (WebKit::WebPage::firstRectForCharacterRangeAsync):
        (WebKit::WebPage::setCompositionAsync):
        (WebKit::WebPage::rangeFromEditingRange): Deleted.
        * WebProcess/WebPage/mac/WebPageMac.mm:
        (WebKit::WebPage::insertDictatedTextAsync):
        (WebKit::WebPage::attributedSubstringForCharacterRangeAsync):

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

        [iOS] Programmatic paste access should be granted when copying and pasting within the same origin
        https://bugs.webkit.org/show_bug.cgi?id=195053
        <rdar://problem/48134710>

        Reviewed by Ryosuke Niwa.

        Add support for automatically granting programmatic pasteboard access when the pasteboard identifier of the
        document requesting programmatic paste matches the identifier in the custom pasteboard data blob in the
        UIPasteboard. To do this, we send the pasteboard identifier of the document requesting the DOM paste to the UI
        process, and check this against the pasteboard identifiers for each item on the platform pasteboard. If all
        items in the platform pasteboard match the given pasteboard identifier (since we don't support writing multiple
        pasteboard items via bindings, this should only be a single item), we skip showing the paste callout and
        immediately invoke the programmatic paste handler.

        * Scripts/webkit/messages.py:
        * UIProcess/API/gtk/PageClientImpl.cpp:
        (WebKit::PageClientImpl::requestDOMPasteAccess):
        * UIProcess/API/gtk/PageClientImpl.h:
        * UIProcess/API/wpe/PageClientImpl.cpp:
        (WebKit::PageClientImpl::requestDOMPasteAccess):
        * UIProcess/API/wpe/PageClientImpl.h:
        * UIProcess/PageClient.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::requestDOMPasteAccess):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:

        Add plumbing to deliver the pasteboard identifier to the client when requesting DOM paste.

        * UIProcess/ios/PageClientImplIOS.h:
        * UIProcess/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::requestDOMPasteAccess):
        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView cleanupInteraction]):
        (-[WKContentView resignFirstResponderForWebView]):
        (-[WKContentView _webTouchEventsRecognized:]):
        (-[WKContentView _willHideMenu:]):
        (-[WKContentView pasteForWebView:]):
        (-[WKContentView _handleDOMPasteRequestWithResult:]):
        (-[WKContentView _willPerformAction:sender:]):
        (-[WKContentView _didPerformAction:sender:]):
        (-[WKContentView handleKeyWebEvent:withCompletionHandler:]):
        (allPasteboardItemOriginsMatchOrigin):
        (-[WKContentView _requestDOMPasteAccessWithElementRect:originIdentifier:completionHandler:]):
        (-[WKContentView _requestDOMPasteAccessWithElementRect:completionHandler:]): Deleted.

        Bail early in the case where all items' pasteboard identifiers (read via custom pasteboard data) match. When
        this happens, we only grant access for the current paste command, rather than granting access for the user
        gesture token.

        * UIProcess/mac/PageClientImplMac.h:
        * UIProcess/win/PageClientImpl.cpp:
        (WebKit::PageClientImpl::requestDOMPasteAccess):
        * UIProcess/win/PageClientImpl.h:
        * WebProcess/WebCoreSupport/WebEditorClient.cpp:
        (WebKit::WebEditorClient::requestDOMPasteAccess):
        * WebProcess/WebCoreSupport/WebEditorClient.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::requestDOMPasteAccess):
        * WebProcess/WebPage/WebPage.h:

2019-02-27  Darin Adler  <darin@apple.com>

        Fixed makeString(float) to do shortest-form serialization without first converting to double
        https://bugs.webkit.org/show_bug.cgi?id=195142

        Reviewed by Daniel Bates.

        * UIProcess/PerActivityStateCPUUsageSampler.cpp: Removed unneeded include of DecimalNumber.h.

2019-03-02  Adrian Perez de Castro  <aperez@igalia.com>

        [WPE] Public API headers are missing autocleanup definitions
        https://bugs.webkit.org/show_bug.cgi?id=195211

        Reviewed by Philippe Normand.

        * PlatformWPE.cmake: List new API headers as installable.
        * UIProcess/API/wpe/WebKitAutocleanups.h: Added. This is a copy of the header from the GTK
        port, adapted to fit the WPE port.
        * UIProcess/API/wpe/webkit.h: Add inclusion of WebKitAutocleanups.h
        * WebProcess/InjectedBundle/API/wpe/WebKitWebExtensionAutocleanups.h: Added. Also adapted
        from the equivalent header of the GTK port.
        * WebProcess/InjectedBundle/API/wpe/webkit-web-extension.h: Add inclusion of
        WebKitWebExtensionAutocleanups.h

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

        Remove unused WebPageProxy::m_navigationID
        https://bugs.webkit.org/show_bug.cgi?id=195209

        Reviewed by Darin Adler.

        WebPageProxy::m_navigationID is never assigned to and is only used once by mistake in a
        debug LOG(). It must be a refactoring mistake.

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

2019-03-01  Darin Adler  <darin@apple.com>

        Finish removing String::format
        https://bugs.webkit.org/show_bug.cgi?id=194893

        Reviewed by Daniel Bates.

        * UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm:
        (WebKit::LocalAuthenticator::getAssertion): Use makeString, attempting to fix
        a problem where we passed an NSData * to format with a "%s"."

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

        Unreviewed Windows build fix after r242302.

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::ensureNetworkProcess):

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

        NetworkDataTask redirection should not keep alive its NetworkSession
        https://bugs.webkit.org/show_bug.cgi?id=194927

        Reviewed by Darin Adler.

        This should fix rdar://problem/47580502

        * NetworkProcess/NetworkDataTask.h:
        * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
        (WebKit::NetworkDataTaskCocoa::willPerformHTTPRedirection):

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

        Revert r241223, r241235, and r241287
        https://bugs.webkit.org/show_bug.cgi?id=194427
        <rdar://48045861>

        This caused crashes, and feature design has evolved away from needing the daemon in this form.

        * NetworkProcess/EntryPoint/Cocoa/Daemon/DaemonEntryPoint.mm:
        (WebKit::DaemonMain):
        * Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceEntryPoint.h:
        * Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceMain.mm:
        (WebKit::XPCServiceEventHandler):
        (WebKit::XPCServiceMain):
        (WebKit::XPCEventHandler): Deleted.
        (WebKit::XPCInitializationHandler): Deleted.
        * UIProcess/API/APIProcessPoolConfiguration.h:
        * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h:
        * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm:
        (-[_WKProcessPoolConfiguration usesNetworkingDaemon]): Deleted.
        (-[_WKProcessPoolConfiguration setUsesNetworkingDaemon:]): Deleted.
        * UIProcess/AuxiliaryProcessProxy.cpp:
        (WebKit::AuxiliaryProcessProxy::getLaunchOptions):
        * UIProcess/Launcher/ProcessLauncher.h:
        * UIProcess/Launcher/mac/ProcessLauncherMac.mm:
        (WebKit::serviceName):
        (WebKit::ProcessLauncher::launchProcess):
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::getLaunchOptions):
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::usesNetworkingDaemon const): Deleted.
        * UIProcess/WebProcessPool.h:

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

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

        Reviewed by Chris Dumez.

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

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

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

2019-03-01  Antoine Quint  <graouts@apple.com>

        [iOS] Turn mouse event simulation on by default
        https://bugs.webkit.org/show_bug.cgi?id=195218
        <rdar://problem/48516794>

        Reviewed by Dean Jackson.

        * Shared/WebPreferences.yaml:

2019-03-01  Ross Kirsling  <ross.kirsling@sony.com>

        EnvironmentUtilities::stripValuesEndingWithString isn't thread-safe
        https://bugs.webkit.org/show_bug.cgi?id=194612

        Reviewed by Alex Christensen.

        This API test really shouldn't be verifying that the actual environment was successfully modified.

        At its core, stripValuesEndingWithString is really just split-filter-join. By replacing it with a pair of
        simple functions -- one for string processing, one for environment processing -- the API test only needs to
        worry about the former.

        * Platform/unix/EnvironmentUtilities.cpp:
        (WebKit::EnvironmentUtilities::stripEntriesEndingWith):
        (WebKit::EnvironmentUtilities::removeValuesEndingWith):
        (WebKit::EnvironmentUtilities::stripValuesEndingWithString): Deleted.
        * Platform/unix/EnvironmentUtilities.h:
        Replace old function with a pair of simpler ones.

        * NetworkProcess/EntryPoint/Cocoa/XPCService/NetworkServiceEntryPoint.mm:
        (NetworkServiceInitializer):
        * PluginProcess/EntryPoint/Cocoa/XPCService/PluginServiceEntryPoint.mm:
        (PluginServiceInitializer):
        * WebProcess/EntryPoint/Cocoa/XPCService/WebContentServiceEntryPoint.mm:
        (WebContentServiceInitializer):
        Update function name.

2019-03-01  Don Olmstead  <don.olmstead@sony.com>

        Unify WebsiteDataStore::defaultDataStoreConfiguration across ports
        https://bugs.webkit.org/show_bug.cgi?id=194844

        Reviewed by Youenn Fablet.

        Move the Cocoa implementation into APIWebsiteDataStore.cpp as the source of truth and
        append configuration for Glib's DeviceIdHashSalts storage directory. This also fixes
        a crash in Windows when running a Service Worker.

        * UIProcess/API/APIWebsiteDataStore.cpp:
        (API::WebsiteDataStore::defaultDeviceIdHashSaltsStorageDirectory):
        (API::WebsiteDataStore::defaultDataStoreConfiguration):
        * UIProcess/API/Cocoa/APIWebsiteDataStoreCocoa.mm:
        (API::WebsiteDataStore::defaultDeviceIdHashSaltsStorageDirectory): Deleted.
        (API::WebsiteDataStore::defaultDataStoreConfiguration): Deleted.
        * UIProcess/API/glib/APIWebsiteDataStoreGLib.cpp:
        (API::WebsiteDataStore::defaultDataStoreConfiguration): Deleted.
        * UIProcess/API/win/APIWebsiteDataStoreWin.cpp:
        (API::WebsiteDataStore::defaultDeviceIdHashSaltsStorageDirectory): Deleted.
        (API::WebsiteDataStore::defaultDataStoreConfiguration): Deleted.

2019-03-01  John Wilander  <wilander@apple.com>

        Resource Load Statistics: Further restrict client-side cookie persistence after cross-site navigations with link decoration
        https://bugs.webkit.org/show_bug.cgi?id=195196
        <rdar://problem/48006419>

        Reviewed by Brent Fulgham.

        Trackers abuse link query parameters to transport user identifiers cross-site.
        This patch detects such navigations and applies further restrictions to
        client-site cookies on the destination page.

        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::clearPageSpecificDataForResourceLoadStatistics):
        (WebKit::NetworkConnectionToWebProcess::removeStorageAccessForAllFramesOnPage): Deleted.
            Renamed NetworkConnectionToWebProcess::clearPageSpecificDataForResourceLoadStatistics().
        * NetworkProcess/NetworkConnectionToWebProcess.h:
        * NetworkProcess/NetworkConnectionToWebProcess.messages.in:
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::committedCrossSiteLoadWithLinkDecoration):
            Reporting IPC message when a link decorated cross-site navigation happens.
        (WebKit::NetworkProcess::resetCrossSiteLoadsWithLinkDecorationForTesting):
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:
        * UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
        (WKWebsiteDataStoreStatisticsResetToConsistentState):
            Added clearing of the new state between test runs.
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::resetCrossSiteLoadsWithLinkDecorationForTesting):
            Test infrastructure.
        * UIProcess/Network/NetworkProcessProxy.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::isNonUniqueNavigationWithLinkDecoration):
            Convenience function.
        (WebKit::WebPageProxy::didCommitLoadForFrame):
            This function now reports to the network process when a link decorated
            cross-site navigation happens.
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::resetCrossSiteLoadsWithLinkDecorationForTesting):
            Test infrastructure.
        * UIProcess/WebsiteData/WebsiteDataStore.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::close):
            Name change of function called.

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

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

        Reviewed by Simon Fraser.

        * mac/MigrateHeadersFromWebKitLegacy.make:

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

        Modernize WebKit::AttributedString a little bit
        https://bugs.webkit.org/show_bug.cgi?id=195200

        Reviewed by Wenson Hsieh.

        * Shared/mac/AttributedString.h:
        (WebKit::AttributedString::AttributedString):
        (WebKit::AttributedString::operator NSAttributedString * const):
        * Shared/mac/AttributedString.mm:
        (IPC::ArgumentCoder<WebKit::AttributedString>::encode):
        (IPC::ArgumentCoder<WebKit::AttributedString>::decode):
        (WebKit::AttributedString::encode const): Deleted.
        (WebKit::AttributedString::decode): Deleted.
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::attributedSubstringForProposedRange):
        * WebProcess/WebPage/mac/WebPageMac.mm:
        (WebKit::WebPage::attributedSubstringForCharacterRangeAsync):
        Modern coders, and a constructor and cast operator to/from NSAttributedString.
        Also adopt those in a few places just for fun.

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

        Serialize IndexedDB::ObjectStoreOverwriteMode as an enum
        https://bugs.webkit.org/show_bug.cgi?id=195213

        Reviewed by Alex Christensen.

        Make use of enum trait to automatically check for correct enum value when receiving a putOrAdd message.

        * NetworkProcess/IndexedDB/WebIDBConnectionToClient.cpp:
        (WebKit::WebIDBConnectionToClient::putOrAdd):
        * NetworkProcess/IndexedDB/WebIDBConnectionToClient.h:
        * NetworkProcess/IndexedDB/WebIDBConnectionToClient.messages.in:
        * Scripts/webkit/messages.py:
        * WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp:
        (WebKit::WebIDBConnectionToServer::putOrAdd):

2019-03-01  Don Olmstead  <don.olmstead@sony.com>

        [WinCairo] Enable service worker
        https://bugs.webkit.org/show_bug.cgi?id=188318

        Reviewed by Youenn Fablet.

        * WebProcess/Storage/WebSWContextManagerConnection.cpp:
        (WebKit::WebSWContextManagerConnection::terminateProcess):
        * WebProcess/Storage/WebSWContextManagerConnection.h:
        * config.h:

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

        Flaky API Test TestWebKitAPI.ProcessSwap.LoadUnload
        https://bugs.webkit.org/show_bug.cgi?id=195110

        Reviewed by Ryosuke Niwa.

        The test was attempting to disable PageCache via view preferences instead of using the
        process pool configuration flag. This would fail to disable PageCache because the
        usesPageCache preference would not prevent the creation of SuspendedPageProxy objects.
        As a result, the firing on the unload event would get delayed until the SuspendedPageProxy
        objects would get destroyed, which would lead to flakiness.

        This patch updates WebPageProxy::suspendCurrentPageIfPossible() to not create suspended
        pages proxies when the usesPageCache preference is set to false.

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

2019-03-01  Carlos Garcia Campos  <cgarcia@igalia.com>

        [ThreadedCompositor] Simply the compositing run loop worker thread
        https://bugs.webkit.org/show_bug.cgi?id=195208

        Reviewed by Don Olmstead.

        We can remove the WorkQueuePool, since we never really supported more than one thread, and now that single
        process model non longer exists it doesn't even make sense. We can simply use a RunLoop instead of a WorkQueue
        so that the implementation is not specific to the generic WorkQueue implementation.

        * Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.cpp:
        (WebKit::createRunLoop): Helper function to create the RunLoop in a worker thread before m_updateTimer is initialized.
        (WebKit::CompositingRunLoop::CompositingRunLoop): Use createRunLoop().
        (WebKit::CompositingRunLoop::~CompositingRunLoop): Stop the worker thread run loop in the next main run loop iteration.
        (WebKit::CompositingRunLoop::performTask): Use m_runLoop.
        (WebKit::CompositingRunLoop::performTaskSync): Ditto.
        (WebKit::WorkQueuePool::singleton): Deleted.
        (WebKit::WorkQueuePool::dispatch): Deleted.
        (WebKit::WorkQueuePool::runLoop): Deleted.
        (WebKit::WorkQueuePool::invalidate): Deleted.
        (WebKit::WorkQueuePool::WorkQueuePool): Deleted.
        (WebKit::WorkQueuePool::getOrCreateWorkQueueForContext): Deleted.
        (): Deleted.
        * Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.h:

2019-03-01  Justin Fan  <justin_fan@apple.com>

        [Web GPU] 32-bit builds broken by attempt to disable WebGPU on 32-bit
        https://bugs.webkit.org/show_bug.cgi?id=195191

        Rubber-stamped by Dean Jackson.

        Dropping support for 32-bit entirely, so I'm intentionally leaving 32-bit broken.

        * Configurations/FeatureDefines.xcconfig:

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

        HTTPSUpgradeList.db database should be opened in readonly mode
        https://bugs.webkit.org/show_bug.cgi?id=195194
        <rdar://problem/47103889>

        Reviewed by Youenn Fablet.

        HTTPSUpgradeList.db database should be opened in readonly mode since it is not meant to be
        modified by WebKit. Opening it in ReadWrite mode causes sandbox violations.

        * NetworkProcess/NetworkHTTPSUpgradeChecker.cpp:
        (WebKit::NetworkHTTPSUpgradeChecker::NetworkHTTPSUpgradeChecker):

2019-02-28  David Quesada  <david_quesada@apple.com>

        Expose APINavigationAction.shouldPerformDownload() on WKNavigationAction
        https://bugs.webkit.org/show_bug.cgi?id=195121
        rdar://problem/48450302

        Reviewed by Alex Christensen.

        * UIProcess/API/Cocoa/WKNavigationAction.mm:
        (-[WKNavigationAction _shouldPerformDownload]):
        * UIProcess/API/Cocoa/WKNavigationActionPrivate.h:

2019-02-28  Antoine Quint  <graouts@apple.com>

        Disable Web Animations in Safari Technology Preview
        https://bugs.webkit.org/show_bug.cgi?id=194748
        <rdar://problem/48139481>

        Reviewed by Dean Jackson.

        The test runners already opt into that feature explicitly, so all that is needed is to turn
        the default setting value to false.

        * Shared/WebPreferences.yaml:

2019-02-28  Antoine Quint  <graouts@apple.com>

        Enable the Pointer Events runtime flag by default
        https://bugs.webkit.org/show_bug.cgi?id=195156

        Reviewed by Dean Jackson.

        * Shared/WebPreferences.yaml:

2019-02-28  Sihui Liu  <sihui_liu@apple.com>

        Revert r232263: it caused processes to crash because process was suspended with locked file
        https://bugs.webkit.org/show_bug.cgi?id=195122
        <rdar://problem/48444599>

        Reviewed by Geoffrey Garen.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::NetworkProcess):
        * NetworkProcess/NetworkProcess.h:
        * Shared/WebSQLiteDatabaseTracker.cpp:
        (WebKit::WebSQLiteDatabaseTracker::WebSQLiteDatabaseTracker):
        (WebKit::WebSQLiteDatabaseTracker::hysteresisUpdated):
        * Shared/WebSQLiteDatabaseTracker.h:
        * WebProcess/WebProcess.cpp:
        (WebKit::m_webSQLiteDatabaseTracker):
        (WebKit::m_nonVisibleProcessCleanupTimer): Deleted.
        * WebProcess/WebProcess.h:

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

        [iOS] Move calls to [UIKeyboard isInHardwareKeyboardMode] to the UI process.
        https://bugs.webkit.org/show_bug.cgi?id=193683
        <rdar://problem/47634345>

        Reviewed by Brent Fulgham.

        When a keyboard is attached/deattached or the application becomes foreground, send a message from
        the UI process to the WebContent process, notifying whether a keyboard is attached or not. Also,
        cache the value of [UIKeyboard isInHardwareKeyboardMode] in the UI process, since this call seems
        to be expensive.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (hardwareKeyboardAvailabilityChangedCallback):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebProcessProxy.h:
        (WebKit::WebProcessProxy::setKeyboardIsAttached):
        (WebKit::WebProcessProxy::keyboardIsAttached const):
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _elementDidFocus:userIsInteracting:blurPreviousNode:changingActivityState:userObject:]):
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::applicationWillEnterForeground):
        (WebKit::WebPageProxy::hardwareKeyboardAvailabilityChanged):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::platformEditorState const):
        (WebKit::WebPage::hardwareKeyboardAvailabilityChanged):

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

        [CoordinatedGraphics] Remove COORDINATED_GRAPHICS_THREADED option
        https://bugs.webkit.org/show_bug.cgi?id=195159

        Reviewed by Don Olmstead.

        Use COORDINATED_GRAPHICS instead.

        * Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:
        (WebKit::CoordinatedGraphicsScene::onNewBufferAvailable):
        * Shared/CoordinatedGraphics/CoordinatedGraphicsScene.h:
        * Shared/CoordinatedGraphics/SimpleViewportController.cpp:
        * Shared/CoordinatedGraphics/SimpleViewportController.h:
        * Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.cpp:
        * Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.h:
        * Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:
        * Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.h:
        * Shared/CoordinatedGraphics/threadedcompositor/ThreadedDisplayRefreshMonitor.cpp:
        * Shared/CoordinatedGraphics/threadedcompositor/ThreadedDisplayRefreshMonitor.h:
        * WebProcess/WebPage/AcceleratedDrawingArea.cpp:
        (WebKit::AcceleratedDrawingArea::mainFrameContentSizeChanged):
        (WebKit::AcceleratedDrawingArea::enterAcceleratedCompositingMode):
        * WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.cpp:
        * WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.h:
        * WebProcess/WebPage/DrawingAreaImpl.cpp:
        (WebKit::DrawingAreaImpl::updatePreferences):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::sendViewportAttributesChanged):
        (WebKit::WebPage::viewportPropertiesDidChange):
        * WebProcess/gtk/WebProcessMainGtk.cpp:

2019-02-28  Sihui Liu  <sihui_liu@apple.com>

        Stop using legacy IDB path by default when creating WebProcessPool from websiteDataStore
        https://bugs.webkit.org/show_bug.cgi?id=194958

        Reviewed by Geoffrey Garen.

        ProcessPoolConfiguration::createWithWebsiteDataStoreConfiguration should not use fixed IDB path.

        * UIProcess/API/APIProcessPoolConfiguration.cpp:
        (API::ProcessPoolConfiguration::createWithWebsiteDataStoreConfiguration):
        * UIProcess/API/APIWebsiteDataStore.cpp:
        (API::WebsiteDataStore::createLegacy):
        (API::indexedDBDatabaseDirectory):
        * UIProcess/API/APIWebsiteDataStore.h:
        * UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
        (-[WKWebsiteDataStore _indexedDBDatabaseDirectory]):
        * UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::legacyWebsiteDataStoreConfiguration):

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

        [CoordinatedGraphics] Unify all LayerTreeHost classes
        https://bugs.webkit.org/show_bug.cgi?id=195094

        Reviewed by Žan Doberšek.

        There's no reason to have 3 classes, since currently LayerTreeHost is only used by coordinated graphics based
        ports.

        * PlatformWin.cmake:
        * SourcesGTK.txt:
        * SourcesWPE.txt:
        * WebProcess/WebPage/AcceleratedDrawingArea.cpp:
        (WebKit::AcceleratedDrawingArea::enterAcceleratedCompositingMode):
        (WebKit::AcceleratedDrawingArea::exitAcceleratedCompositingModeNow):
        * WebProcess/WebPage/AcceleratedDrawingArea.h:
        * WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp: Removed.
        * WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.h: Removed.
        * WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.cpp: Renamed from Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.cpp.
        (WebKit::LayerTreeHost::LayerTreeHost):
        (WebKit::LayerTreeHost::~LayerTreeHost):
        (WebKit::LayerTreeHost::setLayerFlushSchedulingEnabled):
        (WebKit::LayerTreeHost::scheduleLayerFlush):
        (WebKit::LayerTreeHost::cancelPendingLayerFlush):
        (WebKit::LayerTreeHost::layerFlushTimerFired):
        (WebKit::LayerTreeHost::setRootCompositingLayer):
        (WebKit::LayerTreeHost::setViewOverlayRootLayer):
        (WebKit::LayerTreeHost::invalidate):
        (WebKit::LayerTreeHost::scrollNonCompositedContents):
        (WebKit::LayerTreeHost::forceRepaint):
        (WebKit::LayerTreeHost::forceRepaintAsync):
        (WebKit::LayerTreeHost::sizeDidChange):
        (WebKit::LayerTreeHost::pauseRendering):
        (WebKit::LayerTreeHost::resumeRendering):
        (WebKit::LayerTreeHost::graphicsLayerFactory):
        (WebKit::LayerTreeHost::contentsSizeChanged):
        (WebKit::LayerTreeHost::didChangeViewportAttributes):
        (WebKit::LayerTreeHost::didChangeViewport):
        (WebKit::LayerTreeHost::setIsDiscardable):
        (WebKit::LayerTreeHost::setNativeSurfaceHandleForCompositing):
        (WebKit::LayerTreeHost::deviceOrPageScaleFactorChanged):
        (WebKit::LayerTreeHost::createDisplayRefreshMonitor):
        (WebKit::LayerTreeHost::didFlushRootLayer):
        (WebKit::LayerTreeHost::commitSceneState):
        (WebKit::LayerTreeHost::frameComplete):
        (WebKit::LayerTreeHost::nativeSurfaceHandleForCompositing):
        (WebKit::LayerTreeHost::didDestroyGLContext):
        (WebKit::LayerTreeHost::willRenderFrame):
        (WebKit::LayerTreeHost::didRenderFrame):
        (WebKit::LayerTreeHost::requestDisplayRefreshMonitorUpdate):
        (WebKit::LayerTreeHost::handleDisplayRefreshMonitorUpdate):
        (WebKit::LayerTreeHost::renderNextFrame):
        * WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.h: Renamed from Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.h.
        * WebProcess/WebPage/DrawingAreaImpl.cpp:
        (WebKit::DrawingAreaImpl::setNeedsDisplay):
        (WebKit::DrawingAreaImpl::setNeedsDisplayInRect):
        * WebProcess/WebPage/LayerTreeHost.cpp: Removed.
        * WebProcess/WebPage/LayerTreeHost.h: Removed.
        * WebPage/win/LayerTreeHost.h: Added.

2019-02-28  Justin Fan  <justin_fan@apple.com>

        [Web GPU] Enable Web GPU only on 64-bit
        https://bugs.webkit.org/show_bug.cgi?id=195139

        Because Metal is only supported on 64 bit apps.

        Unreviewed build fix.

        * Configurations/FeatureDefines.xcconfig:

2019-02-27  Simon Fraser  <simon.fraser@apple.com>

        Roll out r242014; it caused crashes in compositing logging (webkit.org/b/195141)

        * UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm:
        (WebKit::LocalAuthenticator::getAssertion):

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

        Unreviewed, fix -Wformat warning

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

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

        REGRESSION: Crash beneath ResourceLoadObserver::logSubresourceLoading
        https://bugs.webkit.org/show_bug.cgi?id=195072

        Reviewed by Ryosuke Niwa.

        ResourceLoadObserver and WebProcess should exist as long as the web page (process) is running. However,
        the NetworkProcess connection can close for a variety of reasons. If the ResourceLoadObserver observes
        a load or user gesture in the WebProcess, we should attempt to reconnect to the NetworkProcess (if it
        was disconnected), just like we do for other message send cases.

        This patch switches from using the m_networkProcessConnection member (which might be null) to use the
        'ensureNetworkProcessConnection' accessor which ensures we have a valid connection for message sends.

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

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

        Flaky API Test: TestWebKitAPI.ProcessSwap.SessionStorage
        https://bugs.webkit.org/show_bug.cgi?id=194480

        Reviewed by Brady Eidson.

        The StorageManager would only start listening for IPC on a given connection when
        StorageManager::processWillOpenConnection() is called. This gets called from
        WebsiteDataStore::webProcessWillOpenConnection() which gets called from
        WebProcessLifetimeTracker::webPageEnteringWebProcess().

        webPageEnteringWebProcess() was called in WebPageProxy::finishAttachingToWebProcess()
        after process-swapping. This means that IPC comming from the *provisional* process
        would not get processed and we would only start processing IPC on the provisional
        process's connection when it would get committed.

        To address the issue, this patch teaches WebProcessLifetimeTracker that a page can
        now have several processes. We also make sure that webPageEnteringWebProcess() gets
        called for the provisional process as soon as we create the provisional page, instead
        of waiting for it to get committed.

        * UIProcess/ProvisionalPageProxy.cpp:
        (WebKit::ProvisionalPageProxy::ProvisionalPageProxy):
        (WebKit::ProvisionalPageProxy::~ProvisionalPageProxy):
        (WebKit::ProvisionalPageProxy::connectionWillOpen):
        * UIProcess/ProvisionalPageProxy.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::finishAttachingToWebProcess):
        (WebKit::WebPageProxy::connectionWillOpen):
        (WebKit::WebPageProxy::webProcessWillShutDown):
        (WebKit::WebPageProxy::processDidTerminate):
        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::webProcessLifetimeTracker):
        * UIProcess/WebProcessLifetimeObserver.cpp:
        (WebKit::WebProcessLifetimeObserver::addWebPage):
        (WebKit::WebProcessLifetimeObserver::removeWebPage):
        * UIProcess/WebProcessLifetimeObserver.h:
        * UIProcess/WebProcessLifetimeTracker.cpp:
        (WebKit::WebProcessLifetimeTracker::addObserver):
        (WebKit::WebProcessLifetimeTracker::webPageEnteringWebProcess):
        (WebKit::WebProcessLifetimeTracker::webPageLeavingWebProcess):
        (WebKit::WebProcessLifetimeTracker::pageWasInvalidated):
        (WebKit::WebProcessLifetimeTracker::processIsRunning):
        * UIProcess/WebProcessLifetimeTracker.h:
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::connectionWillOpen):
        * UIProcess/WebStorage/StorageManager.cpp:
        (WebKit::StorageManager::SessionStorageNamespace::allowedConnections const):
        (WebKit::StorageManager::SessionStorageNamespace::addAllowedConnection):
        (WebKit::StorageManager::SessionStorageNamespace::removeAllowedConnection):
        (WebKit::StorageManager::addAllowedSessionStorageNamespaceConnection):
        (WebKit::StorageManager::removeAllowedSessionStorageNamespaceConnection):
        (WebKit::StorageManager::processWillOpenConnection):
        (WebKit::StorageManager::processDidCloseConnection):
        (WebKit::StorageManager::createSessionStorageMap):
        (WebKit::StorageManager::SessionStorageNamespace::allowedConnection const): Deleted.
        (WebKit::StorageManager::SessionStorageNamespace::setAllowedConnection): Deleted.
        (WebKit::StorageManager::setAllowedSessionStorageNamespaceConnection): Deleted.
        * UIProcess/WebStorage/StorageManager.h:
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::webPageWillOpenConnection):
        (WebKit::WebsiteDataStore::webPageDidCloseConnection):

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

        [iOS] Web pages shouldn't be able to present a keyboard after the web view resigns first responder
        https://bugs.webkit.org/show_bug.cgi?id=195118
        <rdar://problem/43411940>

        Reviewed by Tim Horton.

        It's currently possible for websites to redirect focus into an editable element on the page by programmatically
        requesting focus within the "blur" event handler. This is because our current heuristics:

        (1) Allow programmatic focus to show the keyboard when an element is already focused; this is meant to handle
            the case where the page moves focus between different elements on the page.
        (2) And also allow programmatic focus to show the keyboard when changing activity state; this is meant to handle
            the case where a focused element should show the keyboard when first responder is restored on a web view
            (e.g. in the case where a modal view controller is dismissed, and the web view regains first responder once
            again).

        In both of these scenarios, we actually only want the keyboard to appear if the web view itself is either
        becoming the first responder, or is already the first responder. Importantly, when blurring the focused element
        by calling -[WKWebViewe resignFirstResponder] (as is the case when dismissing the keyboard by tapping 'Done' or
        focusing other platform UI), we don't want to allow the page to show the keyboard due to element focus.

        To fix this issue, we enforce that we're either becoming the first responder or already are the first responder
        before showing the keyboard due to activity state change or focused element change.

        Test: fast/events/ios/do-not-show-keyboard-when-focusing-after-blur.html

        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView setupInteraction]):
        (-[WKContentView textInputTraits]):

        Quick drive-by tweak: rename _isBlurringFocusedNode to _isBlurringFocusedElement, to match the rest of the
        terminology used in WebKit.

        (-[WKContentView _elementDidFocus:userIsInteracting:blurPreviousNode:changingActivityState:userObject:]):

        Make our heuristics for determining whether to show the keyboard a tiny bit easier to follow, by moving the
        logic into a lambda function and using early returns. See above for more details.

        (-[WKContentView _elementDidBlur]):
        (-[WKContentView focusedFormControllerDidUpdateSuggestions:]):

2019-02-27  John Wilander  <wilander@apple.com>

        Adopt WebCore::RegistrableDomain in WebCore::ResourceLoadStatistics and WebKit::NetworkProcessProxy
        https://bugs.webkit.org/show_bug.cgi?id=195071
        <rdar://problem/48417690>

        Reviewed by Alex Christensen and Brent Fulgham.

        This patch adopts WebCore::RegistrableDomain in WebKit::NetworkProcessProxy
        and makes the necessary infrastructure changes to support that.

        The previous HashCountedSets in WebCore::ResourceLoadStatistics are now just
        HashSets since we never used the counts for anything. This change simplified
        the IPC::ArgumentCoder<ResourceLoadStatistics> encode and decode functions.

        The patch also makes WebCore::RegistrableDomain's String constructor private.
        A new create function WebCore::RegistrableDomain::uncheckedCreateFromString()
        is introduced to better signal to users that creating a registrable domain
        object with a string may create an object that doesn't match a registrable
        domain in a valid HTTP-family URL.

        Finally, this patch harmonizes parameter and variable naming, going from
        "origin" to "domain" and "mainFrame" to "topFrame."

        * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp:
        (WebKit::ResourceLoadStatisticsMemoryStore::removeDataRecords):
        (WebKit::ResourceLoadStatisticsMemoryStore::recursivelyGetAllDomainsThatHaveRedirectedToThisDomain const):
        (WebKit::ResourceLoadStatisticsMemoryStore::markAsPrevalentIfHasRedirectedToPrevalent):
        (WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccess):
        (WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccessInternal):
        (WebKit::ResourceLoadStatisticsMemoryStore::logFrameNavigation):
        (WebKit::ResourceLoadStatisticsMemoryStore::logSubresourceLoading):
        (WebKit::ResourceLoadStatisticsMemoryStore::logSubresourceRedirect):
        (WebKit::ResourceLoadStatisticsMemoryStore::isRegisteredAsSubresourceUnder const):
        (WebKit::ResourceLoadStatisticsMemoryStore::isRegisteredAsSubFrameUnder const):
        (WebKit::ResourceLoadStatisticsMemoryStore::isRegisteredAsRedirectingTo const):
        (WebKit::ResourceLoadStatisticsMemoryStore::setSubframeUnderTopFrameDomain):
        (WebKit::ResourceLoadStatisticsMemoryStore::setSubresourceUnderTopFrameDomain):
        (WebKit::ResourceLoadStatisticsMemoryStore::setSubresourceUniqueRedirectTo):
        (WebKit::ResourceLoadStatisticsMemoryStore::setSubresourceUniqueRedirectFrom):
        (WebKit::ResourceLoadStatisticsMemoryStore::setTopFrameUniqueRedirectTo):
        (WebKit::ResourceLoadStatisticsMemoryStore::setTopFrameUniqueRedirectFrom):
        (WebKit::ResourceLoadStatisticsMemoryStore::createEncoderFromData const):
        (WebKit::ResourceLoadStatisticsMemoryStore::hasUserGrantedStorageAccessThroughPrompt):
        (WebKit::ResourceLoadStatisticsMemoryStore::hasHadUnexpiredRecentUserInteraction const):
        (WebKit::ResourceLoadStatisticsMemoryStore::setSubframeUnderTopFrameOrigin): Deleted.
        (WebKit::ResourceLoadStatisticsMemoryStore::setSubresourceUnderTopFrameOrigin): Deleted.
        * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.h:
        * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::requestStorageAccessGranted):
        (WebKit::WebResourceLoadStatisticsStore::setSubframeUnderTopFrameDomain):
        (WebKit::WebResourceLoadStatisticsStore::setSubresourceUnderTopFrameDomain):
        (WebKit::WebResourceLoadStatisticsStore::deleteWebsiteDataForRegistrableDomainsInAllPersistentDataStores):
        (WebKit::WebResourceLoadStatisticsStore::setSubframeUnderTopFrameOrigin): Deleted.
        (WebKit::WebResourceLoadStatisticsStore::setSubresourceUnderTopFrameOrigin): Deleted.
        * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h:
        * NetworkProcess/Classifier/WebResourceLoadStatisticsTelemetry.cpp:
        (WebKit::sortedPrevalentResourceTelemetry):
        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::setSubframeUnderTopFrameDomain):
        (WebKit::NetworkProcess::setSubresourceUnderTopFrameDomain):
        (WebKit::filterForRegistrableDomains):
        (WebKit::NetworkProcess::deleteWebsiteDataForRegistrableDomainsInAllPersistentDataStores):
        (WebKit::NetworkProcess::registrableDomainsWithWebsiteData):
        (WebKit::NetworkProcess::setSubframeUnderTopFrameOrigin): Deleted.
        (WebKit::NetworkProcess::setSubresourceUnderTopFrameOrigin): Deleted.
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:
        * NetworkProcess/NetworkSession.cpp:
        (WebKit::NetworkSession::deleteWebsiteDataForRegistrableDomainsInAllPersistentDataStores):
        * NetworkProcess/NetworkSession.h:
        * Platform/classifier/ResourceLoadStatisticsClassifier.cpp:
        (WebKit::ResourceLoadStatisticsClassifier::calculateResourcePrevalence):
        * Shared/WebCoreArgumentCoders.cpp:
        (IPC::ArgumentCoder<ResourceLoadStatistics>::encode):
        (IPC::ArgumentCoder<ResourceLoadStatistics>::decode):
        * UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
        (WKWebsiteDataStoreSetStatisticsSubframeUnderTopFrameOrigin):
        (WKWebsiteDataStoreSetStatisticsSubresourceUnderTopFrameOrigin):
        * UIProcess/Cocoa/ResourceLoadStatisticsMemoryStoreCocoa.mm:
        (WebKit::ResourceLoadStatisticsMemoryStore::registerUserDefaultsIfNeeded):
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::updatePrevalentDomainsToBlockCookiesFor):
        (WebKit::NetworkProcessProxy::isPrevalentResource):
        (WebKit::NetworkProcessProxy::isVeryPrevalentResource):
        (WebKit::NetworkProcessProxy::setPrevalentResource):
        (WebKit::NetworkProcessProxy::setPrevalentResourceForDebugMode):
        (WebKit::NetworkProcessProxy::setVeryPrevalentResource):
        (WebKit::NetworkProcessProxy::setLastSeen):
        (WebKit::NetworkProcessProxy::clearPrevalentResource):
        (WebKit::NetworkProcessProxy::logUserInteraction):
        (WebKit::NetworkProcessProxy::hasHadUserInteraction):
        (WebKit::NetworkProcessProxy::clearUserInteraction):
        (WebKit::NetworkProcessProxy::setSubframeUnderTopFrameDomain):
        (WebKit::NetworkProcessProxy::isRegisteredAsRedirectingTo):
        (WebKit::NetworkProcessProxy::isRegisteredAsSubFrameUnder):
        (WebKit::NetworkProcessProxy::setSubresourceUnderTopFrameDomain):
        (WebKit::NetworkProcessProxy::isRegisteredAsSubresourceUnder):
        (WebKit::NetworkProcessProxy::setSubresourceUniqueRedirectTo):
        (WebKit::NetworkProcessProxy::setSubresourceUniqueRedirectFrom):
        (WebKit::NetworkProcessProxy::setTopFrameUniqueRedirectTo):
        (WebKit::NetworkProcessProxy::setTopFrameUniqueRedirectFrom):
        (WebKit::NetworkProcessProxy::isGrandfathered):
        (WebKit::NetworkProcessProxy::setGrandfathered):
        (WebKit::NetworkProcessProxy::hasStorageAccessForFrame):
        (WebKit::NetworkProcessProxy::hasStorageAccess):
        (WebKit::NetworkProcessProxy::requestStorageAccess):
        (WebKit::NetworkProcessProxy::requestStorageAccessConfirm):
        (WebKit::NetworkProcessProxy::grantStorageAccess):
        (WebKit::NetworkProcessProxy::setSubframeUnderTopFrameOrigin): Deleted.
        (WebKit::NetworkProcessProxy::setSubresourceUnderTopFrameOrigin): Deleted.
        * UIProcess/Network/NetworkProcessProxy.h:
        * UIProcess/Network/NetworkProcessProxy.messages.in:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::requestStorageAccessConfirm):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::isPrevalentResource):
        (WebKit::WebsiteDataStore::setPrevalentResource):
        (WebKit::WebsiteDataStore::setPrevalentResourceForDebugMode):
        (WebKit::WebsiteDataStore::isVeryPrevalentResource):
        (WebKit::WebsiteDataStore::setVeryPrevalentResource):
        (WebKit::WebsiteDataStore::setSubframeUnderTopFrameDomain):
        (WebKit::WebsiteDataStore::isRegisteredAsSubFrameUnder):
        (WebKit::WebsiteDataStore::setSubresourceUnderTopFrameDomain):
        (WebKit::WebsiteDataStore::isRegisteredAsSubresourceUnder):
        (WebKit::WebsiteDataStore::setSubresourceUniqueRedirectTo):
        (WebKit::WebsiteDataStore::setSubresourceUniqueRedirectFrom):
        (WebKit::WebsiteDataStore::setTopFrameUniqueRedirectTo):
        (WebKit::WebsiteDataStore::setTopFrameUniqueRedirectFrom):
        (WebKit::WebsiteDataStore::isRegisteredAsRedirectingTo):
        (WebKit::WebsiteDataStore::clearPrevalentResource):
        (WebKit::WebsiteDataStore::setLastSeen):
        (WebKit::WebsiteDataStore::hasStorageAccess):
        (WebKit::WebsiteDataStore::requestStorageAccess):
        (WebKit::WebsiteDataStore::grantStorageAccess):
        (WebKit::WebsiteDataStore::logUserInteraction):
        (WebKit::WebsiteDataStore::hasHadUserInteraction):
        (WebKit::WebsiteDataStore::clearUserInteraction):
        (WebKit::WebsiteDataStore::setGrandfathered):
        (WebKit::WebsiteDataStore::setSubframeUnderTopFrameOrigin): Deleted.
        (WebKit::WebsiteDataStore::setSubresourceUnderTopFrameOrigin): Deleted.
        * UIProcess/WebsiteData/WebsiteDataStore.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::hasStorageAccess):
        (WebKit::WebPage::requestStorageAccess):

2019-02-27  Keith Rollin  <krollin@apple.com>

        Fix Xcode project UUIDs for TextCheckerCompletion.cpp and TextCheckerCompletion.h
        https://bugs.webkit.org/show_bug.cgi?id=195109
        <rdar://problem/48442272>

        Reviewed by Alexey Proskuryakov.

        In r144436, TextCheckerCompletion.cpp and TextCheckerCompletion.h were
        added to WebKit2.xcodeproj with invalid UUIDs (they included Q's and
        Z's in hexadecimal strings). While these UUIDs haven't caused any
        problems in practice over the last six years, they are indeed invalid,
        and were discovered via an Xcode-project processing tool that did not
        anticipate their format. Fix this by removing the files from the
        project and re-adding them.

        * WebKit.xcodeproj/project.pbxproj:

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

        Remove UserMediaProcessManager processState map
        https://bugs.webkit.org/show_bug.cgi?id=195056

        Reviewed by Eric Carlson.

        Before the patch, the WebProcessProxy->ProcessState map was storing the list of manager proxies and process state.
        To improve on this model, this patch does the following:
        - Move the process state to WebProcessProxy.
        - Remove the map and replace it by a set of all manager proxies.

        This simplifies the handling.
        On WebProcess side, instead of storing the sandbox extensions in each WebPage, we handle them in WebProcess directly.
        This mirrors what is being done in UIProcess and reduces the risk of inconsistencies between the two, the risk being that capture would fail.

        * UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
        (WebKit::UserMediaPermissionRequestManagerProxy::forEach):
        (WebKit::UserMediaPermissionRequestManagerProxy::UserMediaPermissionRequestManagerProxy):
        (WebKit::UserMediaPermissionRequestManagerProxy::~UserMediaPermissionRequestManagerProxy):
        (WebKit::UserMediaPermissionRequestManagerProxy::captureStateChanged):
        * UIProcess/UserMediaPermissionRequestManagerProxy.h:
        * UIProcess/UserMediaProcessManager.cpp:
        (WebKit::UserMediaProcessManager::muteCaptureMediaStreamsExceptIn):
        (WebKit::UserMediaProcessManager::willCreateMediaStream):
        (WebKit::UserMediaProcessManager::endedCaptureSession):
        (WebKit::UserMediaProcessManager::setCaptureEnabled):
        (WebKit::UserMediaProcessManager::captureDevicesChanged):
        (WebKit::ProcessState::ProcessState): Deleted.
        (WebKit::ProcessState::hasVideoExtension const): Deleted.
        (WebKit::ProcessState::grantVideoExtension): Deleted.
        (WebKit::ProcessState::revokeVideoExtension): Deleted.
        (WebKit::ProcessState::hasAudioExtension const): Deleted.
        (WebKit::ProcessState::grantAudioExtension): Deleted.
        (WebKit::ProcessState::revokeAudioExtension): Deleted.
        (WebKit::stateMap): Deleted.
        (WebKit::processState): Deleted.
        (WebKit::ProcessState::addRequestManager): Deleted.
        (WebKit::ProcessState::removeRequestManager): Deleted.
        (WebKit::UserMediaProcessManager::addUserMediaPermissionRequestManagerProxy): Deleted.
        (WebKit::UserMediaProcessManager::removeUserMediaPermissionRequestManagerProxy): Deleted.
        (WebKit::UserMediaProcessManager::startedCaptureSession): Deleted.
        * UIProcess/UserMediaProcessManager.h:
        * UIProcess/WebProcessProxy.h:
        (WebKit::WebProcessProxy::mediaCaptureSandboxExtensions const):
        (WebKit::WebProcessProxy::hasVideoCaptureExtension const):
        (WebKit::WebProcessProxy::grantVideoCaptureExtension):
        (WebKit::WebProcessProxy::revokeVideoCaptureExtension):
        (WebKit::WebProcessProxy::hasAudioCaptureExtension const):
        (WebKit::WebProcessProxy::grantAudioCaptureExtension):
        (WebKit::WebProcessProxy::revokeAudioCaptureExtension):
        * WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp:
        (WebKit::UserMediaPermissionRequestManager::~UserMediaPermissionRequestManager): Deleted.
        (WebKit::UserMediaPermissionRequestManager::clear): Deleted.
        (WebKit::UserMediaPermissionRequestManager::grantUserMediaDeviceSandboxExtensions): Deleted.
        (WebKit::UserMediaPermissionRequestManager::revokeUserMediaDeviceSandboxExtensions): Deleted.
        * WebProcess/MediaStream/UserMediaPermissionRequestManager.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::close):
        (WebKit::WebPage::grantUserMediaDeviceSandboxExtensions): Deleted.
        (WebKit::WebPage::revokeUserMediaDeviceSandboxExtensions): Deleted.
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::grantUserMediaDeviceSandboxExtensions):
        (WebKit::WebProcess::revokeUserMediaDeviceSandboxExtensions):
        * WebProcess/WebProcess.h:
        * WebProcess/WebProcess.messages.in:

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

        [macOS] Disable permissive call logging in sandbox
        https://bugs.webkit.org/show_bug.cgi?id=194061
        <rdar://problem/47686253>

        Reviewed by Brent Fulgham.

        Strict call filtering should be reenabled.

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

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

        [HTTPSUpgrade] Use open source database until the feature is ready
        https://bugs.webkit.org/show_bug.cgi?id=195069
        <rdar://problem/47838224>

        Reviewed by Geoffrey Garen.

        * DerivedSources-input.xcfilelist:
        * DerivedSources.make:

2019-02-27  Antoine Quint  <graouts@apple.com>

        Support Pointer Events on macOS
        https://bugs.webkit.org/show_bug.cgi?id=195008
        <rdar://problem/47454419>

        Reviewed by Dean Jackson.

        * Configurations/FeatureDefines.xcconfig:

2019-02-27  Sihui Liu  <sihui_liu@apple.com>

        Network Process is put to suspended when holding locked IndexedDB files
        https://bugs.webkit.org/show_bug.cgi?id=195024
        <rdar://problem/45194169>

        Reviewed by Geoffrey Garen.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::idbServer):
        (WebKit::NetworkProcess::notifyHoldingLockedFiles):
        * NetworkProcess/NetworkProcess.h:
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::didClose):
        (WebKit::NetworkProcessProxy::setIsIDBDatabaseHoldingLockedFiles):
        * UIProcess/Network/NetworkProcessProxy.h:
        * UIProcess/Network/NetworkProcessProxy.messages.in:

2019-02-26  Simon Fraser  <simon.fraser@apple.com>

        Have a single notion of scroll position in the scrolling tree and derive layoutViewport from it
        https://bugs.webkit.org/show_bug.cgi?id=194973

        Reviewed by Antti Koivisto.

        This patch cleans up how the scrolling tree responds to scrolls.

        First, ScrollingTreeScrollingNode::m_currentScrollPosition is "truth" for scrolling thread/
        UI process scroll position.

        On macOS where handleWheelEvent on the scrolling thread changes scroll position, the
        bottleneck is ScrollingTreeScrollingNode::scrollTo() which sets the new scroll position,
        update the visual viewport (for frame scrolls) updates the scrolledContentsLayer position,
        updates related layers on this node (counter-scrolling layers etc), and then tells the
        scrolling tree, which recurses through descendant nodes so they can adjust their layer
        positions.

        On iOS, the bottleneck is ScrollingTreeScrollingNode::wasScrolledByDelegatedScrolling(),
        which does the above other than setting scrolledContentsLayer (since we're reacting to
        layer state changes, not producing them).

        updateLayersAfterAncestorChange() is renamed to relatedNodeScrollPositionDidChange(), and
        ScrollingTree does the tree walk so classes don't have to implement
        updateLayersAfterAncestorChange() just to talk children. The ScrollingTree tree walk knows
        how to get the correct layoutViewport and to stop at frame boundaries (layer updates never
        need to cross frame boundaries).

        We preserve 'cumulativeDelta'; it's necessary for things like fixed inside overflow:scroll,
        since the fixed state was computed with the "layout" scroll position, so we have to account
        for the scroll delta since the last committed position. It's possible we could improve this
        in future.

        * UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm:
        (WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTree):
        * UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.cpp:
        (WebKit::RemoteScrollingCoordinatorProxy::viewportChangedViaDelegatedScrolling):
        (WebKit::RemoteScrollingCoordinatorProxy::scrollingTreeNodeDidScroll):
        * UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.h:
        * UIProcess/RemoteLayerTree/RemoteScrollingTree.cpp:
        (WebKit::RemoteScrollingTree::scrollingTreeNodeDidScroll):
        * UIProcess/RemoteLayerTree/RemoteScrollingTree.h:
        * UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.mm:
        (WebKit::RemoteScrollingCoordinatorProxy::currentLayoutViewport const):
        * UIProcess/RemoteLayerTree/ios/ScrollingTreeFrameScrollingNodeRemoteIOS.h:
        * UIProcess/RemoteLayerTree/ios/ScrollingTreeFrameScrollingNodeRemoteIOS.mm:
        (WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::commitStateAfterChildren):
        (WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::repositionScrollingLayers):
        (WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::repositionRelatedLayers):
        (WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::scrollPosition const): Deleted.
        (WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::setScrollPosition): Deleted.
        (WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::setScrollLayerPosition): Deleted.
        (WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::updateChildNodesAfterScroll): Deleted.
        (WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::updateLayersAfterDelegatedScroll): Deleted.
        (WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::updateLayersAfterViewportChange): Deleted.
        (WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::updateLayersAfterAncestorChange): Deleted.
        * UIProcess/RemoteLayerTree/ios/ScrollingTreeOverflowScrollingNodeIOS.h:
        * UIProcess/RemoteLayerTree/ios/ScrollingTreeOverflowScrollingNodeIOS.mm:
        (WebKit::ScrollingTreeOverflowScrollingNodeIOS::repositionScrollingLayers):
        (WebKit::ScrollingTreeOverflowScrollingNodeIOS::updateLayersAfterAncestorChange): Deleted.
        (WebKit::ScrollingTreeOverflowScrollingNodeIOS::scrollPosition const): Deleted.
        (WebKit::ScrollingTreeOverflowScrollingNodeIOS::setScrollLayerPosition): Deleted.
        (WebKit::ScrollingTreeOverflowScrollingNodeIOS::updateLayersAfterDelegatedScroll): Deleted.
        * UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.h:
        * UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.mm:
        (WebKit::ScrollingTreeScrollingNodeDelegateIOS::ScrollingTreeScrollingNodeDelegateIOS):
        (WebKit::ScrollingTreeScrollingNodeDelegateIOS::repositionScrollingLayers):
        (WebKit::ScrollingTreeScrollingNodeDelegateIOS::scrollViewDidScroll):
        (WebKit::ScrollingTreeScrollingNodeDelegateIOS::updateLayersAfterAncestorChange): Deleted.
        (WebKit::ScrollingTreeScrollingNodeDelegateIOS::scrollPosition const): Deleted.
        (WebKit::ScrollingTreeScrollingNodeDelegateIOS::setScrollLayerPosition): Deleted.
        (WebKit::ScrollingTreeScrollingNodeDelegateIOS::updateChildNodesAfterScroll): Deleted.
        (WebKit::ScrollingTreeScrollingNodeDelegateIOS::scrollViewDidScroll const): Deleted.
        * UIProcess/RemoteLayerTree/mac/ScrollerPairMac.mm:
        (WebKit::ScrollerPairMac::updateValues):
        (WebKit::ScrollerPairMac::valuesForOrientation):
        * UIProcess/RemoteLayerTree/mac/ScrollingTreeFrameScrollingNodeRemoteMac.cpp:
        (WebKit::ScrollingTreeFrameScrollingNodeRemoteMac::repositionRelatedLayers):
        (WebKit::ScrollingTreeFrameScrollingNodeRemoteMac::setScrollLayerPosition): Deleted.
        * UIProcess/RemoteLayerTree/mac/ScrollingTreeFrameScrollingNodeRemoteMac.h:
        * UIProcess/ios/WKContentView.mm:
        (-[WKContentView didUpdateVisibleRect:unobscuredRect:contentInsets:unobscuredRectInScrollViewCoordinates:obscuredInsets:unobscuredSafeAreaInsets:inputViewBounds:scale:minimumScale:inStableState:isChangingObscuredInsetsInteractively:enclosedInScrollableAncestorView:]):

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

        Silence log after r242122
        https://bugs.webkit.org/show_bug.cgi?id=195074

        * UIProcess/WebStorage/LocalStorageDatabaseTracker.cpp:
        (WebKit::LocalStorageDatabaseTracker::databasePath const):
        m_localStorageDirectory can now be null for ephemeral sessions.
        This is not a failure to create a directory and needs no log.
        This fixes the WKWebView.InitializingWebViewWithEphemeralStorageDoesNotLog API test.

2019-02-27  Timothy Hatcher  <timothy@apple.com>

        REGRESSION: WebKit content crash in Base System (because NSAppearance is NULL).
        https://bugs.webkit.org/show_bug.cgi?id=195086
        rdar://problem/48419124

        Reviewed by Tim Horton.

        * UIProcess/RemoteLayerTree/mac/ScrollerMac.mm:
        (-[WKScrollerImpDelegate effectiveAppearanceForScrollerImp:]): Always return a valid NSAppearance.

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

        [PSON] Add mechanism to clear suspended pages while bypassing the WebProcess cache
        https://bugs.webkit.org/show_bug.cgi?id=195089

        Reviewed by Geoffrey Garen.

        Add a convenient mechanism to clear suspended pages while bypassing the WebProcess
        cache since we need to do this on memory pressure and when clearing website data.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::receivedNavigationPolicyDecision):
        * UIProcess/WebProcessCache.cpp:
        (WebKit::WebProcessCache::addProcessIfPossible):
        (WebKit::WebProcessCache::addProcess):
        (WebKit::WebProcessCache::takeProcess):
        (WebKit::WebProcessCache::CachedProcess::~CachedProcess):
        * UIProcess/WebProcessCache.h:
        (WebKit::WebProcessCache::setIsDisabled): Deleted.
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::handleMemoryPressureWarning):
        (WebKit::WebProcessPool::hasSuspendedPageFor const):
        (WebKit::WebProcessPool::clearSuspendedPages):
        * UIProcess/WebProcessPool.h:
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::maybeShutDown):
        (WebKit::WebProcessProxy::canTerminateAuxiliaryProcess):
        * UIProcess/WebProcessProxy.h:
        (WebKit::WebProcessProxy::suspendedPageCount const):
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::removeData):

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

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

        Reviewed by Geoff Garen.

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

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

2019-02-20  Jer Noble  <jer.noble@apple.com>

        [Cocoa] Media elements will restart network buffering just before suspending
        https://bugs.webkit.org/show_bug.cgi?id=193691

        Reviewed by Eric Carlson.

        When the WebProcess receives a notification that the process is about to become
        suspended, it tells the MemoryPressureHandler to release all critical memory. This
        has the side effect of causing AVFoundation-backed media elements to dump their
        in-memory caches and start downloading media data again. Instead, media elements
        should all stop buffering media data during suspension. Add new testing SPI to
        simulate suspension and resume messages.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _processWillSuspendImminentlyForTesting]):
        (-[WKWebView _processDidResumeForTesting]):
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        * UIProcess/WebProcessProxy.h:
        * UIProcess/ios/WKInkPickerView.mm:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::suspendAllMediaBuffering):
        (WebKit::WebPage::resumeAllMediaBuffering):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::actualPrepareToSuspend):
        (WebKit::WebProcess::cancelPrepareToSuspend):
        (WebKit::WebProcess::processDidResume):
        (WebKit::WebProcess::suspendAllMediaBuffering):
        (WebKit::WebProcess::resumeAllMediaBuffering):
        * WebProcess/WebProcess.h:

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

        Move service worker response validation from the service worker client to the service worker itself
        https://bugs.webkit.org/show_bug.cgi?id=194716

        Reviewed by Geoffrey Garen.

        Removed response validation as it is now done in service worker side.

        * WebProcess/Storage/ServiceWorkerClientFetch.cpp:
        (WebKit::ServiceWorkerClientFetch::didReceiveRedirectResponse):
        (WebKit::ServiceWorkerClientFetch::didReceiveResponse):

2019-02-26  Zalan Bujtas  <zalan@apple.com>

        [ContentChangeObserver] clearContentChangeObservers should be internal to ContentChangeObserver class
        https://bugs.webkit.org/show_bug.cgi?id=195066
        <rdar://problem/48411682>

        Reviewed by Tim Horton.

        * WebProcess/WebCoreSupport/WebChromeClient.h:
        * WebProcess/WebCoreSupport/ios/WebChromeClientIOS.mm:
        (WebKit::WebChromeClient::clearContentChangeObservers): Deleted.

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

        [iOS] Sandbox should allow mach lookups related to media capturing
        https://bugs.webkit.org/show_bug.cgi?id=194951

        Reviewed by Eric Carlson.

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

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

        Update NetworkSession to use Session Cleanup when available
        https://bugs.webkit.org/show_bug.cgi?id=195019
        <rdar://problem/45149868>

        Reviewed by Alex Christensen.

        If the build environment supports Session Cleanup, initialize it.

        No test changes since this doesn't do anything on the test systems at present.

        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (WebKit::NetworkSessionCocoa::NetworkSessionCocoa):

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

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

        Reviewed by Geoff Garen.

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

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

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

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

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

        Reviewed by Antti Koivisto.

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

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

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

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

        Create WebPageProxy::m_userMediaPermissionRequestManager only when needed
        https://bugs.webkit.org/show_bug.cgi?id=195051

        Reviewed by Eric Carlson.

        Before the patch, WebPageProxy::m_userMediaPermissionRequestManager was created
        in some methods to reset its state when main document is changing, view is becoming visible...
        This code is unnecessary if the page did not create it already using JS APIs such as getUserMedia/enumerateDevices/ondevicechange.
        This patch skips processing in the other cases if WebPageProxy::m_userMediaPermissionRequestManager is null.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::close): No need to nullify it since it will be done in resetState shortly after.
        (WebKit::WebPageProxy::didChangeMainDocument):
        (WebKit::WebPageProxy::viewIsBecomingVisible):
        (WebKit::WebPageProxy::clearUserMediaState):
        (WebKit::WebPageProxy::updatePlayingMediaDidChange): m_userMediaPermissionRequestManager should not be null here
        since there is or was some capturing done for the page.

2019-02-26  Zalan Bujtas  <zalan@apple.com>

        [ContentChangeObserver] Simplify content observation API by removing explicit DOMTimer observation.
        https://bugs.webkit.org/show_bug.cgi?id=195023
        <rdar://problem/48381885>

        Reviewed by Tim Horton.

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

2019-02-26  Takashi Komori  <Takashi.Komori@sony.com>

        [Curl] Load HTTP body of 401 response when AuthenticationChange is cancelled.
        https://bugs.webkit.org/show_bug.cgi?id=191652

        Reviewed by Alex Christensen.

        Test: http/tests/security/401-logout/401-logout.php

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

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

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

        Reviewed by Eric Carlson.

        Covered by API test.

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

2019-02-26  Philippe Normand <pnormand@igalia.com> and Carlos Garcia Campos  <cgarcia@igalia.com>

        [WPE] Add API for webview background color configuration
        https://bugs.webkit.org/show_bug.cgi?id=192305

        Reviewed by Michael Catanzaro.

        In the case of WPE we need to send the background color to the web process to be used as the background color of
        the page. This patch adapts the GTK+ implementation to do the same, since it's a lot simpler. The patch also
        removes the SetDrawsBackground message in favor of the new SetBackgroundColor message that receives an optional
        color.

        * PlatformWPE.cmake: Add new WPE API for WebKitColor boxed type.
        * Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:
        (WebKit::CoordinatedGraphicsScene::paintToCurrentGLContext): Remove background rendering and opacity handling.
        * Shared/CoordinatedGraphics/CoordinatedGraphicsScene.h:
        * Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:
        (WebKit::ThreadedCompositor::renderLayerTree): Remove drawsBakground and always clear the context with
        transparent color.
        * Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.h:
        * Shared/WebPageCreationParameters.cpp:
        (WebKit::WebPageCreationParameters::encode const): Replace drawsBackground with backgroundColor.
        (WebKit::WebPageCreationParameters::decode): Ditto.
        * Shared/WebPageCreationParameters.h:
        * SourcesWPE.txt:
        * UIProcess/API/glib/WebKitWebView.cpp:
        * UIProcess/API/gtk/WebKitWebViewGtk.cpp:
        (webkit_web_view_set_background_color):
        (webkit_web_view_get_background_color):
        * UIProcess/API/wpe/WebKitColor.cpp: Added.
        (webkit_color_copy):
        (webkit_color_free):
        (webkitColorToWebCoreColor):
        (webkitColorFillFromWebCoreColor):
        (webkit_color_parse):
        * UIProcess/API/wpe/WebKitColor.h: Added.
        * UIProcess/API/wpe/WebKitColorPrivate.h: Added.
        * UIProcess/API/wpe/WebKitWebView.h: Implement webkit_web_view_set_background_color API.
        * UIProcess/API/wpe/WebKitWebViewWPE.cpp: Ditto.
        (webkit_web_view_set_background_color):
        (webkit_web_view_get_background_color):
        * UIProcess/API/wpe/docs/wpe-0.1-sections.txt: Add new symbols.
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::setDrawsBackground): Set a transparent background color when false is passed.
        (WebKit::WebPageProxy::setBackgroundColor): Send background color to the WebProcess.
        (WebKit::WebPageProxy::creationParameters): Replace drawsBackground with backgroundColor.
        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::drawsBackground const):
        (WebKit::WebPageProxy::backgroundColor const):
        * UIProcess/cairo/BackingStoreCairo.cpp:
        (WebKit::BackingStore::incorporateUpdate): Remove GTK+ code to handle background color.
        * UIProcess/gtk/AcceleratedBackingStore.cpp:
        * UIProcess/gtk/AcceleratedBackingStore.h: Make paint() pure virtual and remove the implementation.
        * UIProcess/gtk/AcceleratedBackingStoreWayland.cpp:
        (WebKit::AcceleratedBackingStoreWayland::paint): Dot not call AcceleratedBackingStore::paint() now that is pure virtual.
        * UIProcess/gtk/AcceleratedBackingStoreX11.cpp:
        (WebKit::AcceleratedBackingStoreX11::paint): Ditto.
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::transitionToCommittedForNewPage): Use background color as provided by the
        UIProcess when creating the FrameView.
        * WebProcess/WebPage/AcceleratedDrawingArea.cpp:
        * WebProcess/WebPage/AcceleratedDrawingArea.h:
        * WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp:
        * WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.h:
        * WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.cpp:
        (WebKit::ThreadedCoordinatedLayerTreeHost::setIsDiscardable):
        * WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.h:
        * WebProcess/WebPage/DrawingArea.h:
        * WebProcess/WebPage/DrawingAreaImpl.cpp:
        (WebKit::DrawingAreaImpl::display): Remove special case for transparent background.
        * WebProcess/WebPage/LayerTreeHost.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::setBackgroundColor): New API for background color configuration. Proxies to FrameView and DrawingArea.
        * WebProcess/WebPage/WebPage.h:
        (WebKit::WebPage::backgroundColor const): Read-only access to the current background color.
        * WebProcess/WebPage/WebPage.messages.in: Replace SetDrawsBackground message with SetBackgroundColor.

2019-02-25  Yongjun Zhang  <yongjun_zhang@apple.com>

        scalableNativeWebpageParameters() is not preserved on new page navigation.
        https://bugs.webkit.org/show_bug.cgi?id=194892
        <rdar://problem/47538280>

        If a page's current default viewport configuration is scalableNativeWebpageParameters due to
        the fact that m_canIgnoreScalingConstraints is true, loading a new page should preserve this
        configuration until we derive the right values from viewport meta-tag.

        Reviewed by Wenson Hsieh.

        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::resetViewportDefaultConfiguration): Use nativeWebpageParameters() instance method to
            get the appropriate default configuration.

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

        [iOS] Adjust initial scale zooming heuristics when changing view scale
        https://bugs.webkit.org/show_bug.cgi?id=194995

        Reviewed by Tim Horton.

        Currently, we only zoom to the new initial scale iff we're exactly at initial scale before changing the view
        scale. This was done so that if a user zoomed in really far and then increased the view scale, we wouldn't end
        up zooming out as a result. However, this leads to confusing behavior in the case where the user has manually
        changed the zoom scale to something close to (but not exactly) initial scale, and then attempts to zoom in
        further using view scale. In this case, we'll end up keeping page scale the same, so it looks like nothing is
        happening.

        To fix this, we tweak our heuristics for determining whether to jump to initial scale; if the view scale is
        increasing and the new initial scale is greater than the current scale, zoom to initial scale. Likewise, if the
        view scale is decreasing and the new initial scale is less than the current scale, zoom to initial scale.

        Test: fast/viewport/ios/initial-scale-after-changing-view-scale.html

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

2019-02-25  John Wilander  <wilander@apple.com>

        Introduce and adopt new class RegistrableDomain for eTLD+1
        https://bugs.webkit.org/show_bug.cgi?id=194791
        <rdar://problem/48179240>

        Reviewed by Alex Christensen, Fujii Hironori, and Brent Fulgham.

        A new API test was added. Plenty of existing layout tests under
        http/tests/resourceLoadStatistics/ and http/tests/storageAccess/ test the code.

        This patch introduces and adopts a new class called WebCore::RegistrableDomain
        which represents a domain's eTLD+1 (effective top level domain plus one) and is
        the basis for the term "site," as in same-site. Other popular names include
        high-level domain, primary domain, and top privately controlled/owned domain.
        Effective top level domains are enumerated on the Public Suffix List
        (https://publicsuffix.org).

        This class just uses the full domain for when the Public Suffix List cannot help
        finding the registrable domain and for WebKit ports that haven't enabled
        PUBLIC_SUFFIX_LIST. It also uses the string "nullOrigin" as a representation
        for the null or unique origin (this matches how these origins were handled
        before).

        The implementation is a wrapper around a String and the functions and class
        members that now make use of this new class used to handle regular String
        objects which didn't help much in terms of type safety or guarantees that the
        string had already been converted to an eTLD+1.

        We've at least two bad bugs in the Storage Access API because of confusion
        between a URL's eTLD+1 and its host. The usage of WebCore::RegistrableDomain
        will prohibit such bugs in the future.

        Partitioning in WebKit also uses eTLD+1 to a large extent. I plan to adopt
        WebCore::RegistrableDomain for partitioning in a later patch.

        This patch also enhances parameter naming by:
        - Removing parts that refer to "primary" as in primaryDomain.
        - Replacing references to "TopPrivatelyControlledDomain" with "RegistrableDomain."
        - Replacing references to "TopPrivatelyOwnedDomain" with "RegistrableDomain."
        - Using the term "domain" consistently instead of e.g. "host."

        A follow-up patch will continue backwards in call chains to create
        WebCore::RegistrableDomain objects as early as possible instead of using strings.
        I did not do that work here in the interest of patch size.

        * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp:
        (WebKit::domainsToString):
        (WebKit::pruneResources):
        (WebKit::ResourceLoadStatisticsMemoryStore::removeDataRecords):
        (WebKit::ResourceLoadStatisticsMemoryStore::recursivelyGetAllDomainsThatHaveRedirectedToThisDomain const):
        (WebKit::ResourceLoadStatisticsMemoryStore::markAsPrevalentIfHasRedirectedToPrevalent):
        (WebKit::ResourceLoadStatisticsMemoryStore::isPrevalentDueToDebugMode):
        (WebKit::ResourceLoadStatisticsMemoryStore::hasStorageAccess):
        (WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccess):
        (WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccessUnderOpener):
        (WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccess):
        (WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccessInternal):
        (WebKit::ResourceLoadStatisticsMemoryStore::grandfatherExistingWebsiteData):
        (WebKit::ResourceLoadStatisticsMemoryStore::ensurePrevalentResourcesForDebugMode):
        (WebKit::ResourceLoadStatisticsMemoryStore::setPrevalentResourceForDebugMode):
        (WebKit::ResourceLoadStatisticsMemoryStore::logFrameNavigation):
        (WebKit::ResourceLoadStatisticsMemoryStore::logSubresourceLoading):
        (WebKit::ResourceLoadStatisticsMemoryStore::logSubresourceRedirect):
        (WebKit::ResourceLoadStatisticsMemoryStore::logUserInteraction):
        (WebKit::ResourceLoadStatisticsMemoryStore::clearUserInteraction):
        (WebKit::ResourceLoadStatisticsMemoryStore::hasHadUserInteraction):
        (WebKit::ResourceLoadStatisticsMemoryStore::setPrevalentResource):
        (WebKit::ResourceLoadStatisticsMemoryStore::isPrevalentResource const):
        (WebKit::ResourceLoadStatisticsMemoryStore::isVeryPrevalentResource const):
        (WebKit::ResourceLoadStatisticsMemoryStore::isRegisteredAsSubresourceUnder const):
        (WebKit::ResourceLoadStatisticsMemoryStore::isRegisteredAsSubFrameUnder const):
        (WebKit::ResourceLoadStatisticsMemoryStore::isRegisteredAsRedirectingTo const):
        (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::ensureResourceStatisticsForRegistrableDomain):
        (WebKit::ResourceLoadStatisticsMemoryStore::mergeStatistics):
        (WebKit::ResourceLoadStatisticsMemoryStore::hasUserGrantedStorageAccessThroughPrompt):
        (WebKit::debugLogDomainsInBatches):
        (WebKit::ResourceLoadStatisticsMemoryStore::updateCookieBlocking):
        (WebKit::ResourceLoadStatisticsMemoryStore::updateCookieBlockingForDomains):
        (WebKit::ResourceLoadStatisticsMemoryStore::clearBlockingStateForDomains):
        (WebKit::ResourceLoadStatisticsMemoryStore::registrableDomainsToRemoveWebsiteDataFor):
        (WebKit::ResourceLoadStatisticsMemoryStore::pruneStatisticsIfNeeded):
        (WebKit::ResourceLoadStatisticsMemoryStore::setLastSeen):
        (WebKit::ResourceLoadStatisticsMemoryStore::setVeryPrevalentResource):
        (WebKit::ResourceLoadStatisticsMemoryStore::ensureResourceStatisticsForPrimaryDomain): Deleted.
        (WebKit::ResourceLoadStatisticsMemoryStore::topPrivatelyControlledDomainsToRemoveWebsiteDataFor): Deleted.
        * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.h:
        * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::setPrevalentResourceForDebugMode):
        (WebKit::WebResourceLoadStatisticsStore::hasStorageAccess):
        (WebKit::WebResourceLoadStatisticsStore::hasStorageAccessForFrame):
        (WebKit::WebResourceLoadStatisticsStore::callHasStorageAccessForFrameHandler):
        (WebKit::WebResourceLoadStatisticsStore::requestStorageAccessGranted):
        (WebKit::WebResourceLoadStatisticsStore::requestStorageAccess):
        (WebKit::WebResourceLoadStatisticsStore::requestStorageAccessUnderOpener):
        (WebKit::WebResourceLoadStatisticsStore::grantStorageAccess):
        (WebKit::WebResourceLoadStatisticsStore::callGrantStorageAccessHandler):
        (WebKit::WebResourceLoadStatisticsStore::logFrameNavigation):
        (WebKit::WebResourceLoadStatisticsStore::logWebSocketLoading):
        (WebKit::WebResourceLoadStatisticsStore::logSubresourceLoading):
        (WebKit::WebResourceLoadStatisticsStore::logSubresourceRedirect):
        (WebKit::WebResourceLoadStatisticsStore::logUserInteraction):
        (WebKit::WebResourceLoadStatisticsStore::clearUserInteraction):
        (WebKit::WebResourceLoadStatisticsStore::hasHadUserInteraction):
        (WebKit::WebResourceLoadStatisticsStore::setLastSeen):
        (WebKit::WebResourceLoadStatisticsStore::setPrevalentResource):
        (WebKit::WebResourceLoadStatisticsStore::setVeryPrevalentResource):
        (WebKit::WebResourceLoadStatisticsStore::isPrevalentResource):
        (WebKit::WebResourceLoadStatisticsStore::isVeryPrevalentResource):
        (WebKit::WebResourceLoadStatisticsStore::isRegisteredAsSubresourceUnder):
        (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::scheduleCookieBlockingUpdateForDomains):
        (WebKit::WebResourceLoadStatisticsStore::scheduleClearBlockingStateForDomains):
        (WebKit::WebResourceLoadStatisticsStore::callUpdatePrevalentDomainsToBlockCookiesForHandler):
        (WebKit::WebResourceLoadStatisticsStore::removePrevalentDomains):
        (WebKit::WebResourceLoadStatisticsStore::callRemoveDomainsHandler):
        (WebKit::WebResourceLoadStatisticsStore::deleteWebsiteDataForRegistrableDomainsInAllPersistentDataStores):
        (WebKit::WebResourceLoadStatisticsStore::registrableDomainsWithWebsiteData):
        (WebKit::isolatedPrimaryDomain): Deleted.
        (WebKit::WebResourceLoadStatisticsStore::deleteWebsiteDataForTopPrivatelyControlledDomainsInAllPersistentDataStores): Deleted.
        (WebKit::WebResourceLoadStatisticsStore::topPrivatelyControlledDomainsWithWebsiteData): Deleted.
        * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h:
        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::logUserInteraction):
        (WebKit::NetworkConnectionToWebProcess::logWebSocketLoading):
        (WebKit::NetworkConnectionToWebProcess::logSubresourceLoading):
        (WebKit::NetworkConnectionToWebProcess::logSubresourceRedirect):
        (WebKit::NetworkConnectionToWebProcess::hasStorageAccess):
        (WebKit::NetworkConnectionToWebProcess::requestStorageAccess):
        * NetworkProcess/NetworkConnectionToWebProcess.h:
        * NetworkProcess/NetworkConnectionToWebProcess.messages.in:
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::updatePrevalentDomainsToBlockCookiesFor):
        (WebKit::NetworkProcess::isGrandfathered):
        (WebKit::NetworkProcess::isPrevalentResource):
        (WebKit::NetworkProcess::isVeryPrevalentResource):
        (WebKit::NetworkProcess::setGrandfathered):
        (WebKit::NetworkProcess::setPrevalentResource):
        (WebKit::NetworkProcess::setPrevalentResourceForDebugMode):
        (WebKit::NetworkProcess::setVeryPrevalentResource):
        (WebKit::NetworkProcess::clearPrevalentResource):
        (WebKit::NetworkProcess::setSubframeUnderTopFrameOrigin):
        (WebKit::NetworkProcess::isRegisteredAsRedirectingTo):
        (WebKit::NetworkProcess::isRegisteredAsSubFrameUnder):
        (WebKit::NetworkProcess::setSubresourceUnderTopFrameOrigin):
        (WebKit::NetworkProcess::setSubresourceUniqueRedirectTo):
        (WebKit::NetworkProcess::setSubresourceUniqueRedirectFrom):
        (WebKit::NetworkProcess::isRegisteredAsSubresourceUnder):
        (WebKit::NetworkProcess::setTopFrameUniqueRedirectTo):
        (WebKit::NetworkProcess::setTopFrameUniqueRedirectFrom):
        (WebKit::NetworkProcess::setLastSeen):
        (WebKit::NetworkProcess::hasStorageAccessForFrame):
        (WebKit::NetworkProcess::hasStorageAccess):
        (WebKit::NetworkProcess::requestStorageAccess):
        (WebKit::NetworkProcess::requestStorageAccessGranted):
        (WebKit::NetworkProcess::grantStorageAccess):
        (WebKit::NetworkProcess::logFrameNavigation):
        (WebKit::NetworkProcess::logUserInteraction):
        (WebKit::NetworkProcess::hadUserInteraction):
        (WebKit::NetworkProcess::clearUserInteraction):
        (WebKit::NetworkProcess::removePrevalentDomains):
        (WebKit::filterForRegistrableDomains):
        (WebKit::NetworkProcess::deleteWebsiteDataForRegistrableDomainsInAllPersistentDataStores):
        (WebKit::NetworkProcess::registrableDomainsWithWebsiteData):
        (WebKit::filterForTopLevelDomains): Deleted.
        (WebKit::NetworkProcess::deleteWebsiteDataForTopPrivatelyControlledDomainsInAllPersistentDataStores): Deleted.
        (WebKit::NetworkProcess::topPrivatelyControlledDomainsWithWebsiteData): Deleted.
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:
        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::logCookieInformationInternal):
        * NetworkProcess/NetworkSession.cpp:
        (WebKit::NetworkSession::deleteWebsiteDataForRegistrableDomainsInAllPersistentDataStores):
        (WebKit::NetworkSession::registrableDomainsWithWebsiteData):
        (WebKit::NetworkSession::deleteWebsiteDataForTopPrivatelyControlledDomainsInAllPersistentDataStores): Deleted.
        (WebKit::NetworkSession::topPrivatelyControlledDomainsWithWebsiteData): Deleted.
        * NetworkProcess/NetworkSession.h:
        * Shared/WebCoreArgumentCoders.cpp:
        (IPC::ArgumentCoder<ResourceLoadStatistics>::encode):
        (IPC::ArgumentCoder<ResourceLoadStatistics>::decode):
        * UIProcess/Cocoa/ResourceLoadStatisticsMemoryStoreCocoa.mm:
        (WebKit::ResourceLoadStatisticsMemoryStore::registerUserDefaultsIfNeeded):
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::updatePrevalentDomainsToBlockCookiesFor):
        (WebKit::NetworkProcessProxy::isPrevalentResource):
        (WebKit::NetworkProcessProxy::isVeryPrevalentResource):
        (WebKit::NetworkProcessProxy::setPrevalentResource):
        (WebKit::NetworkProcessProxy::setPrevalentResourceForDebugMode):
        (WebKit::NetworkProcessProxy::setVeryPrevalentResource):
        (WebKit::NetworkProcessProxy::setLastSeen):
        (WebKit::NetworkProcessProxy::clearPrevalentResource):
        (WebKit::NetworkProcessProxy::logUserInteraction):
        (WebKit::NetworkProcessProxy::hasHadUserInteraction):
        (WebKit::NetworkProcessProxy::clearUserInteraction):
        (WebKit::NetworkProcessProxy::setSubframeUnderTopFrameOrigin):
        (WebKit::NetworkProcessProxy::isRegisteredAsRedirectingTo):
        (WebKit::NetworkProcessProxy::isRegisteredAsSubFrameUnder):
        (WebKit::NetworkProcessProxy::setSubresourceUnderTopFrameOrigin):
        (WebKit::NetworkProcessProxy::isRegisteredAsSubresourceUnder):
        (WebKit::NetworkProcessProxy::setSubresourceUniqueRedirectTo):
        (WebKit::NetworkProcessProxy::setSubresourceUniqueRedirectFrom):
        (WebKit::NetworkProcessProxy::setTopFrameUniqueRedirectTo):
        (WebKit::NetworkProcessProxy::setTopFrameUniqueRedirectFrom):
        (WebKit::NetworkProcessProxy::isGrandfathered):
        (WebKit::NetworkProcessProxy::setGrandfathered):
        (WebKit::NetworkProcessProxy::hasStorageAccessForFrame):
        (WebKit::NetworkProcessProxy::hasStorageAccess):
        (WebKit::NetworkProcessProxy::requestStorageAccess):
        (WebKit::NetworkProcessProxy::grantStorageAccess):
        (WebKit::NetworkProcessProxy::notifyWebsiteDataDeletionForRegistrableDomainsFinished):
        (WebKit::NetworkProcessProxy::notifyWebsiteDataScanForRegistrableDomainsFinished):
        (WebKit::NetworkProcessProxy::notifyWebsiteDataDeletionForTopPrivatelyOwnedDomainsFinished): Deleted.
        (WebKit::NetworkProcessProxy::notifyWebsiteDataScanForTopPrivatelyControlledDomainsFinished): Deleted.
        * UIProcess/Network/NetworkProcessProxy.h:
        * UIProcess/Network/NetworkProcessProxy.messages.in:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::logFrameNavigation):
        (WebKit::WebPageProxy::requestStorageAccessConfirm):
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::notifyPageStatisticsAndDataRecordsProcessed):
        (WebKit::WebProcessProxy::notifyWebsiteDataScanForRegistrableDomainsFinished):
        (WebKit::WebProcessProxy::notifyWebsiteDataDeletionForRegistrableDomainsFinished):
        (WebKit::WebProcessProxy::notifyWebsiteDataScanForTopPrivatelyControlledDomainsFinished): Deleted.
        (WebKit::WebProcessProxy::notifyWebsiteDataDeletionForTopPrivatelyOwnedDomainsFinished): Deleted.
        * UIProcess/WebProcessProxy.h:
        * UIProcess/WebResourceLoadStatisticsStore.messages.in:
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::isPrevalentResource):
        (WebKit::WebsiteDataStore::setPrevalentResource):
        (WebKit::WebsiteDataStore::setPrevalentResourceForDebugMode):
        (WebKit::WebsiteDataStore::isVeryPrevalentResource):
        (WebKit::WebsiteDataStore::setVeryPrevalentResource):
        (WebKit::WebsiteDataStore::setSubframeUnderTopFrameOrigin):
        (WebKit::WebsiteDataStore::isRegisteredAsSubFrameUnder):
        (WebKit::WebsiteDataStore::setSubresourceUnderTopFrameOrigin):
        (WebKit::WebsiteDataStore::isRegisteredAsSubresourceUnder):
        (WebKit::WebsiteDataStore::setSubresourceUniqueRedirectTo):
        (WebKit::WebsiteDataStore::setSubresourceUniqueRedirectFrom):
        (WebKit::WebsiteDataStore::setTopFrameUniqueRedirectTo):
        (WebKit::WebsiteDataStore::setTopFrameUniqueRedirectFrom):
        (WebKit::WebsiteDataStore::isRegisteredAsRedirectingTo):
        (WebKit::WebsiteDataStore::clearPrevalentResource):
        (WebKit::WebsiteDataStore::setLastSeen):
        (WebKit::WebsiteDataStore::hasStorageAccess):
        (WebKit::WebsiteDataStore::requestStorageAccess):
        (WebKit::WebsiteDataStore::grantStorageAccess):
        (WebKit::WebsiteDataStore::logUserInteraction):
        (WebKit::WebsiteDataStore::hasHadUserInteraction):
        (WebKit::WebsiteDataStore::clearUserInteraction):
        (WebKit::WebsiteDataStore::setGrandfathered):
        (WebKit::WebsiteDataStore::fetchDataForTopPrivatelyControlledDomains): Deleted.
        * UIProcess/WebsiteData/WebsiteDataStore.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::hasStorageAccess):
        (WebKit::WebPage::requestStorageAccess):
        * WebProcess/WebProcess.cpp:
        (WebKit::m_nonVisibleProcessCleanupTimer):
        (WebKit::WebProcess::initializeWebProcess):

2019-02-25  Adrian Perez de Castro  <aperez@igalia.com>

        [WPE] Bump WPEBackend-fdo requirement to API version 1.0
        https://bugs.webkit.org/show_bug.cgi?id=195001

        Reviewed by Carlos Garcia Campos.

        API version 1.0 always includes the functionality previously guarded with
        WPE_BACKEND_CHECK_VERSION(): remove the guards and always use the new functions
        unconditionally.

        * UIProcess/API/wpe/WPEView.cpp:
        (WKWPE::View::View): Remove usage of WPE_BACKEND_CHECK_VERSION().
        (WKWPE::m_backend): Ditto.
        * UIProcess/API/wpe/qt/WPEQtViewBackend.cpp:
        (WPEQtViewBackend::WPEQtViewBackend): Use libWPEBackend-fdo-1.0 as
        library name, remove call to wpe_fdo_initialize_for_egl_display().
        (WPEQtViewBackend::create): Call wpe_fdo_initialize_for_egl_display()
        here, to bail out early in case initialization fails.
        * UIProcess/glib/WebProcessPoolGLib.cpp:
        (WebKit::WebProcessPool::platformInitializeWebProcess): Remove usage of
        WPE_BACKEND_CHECK_VERSION().

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

        A prewarmed Web process should have a process assertion.
        https://bugs.webkit.org/show_bug.cgi?id=195006

        Reviewed by Geoffrey Garen.

        To make sure the prewarm message is handled in the Web process before the process is suspended,
        the process should have a process assertion. This can be fixed by sending the prewarm message
        inside WebProcessPool::initializeNewWebProcess, since all message sent inside this method are
        guaranteed to be handled before the WebContent process is suspended.

        This patch is based on Chris Dumez' idea and obervation of the issue.

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::createNewWebProcess):
        (WebKit::WebProcessPool::initializeNewWebProcess):
        * UIProcess/WebProcessPool.h:

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

        [GTK] Enable PSON
        https://bugs.webkit.org/show_bug.cgi?id=194979

        Reviewed by Žan Doberšek.

        It is expected that this may introduce unexpected regressions, so it's appropriate to do
        this at the start of a new release cycle.

        * Shared/WebPreferencesDefaultValues.h:

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

        [WPE][GTK] Clean up handling of WEBKIT_FORCE_COMPLEX_TEXT
        https://bugs.webkit.org/show_bug.cgi?id=194614

        Reviewed by Carlos Garcia Campos.

        This environment variable is now enabled for WPE, not just for GTK.

        It is now possible to use this environment variable to enable complex text, not just to
        disable it.

        WebProcessPool::setAlwaysUsesComplexTextCodePath is fixed to be respected even when this
        environment variable is set, although WPE and GTK will never do so.

        * UIProcess/glib/WebProcessPoolGLib.cpp:
        (WebKit::WebProcessPool::platformInitialize):
        (WebKit::WebProcessPool::platformInitializeWebProcess):

2019-02-24  Zalan Bujtas  <zalan@apple.com>

        Introduce ContentChangeObserver class
        https://bugs.webkit.org/show_bug.cgi?id=194977
        <rdar://problem/48338115>

        Reviewed by Simon Fraser.

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

2019-02-24  Simon Fraser  <simon.fraser@apple.com>

        Migrate from "fixedPositionRect" to "layoutViewport" in the scrolling tree
        https://bugs.webkit.org/show_bug.cgi?id=194984

        Reviewed by Sam Weinig.

        Rename "fixedPositionRect" to "layoutViewport" in scrolling tree code.

        Remove ScrollingTree::fixedPositionRect() which was only used on iOS, to fetch the
        current layout viewport rect. Instead, set the layout viewport on the root
        node in ScrollingTree::mainFrameViewportChangedViaDelegatedScrolling().
        
        Add a WK2 Scrolling log channel.

        * Platform/Logging.h:
        * UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm:
        (WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTree):
        * UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.cpp:
        (WebKit::RemoteScrollingCoordinatorProxy::viewportChangedViaDelegatedScrolling):
        * UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.h:
        * UIProcess/RemoteLayerTree/RemoteScrollingTree.cpp:
        (WebKit::RemoteScrollingTree::fixedPositionRect): Deleted.
        * UIProcess/RemoteLayerTree/RemoteScrollingTree.h:
        * UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.mm:
        (WebKit::RemoteScrollingCoordinatorProxy::currentLayoutViewport const):
        (WebKit::RemoteScrollingCoordinatorProxy::customFixedPositionRect const): Deleted.
        * UIProcess/RemoteLayerTree/ios/ScrollingTreeFrameScrollingNodeRemoteIOS.h:
        * UIProcess/RemoteLayerTree/ios/ScrollingTreeFrameScrollingNodeRemoteIOS.mm:
        (WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::updateChildNodesAfterScroll):
        (WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::updateLayersAfterViewportChange):
        (WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::updateLayersAfterAncestorChange):
        * UIProcess/RemoteLayerTree/ios/ScrollingTreeOverflowScrollingNodeIOS.h:
        * UIProcess/RemoteLayerTree/ios/ScrollingTreeOverflowScrollingNodeIOS.mm:
        (WebKit::ScrollingTreeOverflowScrollingNodeIOS::updateLayersAfterAncestorChange):
        * UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.h:
        * UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.mm:
        (WebKit::ScrollingTreeScrollingNodeDelegateIOS::updateLayersAfterAncestorChange):
        (WebKit::ScrollingTreeScrollingNodeDelegateIOS::updateChildNodesAfterScroll):
        * UIProcess/ios/WKContentView.mm:
        (-[WKContentView didUpdateVisibleRect:unobscuredRect:contentInsets:unobscuredRectInScrollViewCoordinates:obscuredInsets:unobscuredSafeAreaInsets:inputViewBounds:scale:minimumScale:inStableState:isChangingObscuredInsetsInteractively:enclosedInScrollableAncestorView:]):

2019-02-20  Darin Adler  <darin@apple.com>

        Finish removing String::format
        https://bugs.webkit.org/show_bug.cgi?id=194893

        Reviewed by Daniel Bates.

        * UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm:
        (WebKit::LocalAuthenticator::getAssertion): Use makeString, attempting to fix
        a problem where we passed an NSData * to format with a "%s"."

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

        [WPE] Install MemoryPressureHandler in UIProcess
        https://bugs.webkit.org/show_bug.cgi?id=194617

        Reviewed by Žan Doberšek.

        Currently only GTK and Cocoa ports run MemoryPressureHandler in the UI process. WPE should
        too.

        We need @no-unify to avoid changing the unified source bundles under API/, which are
        notoriously fragile. (WebMemoryPressureHandler.cpp sorts just above API/.)

        * SourcesWPE.txt:
        * UIProcess/WebMemoryPressureHandler.cpp:
        (WebKit::installMemoryPressureHandler):
        * UIProcess/glib/WebProcessPoolGLib.cpp:
        (WebKit::WebProcessPool::platformInitialize):

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

        Give DrawingAreas their own identifiers
        https://bugs.webkit.org/show_bug.cgi?id=194969
        <rdar://problem/48154508>

        Unreviewed, fix API test debug assertion failures after r241988.
        We do not support sending an ObjectIdentifier that is 0 via IPC so update WebPageProxy::CreateNewPage
        IPC to return an Optional<WebPageCreationParameters> instead of a WebPageCreationParameters. It returns
        nullopt when there this no UIClient or the client did not create the page, instead of returning a
        default-initialized WebPageCreationParameters.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::createNewPage):
        * UIProcess/WebPageProxy.messages.in:
        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::createWindow):

2019-02-23  Simon Fraser  <simon.fraser@apple.com>

        Remove remnants of iOS WK1 scrolling tree code
        https://bugs.webkit.org/show_bug.cgi?id=194980

        Reviewed by Sam Weinig.

        Remove ScrollingTreeIOS and ScrollingCoordinatorIOS which were never instantiated.

        Merge ScrollingTreeFrameScrollingNodeIOS into ScrollingTreeFrameScrollingNodeRemoteIOS,
        removing code which never applies to iOS WK2 (e.g. the synchronous scrolling code path).

        * UIProcess/RemoteLayerTree/RemoteScrollingTree.cpp:
        * UIProcess/RemoteLayerTree/ios/ScrollingTreeFrameScrollingNodeRemoteIOS.h:
        * UIProcess/RemoteLayerTree/ios/ScrollingTreeFrameScrollingNodeRemoteIOS.mm:
        (WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::ScrollingTreeFrameScrollingNodeRemoteIOS):
        (WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::commitStateBeforeChildren):
        (WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::commitStateAfterChildren):
        (WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::minimumScrollPosition const):
        (WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::maximumScrollPosition const):
        (WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::scrollPosition const):
        (WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::setScrollPosition):
        (WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::setScrollLayerPosition):
        (WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::updateChildNodesAfterScroll):
        (WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::updateLayersAfterDelegatedScroll):
        (WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::updateLayersAfterViewportChange):
        (WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::updateLayersAfterAncestorChange):
        * UIProcess/RemoteLayerTree/ios/ScrollingTreeOverflowScrollingNodeIOS.h:

2019-02-23  Keith Miller  <keith_miller@apple.com>

        Add new mac target numbers
        https://bugs.webkit.org/show_bug.cgi?id=194955

        Reviewed by Tim Horton.

        * Configurations/Base.xcconfig:
        * Configurations/DebugRelease.xcconfig:

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

        Give DrawingAreas their own identifiers
        https://bugs.webkit.org/show_bug.cgi?id=194969
        <rdar://problem/48154508>

        Reviewed by Geoffrey Garen.

        Give DrawingAreas their own identifiers instead of using the pageID. It will make the IPC more robust now that a
        WebPageProxy can have several drawing areas with PSON.

        * Shared/DrawingAreaInfo.h:
        * Shared/WebPageCreationParameters.cpp:
        (WebKit::WebPageCreationParameters::encode const):
        (WebKit::WebPageCreationParameters::decode):
        * Shared/WebPageCreationParameters.h:
        * UIProcess/AcceleratedDrawingAreaProxy.cpp:
        (WebKit::AcceleratedDrawingAreaProxy::sendUpdateBackingStoreState):
        (WebKit::AcceleratedDrawingAreaProxy::waitForAndDispatchDidUpdateBackingStoreState):
        (WebKit::AcceleratedDrawingAreaProxy::setNativeSurfaceHandleForCompositing):
        (WebKit::AcceleratedDrawingAreaProxy::destroyNativeSurfaceHandleForCompositing):
        * UIProcess/DrawingAreaProxy.cpp:
        (WebKit::DrawingAreaProxy::DrawingAreaProxy):
        (WebKit::DrawingAreaProxy::~DrawingAreaProxy):
        (WebKit::DrawingAreaProxy::messageSenderConnection const):
        (WebKit::DrawingAreaProxy::sendMessage):
        (WebKit::DrawingAreaProxy::viewExposedRectChangedTimerFired):
        * UIProcess/DrawingAreaProxy.h:
        (WebKit::DrawingAreaProxy::identifier const):
        (WebKit::DrawingAreaProxy::process const):
        * UIProcess/DrawingAreaProxyImpl.cpp:
        (WebKit::DrawingAreaProxyImpl::update):
        * UIProcess/ProvisionalPageProxy.cpp:
        (WebKit::ProvisionalPageProxy::initializeWebPage):
        * UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm:
        (WebKit::RemoteLayerTreeDrawingAreaProxy::RemoteLayerTreeDrawingAreaProxy):
        (WebKit::RemoteLayerTreeDrawingAreaProxy::~RemoteLayerTreeDrawingAreaProxy):
        (WebKit::RemoteLayerTreeDrawingAreaProxy::deviceScaleFactorDidChange):
        (WebKit::RemoteLayerTreeDrawingAreaProxy::sendUpdateGeometry):
        (WebKit::RemoteLayerTreeDrawingAreaProxy::acceleratedAnimationDidStart):
        (WebKit::RemoteLayerTreeDrawingAreaProxy::acceleratedAnimationDidEnd):
        (WebKit::RemoteLayerTreeDrawingAreaProxy::didRefreshDisplay):
        (WebKit::RemoteLayerTreeDrawingAreaProxy::waitForDidUpdateActivityState):
        (WebKit::RemoteLayerTreeDrawingAreaProxy::dispatchAfterEnsuringDrawing):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::initializeWebPage):
        (WebKit::WebPageProxy::createNewPage):
        (WebKit::WebPageProxy::creationParameters):
        * UIProcess/WebPageProxy.h:
        * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm:
        (WebKit::TiledCoreAnimationDrawingAreaProxy::deviceScaleFactorDidChange):
        (WebKit::TiledCoreAnimationDrawingAreaProxy::colorSpaceDidChange):
        (WebKit::TiledCoreAnimationDrawingAreaProxy::waitForDidUpdateActivityState):
        (WebKit::TiledCoreAnimationDrawingAreaProxy::sendUpdateGeometry):
        (WebKit::TiledCoreAnimationDrawingAreaProxy::adjustTransientZoom):
        (WebKit::TiledCoreAnimationDrawingAreaProxy::commitTransientZoom):
        (WebKit::TiledCoreAnimationDrawingAreaProxy::dispatchAfterEnsuringDrawing):
        * WebProcess/WebPage/AcceleratedDrawingArea.cpp:
        (WebKit::AcceleratedDrawingArea::AcceleratedDrawingArea):
        (WebKit::AcceleratedDrawingArea::layerHostDidFlushLayers):
        (WebKit::AcceleratedDrawingArea::sendDidUpdateBackingStoreState):
        * WebProcess/WebPage/DrawingArea.cpp:
        (WebKit::DrawingArea::DrawingArea):
        (WebKit::DrawingArea::removeMessageReceiverIfNeeded):
        * WebProcess/WebPage/DrawingArea.h:
        (WebKit::DrawingArea::identifier const):
        (WebKit::DrawingArea::send):
        * WebProcess/WebPage/DrawingAreaImpl.cpp:
        (WebKit::DrawingAreaImpl::sendDidUpdateBackingStoreState):
        (WebKit::DrawingAreaImpl::exitAcceleratedCompositingMode):
        (WebKit::DrawingAreaImpl::display):
        * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm:
        (WebKit::RemoteLayerTreeDrawingArea::RemoteLayerTreeDrawingArea):
        (WebKit::RemoteLayerTreeDrawingArea::updateGeometry):
        (WebKit::RemoteLayerTreeDrawingArea::flushLayers):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::reinitializeWebPage):
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
        (WebKit::TiledCoreAnimationDrawingArea::TiledCoreAnimationDrawingArea):
        (WebKit::TiledCoreAnimationDrawingArea::sendEnterAcceleratedCompositingModeIfNeeded):
        (WebKit::TiledCoreAnimationDrawingArea::updateIntrinsicContentSizeIfNeeded):
        (WebKit::TiledCoreAnimationDrawingArea::flushLayers):
        (WebKit::TiledCoreAnimationDrawingArea::updateGeometry):
        (WebKit::TiledCoreAnimationDrawingArea::setLayerHostingMode):

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

        [Cocoa] Do not suppress deprecation warnings when calling sandbox_extension_issue_file
        https://bugs.webkit.org/show_bug.cgi?id=194971
        <rdar://problem/35786264>

        Reviewed by Tim Horton.

        sandbox_extension_issue_file is not actually deprecated.

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

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

        [iOS] Callout menu overlaps in-page controls when editing a comment in github.com's issue tracker
        https://bugs.webkit.org/show_bug.cgi?id=194873
        <rdar://problem/46701974>

        Reviewed by Tim Horton.

        On the topic of supporting web-based rich text editors on iOS, one problematic area has always been handling
        conflicts between platform UI (i.e., the system callout menu) and in-page text editing controls. This issue
        comes up in websites that don't use the "hidden contenteditable" approach to rich text editing, but also show
        additional controls in a toolbar or contextual menu above the selection. In these cases, what often happens is
        that system controls overlap controls in the page.

        Luckily, the iOS callout menu (i.e. the private UICalloutBar) is capable of presenting with a list of "evasion
        rects" to avoid; if the callout bar would normally intersect with one of these rects, then a different
        orientation that does not intersect with one of these rects is chosen instead. Currently, the only rect added
        here by UIKit when presenting the callout menu is the bounding rect of the on-screen keyboard, but after
        <rdar://problem/48128337>, we now have a generalized mechanism for offering additional evasion rects before
        UIKit presents the callout menu.

        This patch adopts the mechanism introduced in <rdar://problem/48128337>, and introduces a heuristic for
        determining the approximate location of controls in the page which might overlap the callout menu. This
        heuristic works by hit-testing for clickable (but non-editable) nodes above the bounds of the selection, which
        are additionally not hit-tested by advancing outwards from any of the other edges of the selection bounds.
        Additionally, any hit-tested nodes whose bounding rects are very large (relative to the content view size) are
        ignored (this deals with scenarios where the body or a large container element has a click handler). We then add
        the bounding rects of each of the nodes that fit this criteria to the list of rects for UIKit to avoid when
        presenting the system callout menu.

        The result is that WebKit will, by default, avoid overlapping anything that looks like controls in the page when
        showing a callout menu in editable content. In practice, this fixes overlapping controls on most websites that
        roll their own context menu or toolbar in their rich text editor.

        Test: editing/selection/ios/avoid-showing-callout-menu-over-controls.html

        * Platform/spi/ios/UIKitSPI.h:
        * UIProcess/WebPageProxy.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView requestAutocorrectionRectsForString:withCompletionHandler:]):
        (-[WKContentView requestRectsToEvadeForSelectionCommandsWithCompletionHandler:]):
        (-[WKContentView requestAutocorrectionContextWithCompletionHandler:]):

        Drive-by: handle null completion handler arguments more gracefully, by raising an NSException and bailing before
        attempting to invoke a nil block.

        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::requestEvasionRectsAboveSelection):

        See above for more detail.

        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::requestEvasionRectsAboveSelection):

2019-02-22  Simon Fraser  <simon.fraser@apple.com>

        Unreviewed build fix: need a WebCore:: namespace on ScrollingEventResult.

        * UIProcess/RemoteLayerTree/ios/ScrollingTreeOverflowScrollingNodeIOS.h:

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

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

        Reviewed by Alex Christensen.

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

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

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

        [iOS] Sandbox should allow mach lookups related to media capturing
        https://bugs.webkit.org/show_bug.cgi?id=194951
        <rdar://problem/48013875>

        Reviewed by Brent Fulgham.

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

2019-02-22  Alexander Mikhaylenko  <exalm7659@gmail.com>

        [GTK] Navigation gesture improvements
        https://bugs.webkit.org/show_bug.cgi?id=194943

        Reviewed by Michael Catanzaro.

        Cancel the gesture if progress is less than 0.5 and velocity is not high enough.

        Allow to continue the gesture during animation. Introduce finished state to be used
        when showing snapshot after the animation ends.

        Fix duration calculation, also slow it down so that the initial velocity matches
        what it was during the gesture.

        * UIProcess/ViewGestureController.h: Add shouldCancel() and State::Finishing to SwipeProgressTracker.
        * UIProcess/gtk/ViewGestureControllerGtk.cpp:
        (WebKit::ViewGestureController::SwipeProgressTracker::handleEvent):
        Fix velocity calculation, allow scrolling during State::Animating.
        (WebKit::ViewGestureController::SwipeProgressTracker::shouldCancel): Added.
        (WebKit::ViewGestureController::SwipeProgressTracker::startAnimation): Use shouldCancel() and fix duration calculation.
        (WebKit::ViewGestureController::SwipeProgressTracker::endAnimation): Set state to State::Finishing when the animation ends.

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

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

        Reviewed by Geoffrey Garen.

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

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

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

2019-02-21  Adrian Perez de Castro  <aperez@igalia.com>

        [WPE][GTK] No API documentation generated for WebKitUserContentFilterStore
        https://bugs.webkit.org/show_bug.cgi?id=194908

        Reviewed by Carlos Garcia Campos.

        * UIProcess/API/gtk/docs/webkit2gtk-4.0.types: Add entry for webkit_user_content_filter_store_get_type().
        * UIProcess/API/gtk/docs/webkit2gtk-docs.sgml: Add entry for WebKitUserContentFilterStore.
        * UIProcess/API/wpe/docs/wpe-docs.sgml: Ditto.

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

        wpewebkit-2.23.90 Failing to build on Fedora
        https://bugs.webkit.org/show_bug.cgi?id=194922

        Unreviewed. Fix path to WebKitUserContentFilterStore.h in WPE_API_INSTALLED_HEADERS.

        * PlatformWPE.cmake:

2019-02-21  Simon Fraser  <simon.fraser@apple.com>

        Hardcode Visual Viewports on everywhere except iOS WK1
        https://bugs.webkit.org/show_bug.cgi?id=194928

        Reviewed by Zalan Bujtas.

        Remove the WK1 and WK2 preferences and MiniBrowser menu item for "visual viewports",
        change the default value of the Setting to 'true', and hardcode WebView on iOS to
        set it to false. The setting has shipped for several years and there's no need to turn
        it off now.

        Similarly, disable the "Visual Viewport API" on iOS WK1, since it makes no sense if
        Visual Viewports are not enabled.
        
        Remove the "visualViewportEnabled" flag and unused code paths from scrolling tree code
        that only runs in WK2

        * Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp:
        (ArgumentCoder<ScrollingStateFrameScrollingNode>::encode):
        (ArgumentCoder<ScrollingStateFrameScrollingNode>::decode):
        * Shared/WebPreferences.yaml:
        * UIProcess/API/Cocoa/WKPreferences.mm:
        (-[WKPreferences _visualViewportEnabled]): Deleted.
        (-[WKPreferences _setVisualViewportEnabled:]): Deleted.
        * UIProcess/API/Cocoa/WKPreferencesPrivate.h:
        * UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm:
        (WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTree):
        * UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.h:
        (WebKit::RemoteScrollingCoordinatorProxy::visualViewportEnabled const): Deleted.
        * UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.mm:
        (WebKit::RemoteScrollingCoordinatorProxy::customFixedPositionRect const):
        * UIProcess/WebPageProxy.h:
        * UIProcess/ios/WKContentView.mm:
        (-[WKContentView didUpdateVisibleRect:unobscuredRect:contentInsets:unobscuredRectInScrollViewCoordinates:obscuredInsets:unobscuredSafeAreaInsets:inputViewBounds:scale:minimumScale:inStableState:isChangingObscuredInsetsInteractively:enclosedInScrollableAncestorView:]):
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::computeCustomFixedPositionRect const):
        * WebProcess/Automation/WebAutomationSessionProxy.cpp:
        (WebKit::WebAutomationSessionProxy::computeElementLayout):
        * WebProcess/InjectedBundle/InjectedBundle.cpp:
        (WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner):
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::getFocusedElementInformation):
        (WebKit::WebPage::dynamicViewportSizeUpdate):
        (WebKit::WebPage::updateVisibleContentRects):

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

        [GTK] Epiphany searching for plugins even if plugins are disabled
        https://bugs.webkit.org/show_bug.cgi?id=194352

        Reviewed by Michael Catanzaro.

        Check pluginsEnabled setting before trying to get plugins from UI process.

        * WebProcess/Plugins/WebPluginInfoProvider.cpp:
        (WebKit::WebPluginInfoProvider::populatePluginCache):

2019-02-21  Darin Adler  <darin@apple.com>

        Some refinements for Node and Document
        https://bugs.webkit.org/show_bug.cgi?id=194764

        Reviewed by Ryosuke Niwa.

        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDocumentGtk.cpp:
        (webkit_dom_document_get_override_style): Changed to return nullptr directly instead of
        calling a bunch of WebCore code first. No real value in checking arguments or doing any work.

        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::shouldAlwaysUsePluginDocument const): Deleted.
        No need to override the function inherited from the base class, nor to keep track of the
        unnecessary task of implementing this some day.
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.h: Updated for the above.

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

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

        Reviewed by Chris Dumez.

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

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

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

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

        Clicking "Go Back" on a safe browsing warning before a WKWebView has loaded any page should request to close the WKWebView
        https://bugs.webkit.org/show_bug.cgi?id=194914
        <rdar://problem/47586889>

        Reviewed by Geoffrey Garen.

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

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

        Turn a high-value UI-side-compositing assertion into a release assert
        https://bugs.webkit.org/show_bug.cgi?id=194887

        Reviewed by Simon Fraser.

        * WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.cpp:
        (WebKit::PlatformCALayerRemote::recursiveBuildTransaction):
        There is absolutely no situation in which this assert should fire
        if WebKit is behaving correctly, and it will basically always result
        in a UI process crash (or at least confusion), so make it a release assert.
        This would have saved us a lot of stress in bug 194845.

2019-02-21  Don Olmstead  <don.olmstead@sony.com>

        [MSVC] Fix compilation errors with lambdas in ResourceLoadStatistics
        https://bugs.webkit.org/show_bug.cgi?id=194913

        Reviewed by Brent Fulgham.

        MSVC has problems with the scoping of `this` within a nested lambda. To work around the
        behavior the enclosing lambda's wrapping of `this` is used within the nested lambda.

        * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp:
        (WebKit::ResourceLoadStatisticsMemoryStore::processStatisticsAndDataRecords):
        * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::requestStorageAccessGranted):

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

        Fix API test crashes after r241855.

        Reviewed by Ryosuke Niwa.

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

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

        API::HTTPCookieStore should expose setCookies()
        https://bugs.webkit.org/show_bug.cgi?id=194861

        Reviewed by Brent Fulgham.

        Pass a Vector<Cookie> instead of just one cookie at a time.
        This will add the ability to set multiple cookies without an IPC roundtrip per cookie.

        * NetworkProcess/Cookies/WebCookieManager.cpp:
        (WebKit::WebCookieManager::setCookie):
        * NetworkProcess/Cookies/WebCookieManager.h:
        * NetworkProcess/Cookies/WebCookieManager.messages.in:
        * UIProcess/API/APIHTTPCookieStore.cpp:
        (API::HTTPCookieStore::setCookies):
        (API::HTTPCookieStore::setCookie): Deleted.
        * UIProcess/API/APIHTTPCookieStore.h:
        * UIProcess/API/Cocoa/WKHTTPCookieStore.mm:
        (-[WKHTTPCookieStore setCookie:completionHandler:]):
        * UIProcess/WebCookieManagerProxy.cpp:
        (WebKit::WebCookieManagerProxy::setCookies):
        (WebKit::WebCookieManagerProxy::setCookie): Deleted.
        * UIProcess/WebCookieManagerProxy.h:

2019-02-21  Antoine Quint  <graouts@apple.com>

        Move UIWebTouchEventsGestureRecognizer.activeTouchesByIdentifier to SPI
        https://bugs.webkit.org/show_bug.cgi?id=194531
        <rdar://problem/47714562>

        Reviewed by Tim Horton.

        Follow-up commit to ensure this SPI is only called on newer versions of iOS.

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

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

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

        Reviewed by Antti Koivisto.

        New test: ProcessSwap.PageOverlayLayerPersistence

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

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

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

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

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

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

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

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

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

        Unreviewed API test fix after r241855.

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

2019-02-21  Antoine Quint  <graouts@apple.com>

        Move UIWebTouchEventsGestureRecognizer.activeTouchesByIdentifier to SPI
        https://bugs.webkit.org/show_bug.cgi?id=194531
        <rdar://problem/47714562>

        Reviewed by Dean Jackson.

        * Platform/spi/ios/UIKitSPI.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView cancelPointersForGestureRecognizer:]): We update the referenced Radar since we need to keep the call
        to respondsToSelector until the SPI has shipped for OpenSource builds to work.

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

        Make programmatic frame scrolling work on iOS
        https://bugs.webkit.org/show_bug.cgi?id=194886

        Reviewed by Simon Fraser.

        * UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.mm:
        (WebKit::ScrollingTreeScrollingNodeDelegateIOS::commitStateAfterChildren):

        Don't move based on the layout scroll position. This just overrides the user scroll position.
        Remove ScrolledContentsLayer checks, we only need to deal with the ScrollContainerLayer here.

        (WebKit::ScrollingTreeScrollingNodeDelegateIOS::setScrollLayerPosition):

        Scroll the UIScrollView correctly. This is called as a result of setting the RequestedScrollPosition property.
        Remove scroll origin code, it doesn't look correct (and is untested).

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

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

        Reviewed by Geoffrey Garen.

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

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

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

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

        Unreviewed build fix after r241823.

        * UIProcess/SuspendedPageProxy.h:

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

        Unreviewed, rolling out r241838.

        Broke API tests

        Reverted changeset:

        "Resolve WebsiteDataStore/HTTPCookieStore ref cycle"
        https://bugs.webkit.org/show_bug.cgi?id=194868
        https://trac.webkit.org/changeset/241838

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

        REGRESSION: [ iOS ] Layout Test editing/input/ios/rtl-keyboard-input-on-focus.html is a Timeout
        https://bugs.webkit.org/show_bug.cgi?id=194601
        <rdar://problem/48080316>

        Reviewed by Tim Horton.

        Following r241311, if a web view becomes first responder and is then moved offscreen (or obscured, hidden, or in
        the case of WebKitTestRunner, its UIWindow loses its status as keyWindow), we end up holding on to the input
        view update deferral token indefinitely, waiting for the current focused element to be blurred or refocused.

        This also manifests other user-facing bugs, the most common of which is the keyboard occasionally remaining
        onscreen after typing a URL in the unified field in MobileSafari and hitting Return, in the case where there is
        no autofocused element on the page.

        To fix this, when becoming the first responder, additionally install a callback to detect when the page is
        finished handling the activity state change, and invalidate the input deferral token then. This retains the
        behavior where calling -becomeFirstResponder on the web view while a different view is focused will keep the
        keyboard stable, since the focused element message from the web process should be dispatched when handling the
        activity state change within the web process.

        Of course, the web process may not be responsive at all while the web view is still in the view hierarchy, in
        which case we may still end up deferring input view updates indefinitely. In this case, we maintain a separate
        watchdog timer with a short delay, after which we unconditionally invalidate the token.

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

        Move the implementation of installActivityStateChangeCompletionHandler into cross-platform code.

        * UIProcess/WebPageProxy.h:
        * UIProcess/ios/WKContentView.mm:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView cleanupInteraction]):
        (-[WKContentView _cancelPreviousResetInputViewDeferralRequest]):
        (-[WKContentView _scheduleResetInputViewDeferralAfterBecomingFirstResponder]):
        (-[WKContentView _resetInputViewDeferral]):
        (-[WKContentView becomeFirstResponderForWebView]):
        (-[WKContentView resignFirstResponderForWebView]):
        (-[WKContentView _commitPotentialTapFailed]):
        (-[WKContentView _didNotHandleTapAsClick:]):
        (-[WKContentView _didCompleteSyntheticClick]):

        Funnel all existing calls that reset _inputViewDeferralToken to nullptr, such that they go through a helper
        method instead that also cancels any scheduled requests to clear the token.

        * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm:
        (WebKit::RemoteLayerTreeDrawingArea::activityStateDidChange):

        Respond to all pending callbacks after handling the activity state change.

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

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

        Reviewed by Alex Christensen.

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

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

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

2019-02-20  Truitt Savell  <tsavell@apple.com>

        Unreviewed, rolling out r241817.

        Caused 4 API failures

        Reverted changeset:

        "[GTK] Epiphany searching for plugins even if plugins are
        disabled"
        https://bugs.webkit.org/show_bug.cgi?id=194352
        https://trac.webkit.org/changeset/241817

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

        [Xcode] Add SDKVariant.xcconfig to various Xcode projects
        https://bugs.webkit.org/show_bug.cgi?id=194869

        Rubber-stamped by Jer Noble.

        * WebKit.xcodeproj/project.pbxproj:

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

        Resolve WebsiteDataStore/HTTPCookieStore ref cycle
        https://bugs.webkit.org/show_bug.cgi?id=194868

        Reviewed by Geoffrey Garen.

        * UIProcess/API/APIHTTPCookieStore.cpp:
        (API::HTTPCookieStore::HTTPCookieStore):
        (API::HTTPCookieStore::cookies):
        (API::HTTPCookieStore::setCookie):
        (API::HTTPCookieStore::deleteCookie):
        (API::HTTPCookieStore::registerObserver):
        (API::HTTPCookieStore::unregisterObserver):
        (API::HTTPCookieStore::cookieManagerDestroyed):
        (API::HTTPCookieStore::registerForNewProcessPoolNotifications):
        (API::HTTPCookieStore::ref const):
        (API::HTTPCookieStore::deref const):
        * UIProcess/API/APIHTTPCookieStore.h:

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

        [iOS] Open sandbox for specific call.
        https://bugs.webkit.org/show_bug.cgi?id=194860
        <rdar://problem/48166729>

        Reviewed by Brent Fulgham.

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

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

        Move API::HTTPCookieStore ownership from API::WebsiteDataStore to WebKit::WebsiteDataStore
        https://bugs.webkit.org/show_bug.cgi?id=194842

        Reviewed by Geoff Garen.

        We need a way to get from WebKit::WebsiteDataStore to API::HTTPCookieStore.  It can't be done before this.
        This made an existing reference cycle easier to see, and we should fix it in a followup patch.

        * UIProcess/API/APIWebsiteDataStore.cpp:
        (API::WebsiteDataStore::httpCookieStore):
        * UIProcess/API/APIWebsiteDataStore.h:
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::cookieStore):
        * UIProcess/WebsiteData/WebsiteDataStore.h:

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

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

        Reviewed by Alex Christensen.

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

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

2019-02-20  Don Olmstead  <don.olmstead@sony.com>

        [MSVC] Fix compilation errors with lambdas in Service Workers
        https://bugs.webkit.org/show_bug.cgi?id=194841

        Reviewed by Alex Christensen.

        * WebProcess/Storage/ServiceWorkerClientFetch.cpp:
        (WebKit::ServiceWorkerClientFetch::didReceiveRedirectResponse):

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

        [GTK] Epiphany searching for plugins even if plugins are disabled
        https://bugs.webkit.org/show_bug.cgi?id=194352

        Reviewed by Michael Catanzaro.

        Check pluginsEnabled setting before trying to get plugins from UI process.

        * WebProcess/Plugins/WebPluginInfoProvider.cpp:
        (WebKit::WebPluginInfoProvider::populatePluginCache):

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

        [WPE] Send client host fd and library name as web process creation parameters
        https://bugs.webkit.org/show_bug.cgi?id=194494

        Reviewed by Žan Doberšek.

        Instead of using command line arguments. The code is simpler and we don't need wpe specific code in process
        launcher glib implementation.

        * Shared/WebProcessCreationParameters.cpp:
        (WebKit::WebProcessCreationParameters::encode const):
        (WebKit::WebProcessCreationParameters::decode):
        * Shared/WebProcessCreationParameters.h:
        * UIProcess/Launcher/glib/ProcessLauncherGLib.cpp:
        (WebKit::ProcessLauncher::launchProcess):
        * UIProcess/glib/WebProcessPoolGLib.cpp:
        (WebKit::WebProcessPool::platformInitializeWebProcess):
        * WebProcess/glib/WebProcessGLib.cpp:
        (WebKit::WebProcess::platformInitializeWebProcess):
        * WebProcess/wpe/WebProcessMainWPE.cpp:

2019-02-20  Adrian Perez de Castro  <aperez@igalia.com>

        [WPE][GTK] Enable support for CONTENT_EXTENSIONS
        https://bugs.webkit.org/show_bug.cgi?id=167941

        Reviewed by Carlos Garcia Campos.

        Adds new API to manage a collection of content extensions on disk (including compilation
        of new ones) using WebKitUserContentFilterStore; the associated WebKitUserContentFilter
        type (which represents a compiled content extension); and the functions needed to enable
        and disable them for a given WebKitUserContentManager.

        The WebKitUserContentFilterStore public API is expressed in abstract terms of "saving"
        filters into the store (which involves compiling the JSON source rule set); and "loading"
        them back as main operations. This way we do not disclose to users of the API any detail
        about compilation, nor how contents are laid out on disk, and the documentation explicitly
        tells about only using the provided functions to manipulate the on-disk contents. This
        way we allow ourselves some leeway if the implementation needs changing in the future.

        * PlatformGTK.cmake: Added WebKitUserContentFilterStore.h to the list of public API headers.
        * PlatformWPE.cmake: Ditto.
        * SourcesGTK.txt: Added WebKitUserContentFilterStore.cpp
        * SourcesWPE.txt: Ditto.
        * UIProcess/API/glib/WebKitError.cpp: Add definition of webkit_user_content_filter_error_quark().
        * UIProcess/API/glib/WebKitUserContent.cpp: Added WebKitUserContentFilter.
        (_WebKitUserContentFilter::_WebKitUserContentFilter):
        (webkit_user_content_filter_ref):
        (webkit_user_content_filter_unref):
        (webkit_user_content_filter_get_identifier):
        (webkitUserContentFilterCreate):
        (webkitUserContentFilterGetContentRuleList):
        * UIProcess/API/glib/WebKitUserContentFilterStore.cpp: Added.
        (toGError): Utility function to convert content extension error codes to GError.
        (webkit_user_content_filter_store_class_init):
        (webkit_user_content_filter_store_new):
        (webkit_user_content_filter_store_get_path):
        (webkitUserContentFilterStoreSaveBytes): Common function used as final step for all the
        functions which save (compile) JSON rule sets into the store, to avoid duplicating code.
        (webkit_user_content_filter_store_save):
        (webkit_user_content_filter_store_save_finish):
        (webkit_user_content_filter_store_save_from_file):
        (webkit_user_content_filter_store_save_from_file_finish):
        (webkit_user_content_filter_store_remove):
        (webkit_user_content_filter_store_remove_finish):
        (webkit_user_content_filter_store_load):
        (webkit_user_content_filter_store_lookup_finish):
        (webkit_user_content_filter_store_fetch_identifiers):
        (webkit_user_content_filter_store_fetch_identifiers_finish):
        * UIProcess/API/glib/WebKitUserContentManager.cpp: Added definitions for the new API
        functions to add and remove filters from an user content manager.
        (webkit_user_content_manager_add_filter):
        (webkit_user_content_manager_remove_filter):
        (webkit_user_content_manager_remove_all_filters):
        * UIProcess/API/glib/WebKitUserContentPrivate.h: Added declarations for
        webkitUserContentFilterCreate() and webkitUserContentFilterGetContentRuleList().
        * UIProcess/API/gtk/WebKitAutocleanups.h: Added autocleanups for WebKitUserContentFilter
        and WebKitUserContentFilterStore.
        * UIProcess/API/gtk/WebKitError.h: Added declarations for WEBKIT_USER_CONTENT_FILTER_ERROR
        plus the associated webkit_user_content_filter_error_quark() function and
        WebKitUserContentFilterErrror enum.
        * UIProcess/API/gtk/WebKitUserContent.h: Added declarations for WebKitUserContentFilter
        and its associated functions.
        * UIProcess/API/gtk/WebKitUserContentFilterStore.h: Added.
        * UIProcess/API/gtk/WebKitUserContentManager.h: Added declarations for the functions to
        add and remove filters from the user content manager.
        * UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt: Added new API functions and types to
        be included in the documentation.
        * UIProcess/API/gtk/webkit2.h: Added inclusion of WebKitUserContentFilterStore.h
        * UIProcess/API/wpe/WebKitError.h: Same as for the GTK port header.
        * UIProcess/API/wpe/WebKitUserContent.h: Same as for the GTK port header.
        * UIProcess/API/wpe/WebKitUserContentFilterStore.h: Added.
        * UIProcess/API/wpe/WebKitUserContentManager.h: Same as for the GTK port header.
        * UIProcess/API/wpe/docs/wpe-0.1-sections.txt: Added new API functions and types to be
        included in the documentation.
        * UIProcess/API/wpe/webkit.h: Added inclusion of WebKitUserContentFilterStore.h

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

        Pass rootContentsLayer to Mac remote layer tree
        https://bugs.webkit.org/show_bug.cgi?id=194828

        Reviewed by Simon Fraser.

        Make this code path work again.

        * Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp:
        (ArgumentCoder<ScrollingStateFrameScrollingNode>::encode):
        (ArgumentCoder<ScrollingStateFrameScrollingNode>::decode):
        * UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.cpp:
        (WebKit::RemoteScrollingCoordinatorProxy::connectStateNodeLayers):

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

        Reduce use of LegacySync IPC messages
        https://bugs.webkit.org/show_bug.cgi?id=194783

        Reviewed by Geoffrey Garen.

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::handleSynchronousMessage):
        * UIProcess/WebProcessPool.h:
        * UIProcess/WebProcessPool.messages.in:
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::getPlugins):
        (WebKit::WebProcessProxy::shouldTerminate):
        * UIProcess/WebProcessProxy.h:
        * UIProcess/WebProcessProxy.messages.in:
        * WebProcess/Plugins/PluginProcessConnection.cpp:
        (WebKit::PluginProcessConnection::setException):
        * WebProcess/Plugins/PluginProcessConnection.h:
        * WebProcess/Plugins/PluginProcessConnection.messages.in:
        * WebProcess/Plugins/PluginProxy.cpp:
        (WebKit::PluginProxy::didCreatePlugin):
        (WebKit::PluginProxy::didFailToCreatePlugin):
        (WebKit::PluginProxy::proxiesForURL):
        (WebKit::PluginProxy::cookiesForURL):
        (WebKit::PluginProxy::getAuthenticationInfo):
        (WebKit::PluginProxy::getPluginElementNPObject):
        (WebKit::PluginProxy::evaluate):
        (WebKit::PluginProxy::createPluginContainer):
        * WebProcess/Plugins/PluginProxy.h:
        * WebProcess/Plugins/PluginProxy.messages.in:

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

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

        Reviewed by Geoffrey Garen.

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

2019-02-19  Antoine Quint  <graouts@apple.com>

        [iOS] "touch-action: none" should not prevent text selection or tapping on a link
        https://bugs.webkit.org/show_bug.cgi?id=194812
        <rdar://problem/47901131>

        Reviewed by Dean Jackson.

        We shouldn't prevent all gestures to be disabled when "touch-action: none" is set and instead follow the same code path we would use should
        "pan-x", "pan-y" or "pinch-zoom" be used.

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

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

        Revert functional part of r241451
        https://bugs.webkit.org/show_bug.cgi?id=194510

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didFinishDocumentLoadForFrame):
        It caused crashes and assertions on Linux and Cocoa without safe browsing, which
        means it's fundamentally flawed in some way.  The testing piping was fine.

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

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

        Reviewed by Geoffrey Garen.

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

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

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

2019-02-16  Darin Adler  <darin@apple.com>

        Continue reducing use of String::format, now focusing on hex: "%p", "%x", etc.
        https://bugs.webkit.org/show_bug.cgi?id=194752

        Reviewed by Daniel Bates.

        * Platform/IPC/win/ConnectionWin.cpp:
        (IPC::Connection::createServerAndClientIdentifiers): Use makeString instead of
        String::format.
        * Shared/win/WebEventFactory.cpp:
        (WebKit::keyIdentifierFromEvent): Ditto.

        * UIProcess/API/APINavigation.cpp:
        (API::Navigation::loggingString const): Use hex instead of String::format.
        * UIProcess/SuspendedPageProxy.cpp:
        (WebKit::SuspendedPageProxy::loggingString const): Ditto.

        * UIProcess/WebBackForwardList.cpp:
        (WebKit::WebBackForwardList::loggingString): Added a "0x".

        * UIProcess/gtk/InputMethodFilter.cpp:
        (WebKit::InputMethodFilter::logHandleKeyboardEventForTesting): Use makeString and hex
        instead of String::format and "%x".
        (WebKit::InputMethodFilter::logHandleKeyboardEventWithCompositionResultsForTesting):
        Ditto.

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

        [iOS] Support pasting item-provider-backed data on the pasteboard as attachment elements
        https://bugs.webkit.org/show_bug.cgi?id=194670
        <rdar://problem/39066529>

        Reviewed by Tim Horton.

        Remove all IPC plumbing for getTypesByFidelityForItemAtIndex, now that the types in fidelity order have been
        rolled into PasteboardItemInfo.

        Additionally, remove support for subresource URL replacement. This feature was originally added with the
        intention that private clients (i.e. Mail) would intercept pasted or dropped images and replace their URLs.
        However, since <rdar://problem/43216836>, our strategy for this scenario has changed, such that WebKit now
        handles the drop/paste, and later delivers the image data to the client via NSFileWrappers in the UI process.
        At this time, there are no adopters of this SPI, and no adopters of the V2 injected bundle editing client. As
        such, we can simply revert all of this to its state prior to the introduction of the replacement URL SPI, with
        the exception to changes in WKBundlePageEditorClient.h, wherein there is a nonzero (but likely tiny) chance of
        completely breaking binary compatability with any third parties on macOS which may have tried to adopt
        subresource URL replacement.

        * UIProcess/Cocoa/WebPasteboardProxyCocoa.mm:
        (WebKit::WebPasteboardProxy::getPasteboardTypesByFidelityForItemAtIndex): Deleted.
        * UIProcess/WebPasteboardProxy.h:
        * UIProcess/WebPasteboardProxy.messages.in:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView canPerformActionForWebView:withSender:]):

        Return YES for -paste: in the case where:
        1. The pasteboard contains items that are explicitly marked as attachments.
        2. The selection is richly contenteditable.
        3. Attachment elements are enabled.

        Among other things, this allows the callout bar on iOS to show the "Paste" action.

        * WebProcess/InjectedBundle/API/APIInjectedBundleEditorClient.h:
        (API::InjectedBundle::EditorClient::performTwoStepDrop):
        (API::InjectedBundle::EditorClient::replacementURLForResource): Deleted.
        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInEditingDelegate.h:
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:
        (-[WKWebProcessPlugInBrowserContextController _setEditingDelegate:]):
        * WebProcess/InjectedBundle/InjectedBundlePageEditorClient.cpp:
        (WebKit::InjectedBundlePageEditorClient::replacementURLForResource): Deleted.
        * WebProcess/InjectedBundle/InjectedBundlePageEditorClient.h:
        * WebProcess/WebCoreSupport/WebEditorClient.cpp:
        (WebKit::WebEditorClient::replacementURLForResource): Deleted.
        * WebProcess/WebCoreSupport/WebEditorClient.h:
        * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
        (WebKit::WebPlatformStrategies::getTypesByFidelityForItemAtIndex): Deleted.
        * WebProcess/WebCoreSupport/WebPlatformStrategies.h:

2019-02-18  Jeremy Jones  <jeremyj@apple.com>

        exitFullscreen should not instantiate a new model/interface mapping.
        https://bugs.webkit.org/show_bug.cgi?id=191988
        rdar://problem/42327939

        Reviewed by Jer Noble.

        This change is a speculative fix for a crash that cannot be reproduced.

        Somehow, exitFullscreen is being requested after didCleanupFullscreen has completed.
        This change should allow us to prevent the crash in release, and assert in debug.

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

2019-02-18  John Wilander  <wilander@apple.com>

        Check the existence of the frame in Document::hasFrameSpecificStorageAccess() and Document::setHasFrameSpecificStorageAccess()
        https://bugs.webkit.org/show_bug.cgi?id=194777
        <rdar://problem/47731945>

        Reviewed by Geoffrey Garen and Chris Dumez.

        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::logUserInteraction):
           Now returns early if the incoming session ID is invalid.
           Added an ASSERT to help us find other call sites passing invalid session IDs.

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

        It should be possible to get the mouse event modifiers for a page overlay client.
        https://bugs.webkit.org/show_bug.cgi?id=189621
        <rdar://problem/44437279>

        Reviewed by Daniel Bates.

        When access to the WindowServer is blocked, [NSEvent modifierFlags] always returns 0.
        This can be fixed by swizzling the class method, and getting the cached modifiers from
        PlatformKeyboardEvent.
 
        * WebProcess/cocoa/WebProcessCocoa.mm:
        (WebKit::currentModifierFlags):
        (WebKit::WebProcess::platformInitializeProcess):

2019-02-18  Claudio Saavedra  <csaavedra@igalia.com>

        WebPageProxy::didFinishDocumentLoadForFrame() crashing in WPE and GTK+ ports
        https://bugs.webkit.org/show_bug.cgi?id=194774

        Reviewed by Alex Christensen.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didFinishDocumentLoadForFrame):
        Null check navigation before using it.
        This is a regression from r241451.

2019-02-18  Daniel Bates  <dabates@apple.com>

        [iOS] Keyups for non-modifier keys identified as "Dead" when not focused in a content-editable element
        https://bugs.webkit.org/show_bug.cgi?id=192824
        <rdar://problem/47100332>

        Reviewed by Wenson Hsieh.

        Use the same code path for key events to editable elements and non-editable elements.

        Currently we have different code paths for hardware key events depending on whether the active element
        is editable or non-editable. Historically to support dispatching DOM keyboard events for hardware key
        presses this differentiation was a necessary workaround for UIKit's event processing precedence of
        interpreting key events for system text editing commands and app commands before dispatching unhandled
        key events to WebKit. This workaround intercepted raw key UIEvents and manually reconstructed a
        WebEvent from it. However there is not enough information in an UIEvent to reconstruct a WebEvent that
        is identical to the WebEvent that UIKit would have dispatched. In particular, keyup UIEvents always have
        empty modified and unmodified input strings. The UIKit keyboard machinery maintains additional state
        that is necessary to manufacture the correct WebEvent corresponding to a UIEvent.

        As a side benefit of this change, with the exception of modifier flag changes, both hardware and software
        key events use the same code path.

        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView shouldShowAutomaticKeyboardUI]): Extracted code from _requiresKeyboardWhenFirstResponder
        (-[WKContentView _disableAutomaticKeyboardUI]): Implement UIKit SPI to prevent showing the keyboard UI
        when there is no focused element now that we are no longer intercepting key UIEvents. Formerly the
        keyboard UI was disabled as a side effect of not becoming first responder when there was no focused
        element (by returning NO in -_requiresKeyboardWhenFirstResponder).
        (-[WKContentView _requiresKeyboardWhenFirstResponder]): Always return YES when building with USE(UIKIT_KEYBOARD_ADDITIONS)
        so that we always accept key events. Instead of selectively replying to create a keyboard as a means of
        hiding the automatic keyboard UI we now implement _disableAutomaticKeyboardUI to selectively hide the
        automatic keyboard UI.
        (-[WKContentView applyAutocorrection:toString:withCompletionHandler:]): If we are not in an editable
        element then we cannot perform the replacement. This logic was necessary now that we always require a
        keyboard.
        (-[WKContentView requestAutocorrectionContextWithCompletionHandler:]): If we are not in an editable
        element then return an autocorrection object that indicates that we could not compute this data. This
        logic was necessary now that we always require a keyboard.
        (-[WKContentView textInputTraits]): Do not update traits when the keyboard is going to be dismissed
        now that we require a keyboard when first responder even if the focused element is non-editable.
        (-[WKContentView _didHandleKeyEvent:eventWasHandled:]): Skip logic for re-sending UIEvents to UIKit
        as UIKit now processes the event first. This logic was necessary in order to finally allow UIKit
        its chance to interpret the UIEvent, we intercepted, for app key commands.
        (-[WKContentView _elementDidBlur]): Call [self _endEditing] so that we dismiss any open form controls
        (e.g. a <select> popover menu). Currently this happens either by -_requiresKeyboardWhenFirstResponder
        responding NO when switching to another field or pressing Tab or Shift + Tab key command, which we will
        no longer use when building with USE(UIKIT_KEYBOARD_ADDITIONS) once I land <https://bugs.webkit.org/show_bug.cgi?id=193048>.
        * UIProcess/ios/forms/WKFormSelectPopover.mm:
        (-[WKSelectPopover initWithView:hasGroups:]): Do not assign ourself as the keyboard delegate. Otherwise,
        type ahead and tab cycling will not work. Currently type ahead and tab cycling work by using the non-
        editable code path via -_handleKeyUIEvent. Now that we no longer differentiate between key events for
        editable and non-editable elements we need to ensure that the WKContentView is the keyboard delegate
        when the popover is presented.

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

        Tell Networking Process to not optimize load
        https://bugs.webkit.org/show_bug.cgi?id=194753
        <rdar://problem/48143603>

        Reviewed by Brent Fulgham.

        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (WebKit::NetworkSessionCocoa::NetworkSessionCocoa):

2019-02-18  Dean Jackson  <dino@apple.com>

        iOS Safari will not load USDZ in QLPreview when opening as BLOB
        https://bugs.webkit.org/show_bug.cgi?id=194766
        <rdar://problem/42769186>

        Reviewed by Wenson Hsieh.

        A download from a Blob URL can happen effectively instantly, which means
        that the loadHandler on the registerItemForTypeIdentifier method might not have
        been called yet, and we haven't been told what the completionHandler is.
        In this case, keep a record of the URL we finished with, and call the completionHandler
        right away.

        * UIProcess/Cocoa/SystemPreviewControllerCocoa.mm: Add a new private member variable: _downloadedURL.
        (-[_WKPreviewControllerDataSource previewController:previewItemAtIndex:]): Call the completionHandler
        right away if we've finished.
        (-[_WKPreviewControllerDataSource finish:]): Remember that we've finished by recording the URL.

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

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

        Reviewed by Geoffrey Garen.

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

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

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

        Reviewed by Chris Dumez.

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

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

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

        [GTK] Crash while filling selection data during drag and drop
        https://bugs.webkit.org/show_bug.cgi?id=194698

        Reviewed by Michael Catanzaro.

        I can't reproduce this, but it seems that m_draggingSelectionData is nullptr in fillDragData(). That can happen
        when startDrag cancels a previous DND operation, because the new m_draggingSelectionData is set before the
        current DND operation is cancelled, which sets it to nullptr.

        * UIProcess/gtk/DragAndDropHandler.cpp:
        (WebKit::DragAndDropHandler::startDrag): Finish the previous operation before setting m_draggingSelectionData.

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

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

        Reviewed by Jiewen Tan.

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

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

2019-02-17  David Kilzer  <ddkilzer@apple.com>

        Unreviewed, rolling out r241620.

        "Causes use-after-free crashes running layout tests with ASan and GuardMalloc."
        (Requested by ddkilzer on #webkit.)

        Reverted changeset:

        "[WTF] Add environment variable helpers"
        https://bugs.webkit.org/show_bug.cgi?id=192405
        https://trac.webkit.org/changeset/241620

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

        NetworkDataTask should check its client before calling shouldCaptureExtraNetworkLoadMetrics
        https://bugs.webkit.org/show_bug.cgi?id=194732

        Reviewed by Geoffrey Garen.

        NetworkDataTask may be kept alive if refing it after its NetworkLoad is gone.
        This might happen for instance in DownloadManager or when checking for TLS certificates.
        In that case, if the NetworkLoad gets destroyed, it clears the client of the NetworkDataTask.
        To ensure that NetworkDataTask does not try to use its client, add a null check.

        * NetworkProcess/NetworkDataTask.cpp:
        (WebKit::NetworkDataTask::shouldCaptureExtraNetworkLoadMetrics const):

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

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

        Reviewed by Geoffrey Garen.

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

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

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

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

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

        Reviewed by Geoffrey Garen.

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

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

        [iOS] Stop setting a background color on the PDF host view
        https://bugs.webkit.org/show_bug.cgi?id=194722
        <rdar://48124152>

        Reviewed by Wenson Hsieh.

        PDFKit already sets a background color on this view, so there’s no need (and some harm) in
        us doing it too.

        * UIProcess/ios/WKPDFView.mm:
        (-[WKPDFView web_setContentProviderData:suggestedFilename:]):

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

        Update IPC code generator unit test expectations after r241611
        https://bugs.webkit.org/show_bug.cgi?id=194678

        * Scripts/webkit/LegacyMessages-expected.h:
        * Scripts/webkit/Messages-expected.h:
        * Scripts/webkit/MessagesSuperclass-expected.h:

2019-02-15  Ross Kirsling  <ross.kirsling@sony.com>

        [WTF] Add environment variable helpers
        https://bugs.webkit.org/show_bug.cgi?id=192405

        Reviewed by Michael Catanzaro.

        * NetworkProcess/EntryPoint/unix/NetworkProcessMain.cpp:
        (main):
        * Platform/unix/LoggingUnix.cpp:
        (WebKit::logLevelString):
        * Platform/win/LoggingWin.cpp:
        (WebKit::logLevelString):
        * PluginProcess/mac/PluginProcessMac.mm:
        (WebKit::shouldCallRealDebugger):
        * Shared/Plugins/unix/PluginSearchPath.cpp:
        (WebKit::pluginsDirectories):
        * Shared/glib/ProcessExecutablePathGLib.cpp:
        (WebKit::findWebKitProcess):
        * UIProcess/API/glib/WebKitSettings.cpp:
        (webKitSettingsConstructed):
        (webKitSettingsSetProperty):
        * UIProcess/API/glib/WebKitWebContext.cpp:
        (injectedBundleDirectory):
        (webkitWebContextConstructed):
        * UIProcess/API/gtk/WebKitWebViewGtk.cpp:
        (webkitWebViewMaximizeWindow):
        (webkitWebViewRestoreWindow):
        * UIProcess/API/wpe/WPEView.cpp:
        (WKWPE::m_backend):
        * UIProcess/AuxiliaryProcessProxy.cpp:
        (WebKit::AuxiliaryProcessProxy::getLaunchOptions):
        * UIProcess/Launcher/glib/BubblewrapLauncher.cpp:
        (WebKit::XDGDBusProxyLauncher::launch):
        (WebKit::bindDBusSession):
        (WebKit::bindX11):
        (WebKit::bindWayland):
        (WebKit::bindPulse):
        (WebKit::bindPathVar):
        (WebKit::bindGStreamerData):
        (WebKit::bubblewrapSpawn):
        * UIProcess/Launcher/glib/ProcessLauncherGLib.cpp:
        (WebKit::ProcessLauncher::launchProcess):
        * UIProcess/Launcher/mac/ProcessLauncherMac.mm:
        (WebKit::systemDirectoryPath):
        (WebKit::ProcessLauncher::launchProcess):
        * UIProcess/glib/WebProcessPoolGLib.cpp:
        (WebKit::memoryPressureMonitorDisabled):
        (WebKit::WebProcessPool::platformInitialize):
        (WebKit::WebProcessPool::platformInitializeWebProcess):
        * UIProcess/gtk/HardwareAccelerationManager.cpp:
        (WebKit::HardwareAccelerationManager::HardwareAccelerationManager):
        * WebProcess/EntryPoint/unix/WebProcessMain.cpp:
        (main):
        * WebProcess/gtk/WebProcessMainGtk.cpp:
        * WebProcess/wpe/WebProcessMainWPE.cpp:
        Utilize WTF::Environment where possible.

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

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

        Rubber-stamped by Brady Eidson.

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

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

        [iOS] WKWebView callout bar is missing Change Writing Direction item
        https://bugs.webkit.org/show_bug.cgi?id=190015
        <rdar://problem/44810366>

        Reviewed by Tim Horton.

        Support -makeTextWritingDirectionLeftToRight: and -makeTextWritingDirectionRightToLeft: in WKWebView on iOS.
        To match behavior in native UITextViews on iOS, we implement these methods by changing the *base* writing
        direction, rather than the text writing direction (this is in contrast to macOS, which has different
        NSResponder methods for changing the base writing direction as opposed to the text writing direction).

        Additionally fixes the implementation of -makeTextWritingDirectionNatural:, which currently attempts to change
        the text writing direction instead of the base writing direction.

        * Platform/spi/ios/UIKitSPI.h:

        Add a forward declaration for keyboards SPI to determine whether the user has an active RTL keyboard.

        * Shared/EditorState.cpp:
        (WebKit::EditorState::PostLayoutData::encode const):
        (WebKit::EditorState::PostLayoutData::decode):
        (WebKit::operator<<):
        * Shared/EditorState.h:

        Plumb the base writing direction to the UI process through EditorState.

        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView makeTextWritingDirectionNaturalForWebView:]):
        (-[WKContentView makeTextWritingDirectionLeftToRightForWebView:]):
        (-[WKContentView makeTextWritingDirectionRightToLeftForWebView:]):

        Implement the new SPI (see above for more details).

        (-[WKContentView canPerformActionForWebView:withSender:]):

        Implement -canPerformAction: for LTR and RTL actions. To match existing UIWebView behavior, we only enable
        these actions if either the base writing direction is RTL, or the user has an active RTL keyboard. This means,
        for instance, that in the case where a user with only an English keyboard is editing LTR content, we would never
        show an option to convert to RTL.

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::editorState const):

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

        Make WebPaymentCoordinatorProxy more robust and modern
        https://bugs.webkit.org/show_bug.cgi?id=194678

        Reviewed by Andy Estes.

        Use WeakPtr instead of storing raw pointers in lambdas or the global activePaymentCoordinatorProxy to avoid UAF problems.
        Call CompletionHandlers in all code paths to avoid hangs.
        Use Delayed instead of LegacySync for synchronous messaging to progress towards removing LegacySync messages.

        * Scripts/webkit/messages.py:
        * UIProcess/ApplePay/WebPaymentCoordinatorProxy.cpp:
        (WebKit::activePaymentCoordinatorProxy):
        (WebKit::WebPaymentCoordinatorProxy::~WebPaymentCoordinatorProxy):
        (WebKit::WebPaymentCoordinatorProxy::availablePaymentNetworks):
        (WebKit::WebPaymentCoordinatorProxy::canMakePayments):
        (WebKit::WebPaymentCoordinatorProxy::showPaymentUI):
        (WebKit::WebPaymentCoordinatorProxy::didReachFinalState):
        * UIProcess/ApplePay/WebPaymentCoordinatorProxy.h:
        * UIProcess/ApplePay/WebPaymentCoordinatorProxy.messages.in:
        * UIProcess/ApplePay/ios/WebPaymentCoordinatorProxyIOS.mm:
        (WebKit::WebPaymentCoordinatorProxy::platformShowPaymentUI):
        * UIProcess/ApplePay/mac/WebPaymentCoordinatorProxyMac.mm:
        (WebKit::WebPaymentCoordinatorProxy::platformShowPaymentUI):

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

        Make ServiceWorkerClientFetch closer to WebResourceLoader
        https://bugs.webkit.org/show_bug.cgi?id=194651

        Unreviewed, build fix for WPE.

        * WebProcess/Storage/WebServiceWorkerFetchTaskClient.h:

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

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

        Reviewed by Brady Eidson.

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

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

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

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

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

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

        Update IPC code generator unit test expectations after r241595
        https://bugs.webkit.org/show_bug.cgi?id=194679

        * Scripts/webkit/LegacyMessageReceiver-expected.cpp:
        (WebKit::WebPage::didReceiveSyncWebPageMessage):
        * Scripts/webkit/MessageReceiver-expected.cpp:
        (WebKit::WebPage::didReceiveSyncMessage):

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

        Make ServiceWorkerClientFetch closer to WebResourceLoader
        https://bugs.webkit.org/show_bug.cgi?id=194651

        Reviewed by Alex Christensen.

        The goal of this refactoring is to, at some point use the regular network process load path for service worker loads.
        This should simplify things and allow less IPC exchanges, for instance in the case of fetch not handled by service worker.

        Introduce two IPC messages for supporting redirect responses and allow the didReceiveResponse/continueDidReceiveResponse
        handshake for navigation loads.

        This makes ServiceWorker having to buffer load information for this particular case.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::didReceiveFetchRedirectResponse):
        (WebKit::NetworkProcess::didReceiveFetchResponse):
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:
        * NetworkProcess/ServiceWorker/WebSWServerConnection.cpp:
        (WebKit::WebSWServerConnection::continueDidReceiveFetchResponse):
        (WebKit::WebSWServerConnection::didReceiveFetchRedirectResponse):
        (WebKit::WebSWServerConnection::didReceiveFetchResponse):
        * NetworkProcess/ServiceWorker/WebSWServerConnection.h:
        * NetworkProcess/ServiceWorker/WebSWServerConnection.messages.in:
        * WebProcess/Storage/ServiceWorkerClientFetch.cpp:
        (WebKit::ServiceWorkerClientFetch::start):
        (WebKit::ServiceWorkerClientFetch::didReceiveRedirectResponse):
        (WebKit::ServiceWorkerClientFetch::didReceiveResponse):
        (WebKit::ServiceWorkerClientFetch::didReceiveData):
        (WebKit::ServiceWorkerClientFetch::didFinish):
        (WebKit::ServiceWorkerClientFetch::didFail):
        (WebKit::ServiceWorkerClientFetch::didNotHandle):
        (WebKit::ServiceWorkerClientFetch::cancel):
        * WebProcess/Storage/ServiceWorkerClientFetch.h:
        * WebProcess/Storage/ServiceWorkerClientFetch.messages.in:
        * WebProcess/Storage/WebSWClientConnection.cpp:
        (WebKit::WebSWClientConnection::startFetch):
        (WebKit::WebSWClientConnection::cancelFetch):
        (WebKit::WebSWClientConnection::continueDidReceiveFetchResponse):
        * WebProcess/Storage/WebSWClientConnection.h:
        * WebProcess/Storage/WebSWContextManagerConnection.cpp:
        (WebKit::WebSWContextManagerConnection::continueDidReceiveFetchResponse):
        (WebKit::WebSWContextManagerConnection::startFetch):
        * WebProcess/Storage/WebSWContextManagerConnection.h:
        * WebProcess/Storage/WebSWContextManagerConnection.messages.in:
        * WebProcess/Storage/WebServiceWorkerFetchTaskClient.cpp:
        (WebKit::WebServiceWorkerFetchTaskClient::WebServiceWorkerFetchTaskClient):
        (WebKit::WebServiceWorkerFetchTaskClient::didReceiveRedirection):
        (WebKit::WebServiceWorkerFetchTaskClient::didReceiveResponse):
        (WebKit::WebServiceWorkerFetchTaskClient::didReceiveData):
        (WebKit::WebServiceWorkerFetchTaskClient::didReceiveFormDataAndFinish):
        (WebKit::WebServiceWorkerFetchTaskClient::didFail):
        (WebKit::WebServiceWorkerFetchTaskClient::didFinish):
        (WebKit::WebServiceWorkerFetchTaskClient::continueDidReceiveResponse):
        * WebProcess/Storage/WebServiceWorkerFetchTaskClient.h:

2019-02-15  Brian Burg  <bburg@apple.com>

        [Mac] WebInspectorUI.framework does not need to be soft-linked anymore
        https://bugs.webkit.org/show_bug.cgi?id=194411
        <rdar://problem/47787614>

        Reviewed by Joseph Pecoraro.

        * Configurations/WebKit.xcconfig:
        Conditionalize weak linking to WebInspectorUI.framework for Mac only.

        * UIProcess/mac/WebInspectorProxyMac.mm:
        (WebKit::WebInspectorProxy::inspectorPageURL):
        (WebKit::WebInspectorProxy::inspectorTestPageURL):
        (WebKit::WebInspectorProxy::inspectorBaseURL):
        * WebProcess/WebPage/mac/WebInspectorUIMac.mm:
        (WebKit::webInspectorUILocalizedStringsURL):
        Rewrite uses of the bundle to exit early if bundle couldn't be loaded.

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

        IPC code should support messages with both Delayed and WantsConnection attributes
        https://bugs.webkit.org/show_bug.cgi?id=194679

        Reviewed by Geoffrey Garen.

        * Platform/IPC/HandleMessage.h:
        (IPC::callMemberFunctionImpl):
        (IPC::callMemberFunction):
        (IPC::handleMessageDelayedWantsConnection):
        * Scripts/webkit/messages.py:
        * UIProcess/WebStorage/StorageManager.cpp:
        (WebKit::StorageManager::getValues):
        * UIProcess/WebStorage/StorageManager.h:
        * UIProcess/WebStorage/StorageManager.messages.in:

2019-02-15  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r241559 and r241566.
        https://bugs.webkit.org/show_bug.cgi?id=194710

        Causes layout test crashes under GuardMalloc (Requested by
        ryanhaddad on #webkit).

        Reverted changesets:

        "[WTF] Add environment variable helpers"
        https://bugs.webkit.org/show_bug.cgi?id=192405
        https://trac.webkit.org/changeset/241559

        "Unreviewed build fix for WinCairo Debug after r241559."
        https://trac.webkit.org/changeset/241566

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

        [WPE][GTK] Defer sandboxing APIs to 2.26
        https://bugs.webkit.org/show_bug.cgi?id=194274

        Reviewed by Carlos Garcia Campos.

        The web process sandbox has not been widely-tested yet, so we should defer the new APIs to
        2.26.

        * UIProcess/API/glib/WebKitWebContext.cpp:

2019-02-10  Darin Adler  <darin@apple.com>

        Replace more uses of String::format with StringConcatenate (mostly non-Apple platform-specific cases)
        https://bugs.webkit.org/show_bug.cgi?id=194487

        Reviewed by Daniel Bates.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::switchToNewTestingSession): Use makeString instead of String::format.
        * NetworkProcess/soup/NetworkProcessSoup.cpp:
        (WebKit::buildAcceptLanguages): Ditto.
        * UIProcess/API/glib/IconDatabase.cpp:
        (WebKit::IconDatabase::performURLImport): Ditto.
        * UIProcess/gtk/InputMethodFilter.cpp:
        (WebKit::InputMethodFilter::logConfirmCompositionForTesting): Ditto.
        (WebKit::InputMethodFilter::logSetPreeditForTesting): Ditto.

2019-02-15  Truitt Savell  <tsavell@apple.com>

        Unreviewed, rolling out r241564.

        Caused 50+ Timeouts on Mac WK2, mostly in the http/ directory

        Reverted changeset:

        "[Mac] WebInspectorUI.framework does not need to be soft-
        linked anymore"
        https://bugs.webkit.org/show_bug.cgi?id=194411
        https://trac.webkit.org/changeset/241564

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

        Unreviewed. Fix GTK+ build after r241556

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

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

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

        REGRESSION (r240446): Storage Access API does not handle domains consistently
        https://bugs.webkit.org/show_bug.cgi?id=194664

        Reviewed by Alex Christensen.
        
        During my refactoring of the ResourceLoadStatistics code, I introduced two bugs:
        (1) I neglected to be consistent in my use of 'primaryDomain', causing some Storage
        Access API code paths to store approves under one domain (e.g., 'www.example.com'),
        while checking status under the eTLD+1 (e.g., 'example.com'). The exact string matching
        requirement caused these to get missed.

        (2) I used a move operator before a final set of copies of domain names, leading to
        some empty strings being passed to Storage Access API calls.

        Both issues are corrected in this patch.

        * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::setPrevalentResourceForDebugMode): Always make the
        domain comply with our 'primaryDomain' logic.
        (WebKit::WebResourceLoadStatisticsStore::hasStorageAccess): Ditto.
        (WebKit::WebResourceLoadStatisticsStore::requestStorageAccessGranted): Ditto.
        (WebKit::WebResourceLoadStatisticsStore::logFrameNavigation): Ditto.
        (WebKit::WebResourceLoadStatisticsStore::logWebSocketLoading): Ditto.
        (WebKit::WebResourceLoadStatisticsStore::logSubresourceLoading): Ditto.
        (WebKit::WebResourceLoadStatisticsStore::logSubresourceRedirect): Ditto.
        (WebKit::WebResourceLoadStatisticsStore::logUserInteraction): Ditto.
        (WebKit::WebResourceLoadStatisticsStore::clearUserInteraction): Ditto.
        (WebKit::WebResourceLoadStatisticsStore::hasHadUserInteraction): Ditto.
        (WebKit::WebResourceLoadStatisticsStore::setLastSeen): Ditto.
        (WebKit::WebResourceLoadStatisticsStore::setPrevalentResource): Ditto.
        (WebKit::WebResourceLoadStatisticsStore::setVeryPrevalentResource): Ditto.
        (WebKit::WebResourceLoadStatisticsStore::isPrevalentResource): Ditto.
        (WebKit::WebResourceLoadStatisticsStore::isVeryPrevalentResource): Ditto.
        (WebKit::WebResourceLoadStatisticsStore::isRegisteredAsSubresourceUnder): 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.
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::hasStorageAccess): Always make the
        domain comply with our 'primaryDomain' logic.
        (WebKit::WebsiteDataStore::requestStorageAccess): Ditto. Also make copy of domain
        names before moving them to the completion handler.
        (WebKit::WebsiteDataStore::grantStorageAccess): Ditto.
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::hasStorageAccess):  Always make the domain comply with our
        'primaryDomain' logic.
        (WebKit::WebPage::requestStorageAccess): Ditto.

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

        Fix the build.

        * UIProcess/ios/WKDrawingView.mm:
        (-[WKDrawingView renderedDrawing]):

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

        ASSERTION FAILED: m_caches.isEmpty() || !m_pendingInitializationCallbacks.isEmpty() in WebKit::CacheStorage::Caches::clearMemoryRepresentation()
        https://bugs.webkit.org/show_bug.cgi?id=188393
        <rdar://problem/43025665>

        Reviewed by Alex Christensen.

        In case Caches::dispose is called, clearMemoryRepresentation might be called if there is no active cache.
        We also ensure to not clear the memory representation if there is any remaining removed cache.
        Update the clearMemoryRepresentation assertion to take that into account.

        In case a Caches is cleared twice, the clearMemoryRepresentation assertion will assert while it should not.
        In that case m_storage is null the second time. Update the assertion accordingly.

        * NetworkProcess/cache/CacheStorageEngineCaches.cpp:
        (WebKit::CacheStorage::Caches::hasActiveCache const):
        (WebKit::CacheStorage::Caches::dispose):
        (WebKit::CacheStorage::Caches::clearMemoryRepresentation):
        * NetworkProcess/cache/CacheStorageEngineCaches.h:

2019-02-14  Brian Burg  <bburg@apple.com>

        [Mac] WebInspectorUI.framework does not need to be soft-linked anymore
        https://bugs.webkit.org/show_bug.cgi?id=194411
        <rdar://problem/47787614>

        Reviewed by Joseph Pecoraro.

        * Configurations/WebKit.xcconfig:
        Conditionalize weak linking to WebInspectorUI.framework for Mac only.

        * UIProcess/mac/WebInspectorProxyMac.mm:
        (WebKit::WebInspectorProxy::inspectorPageURL):
        (WebKit::WebInspectorProxy::inspectorTestPageURL):
        (WebKit::WebInspectorProxy::inspectorBaseURL):
        * WebProcess/WebPage/mac/WebInspectorUIMac.mm:
        (WebKit::webInspectorUILocalizedStringsURL):
        Rewrite uses of the bundle to exit early if bundle couldn't be loaded.

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

        [GTK] WebKitGTK+ -> WebKitGTK
        https://bugs.webkit.org/show_bug.cgi?id=194658

        Reviewed by Alex Christensen.

        This renames WebKitGTK+ to WebKitGTK in a few user-visible places: the API documentation,
        the pkg-config, and an error message.

        In a couple places where it's exposed in WPE documentation, WPE is now mentioned, or the
        reference to "WebKitGTK+" is changed to just "WebKit."

        * UIProcess/API/glib/WebKitSettings.cpp:
        (webkit_settings_class_init):
        * UIProcess/API/glib/WebKitWebView.cpp:
        * UIProcess/API/gtk/docs/webkit2gtk-docs.sgml:
        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMPrivateGtk.h:
        * gtk/webkit2gtk-web-extension.pc.in:
        * gtk/webkit2gtk.pc.in:

2019-02-14  Ross Kirsling  <ross.kirsling@sony.com>

        [WTF] Add environment variable helpers
        https://bugs.webkit.org/show_bug.cgi?id=192405

        Reviewed by Michael Catanzaro.

        * NetworkProcess/EntryPoint/unix/NetworkProcessMain.cpp:
        (main):
        * Platform/unix/EnvironmentUtilities.cpp:
        (WebKit::EnvironmentUtilities::stripValuesEndingWithString):
        * Platform/unix/LoggingUnix.cpp:
        (WebKit::logLevelString):
        * Platform/win/LoggingWin.cpp:
        (WebKit::logLevelString):
        * PluginProcess/mac/PluginProcessMac.mm:
        (WebKit::shouldCallRealDebugger):
        * Shared/Plugins/unix/PluginSearchPath.cpp:
        (WebKit::pluginsDirectories):
        * Shared/glib/ProcessExecutablePathGLib.cpp:
        (WebKit::findWebKitProcess):
        * UIProcess/API/glib/WebKitSettings.cpp:
        (webKitSettingsConstructed):
        (webKitSettingsSetProperty):
        * UIProcess/API/glib/WebKitWebContext.cpp:
        (injectedBundleDirectory):
        (webkitWebContextConstructed):
        * UIProcess/API/gtk/WebKitWebViewGtk.cpp:
        (webkitWebViewMaximizeWindow):
        (webkitWebViewRestoreWindow):
        * UIProcess/API/wpe/WPEView.cpp:
        (WKWPE::m_backend):
        * UIProcess/AuxiliaryProcessProxy.cpp:
        (WebKit::AuxiliaryProcessProxy::getLaunchOptions):
        * UIProcess/Launcher/glib/BubblewrapLauncher.cpp:
        (WebKit::XDGDBusProxyLauncher::launch):
        (WebKit::bindDBusSession):
        (WebKit::bindX11):
        (WebKit::bindWayland):
        (WebKit::bindPulse):
        (WebKit::bindPathVar):
        (WebKit::bindGStreamerData):
        (WebKit::bubblewrapSpawn):
        * UIProcess/Launcher/glib/ProcessLauncherGLib.cpp:
        (WebKit::ProcessLauncher::launchProcess):
        * UIProcess/Launcher/mac/ProcessLauncherMac.mm:
        (WebKit::systemDirectoryPath):
        (WebKit::ProcessLauncher::launchProcess):
        * UIProcess/glib/WebProcessPoolGLib.cpp:
        (WebKit::memoryPressureMonitorDisabled):
        (WebKit::WebProcessPool::platformInitialize):
        (WebKit::WebProcessPool::platformInitializeWebProcess):
        * UIProcess/gtk/HardwareAccelerationManager.cpp:
        (WebKit::HardwareAccelerationManager::HardwareAccelerationManager):
        * WebProcess/EntryPoint/unix/WebProcessMain.cpp:
        (main):
        * WebProcess/gtk/WebProcessMainGtk.cpp:
        * WebProcess/wpe/WebProcessMainWPE.cpp:
        Utilize WTF::Environment where possible.

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

        Handle _WKNavigationActionPolicyAllowWithoutTryingAppLink for LoadOptimizer
        https://bugs.webkit.org/show_bug.cgi?id=194640
        <rdar://problem/48064140>

        Reviewed by Brent Fulgham.

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

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

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

        Reviewed by Geoff Garen.

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

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

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

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

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

        * Sources.txt:
        Add new source file.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        [iOS] Open sandbox for certain calls.
        https://bugs.webkit.org/show_bug.cgi?id=194626

        Reviewed by Brent Fulgham.

        Reporting shows that certain calls needs to be allowed in the sandbox.

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

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

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

        Reviewed by Ryosuke Niwa.

        * Shared/WebPreferences.yaml:

2019-02-14  Commit Queue  <commit-queue@webkit.org>

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

        causing API failures in builds (Requested by ShawnRoberts on
        #webkit).

        Reverted changeset:

        "[Cocoa] Media elements will restart network buffering just
        before suspending"
        https://bugs.webkit.org/show_bug.cgi?id=193691
        https://trac.webkit.org/changeset/241486

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

        Do not add a caches to its engine if the salt cannot be initialized
        https://bugs.webkit.org/show_bug.cgi?id=194604

        Reviewed by Antti Koivisto.

        This is a follow-up to https://bugs.webkit.org/show_bug.cgi?id=194588.
        We should return early if initialize fails.

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

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

        [GTK] Use a scrolled window for script alerts text
        https://bugs.webkit.org/show_bug.cgi?id=184875

        Reviewed by Michael Catanzaro.

        To ensure long text doesn't make the dialog bigger.

        * UIProcess/API/gtk/WebKitScriptDialogImpl.cpp:
        (webkitScriptDialogImplConstructed): Use PANGO_ELLIPSIZE_END for the title and add a scrolled window for the body.
        (webkitScriptDialogImplSetText): Helper function to set the dialog body, ensuring the scrolled window fills the
        dialog available size.
        (webkitScriptDialogImplNew): It now receives the maximum size and uses webkitScriptDialogImplSetText().
        * UIProcess/API/gtk/WebKitScriptDialogImpl.h:
        * UIProcess/API/gtk/WebKitWebViewGtk.cpp:
        (webkitWebViewScriptDialog): Pass the 80% of the web view size as the maximum size of script dialogs.

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

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

        Reviewed by Geoffrey Garen.

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

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

2019-02-13  Timothy Hatcher  <timothy@apple.com>

        Allow some deprecations in WKDrawingView.
        https://bugs.webkit.org/show_bug.cgi?id=194636

        Reviewed by Wenson Hsieh.

        * UIProcess/ios/WKDrawingView.mm:
        (-[WKDrawingView PNGRepresentation]):
        (-[WKDrawingView loadDrawingFromPNGRepresentation:]):
        (-[WKDrawingView _canvasViewWillBeginDrawing:]):
        (-[WKDrawingView didChangeInk:]):

2019-02-13  Jer Noble  <jer.noble@apple.com>

        [Cocoa] Media elements will restart network buffering just before suspending
        https://bugs.webkit.org/show_bug.cgi?id=193691

        Reviewed by Eric Carlson.

        When the WebProcess receives a notification that the process is about to become
        suspended, it tells the MemoryPressureHandler to release all critical memory. This
        has the side effect of causing AVFoundation-backed media elements to dump their
        in-memory caches and start downloading media data again. Instead, media elements
        should all stop buffering media data during suspension. Add new testing SPI to
        simulate suspension and resume messages.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _processWillSuspendImminentlyForTesting]):
        (-[WKWebView _processDidResumeForTesting]):
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        * UIProcess/WebProcessProxy.h:
        * UIProcess/ios/WKInkPickerView.mm:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::suspendAllMediaBuffering):
        (WebKit::WebPage::resumeAllMediaBuffering):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::actualPrepareToSuspend):
        (WebKit::WebProcess::cancelPrepareToSuspend):
        (WebKit::WebProcess::processDidResume):
        (WebKit::WebProcess::suspendAllMediaBuffering):
        (WebKit::WebProcess::resumeAllMediaBuffering):
        * WebProcess/WebProcess.h:

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

        [iOS] Fix sandbox violation during media playback
        https://bugs.webkit.org/show_bug.cgi?id=194616
        <rdar://problem/48049264>

        Reviewed by Brent Fulgham.

        Mach lookup to "com.apple.coremedia.figcontentkeysession.xpc" should be allowed.

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

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

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

        Reviewed by Andy Estes.

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

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

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

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

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

        Reviewed by Youenn Fablet.

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

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

        [WPE][GTK] Merge WebProcessPoolWPE.cpp and WebProcessPoolGtk.cpp
        https://bugs.webkit.org/show_bug.cgi?id=194551

        Reviewed by Carlos Garcia Campos.

        * SourcesGTK.txt:
        * SourcesWPE.txt:
        * UIProcess/glib/WebProcessPoolGLib.cpp: Renamed from Source/WebKit/UIProcess/gtk/WebProcessPoolGtk.cpp.
        (WebKit::initializeRemoteInspectorServer):
        (WebKit::memoryPressureMonitorDisabled):
        (WebKit::WebProcessPool::platformInitialize):
        (WebKit::WebProcessPool::platformInitializeWebProcess):
        (WebKit::WebProcessPool::platformInvalidateContext):
        (WebKit::WebProcessPool::platformResolvePathsForSandboxExtensions):
        * UIProcess/wpe/WebProcessPoolWPE.cpp: Removed.

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

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

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

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

        Make WebRTCUnifiedPlanEnabled true by default
        https://bugs.webkit.org/show_bug.cgi?id=194595

        Reviewed by Eric Carlson.

        * Shared/WebPreferences.yaml:

2019-02-13  John Wilander  <wilander@apple.com>

        Store Ad Click Attribution requests in the network process
        https://bugs.webkit.org/show_bug.cgi?id=194510
        <rdar://problem/47650118>

        Reviewed by Alex Christensen and Daniel Bates.

        With this patch, WebPageProxy::didCommitLoadForFrame() now looks for
        an AdClickAttribution object in its navigation state. If there is an
        attribution, it sends it to the network process where the 
        WebKit::NetworkSession stores it in an object of a new class,
        WebKit::NetworkAdClickAttribution.

        This patch also covers test infrastructure to support two new
        TestRunner functions:
        - dumpAdClickAttribution()
        - clearAdClickAttribution()

        * NetworkProcess/Cookies/WebCookieManager.cpp:
            Added missing header include.
        * NetworkProcess/Downloads/DownloadManager.cpp:
            Added missing header include.
        * NetworkProcess/NetworkAdClickAttribution.cpp: Added.
        (WebKit::NetworkAdClickAttribution::ensureDestinationMapForSource):
        (WebKit::NetworkAdClickAttribution::store):
        (WebKit::NetworkAdClickAttribution::clear):
        (WebKit::NetworkAdClickAttribution::toString const):
        * NetworkProcess/NetworkAdClickAttribution.h: Added.
            Stores WebCore::AdClickAttribution objects in a map structure.
        * NetworkProcess/NetworkLoad.cpp:
            Added missing header includes.
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::storeAdClickAttribution):
        (WebKit::NetworkProcess::dumpAdClickAttribution):
        (WebKit::NetworkProcess::clearAdClickAttribution):
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:
        * NetworkProcess/NetworkSession.cpp:
        (WebKit::NetworkSession::NetworkSession):
        (WebKit::NetworkSession::storeAdClickAttribution):
        (WebKit::NetworkSession::dumpAdClickAttribution):
        (WebKit::NetworkSession::clearAdClickAttribution):
        * NetworkProcess/NetworkSession.h:
        * NetworkProcess/soup/RemoteNetworkingContextSoup.cpp:
            Added missing header include.
        * Sources.txt:
            Added NetworkProcess/NetworkAdClickAttribution.cpp.
        * UIProcess/API/APINavigation.h:
        (API::Navigation::adClickAttribution const):
        * UIProcess/API/C/WKPage.cpp:
        (WKPageDumpAdClickAttribution):
        (WKPageClearAdClickAttribution):
            Test infrastructure.
        * UIProcess/API/C/WKPagePrivate.h:
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::dumpAdClickAttribution):
        (WebKit::NetworkProcessProxy::clearAdClickAttribution):
            Test infrastructure.
        * UIProcess/Network/NetworkProcessProxy.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didFinishDocumentLoadForFrame):
            This is where pending Ad Click Attributions are forwarded to the
            network process.
        (WebKit::WebPageProxy::dumpAdClickAttribution):
        (WebKit::WebPageProxy::clearAdClickAttribution):
            Test infrastructure.
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::dumpAdClickAttribution):
        (WebKit::WebProcessPool::clearAdClickAttribution):
            Test infrastructure.
        * UIProcess/WebProcessPool.h:
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
            Added missing data copying from navigationAction to navigationActionData.

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

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

        Reviewed by Youenn Fablet.

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

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

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

        Remove legacy sync messaging in some IPC code
        https://bugs.webkit.org/show_bug.cgi?id=194561

        Reviewed by Geoffrey Garen.

        Changing some LegacySync messages to Delayed messages.  We should probably rename Delayed to Sync.
        There are too many ways to send messages.  Let's work to get rid of the old one.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::setAllowsAnySSLCertificateForWebSocket):
        (WebKit::NetworkProcess::processWillSuspendImminently):
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:
        * PluginProcess/PluginControllerProxy.cpp:
        (WebKit::PluginControllerProxy::handleWheelEvent):
        (WebKit::PluginControllerProxy::handleMouseEnterEvent):
        (WebKit::PluginControllerProxy::handleMouseLeaveEvent):
        (WebKit::PluginControllerProxy::handleKeyboardEvent):
        (WebKit::PluginControllerProxy::handleEditingCommand):
        (WebKit::PluginControllerProxy::isEditingCommandEnabled):
        (WebKit::PluginControllerProxy::handlesPageScaleFactor):
        (WebKit::PluginControllerProxy::requiresUnifiedScaleFactor):
        (WebKit::PluginControllerProxy::paintEntirePlugin):
        (WebKit::PluginControllerProxy::supportsSnapshotting):
        (WebKit::PluginControllerProxy::snapshot):
        (WebKit::PluginControllerProxy::getPluginScriptableNPObject):
        (WebKit::PluginControllerProxy::getFormValue):
        * PluginProcess/PluginControllerProxy.h:
        * PluginProcess/PluginControllerProxy.messages.in:
        * Shared/Plugins/NPObjectMessageReceiver.cpp:
        (WebKit::NPObjectMessageReceiver::deallocate):
        (WebKit::NPObjectMessageReceiver::hasMethod):
        (WebKit::NPObjectMessageReceiver::invoke):
        (WebKit::NPObjectMessageReceiver::invokeDefault):
        (WebKit::NPObjectMessageReceiver::hasProperty):
        (WebKit::NPObjectMessageReceiver::getProperty):
        (WebKit::NPObjectMessageReceiver::setProperty):
        (WebKit::NPObjectMessageReceiver::removeProperty):
        (WebKit::NPObjectMessageReceiver::enumerate):
        (WebKit::NPObjectMessageReceiver::construct):
        * Shared/Plugins/NPObjectMessageReceiver.h:
        * Shared/Plugins/NPObjectMessageReceiver.messages.in:
        * UIProcess/mac/SecItemShimProxy.cpp:
        (WebKit::SecItemShimProxy::secItemRequest):
        * UIProcess/mac/SecItemShimProxy.h:
        * UIProcess/mac/SecItemShimProxy.messages.in:

2019-02-13  Truitt Savell  <tsavell@apple.com>

        Unreviewed, rolling out r241433.

        Broke internal builds.

        Reverted changeset:

        "Move
        UIWebTouchEventsGestureRecognizer.activeTouchesByIdentifier to
        SPI"
        https://bugs.webkit.org/show_bug.cgi?id=194531
        https://trac.webkit.org/changeset/241433

2019-02-12  Antoine Quint  <graouts@apple.com>

        Move UIWebTouchEventsGestureRecognizer.activeTouchesByIdentifier to SPI
        https://bugs.webkit.org/show_bug.cgi?id=194531
        <rdar://problem/47714562>

        Reviewed by Dean Jackson.

        * Platform/spi/ios/UIKitSPI.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView cancelPointersForGestureRecognizer:]): We update the referenced Radar since we need to keep the call
        to respondsToSelector until the SPI has shipped for OpenSource builds to work.

2019-02-13  Antoine Quint  <graouts@apple.com>

        Support simulated mouse events on iOS based on a PlatformTouchEvent
        https://bugs.webkit.org/show_bug.cgi?id=194501
        <rdar://problem/46910790>

        Reviewed by Dean Jackson.

        Add two new internal runtime flags to control whether simulated mouse events should be dipatched along with touch events and whether
        simulated mousemove events dispatched should automatically trigger the behavior preventDefault() would also trigger. We also ensure
        that we correctly create touch tracking regions for mouse events.

        * Shared/WebPreferences.yaml:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::updateTouchEventTracking):

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

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

        Reviewed by Antti Koivisto.

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

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

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

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

        Reviewed by Antti Koivisto.

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

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

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

2019-02-13  Benjamin Poulain  <benjamin@webkit.org>

        Responsiveness timers are too expensive for frequent events
        https://bugs.webkit.org/show_bug.cgi?id=194003

        Reviewed by Geoffrey Garen.

        With each event, we set a responsivness timer to check if the WebProcess
        is responsive, and reset the timer when the WebProcess sends an answer.

        For frequent events (e.g. wheel events, mouse force events, etc),
        we are spamming the kernel with hundreds of timers per second.
        That is a bit inefficient.

        Another source of inefficiency comes from the timer implementation
        itself. Stopping a RunLoop::Timer removes the timer from every mode
        and invalidate the timer. It becomes costly since we do it a lot.

        With this patch, I tweak ResponsivenessTimer and its use to minimize
        how often we schedule system timers.

        The first change is to not stop the timer when we get the stop()
        calls if we expect more events to come in. Instead, we keep track
        if we care about the timeout or not in the attribute "m_waitingForTimer".
        When the next event starts, we can reschedule the timer without ever
        having told the kernel about the stop.
        If there are no next events, the timeout fires but m_waitingForTimer
        is false. To avoid idle wake up, the lazy stop is only used when having
        following events is common.

        The second improvements comes from not even rescheduling the timer
        when restarted. Instead of changing the timer, we let the original timer
        fire and re-shedule a new one with the missing time.

        For more context, also see patches r240759 and r240944.

        * UIProcess/ResponsivenessTimer.cpp:
        (WebKit::ResponsivenessTimer::ResponsivenessTimer):
        (WebKit::ResponsivenessTimer::invalidate):
        (WebKit::ResponsivenessTimer::timerFired):
        (WebKit::ResponsivenessTimer::start):
        (WebKit::ResponsivenessTimer::startWithLazyStop):
        (WebKit::ResponsivenessTimer::stop):
        (WebKit::ResponsivenessTimer::processTerminated):
        (WebKit::ResponsivenessTimer::~ResponsivenessTimer): Deleted.
        * UIProcess/ResponsivenessTimer.h:
        (WebKit::ResponsivenessTimer::hasActiveTimer const):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::processNextQueuedMouseEvent):
        (WebKit::WebPageProxy::sendWheelEvent):
        (WebKit::WebPageProxy::handleKeyboardEvent):
        (WebKit::WebPageProxy::handleGestureEvent):
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::isResponsiveWithLazyStop):
        * UIProcess/WebProcessProxy.h:

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

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

        Reviewed by Wenson Hsieh.

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

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

        WebServiceWorkerProvider::handleFetch no longer needs a CachedResource parameter
        https://bugs.webkit.org/show_bug.cgi?id=194548

        Reviewed by Alex Christensen.

        * WebProcess/Network/WebLoaderStrategy.cpp:
        (WebKit::WebLoaderStrategy::scheduleLoad):
        * WebProcess/Storage/WebServiceWorkerProvider.cpp:
        (WebKit::WebServiceWorkerProvider::handleFetch):
        * WebProcess/Storage/WebServiceWorkerProvider.h:

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

        Remove WKLegacyPDFView
        https://bugs.webkit.org/show_bug.cgi?id=194559

        Reviewed by Andy Estes.

        * Platform/spi/ios/CorePDFSPI.h: Removed.
        * SourcesCocoa.txt:
        * UIProcess/Cocoa/WKWebViewContentProviderRegistry.mm:
        (-[WKWebViewContentProviderRegistry initWithConfiguration:]):
        * UIProcess/ios/WKLegacyPDFView.h: Removed.
        * UIProcess/ios/WKLegacyPDFView.mm: Removed.
        * WebKit.xcodeproj/project.pbxproj:

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

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

        Reviewed by Ryosuke Niwa.

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

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

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

        [iOS] Youtube fails to play.
        https://bugs.webkit.org/show_bug.cgi?id=194565
        <rdar://problem/47974770>

        Reviewed by Geoffrey Garen.

        This is caused by sandbox violations and was introduced in r240500.

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

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

        Remove firing assertion after r241317
        https://bugs.webkit.org/show_bug.cgi?id=194506

        * WebProcess/Network/WebLoaderStrategy.cpp:
        (WebKit::WebLoaderStrategy::setDefersLoading):
        The creation of a PageGroupLoadDeferrer in Chrome.cpp tries to defer loading.
        See comments in Chrome::runJavaScriptAlert et al.
        This was necessary with WebKitLegacy, so keep it, but it doesn't need to do anything in modern WebKit.

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

        Find on Page shouldn't zoom in on matches
        https://bugs.webkit.org/show_bug.cgi?id=194557
        <rdar://problem/42087017>

        Reviewed by Wenson Hsieh.

        * UIProcess/ios/SmartMagnificationController.h:
        * UIProcess/ios/SmartMagnificationController.messages.in:
        * UIProcess/ios/SmartMagnificationController.mm:
        (WebKit::SmartMagnificationController::scrollToRect):
        * WebProcess/WebPage/ios/FindControllerIOS.mm:
        (WebKit::FindController::updateFindIndicator):
        Only scroll to reveal the find result, do not zoom in.

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

        Allow pages to trigger programmatic paste from script on iOS
        https://bugs.webkit.org/show_bug.cgi?id=194271
        <rdar://problem/47808810>

        Reviewed by Tim Horton.

        Cancel the pending DOM paste access handler when the menu is about to hide, rather than when the hiding
        animation has completed. This ensures that if the page (on behalf of the user) requests DOM paste again during
        user interaction before the callout bar has finished fading after the previous DOM paste, we won't automatically
        cancel the incoming DOM paste access request because the callout bar animation finished.

        This scenario is exercised in the layout test editing/pasteboard/ios/dom-paste-consecutive-confirmations.html.

        * Platform/spi/ios/UIKitSPI.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView setupInteraction]):
        (-[WKContentView _willHideMenu:]):
        (-[WKContentView _didHideMenu:]):

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

        AX: IsolatedTree: Implement more attributes
        https://bugs.webkit.org/show_bug.cgi?id=193911
        <rdar://problem/47599217>

        Reviewed by Daniel Bates.

        * Platform/spi/mac/AccessibilityPrivSPI.h: Added.
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/WebPage/mac/WKAccessibilityWebPageObjectBase.h:
        * WebProcess/WebPage/mac/WKAccessibilityWebPageObjectBase.mm:
        (-[WKAccessibilityWebPageObjectBase clientSupportsIsolatedTree]):
        (-[WKAccessibilityWebPageObjectBase isolatedTreeRootObject]):
        (-[WKAccessibilityWebPageObjectBase accessibilityRootObjectWrapper]):
        * WebProcess/WebPage/mac/WKAccessibilityWebPageObjectMac.mm:
        (-[WKAccessibilityWebPageObject IGNORE_WARNINGS_END]):
        (-[WKAccessibilityWebPageObject convertScreenPointToRootView:]):
        (-[WKAccessibilityWebPageObject accessibilityAttributeValue:]):
        (-[WKAccessibilityWebPageObject accessibilityAttributeSizeValue]):
        (-[WKAccessibilityWebPageObject accessibilityAttributePositionValue]):
        (-[WKAccessibilityWebPageObject accessibilityDataDetectorValue:point:]):
        (-[WKAccessibilityWebPageObject accessibilityAttributeValue:forParameter:]):
        (-[WKAccessibilityWebPageObject accessibilityHitTest:]):

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

        Allow pages to trigger programmatic paste from script on iOS
        https://bugs.webkit.org/show_bug.cgi?id=194271
        <rdar://problem/47808810>

        Reviewed by Ryosuke Niwa.

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

        Add an internal setting to enable or disable DOM paste access requests. This is on by default in iOS only
        (excluding watchOS and Apple TV), and is additionally disabled on macOS.

        * UIProcess/API/gtk/PageClientImpl.cpp:
        (WebKit::PageClientImpl::requestDOMPasteAccess):
        * UIProcess/API/gtk/PageClientImpl.h:
        * UIProcess/API/wpe/PageClientImpl.cpp:
        (WebKit::PageClientImpl::requestDOMPasteAccess):

        Plumb DOM paste access requests from the web process (WebEditorClient) to the view (WKContentView). As per the
        usual, this involves WebEditorClient, WebPage, WebPageProxy, PageClient and finally WKContentView.

        * UIProcess/API/wpe/PageClientImpl.h:
        * UIProcess/PageClient.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::requestDOMPasteAccess):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * UIProcess/ios/PageClientImplIOS.h:
        * UIProcess/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::requestDOMPasteAccess):
        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView setupInteraction]):
        (-[WKContentView cleanupInteraction]):
        (-[WKContentView resignFirstResponderForWebView]):
        (-[WKContentView _webTouchEventsRecognized:]):

        Bail from any pending DOM paste access handler the moment we start handling touches on the web view, or if the
        web view resigns first responder, or if the web process crashes.

        (-[WKContentView textInteractionGesture:shouldBeginAtPoint:]):

        Reject text selection gestures while waiting for DOM paste access.

        (-[WKContentView canPerformAction:withSender:]):
        (-[WKContentView canPerformActionForWebView:withSender:]):

        If we're handling a DOM paste, always return YES to allow the callout bar to show the "Paste" option.

        (-[WKContentView _didHideMenu:]):

        If the menu is programmatically hidden by the app while handling a DOM paste request, immediately reject the DOM
        paste request.

        (-[WKContentView pasteForWebView:]):

        Adjust -pasteForWebView: on WKContentView to first check whether there's an outstanding DOM paste completion
        handler to invoke, instead of telling the page to execute a paste command.

        (-[WKContentView _handleDOMPasteRequestWithResult:]):

        Add a helper to take and invoke the current DOM paste completion handler (if it exists) with the given result,
        and then dismiss the shared callout bar. Returns whether or not the paste completion handler exists. Invoked
        from various sources of user interaction or significant state changes (e.g. following a web process crash in
        -cleanupInteraction).

        (-[WKContentView _willPerformAction:sender:]):
        (-[WKContentView _didPerformAction:sender:]):

        Add hooks to detect when WKContentView is executing an editing action. This is to ensure that the page doesn't
        get stuck in a bad state in the case where WKWebView has been subclassed, overrides `-paste:`, and does not
        invoke the superclass method (which calls back into `-[WKContentView pasteForWebView:]`). There are a few
        possibilities here:
        1. WKWebView's `-paste:` action is not overridden. In this case, we will call back into `-pasteForWebView:`,
           which will notice that we have a pending paste completion handler and invoke it.
        2. WKWebView's `-paste:` action is overridden and does not call back into the content view. In this case, we
           will invoke the paste completion handler in `-_didPerformAction:sender:`.
        3. WKWebView's `-canPerformAction:withSender:` is overridden to include additional actions. In this case, we may
           get a call to invoke a different action selector while waiting for a potential paste action. If this happens,
           prevent the DOM paste in `-_willPerformAction:sender:` prior to handling the other action.

        (-[WKContentView handleKeyWebEvent:withCompletionHandler:]):

        Dismiss DOM paste UI upon handling any key event.

        (-[WKContentView showGlobalMenuControllerInRect:]):
        (-[WKContentView hideGlobalMenuController]):

        Helper methods to present and dismiss the global UIMenuController, that accounts for available platform APIs for
        presenting or dismissing the menu controller on iOS.

        (-[WKContentView _requestDOMPasteAccessWithElementRect:completionHandler:]):

        Attempt to find a good target presentation rect when showing the callout menu. First, we will try to use the
        rect of the element the user has interacted with when triggering the paste. If such an element is too large or
        does not exist, we fall back to presenting the callout menu near the user's last touch location (with a small
        amount of margin, such that the action doesn't overlap with the user's finger, stylus, etc.).

        (-[WKContentView _resetShowingTextStyle:]): Deleted.

        Rename this to `-_didHideMenu:`.

        * UIProcess/mac/PageClientImplMac.h:
        * UIProcess/win/PageClientImpl.cpp:
        (WebKit::PageClientImpl::requestDOMPasteAccess):
        * UIProcess/win/PageClientImpl.h:
        * WebProcess/WebCoreSupport/WebEditorClient.cpp:
        (WebKit::WebEditorClient::requestDOMPasteAccess):
        * WebProcess/WebCoreSupport/WebEditorClient.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::requestDOMPasteAccess):

        Add more plumbing and method stubs.

        (WebKit::WebPage::updateCurrentModifierState):
        (WebKit::WebPage::rectForElementAtInteractionLocation const):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::rectForElementAtInteractionLocation const):
        (WebKit::WebPage::rectForElementAtInteractionLocation): Deleted.

        Mark this method as const, add a platform-agnostic stub, and adopt it for the purposes of determining where to
        position the callout bar when pasting.

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

        Remove setDefersLoading infrastructure from WebKit2
        https://bugs.webkit.org/show_bug.cgi?id=194506

        Reviewed by Brady Eidson.

        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::setDefersLoading): Deleted.
        * NetworkProcess/NetworkConnectionToWebProcess.h:
        * NetworkProcess/NetworkConnectionToWebProcess.messages.in:
        * NetworkProcess/NetworkDataTask.h:
        * NetworkProcess/NetworkDataTaskBlob.cpp:
        (WebKit::NetworkDataTaskBlob::suspend): Deleted.
        * NetworkProcess/NetworkDataTaskBlob.h:
        * NetworkProcess/NetworkLoad.cpp:
        (WebKit::NetworkLoad::initialize):
        (WebKit::NetworkLoad::setDefersLoading): Deleted.
        * NetworkProcess/NetworkLoad.h:
        * NetworkProcess/NetworkLoadParameters.h:
        * NetworkProcess/NetworkResourceLoadParameters.cpp:
        (WebKit::NetworkResourceLoadParameters::encode const):
        (WebKit::NetworkResourceLoadParameters::decode):
        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::start):
        (WebKit::NetworkResourceLoader::startNetworkLoad):
        (WebKit::NetworkResourceLoader::setDefersLoading): Deleted.
        * NetworkProcess/NetworkResourceLoader.h:
        * NetworkProcess/cocoa/NetworkDataTaskCocoa.h:
        * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
        (WebKit::NetworkDataTaskCocoa::suspend): Deleted.
        * NetworkProcess/curl/NetworkDataTaskCurl.cpp:
        (WebKit::NetworkDataTaskCurl::suspend): Deleted.
        * NetworkProcess/curl/NetworkDataTaskCurl.h:
        * NetworkProcess/soup/NetworkDataTaskSoup.cpp:
        (WebKit::NetworkDataTaskSoup::suspend): Deleted.
        * NetworkProcess/soup/NetworkDataTaskSoup.h:
        * WebProcess/Network/WebLoaderStrategy.cpp:
        (WebKit::WebLoaderStrategy::scheduleLoadFromNetworkProcess):
        (WebKit::WebLoaderStrategy::setDefersLoading):

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

        Unreviewed, fix build warnings after content extensions enablement
        https://bugs.webkit.org/show_bug.cgi?id=193622
        <rdar://problem/47982850>

        * UIProcess/API/C/WKUserContentExtensionStoreRef.cpp:
        (toResult):

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

        Switching focus from a UITextField to an editable WKWebView causes the keyboard to dance
        https://bugs.webkit.org/show_bug.cgi?id=194524
        <rdar://problem/35481797>

        Reviewed by Wenson Hsieh.

        * Platform/spi/ios/UIKitSPI.h:
        * UIProcess/ios/InputViewUpdateDeferrer.h:
        * UIProcess/ios/InputViewUpdateDeferrer.mm:
        (WebKit::InputViewUpdateDeferrer::InputViewUpdateDeferrer):
        (WebKit::InputViewUpdateDeferrer::~InputViewUpdateDeferrer):
        Make use of the per-responder and much safer input view pinning mechanism.

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView becomeFirstResponderForWebView]):
        (-[WKContentView _singleTapCommited:]):
        (-[WKContentView _attemptClickAtLocation:modifierFlags:]):
        Always temporarily pin input views when becoming first responder; there are
        many paths (such as through the text interaction assistant) that can
        focus us on tap, trying to cover them all is a fool's errand. We'll
        just get out the big hammer and call it in becomeFirstResponder.
        This also means we can remove it from _singleTapCommitted and _attemptClick...

        (-[WKContentView _elementDidFocus:userIsInteracting:blurPreviousNode:changingActivityState:userObject:]):
        Don't release the input view pinning until we return from _elementDidFocus;
        it does the rebuilding synchronously, so we need to have actually updated
        all of the prerequisites of -inputView before depinning.

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

        Make use of is<SubresourceLoader>
        https://bugs.webkit.org/show_bug.cgi?id=194541

        Reviewed by Alex Christensen.

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

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

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

        Reviewed by Chris Dumez.

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

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

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

        [WPE][GTK] Unsafe g_unsetenv() use in WebProcessPool::platformInitialize
        https://bugs.webkit.org/show_bug.cgi?id=194370

        Reviewed by Darin Adler.

        It is incorrect to use g_unsetenv() here because it is MT-Unsafe. We know that it is
        impossible and unreasonable to expect the application has not started other threads at this
        point, and threads will be calling getenv(). WebKit itself has probably already started
        threads of its own.

        Fortunately, the remote inspector in the web process is already prepared to deal with
        failure to connect to the inspector server, so we don't need to do anything except stop
        messing with the environment.

        Note these files are copies of each other. I'll merge them together in a follow-up patch.

        * UIProcess/gtk/WebProcessPoolGtk.cpp:
        (WebKit::initializeRemoteInspectorServer):
        (WebKit::WebProcessPool::platformInitialize):
        * UIProcess/wpe/WebProcessPoolWPE.cpp:
        (WebKit::initializeRemoteInspectorServer):
        (WebKit::WebProcessPool::platformInitialize):

2019-02-08  Beth Dakin  <bdakin@apple.com>

        Ensure old binaries have old snapshotting behaviors
        https://bugs.webkit.org/show_bug.cgi?id=194449
        -and corresponding-
        rdar://problem/47931954

        Reviewed by Darin Adler.

        Make sure that a nil configuration behaves the same way that it used to on apps 
        that were linked before FirstWithSnapshotAfterScreenUpdates

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView takeSnapshotWithConfiguration:completionHandler:]):
        * UIProcess/Cocoa/VersionChecks.h:

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

        [iOSMac] Enable Parental Controls Content Filtering
        https://bugs.webkit.org/show_bug.cgi?id=194521
        <rdar://39732376>

        Reviewed by Tim Horton.

        * Configurations/FeatureDefines.xcconfig:

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

        Remove noisy and unnecessary logs added in r241223
        https://bugs.webkit.org/show_bug.cgi?id=194427

        * UIProcess/Launcher/mac/ProcessLauncherMac.mm:
        (WebKit::ProcessLauncher::launchProcess):
        Errors occur all the time in the XPC connection's event handler, like when a process terminates.
        We don't need to print an "error" every time any process terminates.

2019-02-11  Brian Burg  <bburg@apple.com>

        [Cocoa] Web Automation: client callbacks are not called if delegate does not override
        https://bugs.webkit.org/show_bug.cgi?id=194519
        <rdar://problem/47981961>

        Reviewed by Joseph Pecoraro.

        Call the completion handler directly if the delegate does not implement the relevant method.

        * UIProcess/Cocoa/AutomationSessionClient.mm:
        (WebKit::AutomationSessionClient::requestNewPageWithOptions):
        (WebKit::AutomationSessionClient::requestSwitchToPage):
        (WebKit::AutomationSessionClient::requestHideWindowOfPage):
        (WebKit::AutomationSessionClient::requestRestoreWindowOfPage):
        (WebKit::AutomationSessionClient::requestMaximizeWindowOfPage):

2019-02-11  Daniel Bates  <dabates@apple.com>

        [iOS] Adopt SPI to support Emacs bindings: transpose and delete to end of paragraph
        https://bugs.webkit.org/show_bug.cgi?id=194505
        <rdar://problem/47743533>

        Reviewed by Tim Horton.

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _deleteToEndOfParagraph]): Added.
        (-[WKContentView _transpose]): Added.

2019-02-11  Adrian Perez de Castro  <aperez@igalia.com>

        [GTK][WPE] Add content extensions support in WKTR and unskip layout tests
        https://bugs.webkit.org/show_bug.cgi?id=193622

        Reviewed by Michael Catanzaro.

        * NetworkProcess/cache/NetworkCacheData.h: Define an adoptAndMapFile() implementation
        for GFileIOStream objects.
        * NetworkProcess/cache/NetworkCacheDataSoup.cpp:
        (WebKit::NetworkCache::adoptAndMapFile): Added implementation, which extracts the file
        descriptor from a GFileIOStream, as it inherits from GFileDescriptorBased, and then
        reuses the version of adoptAndMapFile() which takes a file descritor for the actual work.
        * NetworkProcess/NetworkLoadChecker.cpp:
        (Webkit::NetworkLoadChecker::checkRequest): Use "this" when referring to
        processContentExtensionRulesForLoad() in order to avoid ambiguity.
        * Sources.txt: Add WKUserContentExtensionStoreRef.cpp, all ports use it now.
        * SourcesCocoa.txt: Remove WKUserContentExtensionStoreRef.cpp, because it is not
        Cocoa-specific anymore.
        * SourcesGTK.txt: Add APIContentRuleListStoreGLib.cpp.
        * SourcesWPE.txt: Ditto.
        * UIProcess/API/C/WKUserContentExtensionStoreRef.cpp:
        (WKUserContentExtensionStoreCreate): Added.
        (toResult): Added.
        (WKUserContentExtensionStoreCompile): Added.
        (WKUserContentExtensionStoreLookup): Added.
        (WKUserContentExtensionStoreRemove): Added.
        * UIProcess/API/C/WKUserContentExtensionStoreRef.h: Add declarations for the new C API
        functions and for the WKUserContentExtensionStoreResult status enum.
        * UIProcess/API/glib/APIContentRuleListStoreGLib.cpp: Added.
        (API::ContentRuleListStore::defaultStorePath): Add a dummy implementation. The public API
        for the GLib based ports (GTK+ and WPE) will not allow using the default store and will
        always indicating a path.

2019-02-11  Daniel Bates  <dabates@apple.com>

        [iOS] Mouse/Touch/Pointer events are missing modifier keys
        https://bugs.webkit.org/show_bug.cgi?id=191446
        <rdar://problem/45929460>

        Reviewed by Tim Horton.

        Make use of UIKit SPI to retreive the modifier flags when dispatching mouse and touch events.
        Add new WebKit SPI for iOS, -[WKNavigationAction modifierFlags], to retrieve the the modifier
        flags held when a navigation action was initiated.

        * Platform/spi/ios/UIKitSPI.h: Expose SPI.
        * Shared/NativeWebTouchEvent.h: Re-arrange macro guards so that we can expose the helper function
        WebKit::webEventModifierFlags(). This is a bit more involved that usual since this header is included
        from both C++ and Objective-C source files. It only makes sense to expose this function when
        compiling as part of an Objective-C source file.
        * Shared/ios/NativeWebTouchEventIOS.mm:
        (WebKit::NativeWebTouchEvent::NativeWebTouchEvent): Modified to take the modifier flags held down
        when the platform touch event was received and pass them through to the base constructor.
        (WebKit::webEventModifierFlags): Added. Converts from the platform-speciifc UIKeyModifierFlags to
        OptionSet<WebKit::WebEvent::Modifier>.
        * Shared/ios/WebIOSEventFactory.h:
        * Shared/ios/WebIOSEventFactory.mm:
        (WebIOSEventFactory::toUIKeyModifierFlags): Added. Converts from OptionSet<WebKit::WebEvent::Modifier>
        to the platform-specific UIKeyModifierFlags.
        * UIProcess/API/Cocoa/WKNavigationAction.mm:
        (-[WKNavigationAction modifierFlags]): Added.
        * UIProcess/API/Cocoa/WKNavigationActionPrivate.h:
        * UIProcess/WebPageProxy.h:
        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (gestureRecognizerModifierFlags): Added.

        (-[WKContentView _webTouchEventsRecognized:]):
        (-[WKContentView _highlightLongPressRecognized:]):
        (-[WKContentView _twoFingerSingleTapGestureRecognized:]):
        (-[WKContentView _singleTapCommited:]):
        Pass modifier flags through.

        (-[WKContentView _attemptClickAtLocation:modifierFlags:]): Added.
        (-[WKContentView actionSheetAssistant:openElementAtLocation:]): This is invoked when a person opens a link
        via the action sheet. We don't have access to the modifier flags to pass. It also seems like an implementation
        detail that this action is implemented via mouse click and we should re-evaluate this decision in light of
        the fact tht the action sheet is browser UI and we tend to be very reserved on what UI actions are visible
        to the page. On Mac, opening a link via the context menu is not visible to the page, at least from a mouse
        event perspective.
        (webEventFlagsForUIKeyModifierFlags): Added.
        (-[WKContentView _hoverGestureRecognizerChanged:]): Pass modifier flags through.
        (-[WKContentView _attemptClickAtLocation:]): Deleted.
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::handleTwoFingerTapAtPoint):
        (WebKit::WebPageProxy::commitPotentialTap):
        (WebKit::WebPageProxy::handleTap):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::handleSyntheticClick):
        (WebKit::WebPage::completePendingSyntheticClickForContentChangeObserver):
        (WebKit::WebPage::completeSyntheticClick):
        (WebKit::WebPage::handleTap):
        (WebKit::WebPage::handleTwoFingerTapAtPoint):
        (WebKit::WebPage::commitPotentialTap):
        Pass modifier flags through.

2019-02-11  Jer Noble  <jer.noble@apple.com>

        [Cocoa] Notify AVSystemController of our presenting PID before registering as a Now Playing app.
        https://bugs.webkit.org/show_bug.cgi?id=194504

        Reviewed by Eric Carlson.

        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/WebCoreSupport/WebUserMediaClient.cpp:
        (WebKit::WebUserMediaClient::requestUserMediaAccess):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::prepareToSendUserMediaPermissionRequest): Deleted.
        * WebProcess/WebPage/WebPage.h:
        (WebKit::WebPage::userMediaPermissionRequestManager):
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::prepareToSendUserMediaPermissionRequest): Deleted.

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

        Unreviewed, rolling out r241272 and r241276.
        https://bugs.webkit.org/show_bug.cgi?id=194514

        Broke the Apple Internal build and the fix requires human
        intervention :( (Requested by dydz on #webkit).

        Reverted changesets:

        "[iOS] Mouse/Touch/Pointer events are missing modifier keys"
        https://bugs.webkit.org/show_bug.cgi?id=191446
        https://trac.webkit.org/changeset/241272

        "Fix internal iOS build after r241272"
        https://bugs.webkit.org/show_bug.cgi?id=191446
        https://trac.webkit.org/changeset/241276

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

        Fix internal iOS build after r241272
        https://bugs.webkit.org/show_bug.cgi?id=191446

        * Platform/spi/ios/UIKitSPI.h:
        Declare the _modifierFlags when using the internal SDK also.

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

        fast/forms/ios/force-gregorian-calendar-for-credit-card-expiry.html does not work on iPad
        https://bugs.webkit.org/show_bug.cgi?id=194313

        Reviewed by Tim Horton.

        Make `-dateTimePickerCalendarType` work on iPad by handling the case where the date picker control is a
        WKDateTimePopover. This fixes UIScriptController::calendarType() returning null on iPad.

        * UIProcess/ios/forms/WKFormInputControl.mm:
        (-[WKFormInputControl dateTimePickerCalendarType]):
        (-[WKDateTimePopover calendarType]):

2019-02-11  Daniel Bates  <dabates@apple.com>

        [iOS] Mouse/Touch/Pointer events are missing modifier keys
        https://bugs.webkit.org/show_bug.cgi?id=191446
        <rdar://problem/45929460>

        Reviewed by Tim Horton.

        Make use of UIKit SPI to retreive the modifier flags when dispatching mouse and touch events.
        Add new WebKit SPI for iOS, -[WKNavigationAction modifierFlags], to retrieve the the modifier
        flags held when a navigation action was initiated.

        * Platform/spi/ios/UIKitSPI.h: Expose SPI.
        * Shared/NativeWebTouchEvent.h: Re-arrange macro guards so that we can expose the helper function
        WebKit::webEventModifierFlags(). This is a bit more involved that usual since this header is included
        from both C++ and Objective-C source files. It only makes sense to expose this function when
        compiling as part of an Objective-C source file.
        * Shared/ios/NativeWebTouchEventIOS.mm:
        (WebKit::NativeWebTouchEvent::NativeWebTouchEvent): Modified to take the modifier flags held down
        when the platform touch event was received and pass them through to the base constructor.
        (WebKit::webEventModifierFlags): Added. Converts from the platform-speciifc UIKeyModifierFlags to
        OptionSet<WebKit::WebEvent::Modifier>.
        * Shared/ios/WebIOSEventFactory.h:
        * Shared/ios/WebIOSEventFactory.mm:
        (WebIOSEventFactory::toUIKeyModifierFlags): Added. Converts from OptionSet<WebKit::WebEvent::Modifier>
        to the platform-specific UIKeyModifierFlags.
        * UIProcess/API/Cocoa/WKNavigationAction.mm:
        (-[WKNavigationAction modifierFlags]): Added.
        * UIProcess/API/Cocoa/WKNavigationActionPrivate.h:
        * UIProcess/WebPageProxy.h:
        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (gestureRecognizerModifierFlags): Added.

        (-[WKContentView _webTouchEventsRecognized:]):
        (-[WKContentView _highlightLongPressRecognized:]):
        (-[WKContentView _twoFingerSingleTapGestureRecognized:]):
        (-[WKContentView _singleTapCommited:]):
        Pass modifier flags through.

        (-[WKContentView _attemptClickAtLocation:modifierFlags:]): Added.
        (-[WKContentView actionSheetAssistant:openElementAtLocation:]): This is invoked when a person opens a link
        via the action sheet. We don't have access to the modifier flags to pass. It also seems like an implementation
        detail that this action is implemented via mouse click and we should re-evaluate this decision in light of
        the fact tht the action sheet is browser UI and we tend to be very reserved on what UI actions are visible
        to the page. On Mac, opening a link via the context menu is not visible to the page, at least from a mouse
        event perspective.
        (webEventFlagsForUIKeyModifierFlags): Added.
        (-[WKContentView _hoverGestureRecognizerChanged:]): Pass modifier flags through.
        (-[WKContentView _attemptClickAtLocation:]): Deleted.
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::handleTwoFingerTapAtPoint):
        (WebKit::WebPageProxy::commitPotentialTap):
        (WebKit::WebPageProxy::handleTap):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::handleSyntheticClick):
        (WebKit::WebPage::completePendingSyntheticClickForContentChangeObserver):
        (WebKit::WebPage::completeSyntheticClick):
        (WebKit::WebPage::handleTap):
        (WebKit::WebPage::handleTwoFingerTapAtPoint):
        (WebKit::WebPage::commitPotentialTap):
        Pass modifier flags through.

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

        Filter out Overconstrainederror.constraint when getUserMedia is not granted
        https://bugs.webkit.org/show_bug.cgi?id=194240

        Reviewed by Eric Carlson.

        Make sure in UIProcess to filter out constraint if either the page was not granted gum access or it has no persistent access.

        Refactor UserMediaPermissionRequestManagerProxy to make the implementation easier to understand.

        Covered by added test.

        * UIProcess/UserMediaPermissionCheckProxy.cpp:
        (WebKit::UserMediaPermissionCheckProxy::setUserMediaAccessInfo):
        * UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
        (WebKit::UserMediaPermissionRequestManagerProxy::captureDevicesChanged):
        (WebKit::UserMediaPermissionRequestManagerProxy::userMediaAccessWasGranted):
        (WebKit::UserMediaPermissionRequestManagerProxy::grantAccess):
        (WebKit::UserMediaPermissionRequestManagerProxy::getRequestAction):
        (WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame):
        (WebKit::UserMediaPermissionRequestManagerProxy::processUserMediaPermissionRequest):
        (WebKit::UserMediaPermissionRequestManagerProxy::processUserMediaPermissionInvalidRequest):
        (WebKit::UserMediaPermissionRequestManagerProxy::processUserMediaPermissionValidRequest):
        (WebKit::UserMediaPermissionRequestManagerProxy::getUserMediaPermissionInfo):
        (WebKit::UserMediaPermissionRequestManagerProxy::wasGrantedVideoOrAudioAccess):
        (WebKit::UserMediaPermissionRequestManagerProxy::computeFilteredDeviceList):
        (WebKit::UserMediaPermissionRequestManagerProxy::enumerateMediaDevicesForFrame):
        (WebKit::UserMediaPermissionRequestManagerProxy::createPermissionRequest): Deleted.
        * UIProcess/UserMediaPermissionRequestManagerProxy.h:
        * UIProcess/UserMediaPermissionRequestProxy.h:
        (WebKit::UserMediaPermissionRequestProxy::isPending const):
        (WebKit::UserMediaPermissionRequestProxy::setEligibleVideoDeviceUIDs):
        (WebKit::UserMediaPermissionRequestProxy::setEligibleAudioDeviceUIDs):
        (WebKit::UserMediaPermissionRequestProxy::hasAudioDevice const):
        (WebKit::UserMediaPermissionRequestProxy::hasVideoDevice const):
        (WebKit::UserMediaPermissionRequestProxy::hasPersistentAccess const):
        (WebKit::UserMediaPermissionRequestProxy::setHasPersistentAccess):
        (WebKit::UserMediaPermissionRequestProxy::userMediaID const):
        (WebKit::UserMediaPermissionRequestProxy::topLevelDocumentSecurityOrigin const):
        (WebKit::UserMediaPermissionRequestProxy::userMediaDocumentSecurityOrigin const):
        (WebKit::UserMediaPermissionRequestProxy::userRequest const):
        (WebKit::UserMediaPermissionRequestProxy::setDeviceIdentifierHashSalt):
        (WebKit::UserMediaPermissionRequestProxy::deviceIdentifierHashSalt const):
        (WebKit::UserMediaPermissionRequestProxy::audioDevice const):
        (WebKit::UserMediaPermissionRequestProxy::videoDevice const):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::requestUserMediaPermissionForFrame):
        * UIProcess/WebPageProxy.h:

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

        [WPE] Do not try to create empty egl windows
        https://bugs.webkit.org/show_bug.cgi?id=194497

        Reviewed by Žan Doberšek.

        In AcceleratedSurfaceWPE we ensure the size we pass to wpe is at least 0x0, but wl_egl_window_create() returns
        nullptr if 0 is passed as width or height. We should use at least 1x1 instead.

        * WebProcess/WebPage/wpe/AcceleratedSurfaceWPE.cpp:
        (WebKit::AcceleratedSurfaceWPE::initialize):
        (WebKit::AcceleratedSurfaceWPE::clientResize):

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

        [WPE] Do not use a sync IPC message to send the host FD to the web process
        https://bugs.webkit.org/show_bug.cgi?id=194216

        Reviewed by Darin Adler.

        It can be sent as a web page creation parameter instead.

        * PlatformWPE.cmake:
        * Shared/WebPageCreationParameters.cpp:
        (WebKit::WebPageCreationParameters::encode const):
        (WebKit::WebPageCreationParameters::decode):
        * Shared/WebPageCreationParameters.h:
        * SourcesWPE.txt:
        * UIProcess/API/wpe/CompositingManagerProxy.cpp: Removed.
        * UIProcess/API/wpe/CompositingManagerProxy.h: Removed.
        * UIProcess/API/wpe/CompositingManagerProxy.messages.in: Removed.
        * UIProcess/API/wpe/PageClientImpl.cpp:
        (WebKit::PageClientImpl::hostFileDescriptor):
        * UIProcess/API/wpe/PageClientImpl.h:
        * UIProcess/API/wpe/WPEView.cpp:
        (WKWPE::m_backend):
        * UIProcess/API/wpe/WPEView.h:
        (WKWPE::View::create):
        * UIProcess/PageClient.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::creationParameters):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::m_hostFileDescriptor):
        * WebProcess/WebPage/WebPage.h:
        (WebKit::WebPage::releaseHostFileDescriptor):
        * WebProcess/WebPage/wpe/AcceleratedSurfaceWPE.cpp:
        (WebKit::AcceleratedSurfaceWPE::AcceleratedSurfaceWPE):
        (WebKit::AcceleratedSurfaceWPE::initialize):
        * WebProcess/WebPage/wpe/AcceleratedSurfaceWPE.h:
        * WebProcess/WebPage/wpe/CompositingManager.cpp: Removed.
        * WebProcess/WebPage/wpe/CompositingManager.h: Removed.

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

        [GTK][WPE] Add enable-javascript-markup setting
        https://bugs.webkit.org/show_bug.cgi?id=193439

        Reviewed by Michael Catanzaro.

        Expose JavaScriptMarkupEnabled setting in the GLib API.

        * UIProcess/API/glib/WebKitSettings.cpp:
        (webKitSettingsSetProperty):
        (webKitSettingsGetProperty):
        (webkit_settings_class_init):
        (webkit_settings_get_enable_javascript_markup):
        (webkit_settings_set_enable_javascript_markup):
        * UIProcess/API/gtk/WebKitSettings.h:
        * UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt:
        * UIProcess/API/wpe/WebKitSettings.h:
        * UIProcess/API/wpe/docs/wpe-0.1-sections.txt:

2019-02-10  Darin Adler  <darin@apple.com>

        Switch uses of StringBuilder with String::format for hex numbers to use HexNumber.h instead
        https://bugs.webkit.org/show_bug.cgi?id=194485

        Reviewed by Daniel Bates.

        * UIProcess/DeviceIdHashSaltStorage.cpp:
        (WebKit::DeviceIdHashSaltStorage::completeDeviceIdHashSaltForOriginCall): Use
        appendUnsignedAsHex instead of appendUnsigned64AsHex.

        * UIProcess/WebBackForwardList.cpp:
        (WebKit::WebBackForwardList::loggingString): Use appendUnsignedAsHex and
        reinterpret_cast<uintptr_t> instead of String::format and "%p".

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

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

        Broke the GTK mediastream tests (Requested by philn on
        #webkit).

        Reverted changeset:

        "Filter out Overconstrainederror.constraint when getUserMedia
        is not granted"
        https://bugs.webkit.org/show_bug.cgi?id=194240
        https://trac.webkit.org/changeset/241167

2019-02-09  Darin Adler  <darin@apple.com>

        Eliminate unnecessary String temporaries by using StringConcatenateNumbers
        https://bugs.webkit.org/show_bug.cgi?id=194021

        Reviewed by Geoffrey Garen.

        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::escapeIDForJSON): Use an ASCIILiteral to create a String.

        * NetworkProcess/cache/NetworkCacheStorage.cpp:
        (WebKit::NetworkCache::makeVersionedDirectoryPath): Remove String::number and let
        makeString do the conversion without allocating/destroying a String.

        * NetworkProcess/mac/RemoteNetworkingContext.mm: Removed "using namespace WebCore".
        (WebKit::RemoteNetworkingContext::ensureWebsiteDataStoreSession): Remove String::number
        and let makeString do the conversion without allocating/destroying a String.

        * NetworkProcess/webrtc/NetworkMDNSRegister.cpp: Removed "using namespace WebCore".
        (WebKit::registerMDNSNameCallback): Added explicit WebCore prefix as needed.
        (WebKit::NetworkMDNSRegister::registerMDNSName): Ditto. Also remove String::number
        and let makeString do the conversion without allocating/destroying a String.

        * UIProcess/WebPageGroup.cpp:
        (WebKit::pageGroupData): Remove String::number and let makeString do the conversion
        without allocating/destroying a String.
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::createInspectorTargets): Ditto.
        * UIProcess/ios/WKLegacyPDFView.mm:
        (-[WKLegacyPDFView _URLForLinkAnnotation:]): Ditto.
        * WebProcess/InjectedBundle/InjectedBundleScriptWorld.cpp:
        (WebKit::uniqueWorldName): Ditto.
        * WebProcess/WebPage/WebPageInspectorTarget.cpp:
        (WebKit::WebPageInspectorTarget::identifier const): Ditto.

2019-02-09  Alexander Mikhaylenko  <exalm7659@gmail.com>

        [GTK] Fix typo in the newly added API
        https://bugs.webkit.org/show_bug.cgi?id=194472

        Reviewed by Michael Catanzaro.

        Fix a typo: enableed -> enabled.

        * UIProcess/API/glib/WebKitSettings.cpp:
        (webkit_settings_set_enable_back_forward_navigation_gestures):
        * UIProcess/API/gtk/WebKitSettings.h:

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

        Speculative fix for Mojave API test after r241223
        https://bugs.webkit.org/show_bug.cgi?id=194427

        * Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceMain.mm:
        (WebKit::XPCInitializationHandler):
        (WebKit::XPCServiceMain):
        Set the __APPLEEVENTSSERVICENAME environment variable before handling any xpc messages like we used to.
        I'll worry about making things right in the daemon later.

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

        [WK2][macOS] Avoid creating new CVDisplayLink objects for each WebProcess
        https://bugs.webkit.org/show_bug.cgi?id=194463

        Reviewed by Tim Horton.

        Avoid creating new CVDisplayLink objects for each WebProcess. We really only need one per
        display, creating such object is expensive and it is even worse in a PSON world where we
        swap process on navigation.

        This patch moves the DisplayLink storing from WebProcessProxy to WebProcessPool. Also,
        a DisplayLink can now be associated to several IPC connections instead of having a 1:1
        mapping. When a DisplayLink no longer has any observers, we now merely stop it instead
        of destroying it.

        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        (WebKit::WebProcessPool::startDisplayLink):
        (WebKit::WebProcessPool::stopDisplayLink):
        (WebKit::WebProcessPool::stopDisplayLinks):
        * UIProcess/WebProcessPool.h:
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::~WebProcessProxy):
        (WebKit::WebProcessProxy::processWillShutDown):
        (WebKit::WebProcessProxy::shutDown):
        * UIProcess/WebProcessProxy.h:
        * UIProcess/mac/DisplayLink.cpp:
        (WebKit::DisplayLink::DisplayLink):
        (WebKit::DisplayLink::addObserver):
        (WebKit::DisplayLink::removeObserver):
        (WebKit::DisplayLink::removeObservers):
        (WebKit::DisplayLink::hasObservers const):
        (WebKit::DisplayLink::displayLinkCallback):
        * UIProcess/mac/DisplayLink.h:
        * UIProcess/mac/WebProcessProxyMac.mm:
        (WebKit::WebProcessProxy::startDisplayLink):
        (WebKit::WebProcessProxy::stopDisplayLink):

2019-02-08  Alexander Mikhaylenko  <exalm7659@gmail.com>

        [GTK] Implement back/forward touchpad gesture
        https://bugs.webkit.org/show_bug.cgi?id=193919

        Reviewed by Michael Catanzaro.

        Move ViewSnapshotStore and ViewGestureController from Cocoa/Mac directory
        to UIProcess/, also move some parts of mac/ViewGestreControllerMac.mm to
        ViewGestureController.cpp, split up Mac- and iOS-specific parts of
        ViewSnapshotStore.cpp into mac/ViewSnapshotMac.mm, then implement 2-finger
        touchpad swipe back-forward gesture for GTK based on that.

        To avoid name conflict, rename existing ViewGestureController class inside
        UIProcess/API/gtk/WebKitWebViewBase.cpp into TouchGestureController.

        Since GTK gestures can only work with 3 or 4 fingers, treat horizontal
        scrolling events as a swipe as long as there's nowhere to scroll in that
        direction and web page doesn't handle the scrolling.

        This is only allowed for touchpads, even though it can theoretically work
        with touch mice and trackpoints.

        The gesture requires every item in back-forward list to have a snapshot.
        There's already an existing infrastructure for that, so the patch changes
        a bunch of #if PLATFORM(COCOA) statements to also check for GTK platform.
        The snapshots have to be taken in sync, so the implementation draws webview
        widget into a Cairo image surface.

        The gesture is disabled by default, and can be enabled by setting the newly
        added 'enable-back-forward-navigation-gestures' property in WebKitSettings to
        true.

        Gesture drawing is implemented via Cairo. When the gesture is active, the
        actual page is drawn into a Cairo group, which is then drawn together with
        a given snapshot, as well as dimming and a drop shadow over the "lower" layer.

        Also add a memory pressure handler that clears snapshot store when low on memory.

        * DerivedSources-input.xcfilelist:
        * PlatformGTK.cmake:
        * PlatformMac.cmake:
        * Shared/SessionState.h: Add snapshot to back-forward items for GTK.
        * Shared/WebBackForwardListItem.h: Add snapshot to back-forward items for GTK.
        * SourcesCocoa.txt:
        * SourcesGTK.txt:
        * UIProcess/API/glib/WebKitSettings.cpp:
        Added 'enable-back-forward-navigation-gestures' property for enabling the gesture.
        (webKitSettingsSetProperty):
        (webKitSettingsGetProperty):
        (webkit_settings_class_init):
        (webkit_settings_get_enable_back_forward_navigation_gestures): Added, GTK only.
        (webkit_settings_set_enable_back_forward_navigation_gestures): Added, GTK only.
        * UIProcess/API/glib/WebKitWebView.cpp:
        (enableBackForwardNavigationGesturesChanged): Added, GTK only.
        (webkitWebViewUpdateSettings):
        (webkitWebViewDisconnectSettingsSignalHandlers):
        * UIProcess/API/gtk/PageClientImpl.cpp:
        (WebKit::PageClientImpl::setViewNeedsDisplay): Redraw the whole screen instead of a region during the gesture.
        (WebKit::PageClientImpl::takeViewSnapshot): Added.
        (WebKit::PageClientImpl::wheelEventWasNotHandledByWebCore): Pass unhandled events to the gesture controller.
        (WebKit::PageClientImpl::didRemoveNavigationGestureSnapshot): Redraw the widget immediately after removing snapshot.
        (WebKit::PageClientImpl::didStartProvisionalLoadForMainFrame): Added, send a notification to the gesture controller.
        (WebKit::PageClientImpl::didFirstVisuallyNonEmptyLayoutForMainFrame):  Send a notification to the gesture controller.
        (WebKit::PageClientImpl::didFinishLoadForMainFrame):  Send a notification to the gesture controller.
        (WebKit::PageClientImpl::didFailLoadForMainFrame):  Added, send a notification to the gesture controller.
        (WebKit::PageClientImpl::didSameDocumentNavigationForMainFrame):  Send a notification to the gesture controller.
        (WebKit::PageClientImpl::didRestoreScrollPosition):  Added, send a notification to the gesture controller.
        * UIProcess/API/gtk/PageClientImpl.h:
        * UIProcess/API/gtk/WebKitSettings.h:
        Add webkit_settings_get_enable_back_forward_navigation_gestures() and webkit_settings_get_enable_back_forward_navigation_gestures()
        to public API.
        * UIProcess/API/gtk/WebKitWebViewBase.cpp:
        (webkitWebViewBaseDraw): Pass drawing to ViewGestureController during the gesture.
        (webkitWebViewBaseScrollEvent): Pass scroll events to ViewGestureController during the gesture.
        (webkitWebViewBaseGestureController): Renamed ViewGestureController to TouchGestureController.
        (webkitWebViewBaseViewGestureController): Added.
        (webkitWebViewBaseCreateWebPage): Create an instance of ViewGestureController.
        (webkitWebViewBaseTakeViewSnapshot): Added.
        (webkitWebViewBaseDidStartProvisionalLoadForMainFrame): Added.
        (webkitWebViewBaseDidFirstVisuallyNonEmptyLayoutForMainFrame): Added.
        (webkitWebViewBaseDidFinishLoadForMainFrame): Added.
        (webkitWebViewBaseDidFailLoadForMainFrame): Added.
        (webkitWebViewBaseDidSameDocumentNavigationForMainFrame): Added.
        (webkitWebViewBaseDidRestoreScrollPosition): Added.
        * UIProcess/API/gtk/WebKitWebViewBasePrivate.h:
        * UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt: Mentioned the added functions in docs.
        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        (WebKit::WebProcessPool::platformInitialize): Move the check from WebMemoryPressureHandlerCocoa.mm here.
        * UIProcess/PageClient.h: Add takeViewSnapshot() for GTK.
        * UIProcess/ViewGestureController.cpp: Renamed from Source/WebKit/UIProcess/Cocoa/ViewGestureController.cpp.
        (WebKit::ViewGestureController::ViewGestureController):
        (WebKit::ViewGestureController::~ViewGestureController):
        (WebKit::ViewGestureController::disconnectFromProcess):
        (WebKit::ViewGestureController::connectToProcess):
        (WebKit::ViewGestureController::controllerForGesture):
        (WebKit::ViewGestureController::takeNextGestureID):
        (WebKit::ViewGestureController::willBeginGesture):
        (WebKit::ViewGestureController::didEndGesture):
        (WebKit::ViewGestureController::setAlternateBackForwardListSourcePage):
        (WebKit::ViewGestureController::canSwipeInDirection const):
        (WebKit::ViewGestureController::didStartProvisionalOrSameDocumentLoadForMainFrame):
        (WebKit::ViewGestureController::didStartProvisionalLoadForMainFrame):
        (WebKit::ViewGestureController::didFirstVisuallyNonEmptyLayoutForMainFrame):
        (WebKit::ViewGestureController::didRepaintAfterNavigation):
        (WebKit::ViewGestureController::didHitRenderTreeSizeThreshold):
        (WebKit::ViewGestureController::didRestoreScrollPosition):
        (WebKit::ViewGestureController::didReachMainFrameLoadTerminalState):
        (WebKit::ViewGestureController::didSameDocumentNavigationForMainFrame):
        (WebKit::ViewGestureController::checkForActiveLoads):
        (WebKit::ViewGestureController::SnapshotRemovalTracker::SnapshotRemovalTracker):
        (WebKit::ViewGestureController::SnapshotRemovalTracker::eventsDescription):
        (WebKit::ViewGestureController::SnapshotRemovalTracker::log const):
        (WebKit::ViewGestureController::SnapshotRemovalTracker::resume):
        (WebKit::ViewGestureController::SnapshotRemovalTracker::start):
        (WebKit::ViewGestureController::SnapshotRemovalTracker::reset):
        (WebKit::ViewGestureController::SnapshotRemovalTracker::stopWaitingForEvent):
        (WebKit::ViewGestureController::SnapshotRemovalTracker::eventOccurred):
        (WebKit::ViewGestureController::SnapshotRemovalTracker::cancelOutstandingEvent):
        (WebKit::ViewGestureController::SnapshotRemovalTracker::hasOutstandingEvent):
        (WebKit::ViewGestureController::SnapshotRemovalTracker::fireRemovalCallbackIfPossible):
        (WebKit::ViewGestureController::SnapshotRemovalTracker::fireRemovalCallbackImmediately):
        (WebKit::ViewGestureController::SnapshotRemovalTracker::watchdogTimerFired):
        (WebKit::ViewGestureController::SnapshotRemovalTracker::startWatchdog):
        (WebKit::deltaShouldCancelSwipe):
        (WebKit::ViewGestureController::PendingSwipeTracker::PendingSwipeTracker):
        (WebKit::ViewGestureController::PendingSwipeTracker::scrollEventCanBecomeSwipe):
        (WebKit::ViewGestureController::PendingSwipeTracker::handleEvent):
        (WebKit::ViewGestureController::PendingSwipeTracker::eventWasNotHandledByWebCore):
        (WebKit::ViewGestureController::PendingSwipeTracker::tryToStartSwipe):
        (WebKit::ViewGestureController::PendingSwipeTracker::reset):
        (WebKit::ViewGestureController::startSwipeGesture):
        (WebKit::ViewGestureController::isPhysicallySwipingLeft const):
        (WebKit::ViewGestureController::shouldUseSnapshotForSize):
        (WebKit::ViewGestureController::forceRepaintIfNeeded):
        (WebKit::ViewGestureController::willEndSwipeGesture):
        (WebKit::ViewGestureController::endSwipeGesture):
        (WebKit::ViewGestureController::requestRenderTreeSizeNotificationIfNeeded):
        * UIProcess/ViewGestureController.h: Renamed from Source/WebKit/UIProcess/Cocoa/ViewGestureController.h.
        (WebKit::ViewGestureController::wheelEventWasNotHandledByWebCore):
        (WebKit::ViewGestureController::shouldIgnorePinnedState):
        (WebKit::ViewGestureController::setShouldIgnorePinnedState):
        (WebKit::ViewGestureController::hasActiveMagnificationGesture const):
        (WebKit::ViewGestureController::setCustomSwipeViews):
        (WebKit::ViewGestureController::setCustomSwipeViewsTopContentInset):
        (WebKit::ViewGestureController::setDidMoveSwipeSnapshotCallback):
        (WebKit::ViewGestureController::backgroundColorForCurrentSnapshot const):
        (WebKit::ViewGestureController::didFinishLoadForMainFrame):
        (WebKit::ViewGestureController::didFailLoadForMainFrame):
        (WebKit::ViewGestureController::setSwipeGestureEnabled):
        (WebKit::ViewGestureController::isSwipeGestureEnabled):
        (WebKit::ViewGestureController::SnapshotRemovalTracker::pause):
        (WebKit::ViewGestureController::SnapshotRemovalTracker::isPaused const):
        (WebKit::ViewGestureController::SnapshotRemovalTracker::hasRemovalCallback const):
        (WebKit::ViewGestureController::SnapshotRemovalTracker::renderTreeSizeThreshold const):
        (WebKit::ViewGestureController::SnapshotRemovalTracker::setRenderTreeSizeThreshold):
        (WebKit::ViewGestureController::PendingSwipeTracker::shouldIgnorePinnedState):
        (WebKit::ViewGestureController::PendingSwipeTracker::setShouldIgnorePinnedState):
        (WebKit::ViewGestureController::SwipeProgressTracker::progress const):
        (WebKit::ViewGestureController::SwipeProgressTracker::direction const):
        * UIProcess/ViewGestureController.messages.in: Renamed from Source/WebKit/UIProcess/Cocoa/ViewGestureController.messages.in.
        * UIProcess/ViewSnapshotStore.cpp: Copied from Source/WebKit/UIProcess/mac/ViewSnapshotStore.mm.
        (WebKit::ViewSnapshotStore::ViewSnapshotStore):
        (WebKit::ViewSnapshotStore::~ViewSnapshotStore):
        (WebKit::ViewSnapshotStore::singleton):
        (WebKit::ViewSnapshotStore::didAddImageToSnapshot):
        (WebKit::ViewSnapshotStore::willRemoveImageFromSnapshot):
        (WebKit::ViewSnapshotStore::pruneSnapshots):
        (WebKit::ViewSnapshotStore::recordSnapshot):
        (WebKit::ViewSnapshotStore::discardSnapshotImages):
        (WebKit::ViewSnapshot::~ViewSnapshot):
        * UIProcess/ViewSnapshotStore.h: Renamed from Source/WebKit/UIProcess/mac/ViewSnapshotStore.h.
        (WebKit::ViewSnapshot::setRenderTreeSize):
        (WebKit::ViewSnapshot::renderTreeSize const):
        (WebKit::ViewSnapshot::setBackgroundColor):
        (WebKit::ViewSnapshot::backgroundColor const):
        (WebKit::ViewSnapshot::setViewScrollPosition):
        (WebKit::ViewSnapshot::viewScrollPosition const):
        (WebKit::ViewSnapshot::setDeviceScaleFactor):
        (WebKit::ViewSnapshot::deviceScaleFactor const):
        (WebKit::ViewSnapshot::surface const):
        (WebKit::ViewSnapshot::imageSizeInBytes const):
        (WebKit::ViewSnapshot::size const):
        (WebKit::ViewSnapshotStore::setDisableSnapshotVolatilityForTesting):
        (WebKit::ViewSnapshotStore::disableSnapshotVolatilityForTesting const):
        * UIProcess/WebBackForwardList.cpp:
        (WebKit::WebBackForwardList::didRemoveItem): Unset snapshot for GTK.
        * UIProcess/WebMemoryPressureHandler.cpp: Copied from Source/WebKit/UIProcess/Cocoa/WebMemoryPressureHandlerCocoa.mm.
        (WebKit::installMemoryPressureHandler):
        * UIProcess/WebMemoryPressureHandler.h: Renamed from Source/WebKit/UIProcess/Cocoa/WebMemoryPressureHandlerCocoa.h.
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::recordNavigationSnapshot): Take snapshots for GTK.
        * UIProcess/WebPageProxy.h:
        * UIProcess/gtk/ViewGestureControllerGtk.cpp: Added. This is a port of
        UIProcess/mac/ViewGestureControllerMac.mm. SwipeProgressTracker class is a
        re-implementation of trackSwipeEventWithOptions.
        (WebKit::isEventStop):
        (WebKit::ViewGestureController::platformTeardown):
        (WebKit::ViewGestureController::PendingSwipeTracker::scrollEventCanStartSwipe):
        (WebKit::ViewGestureController::PendingSwipeTracker::scrollEventCanEndSwipe):
        (WebKit::ViewGestureController::PendingSwipeTracker::scrollEventCanInfluenceSwipe):
        (WebKit::ViewGestureController::PendingSwipeTracker::scrollEventGetScrollingDeltas):
        (WebKit::ViewGestureController::handleScrollWheelEvent):
        (WebKit::ViewGestureController::trackSwipeGesture):
        (WebKit::ViewGestureController::SwipeProgressTracker::SwipeProgressTracker):
        (WebKit::ViewGestureController::SwipeProgressTracker::startTracking):
        (WebKit::ViewGestureController::SwipeProgressTracker::reset):
        (WebKit::ViewGestureController::SwipeProgressTracker::handleEvent):
        (WebKit::ViewGestureController::SwipeProgressTracker::startAnimation):
        (WebKit::easeOutCubic):
        (WebKit::ViewGestureController::SwipeProgressTracker::onAnimationTick):
        (WebKit::ViewGestureController::SwipeProgressTracker::endAnimation):
        (WebKit::ViewGestureController::beginSwipeGesture):
        (WebKit::ViewGestureController::handleSwipeGesture):
        (WebKit::ViewGestureController::draw):
        (WebKit::ViewGestureController::removeSwipeSnapshot):
        (WebKit::ViewGestureController::beginSimulatedSwipeInDirectionForTesting):
        (WebKit::ViewGestureController::completeSimulatedSwipeInDirectionForTesting):
        * UIProcess/gtk/ViewSnapshotStoreGtk.cpp: Renamed from Source/WebKit/UIProcess/Cocoa/WebMemoryPressureHandlerCocoa.mm.
        (WebKit::ViewSnapshot::create):
        (WebKit::ViewSnapshot::ViewSnapshot):
        (WebKit::ViewSnapshot::hasImage const):
        (WebKit::ViewSnapshot::clearImage):
        (WebKit::ViewSnapshot::imageSizeInBytes const):
        (WebKit::ViewSnapshot::size const):
        * UIProcess/gtk/WebProcessPoolGtk.cpp:
        (WebKit::memoryPressureMonitorDisabled): Added.
        (WebKit::WebProcessPool::platformInitialize): Install memory pressure handler.
        (WebKit::WebProcessPool::platformInitializeWebProcess): Use memoryPressureMonitorDisabled().
        * UIProcess/mac/ViewGestureControllerMac.mm:
        Moved many functions into UIProcess/ViewGestureController.cpp
        (WebKit::ViewGestureController::PendingSwipeTracker::scrollEventCanStartSwipe):
        (WebKit::ViewGestureController::PendingSwipeTracker::scrollEventCanEndSwipe):
        (WebKit::ViewGestureController::PendingSwipeTracker::scrollEventCanInfluenceSwipe):
        (WebKit::ViewGestureController::PendingSwipeTracker::scrollEventGetScrollingDeltas):
        (WebKit::ViewGestureController::trackSwipeGesture):
        (WebKit::scrollEventCanInfluenceSwipe): Deleted.
        (WebKit::deltaShouldCancelSwipe): Deleted.
        (WebKit::ViewGestureController::PendingSwipeTracker::PendingSwipeTracker): Deleted.
        (WebKit::ViewGestureController::PendingSwipeTracker::scrollEventCanBecomeSwipe): Deleted.
        (WebKit::ViewGestureController::PendingSwipeTracker::handleEvent): Deleted.
        (WebKit::ViewGestureController::PendingSwipeTracker::eventWasNotHandledByWebCore): Deleted.
        (WebKit::ViewGestureController::PendingSwipeTracker::tryToStartSwipe): Deleted.
        (WebKit::ViewGestureController::PendingSwipeTracker::reset): Deleted.
        (WebKit::ViewGestureController::willEndSwipeGesture): Deleted.
        (WebKit::ViewGestureController::shouldUseSnapshotForSize): Deleted.
        (WebKit::ViewGestureController::isPhysicallySwipingLeft const): Deleted.
        (WebKit::ViewGestureController::endSwipeGesture): Deleted.
        (WebKit::ViewGestureController::forceRepaintIfNeeded): Deleted.
        (WebKit::ViewGestureController::requestRenderTreeSizeNotificationIfNeeded): Deleted.
        * UIProcess/mac/ViewSnapshotStoreMac.mm: Renamed from Source/WebKit/UIProcess/mac/ViewSnapshotStore.mm.
        (WebKit::ViewSnapshotStore::snapshottingContext):
        (WebKit::ViewSnapshot::create):
        (WebKit::ViewSnapshot::ViewSnapshot):
        (WebKit::ViewSnapshot::setSurface):
        (WebKit::ViewSnapshot::hasImage const):
        (WebKit::ViewSnapshot::clearImage):
        (WebKit::ViewSnapshot::setVolatile):
        (WebKit::ViewSnapshot::asLayerContents):
        (WebKit::ViewSnapshot::asImageForTesting):
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/WebPage/ViewGestureGeometryCollector.cpp:
        Make SetRenderTreeSizeNotificationThreshold() cross-platform.
        (WebKit::ViewGestureGeometryCollector::ViewGestureGeometryCollector):
        (WebKit::ViewGestureGeometryCollector::computeMinimumAndMaximumViewportScales const):
        (WebKit::ViewGestureGeometryCollector::mainFrameDidLayout):
        * WebProcess/WebPage/ViewGestureGeometryCollector.h:
        * WebProcess/WebPage/ViewGestureGeometryCollector.messages.in:
        * WebProcess/WebPage/WebPage.cpp:
        Start using ViewGestureGeometryCollector for GTK.
        (WebKit::WebPage::mainFrameDidLayout):
        * WebProcess/WebPage/WebPage.h:

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

        Add SPI to use networking daemon instead of XPC service
        https://bugs.webkit.org/show_bug.cgi?id=194427

        Reviewed by Geoffrey Garen.

        There is still work to be done, but with the proper plist it starts and loads webpages!

        * NetworkProcess/EntryPoint/Cocoa/Daemon/DaemonEntryPoint.mm:
        (WebKit::DaemonMain):
        * Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceEntryPoint.h:
        * Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceMain.mm:
        (WebKit::XPCEventHandler):
        (WebKit::XPCInitializationHandler):
        (WebKit::XPCServiceMain):
        (WebKit::XPCServiceEventHandler): Deleted.
        * UIProcess/API/APIProcessPoolConfiguration.h:
        * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h:
        * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm:
        (-[_WKProcessPoolConfiguration usesNetworkingDaemon]):
        (-[_WKProcessPoolConfiguration setUsesNetworkingDaemon:]):
        * UIProcess/AuxiliaryProcessProxy.cpp:
        (WebKit::AuxiliaryProcessProxy::getLaunchOptions):
        * UIProcess/Launcher/ProcessLauncher.h:
        * UIProcess/Launcher/mac/ProcessLauncherMac.mm:
        (WebKit::serviceName):
        (WebKit::ProcessLauncher::launchProcess):
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::getLaunchOptions):
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::usesNetworkingDaemon const):
        * UIProcess/WebProcessPool.h:

2019-02-08  Truitt Savell  <tsavell@apple.com>

        Unreviewed, rolling out r241197.

        Broke iOS Simulator Debug build and casued 1 API failure on
        High Sierra

        Reverted changeset:

        "Add SPI to use networking daemon instead of XPC service"
        https://bugs.webkit.org/show_bug.cgi?id=194427
        https://trac.webkit.org/changeset/241197

2019-02-08  Beth Dakin  <bdakin@apple.com>

        Abstract and discussion comments needed for afterScreenUpdates
        https://bugs.webkit.org/show_bug.cgi?id=194442

        Reviewed by Wenson Hsieh.

        Forgot to add these comments with https://bugs.webkit.org/show_bug.cgi?id=194362
        * UIProcess/API/Cocoa/WKSnapshotConfiguration.h:

2019-02-08  Beth Dakin  <bdakin@apple.com>

        Add afterScreenUpdates to WKSnapshotConfiguration
        https://bugs.webkit.org/show_bug.cgi?id=194362
        -and corresponding-
        <rdar://problem/40655528> Please add an "after screen updates" property to 
        WKSnapshotConfiguration (to solve blank snapshots)

        Reviewed by Tim Horton.

        This is the WebKit equivalent of - (UIView *)snapshotViewAfterScreenUpdates:(BOOL)afterUpdates;
        This makes our snapshotting API more predictable and reliable on iOS devices, 
        which is why the new configuration property defaults to YES.

        New property that defaults to YES.
        * UIProcess/API/Cocoa/WKSnapshotConfiguration.h:
        * UIProcess/API/Cocoa/WKSnapshotConfiguration.mm:
        (-[WKSnapshotConfiguration init]):
        (-[WKSnapshotConfiguration copyWithZone:]):

        When afterScreenUpdates is set, invoke the snapshot via 
        callAfterNextPresentationUpdate.
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView takeSnapshotWithConfiguration:completionHandler:]):
        (-[WKWebView _callCompletionHandler:withSnapshotImage:atDeviceScale:]):

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

        Add SPI to use networking daemon instead of XPC service
        https://bugs.webkit.org/show_bug.cgi?id=194427

        Reviewed by Geoffrey Garen.

        There is still work to be done, but with the proper plist it starts and loads webpages!

        * NetworkProcess/EntryPoint/Cocoa/Daemon/DaemonEntryPoint.mm:
        (WebKit::DaemonMain):
        * Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceEntryPoint.h:
        * Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceMain.mm:
        (WebKit::XPCEventHandler):
        (WebKit::XPCInitializationHandler):
        (WebKit::XPCServiceMain):
        (WebKit::XPCServiceEventHandler): Deleted.
        * UIProcess/API/APIProcessPoolConfiguration.h:
        * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h:
        * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm:
        (-[_WKProcessPoolConfiguration usesNetworkingDaemon]):
        (-[_WKProcessPoolConfiguration setUsesNetworkingDaemon:]):
        * UIProcess/AuxiliaryProcessProxy.cpp:
        (WebKit::AuxiliaryProcessProxy::getLaunchOptions):
        * UIProcess/Launcher/ProcessLauncher.h:
        * UIProcess/Launcher/mac/ProcessLauncherMac.mm:
        (WebKit::serviceName):
        (WebKit::ProcessLauncher::launchProcess):
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::getLaunchOptions):
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::usesNetworkingDaemon const):
        * UIProcess/WebProcessPool.h:

2019-02-08  Keith Rollin  <krollin@apple.com>

        Unreviewed build fix.

        r241135 modified how entitlements were built up for the macOS. Those
        changes broke the iOSMac builds. Bring back some deletions in order to
        fix iOSMac.

        * Configurations/PluginService.64.xcconfig:
        * Configurations/PluginService.entitlements: Added.
        * WebKit.xcodeproj/project.pbxproj:

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

        Mark more heap-allocated classes as fast allocated
        https://bugs.webkit.org/show_bug.cgi?id=194422

        Reviewed by Ryosuke Niwa.

        * NetworkProcess/NetworkLoad.cpp:
        * NetworkProcess/NetworkLoadChecker.h:
        * NetworkProcess/NetworkResourceLoader.cpp:
        * Platform/IPC/Connection.h:
        * Platform/IPC/mac/ImportanceAssertion.h:
        * PluginProcess/PluginCreationParameters.h:
        * Shared/API/Cocoa/RemoteObjectRegistry.h:
        * Shared/WebEvent.h:
        * UIProcess/API/APIHTTPCookieStore.cpp:
        * UIProcess/API/APINotificationProvider.h:
        * UIProcess/API/Cocoa/PageLoadStateObserver.h:
        * UIProcess/API/Cocoa/WKHTTPCookieStore.mm:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _setInputDelegate:]):
        * UIProcess/API/gtk/PageClientImpl.h:
        * UIProcess/BackingStore.h:
        * UIProcess/Cocoa/AutomationClient.h:
        * UIProcess/Cocoa/DiagnosticLoggingClient.h:
        * UIProcess/Cocoa/DownloadClient.h:
        * UIProcess/Cocoa/FindClient.h:
        * UIProcess/Cocoa/NavigationState.h:
        * UIProcess/Cocoa/UIDelegate.h:
        * UIProcess/Cocoa/ViewGestureController.h:
        * UIProcess/DeviceIdHashSaltStorage.h:
        * UIProcess/Downloads/DownloadProxyMap.h:
        * UIProcess/Gamepad/UIGamepad.h:
        * UIProcess/Notifications/WebNotificationProvider.h:
        * UIProcess/ProcessAssertion.h:
        * UIProcess/RemoteLayerTree/RemoteLayerTreeHost.h:
        * UIProcess/WebContextInjectedBundleClient.h:
        * UIProcess/WebFormClient.h:
        * UIProcess/WebGeolocationProvider.h:
        * UIProcess/WebPageProxy.h:
        * WebProcess/Automation/WebAutomationSessionProxy.h:
        * WebProcess/InjectedBundle/API/APIInjectedBundleBundleClient.h:
        * WebProcess/InjectedBundle/API/APIInjectedBundleEditorClient.h:
        * WebProcess/InjectedBundle/API/APIInjectedBundlePageContextMenuClient.h:
        * WebProcess/InjectedBundle/API/APIInjectedBundlePageLoaderClient.h:
        * WebProcess/InjectedBundle/API/APIInjectedBundlePageResourceLoadClient.h:
        * WebProcess/InjectedBundle/API/APIInjectedBundlePageUIClient.h:
        * WebProcess/InjectedBundle/APIInjectedBundleFormClient.h:
        * WebProcess/Network/webrtc/LibWebRTCNetwork.h:
        * WebProcess/Network/webrtc/LibWebRTCSocket.h:
        * WebProcess/Network/webrtc/WebRTCResolver.h:
        * WebProcess/WebCoreSupport/WebInspectorClient.cpp:
        * WebProcess/WebPage/DrawingArea.h:

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

        [iOS] [WK2] Modernize code for applying autocorrection
        https://bugs.webkit.org/show_bug.cgi?id=194397

        Reviewed by Tim Horton.

        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView requestAutocorrectionRectsForString:withCompletionHandler:]):
        (-[WKContentView applyAutocorrection:toString:withCompletionHandler:]):

        Use BlockPtr instead of temporarily storing the completion handler.

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

        Change a LegacySync to Delayed.

        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::applyAutocorrection):
        (WebKit::WebPage::syncApplyAutocorrection):
        (WebKit::WebPage::applyAutocorrectionInternal):

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

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

        Reviewed by Tim Horton.

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

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

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

        [macOS] Block coreservicesd in sandbox.
        https://bugs.webkit.org/show_bug.cgi?id=192670

        Reviewed by Alexey Proskuryakov.

        We should block CoreServices in newer versions of macOS. In order to achieve this we need to avoid calling
        _RegisterApplication before entering the sandbox, since this call will open up a connection to CoreServices.
        The call to _RegisterApplication is moved to ChildProcess::updateProcessName, since it is needed to
        successfully update the process name. The call to ChildProcess::updateProcessName is made after entering
        the sandbox.

        * Shared/AuxiliaryProcess.cpp:
        (WebKit::AuxiliaryProcess::initialize):
        * WebProcess/cocoa/WebProcessCocoa.mm:
        (WebKit::WebProcess::initializeProcessName):
        (WebKit::WebProcess::platformInitializeProcess):
        * WebProcess/com.apple.WebProcess.sb.in:

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

        Filter out Overconstrainederror.constraint when getUserMedia is not granted
        https://bugs.webkit.org/show_bug.cgi?id=194240

        Reviewed by Eric Carlson.

        Make sure in UIProcess to filter out constraint if either the page was not granted gum access or it has no persistent access.

        Refactor UserMediaPermissionRequestManagerProxy to make the implementation easier to understand.

        Covered by added test.

        * UIProcess/UserMediaPermissionCheckProxy.cpp:
        (WebKit::UserMediaPermissionCheckProxy::setUserMediaAccessInfo):
        * UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
        (WebKit::UserMediaPermissionRequestManagerProxy::captureDevicesChanged):
        (WebKit::UserMediaPermissionRequestManagerProxy::userMediaAccessWasGranted):
        (WebKit::UserMediaPermissionRequestManagerProxy::grantAccess):
        (WebKit::UserMediaPermissionRequestManagerProxy::getRequestAction):
        (WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame):
        (WebKit::UserMediaPermissionRequestManagerProxy::processUserMediaPermissionRequest):
        (WebKit::UserMediaPermissionRequestManagerProxy::processUserMediaPermissionInvalidRequest):
        (WebKit::UserMediaPermissionRequestManagerProxy::processUserMediaPermissionValidRequest):
        (WebKit::UserMediaPermissionRequestManagerProxy::getUserMediaPermissionInfo):
        (WebKit::UserMediaPermissionRequestManagerProxy::wasGrantedVideoOrAudioAccess):
        (WebKit::UserMediaPermissionRequestManagerProxy::computeFilteredDeviceList):
        (WebKit::UserMediaPermissionRequestManagerProxy::enumerateMediaDevicesForFrame):
        (WebKit::UserMediaPermissionRequestManagerProxy::createPermissionRequest): Deleted.
        * UIProcess/UserMediaPermissionRequestManagerProxy.h:
        * UIProcess/UserMediaPermissionRequestProxy.h:
        (WebKit::UserMediaPermissionRequestProxy::isPending const):
        (WebKit::UserMediaPermissionRequestProxy::setEligibleVideoDeviceUIDs):
        (WebKit::UserMediaPermissionRequestProxy::setEligibleAudioDeviceUIDs):
        (WebKit::UserMediaPermissionRequestProxy::hasAudioDevice const):
        (WebKit::UserMediaPermissionRequestProxy::hasVideoDevice const):
        (WebKit::UserMediaPermissionRequestProxy::hasPersistentAccess const):
        (WebKit::UserMediaPermissionRequestProxy::setHasPersistentAccess):
        (WebKit::UserMediaPermissionRequestProxy::userMediaID const):
        (WebKit::UserMediaPermissionRequestProxy::topLevelDocumentSecurityOrigin const):
        (WebKit::UserMediaPermissionRequestProxy::userMediaDocumentSecurityOrigin const):
        (WebKit::UserMediaPermissionRequestProxy::userRequest const):
        (WebKit::UserMediaPermissionRequestProxy::setDeviceIdentifierHashSalt):
        (WebKit::UserMediaPermissionRequestProxy::deviceIdentifierHashSalt const):
        (WebKit::UserMediaPermissionRequestProxy::audioDevice const):
        (WebKit::UserMediaPermissionRequestProxy::videoDevice const):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::requestUserMediaPermissionForFrame):
        * UIProcess/WebPageProxy.h:

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

        [iOS] [WK2] Modernize autocorrection context code
        https://bugs.webkit.org/show_bug.cgi?id=194373

        Reviewed by Tim Horton.

        * Shared/ios/WebAutocorrectionContext.h: Added.
        (WebKit::WebAutocorrectionContext::encode const):
        (WebKit::WebAutocorrectionContext::decode):

        Introduce a WebAutocorrectionContext struct that encapsulates the individual pieces of autocorrection context.
        Change to use this instead of a long list of arguments when propagating autocorrection context information over
        IPC.

        * UIProcess/AutoCorrectionCallback.h:
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView requestAutocorrectionContextWithCompletionHandler:]):
        (+[WKAutocorrectionContext autocorrectionContextWithContext:]):
        (+[WKAutocorrectionContext autocorrectionContextWithData:markedText:selectedText:afterText:selectedRangeInMarkedText:]): Deleted.

        Change this constructor to take an entire WebAutocorrectionContext.

        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::autocorrectionContextCallback):
        (WebKit::WebPageProxy::requestAutocorrectionContext):
        (WebKit::WebPageProxy::autocorrectionContextSync):
        (WebKit::WebPageProxy::getAutocorrectionContext): Deleted.
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:

        Use Delayed instead of LegacySync.

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

        Renamed from computeAutocorrectionContext. This is now a private method on WebPage that uses the focused or main
        frame to compute and return a WebAutocorrectionContext.

        (WebKit::WebPage::requestAutocorrectionContext):
        (WebKit::WebPage::autocorrectionContextSync):

        Renamed getAutocorrectionContext to autocorrectionContextSync.

        (WebKit::computeAutocorrectionContext): Deleted.
        (WebKit::WebPage::getAutocorrectionContext): Deleted.

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

        Simplify applyConstraints callbacks
        https://bugs.webkit.org/show_bug.cgi?id=194297

        Reviewed by Eric Carlson.

        * UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
        (WebKit::UserMediaCaptureManagerProxy::applyConstraints):
        * WebProcess/cocoa/UserMediaCaptureManager.cpp:
        (WebKit::UserMediaCaptureManager::Source::applyConstraintsSucceeded):
        (WebKit::UserMediaCaptureManager::Source::applyConstraintsFailed):
        (WebKit::UserMediaCaptureManager::applyConstraintsFailed):
        * WebProcess/cocoa/UserMediaCaptureManager.h:

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

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

        Reviewed by Per Arne Vollan.

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

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

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

        Reviewed by Per Arne Vollan.

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

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

        Rename the TAKE_DOWNLOAD_ASSERTION macro.

        Rubberstamped by Andy Estes.

        * NetworkProcess/Downloads/DownloadMap.cpp:
        * NetworkProcess/Downloads/DownloadMap.h:

2019-02-07  Keith Rollin  <krollin@apple.com>

        Fix XCBuild issue related to codesigning WebContent process
        https://bugs.webkit.org/show_bug.cgi?id=193799
        <rdar://problem/47533890>

        Reviewed by Brent Fulgham.

        Building with XCBuild enabled results in the error message "cannot
        read entitlement data" when trying to codesign the macOS XPC
        processes. The reason for this error message is that there is a build
        step that deletes any previous "stale" generated .xcent file before
        building up a new one. With XCBuild enabled, the build steps got
        re-ordered, such that the step that deletes this file could get
        executed after the steps that build up the file. The built-up set of
        entitlements is now gone, and the build process fails when `codesign`
        tries to access it.

        The apparent quick-fix to this problem -- of tweaking dependencies so
        that the build steps execute in the desired order -- wouldn't work
        with XCBuild. Establishing these dependencies would require both
        having multiple build phases produce the same .xcent file as output,
        as well as a build phase that has this file as an input and an output.
        XCBuild either forbids or frowns upon these configurations.

        Ultimately, the solution that worked was to take over complete control
        of the codesigning process. This means (a) not specifying a base
        .entitlements file that XCode uses to start with (and which was
        subsequently altered via custom build scripts), (b) not letting XCode
        automatically and silently inject a 'get-task-all' entitlement used to
        facilitate debugging (we now add that entitlement by hand), and (c)
        building up all of our entitlements by hand via a single custom
        script. Because of the addition of this custom script, many other
        scripts and entitlements files could now be removed.

        * Configurations/BaseXPCService.xcconfig:
        * Configurations/Databases-iOS.entitlements: Removed.
        * Configurations/Network-OSX-restricted.entitlements: Removed.
        * Configurations/Network-OSX-sandbox.entitlements: Removed.
        * Configurations/Network-OSX.entitlements: Removed.
        * Configurations/NetworkService.xcconfig:
        * Configurations/PluginService.64.xcconfig:
        * Configurations/PluginService.entitlements: Removed.
        * Configurations/WebContent-OSX-sandbox.entitlements: Removed.
        * Configurations/WebContent-OSX.entitlements: Removed.
        * Configurations/WebContent-or-Plugin-OSX-restricted.entitlements: Removed.
        * Configurations/WebContentService.xcconfig:
        * Scripts/copy-webcontent-resources-to-private-headers.sh:
        * Scripts/process-entitlements.sh: Added.
        * Scripts/process-network-sandbox-entitlements.sh: Removed.
        * Scripts/process-webcontent-or-plugin-entitlements.sh: Removed.
        * Scripts/process-webcontent-sandbox-entitlements.sh: Removed.
        * WebKit.xcodeproj/project.pbxproj:

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

        Fix internal build after r241127
        https://bugs.webkit.org/show_bug.cgi?id=191394

        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextControllerPrivate.h:
        Add some (un)availability macros.

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

        Make to clear sources from UserMediaCaptureManagerProxy and UserMediaCaptureManager when no longer needed
        https://bugs.webkit.org/show_bug.cgi?id=194312

        Reviewed by Eric Carlson.

        Sources in UserMediaCaptureManager and Proxy are never removed once added to their HashMap.
        Use the 'ended' mechanism to do the clean-up on WebProcess side.
        As part of this clean-up, send IPC to UIProcess to do clean-up on proxy side.
        On WebProcess crash case, clean-up the proxy as well.

        * UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
        (WebKit::UserMediaCaptureManagerProxy::createMediaSourceForCaptureDeviceWithConstraints):
        (WebKit::UserMediaCaptureManagerProxy::end):
        (WebKit::UserMediaCaptureManagerProxy::clear):
        * UIProcess/Cocoa/UserMediaCaptureManagerProxy.h:
        * UIProcess/Cocoa/UserMediaCaptureManagerProxy.messages.in:
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::processDidTerminateOrFailedToLaunch):
        * WebProcess/cocoa/UserMediaCaptureManager.cpp:
        (WebKit::UserMediaCaptureManager::sourceEnded):
        * WebProcess/cocoa/UserMediaCaptureManager.h:

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

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

        Reviewed by Tim Horton.

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

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

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

        Mark DisplayLink as fast allocated
        https://bugs.webkit.org/show_bug.cgi?id=194400

        Reviewed by Geoffrey Garen.

        * UIProcess/mac/DisplayLink.h:

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

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

        Reviewed by Alex Christensen.

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

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

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

        Deprecate WKBundlePageSetDefersLoading
        https://bugs.webkit.org/show_bug.cgi?id=191394

        Reviewed by Dean Jackson.

        * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
        (WKBundlePageSetDefersLoading):
        * WebProcess/InjectedBundle/API/c/WKBundlePagePrivate.h:
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:
        (-[WKWebProcessPlugInBrowserContextController _defersLoading]):
        (-[WKWebProcessPlugInBrowserContextController _setDefersLoading:]):
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextControllerPrivate.h:

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

        Digital crown should scroll safe browsing warning on watchOS
        https://bugs.webkit.org/show_bug.cgi?id=194363
        <rdar://problem/47348124>

        Reviewed by Wenson Hsieh.

        * UIProcess/Cocoa/WKSafeBrowsingWarning.h:
        * UIProcess/Cocoa/WKSafeBrowsingWarning.mm:
        (-[WKSafeBrowsingWarning initWithFrame:safeBrowsingWarning:completionHandler:]):
        (-[WKSafeBrowsingWarning addContent]):

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

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

        Reviewed by Geoffrey Garen.

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

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

2019-02-07  Miguel Gomez  <magomez@igalia.com>

        [WPE] Implement GStreamer based holepunch
        https://bugs.webkit.org/show_bug.cgi?id=193715

        Reviewed by Xabier Rodriguez-Calvar.

        Add a new parameter to the calls of TextureMapper::drawSolidColor().

        * Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:
        (WebKit::CoordinatedGraphicsScene::paintToCurrentGLContext):

2019-02-06  Benjamin Poulain  <benjamin@webkit.org>

        Unreviewed, rolling out r240759 and r240944.

        Some timer uses are done off the main thread, WebCore::Timer
        cannot be used

        Reverted changesets:

        "<rdar://problem/47570443> Responsiveness timers are too
        expensive for frequent events"
        https://bugs.webkit.org/show_bug.cgi?id=194003
        https://trac.webkit.org/changeset/240759

        "Use deferrable timer to restart the Responsiveness Timer on
        each wheel event"
        https://bugs.webkit.org/show_bug.cgi?id=194135
        https://trac.webkit.org/changeset/240944

2019-02-06  chris fleizach  <cfleizach@apple.com>

        AX:  com.apple.WebKit.WebContent at WebKit: -[WKAccessibilityWebPageObjectBase axObjectCache]
        https://bugs.webkit.org/show_bug.cgi?id=194306
        <rdar://problem/47764549>

        Reviewed by Zalan Bujtas.

        Check the page reference is still valid.
        Modernize code in this area.

        * WebProcess/WebPage/mac/WKAccessibilityWebPageObjectBase.mm:

2019-02-06  Daniel Bates  <dabates@apple.com>

        Move toNSEventModifierFlags() and toNSButtonNumber() to WebEventFactory.mm
        https://bugs.webkit.org/show_bug.cgi?id=194321

        Reviewed by Jer Noble.

        Move some code to WebEventFactory so that it can be shared by both WKNavigationAction.mm
        and UIDelegate.mm among other benefits.

        * Shared/mac/WebEventFactory.h:
        * Shared/mac/WebEventFactory.mm:
        (WebKit::WebEventFactory::toNSEventModifierFlags):
        (WebKit::WebEventFactory::toNSButtonNumber):
        * UIProcess/API/Cocoa/WKNavigationAction.mm:
        (-[WKNavigationAction modifierFlags]):
        (-[WKNavigationAction buttonNumber]):
        (toNSEventModifierFlags): Deleted.
        (toNSButtonNumber): Deleted.
        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::UIDelegate::UIClient::mouseDidMoveOverElement):
        (WebKit::toNSEventModifierFlags): Deleted.

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

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

        Reviewed by Alex Christensen.

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

2019-02-06  Keith Rollin  <krollin@apple.com>

        Really enable the automatic checking and regenerations of .xcfilelists during builds
        https://bugs.webkit.org/show_bug.cgi?id=194357
        <rdar://problem/47861231>

        Reviewed by Chris Dumez.

        Bug 194124 was supposed to enable the automatic checking and
        regenerating of .xcfilelist files during the build. While related
        changes were included in that patch, the change to actually enable the
        operation somehow was omitted. This patch actually enables the
        operation. The check-xcfilelist.sh scripts now check
        WK_DISABLE_CHECK_XCFILELISTS, and if it's "1", opts-out the developer
        from the checking.

        * Scripts/check-xcfilelists.sh:

2019-02-06  John Wilander  <wilander@apple.com>

        Forward Ad Click Attribution data from HTMLAnchorElement::handleClick() to WebKit::NavigationActionData
        https://bugs.webkit.org/show_bug.cgi?id=194325
        <rdar://problem/47840283>

        Reviewed by Chris Dumez.

        * Shared/NavigationActionData.cpp:
        (WebKit::NavigationActionData::encode const):
        (WebKit::NavigationActionData::decode):
        * Shared/NavigationActionData.h:
            Now holds an optional WebCore::AdClickAttribution object.

2019-02-06  Daniel Bates  <dabates@apple.com>

        Fix the Apple Internal build. See <rdar://problem/47860943> for more details.

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

2019-02-06  Daniel Bates  <dabates@apple.com>

        Standardize on ControlKey instead of CtrlKey
        https://bugs.webkit.org/show_bug.cgi?id=194317

        Reviewed by Tim Horton.

        * Shared/WebEventConversion.cpp:
        (WebKit::WebKit2PlatformMouseEvent::WebKit2PlatformMouseEvent):
        (WebKit::WebKit2PlatformWheelEvent::WebKit2PlatformWheelEvent):
        (WebKit::WebKit2PlatformKeyboardEvent::WebKit2PlatformKeyboardEvent):
        (WebKit::WebKit2PlatformTouchEvent::WebKit2PlatformTouchEvent):
        (WebKit::WebKit2PlatformGestureEvent::WebKit2PlatformGestureEvent):
        * WebProcess/WebCoreSupport/gtk/WebEditorClientGtk.cpp:
        (WebKit::WebEditorClient::handleKeyboardEvent):
        * WebProcess/WebCoreSupport/wpe/WebEditorClientWPE.cpp:
        (WebKit::handleKeyPress):

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

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

        Unreviewed performance fix.

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

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

        REGRESSION(r240785): [SOUP] Broke cookie persistent storage
        https://bugs.webkit.org/show_bug.cgi?id=194209

        Reviewed by Carlos Garcia Campos.

        I missed a spot when moving the persistent storage parameters from NetworkProcess to
        NetworkSession. They have to be initialized separately for the default session.

        * UIProcess/soup/WebProcessPoolSoup.cpp:
        (WebKit::WebProcessPool::platformInitializeNetworkProcess):

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

        Stop using blobRegistry in NetworkProcess
        https://bugs.webkit.org/show_bug.cgi?id=194027

        Reviewed by Youenn Fablet.

        * NetworkProcess/Downloads/DownloadManager.cpp:
        (WebKit::DownloadManager::startDownload):
        * NetworkProcess/Downloads/PendingDownload.cpp:
        (WebKit::PendingDownload::PendingDownload):
        * NetworkProcess/Downloads/PendingDownload.h:
        * NetworkProcess/FileAPI/NetworkBlobRegistry.cpp:
        (WebKit::NetworkBlobRegistry::registerFileBlobURL):
        (WebKit::NetworkBlobRegistry::registerBlobURL):
        (WebKit::NetworkBlobRegistry::registerBlobURLOptionallyFileBacked):
        (WebKit::NetworkBlobRegistry::registerBlobURLForSlice):
        (WebKit::NetworkBlobRegistry::unregisterBlobURL):
        (WebKit::NetworkBlobRegistry::blobSize):
        (WebKit::NetworkBlobRegistry::writeBlobsToTemporaryFiles):
        (WebKit::NetworkBlobRegistry::writeBlobToFilePath):
        (WebKit::NetworkBlobRegistry::connectionToWebProcessDidClose):
        (WebKit::NetworkBlobRegistry::filesInBlob):
        (WebKit::NetworkBlobRegistry::singleton): Deleted.
        * NetworkProcess/FileAPI/NetworkBlobRegistry.h:
        (WebKit::NetworkBlobRegistry::blobRegistry):
        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::didClose):
        (WebKit::NetworkConnectionToWebProcess::resolveBlobReferences):
        (WebKit::NetworkConnectionToWebProcess::scheduleResourceLoad):
        (WebKit::NetworkConnectionToWebProcess::performSynchronousLoad):
        (WebKit::NetworkConnectionToWebProcess::loadPing):
        (WebKit::NetworkConnectionToWebProcess::preconnectTo):
        (WebKit::NetworkConnectionToWebProcess::registerFileBlobURL):
        (WebKit::NetworkConnectionToWebProcess::registerBlobURL):
        (WebKit::NetworkConnectionToWebProcess::registerBlobURLFromURL):
        (WebKit::NetworkConnectionToWebProcess::registerBlobURLOptionallyFileBacked):
        (WebKit::NetworkConnectionToWebProcess::registerBlobURLForSlice):
        (WebKit::NetworkConnectionToWebProcess::unregisterBlobURL):
        (WebKit::NetworkConnectionToWebProcess::blobSize):
        (WebKit::NetworkConnectionToWebProcess::writeBlobsToTemporaryFiles):
        (WebKit::NetworkConnectionToWebProcess::filesInBlob):
        (WebKit::NetworkConnectionToWebProcess::blobRegistry):
        * NetworkProcess/NetworkConnectionToWebProcess.h:
        * NetworkProcess/NetworkDataTask.cpp:
        (WebKit::NetworkDataTask::create):
        * NetworkProcess/NetworkDataTaskBlob.cpp:
        (WebKit::NetworkDataTaskBlob::NetworkDataTaskBlob):
        * NetworkProcess/NetworkDataTaskBlob.h:
        * NetworkProcess/NetworkLoad.cpp:
        (WebKit::NetworkLoad::NetworkLoad):
        (WebKit::NetworkLoad::initialize):
        * NetworkProcess/NetworkLoad.h:
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::NetworkProcess):
        (WebKit::NetworkProcess::removeNetworkConnectionToWebProcess):
        * NetworkProcess/NetworkProcess.h:
        (WebKit::NetworkProcess::networkBlobRegistry):
        * NetworkProcess/NetworkProcessPlatformStrategies.cpp:
        (WebKit::NetworkProcessPlatformStrategies::createBlobRegistry):
        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::m_shouldCaptureExtraNetworkLoadMetrics):
        (WebKit::NetworkResourceLoader::startNetworkLoad):
        * NetworkProcess/PreconnectTask.cpp:
        * NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp:
        (WebKit::NetworkCache::SpeculativeLoad::SpeculativeLoad):

2019-02-05  Daniel Bates  <dabates@apple.com>

        Fix a typo in r241006. Substitute Modifier for Modifiers.

        * Shared/mac/NativeWebGestureEventMac.mm:
        (WebKit::NativeWebGestureEvent::NativeWebGestureEvent):

2019-02-05  Daniel Bates  <dabates@apple.com>

        Attempt to fix the build following r241000
        (https://bugs.webkit.org/show_bug.cgi?id=194241)

        Substitute OptionSet<WebEvent::Modifier> for Modifiers.

        * Shared/mac/NativeWebGestureEventMac.mm:
        (WebKit::NativeWebGestureEvent::NativeWebGestureEvent):
        * Shared/mac/WebGestureEvent.h:
        (WebKit::WebGestureEvent::WebGestureEvent):

2019-02-05  Truitt Savell  <tsavell@apple.com>

        Unreviewed, rolling out r240984.

        Revision casued two API timeouts

        Reverted changeset:

        "Stop using blobRegistry in NetworkProcess"
        https://bugs.webkit.org/show_bug.cgi?id=194027
        https://trac.webkit.org/changeset/240984

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

        UserMediaPermissionRequestManagerProxy lambdas should check for 'this' being valid
        https://bugs.webkit.org/show_bug.cgi?id=194246

        Reviewed by Eric Carlson.

        With PSON enabled, the manager proxy can be destroyed.
        It is thus important for its callbacks to check for 'this' to be valid.

        * UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
        (WebKit::UserMediaPermissionRequestManagerProxy::captureDevicesChanged):
        (WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame):
        (WebKit::UserMediaPermissionRequestManagerProxy::enumerateMediaDevicesForFrame):

2019-02-05  Daniel Bates  <dabates@apple.com>

        Attempt to fix the build following r241000
        (https://bugs.webkit.org/show_bug.cgi?id=194241)

        Substitute WebEvent::Modifier::CapsLockKey for WebEvent::CapsLockKey.

        * Shared/gtk/WebEventFactory.cpp:
        (WebKit::modifiersForEvent):
        * Shared/mac/WebEventFactory.mm:
        (WebKit::modifiersForEvent):
        * UIProcess/API/Cocoa/WKNavigationAction.mm:
        (toNSEventModifierFlags):
        * UIProcess/Automation/WebAutomationSession.cpp:
        (WebKit::protocolModifierToWebEventModifier):
        * UIProcess/Automation/gtk/WebAutomationSessionGtk.cpp:
        (WebKit::modifiersToEventState):
        * UIProcess/Automation/mac/WebAutomationSessionMac.mm:
        (WebKit::WebAutomationSession::platformSimulateMouseInteraction):
        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::toNSEventModifierFlags):

2019-02-05  Daniel Bates  <dabates@apple.com>

        Make WebEvent::Modifiers an OptionSet
        https://bugs.webkit.org/show_bug.cgi?id=194241

        Reviewed by Simon Fraser.

        Use an OptionSet to represent the bitmask of keyboard modifier flags. This improves type safety
        and makes debugging more enjoyable because our LLDB pretty-printers have built-in support for
        OptionSet.

        While I am at it, make WebEvent::Modifier an enum class. It is currently an enum. This makes
        this enum more closely match WebCore::PlatformEvent::Modifier.

        * Shared/API/c/WKSharedAPICast.h:
        (WebKit::toAPI):
        * Shared/NavigationActionData.cpp:
        (WebKit::NavigationActionData::encode const):
        (WebKit::NavigationActionData::decode):
        * Shared/NavigationActionData.h:
        * Shared/WebEvent.cpp:
        (WebKit::WebEvent::WebEvent):
        * Shared/WebEvent.h:
        (WebKit::WebEvent::shiftKey const):
        (WebKit::WebEvent::controlKey const):
        (WebKit::WebEvent::altKey const):
        (WebKit::WebEvent::metaKey const):
        (WebKit::WebEvent::capsLockKey const):
        (WebKit::WebEvent::modifiers const):
        (WebKit::WebTouchEvent::WebTouchEvent):
        * Shared/WebEventConversion.cpp:
        (WebKit::WebKit2PlatformMouseEvent::WebKit2PlatformMouseEvent):
        * Shared/WebKeyboardEvent.cpp:
        (WebKit::WebKeyboardEvent::WebKeyboardEvent):
        * Shared/WebMouseEvent.cpp:
        (WebKit::WebMouseEvent::WebMouseEvent):
        * Shared/WebTouchEvent.cpp:
        (WebKit::WebTouchEvent::WebTouchEvent):
        * Shared/WebWheelEvent.cpp:
        (WebKit::WebWheelEvent::WebWheelEvent):
        * Shared/gtk/WebEventFactory.cpp:
        (WebKit::modifiersForEvent):
        * Shared/ios/NativeWebTouchEventIOS.mm:
        (WebKit::NativeWebTouchEvent::NativeWebTouchEvent):
        * Shared/ios/WebIOSEventFactory.mm:
        (modifiersForEvent):
        (WebIOSEventFactory::createWebKeyboardEvent):
        (WebIOSEventFactory::createWebMouseEvent):
        * Shared/libwpe/WebEventFactory.cpp:
        (WebKit::modifiersForEventModifiers):
        (WebKit::WebEventFactory::createWebWheelEvent):
        (WebKit::WebEventFactory::createWebTouchEvent):
        * Shared/mac/WebEventFactory.mm:
        (WebKit::modifiersForEvent):
        (WebKit::WebEventFactory::createWebMouseEvent):
        (WebKit::WebEventFactory::createWebWheelEvent):
        (WebKit::WebEventFactory::createWebKeyboardEvent):
        * Shared/win/WebEventFactory.cpp:
        (WebKit::modifiersForEvent):
        (WebKit::modifiersForCurrentKeyState):
        (WebKit::WebEventFactory::createWebMouseEvent):
        (WebKit::WebEventFactory::createWebWheelEvent):
        (WebKit::WebEventFactory::createWebKeyboardEvent):
        * UIProcess/API/APINavigationAction.h:
        * UIProcess/API/APIUIClient.h:
        (API::UIClient::mouseDidMoveOverElement):
        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetPageUIClient):
        * UIProcess/API/Cocoa/WKNavigationAction.mm:
        (toNSEventModifierFlags):
        * UIProcess/API/glib/WebKitPrivate.cpp:
        (toPlatformModifiers):
        * UIProcess/API/glib/WebKitPrivate.h:
        * UIProcess/API/glib/WebKitUIClient.cpp:
        * UIProcess/API/glib/WebKitWebView.cpp:
        (webkitWebViewMouseTargetChanged):
        * UIProcess/API/glib/WebKitWebViewPrivate.h:
        * UIProcess/Automation/WebAutomationSession.cpp:
        (WebKit::WebAutomationSession::simulateMouseInteraction):
        (WebKit::protocolModifierToWebEventModifier):
        (WebKit::WebAutomationSession::performMouseInteraction):
        * UIProcess/Automation/WebAutomationSession.h:
        * UIProcess/Automation/gtk/WebAutomationSessionGtk.cpp:
        (WebKit::modifiersToEventState):
        (WebKit::WebAutomationSession::platformSimulateMouseInteraction):
        * UIProcess/Automation/mac/WebAutomationSessionMac.mm:
        (WebKit::WebAutomationSession::platformSimulateMouseInteraction):
        * UIProcess/Automation/wpe/WebAutomationSessionWPE.cpp:
        (WebKit::modifiersToEventState):
        (WebKit::WebAutomationSession::platformSimulateMouseInteraction):
        * UIProcess/Cocoa/UIDelegate.h:
        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::toNSEventModifierFlags):
        (WebKit::UIDelegate::UIClient::mouseDidMoveOverElement):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::mouseDidMoveOverElement):
        * WebProcess/InjectedBundle/API/APIInjectedBundlePageUIClient.h:
        (API::InjectedBundle::PageUIClient::mouseDidMoveOverElement):
        * WebProcess/InjectedBundle/InjectedBundleNavigationAction.cpp:
        (WebKit::InjectedBundleNavigationAction::modifiersForNavigationAction):
        * WebProcess/InjectedBundle/InjectedBundleNavigationAction.h:
        (WebKit::InjectedBundleNavigationAction::modifiers const):
        * WebProcess/InjectedBundle/InjectedBundlePageUIClient.cpp:
        (WebKit::InjectedBundlePageUIClient::mouseDidMoveOverElement):
        * WebProcess/InjectedBundle/InjectedBundlePageUIClient.h:
        * WebProcess/Plugins/PDF/PDFPlugin.mm:
        (WebKit::PDFPlugin::showContextMenuAtPoint):
        * WebProcess/Plugins/PluginView.cpp:
        (WebKit::PluginView::createWebEvent const):
        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::mouseDidMoveOverElement):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::simulateMouseDown):
        (WebKit::WebPage::simulateMouseUp):
        (WebKit::WebPage::simulateMouseMotion):

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

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

        Reviewed by Beth Dakin.

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

2019-02-05  Keith Rollin  <krollin@apple.com>

        Enable the automatic checking and regenerations of .xcfilelists during builds
        https://bugs.webkit.org/show_bug.cgi?id=194124
        <rdar://problem/47721277>

        Reviewed by Tim Horton.

        Bug 193790 add a facility for checking -- during build time -- that
        any needed .xcfilelist files are up-to-date and for updating them if
        they are not. This facility was initially opt-in by setting
        WK_ENABLE_CHECK_XCFILELISTS until other pieces were in place and until
        the process seemed robust. Its now time to enable this facility and
        make it opt-out. If there is a need to disable this facility, set and
        export WK_DISABLE_CHECK_XCFILELISTS=1 in your environment before
        running `make` or `build-webkit`, or before running Xcode from the
        command line.

        Additionally, remove the step that generates a list of source files
        going into the UnifiedSources build step. It's only necessarily to
        specify Sources.txt and SourcesCocoa.txt as inputs.

        * UnifiedSources-input.xcfilelist: Removed.
        * WebKit.xcodeproj/project.pbxproj:

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

        Add a new DownloadMap type that manages taking an assertion automatically.
        https://bugs.webkit.org/show_bug.cgi?id=194294

        Reviewed by Alex Christensen.

        If we don't need the download assertion, we use a vanilla HashMap like today.
        If we need the download assertion, we use the new DownloadMap class instead.

        The new DownloadMap is a wrapper around a HashMap that also creates/destroys the assertion as needed.

        * NetworkProcess/Downloads/DownloadManager.cpp:
        (WebKit::DownloadManager::dataTaskBecameDownloadTask):
        (WebKit::DownloadManager::downloadFinished):
        * NetworkProcess/Downloads/DownloadManager.h:

        * NetworkProcess/Downloads/DownloadMap.cpp: Added.
        (WebKit::DownloadMap::get const):
        (WebKit::DownloadMap::isEmpty const):
        (WebKit::DownloadMap::size const):
        (WebKit::DownloadMap::contains const):
        (WebKit::DownloadMap::add):
        (WebKit::DownloadMap::remove):
        * NetworkProcess/Downloads/DownloadMap.h: Added.

        * Sources.txt:

        * UIProcess/ios/ProcessAssertionIOS.mm:
        (WebKit::ProcessAssertion::ProcessAssertion):

        * WebKit.xcodeproj/project.pbxproj:

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

        Fix iOS simulator build after r240954

        Unreviewed.

        * UIProcess/ios/ProcessAssertionIOS.mm:
        (WebKit::ProcessAssertion::ProcessAssertion): Implement the new constructor.

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

        Stop using blobRegistry in NetworkProcess
        https://bugs.webkit.org/show_bug.cgi?id=194027

        Reviewed by Youenn Fablet.

        * NetworkProcess/Downloads/DownloadManager.cpp:
        (WebKit::DownloadManager::startDownload):
        * NetworkProcess/Downloads/PendingDownload.cpp:
        (WebKit::PendingDownload::PendingDownload):
        * NetworkProcess/Downloads/PendingDownload.h:
        * NetworkProcess/FileAPI/NetworkBlobRegistry.cpp:
        (WebKit::NetworkBlobRegistry::registerFileBlobURL):
        (WebKit::NetworkBlobRegistry::registerBlobURL):
        (WebKit::NetworkBlobRegistry::registerBlobURLOptionallyFileBacked):
        (WebKit::NetworkBlobRegistry::registerBlobURLForSlice):
        (WebKit::NetworkBlobRegistry::unregisterBlobURL):
        (WebKit::NetworkBlobRegistry::blobSize):
        (WebKit::NetworkBlobRegistry::writeBlobsToTemporaryFiles):
        (WebKit::NetworkBlobRegistry::writeBlobToFilePath):
        (WebKit::NetworkBlobRegistry::connectionToWebProcessDidClose):
        (WebKit::NetworkBlobRegistry::filesInBlob):
        (WebKit::NetworkBlobRegistry::singleton): Deleted.
        * NetworkProcess/FileAPI/NetworkBlobRegistry.h:
        (WebKit::NetworkBlobRegistry::blobRegistry):
        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::didClose):
        (WebKit::NetworkConnectionToWebProcess::resolveBlobReferences):
        (WebKit::NetworkConnectionToWebProcess::scheduleResourceLoad):
        (WebKit::NetworkConnectionToWebProcess::performSynchronousLoad):
        (WebKit::NetworkConnectionToWebProcess::loadPing):
        (WebKit::NetworkConnectionToWebProcess::preconnectTo):
        (WebKit::NetworkConnectionToWebProcess::registerFileBlobURL):
        (WebKit::NetworkConnectionToWebProcess::registerBlobURL):
        (WebKit::NetworkConnectionToWebProcess::registerBlobURLFromURL):
        (WebKit::NetworkConnectionToWebProcess::registerBlobURLOptionallyFileBacked):
        (WebKit::NetworkConnectionToWebProcess::registerBlobURLForSlice):
        (WebKit::NetworkConnectionToWebProcess::unregisterBlobURL):
        (WebKit::NetworkConnectionToWebProcess::blobSize):
        (WebKit::NetworkConnectionToWebProcess::writeBlobsToTemporaryFiles):
        (WebKit::NetworkConnectionToWebProcess::filesInBlob):
        (WebKit::NetworkConnectionToWebProcess::blobRegistry):
        * NetworkProcess/NetworkConnectionToWebProcess.h:
        * NetworkProcess/NetworkDataTask.cpp:
        (WebKit::NetworkDataTask::create):
        * NetworkProcess/NetworkDataTaskBlob.cpp:
        (WebKit::NetworkDataTaskBlob::NetworkDataTaskBlob):
        * NetworkProcess/NetworkDataTaskBlob.h:
        * NetworkProcess/NetworkLoad.cpp:
        (WebKit::NetworkLoad::NetworkLoad):
        (WebKit::NetworkLoad::initialize):
        * NetworkProcess/NetworkLoad.h:
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::NetworkProcess):
        (WebKit::NetworkProcess::removeNetworkConnectionToWebProcess):
        * NetworkProcess/NetworkProcess.h:
        (WebKit::NetworkProcess::networkBlobRegistry):
        * NetworkProcess/NetworkProcessPlatformStrategies.cpp:
        (WebKit::NetworkProcessPlatformStrategies::createBlobRegistry):
        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::m_shouldCaptureExtraNetworkLoadMetrics):
        (WebKit::NetworkResourceLoader::startNetworkLoad):
        * NetworkProcess/PreconnectTask.cpp:
        * NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp:
        (WebKit::NetworkCache::SpeculativeLoad::SpeculativeLoad):

2019-02-05  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r240742.

        Causes crashes on iOS simulator.

        Reverted changeset:

        "[iOS] Keyups for non-modifier keys identified as "Dead" when
        not focused in a content-editable element"
        https://bugs.webkit.org/show_bug.cgi?id=192824
        https://trac.webkit.org/changeset/240742

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

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

        Reviewed by Ryosuke Niwa.

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

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

        Add Networking Daemon skeleton
        https://bugs.webkit.org/show_bug.cgi?id=194278

        Reviewed by Zalan Bujtas.

        Daemon skeletons? This is spooky stuff.

        * NetworkProcess/EntryPoint/Cocoa/Daemon/DaemonEntryPoint.h: Added.
        * NetworkProcess/EntryPoint/Cocoa/Daemon/DaemonEntryPoint.mm: Added.
        (WebKit::DaemonMain):
        * NetworkProcess/cocoa/NetworkDataTaskCocoa.h:
        * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
        (WebKit::NetworkDataTaskCocoa::restrictRequestReferrerToOriginIfNeeded):
        * Shared/API/Cocoa/WKMain.h:
        * Shared/API/Cocoa/WKMain.mm:
        (WKDaemonMain):
        * Shared/EntryPointUtilities/Cocoa/AuxiliaryProcessMain.cpp:
        (main):
        * SourcesCocoa.txt:
        * UnifiedSources-input.xcfilelist:
        * WebKit.xcodeproj/project.pbxproj:

2019-02-04  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Shrink size of VM by lazily allocating IsoSubspaces for non-common types
        https://bugs.webkit.org/show_bug.cgi?id=193993

        Reviewed by Keith Miller.

        * WebProcess/Plugins/Netscape/JSNPMethod.h:
        * WebProcess/Plugins/Netscape/JSNPObject.h:

2019-02-04  Simon Fraser  <simon.fraser@apple.com>

        Move some macOS/iOS scrolling code into the scrolling/cocoa directory
        https://bugs.webkit.org/show_bug.cgi?id=194245

        Reviewed by Zalan Bujtas.

        Use PLATFORM(MAC), not !PLATFORM(IOS_FAMILY).

        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:

2019-02-04  Ms2ger  <Ms2ger@igalia.com>

        [GTK][WPE] Need a function to convert internal URI to display ("pretty") URI
        https://bugs.webkit.org/show_bug.cgi?id=174816

        Reviewed by Michael Catanzaro.

        Add webkit_uri_for_display for GTK and WPE.

        * PlatformGTK.cmake:
        * PlatformWPE.cmake:
        * SourcesGTK.txt:
        * SourcesWPE.txt:
        * UIProcess/API/glib/WebKitURIUtilities.cpp: Added.
        (webkit_uri_for_display):
        * UIProcess/API/gtk/WebKitURIUtilities.h: Added.
        * UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt:
        * UIProcess/API/gtk/docs/webkit2gtk-docs.sgml:
        * UIProcess/API/gtk/webkit2.h:
        * UIProcess/API/wpe/WebKitURIUtilities.h: Added.
        * UIProcess/API/wpe/docs/wpe-0.1-sections.txt:
        * UIProcess/API/wpe/docs/wpe-docs.sgml:
        * UIProcess/API/wpe/webkit.h:

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

        Move XPCService main to a shared file calling a C function
        https://bugs.webkit.org/show_bug.cgi?id=194256

        Reviewed by Brady Eidson.

        This not only reduces a few kilobytes of duplicated binary from the XPCService executables,
        It will allow me to introduce a new kind of executable which will need to parse argv and call a different C function.
        This is similar to r236075 but more general.

        * Shared/API/Cocoa/WKMain.h: Added.
        * Shared/API/Cocoa/WKMain.mm: Added.
        (WKXPCServiceMain):
        * Shared/EntryPointUtilities/Cocoa/AuxiliaryProcessMain.cpp: Added.
        (main):
        * Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceMain.mm:
        (main): Deleted.
        * SourcesCocoa.txt:
        * WebKit.xcodeproj/project.pbxproj:

2019-02-04  Alex Christensen  <achristensen@webkit.org>

        Make MessageSender functions const
        https://bugs.webkit.org/show_bug.cgi?id=194247

        Reviewed by Brady Eidson.

        * NetworkProcess/Downloads/Download.cpp:
        (WebKit::Download::messageSenderConnection const):
        (WebKit::Download::messageSenderDestinationID const):
        (WebKit::Download::messageSenderConnection): Deleted.
        (WebKit::Download::messageSenderDestinationID): Deleted.
        * NetworkProcess/Downloads/Download.h:
        * NetworkProcess/Downloads/PendingDownload.cpp:
        (WebKit::PendingDownload::messageSenderConnection const):
        (WebKit::PendingDownload::messageSenderDestinationID const):
        (WebKit::PendingDownload::messageSenderConnection): Deleted.
        (WebKit::PendingDownload::messageSenderDestinationID): Deleted.
        * NetworkProcess/Downloads/PendingDownload.h:
        * NetworkProcess/IndexedDB/WebIDBConnectionToClient.cpp:
        (WebKit::WebIDBConnectionToClient::messageSenderConnection const):
        (WebKit::WebIDBConnectionToClient::messageSenderConnection): Deleted.
        * NetworkProcess/IndexedDB/WebIDBConnectionToClient.h:
        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::messageSenderConnection const):
        (WebKit::NetworkResourceLoader::messageSenderConnection): Deleted.
        * NetworkProcess/NetworkResourceLoader.h:
        * NetworkProcess/NetworkSocketStream.cpp:
        (WebKit::NetworkSocketStream::messageSenderConnection const):
        (WebKit::NetworkSocketStream::messageSenderDestinationID const):
        (WebKit::NetworkSocketStream::messageSenderConnection): Deleted.
        (WebKit::NetworkSocketStream::messageSenderDestinationID): Deleted.
        * NetworkProcess/NetworkSocketStream.h:
        * NetworkProcess/ServiceWorker/WebSWServerConnection.h:
        * NetworkProcess/ServiceWorker/WebSWServerToContextConnection.cpp:
        (WebKit::WebSWServerToContextConnection::messageSenderConnection const):
        (WebKit::WebSWServerToContextConnection::messageSenderDestinationID const):
        (WebKit::WebSWServerToContextConnection::messageSenderConnection): Deleted.
        (WebKit::WebSWServerToContextConnection::messageSenderDestinationID): Deleted.
        * NetworkProcess/ServiceWorker/WebSWServerToContextConnection.h:
        * Platform/IPC/MessageSender.h:
        * Shared/AuxiliaryProcess.cpp:
        (WebKit::AuxiliaryProcess::messageSenderConnection const):
        (WebKit::AuxiliaryProcess::messageSenderDestinationID const):
        (WebKit::AuxiliaryProcess::messageSenderConnection): Deleted.
        (WebKit::AuxiliaryProcess::messageSenderDestinationID): Deleted.
        * Shared/AuxiliaryProcess.h:
        * UIProcess/WebConnectionToWebProcess.cpp:
        (WebKit::WebConnectionToWebProcess::messageSenderConnection const):
        (WebKit::WebConnectionToWebProcess::messageSenderDestinationID const):
        (WebKit::WebConnectionToWebProcess::messageSenderConnection): Deleted.
        (WebKit::WebConnectionToWebProcess::messageSenderDestinationID): Deleted.
        * UIProcess/WebConnectionToWebProcess.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::messageSenderConnection const):
        (WebKit::WebPageProxy::messageSenderDestinationID const):
        (WebKit::WebPageProxy::messageSenderConnection): Deleted.
        (WebKit::WebPageProxy::messageSenderDestinationID): Deleted.
        * UIProcess/WebPageProxy.h:
        * WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp:
        (WebKit::WebIDBConnectionToServer::messageSenderConnection const):
        (WebKit::WebIDBConnectionToServer::messageSenderConnection): Deleted.
        * WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.h:
        * WebProcess/Network/WebResourceLoader.cpp:
        (WebKit::WebResourceLoader::messageSenderConnection const):
        (WebKit::WebResourceLoader::messageSenderDestinationID const):
        (WebKit::WebResourceLoader::messageSenderConnection): Deleted.
        (WebKit::WebResourceLoader::messageSenderDestinationID): Deleted.
        * WebProcess/Network/WebResourceLoader.h:
        * WebProcess/Network/WebSocketStream.cpp:
        (WebKit::WebSocketStream::messageSenderConnection const):
        (WebKit::WebSocketStream::messageSenderDestinationID const):
        (WebKit::WebSocketStream::messageSenderConnection): Deleted.
        (WebKit::WebSocketStream::messageSenderDestinationID): Deleted.
        * WebProcess/Network/WebSocketStream.h:
        * WebProcess/Storage/WebSWClientConnection.h:
        * WebProcess/WebConnectionToUIProcess.cpp:
        (WebKit::WebConnectionToUIProcess::messageSenderConnection const):
        (WebKit::WebConnectionToUIProcess::messageSenderDestinationID const):
        (WebKit::WebConnectionToUIProcess::messageSenderConnection): Deleted.
        (WebKit::WebConnectionToUIProcess::messageSenderDestinationID): Deleted.
        * WebProcess/WebConnectionToUIProcess.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::messageSenderConnection const):
        (WebKit::WebPage::messageSenderDestinationID const):
        (WebKit::WebPage::messageSenderConnection): Deleted.
        (WebKit::WebPage::messageSenderDestinationID): Deleted.
        * WebProcess/WebPage/WebPage.h:

2019-02-04  Brady Eidson  <beidson@apple.com>

        Take additional process assertion while downloading.
        <rdar://problem/47741356> and https://bugs.webkit.org/show_bug.cgi?id=194239

        Reviewed by Chris Dumez.

        When the first download starts, grab this new assertion.
        When the last download ends, release it.

        * Configurations/Network-iOS.entitlements:

        * NetworkProcess/Downloads/DownloadManager.cpp:
        (WebKit::DownloadManager::dataTaskBecameDownloadTask):
        (WebKit::DownloadManager::downloadFinished):
        * NetworkProcess/Downloads/DownloadManager.h:

        * Platform/spi/ios/AssertionServicesSPI.h:

        * UIProcess/ProcessAssertion.cpp:
        (WebKit::ProcessAssertion::ProcessAssertion):
        * UIProcess/ProcessAssertion.h:
        (WebKit::ProcessAssertion::ProcessAssertion):

        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::didSetAssertionState):

        * UIProcess/ios/ProcessAssertionIOS.mm:
        (WebKit::flagsForState):
        (WebKit::reasonForState):
        (WebKit::ProcessAssertion::ProcessAssertion):

2019-02-04  Said Abou-Hallawa  <said@apple.com>

        [CG] Enable setAdditionalSupportedImageTypes for WK1
        https://bugs.webkit.org/show_bug.cgi?id=194190

        Reviewed by Tim Horton.

        Move the function webCoreStringVectorFromNSStringArray from WebKit to
        WebCore so it can be used by both WebKit and WebKitLegacy.

        * Platform/mac/StringUtilities.h:
        * Platform/mac/StringUtilities.mm:
        (WebKit::webCoreStringVectorFromNSStringArray): Deleted.
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _initializeWithConfiguration:]):

2019-02-04  Benjamin Poulain  <benjamin@webkit.org>

        Use deferrable timer to restart the Responsiveness Timer on each wheel event
        https://bugs.webkit.org/show_bug.cgi?id=194135

        Reviewed by Simon Fraser.

        Simon Fraser suggested a neat improvement over my previous optimization
        of ResponsivenessTimer.

        Instead of reseting the deadline with every event, we can let the timer
        fire and add the missing time from the last start.

        I implemented that behavior in the new Deferrable Timer class and use
        it from ResponsivenessTimer.

        * NetworkProcess/watchos/NetworkProximityAssertion.h:
        * UIProcess/ResponsivenessTimer.h:
        * WebProcess/Plugins/PluginView.h:

2019-02-04  Simon Fraser  <simon.fraser@apple.com>

        PageOverlayController's layers should be created lazily
        https://bugs.webkit.org/show_bug.cgi?id=194199
        rdar://problem/46571593

        Reviewed by Tim Horton.
        
        Expose PageOverlayController::hasDocumentOverlays() and hasViewOverlays()
        and use them to only parent the overlay-hosting layers when necessary.

        For document overlays, RenderLayerCompositor::appendDocumentOverlayLayers() can
        simply do nothing if there are none. Updates are triggered via Page::installedPageOverlaysChanged(),
        which calls FrameView::setNeedsCompositingConfigurationUpdate() to trigger the root layer
        compositing updates that parents the layerWithDocumentOverlays().

        View overlays are added to the layer tree via the DrawingArea. When we go between having
        none and some view overlays, Page::installedPageOverlaysChanged() calls attachViewOverlayGraphicsLayer()
        on the ChromeClient, and the DrawingArea responds by calling updateRootLayers() and scheduling a
        compositing flush (this has to be done manually because view overlay layers are outside the
        subtree managed by RenderLayerCompositor).
        
        Now that GraphicsLayers are ref-counted, we can let the DrawingArea simply retain its m_viewOverlayRootLayer;
        there is no need for RenderLayerCompositor::attachRootLayer()/detachRootLayer() to do anything with view
        overlay layers. This implies that a page can navigate (new FrameView) and view overlays will persist, without
        having to be manually removed and re-added. We can also remove the Frame argument to attachViewOverlayGraphicsLayer().

        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::attachViewOverlayGraphicsLayer):
        * WebProcess/WebCoreSupport/WebChromeClient.h:
        * WebProcess/WebPage/AcceleratedDrawingArea.cpp:
        (WebKit::AcceleratedDrawingArea::attachViewOverlayGraphicsLayer):
        * WebProcess/WebPage/AcceleratedDrawingArea.h:
        * WebProcess/WebPage/DrawingArea.h:
        (WebKit::DrawingArea::attachViewOverlayGraphicsLayer):
        * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h:
        * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm:
        (WebKit::RemoteLayerTreeDrawingArea::attachViewOverlayGraphicsLayer):
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
        (WebKit::TiledCoreAnimationDrawingArea::attachViewOverlayGraphicsLayer):
        (WebKit::TiledCoreAnimationDrawingArea::mainFrameContentSizeChanged):

2019-02-04  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed, improve preprocessor guard
        https://bugs.webkit.org/show_bug.cgi?id=194166
        <rdar://problem/47694328>

        AC mode is only optional in GTK port. Requested by Zan.

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::updatePreferences):

2019-02-04  Sihui Liu  <sihui_liu@apple.com>

        IndexedDB: leak WebIDBConnectionToServer in layout tests
        https://bugs.webkit.org/show_bug.cgi?id=193688
        <rdar://problem/47353263>

        Reviewed by Geoffrey Garen.

        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::didClose):
        (WebKit::NetworkConnectionToWebProcess::establishIDBConnectionToServer):
        (WebKit::NetworkConnectionToWebProcess::removeIDBConnectionToServer): Deleted.
        * NetworkProcess/NetworkConnectionToWebProcess.h:
        * NetworkProcess/NetworkConnectionToWebProcess.messages.in:
        * WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp:
        (WebKit::WebIDBConnectionToServer::~WebIDBConnectionToServer):

2019-02-04  Antoine Quint  <graouts@apple.com>

        <rdar://problem/47788802>

        Unreviewed build fix.

        * Platform/spi/ios/UIKitSPI.h:

2019-02-04  Youenn Fablet  <youenn@apple.com>

        Capture state should be managed consistently when doing process swapping
        https://bugs.webkit.org/show_bug.cgi?id=194122
        <rdar://problem/47609293>

        Reviewed by Eric Carlson.

        When doing PSON, WebPageProxy::resetState is called.
        It resets the media state, but does not call the client delegates.
        Instead of directly updating the media state, call the routine used to update it so that client delegates are called.

        Covered by new API test and layout test.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _mediaCaptureState]):
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::resetState):
        (WebKit::WebPageProxy::isPlayingMediaDidChange):
        (WebKit::WebPageProxy::updatePlayingMediaDidChange):
        * UIProcess/WebPageProxy.h:

2019-02-04  Antoine Quint  <graouts@apple.com>

        Use a dedicated type instead of int32_t for pointer identifiers
        https://bugs.webkit.org/show_bug.cgi?id=194217

        Reviewed by Antti Koivisto.

        * Scripts/webkit/messages.py:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::cancelPointer):
        * UIProcess/WebPageProxy.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::cancelPointer):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:

2019-02-04  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed, avoid -Wswitch warnings introduced in r240880
        https://bugs.webkit.org/show_bug.cgi?id=193740
        <rdar://problem/47527267>

        * NetworkProcess/soup/NetworkDataTaskSoup.cpp:
        (WebKit::NetworkDataTaskSoup::dispatchDidReceiveResponse):

2019-02-04  Alexander Mikhaylenko  <exalm7659@gmail.com>

        [GTK] Allow pinch zoom on touchpad
        https://bugs.webkit.org/show_bug.cgi?id=194201

        Reviewed by Michael Catanzaro.

        Enable touchpad events for WebkitWebViewBase, then feed touchpad
        pinch events to GestureController.

        * UIProcess/API/gtk/WebKitWebViewBase.cpp:
        (webkitWebViewBaseRealize): Added GDK_TOUCHPAD_GESTURE_MASK to event mask.
        (webkitWebViewBaseEvent): Added.
        (webkit_web_view_base_class_init): Override event vfunc.

2019-02-04  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed, only force settings.acceleratedCompositingEnabled() to true for Cocoa ports
        https://bugs.webkit.org/show_bug.cgi?id=194166
        <rdar://problem/47694328>

        Accelerated compositing is broken for me at least. We're a long way from being able to force
        it.

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::updatePreferences):

2019-02-04  Abderrahim Kitouni  <akitouni@gnome.org>

        [GTK] Remove last python2 dependency from CMake build process
        https://bugs.webkit.org/show_bug.cgi?id=194218

        Reviewed by Michael Catanzaro.

        * InspectorGResources.cmake:

2019-02-04  Antti Koivisto  <antti@apple.com>

        Rename GraphicsLayer and PlatformCALayer type enum values to match "scroll container layer" convention
        https://bugs.webkit.org/show_bug.cgi?id=194215

        Reviewed by Frédéric Wang.

        * Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:
        (WebKit::RemoteLayerBackingStore::drawInContext):
        * UIProcess/RemoteLayerTree/RemoteLayerTreeHost.mm:
        (WebKit::RemoteLayerTreeHost::makeNode):
        * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeHostIOS.mm:
        (WebKit::RemoteLayerTreeHost::makeNode):

2019-02-03  Antti Koivisto  <antti@apple.com>

        [iOS] Tiles not created in large scrollable iframes
        https://bugs.webkit.org/show_bug.cgi?id=193665

        Reviewed by Simon Fraser.

        * UIProcess/RemoteLayerTree/ios/ScrollingTreeFrameScrollingNodeRemoteIOS.mm:
        (WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::commitStateBeforeChildren):
        * UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.mm:
        (WebKit::ScrollingTreeScrollingNodeDelegateIOS::commitStateBeforeChildren):

        We now use scrollContainerLayer consistently so remove the special cases.

2019-02-03  Fujii Hironori  <Hironori.Fujii@sony.com>

        [curl] [WebKit] Assertion failures of missing networkStorageSession for storage/indexeddb tests
        https://bugs.webkit.org/show_bug.cgi?id=194141

        Reviewed by Ross Kirsling.

        Implemented WebKit::NetworkProcess::switchToNewTestingSession and
        WebKit::NetworkProcess::ensureSession for curl port.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::switchToNewTestingSession):
        (WebKit::NetworkProcess::ensureSession):

2019-02-03  Simon Fraser  <simon.fraser@apple.com>

        Make setNeedsLayout on the root more explicitly about triggering its side-effects
        https://bugs.webkit.org/show_bug.cgi?id=194198

        Reviewed by Antti Koivisto.

        Call the newly named functions.

        * WebProcess/Plugins/PDF/PDFPlugin.mm:
        (WebKit::PDFPlugin::updateScrollbars):
        * WebProcess/Plugins/PluginView.cpp:
        (WebKit::PluginView::didInitializePlugin):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::setHeaderBannerHeightForTesting):
        (WebKit::WebPage::setFooterBannerHeightForTesting):
        * WebProcess/WebPage/mac/PageBannerMac.mm:
        (WebKit::PageBanner::addToPage):
        (WebKit::PageBanner::detachFromPage):
        (WebKit::PageBanner::hide):

2019-02-03  Ryosuke Niwa  <rniwa@webkit.org>

        Validate navigation policy decisions to avoid crashes in continueLoadAfterNavigationPolicy
        https://bugs.webkit.org/show_bug.cgi?id=194189

        Reviewed by Geoffrey Garen.

        Pass the policy check identifier around functions and store it in PolicyDecisionSender
        so that we can send it back to WebCore with the navigation policy decision.

        We also store it in WebFrame in the case the policy decision had to be invalidated
        before the decision was received (via WebFrame::invalidatePolicyListener).

        * Scripts/webkit/messages.py:
        * UIProcess/ProvisionalPageProxy.cpp:
        (WebKit::ProvisionalPageProxy::decidePolicyForNavigationActionAsync):
        (WebKit::ProvisionalPageProxy::decidePolicyForResponse):
        * UIProcess/ProvisionalPageProxy.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::PolicyDecisionSender): Added PolicyCheckIdentifier as a member.
        (WebKit::WebPageProxy::PolicyDecisionSender::create):
        (WebKit::WebPageProxy::PolicyDecisionSender::send):
        (WebKit::WebPageProxy::PolicyDecisionSender::PolicyDecisionSender):
        (WebKit::WebPageProxy::receivedNavigationPolicyDecision):
        (WebKit::WebPageProxy::decidePolicyForNavigationActionAsync):
        (WebKit::WebPageProxy::decidePolicyForNavigationActionAsyncShared):
        (WebKit::WebPageProxy::decidePolicyForNavigationAction):
        (WebKit::WebPageProxy::decidePolicyForNavigationActionSync):
        (WebKit::WebPageProxy::decidePolicyForNewWindowAction):
        (WebKit::WebPageProxy::decidePolicyForResponse):
        (WebKit::WebPageProxy::decidePolicyForResponseShared):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForResponse):
        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNewWindowAction):
        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
        * WebProcess/WebPage/WebFrame.cpp:
        (WebKit::WebFrame::setUpPolicyListener):
        (WebKit::WebFrame::invalidatePolicyListener):
        (WebKit::WebFrame::didReceivePolicyDecision):
        * WebProcess/WebPage/WebFrame.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::didReceivePolicyDecision):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:

2019-02-03  Megan Gardner  <megan_gardner@apple.com>

        Turn on Smart Paste
        https://bugs.webkit.org/show_bug.cgi?id=193786

        Reviewed by Ryosuke Niwa.

        * Platform/spi/ios/UIKitSPI.h:
        * UIProcess/ios/TextCheckerIOS.mm:
        (WebKit::TextChecker::isSmartInsertDeleteEnabled):
        Use the flag from UIKit to determine if smart copy paste should be
        turned on.

2019-02-02  Simon Fraser  <simon.fraser@apple.com>

        Tidy up data memebers of FrameView and related classes to shrink class sizes
        https://bugs.webkit.org/show_bug.cgi?id=194197

        Reviewed by Zalan Bujtas.

        * UIProcess/PageClient.h: Declare enum size.

2018-12-16  Darin Adler  <darin@apple.com>

        Convert additional String::format clients to alternative approaches
        https://bugs.webkit.org/show_bug.cgi?id=192746

        Reviewed by Alexey Proskuryakov.

        * UIProcess/Cocoa/ViewGestureController.cpp:
        (WebKit::ViewGestureController::SnapshotRemovalTracker::startWatchdog):
        Use makeString and FormattedNumber.

        * UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm:
        (WebKit::LocalAuthenticator::getAssertion): Added a comment about an
        incorrect format specifier and left this code as is for now.

2019-02-01  David Kilzer  <ddkilzer@apple.com>

        Move soft-linking of TelephonyUtilities.framework out of TUCallSPI.h
        <https://webkit.org/b/193866>

        Reviewed by Alex Christensen.

        * Platform/mac/MenuUtilities.mm:
        - Update for rename of TUCallSPI.h to TelephonyUtilitiesSPI.h.
        - Add soft-linking code formerly in TUCallSPI.h.

2019-02-01  Alex Christensen  <achristensen@webkit.org>

        Move XPCService entry points from mac directory to new Cocoa directory
        https://bugs.webkit.org/show_bug.cgi?id=194129

        Reviewed by Chris Dumez.

        * Configurations/NetworkService.xcconfig:
        * Configurations/PluginService.64.xcconfig:
        * Configurations/WebContentService.xcconfig:
        * NetworkProcess/EntryPoint/Cocoa: Copied from Source/WebKit/NetworkProcess/EntryPoint/mac.
        * NetworkProcess/EntryPoint/mac: Removed.
        * PluginProcess/EntryPoint/Cocoa: Copied from Source/WebKit/PluginProcess/EntryPoint/mac.
        * PluginProcess/EntryPoint/mac: Removed.
        * Shared/EntryPointUtilities/Cocoa: Copied from Source/WebKit/Shared/EntryPointUtilities/mac.
        * Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceEntryPoint.h:
        * Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceEntryPoint.mm:
        * Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceMain.mm:
        * Shared/EntryPointUtilities/mac: Removed.
        * SourcesCocoa.txt:
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/EntryPoint/Cocoa: Copied from Source/WebKit/WebProcess/EntryPoint/mac.
        * WebProcess/EntryPoint/mac: Removed.

2019-02-01  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] Consistent 1 sec hang when triggering modal alerts while handling synchronous touch events
        https://bugs.webkit.org/show_bug.cgi?id=194140
        <rdar://problem/47728098>

        Reviewed by Tim Horton.

        Currently, the UI process hangs when attempting to synchronously present modal UI from the web process while the
        UI process is waiting for sync IPC in the web process. While we have logic to generally mitigate IPC deadlock in
        this scenario by dispatching the web process' sync IPC immediately with the intention of allowing the web
        process to finish processing sync IPC (and consequently unblock the UI process), this fails in the case where
        the sync IPC message from the web process to the UI process requires main thread execution for an arbitrary
        amount of time (for instance, modal alert dialogs). In this case, we'll end up in a state where we've handled
        the web process' sync IPC in the UI process, yet we can't resume execution since the web process is still
        blocked.

        By far the most egregious scenario in which this manifests is during synchronous gesture recognizer IPC, i.e.
        grabbing position information from the UI process, and handling touch events synchronously. Luckily, these are
        also cases where (1) we know sync IPC may safely time out, and (2) the presentation of modal UI from the web
        process should cause the gesture recognizers to fail anyways. As such, we can mitigate these scenarios in the
        web process by responding to the these pending sync IPC messages *before* sending our own sync IPC to the UI
        process.

        Test: fast/events/touch/ios/show-modal-alert-during-touch-start.html

        * Shared/ios/InteractionInformationAtPosition.h:
        (WebKit::InteractionInformationAtPosition::invalidInformation):
        * Shared/ios/InteractionInformationAtPosition.mm:
        (WebKit::InteractionInformationAtPosition::encode const):
        (WebKit::InteractionInformationAtPosition::decode):

        Add a new flag to indicate whether an interaction information response can be valid. Interaction information
        cannot be valid in the case where the interaction information request was interrupted by certain sync IPC
        messages from the web process.

        * UIProcess/API/C/WKContextConfigurationRef.cpp:
        (WKContextConfigurationIgnoreSynchronousMessagingTimeoutsForTesting):
        (WKContextConfigurationSetIgnoreSynchronousMessagingTimeoutsForTesting):

        Add some testing SPI to ignore sync IPC timeouts, for the purposes of testing. Rather than use the existing
        Objective-C SPI in WKWebProcessPoolConfiguration, I decided to add C API plumbing for this flag, so that other
        non-Cocoa ports may also support the new layout test option to ignore sync IPC timeouts.

        * UIProcess/API/C/WKContextConfigurationRef.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView ensurePositionInformationIsUpToDate:]):
        (-[WKContentView _positionInformationDidChange:]):
        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::runBeforeUnloadConfirmPanel):
        (WebKit::WebChromeClient::runJavaScriptAlert):
        (WebKit::WebChromeClient::runJavaScriptConfirm):
        (WebKit::WebChromeClient::runJavaScriptPrompt):
        (WebKit::WebChromeClient::print):
        (WebKit::WebChromeClient::exceededDatabaseQuota):
        (WebKit::WebChromeClient::reachedApplicationCacheOriginQuota):

        Cancel any pending sync IPC replies prior to sending sync IPC messages to the UI process which may result in
        sync IPC deadlock, by using the new helper method, sendSyncWithDelayedReply, instead of just sendSync.

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::cancelGesturesBlockedOnSynchronousReplies):

        Add a helper to cancel pending sync messages coming in from the UI process that are being called from within
        gesture recognizer delegate hooks.

        (WebKit::WebPage::touchEventSync):
        * WebProcess/WebPage/WebPage.h:

        Add a new helper, sendSyncWithDelayedReply, to be used when sending a sync IPC message to the UI process that
        cannot be immediately completed upon arrival. Importantly, this cancels pending sync replies, and also passes
        IPC::SendSyncOption::InformPlatformProcessWillSuspend.

        * WebProcess/WebPage/WebPage.messages.in:

        Change these from LegacySync to Delayed messages.

        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::getPositionInformation):

        Make this sync IPC handler (as well as WebPage::touchEventSync) store the IPC reply during the scope of the
        method, and invoke the stored reply at the end of the method if it wasn't interrupted due to something calling
        cancelGesturesBlockedOnSynchronousReplies().

        (WebKit::WebPage::positionInformation):

        Refactor getPositionInformation by pulling out the logic for building an InteractionInformationAtPosition into
        a separate helper.

        (WebKit::WebPage::requestPositionInformation):

2019-02-01  David Quesada  <david_quesada@apple.com>

        Network Process crash when resuming downloads: '-[__NSDictionaryI setObject:forKey:]: unrecognized selector sent to instance %p'
        https://bugs.webkit.org/show_bug.cgi?id=194144
        rdar://problem/47553456

        Reviewed by Geoffrey Garen.

        * NetworkProcess/Downloads/cocoa/DownloadCocoa.mm:
        (WebKit::Download::resume):
            Make a mutable copy of the root object decoded from the resume data.
            It might have been originally encoded as an immutable dictionary.

2019-02-01  Chris Dumez  <cdumez@apple.com>

        REGRESSION: Flaky ASSERTION FAILED: m_uncommittedState.state == State::Committed on http/tests/cookies/same-site/fetch-after-top-level-navigation-initiated-from-iframe-in-cross-origin-page.html
        https://bugs.webkit.org/show_bug.cgi?id=193740
        <rdar://problem/47527267>

        Reviewed by Alex Christensen.

        The issue was happening when the page is triggering a cross-site navigation while in the middle of parsing. This would cause us to
        start a new provisional load in a new process before the previous process sends the DidFinishLoadForFrame() IPC to the UIProcess.
        Getting such IPC after a provisional load has started would mess up our state machine and trip assertions.

        This patch restores non-PSON behavior which is that the previous load in the old process now gets stopped so that no DidFinishLoadForFrame()
        / DidFailLoadForFrame() gets sent. To achieve this behavior, I introduced a new "StopAllLoads" PolicyAction that we now send the old
        process when the load is continuing in a new process, instead of sending it "Ignore".

        * NetworkProcess/NetworkDataTaskBlob.cpp:
        (WebKit::NetworkDataTaskBlob::dispatchDidReceiveResponse):
        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (toNSURLSessionResponseDisposition):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::receivedNavigationPolicyDecision):

2019-02-01  Jer Noble  <jer.noble@apple.com>

        Unreviewed build fix; Respect the 'condition:' field in the WebPreferences.yaml when generating
        WebPreferencesStoreDefaultsMap.cpp.

        * page/SettingsBase.h:

2019-02-01  Antoine Quint  <graouts@apple.com>

        Dispatch pointercancel events when content is panned or zoomed on iOS
        https://bugs.webkit.org/show_bug.cgi?id=193962
        <rdar://problem/47629134>

        Reviewed by Dean Jackson.

        When a user-agent-provided interaction, such as panning or zooming on iOS, uses a set of touches, we should dispatch a pointercancel
        event for the pointer ids of the touches involved. To facilitate this, we add a new method on WKContentView to cancel all the pointers
        matching active touches for a provided UIGestureRecognizer through an async IPC call into the Web process using the new method
        PointerCaptureController::cancelPointer().

        * Platform/spi/ios/UIKitSPI.h: Add the necessary forward declaration for a necessary UIKit SPI allowing us to get the set of last-seen
        UITouches by the identifier generated for the matching WebKit touch.
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView scrollViewWillBeginZooming:withView:]): Dispatch touchcancel events for all pointers involved in a pinch gesture on the
        top-level UIScrollView.
        (-[WKWebView _scrollView:adjustedOffsetForOffset:translation:startPoint:locationInView:horizontalVelocity:verticalVelocity:]): Dispatch
        touchcancel events for all pointers involved in a pan gesture on the top-level UIScrollView. We can infer this by looking at whether the
        adjusted content offset, after accounting for the permitted touch actions, is different from the original content offset.
        * UIProcess/PageClient.h: Expose a new virtual cancelPointersForGestureRecognizer() method which will allow the iOS implementation to
        forward the call to WKContentViewInteraction.
        (WebKit::PageClient::cancelPointersForGestureRecognizer):
        * UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.h: Expose the WebPageProxy such that we may access it to cancel pointers for
        a given gesture recognizer from within ScrollingTreeScrollingNodeDelegateIOS.
        (WebKit::RemoteScrollingCoordinatorProxy::webPageProxy const):
        * UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.h:
        * UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.mm:
        (-[WKScrollingNodeScrollViewDelegate _scrollView:adjustedOffsetForOffset:translation:startPoint:locationInView:horizontalVelocity:verticalVelocity:]):
        Dispatch touchcancel events for all pointers involved in a pan gesture on a nested UIScrollView. We can infer this by looking at
        whether the adjusted content offset, after accounting for the permitted touch actions, is different from the original content offset.
        (-[WKScrollingNodeScrollViewDelegate scrollViewWillBeginZooming:withView:]): Dispatch touchcancel events for all pointers involved in a
        pinch gesture on a nested UIScrollView.
        (-[WKScrollingNodeScrollViewDelegate cancelPointersForGestureRecognizer:]):
        (WebKit::ScrollingTreeScrollingNodeDelegateIOS::cancelPointersForGestureRecognizer):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::cancelPointer):
        * UIProcess/WebPageProxy.h:
        * UIProcess/ios/PageClientImplIOS.h:
        * UIProcess/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::cancelPointersForGestureRecognizer):
        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView cancelPointersForGestureRecognizer:]): Obtain all active UITouch objects for the view and dispatch a pointercancel event,
        through the WebPageProxy, for all touches associated with the provided gesture recognizer.
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::cancelPointer):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:

2019-02-01  Jer Noble  <jer.noble@apple.com>

        Make the WebKit default for media source based on the WebCore default.
        https://bugs.webkit.org/show_bug.cgi?id=194172

        Reviewed by Eric Carlson.

        * Shared/WebPreferences.yaml:
        * UIProcess/API/Cocoa/WKPreferences.mm:
        (-[WKPreferences _setMediaSourceEnabled:]):
        (-[WKPreferences _mediaSourceEnabled]):
        * UIProcess/API/Cocoa/WKPreferencesPrivate.h:

2019-02-01  Simon Fraser  <simon.fraser@apple.com>

        Force settings.acceleratedCompositingEnabled() to true for WebKit
        https://bugs.webkit.org/show_bug.cgi?id=194166
        rdar://problem/47694328

        Reviewed by Tim Horton.

        WebKit relies on accelerated compositing for its drawing areas to function correctly,
        and sometimes clients (*cough* Safari *cough*) have bugs where they clobber the settings,
        so force this setting to be always on (and release log if this happens).

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::updatePreferences):

2019-02-01  Antti Koivisto  <antti@apple.com>

        Don't use base layer() as the scroll layer in scrolling tree.
        https://bugs.webkit.org/show_bug.cgi?id=194160

        Reviewed by Simon Fraser.

        * Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp:
        (ArgumentCoder<ScrollingStateNode>::encode):
        (ArgumentCoder<ScrollingStateNode>::decode):
        (ArgumentCoder<ScrollingStateScrollingNode>::encode):
        (ArgumentCoder<ScrollingStateScrollingNode>::decode):
        (WebKit::dump):
        * UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.cpp:
        (WebKit::RemoteScrollingCoordinatorProxy::connectStateNodeLayers):
        * UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.mm:
        (WebKit::RemoteScrollingCoordinatorProxy::connectStateNodeLayers):
        * UIProcess/RemoteLayerTree/ios/ScrollingTreeFrameScrollingNodeRemoteIOS.mm:
        (WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::commitStateBeforeChildren):
        * UIProcess/RemoteLayerTree/ios/ScrollingTreeOverflowScrollingNodeIOS.mm:
        (WebKit::ScrollingTreeOverflowScrollingNodeIOS::commitStateBeforeChildren):
        * UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.mm:
        (WebKit::ScrollingTreeScrollingNodeDelegateIOS::commitStateBeforeChildren):
        (WebKit::ScrollingTreeScrollingNodeDelegateIOS::commitStateAfterChildren):

2019-02-01  Michael Catanzaro  <mcatanzaro@igalia.com>

        [SOUP] Improve use of SoupCookiePersistentStorageType
        https://bugs.webkit.org/show_bug.cgi?id=194103

        Reviewed by Carlos Garcia Campos.

        Turn it into an enum class, and stop casting it to and from uint32_t.

        * NetworkProcess/Cookies/WebCookieManager.h:
        * NetworkProcess/Cookies/WebCookieManager.messages.in:
        * NetworkProcess/Cookies/soup/WebCookieManagerSoup.cpp:
        (WebKit::WebCookieManager::setCookiePersistentStorage):
        * NetworkProcess/NetworkSessionCreationParameters.cpp:
        (WebKit::NetworkSessionCreationParameters::privateSessionParameters):
        (WebKit::NetworkSessionCreationParameters::decode):
        * NetworkProcess/NetworkSessionCreationParameters.h:
        * Shared/soup/SoupCookiePersistentStorageType.h:
        (): Deleted.
        * UIProcess/API/glib/WebKitCookieManager.cpp:
        * UIProcess/WebCookieManagerProxy.h:
        * UIProcess/soup/WebCookieManagerProxySoup.cpp:
        (WebKit::WebCookieManagerProxy::setCookiePersistentStorage):
        (WebKit::WebCookieManagerProxy::getCookiePersistentStorage const):

2019-02-01  Per Arne Vollan  <pvollan@apple.com>

        [macOS] Revert parts of r240811, since it causes kernel panics.
        https://bugs.webkit.org/show_bug.cgi?id=194061

        Unreviewed crash fix.

        * WebProcess/com.apple.WebProcess.sb.in:

2019-02-01  Michael Catanzaro  <mcatanzaro@igalia.com>

        [SOUP] Improve use of PAL::SessionID in WebKitCookieManager
        https://bugs.webkit.org/show_bug.cgi?id=194092

        Reviewed by Carlos Garcia Campos.

        Always get it from the data store instead of assuming the default session ID, and add a
        helper function for this.

        * UIProcess/API/glib/WebKitCookieManager.cpp:
        (_WebKitCookieManagerPrivate::sessionID const):
        (_WebKitCookieManagerPrivate::~_WebKitCookieManagerPrivate):
        (webkitCookieManagerCreate):
        (webkit_cookie_manager_set_persistent_storage):
        (webkit_cookie_manager_set_accept_policy):
        (webkit_cookie_manager_get_accept_policy):
        (webkit_cookie_manager_add_cookie):
        (webkit_cookie_manager_get_cookies):
        (webkit_cookie_manager_delete_cookie):

2019-01-31  Takashi Komori  <Takashi.Komori@sony.com>

        [Curl] Remove unnecessary member from NetworkStorageSession.
        https://bugs.webkit.org/show_bug.cgi?id=194137

        Reviewed by Don Olmstead.

        * NetworkProcess/curl/NetworkProcessCurl.cpp:
        (WebKit::NetworkProcess::platformCreateDefaultStorageSession const):

2019-01-31  Jiewen Tan  <jiewen_tan@apple.com>

        Unreviewed, build fix after r240805

        This patch reverts the BlockPtr change since it breaks iOS builds.

        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::tryInterceptNavigation):

2019-01-31  Chris Dumez  <cdumez@apple.com>

        Page zoom level is lost after a process swap or a crash
        https://bugs.webkit.org/show_bug.cgi?id=194105
        <rdar://problem/47610781>

        Reviewed by Alex Christensen.

        Previously, when the client would call setPageAndTextZoomFactors() on the WebPageProxy,
        we would update the WebPageProxy's corresponding data members and send an IPC to the
        WebProcess to apply the zoom factors.

        The issue is that on process crash or process-swap, we never communicate those zoom factors
        to the new WebProcess. Even if the client were to call setPageAndTextZoomFactors() with
        the same factors again, it would be a no-op since the WebPageProxy's data members already
        reflect the expected values.

        To address the issue, pass both the page zoom and the text zoom factors to the WebProcess
        via WebPageCreationParameters. This way, there is no need to send an extra IPC and we're
        sure the WebPageProxy's factors are properly applied to the WebPage on WebContent process
        side upon creation (whether after a crash or a process swap).

        * Shared/WebPageCreationParameters.cpp:
        (WebKit::WebPageCreationParameters::encode const):
        (WebKit::WebPageCreationParameters::decode):
        * Shared/WebPageCreationParameters.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::creationParameters):
        * WebProcess/WebPage/WebPage.cpp:

2019-01-31  Per Arne Vollan  <pvollan@apple.com>

        [macOS] Disable permissive call logging in sandbox
        https://bugs.webkit.org/show_bug.cgi?id=194061

        Reviewed by Alexey Proskuryakov.

        Strict call filtering should be reenabled.

        * WebProcess/com.apple.WebProcess.sb.in:

2019-01-31  Per Arne Vollan  <pvollan@apple.com>

        [macOS] Crash when control-clicking or copying text rendered with a web font
        https://bugs.webkit.org/show_bug.cgi?id=193913
        <rdar://problem/47541039>

        Reviewed by Brent Fulgham.

        On older versions of macOS, allowing mach lookup to com.apple.FontObjectsServer is needed.

        * WebProcess/com.apple.WebProcess.sb.in:

2019-01-31  Benjamin Poulain  <benjamin@webkit.org>

        Remove WKPageIsWebProcessResponsive
        https://bugs.webkit.org/show_bug.cgi?id=194096

        Reviewed by Alex Christensen.

        It is not used by any client.

        It is also bad API. It is better to let WebKit track
        responsiveness and tell the client with processDidBecomeResponsive.

        * UIProcess/API/C/WKPage.cpp:
        (WKPageIsWebProcessResponsive): Deleted.
        * UIProcess/API/C/WKPagePrivate.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::isWebProcessResponsive): Deleted.
        * UIProcess/WebPageProxy.h:

2019-01-31  Alex Christensen  <achristensen@webkit.org>

        Revert r238819 which is unneeded and caused a performance regression.
        https://bugs.webkit.org/show_bug.cgi?id=192272
        <rdar://problem/46664625>

        * WebProcess/InjectedBundle/API/APIInjectedBundlePageLoaderClient.h:
        (API::InjectedBundle::PageLoaderClient::didStartProvisionalLoadForFrame):
        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInLoadDelegate.h:
        * WebProcess/InjectedBundle/API/glib/WebKitWebPage.cpp:
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:
        (PageLoaderClient::didStartProvisionalLoadForFrame):
        * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.cpp:
        (WebKit::InjectedBundlePageLoaderClient::didStartProvisionalLoadForFrame):
        * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.h:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDidStartProvisionalLoad):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.h:

2019-01-31  Jiewen Tan  <jiewen_tan@apple.com>

        Formalize WebKitAdditions mechanism of LoadOptimizer
        https://bugs.webkit.org/show_bug.cgi?id=193886
        <rdar://problem/47696809>

        Reviewed by Brent Fulgham.

        This patch does the following few things:
        1) formalizes WebKitAdditions mechanism of LoadOptimizer;
        2) modernizes AppLinks code in tryInterceptNavigation to use BlockPtr;
        3) lets AppLinks have higher precedence than LoadOptimizer.

        * SourcesCocoa.txt:
        * UIProcess/Cocoa/LoadOptimizer.h: Removed.
        * UIProcess/Cocoa/LoadOptimizer.mm: Removed.
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::tryOptimizingLoad):
        (WebKit::tryInterceptNavigation):
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::WebsiteDataStore):
        * UIProcess/WebsiteData/WebsiteDataStore.h:
        (WebKit::WebsiteDataStore::loadOptimizer): Deleted.
        * WebKit.xcodeproj/project.pbxproj:

2019-01-31  Chris Dumez  <cdumez@apple.com>

        Regression(PSON) Crash under WebProcessProxy::canTerminateChildProcess()
        https://bugs.webkit.org/show_bug.cgi?id=194094
        <rdar://problem/47580753>

        Reviewed by Ryosuke Niwa.

        If a SuspendedPageProxy gets destroyed while a WebPageProxy is waiting for its to finish to suspend,
        call the "failure to suspend" completion handler asynchronously instead of synchronouly to make sure
        the completion handler cannot try and use the suspended page proxy while it is being destroyed.

        * UIProcess/SuspendedPageProxy.cpp:
        (WebKit::SuspendedPageProxy::~SuspendedPageProxy):

2019-01-31  Timothy Hatcher  <timothy@apple.com>

        Fix LSAppLink deprecation warnings.
        https://bugs.webkit.org/show_bug.cgi?id=194097

        Unreviewed build fix.

        * UIProcess/ios/WKActionSheetAssistant.mm:
        (-[WKActionSheetAssistant _appendOpenActionsForURL:actions:elementInfo:]):

2019-01-30  Simon Fraser  <simon.fraser@apple.com>

        [Mac] Implement basic hit testing in the scrolling tree
        https://bugs.webkit.org/show_bug.cgi?id=172917
        <rdar://problem/34215516>

        Reviewed by Antti Koivisto.

        Changed return types, "using namespace WebCore" in ScrollingTreeFrameScrollingNodeRemoteMac.cpp.

        * Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp:
        (ArgumentCoder<ScrollingStateFrameScrollingNode>::encode):
        * UIProcess/RemoteLayerTree/ios/ScrollingTreeOverflowScrollingNodeIOS.h:
        * UIProcess/RemoteLayerTree/mac/ScrollerPairMac.h:
        * UIProcess/RemoteLayerTree/mac/ScrollerPairMac.mm:
        (WebKit::ScrollerPairMac::handleWheelEvent):
        (WebKit::ScrollerPairMac::handleMouseEvent):
        * UIProcess/RemoteLayerTree/mac/ScrollingTreeFrameScrollingNodeRemoteMac.cpp:
        (WebKit::ScrollingTreeFrameScrollingNodeRemoteMac::handleWheelEvent):
        (WebKit::ScrollingTreeFrameScrollingNodeRemoteMac::handleMouseEvent):
        * UIProcess/RemoteLayerTree/mac/ScrollingTreeFrameScrollingNodeRemoteMac.h:

2019-01-31  Michael Catanzaro  <mcatanzaro@igalia.com>

        [SOUP] Move cookiePersistentStoragePath and cookiePersistentStorageType from NetworkProcess to NetworkSession
        https://bugs.webkit.org/show_bug.cgi?id=194075

        Reviewed by Alex Christensen.

        Move cookiePersistentStoragePath and cookiePersistentStorageType from NetworkProcess to
        NetworkSession to reduce globals. This removes two of the six soup-specific variables in
        NetworkProcessCreationParameters

        * NetworkProcess/Cookies/WebCookieManager.h:
        * NetworkProcess/Cookies/WebCookieManager.messages.in:
        * NetworkProcess/Cookies/soup/WebCookieManagerSoup.cpp:
        (WebKit::WebCookieManager::setCookiePersistentStorage):
        * NetworkProcess/NetworkProcessCreationParameters.cpp:
        (WebKit::NetworkProcessCreationParameters::encode const):
        (WebKit::NetworkProcessCreationParameters::decode):
        * NetworkProcess/NetworkProcessCreationParameters.h:
        * NetworkProcess/NetworkSessionCreationParameters.cpp:
        (WebKit::NetworkSessionCreationParameters::privateSessionParameters):
        (WebKit::NetworkSessionCreationParameters::encode const):
        (WebKit::NetworkSessionCreationParameters::decode):
        * NetworkProcess/NetworkSessionCreationParameters.h:
        * NetworkProcess/soup/NetworkProcessSoup.cpp:
        (WebKit::NetworkProcess::platformInitializeNetworkProcess):
        * NetworkProcess/soup/NetworkSessionSoup.cpp:
        (WebKit::NetworkSessionSoup::NetworkSessionSoup):
        * SourcesGTK.txt:
        * SourcesWPE.txt:
        * UIProcess/API/glib/WebKitCookieManager.cpp:
        (webkit_cookie_manager_set_persistent_storage):
        * UIProcess/WebCookieManagerProxy.cpp:
        (WebKit::WebCookieManagerProxy::WebCookieManagerProxy):
        * UIProcess/WebCookieManagerProxy.h:
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::parameters):
        * UIProcess/WebsiteData/WebsiteDataStore.h:
        * UIProcess/WebsiteData/curl/WebsiteDataStoreCurl.cpp:
        (WebKit::WebsiteDataStore::platformSetNetworkParameters):
        (WebKit::WebsiteDataStore::platformSetParameters): Deleted.
        * UIProcess/soup/WebCookieManagerProxySoup.cpp:
        (WebKit::WebCookieManagerProxy::setCookiePersistentStorage):
        (WebKit::WebCookieManagerProxy::getCookiePersistentStorage const):
        * UIProcess/soup/WebProcessPoolSoup.cpp:
        (WebKit::WebProcessPool::platformInitializeNetworkProcess):

2019-01-31  Ryosuke Niwa  <rniwa@webkit.org>

        iOS: Crash in InteractiveUpdateHandler set by ViewGestureController::beginSwipeGesture
        https://bugs.webkit.org/show_bug.cgi?id=194083

        Reviewed by Tim Horton.

        We think this crash is a regression from r236966. Prior to r236966, we could only called
        removeSwipeSnapshot() only when m_provisionalOrSameDocumentLoadCallback was set but now
        we can call it either when m_snapshotRemovalTracker::start was called, or it had been reset.
        This can result in m_webPageProxyForBackForwardListForCurrentSwipe getting cleared before
        InteractiveUpdateHandler is called by UIGestureRecognizer, resulting in the crash.

        This patch tries to restore the behavior prior to r236966 by only invoking removeSwipeSnapshot()
        when SnapshotRemovalTracker has a valid removal callback set.

        Unfortunately no new tests since there is no reproducible test case, and neither API tests
        nor layout tests seem to have the capability to trigger swipe gestures via UIGestureRecognizer,
        which is required for this crash to occur. Notably, back-forward swipe tests I enabled in
        r240765 bypass UIKit and emulates the action instead.

        * UIProcess/Cocoa/ViewGestureController.cpp:
        (WebKit::ViewGestureController::didReachMainFrameLoadTerminalState):
        * UIProcess/Cocoa/ViewGestureController.h:
        (WebKit::ViewGestureController::SnapshotRemovalTracker::hasRemovalCallback const):

2019-01-30  Benjamin Poulain  <benjamin@webkit.org>

        <rdar://problem/47570443> Responsiveness timers are too expensive for frequent events
        https://bugs.webkit.org/show_bug.cgi?id=194003

        Reviewed by Geoffrey Garen.

        The problem here is specific to wheel events.

        For every wheel event, we start a responsiveness timer and send
        a ping to the WebProcess. When the WebProcess respond, we stop the timer.

        The cost of setting up the timers adds up since we get many events.

        The first step to improve the situation was to switch ResponsivenessTimer
        to WebCore::Timer. Since WebCore::Timer reuse the same CFRunLoopTimerRef,
        we save the allocation/deallocation, insertion in the event loop, etc.

        Using WebCore::Timer saves some instructions but we were still hitting
        the kernel at 120hz to set up then kill each timer.
        The second improvement of the patch is to avoid that by not killing the timer
        when we hear back from the WebProcess.

        Instead of killing the timer, we let it run and ignore the result.
        When the next event comes, we reschedule the existing timer.
        This brings down the timers to 60Hz, the same rate as the events.

        The very last event does time out. In that case, we have a bad idle wake up:
        we wake up a sleeping CPU do do nothing.
        In the case of wheel events, this is fine since we saved a bunch of CPU already.
        For all the other cases, I kept the normal operating mode to avoid the idle wake.

        * UIProcess/ResponsivenessTimer.cpp:
        (WebKit::ResponsivenessTimer::ResponsivenessTimer):
        (WebKit::ResponsivenessTimer::invalidate):
        (WebKit::ResponsivenessTimer::timerFired):
        (WebKit::ResponsivenessTimer::start):
        (WebKit::ResponsivenessTimer::startWithLazyStop):
        (WebKit::ResponsivenessTimer::stop):
        (WebKit::ResponsivenessTimer::processTerminated):
        (WebKit::ResponsivenessTimer::~ResponsivenessTimer): Deleted.
        * UIProcess/ResponsivenessTimer.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::sendWheelEvent):
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::isResponsiveWithLazyStop):
        * UIProcess/WebProcessProxy.h:

2019-01-30  Daniel Bates  <dabates@apple.com>

        [iOS] REGRESSION (r238635): Text area fails to re-focus after dismissal of keyboard on support.apple.com
        https://bugs.webkit.org/show_bug.cgi?id=193987
        <rdar://problem/47230785>

        Reviewed by Tim Horton.

        It is unnecessary to relinquish first responder status when a user explicitly dismissing
        the keyboard. Moreover, doing so prevents key commands from being intercepted when a
        hardware keyboard is subsequently attached.
        
        Following r238635 a page becomes focused (accepting of keyboard input) and defocused
        when the WKContentView becomes first responder and resigns first responder, respectively.
        When a user explicitly dismisses the keyboard by tapping Done (iPhone) or the hide keyboard
        button (iPad) then UIKit tells WKContentView to resign its first responder status only
        to make its superview, WKWebView, first responder. When a person subsequently taps on the
        page again, the WKContentView requests to become the first responder. However changes to
        page focus are not guaranteed to be sent to the WebProcess immediately (WebPageProxy::activityStateDidChange()
        will schedule an update). In particular, they are not guaranteed to be sent before the
        WebProcess is told about a tap. Therefore, the WebProcess has out-of-date information on
        focus state of the page. Instead we should detect when WKWebView is being asked to resign
        as a result of the keyboard dismissal and refuse the request, taking care to end the current
        editing session, blur the focused element, and dismiss the on-screen keyboard.

        * Platform/spi/ios/UIKitSPI.h: Expose some SPI.
        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView setupInteraction]): Register to receive notifications whenever a user
        explicitly dismisses the keyboard.
        (-[WKContentView resignFirstResponderForWebView]): If we are being asked to resign as a
        result of a user explicitly dismissing the keyboard then refuse to resign.
        (-[WKContentView _keyboardDidRequestDismissal:]): Update state, if applicable.

2019-01-30  Keith Rollin  <krollin@apple.com>

        Add default constructor for NetworkActivityTracker
        https://bugs.webkit.org/show_bug.cgi?id=194058
        <rdar://problem/47685457>

        Reviewed by Chris Dumez.

        ResourceNetworkActivityTracker has a default constructor. It also has
        a NetworkActivityTracker data member, which does not have a default
        constructor. This will cause some compilers to complain -- they can't
        default-create a ResourceNetworkActivityTracker because they can't
        default-create its data members. Address this by adding a default
        constructor for NetworkActivityTracker.

        * NetworkProcess/NetworkActivityTracker.h:

2019-01-30  Daniel Steffen  <dsteffen@apple.com>

        <rdar://problem/29471922> Safari should switch from the legacy denap SPI to handling vouchers
        https://bugs.webkit.org/show_bug.cgi?id=193992

        Reviewed by Geoffrey Garen.

        The denap SPI is deprecated.
        The new way of staying out of AppNap is through a voucher.

        * Platform/IPC/mac/ConnectionMac.mm:
        (IPC::readFromMachPort):
        * Platform/IPC/mac/ImportanceAssertion.h:
        (IPC::ImportanceAssertion::ImportanceAssertion):
        (IPC::ImportanceAssertion::~ImportanceAssertion):

2019-01-30  Chris Dumez  <cdumez@apple.com>

        Fix crashes when trying to ref the CallbackAggregator in NetworkProcess
        https://bugs.webkit.org/show_bug.cgi?id=194054

        Reviewed by Brent Fulgham.

        The callback aggregators should be ThreadSafeRefCounted since they are passed to other threads.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::fetchWebsiteData):
        (WebKit::NetworkProcess::deleteWebsiteDataForTopPrivatelyControlledDomainsInAllPersistentDataStores):
        (WebKit::NetworkProcess::topPrivatelyControlledDomainsWithWebsiteData):

2019-01-30  Daniel Bates  <dabates@apple.com>

        [iOS] Keyups for non-modifier keys identified as "Dead" when not focused in a content-editable element
        https://bugs.webkit.org/show_bug.cgi?id=192824
        <rdar://problem/47100332>

        Reviewed by Wenson Hsieh.

        Use the same code path for key events to editable elements and non-editable elements.

        Currently we have different code paths for hardware key events depending on whether the active element
        is editable or non-editable. Historically to support dispatching DOM keyboard events for hardware key
        presses this differentiation was a necessary workaround for UIKit's event processing precedence of
        interpreting key events for system text editing commands and app commands before dispatching unhandled
        key events to WebKit. This workaround intercepted raw key UIEvents and manually reconstructed a
        WebEvent from it. However there is not enough information in an UIEvent to reconstruct a WebEvent that
        is identical to the WebEvent that UIKit would have dispatched. In particular, keyup UIEvents always have
        empty modified and unmodified input strings. The UIKit keyboard machinery maintains additional state
        that is necessary to manufacture the correct WebEvent corresponding to a UIEvent.

        As a side benefit of this change, with the exception of modifier flag changes, both hardware and software
        key events use the same code path.

        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView shouldShowAutomaticKeyboardUI]): Extracted code from _requiresKeyboardWhenFirstResponder
        (-[WKContentView _disableAutomaticKeyboardUI]): Implement UIKit SPI to prevent showing the keyboard UI
        when there is no focused element now that we are no longer intercepting key UIEvents. Formerly the
        keyboard UI was disabled as a side effect of not becoming first responder when there was no focused
        element (by returning NO in -_requiresKeyboardWhenFirstResponder).
        (-[WKContentView _requiresKeyboardWhenFirstResponder]): Always return YES when building with USE(UIKIT_KEYBOARD_ADDITIONS)
        so that we always accept key events. Instead of selectively replying to create a keyboard as a means of
        hiding the automatic keyboard UI we now implement _disableAutomaticKeyboardUI to selectively hide the
        automatic keyboard UI.
        (-[WKContentView textInputTraits]): Do not update traits when the keyboard is going to be dismissed
        now that we require a keyboard when first responder even if the focused element is non-editable.
        (-[WKContentView _didHandleKeyEvent:eventWasHandled:]): Skip logic for re-sending UIEvents to UIKit
        as UIKit now processes the event first. This logic was necessary in order to finally allow UIKit
        its chance to interpret the UIEvent, we intercepted, for app key commands.
        (-[WKContentView _elementDidBlur]): Call [self _endEditing] so that we dismiss any open form controls
        (e.g. a <select> popover menu). Currently this happens either by -_requiresKeyboardWhenFirstResponder
        responding NO when switching to another field or pressing Tab or Shift + Tab key command, which we will
        no longer use when building with USE(UIKIT_KEYBOARD_ADDITIONS) once I land <https://bugs.webkit.org/show_bug.cgi?id=193048>.
        * UIProcess/ios/forms/WKFormSelectPopover.mm:
        (-[WKSelectPopover initWithView:hasGroups:]): Do not assign ourself as the keyboard delegate. Otherwise,
        type ahead and tab cycling will not work. Currently type ahead and tab cycling work by using the non-
        editable code path via -_handleKeyUIEvent. Now that we no longer differentiate between key events for
        editable and non-editable elements we need to ensure that the WKContentView is the keyboard delegate
        when the popover is presented.

2019-01-30  Per Arne Vollan  <pvollan@apple.com>

        [macOS] Sandbox fails to compile on 10.12
        https://bugs.webkit.org/show_bug.cgi?id=194035
        <rdar://problem/47651260>

        Reviewed by Brent Fulgham.

        This was caused by the commit <https://trac.webkit.org/changeset/239994>, which is only valid for
        10.14 and later.

        * PluginProcess/mac/com.apple.WebKit.plugin-common.sb.in:
        * WebProcess/com.apple.WebProcess.sb.in:

2019-01-29  Conrad Shultz  <conrad_shultz@apple.com>

        Ensure image picker sourceType is set before cameraDevice
        https://bugs.webkit.org/show_bug.cgi?id=193998

        Reviewed by Beth Dakin.

        * UIProcess/ios/forms/WKFileUploadPanel.mm:
        (-[WKFileUploadPanel _showPhotoPickerWithSourceType:]):

2019-01-30  Chris Dumez  <cdumez@apple.com>

        Regression(PSON) Load hang can occur on history navigation
        https://bugs.webkit.org/show_bug.cgi?id=194030
        <rdar://problem/47656939>

        Reviewed by Antti Koivisto.

        We do not support having more than one WebPage in a WebProcess with the same page ID. As a result,
        if we decide to reuse an existing process on process-swap, we need to make sure that we either use
        its suspended page (when possible, meaning that it is for the right HistoryItem / page) or we need
        make sure we drop the existing suspended page for this process / pagePID combination, so that the
        WebPage on WebProcess side gets closed before we attempt to do the new load.

        We were doing this correctly in 2 places in WebProcessPool::processForNavigationInternal() but failed
        to do so in a third place, when doing back to a HistoryItem which does not have a SuspendedPage but
        whose process is still alive (presumably because it is kept alive by another suspended page). This
        patch fixes this third place to remove any suspended page in the process for the current page before
        reusing the process. An assertion was also added to the call site in
        WebPageProxy::receivedNavigationPolicyDecision() to make sure we catch this more easily in the
        future.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::receivedNavigationPolicyDecision):
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::processForNavigationInternal):
        (WebKit::WebProcessPool::removeAllSuspendedPagesForPage):
        (WebKit::WebProcessPool::hasSuspendedPageFor const):
        * UIProcess/WebProcessPool.h:

2019-01-30  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK][Wayland] REGRESSION(r240712): Clear the GL context if it's the current one on dispose
        https://bugs.webkit.org/show_bug.cgi?id=194024

        Reviewed by Michael Catanzaro.

        Fixes a crash in gdk_gl_context_dispose().

        * UIProcess/gtk/AcceleratedBackingStoreWayland.cpp:
        (WebKit::AcceleratedBackingStoreWayland::~AcceleratedBackingStoreWayland):

2019-01-30  Antti Koivisto  <antti@apple.com>

        Crash in WebKit::RemoteLayerTreePropertyApplier::updateChildren
        https://bugs.webkit.org/show_bug.cgi?id=193897
        <rdar://problem/47427750>

        Reviewed by Simon Fraser.

        There has been some null pointer crashes where we fail to find a remote layer tree node that matches
        the transaction properties.

        * Shared/RemoteLayerTree/RemoteLayerTreePropertyApplier.mm:
        (WebKit::RemoteLayerTreePropertyApplier::updateChildren):

        Null check the nodes.

2019-01-30  Simon Fraser  <simon.fraser@apple.com>

        Add some basic geometry information to the scrolling tree
        https://bugs.webkit.org/show_bug.cgi?id=194002

        Reviewed by Antti Koivisto.

        Add a comment explaining why we don't need to encode/decode ParentRelativeScrollableRect.

        * Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp:
        (ArgumentCoder<ScrollingStateFrameHostingNode>::encode):

2019-01-30  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] gdk_cairo_draw_from_gl() in AcceleratedBackingStoreWayland fails in GtkInspector's magnifier
        https://bugs.webkit.org/show_bug.cgi?id=193903

        Reviewed by Michael Catanzaro.

        The problem is that the GL context used by WaylandCompositor can't share resources with the one used by GTK+
        when painting with gdk_cairo_draw_from_gl(). Accelerated compositing in Wayland works only because
        WaylandCompositor makes the context current only once on initialization. So, when we render the first frame on
        accelerated compositing mode, GTK+ is rendering in non-GL mode, and switches to the GL mode when
        gdk_cairo_draw_from_gl() is called. Since GTK+ didn't have a GL context yet, the first frame is always rendered
        by GTK+ using the software fallback (glReadPixels). The thing is that the first time gdk_cairo_draw_from_gl() is
        called, GTK+ creates a GL context for painting that is made current, and it will remain the current one
        forever. The first frame fails to render with "GL_INVALID_OPERATION in glBindTexture(non-gen name)" because the
        texture created in WaylandCompositor GL context can't be accessed from GTK+ GL context. The following frames are
        handled with the GTK+ GL context. I would say this works by casuality and it could be the cause of other
        accelerated compositing issues in Wayland.

        We need to create our own GdkGLContext for the WebView, and use that in the WaylandCompositor. When the
        GdkGLContext is created, the GTK+ GL context for painting is used as a shared context, ensuring that resources
        created in the new context will be accessible from the painting one.

        * UIProcess/API/gtk/WebKitWebViewBase.cpp:
        (webkitWebViewBaseMakeGLContextCurrent): Call AcceleratedBackingStore::makeContextCurrent().
        * UIProcess/API/gtk/WebKitWebViewBasePrivate.h:
        * UIProcess/WebPageProxy.h:
        * UIProcess/gtk/AcceleratedBackingStore.h:
        (WebKit::AcceleratedBackingStore::makeContextCurrent): New virtual method only implemented by Wayland backend.
        * UIProcess/gtk/AcceleratedBackingStoreWayland.cpp:
        (WebKit::AcceleratedBackingStoreWayland::tryEnsureGLContext): Try to create a GL context with
        gdk_window_create_gl_context(), falling back to a WebCore::GLContext if it fails or GTK+ version is not new enough.
        (WebKit::AcceleratedBackingStoreWayland::makeContextCurrent): Make the GL context current.
        (WebKit::AcceleratedBackingStoreWayland::paint): Check if we have a GdkGLContext before trying to use gdk_cairo_draw_from_gl().
        (WebKit::AcceleratedBackingStoreWayland::canGdkUseGL const): Deleted.
        * UIProcess/gtk/AcceleratedBackingStoreWayland.h:
        * UIProcess/gtk/WaylandCompositor.cpp:
        (WebKit::WaylandCompositor::Surface::Surface): Move the texture creation to setWebPage(), since we need the
        WebView GL context.
        (WebKit::WaylandCompositor::Surface::~Surface): Move the code to destroy GL resources to setWebPage().
        (WebKit::WaylandCompositor::Surface::setWebPage): Create the texture when a new page is set and destroy GL
        resources when unset.
        (WebKit::WaylandCompositor::Surface::prepareTextureForPainting): Make WebView GL context current.
        (WebKit::WaylandCompositor::Surface::commit): Ditto.
        (WebKit::WaylandCompositor::initializeEGL): Use a temporary GLContext.
        * UIProcess/gtk/WaylandCompositor.h:
        * UIProcess/gtk/WebPageProxyGtk.cpp:
        (WebKit::WebPageProxy::makeGLContextCurrent): Call webkitWebViewBaseMakeGLContextCurrent().

2019-01-29  Ryosuke Niwa  <rniwa@webkit.org>

        iOS: Nullptr crash in WebPage::getPositionInformation dereferencing an input element for data list
        https://bugs.webkit.org/show_bug.cgi?id=193996

        Reviewed by Wenson Hsieh.

        Added a missing nullptr check.

        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::getPositionInformation):

2019-01-29  Simon Fraser  <simon.fraser@apple.com>

        Add nodes to the scrolling tree in z-index order.
        https://bugs.webkit.org/show_bug.cgi?id=192529
        <rdar://problem/47402708>

        Reviewed by Dean Jackson.

        FrameHosting nodes have layers, so need to update them.

        * Platform/Logging.cpp:
        (WebKit::initializeLogChannelsIfNecessary):
        * UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.mm:
        (WebKit::RemoteScrollingCoordinatorProxy::connectStateNodeLayers):

2019-01-29  Alex Christensen  <achristensen@webkit.org>

        Change NetworkConnectionToWebProcess* to NetworkConnectionToWebProcess& where possible
        https://bugs.webkit.org/show_bug.cgi?id=193974

        Reviewed by Tim Horton.

        * NetworkProcess/FileAPI/NetworkBlobRegistry.cpp:
        (WebKit::NetworkBlobRegistry::registerFileBlobURL):
        (WebKit::NetworkBlobRegistry::registerBlobURL):
        (WebKit::NetworkBlobRegistry::registerBlobURLOptionallyFileBacked):
        (WebKit::NetworkBlobRegistry::registerBlobURLForSlice):
        (WebKit::NetworkBlobRegistry::unregisterBlobURL):
        (WebKit::NetworkBlobRegistry::blobSize):
        (WebKit::NetworkBlobRegistry::connectionToWebProcessDidClose):
        * NetworkProcess/FileAPI/NetworkBlobRegistry.h:
        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::didClose):
        (WebKit::NetworkConnectionToWebProcess::registerFileBlobURL):
        (WebKit::NetworkConnectionToWebProcess::registerBlobURL):
        (WebKit::NetworkConnectionToWebProcess::registerBlobURLFromURL):
        (WebKit::NetworkConnectionToWebProcess::registerBlobURLOptionallyFileBacked):
        (WebKit::NetworkConnectionToWebProcess::registerBlobURLForSlice):
        (WebKit::NetworkConnectionToWebProcess::unregisterBlobURL):
        (WebKit::NetworkConnectionToWebProcess::blobSize):
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::removeNetworkConnectionToWebProcess):
        * NetworkProcess/NetworkProcess.h:

2019-01-29  Youenn Fablet  <youenn@apple.com>

        Adopt new SPI to evaluate server certificate trust
        https://bugs.webkit.org/show_bug.cgi?id=193355

        Reviewed by Alex Christensen.

        Use new SPI provided in NSURLSession to evaluate server certificates.
        If successful, let loading proceed as usual.
        Otherwise, go to the UIProcess to ask for a decision on continuing the load or not.

        * NetworkProcess/cocoa/NetworkSessionCocoa.h:
        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (canNSURLSessionTrustEvaluate):
        (-[WKNetworkSessionDelegate URLSession:task:didReceiveChallenge:completionHandler:]):
        (WebKit::NetworkSessionCocoa::continueDidReceiveChallenge):

2019-01-29  Tim Horton  <timothy_horton@apple.com>

        Fix the build

        * UIProcess/ios/WKDrawingCoordinator.h:
        * UIProcess/ios/WKDrawingCoordinator.mm:
        * UIProcess/ios/WKDrawingView.mm:

2019-01-29  Alex Christensen  <achristensen@webkit.org>

        Remove unused NetworkProcessProxy::writeBlobToFilePath
        https://bugs.webkit.org/show_bug.cgi?id=193990

        Reviewed by Wenson Hsieh.

        This code was only used in code that was introduced in r235202
        but that has since been refactored to not use blobs.  Its tests still pass.
        This removes the only UIProcess-controlled code that uses NetworkBlobRegistry::singleton.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::writeBlobToFilePath): Deleted.
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::writeToURLForFilePromiseProvider):
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::writeBlobToFilePath): Deleted.
        * UIProcess/Network/NetworkProcessProxy.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::writeBlobToFilePath): Deleted.
        * UIProcess/WebPageProxy.h:

2019-01-29  Devin Rousso  <drousso@apple.com>

        Web Inspector: expose a way of determining if a detached frontend is for a remote target
        https://bugs.webkit.org/show_bug.cgi?id=193951
        <rdar://problem/47621366>

        Reviewed by Joseph Pecoraro.

        * UIProcess/WebInspectorProxy.h:
        (WebKit::WebInspectorProxy::InspectionTargetType): Added.
        (WebKit::WebInspectorProxy::createFrontendWindow):
        * UIProcess/mac/WebInspectorProxyMac.mm:
        (WebKit::WebInspectorProxy::createFrontendWindow):
        (WebKit::WebInspectorProxy::platformCreateFrontendWindow):
        * UIProcess/mac/RemoteWebInspectorProxyMac.mm:
        (WebKit::RemoteWebInspectorProxy::platformCreateFrontendPageAndWindow):

        * UIProcess/API/Cocoa/_WKInspectorWindow.h: Moved from UIProcess/mac/WKInspectorWindow.h.
        * UIProcess/API/Cocoa/_WKInspectorWindow.mm: Moved from UIProcess/mac/WKInspectorWindow.mm.
        (-[WKInspectorWindow isRemote]): Added.

        * Shared/API/Cocoa/_WKNSWindowExtras.mm:
        (-[NSWindow _web_isWebInspectorWindow]):

        * PlatformMac.cmake:
        * SourcesCocoa.txt:
        * UnifiedSources-input.xcfilelist:
        * WebKit.xcodeproj/project.pbxproj:

2019-01-29  Alex Christensen  <achristensen@webkit.org>

        Rename ChildProcess to AuxiliaryProcess
        https://bugs.webkit.org/show_bug.cgi?id=193943

        Reviewed by Andy Estes.

        "Child" implies that there is a parent, but I'm about to introduce a type of NetworkProcess that
        doesn't always have a parent, and may have many UIProcesses that it is the auxiliary for.

        * CMakeLists.txt:
        * DerivedSources-input.xcfilelist:
        * DerivedSources-output.xcfilelist:
        * DerivedSources.make:
        * NetworkProcess/Cookies/WebCookieManager.cpp:
        * NetworkProcess/Cookies/soup/WebCookieManagerSoup.cpp:
        * NetworkProcess/EntryPoint/mac/XPCService/NetworkServiceEntryPoint.mm:
        (WebKit::initializeAuxiliaryProcess<NetworkProcess>):
        (WebKit::initializeChildProcess<NetworkProcess>): Deleted.
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::callExitSoon):
        (WebKit::NetworkProcess::NetworkProcess):
        (WebKit::NetworkProcess::didReceiveMessage):
        (WebKit::NetworkProcess::initializeConnection):
        (WebKit::NetworkProcess::terminate):
        (WebKit::NetworkProcess::initializeProcess):
        (WebKit::NetworkProcess::initializeProcessName):
        (WebKit::NetworkProcess::initializeSandbox):
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcessSupplement.h:
        * NetworkProcess/cache/NetworkCacheStorage.cpp:
        (WebKit::NetworkCache::Storage::deleteOldVersions):
        * NetworkProcess/ios/NetworkProcessIOS.mm:
        (WebKit::NetworkProcess::initializeProcess):
        (WebKit::NetworkProcess::initializeProcessName):
        (WebKit::NetworkProcess::initializeSandbox):
        * NetworkProcess/mac/NetworkProcessMac.mm:
        (WebKit::NetworkProcess::initializeProcess):
        (WebKit::NetworkProcess::initializeProcessName):
        (WebKit::NetworkProcess::initializeSandbox):
        * NetworkProcess/soup/NetworkProcessMainSoup.cpp:
        (WebKit::initializeAuxiliaryProcess<NetworkProcess>):
        (WebKit::NetworkProcessMainUnix):
        (WebKit::initializeChildProcess<NetworkProcess>): Deleted.
        * NetworkProcess/watchos/NetworkProximityManager.h:
        * NetworkProcess/watchos/NetworkProximityManager.mm:
        (WebKit::NetworkProximityManager::NetworkProximityManager):
        * NetworkProcess/win/NetworkProcessMainWin.cpp:
        (WebKit::initializeAuxiliaryProcess<NetworkProcess>):
        (WebKit::NetworkProcessMainWin):
        (WebKit::initializeChildProcess<NetworkProcess>): Deleted.
        * PlatformGTK.cmake:
        * PlatformMac.cmake:
        * PlatformWin.cmake:
        * PluginProcess/PluginProcess.cpp:
        (WebKit::PluginProcess::initializeProcess):
        (WebKit::PluginProcess::initializeConnection):
        (WebKit::PluginProcess::didReceiveMessage):
        (WebKit::PluginProcess::initializeProcessName):
        (WebKit::PluginProcess::initializeSandbox):
        * PluginProcess/PluginProcess.h:
        * PluginProcess/mac/PluginProcessMac.mm:
        (WebKit::PluginProcess::platformInitializeProcess):
        (WebKit::PluginProcess::initializeProcessName):
        (WebKit::PluginProcess::initializeSandbox):
        (WebKit::PluginProcess::stopRunLoop):
        * PluginProcess/unix/PluginProcessMainUnix.cpp:
        (WebKit::PluginProcessMainUnix):
        * PluginProcess/unix/PluginProcessUnix.cpp:
        (WebKit::PluginProcess::platformInitializeProcess):
        * Shared/Authentication/AuthenticationManager.cpp:
        (WebKit::AuthenticationManager::AuthenticationManager):
        * Shared/Authentication/AuthenticationManager.h:
        * Shared/AuxiliaryProcess.cpp: Copied from Source/WebKit/Shared/ChildProcess.cpp.
        (WebKit::AuxiliaryProcess::AuxiliaryProcess):
        (WebKit::AuxiliaryProcess::~AuxiliaryProcess):
        (WebKit::AuxiliaryProcess::didClose):
        (WebKit::AuxiliaryProcess::initialize):
        (WebKit::AuxiliaryProcess::setProcessSuppressionEnabled):
        (WebKit::AuxiliaryProcess::initializeProcess):
        (WebKit::AuxiliaryProcess::initializeProcessName):
        (WebKit::AuxiliaryProcess::initializeConnection):
        (WebKit::AuxiliaryProcess::addMessageReceiver):
        (WebKit::AuxiliaryProcess::removeMessageReceiver):
        (WebKit::AuxiliaryProcess::disableTermination):
        (WebKit::AuxiliaryProcess::enableTermination):
        (WebKit::AuxiliaryProcess::messageSenderConnection):
        (WebKit::AuxiliaryProcess::messageSenderDestinationID):
        (WebKit::AuxiliaryProcess::terminationTimerFired):
        (WebKit::AuxiliaryProcess::stopRunLoop):
        (WebKit::AuxiliaryProcess::platformStopRunLoop):
        (WebKit::AuxiliaryProcess::terminate):
        (WebKit::AuxiliaryProcess::shutDown):
        (WebKit::AuxiliaryProcess::registerURLSchemeServiceWorkersCanHandle const):
        (WebKit::AuxiliaryProcess::platformInitialize):
        (WebKit::AuxiliaryProcess::initializeSandbox):
        (WebKit::AuxiliaryProcess::didReceiveInvalidMessage):
        (WebKit::AuxiliaryProcess::didReceiveMemoryPressureEvent):
        (WebKit::ChildProcess::ChildProcess): Deleted.
        (WebKit::ChildProcess::~ChildProcess): Deleted.
        (WebKit::ChildProcess::didClose): Deleted.
        (WebKit::ChildProcess::initialize): Deleted.
        (WebKit::ChildProcess::setProcessSuppressionEnabled): Deleted.
        (WebKit::ChildProcess::initializeProcess): Deleted.
        (WebKit::ChildProcess::initializeProcessName): Deleted.
        (WebKit::ChildProcess::initializeConnection): Deleted.
        (WebKit::ChildProcess::addMessageReceiver): Deleted.
        (WebKit::ChildProcess::removeMessageReceiver): Deleted.
        (WebKit::ChildProcess::disableTermination): Deleted.
        (WebKit::ChildProcess::enableTermination): Deleted.
        (WebKit::ChildProcess::messageSenderConnection): Deleted.
        (WebKit::ChildProcess::messageSenderDestinationID): Deleted.
        (WebKit::ChildProcess::terminationTimerFired): Deleted.
        (WebKit::ChildProcess::stopRunLoop): Deleted.
        (WebKit::ChildProcess::platformStopRunLoop): Deleted.
        (WebKit::ChildProcess::terminate): Deleted.
        (WebKit::ChildProcess::shutDown): Deleted.
        (WebKit::ChildProcess::registerURLSchemeServiceWorkersCanHandle const): Deleted.
        (WebKit::ChildProcess::platformInitialize): Deleted.
        (WebKit::ChildProcess::initializeSandbox): Deleted.
        (WebKit::ChildProcess::didReceiveInvalidMessage): Deleted.
        (WebKit::ChildProcess::didReceiveMemoryPressureEvent): Deleted.
        * Shared/AuxiliaryProcess.h: Copied from Source/WebKit/Shared/ChildProcess.h.
        (WebKit::ChildProcess::parentProcessConnection const): Deleted.
        (WebKit::ChildProcess::messageReceiverMap): Deleted.
        (WebKit::ChildProcess::setTerminationTimeout): Deleted.
        (WebKit::ChildProcess::shouldOverrideQuarantine): Deleted.
        * Shared/AuxiliaryProcess.messages.in: Copied from Source/WebKit/Shared/ChildProcess.messages.in.
        * Shared/AuxiliaryProcessSupplement.h: Copied from Source/WebKit/Shared/ChildProcessSupplement.h.
        (WebKit::AuxiliaryProcessSupplement::~AuxiliaryProcessSupplement):
        (WebKit::ChildProcessSupplement::~ChildProcessSupplement): Deleted.
        (WebKit::ChildProcessSupplement::initializeConnection): Deleted.
        * Shared/ChildProcess.cpp: Removed.
        * Shared/ChildProcess.h: Removed.
        * Shared/ChildProcess.messages.in: Removed.
        * Shared/ChildProcessSupplement.h: Removed.
        * Shared/Cocoa/AuxiliaryProcessCocoa.mm: Copied from Source/WebKit/Shared/Cocoa/ChildProcessCocoa.mm.
        (WebKit::AuxiliaryProcess::didReceiveInvalidMessage):
        (WebKit::ChildProcess::didReceiveInvalidMessage): Deleted.
        * Shared/Cocoa/ChildProcessCocoa.mm: Removed.
        * Shared/EntryPointUtilities/mac/XPCService/XPCServiceEntryPoint.h:
        (WebKit::initializeAuxiliaryProcess):
        (WebKit::XPCServiceInitializer):
        (WebKit::initializeChildProcess): Deleted.
        * Shared/WebSQLiteDatabaseTracker.cpp:
        (WebKit::WebSQLiteDatabaseTracker::WebSQLiteDatabaseTracker):
        (WebKit::WebSQLiteDatabaseTracker::hysteresisUpdated):
        (WebKit::m_childProcessType): Deleted.
        * Shared/WebSQLiteDatabaseTracker.h:
        * Shared/ios/AuxiliaryProcessIOS.mm: Copied from Source/WebKit/Shared/ios/ChildProcessIOS.mm.
        (WebKit::AuxiliaryProcess::platformInitialize):
        (WebKit::AuxiliaryProcess::initializeSandbox):
        (WebKit::AuxiliaryProcess::setQOS):
        (WebKit::AuxiliaryProcess::platformStopRunLoop):
        (WebKit::ChildProcess::platformInitialize): Deleted.
        (WebKit::ChildProcess::initializeSandbox): Deleted.
        (WebKit::ChildProcess::setQOS): Deleted.
        (WebKit::ChildProcess::platformStopRunLoop): Deleted.
        * Shared/ios/ChildProcessIOS.mm: Removed.
        * Shared/mac/AuxiliaryProcessMac.mm: Copied from Source/WebKit/Shared/mac/ChildProcessMac.mm.
        (WebKit::SandboxInfo::SandboxInfo):
        (WebKit::AuxiliaryProcess::launchServicesCheckIn):
        (WebKit::AuxiliaryProcess::platformInitialize):
        (WebKit::processStorageClass):
        (WebKit::sandboxDirectory):
        (WebKit::applySandbox):
        (WebKit::initializeSandboxParameters):
        (WebKit::AuxiliaryProcess::initializeSandbox):
        (WebKit::AuxiliaryProcess::stopNSAppRunLoop):
        (WebKit::AuxiliaryProcess::stopNSRunLoop):
        (WebKit::AuxiliaryProcess::platformStopRunLoop):
        (WebKit::AuxiliaryProcess::setQOS):
        (WebKit::AuxiliaryProcess::isSystemWebKit):
        (WebKit::ChildProcess::launchServicesCheckIn): Deleted.
        (WebKit::ChildProcess::platformInitialize): Deleted.
        (WebKit::ChildProcess::initializeSandbox): Deleted.
        (WebKit::ChildProcess::stopNSAppRunLoop): Deleted.
        (WebKit::ChildProcess::stopNSRunLoop): Deleted.
        (WebKit::ChildProcess::platformStopRunLoop): Deleted.
        (WebKit::ChildProcess::setQOS): Deleted.
        (WebKit::ChildProcess::isSystemWebKit): Deleted.
        * Shared/mac/ChildProcessMac.mm: Removed.
        * Shared/mac/SecItemShim.cpp:
        (WebKit::globalNetworkProcess):
        (WebKit::sendSecItemRequest):
        (WebKit::initializeSecItemShim):
        * Shared/mac/SecItemShim.h:
        * Shared/unix/AuxiliaryProcessMain.cpp: Copied from Source/WebKit/Shared/unix/ChildProcessMain.cpp.
        (WebKit::AuxiliaryProcessMainBase::parseCommandLine):
        (WebKit::ChildProcessMainBase::parseCommandLine): Deleted.
        * Shared/unix/AuxiliaryProcessMain.h: Copied from Source/WebKit/Shared/unix/ChildProcessMain.h.
        (WebKit::AuxiliaryProcessMainBase::takeInitializationParameters):
        (WebKit::initializeAuxiliaryProcess):
        (WebKit::AuxiliaryProcessMain):
        (WebKit::ChildProcessMainBase::platformInitialize): Deleted.
        (WebKit::ChildProcessMainBase::platformFinalize): Deleted.
        (WebKit::ChildProcessMainBase::takeInitializationParameters): Deleted.
        (WebKit::initializeChildProcess): Deleted.
        (WebKit::ChildProcessMain): Deleted.
        * Shared/unix/ChildProcessMain.cpp: Removed.
        * Shared/unix/ChildProcessMain.h: Removed.
        * Shared/win/AuxiliaryProcessMainWin.cpp: Copied from Source/WebKit/Shared/win/ChildProcessMainWin.cpp.
        (WebKit::AuxiliaryProcessMainBase::parseCommandLine):
        (WebKit::ChildProcessMainBase::parseCommandLine): Deleted.
        * Shared/win/ChildProcessMainWin.cpp: Removed.
        * Sources.txt:
        * SourcesCocoa.txt:
        * SourcesGTK.txt:
        * SourcesWPE.txt:
        * UIProcess/Authentication/AuthenticationChallengeProxy.cpp:
        * UIProcess/Authentication/AuthenticationChallengeProxy.h:
        * UIProcess/AuxiliaryProcessProxy.cpp: Copied from Source/WebKit/UIProcess/ChildProcessProxy.cpp.
        (WebKit::AuxiliaryProcessProxy::AuxiliaryProcessProxy):
        (WebKit::AuxiliaryProcessProxy::~AuxiliaryProcessProxy):
        (WebKit::AuxiliaryProcessProxy::getLaunchOptions):
        (WebKit::AuxiliaryProcessProxy::connect):
        (WebKit::AuxiliaryProcessProxy::terminate):
        (WebKit::AuxiliaryProcessProxy::state const):
        (WebKit::AuxiliaryProcessProxy::sendMessage):
        (WebKit::AuxiliaryProcessProxy::addMessageReceiver):
        (WebKit::AuxiliaryProcessProxy::removeMessageReceiver):
        (WebKit::AuxiliaryProcessProxy::dispatchMessage):
        (WebKit::AuxiliaryProcessProxy::dispatchSyncMessage):
        (WebKit::AuxiliaryProcessProxy::didFinishLaunching):
        (WebKit::AuxiliaryProcessProxy::shutDownProcess):
        (WebKit::AuxiliaryProcessProxy::setProcessSuppressionEnabled):
        (WebKit::AuxiliaryProcessProxy::connectionWillOpen):
        (WebKit::ChildProcessProxy::ChildProcessProxy): Deleted.
        (WebKit::ChildProcessProxy::~ChildProcessProxy): Deleted.
        (WebKit::ChildProcessProxy::getLaunchOptions): Deleted.
        (WebKit::ChildProcessProxy::connect): Deleted.
        (WebKit::ChildProcessProxy::terminate): Deleted.
        (WebKit::ChildProcessProxy::state const): Deleted.
        (WebKit::ChildProcessProxy::sendMessage): Deleted.
        (WebKit::ChildProcessProxy::addMessageReceiver): Deleted.
        (WebKit::ChildProcessProxy::removeMessageReceiver): Deleted.
        (WebKit::ChildProcessProxy::dispatchMessage): Deleted.
        (WebKit::ChildProcessProxy::dispatchSyncMessage): Deleted.
        (WebKit::ChildProcessProxy::didFinishLaunching): Deleted.
        (WebKit::ChildProcessProxy::shutDownProcess): Deleted.
        (WebKit::ChildProcessProxy::setProcessSuppressionEnabled): Deleted.
        (WebKit::ChildProcessProxy::connectionWillOpen): Deleted.
        * UIProcess/AuxiliaryProcessProxy.h: Copied from Source/WebKit/UIProcess/ChildProcessProxy.h.
        (WebKit::AuxiliaryProcessProxy::send):
        (WebKit::AuxiliaryProcessProxy::sendSync):
        (WebKit::AuxiliaryProcessProxy::sendWithAsyncReply):
        (WebKit::ChildProcessProxy::send): Deleted.
        (WebKit::ChildProcessProxy::sendSync): Deleted.
        (WebKit::ChildProcessProxy::connection const): Deleted.
        (WebKit::ChildProcessProxy::hasConnection const): Deleted.
        (WebKit::ChildProcessProxy::processIdentifier const): Deleted.
        (WebKit::ChildProcessProxy::canSendMessage const): Deleted.
        (WebKit::ChildProcessProxy::coreProcessIdentifier const): Deleted.
        (WebKit::ChildProcessProxy::platformGetLaunchOptions): Deleted.
        (WebKit::ChildProcessProxy::sendWithAsyncReply): Deleted.
        * UIProcess/ChildProcessProxy.cpp: Removed.
        * UIProcess/ChildProcessProxy.h: Removed.
        * UIProcess/Downloads/DownloadProxyMap.cpp:
        (WebKit::DownloadProxyMap::DownloadProxyMap):
        * UIProcess/Downloads/DownloadProxyMap.h:
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::NetworkProcessProxy):
        (WebKit::NetworkProcessProxy::getLaunchOptions):
        (WebKit::NetworkProcessProxy::createDownloadProxy):
        (WebKit::NetworkProcessProxy::didFinishLaunching):
        * UIProcess/Network/NetworkProcessProxy.h:
        * UIProcess/Plugins/PluginProcessProxy.cpp:
        (WebKit::PluginProcessProxy::getLaunchOptions):
        (WebKit::PluginProcessProxy::sendMemoryPressureEvent):
        * UIProcess/Plugins/PluginProcessProxy.h:
        * UIProcess/ServiceWorkerProcessProxy.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::finishAttachingToWebProcess):
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::sendMemoryPressureEvent):
        (WebKit::WebProcessPool::registerURLSchemeServiceWorkersCanHandle):
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::WebProcessProxy):
        (WebKit::WebProcessProxy::getLaunchOptions):
        (WebKit::WebProcessProxy::didFinishLaunching):
        (WebKit::WebProcessProxy::maybeShutDown):
        (WebKit::WebProcessProxy::canTerminateAuxiliaryProcess):
        (WebKit::WebProcessProxy::shouldTerminate):
        (WebKit::WebProcessProxy::requestTermination):
        (WebKit::WebProcessProxy::canTerminateChildProcess): Deleted.
        * UIProcess/WebProcessProxy.h:
        * UnifiedSources-input.xcfilelist:
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::initializeProcess):
        (WebKit::WebProcess::initializeConnection):
        (WebKit::WebProcess::terminate):
        (WebKit::WebProcess::didReceiveMessage):
        (WebKit::WebProcess::initializeProcessName):
        (WebKit::WebProcess::initializeSandbox):
        (WebKit::WebProcess::platformInitializeProcess):
        * WebProcess/WebProcess.h:
        * WebProcess/WebProcessSupplement.h:
        * WebProcess/cocoa/WebProcessCocoa.mm:
        (WebKit::WebProcess::initializeProcessName):
        (WebKit::WebProcess::platformInitializeProcess):
        (WebKit::WebProcess::stopRunLoop):
        (WebKit::WebProcess::initializeSandbox):
        * WebProcess/gtk/WebProcessMainGtk.cpp:
        (WebKit::WebProcessMainUnix):
        * WebProcess/win/WebProcessMainWin.cpp:
        (WebKit::WebProcessMainWin):
        * WebProcess/wpe/WebProcessMainWPE.cpp:
        (WebKit::WebProcessMainUnix):

2019-01-29  Simon Fraser  <simon.fraser@apple.com>

        REGRESSION(r240553): [iOS] Crash in ScrollingTree::updateTreeFromStateNode when attempting to log in to icloud.com
        https://bugs.webkit.org/show_bug.cgi?id=193907

        Reviewed by Frédéric Wang.

        Remove encode/decode of removedNodes.

        * Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp:
        (WebKit::RemoteScrollingCoordinatorTransaction::encode const):
        (WebKit::RemoteScrollingCoordinatorTransaction::decode):
        (WebKit::dump):

2019-01-29  Brent Fulgham  <bfulgham@apple.com>

        StorageAccess API calls should be direct to the Network Process
        https://bugs.webkit.org/show_bug.cgi?id=193924
        <rdar://problem/47611249>

        Reviewed by Alex Christensen.

        Now that the ResourceLoadStatistics data lives in the Network Process, calls to Storage Access
        API should happen directly between the WebContent and Network processes.

        * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::requestStorageAccessGranted):
        * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h:
        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::removeStorageAccessForFrame):
        (WebKit::NetworkConnectionToWebProcess::removeStorageAccessForAllFramesOnPage):
        (WebKit::NetworkConnectionToWebProcess::logUserInteraction):
        (WebKit::NetworkConnectionToWebProcess::logWebSocketLoading):
        (WebKit::NetworkConnectionToWebProcess::logSubresourceLoading):
        (WebKit::NetworkConnectionToWebProcess::logSubresourceRedirect):
        (WebKit::NetworkConnectionToWebProcess::requestResourceLoadStatisticsUpdate):
        (WebKit::NetworkConnectionToWebProcess::hasStorageAccess):
        (WebKit::NetworkConnectionToWebProcess::requestStorageAccess):
        * NetworkProcess/NetworkConnectionToWebProcess.h:
        * NetworkProcess/NetworkConnectionToWebProcess.messages.in:
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::requestStorageAccess):
        (WebKit::NetworkProcess::requestStorageAccessGranted):
        * NetworkProcess/NetworkProcess.h:
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::requestStorageAccessConfirm):
        * UIProcess/Network/NetworkProcessProxy.h:
        * UIProcess/Network/NetworkProcessProxy.messages.in:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::requestStorageAccessConfirm):
        (WebKit::WebPageProxy::hasStorageAccess): Deleted.
        (WebKit::WebPageProxy::requestStorageAccess): Deleted.
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::hasStorageAccess):
        (WebKit::WebPage::requestStorageAccess):
        (WebKit::nextRequestStorageAccessContextId): Deleted.
        (WebKit::WebPage::storageAccessResponse): Deleted.
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:

2019-01-29  Chris Dumez  <cdumez@apple.com>

        Regression (r240046): [PSON] Spurious changes to [WKWebView url] and [WKWebView loading] after [WKWebView loadRequest]
        https://bugs.webkit.org/show_bug.cgi?id=193967
        <rdar://problem/47635348>

        Reviewed by Alex Christensen.

        Update WebPageProxy::receivedPolicyDecision() to no longer clear the pending URL when we send PolicyAction::Ignore to
        the old process when the load is continuing in a new process due to PSON.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::receivedNavigationPolicyDecision):
        (WebKit::WebPageProxy::receivedPolicyDecision):
        * UIProcess/WebPageProxy.h:

2019-01-29  Keith Rollin  <krollin@apple.com>

        Add .xcfilelists to Run Script build phases
        https://bugs.webkit.org/show_bug.cgi?id=193792
        <rdar://problem/47201785>

        Reviewed by Alex Christensen.

        As part of supporting XCBuild, update the necessary Run Script build
        phases in their Xcode projects to refer to their associated
        .xcfilelist files.

        Note that the addition of these files bumps the Xcode project version
        number to something that's Xcode 10 compatible. This change means that
        older versions of the Xcode IDE can't read these projects. Nor can it
        fully load workspaces that refer to these projects (the updated
        projects are shown as non-expandable placeholders). `xcodebuild` can
        still build these projects; it's just that the IDE can't open them.

        Make special accommodations for incorporating .xcfilelists from
        WebKitAdditions.

        * Configurations/Base.xcconfig:
        * Configurations/DebugRelease.xcconfig:
        * WebKit.xcodeproj/project.pbxproj:

2019-01-29  Antti Koivisto  <antti@apple.com>

        REGRESSION (PSON): Flash on link navigation on Mac
        https://bugs.webkit.org/show_bug.cgi?id=193961
        <rdar://problem/47482507>

        Reviewed by Chris Dumez.

        The target page sends EnterAcceleratedCompositingMode message too early, before we have a valid layer tree.

        * WebProcess/WebPage/DrawingArea.h:
        (WebKit::DrawingArea::attach): Deleted.

        Not needed anymore.

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::reinitializeWebPage):
        (WebKit::WebPage::didCompletePageTransition):
        (WebKit::m_shouldAttachDrawingAreaOnPageTransition): Deleted.

        Move message sending logic fully to TiledCoreAnimationDrawingArea.
        Unfreezing the layer tree is sufficient to trigger the message.

        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
        (WebKit::TiledCoreAnimationDrawingArea::TiledCoreAnimationDrawingArea):

        There is no need to treat process swap case differently.

        (WebKit::TiledCoreAnimationDrawingArea::sendEnterAcceleratedCompositingModeIfNeeded):

        Send this after the first successful layer flush with the root layer set.

        (WebKit::TiledCoreAnimationDrawingArea::flushLayers):
        (WebKit::TiledCoreAnimationDrawingArea::attach): Deleted.

2019-01-29  Timothy Hatcher  <timothy@apple.com>

        Add back some includes that got removed at some point.
        https://bugs.webkit.org/show_bug.cgi?id=193942

        Reviewed by Tim Horton.

        * UIProcess/API/Cocoa/WKWebView.mm:
        * UIProcess/API/Cocoa/WKWebViewInternal.h:
        * UIProcess/ios/PageClientImplIOS.h:
        * UIProcess/ios/PageClientImplIOS.mm:

2019-01-29  Chris Dumez  <cdumez@apple.com>

        Make sure WTF::generateObjectIdentifier() internal counter does not get duplicated
        https://bugs.webkit.org/show_bug.cgi?id=193848

        Reviewed by Youenn Fablet.

        * Platform/IPC/Connection.cpp:
        (IPC::Connection::Connection):
        * UIProcess/ChildProcessProxy.h:
        * UIProcess/UserContent/WebUserContentControllerProxy.cpp:
        (WebKit::WebUserContentControllerProxy::WebUserContentControllerProxy):
        * UIProcess/WebBackForwardList.cpp:
        (WebKit::WebBackForwardList::restoreFromState):
        * UIProcess/WebProcessPool.cpp:
        * WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp:
        (WebKit::UserMediaPermissionRequestManager::addDeviceChangeObserver):

2019-01-29  Chris Dumez  <cdumez@apple.com>

        REGRESSION (PSON): Twitter link gets stuck at t.co after navigating back in tab
        https://bugs.webkit.org/show_bug.cgi?id=193932
        <rdar://problem/47598947>

        Reviewed by Brady Eidson.

        When doing a client side redirect from origin A to origin B, we would swap process and
        create a SuspendedPageProxy and save it on the source BackForwardListItem. The issue is
        that the BackForwardList is locked for such redirect so we end up updating the current
        BackForwardListItem with origin B's URL while origin A's suspended page remained on
        the item. When going to another URL in the same origin A, we would not create a suspended
        page since no process-swap would occur. When pressing the back button, we would go back
        to the previous BackForwardListItem and use its SuspendedPageProxy, which is for the
        wrong URL (The pre-client redirect one).

        To address the issue, we no longer create a SuspendedPageProxy for cross-site client side
        redirects. There will be no way no go back to this suspended page anyway since the
        back/forward list item will be updated with the redirection URL.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::suspendCurrentPageIfPossible):

2019-01-29  Chris Dumez  <cdumez@apple.com>

        Regression(r240046) VoiceOver is no longer working after a process swap
        https://bugs.webkit.org/show_bug.cgi?id=193953
        <rdar://problem/47612398>

        Reviewed by Alex Christensen.

        ProvisionalPageProxy used to forward the RegisterWebProcessAccessibilityToken IPC from
        the provisional WebProcess to the WebPageProxy right away. This in turn would notify
        the PageClient whose logic would rely on WebPageProxy::process(), which returns the
        committed process instead of the provisional one.

        To address the issue, the ProvisionalPageProxy now stores the token sent by the
        provisional WebProcess and we only call registerWebProcessAccessibilityToken()
        on the WebPageProxy *after* we've swapped to the provisional process.

        * UIProcess/ProvisionalPageProxy.cpp:
        (WebKit::ProvisionalPageProxy::registerWebProcessAccessibilityToken):
        (WebKit::ProvisionalPageProxy::didReceiveMessage):
        * UIProcess/ProvisionalPageProxy.h:
        (WebKit::ProvisionalPageProxy::takeAccessibilityToken):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::commitProvisionalPage):

2019-01-28  Ryosuke Niwa  <rniwa@webkit.org>

        User agent string override for navigator.userAgent should be site specific quirks
        https://bugs.webkit.org/show_bug.cgi?id=193950

        Reviewed by Brent Fulgham.

        Renamed the various member variables, functions, properties and selectors.

        * Shared/WebsitePoliciesData.cpp:
        (WebKit::WebsitePoliciesData::encode const):
        (WebKit::WebsitePoliciesData::decode):
        (WebKit::WebsitePoliciesData::applyToDocumentLoader):
        * Shared/WebsitePoliciesData.h:
        * UIProcess/API/APIWebsitePolicies.cpp:
        (API::WebsitePolicies::data):
        * UIProcess/API/APIWebsitePolicies.h:
        * UIProcess/API/Cocoa/_WKWebsitePolicies.h:
        * UIProcess/API/Cocoa/_WKWebsitePolicies.mm:
        (-[_WKWebsitePolicies setCustomJavaScriptUserAgentAsSiteSpecificQuirks:]): Renamed from setCustomJavaScriptUserAgent.
        (-[_WKWebsitePolicies customJavaScriptUserAgentAsSiteSpecificQuirks]): Renamed from customJavaScriptUserAgent.

2019-01-28  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r240630.
        https://bugs.webkit.org/show_bug.cgi?id=193958

        Broke Apple internal builds (Requested by rniwa on #webkit).

        Reverted changeset:

        "Add back some includes that got removed at some point."
        https://bugs.webkit.org/show_bug.cgi?id=193942
        https://trac.webkit.org/changeset/240630

2019-01-28  Devin Rousso  <drousso@apple.com>

        Web Inspector: provide a way to edit page WebRTC settings on a remote target
        https://bugs.webkit.org/show_bug.cgi?id=193863
        <rdar://problem/47572764>

        Reviewed by Joseph Pecoraro.

        * Shared/WebPreferences.yaml:
        Add page-level settings for WebRTC preferences.

2019-01-28  Ross Kirsling  <ross.kirsling@sony.com>

        Remove unnecessary `using namespace WTF`s (or at least restrict their scope).
        https://bugs.webkit.org/show_bug.cgi?id=193941

        Reviewed by Alex Christensen.

        * Shared/linux/WebMemorySamplerLinux.cpp:

2019-01-28  Fujii Hironori  <Hironori.Fujii@sony.com>

        [Win] WebCore/platform/Process.h is conflicting with process.h
        https://bugs.webkit.org/show_bug.cgi?id=193944

        Reviewed by Ross Kirsling.

        * Shared/ChildProcess.h:
        * Shared/EntryPointUtilities/mac/XPCService/XPCServiceEntryPoint.mm:
        * Shared/unix/ChildProcessMain.cpp:
        * UIProcess/API/APINavigation.h:
        * UIProcess/ChildProcessProxy.h:
        * UIProcess/Launcher/ProcessLauncher.h:
        * UIProcess/WebProcessPool.cpp:
        * UIProcess/WebProcessProxy.h:

2019-01-28  Jon Lee  <jonlee@apple.com>

        Update Screen Capture preference
        https://bugs.webkit.org/show_bug.cgi?id=193947
        rdar://problem/47620199

        Reviewed by Youenn Fablet.

        * Shared/WebPreferences.yaml:

2019-01-28  Andy Estes  <aestes@apple.com>

        [watchOS] Enable Parental Controls content filtering
        https://bugs.webkit.org/show_bug.cgi?id=193939
        <rdar://problem/46641912>

        Reviewed by Ryosuke Niwa.

        * Configurations/FeatureDefines.xcconfig:

2019-01-28  David Kilzer  <ddkilzer@apple.com>

        REGRESSION (r236481): Move soft-linking of LocalAuthentication.framework out of LocalAuthenticationSoftLink.h
        <https://webkit.org/b/193884>

        Reviewed by Jiewen Tan.

        * SourcesCocoa.txt:
        * UnifiedSources-input.xcfilelist:
        * WebKit.xcodeproj/project.pbxproj:
        - Add LocalAuthenticationSoftLink.mm to the project.

        * UIProcess/WebAuthentication/Cocoa/LocalAuthenticationSoftLink.h:
        * UIProcess/WebAuthentication/Cocoa/LocalAuthenticationSoftLink.mm: Copied from Source/WebKit/UIProcess/WebAuthentication/Cocoa/LocalAuthenticationSoftLink.h.
        - Move soft-linking implementation to
          LocalAuthenticationSoftLink.mm.

2019-01-28  Timothy Hatcher  <timothy@apple.com>

        Add back some includes that got removed at some point.
        https://bugs.webkit.org/show_bug.cgi?id=193942

        Reviewed by Tim Horton.

        * UIProcess/API/Cocoa/WKWebView.mm:
        * UIProcess/API/Cocoa/WKWebViewInternal.h:
        * UIProcess/ios/PageClientImplIOS.h:
        * UIProcess/ios/PageClientImplIOS.mm:

2019-01-28  Timothy Hatcher  <timothy@apple.com>

        Make it easier for non-Apple ports to enable dark mode CSS support.
        https://bugs.webkit.org/show_bug.cgi?id=193882

        Reviewed by Megan Gardner.

        Make modern WebKit code for dark mode usable by other ports, to match
        the WebCore parts that have been cross-platform all along.

        * Shared/WebPageCreationParameters.cpp:
        (WebKit::WebPageCreationParameters::encode const):
        (WebKit::WebPageCreationParameters::decode):
        * Shared/WebPageCreationParameters.h:
        * UIProcess/PageClient.h:
        (WebKit::PageClient::effectiveAppearanceIsDark const):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::creationParameters):
        (WebKit::WebPageProxy::useDarkAppearance const):
        (WebKit::WebPageProxy::effectiveAppearanceDidChange):
        * UIProcess/WebPageProxy.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::m_shouldAttachDrawingAreaOnPageTransition):
        (WebKit::WebPage::setUseDarkAppearance):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:

2019-01-28  Andy Estes  <aestes@apple.com>

        [Cocoa] Add SPI to _WKUserContentExtensionStore to retrieve its underlying WKContentRuleListStore
        https://bugs.webkit.org/show_bug.cgi?id=193927

        Reviewed by Tim Horton.

        This is useful for clients migrating from _WKUserContentExtensionStore to the modern
        WKContentRuleList* APIs.

        * UIProcess/API/Cocoa/_WKUserContentExtensionStore.mm:
        (-[_WKUserContentExtensionStore _contentRuleListStore]):
        * UIProcess/API/Cocoa/_WKUserContentExtensionStorePrivate.h:

2019-01-28  David Kilzer  <ddkilzer@apple.com>

        Move soft-linking of ManagedConfiguration.framework out of ManagedConfigurationSPI.h
        <https://webkit.org/b/193868>

        Reviewed by Daniel Bates.

        * Platform/spi/ios/ManagedConfigurationSPI.h:
        - Remove soft-linking code from header.
        - Add PLATFORM(IOS_FAMILY) && !PLATFORM(IOSMAC) guard.

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView canPerformActionForWebView:withSender:]):
        (-[WKContentView _defineForWebView:]):
        - Add soft-linking code formerly in ManagedConfigurationSPI.h.
        - Change MCFeatureDefinitionLookupAllowed to use soft-link
          function getMCFeatureDefinitionLookupAllowed() to remove the
          #define.

2019-01-28  Per Arne Vollan  <pvollan@apple.com>

        REGRESSION (r240348): Loading netflix home page panics device
        https://bugs.webkit.org/show_bug.cgi?id=193936

        Reviewed by Alexey Proskuryakov.

        Temporarily enable permissive call filtering.

        * WebProcess/com.apple.WebProcess.sb.in:

2019-01-28  Joseph Pecoraro  <pecoraro@apple.com>

        [iOS] Attempting to open a Keynote document to iCloud.com from iCloud Files causes crash
        https://bugs.webkit.org/show_bug.cgi?id=193456
        <rdar://problem/47275642>

        Reviewed by Brent Fulgham.

        * Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
        Allow access to iconservices.

2019-01-28  Daniel Bates  <dabates@apple.com>

        [iOS] Make Window virtual key code computation match Mac
        https://bugs.webkit.org/show_bug.cgi?id=193452

        Reviewed by Ryosuke Niwa.

        Compute the Windows virtual key code from the WebEvent.

        * Shared/ios/WebIOSEventFactory.mm:
        (WebIOSEventFactory::createWebKeyboardEvent):

2019-01-28  Brent Fulgham  <bfulgham@apple.com>

        REGRESSION (r240498): Storage Access API prompts result is not remembered
        https://bugs.webkit.org/show_bug.cgi?id=193922
        <rdar://problem/47608767>

        Reviewed by Chris Dumez.

        The refactoring in r240498 bypassed bookkeeping in ResourceLoadStatisticsMemoryStore
        that kept track of whether a successful user prompt had been encountered. This
        patch corrects this codepath so the user is not prompted repeatedly after approving
        use of the Storage Access API.

        * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::grantStorageAccess): Switch from Move operator to
        const reference to allow the method to be called by the NetworkProcess.
        * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h:
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::grantStorageAccess): Request access through the WebResourceLoadStatistics
        object, rather than jumping directly to the NetworkStorageSession.

2019-01-28  Chris Dumez  <cdumez@apple.com>

        Regression(PSON) Crash under WebPageProxy::didStartProgress()
        https://bugs.webkit.org/show_bug.cgi?id=193915
        <rdar://problem/47560907>

        Reviewed by Alex Christensen.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::close):
        Make sure we destroy the ProvisionalPageProxy if the page gets closed as we do not want to keep receiving
        IPC after this or even worse, commit the provisional page.

        (WebKit::WebPageProxy::didStartProgress):
        Add an assertion in didStartProgress() to make sure we do not receive this IPC after the page has been
        closed.

2019-01-28  Antoine Quint  <graouts@apple.com>

        Limit user-agent interactions based on the touch-action property on iOS
        https://bugs.webkit.org/show_bug.cgi?id=193447

        Unreviewed build fix.

        * UIProcess/API/Cocoa/WKWebView.mm:

2019-01-28  Antoine Quint  <graouts@apple.com>

        Limit user-agent interactions based on the touch-action property on iOS
        https://bugs.webkit.org/show_bug.cgi?id=193447

        Unreviewed build fix.

        * UIProcess/ios/WKContentViewInteraction.mm:

2019-01-28  Brent Fulgham  <bfulgham@apple.com>

        Remove the UIProcess components of the ResourceLoadStatistics code
        https://bugs.webkit.org/show_bug.cgi?id=193303
        <rdar://problem/47160073>

        Reviewed by Chris Dumez.

        Now that the ResourceLoadStatistics code is running in the NetworkProcess, we can get rid
        of the UIProcess copies of these routines.

        Tested by existing ResourceLoadStatistics and StorageAccess tests.

        * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp:
        (WebKit::ResourceLoadStatisticsMemoryStore::updateClientSideCookiesAgeCap):
        * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::callHasStorageAccessForFrameHandler):
        (WebKit::WebResourceLoadStatisticsStore::callGrantStorageAccessHandler):
        (WebKit::WebResourceLoadStatisticsStore::removeAllStorageAccess):
        (WebKit::WebResourceLoadStatisticsStore::setCacheMaxAgeCap):
        (WebKit::WebResourceLoadStatisticsStore::callUpdatePrevalentDomainsToBlockCookiesForHandler):
        (WebKit::WebResourceLoadStatisticsStore::callRemoveDomainsHandler):
        (WebKit::WebResourceLoadStatisticsStore::logTestingEvent):
        (WebKit::WebResourceLoadStatisticsStore::notifyResourceLoadStatisticsProcessed):
        (WebKit::WebResourceLoadStatisticsStore::deleteWebsiteDataForTopPrivatelyControlledDomainsInAllPersistentDataStores):
        (WebKit::WebResourceLoadStatisticsStore::topPrivatelyControlledDomainsWithWebsiteData):
        (WebKit::WebResourceLoadStatisticsStore::sendDiagnosticMessageWithValue const):
        (WebKit::WebResourceLoadStatisticsStore::notifyPageStatisticsTelemetryFinished const):
        * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h:
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::deleteWebsiteDataForTopPrivatelyControlledDomainsInAllPersistentDataStores): Deleted.
        (WebKit::WebProcessProxy::topPrivatelyControlledDomainsWithWebsiteData): Deleted.
        * UIProcess/WebProcessProxy.h:
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::fetchDataForTopPrivatelyControlledDomains):
        (WebKit::WebsiteDataStore::removeData):
        (WebKit::WebsiteDataStore::setMaxStatisticsEntries):
        (WebKit::WebsiteDataStore::setPruneEntriesDownTo):
        (WebKit::WebsiteDataStore::setGrandfatheringTime):
        (WebKit::WebsiteDataStore::setMinimumTimeBetweenDataRecordsRemoval):
        (WebKit::WebsiteDataStore::dumpResourceLoadStatistics):
        (WebKit::WebsiteDataStore::isPrevalentResource):
        (WebKit::WebsiteDataStore::setPrevalentResource):
        (WebKit::WebsiteDataStore::setPrevalentResourceForDebugMode):
        (WebKit::WebsiteDataStore::isVeryPrevalentResource):
        (WebKit::WebsiteDataStore::setVeryPrevalentResource):
        (WebKit::WebsiteDataStore::setShouldClassifyResourcesBeforeDataRecordsRemoval):
        (WebKit::WebsiteDataStore::setSubframeUnderTopFrameOrigin):
        (WebKit::WebsiteDataStore::isRegisteredAsSubFrameUnder):
        (WebKit::WebsiteDataStore::setSubresourceUnderTopFrameOrigin):
        (WebKit::WebsiteDataStore::isRegisteredAsSubresourceUnder):
        (WebKit::WebsiteDataStore::setSubresourceUniqueRedirectTo):
        (WebKit::WebsiteDataStore::setSubresourceUniqueRedirectFrom):
        (WebKit::WebsiteDataStore::setTopFrameUniqueRedirectTo):
        (WebKit::WebsiteDataStore::setTopFrameUniqueRedirectFrom):
        (WebKit::WebsiteDataStore::isRegisteredAsRedirectingTo):
        (WebKit::WebsiteDataStore::clearPrevalentResource):
        (WebKit::WebsiteDataStore::resetParametersToDefaultValues):
        (WebKit::WebsiteDataStore::submitTelemetry):
        (WebKit::WebsiteDataStore::scheduleClearInMemoryAndPersistent):
        (WebKit::WebsiteDataStore::scheduleCookieBlockingUpdate):
        (WebKit::WebsiteDataStore::scheduleStatisticsAndDataRecordsProcessing):
        (WebKit::WebsiteDataStore::setLastSeen):
        (WebKit::WebsiteDataStore::setNotifyPagesWhenDataRecordsWereScanned):
        (WebKit::WebsiteDataStore::setNotifyPagesWhenTelemetryWasCaptured):
        (WebKit::WebsiteDataStore::hasStorageAccess):
        (WebKit::WebsiteDataStore::requestStorageAccess):
        (WebKit::WebsiteDataStore::grantStorageAccess):
        (WebKit::WebsiteDataStore::setTimeToLiveUserInteraction):
        (WebKit::WebsiteDataStore::logUserInteraction):
        (WebKit::WebsiteDataStore::hasHadUserInteraction):
        (WebKit::WebsiteDataStore::clearUserInteraction):
        (WebKit::WebsiteDataStore::setGrandfathered):
        (WebKit::WebsiteDataStore::webProcessWillOpenConnection):
        (WebKit::WebsiteDataStore::webProcessDidCloseConnection):
        (WebKit::WebsiteDataStore::setResourceLoadStatisticsDebugMode):
        (WebKit::WebsiteDataStore::didCreateNetworkProcess):
        (WebKit::WebsiteDataStore::topPrivatelyControlledDomainsWithWebsiteData): Deleted.
        (WebKit::WebsiteDataStore::removeDataForTopPrivatelyControlledDomains): Deleted.
        (WebKit::WebsiteDataStore::setCacheMaxAgeCap): Deleted.
        (WebKit::WebsiteDataStore::updatePrevalentDomainsToBlockCookiesFor): Deleted.
        (WebKit::WebsiteDataStore::setAgeCapForClientSideCookies): Deleted.
        (WebKit::WebsiteDataStore::hasStorageAccessForFrameHandler): Deleted.
        (WebKit::WebsiteDataStore::grantStorageAccessHandler): Deleted.
        (WebKit::WebsiteDataStore::removeAllStorageAccessHandler): Deleted.
        (WebKit::WebsiteDataStore::removePrevalentDomains): Deleted.
        (WebKit::WebsiteDataStore::isGrandfathered): Deleted.
        * UIProcess/WebsiteData/WebsiteDataStore.h:

2019-01-28  Antoine Quint  <graouts@apple.com>

        Limit user-agent interactions based on the touch-action property on iOS
        https://bugs.webkit.org/show_bug.cgi?id=193447
        <rdar://problem/47283874>

        Reviewed by Antti Koivisto and Simon Fraser.

        Handle the "none", "pan-x", "pan-y" and "pinch-zoom" values for the touch-action property by querying the scrolling tree whenever a touch begins
        to identify whether its point is contained within the region of an element with a non-auto touch-action property. If it is, we use the list of
        permitted touch actions such to then customize the behavior of the nearest scroll view to pan or zoom only as instructed.

        * Shared/WebCoreArgumentCoders.cpp:
        (IPC::ArgumentCoder<TouchActionData>::encode):
        (IPC::ArgumentCoder<TouchActionData>::decode):
        (IPC::ArgumentCoder<EventTrackingRegions>::encode):
        (IPC::ArgumentCoder<EventTrackingRegions>::decode):
        (IPC::ArgumentCoder<Region>::decode):
        * Shared/WebCoreArgumentCoders.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView scrollViewWillEndDragging:withVelocity:targetContentOffset:]): Account for panning constraints set on the content view to prevent deceleration
        to pan the view if it ought not.
        (-[WKWebView _scrollView:adjustedOffsetForOffset:translation:startPoint:locationInView:horizontalVelocity:verticalVelocity:]): Implement an additional
        UIScrollView delegation method to apply the panning constraints set on the content view while panning.
        * UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.cpp:
        (WebKit::RemoteScrollingCoordinatorProxy::touchActionDataAtPoint const):
        (WebKit::RemoteScrollingCoordinatorProxy::touchActionDataForScrollNodeID const):
        (WebKit::RemoteScrollingCoordinatorProxy::setTouchDataForTouchIdentifier):
        (WebKit::RemoteScrollingCoordinatorProxy::clearTouchDataForTouchIdentifier):
        * UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.h:
        * UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.h:
        * UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.mm:
        (-[WKScrollingNodeScrollViewDelegate scrollViewWillEndDragging:withVelocity:targetContentOffset:]): Apply the same logic as in WKWebView.
        (-[WKScrollingNodeScrollViewDelegate _scrollView:adjustedOffsetForOffset:translation:startPoint:locationInView:horizontalVelocity:verticalVelocity:]): Apply
        the same logic as in WKWebView.
        (WebKit::ScrollingTreeScrollingNodeDelegateIOS::touchActionData const):
        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::isScrollingOrZooming const):
        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView preventsPanningInXAxis]):
        (-[WKContentView preventsPanningInYAxis]):
        (-[WKContentView cleanupInteraction]):
        (-[WKContentView _webTouchEventsRecognized:]):
        (-[WKContentView _handleTouchActionsForTouchEvent:]): As we process touches, check whether there are touch actions set for this touch's points' locations. Based
        on those touch actions, either setDefaultPrevented on the _touchEventGestureRecognizer if the touch action is "none" or selectively disable panning and zooming.
        (-[WKContentView _resetPanningPreventionFlags]):
        (-[WKContentView _didEndScrollingOrZooming]):

2019-01-28  Antti Koivisto  <antti@apple.com>

        WebUserContentController::removeUserScriptMessageHandlerInternal may deref and delete itself
        https://bugs.webkit.org/show_bug.cgi?id=193901
        <rdar://problem/47338669>

        Reviewed by David Kilzer.

        Don't know how to repro.

        * WebProcess/UserContent/WebUserContentController.cpp:
        (WebKit::WebUserContentController::removeUserScriptMessageHandlerInternal):

        Calling userMessageHandlers.removeFirstMatching() may remove the last ref to this
        (because WebUserMessageHandlerDescriptorProxy refs WebUserContentController).
        Fix by protecting this over the function.

2018-12-15  Darin Adler  <darin@apple.com>

        Replace many uses of String::format with more type-safe alternatives
        https://bugs.webkit.org/show_bug.cgi?id=192742

        Reviewed by Mark Lam.

        * Shared/WebMemorySampler.cpp:
        (WebKit::WebMemorySampler::writeHeaders): Use makeString.

        * UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm:
        (WebKit::LocalAuthenticator::makeCredential): Use string concatentation.

        * UIProcess/WebInspectorUtilities.cpp:
        (WebKit::inspectorPageGroupIdentifierForPage): Use makeString.
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::processDidFinishLaunching): Ditto.
        (WebKit::WebProcessPool::startMemorySampler): Ditto.

2019-01-27  Jiewen Tan  <jiewen_tan@apple.com>

        Use a load optimizer for some sites
        https://bugs.webkit.org/show_bug.cgi?id=193881
        <rdar://problem/46325455>

        Reviewed by Brent Fulgham.

        We will try to speed up some sites with a dedicated load optimizer. The load optimizer lives
        within the WebsiteDataStore as one client instance should have only one and it should live
        as long as the client lives. How does the load optimizer work? It intercepts every load in
        the navigation state. If a request meets some requirements, it will then fetch the request
        from its own cache. Once the fetch succeeds, the original load will be ignored and the
        optimizer will display the cached content.

        Covered by API tests.

        * SourcesCocoa.txt:
        * UIProcess/Cocoa/LoadOptimizer.h: Added.
        * UIProcess/Cocoa/LoadOptimizer.mm: Added.
        * UIProcess/Cocoa/MediaCaptureUtilities.h:
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::tryInterceptNavigation):
        (WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction):
        (WebKit::tryAppLink): Deleted.
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::WebsiteDataStore):
        * UIProcess/WebsiteData/WebsiteDataStore.h:
        (WebKit::WebsiteDataStore::loadOptimizer):
        * WebKit.xcodeproj/project.pbxproj:

2019-01-25  Brian Burg  <bburg@apple.com>

        Web Automation: add support for simulating single touches to Automation.performInteractionSequence
        https://bugs.webkit.org/show_bug.cgi?id=193852
        <rdar://problem/28360781>

        Reviewed by Joseph Pecoraro and Simon Fraser.

        This patch makes it possible to simulate touches via the Actions API. The approach is to
        use a stripped down version of HIDEventGenerator to send HID events to the UIWindow.
        The initial version supports a single touch point; this may be expanded if needed, but
        so far it hasn't been an impediment when running desktop-oriented WebDriver test suites.

        As part of implementing this support, I went through and added [somewhat obnoxious] ENABLE()
        guards so that we don't mistakenly compile mouse support on iOS and touch on Mac,
        and vice versa. Each of the interaction methods---touch, mouse, keyboard---can be independently
        compiled out. If none is supported (i.e., Windows), then we don't even try to compile
        platformSimulate*Interaction methods or SimulatedInputDispatcher. This allows WebAutomationSession
        to not include members and code that are never going to be used on a particular platform.

        This functionality is covered by existing WebDriver test suites that use Element Click command.
        Additional tests that explicitly include 'touch' pointerType will be submitted to WPT later.

        * UIProcess/Automation/Automation.json: Update comment.

        * UIProcess/Automation/SimulatedInputDispatcher.h:
        * UIProcess/Automation/SimulatedInputDispatcher.cpp:
        (WebKit::SimulatedInputDispatcher::transitionInputSourceToState):
        - Add appropriate guards for code specific to each interaction type.
        - Handle SimulatedInputSourceType::Touch and call out to dispatch events.

        * UIProcess/Automation/WebAutomationSession.h:
        * UIProcess/Automation/WebAutomationSession.cpp:
        (WebKit::WebAutomationSession::WebAutomationSession):
        (WebKit::WebAutomationSession::terminate):
        (WebKit::WebAutomationSession::willShowJavaScriptDialog):
        (WebKit::WebAutomationSession::mouseEventsFlushedForPage):
        (WebKit::WebAutomationSession::keyboardEventsFlushedForPage):
        (WebKit::WebAutomationSession::willClosePage):
        Add appropriate guards for code specific to each interaction type.

        (WebKit::WebAutomationSession::isSimulatingUserInteraction const):
        Add new hook so that we can detect when a touch simulation is in progress.
        We don't rely on checking WebKit's event queue, so use a flag.

        (WebKit::WebAutomationSession::simulateTouchInteraction):
        (WebKit::WebAutomationSession::performMouseInteraction):
        (WebKit::WebAutomationSession::performKeyboardInteractions):
        (WebKit::WebAutomationSession::cancelInteractionSequence):
        (WebKit::WebAutomationSession::performInteractionSequence):
        - Add appropriate guards for code specific to each interaction type.
        - Bail out immediately if a requested interaction type is not supported.
        - Shim Touch input type to Mouse if mouse is not supported but touches are.
        Nearly all WebDriver tests in the wild will be requesting a 'mouse' pointerType,
        so this is necessary for compatibility. It's easier to shim at this level than try
        to implement platformSimulateMouseInteraction for iOS because
        platformSimulateMouseinteraction does not use a completion handler but the iOS
        implementation would require that.

        (WebKit::WebAutomationSession::platformSimulateMouseInteraction): Deleted.
        (WebKit::WebAutomationSession::platformSimulateKeyboardInteraction): Deleted.
        - Remove these stubs. Platform methods of this class are no longer being filled
        with stubs on unsupported platforms because we expect the command to fail earlier.

        * UIProcess/Automation/ios/WebAutomationSessionIOS.mm:
        (WebKit::WebAutomationSession::platformSimulateTouchInteraction):
        - Add appropriate guards for code specific to each interaction type.
        - Implement new platform method to simulate touches. This uses _WKTouchEventGenerator.

        * UIProcess/Automation/mac/WebAutomationSessionMac.mm:
        Add appropriate guards for code specific to each interaction type.

        * UIProcess/_WKTouchEventGenerator.h: Added.
        * UIProcess/_WKTouchEventGenerator.mm: Added.
        (simpleCurveInterpolation):
        (calculateNextCurveLocation):
        (delayBetweenMove):
        (+[_WKTouchEventGenerator sharedTouchEventGenerator]):
        (+[_WKTouchEventGenerator nextEventCallbackID]):
        (-[_WKTouchEventGenerator init]):
        (-[_WKTouchEventGenerator dealloc]):
        (-[_WKTouchEventGenerator _createIOHIDEventType:]):
        (-[_WKTouchEventGenerator _sendHIDEvent:]):
        (-[_WKTouchEventGenerator _sendMarkerHIDEventWithCompletionBlock:]):
        (-[_WKTouchEventGenerator _updateTouchPoints:count:]):
        (-[_WKTouchEventGenerator touchDownAtPoints:touchCount:]):
        (-[_WKTouchEventGenerator touchDown:touchCount:]):
        (-[_WKTouchEventGenerator touchDown:]):
        (-[_WKTouchEventGenerator liftUpAtPoints:touchCount:]):
        (-[_WKTouchEventGenerator liftUp:touchCount:]):
        (-[_WKTouchEventGenerator liftUp:]):
        (-[_WKTouchEventGenerator moveToPoints:touchCount:duration:]):
        (-[_WKTouchEventGenerator touchDown:completionBlock:]):
        (-[_WKTouchEventGenerator liftUp:completionBlock:]):
        (-[_WKTouchEventGenerator moveToPoint:duration:completionBlock:]):
        (-[_WKTouchEventGenerator receivedHIDEvent:]):
        Copied and simplified from HIDEventGenerator in WebKitTestRunner.

        * WebKit.xcodeproj/project.pbxproj:
        Add _WKTouchEventGenerator.{h,mm} and make it a private header. The client needs to
        route received HID events to -receivedHIDEvent: in order to detect when the marker
        HID event has been processed (and thus the interaction is completed).

        * config.h: Add ENABLE(WEBDRIVER_*_INTERACTIONS) macros here.

2019-01-26  Simon Fraser  <simon.fraser@apple.com>

        Have composited RenderIFrame layers make FrameHosting scrolling tree nodes to parent the iframe's scrolling node
        https://bugs.webkit.org/show_bug.cgi?id=193879

        Reviewed by Antti Koivisto.

        Need a specialization of dump() for ScrollingStateFrameHostingNode to avoid infinite recursion.

        * Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp:
        (WebKit::dump):

2019-01-27  Chris Fleizach  <cfleizach@apple.com>

        AX: Introduce a static accessibility tree
        https://bugs.webkit.org/show_bug.cgi?id=193348
        <rdar://problem/47203295>

        Reviewed by Ryosuke Niwa.

        * Configurations/FeatureDefines.xcconfig:
        * WebProcess/WebPage/mac/WKAccessibilityWebPageObjectBase.mm:
        (-[WKAccessibilityWebPageObjectBase accessibilityRootObjectWrapper]):

2019-01-26  Simon Fraser  <simon.fraser@apple.com>

        Allow scrolling tree nodes to exist in a detached state
        https://bugs.webkit.org/show_bug.cgi?id=193754

        Reviewed by Zalan Bujtas.

        * Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp:
        (WebKit::RemoteScrollingCoordinatorTransaction::decode):

2019-01-25  Tim Horton  <timothy_horton@apple.com>

        REGRESSION (r238818): Snapshot is removed too late after swiping back on Twitter
        https://bugs.webkit.org/show_bug.cgi?id=193860
        <rdar://problem/47535022>

        Reviewed by Antti Koivisto.

        * UIProcess/Cocoa/ViewGestureController.cpp:
        (WebKit::ViewGestureController::didStartProvisionalOrSameDocumentLoadForMainFrame):
        (WebKit::ViewGestureController::didStartProvisionalLoadForMainFrame):
        (WebKit::ViewGestureController::didSameDocumentNavigationForMainFrame):
        * UIProcess/Cocoa/ViewGestureController.h:
        Treat provisional load and same document load the same: they already both
        unpause the snapshot removal tracker, request render tree size notifications,
        but same-document navigation was missing the call to dispatchAfterEnsuringDrawing
        and thus would get stuck waiting for RepaintAfterNavigation.

2019-01-25  Ryosuke Niwa  <rniwa@webkit.org>

        Need a mechanism to override navigator.userAgent
        https://bugs.webkit.org/show_bug.cgi?id=193762
        <rdar://problem/47504939>

        Reviewed by Brent Fulgham.

        This patch adds a new _WKWebsitePolicies SPI to specify the user agent string returned by
        navigator.userAgent without affecting the user agent string used to send network requests.

        Tests: WebKit.WebsitePoliciesCustomJavaScriptUserAgent
               WebKit.WebsitePoliciesCustomUserAgents

        * Shared/WebsitePoliciesData.cpp:
        (WebKit::WebsitePoliciesData::encode const):
        (WebKit::WebsitePoliciesData::decode):
        (WebKit::WebsitePoliciesData::applyToDocumentLoader):
        * Shared/WebsitePoliciesData.h:
        * UIProcess/API/APIWebsitePolicies.cpp:
        (API::WebsitePolicies::data):
        * UIProcess/API/APIWebsitePolicies.h:
        * UIProcess/API/Cocoa/_WKWebsitePolicies.h:
        * UIProcess/API/Cocoa/_WKWebsitePolicies.mm:
        (-[_WKWebsitePolicies setCustomJavaScriptUserAgent:]):
        (-[_WKWebsitePolicies customJavaScriptUserAgent]):

2019-01-25  Devin Rousso  <drousso@apple.com>

        Web Inspector: provide a way to edit page settings on a remote target
        https://bugs.webkit.org/show_bug.cgi?id=193813
        <rdar://problem/47359510>

        Reviewed by Joseph Pecoraro.

        * WebProcess/WebPage/WebInspectorUI.h:
        (WebKit::WebInspectorUI::isRemote() const): Added.
        * WebProcess/WebPage/RemoteWebInspectorUI.h:
        (WebKit::RemoteWebInspectorUI::isRemote() const): Added.

2019-01-25  Dean Jackson  <dino@apple.com>

        REGRESSION: Some USDz from 3rd party websites don't go directly to AR QL
        https://bugs.webkit.org/show_bug.cgi?id=193831
        <rdar://problem/47399263>

        Reviewed by Chris Dumez.

        A System Preview (<a rel="ar">) displays in a modal and doesn't trigger
        a navigation. If the link was cross origin, it was causing a process swap,
        which meant that the response defaulted back to a navigation.

        The fix is to not cause a PSON when the navigation is a system preview.

        * UIProcess/API/APINavigation.h:
        (API::Navigation::shouldForceDownload const): This is now just tracking
        the "download" attribute, and not including System Preview.
        (API::Navigation::isSystemPreview const): New method to check for a
        navigation triggered as a System Preview.
        * UIProcess/WebPageProxy.cpp: Move the code from receivedPolicyDecision to
        receivedNavigationPolicyDecision, so that downloads and System Previews are
        detected before we decide to change process.
        (WebKit::WebPageProxy::receivedNavigationPolicyDecision):
        (WebKit::WebPageProxy::receivedPolicyDecision):

2019-01-25  Tim Horton  <timothy_horton@apple.com>

        Find-in-page on nyt.com scrolls around without touching the screen when find holes are visible
        https://bugs.webkit.org/show_bug.cgi?id=193853

        Reviewed by Simon Fraser.

        * WebProcess/WebPage/ios/FindControllerIOS.mm:
        (WebKit::FindController::updateFindIndicator):
        There is no reason to scroll/zoom to the find indicator just because the
        holes are up, we should only do it on initial indicator presentation.
        This was a mistake in r178755 that was previously never exercised because
        isShowingOverlay was always false.

2019-01-25  Keith Rollin  <krollin@apple.com>

        Update Xcode projects with "Check .xcfilelists" build phase
        https://bugs.webkit.org/show_bug.cgi?id=193790
        <rdar://problem/47201374>

        Reviewed by Alex Christensen.

        Support for XCBuild includes specifying inputs and outputs to various
        Run Script build phases. These inputs and outputs are specified as
        .xcfilelist files. Once created, these .xcfilelist files need to be
        kept up-to-date. In order to check that they are up-to-date or not,
        add an Xcode build step that invokes an external script that performs
        the checking. If the .xcfilelists are found to be out-of-date, update
        them, halt the build, and instruct the developer to restart the build
        with up-to-date files.

        At this time, the checking and regenerating is performed only if the
        WK_ENABLE_CHECK_XCFILELISTS environment variable is set to 1. People
        who want to use this facility can set this variable and test out the
        checking/regenerating. Once it seems like there are no egregious
        issues that upset a developer's workflow, we'll unconditionally enable
        this facility.

        * Scripts/check-xcfilelists.sh: Added.
        * WebKit.xcodeproj/project.pbxproj:

2019-01-25  Alex Christensen  <achristensen@webkit.org>

        Move logic from ChildProcess::setApplicationIsDaemon to NetworkProcess::initializeProcess
        https://bugs.webkit.org/show_bug.cgi?id=193844

        Reviewed by Andy Estes.

        This simplifies ChildProcess and removes NetworkProcess-specific code from this generic abstraction.

        * NetworkProcess/mac/NetworkProcessMac.mm:
        (WebKit::NetworkProcess::initializeProcess):
        * Shared/ios/ChildProcessIOS.mm:
        (WebKit::ChildProcess::setApplicationIsDaemon): Deleted.
        * Shared/mac/ChildProcessMac.mm:
        (WebKit::ChildProcess::setApplicationIsDaemon): Deleted.

2019-01-25  Keith Rollin  <krollin@apple.com>

        Update Xcode projects with "Apply Configuration to XCFileLists" build target
        https://bugs.webkit.org/show_bug.cgi?id=193781
        <rdar://problem/47201153>

        Reviewed by Alex Christensen.

        Part of generating the .xcfilelists used as part of adopting XCBuild
        includes running `make DerivedSources.make` from a standalone script.
        It’s important for this invocation to have the same environment as
        when the actual build invokes `make DerivedSources.make`. If the
        environments are different, then the two invocations will provide
        different results. In order to get the same environment in the
        standalone script, have the script launch xcodebuild targeting the
        "Apply Configuration to XCFileLists" build target, which will then
        re-invoke our standalone script. The script is now running again, this
        time in an environment with all workspace, project, target, xcconfig
        and other environment variables established.

        The "Apply Configuration to XCFileLists" build target accomplishes
        this task via a small embedded shell script that consists only of:

            eval "${WK_SUBLAUNCH_SCRIPT_PARAMETERS[@]}"

        The process that invokes "Apply Configuration to XCFileLists" first
        sets WK_SUBLAUNCH_SCRIPT_PARAMETERS to an array of commands to be
        evaluated and exports it into the shell environment. When xcodebuild
        is invoked, it inherits the value of this variable and can `eval` the
        contents of that variable. Our external standalone script can then set
        WK_SUBLAUNCH_SCRIPT_PARAMETERS to the path to itself, along with a set
        of command-line parameters needed to restart itself in the appropriate
        state.

        * WebKit.xcodeproj/project.pbxproj:

2019-01-25  Alex Christensen  <achristensen@webkit.org>

        Add SPI to inform an application that "Go Back" has been clicked from a safe browsing warning
        https://bugs.webkit.org/show_bug.cgi?id=193802
        <rdar://problem/46010580>

        Reviewed by Andy Estes.

        * UIProcess/API/APIUIClient.h:
        (API::UIClient::didClickGoBackFromSafeBrowsingWarning):
        * UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
        * UIProcess/Cocoa/UIDelegate.h:
        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::UIDelegate::setDelegate):
        (WebKit::UIDelegate::UIClient::didClickGoBackFromSafeBrowsingWarning):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::decidePolicyForNavigationAction):

2019-01-25  Daniel Bates  <dabates@apple.com>

        [iOS] Pressing Tab key doesn't move to next cell with Google Sheets
        https://bugs.webkit.org/show_bug.cgi?id=193048
        <rdar://problem/46433836>

        Reviewed by Brent Fulgham.

        WebCore knows how interpret the Tab and Shift + Tab keys. When building with UIKit keyboard additions
        we do not need to register key commands for handling them from the UIProcess code. Instead UIKit will
        sends key events for these commands to us. This will make the behavior of these key commands when executed
        in an editable field match the behavior of these command when executed in a non-editable field since
        both code paths will now go through WebCore.

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView keyCommands]): Only compile when building with !USE(UIKIT_KEYBOARD_ADDITIONS).

2019-01-25  Alex Christensen  <achristensen@webkit.org>

        Fix Linux build.

        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::requestResourceLoadStatisticsUpdate):

2019-01-25  Keith Rollin  <krollin@apple.com>

        Update WebKitAdditions.xcconfig with correct order of variable definitions
        https://bugs.webkit.org/show_bug.cgi?id=193793
        <rdar://problem/47532439>

        Reviewed by Alex Christensen.

        XCBuild changes the way xcconfig variables are evaluated. In short,
        all config file assignments are now considered in part of the
        evaluation. When using the new build system and an .xcconfig file
        contains multiple assignments of the same build setting:

        - Later assignments using $(inherited) will inherit from earlier
          assignments in the xcconfig file.
        - Later assignments not using $(inherited) will take precedence over
          earlier assignments. An assignment to a more general setting will
          mask an earlier assignment to a less general setting. For example,
          an assignment without a condition ('FOO = bar') will completely mask
          an earlier assignment with a condition ('FOO[sdk=macos*] = quux').

        This affects some of our .xcconfig files, in that sometimes platform-
        or sdk-specific definitions appear before the general definitions.
        Under the new evaluations rules, the general definitions alway take
        effect because they always overwrite the more-specific definitions. The
        solution is to swap the order, so that the general definitions are
        established first, and then conditionally overwritten by the
        more-specific definitions.

        * Configurations/BaseTarget.xcconfig:
        * Configurations/Version.xcconfig:
        * Configurations/WebKit.xcconfig:

2019-01-25  Keith Rollin  <krollin@apple.com>

        Update existing .xcfilelists
        https://bugs.webkit.org/show_bug.cgi?id=193791
        <rdar://problem/47201706>

        Reviewed by Alex Christensen.

        Many .xcfilelist files were added in r238824 in order to support
        XCBuild. Update these with recent changes to the set of build files
        and with the current generate-xcfilelist script.

        * DerivedSources-input.xcfilelist:
        * DerivedSources-output.xcfilelist:
        * UnifiedSources-input.xcfilelist:
        * UnifiedSources-output.xcfilelist:

2019-01-25  Per Arne Vollan  <pvollan@apple.com>

        [iOS] Deny mach lookups to services not used.
        https://bugs.webkit.org/show_bug.cgi?id=193828

        Reviewed by Brent Fulgham.

        Start denying mach lookups to iOS services, which were previously allowed with reporting.
        Living-on has indicated that these services are not used.

        * Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:

2019-01-25  Brent Fulgham  <bfulgham@apple.com>

        Activate the WebResourceLoadStatisticsStore in the NetworkProcess and deactivate it in the UIProcess.
        https://bugs.webkit.org/show_bug.cgi?id=193297
        <rdar://problem/47158841>

        Reviewed by Alex Christensen.

        This patch activates the ResourceLoadStatistics code in the NetworkProcess, and turns
        it off in the UIProcess. It also updates test infrastructure to work with this change
        in architecture.

        * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp:
        (WebKit::ResourceLoadStatisticsMemoryStore::logSubresourceLoading): Added.
        (WebKit::ResourceLoadStatisticsMemoryStore::logSubresourceRedirect): Added.
        (WebKit::ResourceLoadStatisticsMemoryStore::logWebSocketLoading): Added.
        * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::logSubresourceLoading): Added.
        (WebKit::WebResourceLoadStatisticsStore::logSubresourceRedirect): Added.
        (WebKit::WebResourceLoadStatisticsStore::logWebSocketLoading): Added.
        (WebKit::WebResourceLoadStatisticsStore::removeAllStorageAccess):
        (WebKit::WebResourceLoadStatisticsStore::setCacheMaxAgeCap):
        (WebKit::WebResourceLoadStatisticsStore::setCacheMaxAgeCapForPrevalentResources): Deleted.
        * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h:
        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::logSubresourceLoading): Added.
        (WebKit::NetworkConnectionToWebProcess::logSubresourceRedirect): Added.
        (WebKit::NetworkConnectionToWebProcess::logWebSocketLoading): Added.
        * NetworkProcess/NetworkConnectionToWebProcess.messages.in:
        * NetworkProcess/NetworkSession.cpp:
        (WebKit::NetworkSession::setResourceLoadStatisticsEnabled):
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::ensureNetworkProcess):
        * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:
        (WebKit::WebsiteDataStore::parameters):
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::removeData):
        (WebKit::WebsiteDataStore::setResourceLoadStatisticsEnabled):
        (WebKit::WebsiteDataStore::enableResourceLoadStatisticsAndSetTestingCallback):
        * Webprocess/WebProcess.cpp:
        (WebKit::WebProcess::initializeWebProcess): Register new ResourceLoadObserver callbacks.

2019-01-25  Ryosuke Niwa  <rniwa@webkit.org>

        iOS: inputmode="none" disables hardware keyboard's globe key
        https://bugs.webkit.org/show_bug.cgi?id=193811
        <rdar://problem/47406553>

        Reviewed by Wenson Hsieh.

        Removed the support for inputmode="none" for now since we need a new SPI from UIKit
        to properly implement this feature some time in the future.

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _zoomToRevealFocusedElement]):
        (-[WKContentView inputView]):
        (-[WKContentView requiresAccessoryView]):
        (-[WKContentView textInputTraits]):

2019-01-25  David Kilzer  <ddkilzer@apple.com>

        Move soft-linking of Lookup.framework out of LookupSPI.h
        <https://webkit.org/b/193815>

        Reviewed by Tim Horton.

        * UIProcess/Cocoa/WebViewImpl.mm:
        (-[WKWindowVisibilityObserver dealloc]):
        (-[WKWindowVisibilityObserver startObservingLookupDismissalIfNeeded]):
        - Move soft-linking to LookupSoftLink.{h,mm}.

2019-01-25  Antti Koivisto  <antti@apple.com>

        REGRESSION (PSON): After swipe back, first few attempts to swipe forward not recognized as swipe gestures
        https://bugs.webkit.org/show_bug.cgi?id=193818
        <rdar://problem/47456584>

        Reviewed by Tim Horton.

        We don't hit the RenderTreeSizeThreshold milestone to remove the snapshot and allow interaction because we request it
        from a wrong process (the one we are leaving behind).

        * UIProcess/Cocoa/ViewGestureController.cpp:
        (WebKit::ViewGestureController::didStartProvisionalLoadForMainFrame):

        Request the RenderTreeSizeThreshold notification when the load has started and we know the process to use.

        (WebKit::ViewGestureController::SnapshotRemovalTracker::hasOutstandingEvent):
        * UIProcess/Cocoa/ViewGestureController.h:
        (WebKit::ViewGestureController::SnapshotRemovalTracker::renderTreeSizeThreshold const):
        (WebKit::ViewGestureController::SnapshotRemovalTracker::setRenderTreeSizeThreshold):
        * UIProcess/mac/ViewGestureControllerMac.mm:
        (WebKit::ViewGestureController::endSwipeGesture):

        Don't request immediately, save the threshold to SnapshotRemovalTracker.

        (WebKit::ViewGestureController::requestRenderTreeSizeNotificationIfNeeded):

        Do the request to the right process.

        * WebProcess/WebPage/ViewGestureGeometryCollector.cpp:
        (WebKit::ViewGestureGeometryCollector::setRenderTreeSizeNotificationThreshold):

        Ensure we send the notification even if we reached the threshold before it was requested.

        (WebKit::ViewGestureGeometryCollector::sendDidHitRenderTreeSizeThresholdIfNeeded):
        (WebKit::ViewGestureGeometryCollector::mainFrameDidLayout):
        * WebProcess/WebPage/ViewGestureGeometryCollector.h:
        (WebKit::ViewGestureGeometryCollector::setRenderTreeSizeNotificationThreshold): Deleted.

2019-01-25  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] Rename some WebKit-internal functions and variables that reference "data interaction"
        https://bugs.webkit.org/show_bug.cgi?id=193829

        Reviewed by Tim Horton.

        * UIProcess/Cocoa/WebPageProxyCocoa.mm:
        (WebKit::WebPageProxy::setDragCaretRect):
        * UIProcess/PageClient.h:
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * UIProcess/ios/PageClientImplIOS.h:
        * UIProcess/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::didHandleDragStartRequest):
        (WebKit::PageClientImpl::didConcludeEditDrag):
        (WebKit::PageClientImpl::didChangeDragCaretRect):
        (WebKit::PageClientImpl::didHandleStartDataInteractionRequest): Deleted.
        (WebKit::PageClientImpl::didConcludeEditDataInteraction): Deleted.
        (WebKit::PageClientImpl::didChangeDataInteractionCaretRect): Deleted.
        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView setupInteraction]):
        (-[WKContentView cleanupInteraction]):
        (-[WKContentView setupDragAndDropInteractions]):
        (-[WKContentView teardownDragAndDropInteractions]):
        (-[WKContentView _didHandleDragStartRequest:]):
        (-[WKContentView _didConcludeEditDrag:]):
        (-[WKContentView _didChangeDragCaretRect:currentRect:]):
        (-[WKContentView _dragInteraction:prepareForSession:completion:]):
        (-[WKContentView setupDataInteractionDelegates]): Deleted.
        (-[WKContentView teardownDataInteractionDelegates]): Deleted.
        (-[WKContentView _didHandleStartDataInteractionRequest:]): Deleted.
        (-[WKContentView _didConcludeEditDataInteraction:]): Deleted.
        (-[WKContentView _didChangeDataInteractionCaretRect:currentRect:]): Deleted.
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::didHandleDragStartRequest):
        (WebKit::WebPageProxy::requestDragStart):
        (WebKit::WebPageProxy::didConcludeEditDrag):
        (WebKit::WebPageProxy::didHandleStartDataInteractionRequest): Deleted.
        (WebKit::WebPageProxy::requestStartDataInteraction): Deleted.
        (WebKit::WebPageProxy::didConcludeEditDataInteraction): Deleted.
        * WebProcess/WebCoreSupport/mac/WebDragClientMac.mm:
        (WebKit::WebDragClient::didConcludeEditDrag):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::requestDragStart):
        (WebKit::WebPage::requestAdditionalItemsForDragSession):
        (WebKit::WebPage::didConcludeEditDrag):
        (WebKit::WebPage::requestStartDataInteraction): Deleted.
        (WebKit::WebPage::didConcludeEditDataInteraction): Deleted.

2019-01-25  Alex Christensen  <achristensen@webkit.org>

        WKWebView.goBack should reload if there is a safe browsing warning
        https://bugs.webkit.org/show_bug.cgi?id=193805
        <rdar://problem/46908216>

        Reviewed by Geoff Garen.

        If a WKWebView is showing a safe browsing warning and the user clicks a back button
        in the app which calls WKWebView.goBack, the WKWebView is in a state where it has not navigated yet,
        so actually going back will appear to the user to go back twice.  We can't just do nothing because the
        app is in a state where it is expecting a navigation to happen.  Reloading achieves what the user expects
        and makes the app work like the app expects.

        * UIProcess/API/C/WKPage.cpp:
        (WKPageGoBack):
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView goBack]):
        * UIProcess/PageClient.h:
        (WebKit::PageClient::hasSafeBrowsingWarning const):
        * UIProcess/mac/PageClientImplMac.h:
        * UIProcess/mac/PageClientImplMac.mm:
        (WebKit::PageClientImpl::hasSafeBrowsingWarning const):

2019-01-25  Chris Dumez  <cdumez@apple.com>

        Regression(PSON) cross-site provisional page is not canceled if a new same-site one is started
        https://bugs.webkit.org/show_bug.cgi?id=193788
        <rdar://problem/47531231>

        Reviewed by Alex Christensen.

        When the page starts a new provisional load, make sure we cancel any pending one in the provisional
        process, as it would have happened in the first provisional load happened in the same process.
        Without this, we could have 2 parallel loads happening, one in the committed process and another
        in the provisional one, leading to assertion failures in debug.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didStartProvisionalLoadForFrameShared):

2019-01-25  Chris Dumez  <cdumez@apple.com>

        Drop WebKit::WebKitPolicyAction type as it is no longer needed
        https://bugs.webkit.org/show_bug.cgi?id=193827

        Reviewed by Antti Koivisto.

        Drop WebKit::WebKitPolicyAction type as it is no longer needed. It is now identical to
        WebCore::PolicyAction.

        * Shared/WebPolicyAction.h: Removed.
        * UIProcess/WebFramePolicyListenerProxy.cpp:
        (WebKit::WebFramePolicyListenerProxy::didReceiveSafeBrowsingResults):
        (WebKit::WebFramePolicyListenerProxy::use):
        (WebKit::WebFramePolicyListenerProxy::download):
        (WebKit::WebFramePolicyListenerProxy::ignore):
        * UIProcess/WebFramePolicyListenerProxy.h:
        * UIProcess/WebFrameProxy.cpp:
        (WebKit::WebFrameProxy::setUpPolicyListenerProxy):
        * UIProcess/WebFrameProxy.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::receivedNavigationPolicyDecision):
        (WebKit::WebPageProxy::receivedPolicyDecision):
        (WebKit::WebPageProxy::decidePolicyForNavigationAction):
        (WebKit::WebPageProxy::decidePolicyForNavigationActionSync):
        (WebKit::WebPageProxy::decidePolicyForNewWindowAction):
        (WebKit::WebPageProxy::decidePolicyForResponseShared):
        * UIProcess/WebPageProxy.h:
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForResponse):
        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
        * WebProcess/WebPage/WebFrame.cpp:
        (WebKit::WebFrame::didReceivePolicyDecision):
        (WebKit::toPolicyAction): Deleted.
        * WebProcess/WebPage/WebFrame.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::didReceivePolicyDecision):
        * WebProcess/WebPage/WebPage.h:

2019-01-25  Per Arne Vollan  <pvollan@apple.com>

        [iOS] Add logging of calls
        https://bugs.webkit.org/show_bug.cgi?id=193784

        Reviewed by Brent Fulgham.

        Add permissive logging of calls on iOS.

        * Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:

2019-01-25  Chris Dumez  <cdumez@apple.com>

        Regression(PSON?) Crash under NavigationState::NavigationClient::decidePolicyForNavigationAction()
        https://bugs.webkit.org/show_bug.cgi?id=193779
        <rdar://problem/46170903>

        Reviewed by Antti Koivisto.

        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::tryAppLink):
        (WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction):
        We were crashing when trying to get the URL of the main frame, which was sad because we never
        ended up using the main frame URL. Therefore, this patch drops the code in question.

        * UIProcess/ProvisionalPageProxy.cpp:
        (WebKit::ProvisionalPageProxy::decidePolicyForNavigationActionAsync):
        Add assertion to make sure that the DecidePolicyForNavigationActionAsync IPC it is getting
        from the process is related to its main frame.

2019-01-25  Wenson Hsieh  <wenson_hsieh@apple.com>

        Need a way for JavaScript (or bundle) code to participate in undo
        https://bugs.webkit.org/show_bug.cgi?id=190009
        <rdar://problem/44807048>

        Reviewed by Ryosuke Niwa.

        Invalidate undo steps when removing them from WebPage. Invalidation is a no-op for editing actions that come
        from the UA, but for custom undo steps backed by an UndoItem, we clear out the custom undo step's pointer to its
        UndoItem and additionally disconnect the UndoItem from its UndoManager.

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::addWebUndoStep):
        (WebKit::WebPage::removeWebEditCommand):
        * WebProcess/WebPage/WebUndoStep.h:
        (WebKit::WebUndoStep::invalidate):

2019-01-25  Patrick Griffis  <pgriffis@igalia.com>

        [GTK][WPE] Add API to add paths to sandbox
        https://bugs.webkit.org/show_bug.cgi?id=193571

        This allows applications to add paths to the web process
        if required by web extensions.

        Reviewed by Michael Catanzaro.

        * UIProcess/API/glib/WebKitWebContext.cpp:
        (webkit_web_context_add_path_to_sandbox):
        * UIProcess/API/gtk/WebKitWebContext.h:
        * UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt:
        * UIProcess/API/wpe/docs/wpe-0.1-sections.txt:
        * UIProcess/Launcher/glib/BubblewrapLauncher.cpp:
        (WebKit::bubblewrapSpawn):
        * UIProcess/WebProcessPool.h:
        * UIProcess/glib/WebProcessProxyGLib.cpp:
        (WebKit::WebProcessProxy::platformGetLaunchOptions):

2019-01-24  Ryosuke Niwa  <rniwa@webkit.org>

        iOS: Split keyboard should not shrink visualViewport.height
        https://bugs.webkit.org/show_bug.cgi?id=193798

        Reviewed by Tim Horton.

        Treat a split keyboard like a floating keyboard and don't consider its input view bounds in computing the visible content rects.

        No new tests since while it's possible to transition between split and merged keyboard using some SPI,
        there isn't a reliable mechanism to reset the keyboard state. e.g. we need to wait for a hard-coded amount of time.

        * Platform/spi/ios/UIKitSPI.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _keyboardChangedWithInfo:adjustScrollView:]):

2019-01-24  Eric Carlson  <eric.carlson@apple.com>

        [iOS] Silence MediaPlayer compile warnings
        https://bugs.webkit.org/show_bug.cgi?id=193780
        <rdar://problem/47518428>

        Reviewed by Jer Noble.

        * UIProcess/ios/forms/WKAirPlayRoutePicker.mm:

2019-01-24  Truitt Savell  <tsavell@apple.com>

        Unreviewed, rolling out r240446.

        Casued 5 API failures

        Reverted changeset:

        "Activate the WebResourceLoadStatisticsStore in the
        NetworkProcess and deactivate it in the UIProcess."
        https://bugs.webkit.org/show_bug.cgi?id=193297
        https://trac.webkit.org/changeset/240446

2019-01-24  Brent Fulgham  <bfulgham@apple.com>

        Activate the WebResourceLoadStatisticsStore in the NetworkProcess and deactivate it in the UIProcess.
        https://bugs.webkit.org/show_bug.cgi?id=193297
        <rdar://problem/47158841>

        Reviewed by Alex Christensen.

        This patch activates the ResourceLoadStatistics code in the NetworkProcess, and turns
        it off in the UIProcess. It also updates test infrastructure to work with this change
        in architecture.

        * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp:
        (WebKit::ResourceLoadStatisticsMemoryStore::logSubresourceLoading): Added.
        (WebKit::ResourceLoadStatisticsMemoryStore::logSubresourceRedirect): Added.
        (WebKit::ResourceLoadStatisticsMemoryStore::logWebSocketLoading): Added.
        * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::logSubresourceLoading): Added.
        (WebKit::WebResourceLoadStatisticsStore::logSubresourceRedirect): Added.
        (WebKit::WebResourceLoadStatisticsStore::logWebSocketLoading): Added.
        (WebKit::WebResourceLoadStatisticsStore::removeAllStorageAccess):
        (WebKit::WebResourceLoadStatisticsStore::setCacheMaxAgeCap):
        (WebKit::WebResourceLoadStatisticsStore::setCacheMaxAgeCapForPrevalentResources): Deleted.
        * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h:
        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::logSubresourceLoading): Added.
        (WebKit::NetworkConnectionToWebProcess::logSubresourceRedirect): Added.
        (WebKit::NetworkConnectionToWebProcess::logWebSocketLoading): Added.
        * NetworkProcess/NetworkConnectionToWebProcess.messages.in:
        * NetworkProcess/NetworkSession.cpp:
        (WebKit::NetworkSession::setResourceLoadStatisticsEnabled):
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::ensureNetworkProcess):
        * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:
        (WebKit::WebsiteDataStore::parameters):
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::removeData):
        (WebKit::WebsiteDataStore::setResourceLoadStatisticsEnabled):
        (WebKit::WebsiteDataStore::enableResourceLoadStatisticsAndSetTestingCallback):
        * Webprocess/WebProcess.cpp:
        (WebKit::WebProcess::initializeWebProcess): Register new ResourceLoadObserver callbacks.

2019-01-24  John Wilander  <wilander@apple.com>

        Add Ad Click Attribution as an internal/experimental feature
        https://bugs.webkit.org/show_bug.cgi?id=193685
        <rdar://problem/47450399>

        Reviewed by Brent Fulgham.

        * Shared/WebPreferences.yaml:
            Added AdClickAttributionEnabled as a runtime enabled feature, off by default.

2019-01-24  Antti Koivisto  <antti@apple.com>

        [PSON] Flash on back navigation on Mac
        https://bugs.webkit.org/show_bug.cgi?id=193716
        <rdar://problem/47148458>

        Reviewed by Chris Dumez.

        We close the page immediately if we fail to suspend. Layers disappear and we get a flash.

        * UIProcess/SuspendedPageProxy.cpp:
        (WebKit::SuspendedPageProxy::~SuspendedPageProxy):
        (WebKit::SuspendedPageProxy::close):

        Track closed state so we don't send the message twice, causing unhandled message errors in web process.

        (WebKit::SuspendedPageProxy::didProcessRequestToSuspend):

        Close the suspended page if the suspension fails.
        Skip this if we are using web process side compositing on Mac.

        * UIProcess/SuspendedPageProxy.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::enterAcceleratedCompositingMode):

        On Mac, close the failed SuspendedPageProxy when entering compositing mode. At this point we don't need it to keep layers alive.

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::closeFailedSuspendedPagesForPage):
        * UIProcess/WebProcessPool.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::suspendForProcessSwap):

        Don't close the page on suspension failure. This is now managed by the UI process.

2019-01-24  Chris Dumez  <cdumez@apple.com>

        Regression(PSON) Back/Forward list items' URL sometimes gets replaced with the URL of a subframe
        https://bugs.webkit.org/show_bug.cgi?id=193761
        <rdar://problem/47456405>

        Reviewed by Alex Christensen.

        When doing a history navigation cross-process, the UIProcess would first send the back/forward list items
        to the destination WebProcess via WebPage::updateBackForwardListForReattach(), then ask the process to
        navigate to the expected back/forward list item.

        WebPage::updateBackForwardListForReattach() would call restoreSessionInternal(), which would call
        toHistoryItem() on each BackForwardListItem. This may end up creating more than one HistoryItem for each
        BackForwardListItem because HistoryItems are part of a tree (each frame has its own list of history items).

        Note that BackForwardListItems and HistoryItem share a BackForwardItemIdentifier which is a
        (processIdentifier, itemIdentifier) pair. We normally generate the HistoryItem's identifier from inside
        its constructor like so:
        `{ Process::identifier(), generateObjectIdentifier<BackForwardItemIdentifier::ItemIdentifierType>() }`

        However, when calling updateBackForwardListForReattach() and constructing children HistoryItem,
        applyFrameState() would generate the identifier by itself and passing it to the HistoryItem constructor.
        Its genegates the ID the exact same way so this would in theory not be a problem. Unfortunately, both
        calls to generateObjectIdentifier() get inlined and both call sites end up with their own static counter
        to generate ids. As a result, we may end up with conflicts as HistoryItems for child frames (restored
        by restoreSessionInternal()) can end up with the same identifier as HistoryItems for top frames.

        This confusion would lead to the WebContent process sending the UIProcess bad information and the URL
        of subframes could end up as the WebBackForwardListItem's mainframe URL.

        * WebProcess/WebCoreSupport/SessionStateConversion.cpp:
        (WebKit::applyFrameState):
        Stop calling generateObjectIdentifier() explicitly and let the HistoryItem constructor take care of it.
        Calling generateObjectIdentifier() for the same type from different places is not safe due to inlining.

2019-01-24  Ross Kirsling  <ross.kirsling@sony.com>

        Move FileSystem to WTF
        https://bugs.webkit.org/show_bug.cgi?id=193602

        Reviewed by Yusuke Suzuki.

        * NetworkProcess/Classifier/ResourceLoadStatisticsPersistentStorage.cpp:
        * NetworkProcess/NetworkDataTaskBlob.h:
        * NetworkProcess/NetworkProcess.cpp:
        * NetworkProcess/cache/CacheStorageEngine.cpp:
        * NetworkProcess/cache/CacheStorageEngineCaches.cpp:
        * NetworkProcess/cache/NetworkCache.cpp:
        * NetworkProcess/cache/NetworkCacheBlobStorage.cpp:
        * NetworkProcess/cache/NetworkCacheData.cpp:
        * NetworkProcess/cache/NetworkCacheFileSystem.cpp:
        * NetworkProcess/cache/NetworkCacheFileSystem.h:
        * NetworkProcess/cache/NetworkCacheIOChannelCocoa.mm:
        * NetworkProcess/cache/NetworkCacheIOChannelSoup.cpp:
        * NetworkProcess/cache/NetworkCacheStatistics.cpp:
        * NetworkProcess/cache/NetworkCacheStorage.cpp:
        * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        * NetworkProcess/mac/NetworkProcessMac.mm:
        * NetworkProcess/soup/NetworkProcessSoup.cpp:
        * PluginProcess/unix/PluginProcessMainUnix.cpp:
        * Shared/PersistencyUtils.cpp:
        * Shared/Plugins/Netscape/unix/NetscapePluginModuleUnix.cpp:
        * Shared/Plugins/unix/PluginSearchPath.cpp:
        * Shared/WebMemorySampler.h:
        * Shared/glib/ProcessExecutablePathGLib.cpp:
        * Shared/ios/ChildProcessIOS.mm:
        * Shared/mac/ChildProcessMac.mm:
        * Shared/mac/SandboxExtensionMac.mm:
        * UIProcess/API/APIContentRuleListStore.cpp:
        * UIProcess/API/Cocoa/APIWebsiteDataStoreCocoa.mm:
        * UIProcess/API/glib/APIWebsiteDataStoreGLib.cpp:
        * UIProcess/API/glib/IconDatabase.cpp:
        * UIProcess/API/glib/WebKitFaviconDatabase.cpp:
        * UIProcess/API/glib/WebKitFileChooserRequest.cpp:
        * UIProcess/API/glib/WebKitWebContext.cpp:
        * UIProcess/API/glib/WebKitWebsiteDataManager.cpp:
        * UIProcess/API/win/APIWebsiteDataStoreWin.cpp:
        * UIProcess/Automation/WebAutomationSession.cpp:
        * UIProcess/Cocoa/DownloadClient.mm:
        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        * UIProcess/Cocoa/WebViewImpl.mm:
        * UIProcess/DeviceIdHashSaltStorage.cpp:
        * UIProcess/Downloads/DownloadProxy.cpp:
        * UIProcess/Launcher/glib/BubblewrapLauncher.cpp:
        * UIProcess/Launcher/glib/ProcessLauncherGLib.cpp:
        * UIProcess/Plugins/gtk/PluginInfoCache.cpp:
        * UIProcess/Plugins/mac/PluginProcessProxyMac.mm:
        * UIProcess/Plugins/unix/PluginInfoStoreUnix.cpp:
        * UIProcess/Plugins/unix/PluginProcessProxyUnix.cpp:
        * UIProcess/ServiceWorkerProcessProxy.cpp:
        * UIProcess/WebStorage/LocalStorageDatabase.cpp:
        * UIProcess/WebStorage/LocalStorageDatabaseTracker.cpp:
        * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        * UIProcess/glib/WebProcessProxyGLib.cpp:
        * UIProcess/gtk/WebInspectorProxyGtk.cpp:
        * UIProcess/gtk/WebProcessPoolGtk.cpp:
        * UIProcess/ios/WKContentViewInteraction.mm:
        * UIProcess/ios/forms/WKFileUploadPanel.mm:
        * UIProcess/mac/WebPageProxyMac.mm:
        * UIProcess/win/WebProcessPoolWin.cpp:
        * UIProcess/win/WebView.cpp:
        * UIProcess/wpe/WebProcessPoolWPE.cpp:
        * WebProcess/InjectedBundle/API/glib/WebKitExtensionManager.cpp:
        * WebProcess/InjectedBundle/glib/InjectedBundleGlib.cpp:
        * WebProcess/MediaCache/WebMediaKeyStorageManager.cpp:
        * WebProcess/Plugins/Netscape/NetscapePluginStream.h:
        * WebProcess/Plugins/PluginProcessConnection.cpp:
        * WebProcess/WebCoreSupport/SessionStateConversion.cpp:
        * WebProcess/WebPage/gtk/WebInspectorUIGtk.cpp:
        * WebProcess/WebPage/win/WebInspectorUIWin.cpp:
        * WebProcess/cocoa/WebProcessCocoa.mm:

2019-01-23  Simon Fraser  <simon.fraser@apple.com>

        Create "frame hosting" nodes for the scrolling tree
        https://bugs.webkit.org/show_bug.cgi?id=193753

        Reviewed by Antti Koivisto.

        When the scrolling tree crosses frame boundaries, mutations in the parent frame currently
        require the iframe's scrolling node to get reparented in a new ancestor, which requires
        a layer tree walk of the parent frame. This is error-prone, and not very future-proof.

        Fix this by introducing "frame hosting" scrolling tree nodes. These are mostly inert
        nodes that are owned by the RenderIFrame's layer backing in the parent frame, and exist
        to provide a consistent parent node for the subframe's scrolling node.

        This patch adds the node types, but does not instantiate them yet.

        * Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp:
        (ArgumentCoder<ScrollingStateFrameHostingNode>::encode):
        (ArgumentCoder<ScrollingStateFrameHostingNode>::decode):
        (WebKit::encodeNodeAndDescendants):
        (WebKit::RemoteScrollingCoordinatorTransaction::decode):
        (WebKit::dump):
        * UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.cpp:
        (WebKit::RemoteScrollingCoordinatorProxy::connectStateNodeLayers):
        * UIProcess/RemoteLayerTree/RemoteScrollingTree.cpp:
        (WebKit::RemoteScrollingTree::createScrollingTreeNode):
        * UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.mm:
        (WebKit::RemoteScrollingCoordinatorProxy::connectStateNodeLayers):

2019-01-23  Ross Kirsling  <ross.kirsling@sony.com>

        [Curl] Unreviewed build fix for r240292 and friends.

        WinCairo test stability must be restored in subsequent patch.

        * NetworkProcess/curl/NetworkProcessCurl.cpp:
        (WebKit::NetworkProcess::platformCreateDefaultStorageSession const):
        (WebKit::NetworkProcess::setNetworkProxySettings):

2019-01-23  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r240403.
        https://bugs.webkit.org/show_bug.cgi?id=193757

        "Causes multiple crashes on macOS port (probably used wrong
        ENABLE macro)" (Requested by ddkilzer on #webkit).

        Reverted changeset:

        "[Curl] Unreviewed build fix for r240292 and friends."
        https://trac.webkit.org/changeset/240403

2019-01-23  Ross Kirsling  <ross.kirsling@sony.com>

        [Curl] Unreviewed build fix for r240292 and friends.

        WinCairo test stability must be restored in subsequent patch.

        * NetworkProcess/curl/NetworkProcessCurl.cpp:
        (WebKit::NetworkProcess::platformCreateDefaultStorageSession const):
        (WebKit::NetworkProcess::setNetworkProxySettings):

2019-01-23  Alex Christensen  <achristensen@webkit.org>

        Stop using NetworkProcess::singleton
        https://bugs.webkit.org/show_bug.cgi?id=193700

        Reviewed by Don Olmstead.

        This replaces it with a NeverDestroyed<NetworkProcess> and paves the way for more interesting things.

        * NetworkProcess/CustomProtocols/soup/LegacyCustomProtocolManagerSoup.cpp:
        * NetworkProcess/EntryPoint/mac/XPCService/NetworkServiceEntryPoint.mm:
        (WebKit::initializeChildProcess<WebKit::NetworkProcess>):
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::NetworkProcess):
        (WebKit::NetworkProcess::singleton): Deleted.
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/soup/NetworkProcessMainSoup.cpp:
        (WebKit::initializeChildProcess<WebKit::NetworkProcess>):
        * NetworkProcess/win/NetworkProcessMainWin.cpp:
        (WebKit::initializeChildProcess<WebKit::NetworkProcess>):
        * Shared/EntryPointUtilities/mac/XPCService/XPCServiceEntryPoint.h:
        (WebKit::initializeChildProcess):
        (WebKit::XPCServiceInitializer):

2019-01-23  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r240343.

        Caused 4 PSON API test failures.

        Reverted changeset:

        "[PSON] Flash on back navigation on Mac"
        https://bugs.webkit.org/show_bug.cgi?id=193716
        https://trac.webkit.org/changeset/240343

2019-01-23  Chris Dumez  <cdumez@apple.com>

        Deprecate API to limit the maximum number of WebProcesses
        https://bugs.webkit.org/show_bug.cgi?id=193725
        <rdar://problem/47464879>

        Reviewed by Geoff Garen.

        Deprecate API to limit the maximum number of WebProcesses and make it a no-op. It adds
        complexity and is not safe (conflicts with PSON).

        Add a new usesSingleWebProcess SPI to _WKProcessPoolConfiguration to be used by
        Minibrowser / Safari in order to disable process per tab (can be useful for debugging).
        Note that enabling the single WebProcess mode will disable PSON and process prewarming.

        * UIProcess/API/APIProcessPoolConfiguration.cpp:
        (API::ProcessPoolConfiguration::createWithLegacyOptions):
        (API::ProcessPoolConfiguration::copy):
        * UIProcess/API/APIProcessPoolConfiguration.h:
        * UIProcess/API/C/WKContext.cpp:
        (WKContextSetMaximumNumberOfProcesses):
        (WKContextGetMaximumNumberOfProcesses):
        * UIProcess/API/C/WKContext.h:
        * UIProcess/API/Cocoa/WKProcessPool.mm:
        * UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
        * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h:
        * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm:
        (-[_WKProcessPoolConfiguration maximumProcessCount]):
        (-[_WKProcessPoolConfiguration setMaximumProcessCount:]):
        (-[_WKProcessPoolConfiguration usesSingleWebProcess]):
        (-[_WKProcessPoolConfiguration setUsesSingleWebProcess:]):
        (-[_WKProcessPoolConfiguration description]):
        * UIProcess/API/glib/WebKitWebContext.cpp:
        (webkitWebContextConstructed):
        (webkit_web_context_set_process_model):
        (webkit_web_context_set_web_process_count_limit):
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::createNewWebProcessRespectingProcessCountLimit):
        (WebKit::WebProcessPool::didReachGoodTimeToPrewarm):
        (WebKit::WebProcessPool::processForNavigationInternal):
        * UIProcess/WebProcessPool.h:

2019-01-23  Brent Fulgham  <bfulgham@apple.com>

        Switch NetworkStorageSession portions of ResourceLoadStatistics to Async message passing style
        https://bugs.webkit.org/show_bug.cgi?id=193659
        <rdar://problem/47433290>

        Reviewed by Alex Christensen.

        Change the implementations of ResourceLoadStatistics code in NetworkStorageSession to use the
        'sendWithAsyncReply' so that more of the code is autogenerated. This should make test runs more
        consistent, and should reduce the possibility of bookkeeping errors in the message handling
        implementations.

        Fix the implementation of NetworkProcessProxy::clearCallbackStates to remove the manually constructed
        (and incomplete) message callbacks. These errors are a big reason to move to the auto-generated
        'sendWithAsyncReply' implementatoin. Ditto for NetworkProcessProxy::didClose.

        This patch also moves an initializaton call (WebsiteDataStore::didCreateNetworkProcess) from
        'ensureNetworkProcess' to 'processDidFinishLaunching'. In current code, the call happens before
        a connection is established to the network process, causing initialization messages to get dropped
        leading to test system flakiness.

        Finally: The WK API test code was updated to ensure that completion handlers are always called, even
        when built without ENABLE_RESOURCE_LOAD_STATISTICS defined.

        * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp:
        * NetworkProcess/Classifier/ShouldGrandfatherStatistics.h: Added.
        * NetworkProcess/Classifier/StorageAccessStatus.h: Added.
        * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::scheduleClearInMemoryAndPersistent):
        * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h:
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::updatePrevalentDomainsToBlockCookiesFor):
        (WebKit::NetworkProcess::setAgeCapForClientSideCookies):
        (WebKit::NetworkProcess::scheduleClearInMemoryAndPersistent):
        (WebKit::NetworkProcess::hasStorageAccessForFrame):
        (WebKit::NetworkProcess::requestStorageAccess):
        (WebKit::NetworkProcess::grantStorageAccess):
        (WebKit::NetworkProcess::removeAllStorageAccess):
        (WebKit::NetworkProcess::setCacheMaxAgeCapForPrevalentResources):
        (WebKit::NetworkProcess::resetCacheMaxAgeCapForPrevalentResources):
        (WebKit::NetworkProcess::deleteWebsiteData):
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:
        * UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
        (WKWebsiteDataStoreStatisticsClearInMemoryAndPersistentStore):
        (WKWebsiteDataStoreStatisticsClearInMemoryAndPersistentStoreModifiedSinceHours):
        (WKWebsiteDataStoreStatisticsResetToConsistentState):
        * UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::clearCallbackStates): Remove incomplete clean-up code that
        is now autogenerated.
        (WebKit::NetworkProcessProxy::didClose): Ditto.
        (WebKit::NetworkProcessProxy::updatePrevalentDomainsToBlockCookiesFor):
        (WebKit::NetworkProcessProxy::scheduleClearInMemoryAndPersistent):
        (WebKit::NetworkProcessProxy::setAgeCapForClientSideCookies):
        (WebKit::NetworkProcessProxy::hasStorageAccessForFrame):
        (WebKit::NetworkProcessProxy::requestStorageAccess):
        (WebKit::NetworkProcessProxy::grantStorageAccess):
        (WebKit::NetworkProcessProxy::removeAllStorageAccess):
        (WebKit::NetworkProcessProxy::setCacheMaxAgeCapForPrevalentResources):
        (WebKit::NetworkProcessProxy::setCacheMaxAgeCap):
        (WebKit::NetworkProcessProxy::resetCacheMaxAgeCapForPrevalentResources):
        (WebKit::NetworkProcessProxy::didUpdateBlockCookies): Deleted.
        (WebKit::NetworkProcessProxy::didSetAgeCapForClientSideCookies): Deleted.
        (WebKit::NetworkProcessProxy::didUpdateRuntimeSettings): Deleted.
        (WebKit::NetworkProcessProxy::storageAccessRequestResult): Deleted.
        (WebKit::NetworkProcessProxy::storageAccessOperationResult): Deleted.
        (WebKit::NetworkProcessProxy::didRemoveAllStorageAccess): Deleted.
        (WebKit::NetworkProcessProxy::didSetCacheMaxAgeCapForPrevalentResources): Deleted.
        * UIProcess/Network/NetworkProcessProxy.h:
        * UIProcess/Network/NetworkProcessProxy.messages.in:
        * UIProcess/WebPageProxy.cpp:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::ensureNetworkProcess): Move WebsiteDataStore 'didCreateNetworkProcess'
        to 'processDidFinishLaunching'. Currently the call happens before a connection is established,
        causing initialization messages to get dropped.
        (WebKit::WebProcessPool::processDidFinishLaunching): Ditto.
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::removeData):
        (WebKit::WebsiteDataStore::setMaxStatisticsEntries):
        (WebKit::WebsiteDataStore::setPruneEntriesDownTo):
        (WebKit::WebsiteDataStore::setGrandfatheringTime):
        (WebKit::WebsiteDataStore::setCacheMaxAgeCap):
        (WebKit::WebsiteDataStore::setMinimumTimeBetweenDataRecordsRemoval):
        (WebKit::WebsiteDataStore::setPrevalentResource):
        (WebKit::WebsiteDataStore::setShouldClassifyResourcesBeforeDataRecordsRemoval):
        (WebKit::WebsiteDataStore::scheduleClearInMemoryAndPersistent):
        (WebKit::WebsiteDataStore::setAgeCapForClientSideCookies):
        (WebKit::WebsiteDataStore::setNotifyPagesWhenDataRecordsWereScanned):
        (WebKit::WebsiteDataStore::setNotifyPagesWhenTelemetryWasCaptured):
        (WebKit::WebsiteDataStore::setTimeToLiveUserInteraction):
        (WebKit::WebsiteDataStore::setCacheMaxAgeCapForPrevalentResources):
        (WebKit::WebsiteDataStore::setResourceLoadStatisticsDebugMode):
        * UIProcess/WebsiteData/WebsiteDataStore.h:
        * WebKit.xcodeproj/project.pbxproj:

2019-01-23  Sihui Liu  <sihui_liu@apple.com>

        Clean up IndexedDB files between tests
        https://bugs.webkit.org/show_bug.cgi?id=192796
        <rdar://problem/46824999>

        Reviewed by Geoffrey Garen.

        * UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
        (WKWebsiteDataStoreRemoveAllIndexedDatabases):
        * UIProcess/API/C/WKWebsiteDataStoreRef.h:

2019-01-23  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] fast/events/touch/ios/hover-when-style-change-is-async.html times out
        https://bugs.webkit.org/show_bug.cgi?id=193182
        <rdar://problem/47452154>

        Reviewed by Tim Horton.

        Fix an existing bug where blurring an element doesn't always un-suppress text interactions.

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _elementDidBlur]):

2019-01-23  Michael Catanzaro  <mcatanzaro@igalia.com>

        Minor improvements to NetworkProcess
        https://bugs.webkit.org/show_bug.cgi?id=193708

        Reviewed by Alex Christensen.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::switchToNewTestingSession): Fix a spelling error.
        (WebKit::NetworkProcess::ensureSession): Add useful assertion.
        (WebKit::NetworkProcess::defaultStorageSession const): Split into platform functions.
        (WebKit::NetworkProcess::destroySession): Add useful assertion.
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
        (WebKit::NetworkProcess::platformCreateDefaultStorageSession const):
        * NetworkProcess/curl/NetworkProcessCurl.cpp:
        (WebKit::NetworkProcess::platformCreateDefaultStorageSession const):
        * NetworkProcess/soup/NetworkProcessSoup.cpp:
        (WebKit::NetworkProcess::platformCreateDefaultStorageSession const):

2019-01-23  Daniel Bates  <dabates@apple.com>

        Fix the Apple Internal build. See <rdar://problem/47486758>.

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView dropInteraction:previewForDroppingItem:withDefault:]):

2019-01-23  Per Arne Vollan  <pvollan@apple.com>

        [macOS] Sandbox fails to compile
        https://bugs.webkit.org/show_bug.cgi?id=193727
        <rdar://problem/47476903>

        Reviewed by Brent Fulgham.

        Use '(with send-signal SIGKILL)' instead of '(with termination)'.

        * WebProcess/com.apple.WebProcess.sb.in:

2019-01-23  Brent Fulgham  <bfulgham@apple.com>

        REGRESSION (r240243): CrashTracer: WebKitTestRunnerApp at com.apple.WebKit: WebKit::WebResourceLoadStatisticsStore::sendDiagnosticMessageWithValue const + 32
        https://bugs.webkit.org/show_bug.cgi?id=193723
        <rdar://problem/47476802>

        Reviewed by David Kilzer.

        The new code added in r240243 could attempt to submit telemetry after the relevant
        WebResourceLoadStatisticsStore was destroyed. We should guard against this possibility.

        * NetworkProcess/Classifier/WebResourceLoadStatisticsTelemetry.cpp:
        (WebKit::WebResourceLoadStatisticsTelemetry::calculateAndSubmit):

2019-01-23  Antti Koivisto  <antti@apple.com>

        [PSON] Flash on back navigation on Mac
        https://bugs.webkit.org/show_bug.cgi?id=193716
        <rdar://problem/47148458>

        Reviewed by Chris Dumez.

        We close the page immediately if we fail to suspend. Layers disappear and we get a flash.

        * UIProcess/SuspendedPageProxy.cpp:
        (WebKit::SuspendedPageProxy::didProcessRequestToSuspend):

        Remove the suspended page (so closing it on web process side) if the suspension fails.
        Skip this if we are using web process side compositing on Mac.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::enterAcceleratedCompositingMode):

        On Mac, remove failed SuspendedPageProxy when entering compositing mode. At this point we don't need it to keep layers alive.

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::removeFailedSuspendedPagesForPage):
        * UIProcess/WebProcessPool.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::suspendForProcessSwap):

        Don't close the page on suspension failure.

2019-01-23  Wenson Hsieh  <wenson_hsieh@apple.com>

        Introduce UndoStep::label() and adopt it in WebKitLegacy and WebKit
        https://bugs.webkit.org/show_bug.cgi?id=193706
        <rdar://problem/44807048>

        Reviewed by Ryosuke Niwa.

        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::registerEditCommand):
        * UIProcess/WebEditCommandProxy.cpp:
        (WebKit::WebEditCommandProxy::WebEditCommandProxy):
        * UIProcess/WebEditCommandProxy.h:

        Drive-by tweak: make WebEditCommandProxy's backpointer to its WebPageProxy a WeakPtr instead of a raw pointer.
        Additionally, call clear() instead of setting m_page to 0 upon invalidation. Also, turn the WebPageProxy*
        argument into a WebPageProxy&, since the WebPageProxy must exist when it creates a new WebEditCommandProxy.

        (WebKit::WebEditCommandProxy::create):
        (WebKit::WebEditCommandProxy::label const):
        (WebKit::WebEditCommandProxy::invalidate):
        (WebKit::WebEditCommandProxy::editAction const): Deleted.

        Adjust UI-side logic to just handle the undo/redo label, rather than map the edit action to a localized string.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::registerEditCommandForUndo):
        (WebKit::WebPageProxy::resetState):

        Tweak this to use std::exchange instead of copying all the WebEditCommandProxy RefPtrs into a separate Vector
        and then iterating over the Vector.

        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:

        Adjust this so that we only send the undo/redo label over IPC, rather than the edit action type.

        * UIProcess/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::registerEditCommand):
        * WebProcess/WebCoreSupport/WebEditorClient.cpp:
        (WebKit::WebEditorClient::registerUndoStep):

2019-01-23  Michael Catanzaro  <mcatanzaro@igalia.com>

        [SOUP] Remove libsoup cruft from WebProcess
        https://bugs.webkit.org/show_bug.cgi?id=193710

        Reviewed by Carlos Garcia Campos.

        SoupNetworkSession is no longer accessible from the web process because it's owned
        (indirectly) by NetworkProcess after r240292. It doesn't make sense to have any libsoup
        code under WebProcess anymore. The current libsoup code consists of (a) unused stuff to be
        removed, (b) stuff unrelated to libsoup, which should move to a WebProcessGLib.cpp, and (c)
        WebKitSoupRequestInputStream, which is only used by NetworkProcess and should move there

        * NetworkProcess/soup/WebKitSoupRequestInputStream.cpp: Renamed from Source/WebKit/WebProcess/soup/WebKitSoupRequestInputStream.cpp.
        (AsyncReadData::AsyncReadData):
        (webkitSoupRequestInputStreamReadAsyncResultComplete):
        (webkitSoupRequestInputStreamPendingReadAsyncComplete):
        (webkitSoupRequestInputStreamHasDataToRead):
        (webkitSoupRequestInputStreamIsWaitingForData):
        (webkitSoupRequestInputStreamReadAsync):
        (webkitSoupRequestInputStreamReadFinish):
        (webkitSoupRequestInputStreamFinalize):
        (webkit_soup_request_input_stream_init):
        (webkit_soup_request_input_stream_class_init):
        (webkitSoupRequestInputStreamNew):
        (webkitSoupRequestInputStreamAddData):
        (webkitSoupRequestInputStreamDidFailWithError):
        (webkitSoupRequestInputStreamFinished):
        * NetworkProcess/soup/WebKitSoupRequestInputStream.h: Renamed from Source/WebKit/WebProcess/soup/WebKitSoupRequestInputStream.h.
        * SourcesGTK.txt:
        * SourcesWPE.txt:
        * UIProcess/soup/WebProcessPoolSoup.cpp:
        (WebKit::WebProcessPool::setNetworkProxySettings): Don't send message to web processes.
        * WebProcess/WebProcess.h:
        * WebProcess/WebProcess.messages.in:
        * WebProcess/glib/WebProcessGLib.cpp: Renamed from Source/WebKit/WebProcess/soup/WebProcessSoup.cpp.
        (WebKit::WebProcess::platformSetCacheModel):
        (WebKit::WebProcess::platformInitializeWebProcess):
        (WebKit::WebProcess::platformTerminate):

2019-01-23  Michael Catanzaro  <mcatanzaro@igalia.com>

        [SOUP] Clean up NetworkStorageSession
        https://bugs.webkit.org/show_bug.cgi?id=193707

        Reviewed by Carlos Garcia Campos.

        Restore an important call to clearSoupNetworkSession that was removed in r240292. Also,
        adapt to NetworkStorageSessions API changes.

        * NetworkProcess/CustomProtocols/soup/LegacyCustomProtocolManagerSoup.cpp:
        (WebKit::LegacyCustomProtocolManager::registerScheme):
        * NetworkProcess/soup/NetworkProcessMainSoup.cpp:
        * NetworkProcess/soup/NetworkProcessSoup.cpp:
        (WebKit::NetworkProcess::userPreferredLanguagesChanged):
        (WebKit::NetworkProcess::setNetworkProxySettings):
        * NetworkProcess/soup/NetworkSessionSoup.cpp:
        (WebKit::NetworkSessionSoup::soupSession const):

2019-01-23  Philippe Normand  <pnormand@igalia.com>

        [GTK] Crash when browsing inspector:// uri without port set
        https://bugs.webkit.org/show_bug.cgi?id=193721

        Reviewed by Michael Catanzaro.

        * UIProcess/API/gtk/WebKitRemoteInspectorProtocolHandler.cpp:
        (WebKit::RemoteInspectorProtocolHandler::handleRequest): Return
        back to caller after setting the error, if no port was provided
        along with the inspector URL.

2019-01-23  David Kilzer  <ddkilzer@apple.com>

        Switch remaining CoreMedia soft-linking in WebKit over to CoreMediaSoftLink.{cpp,h}
        <https://webkit.org/b/193694>
        <rdar://problem/47464025>

        Reviewed by Tim Horton.

        * Shared/ios/WebIconUtilities.mm:
        - Switch to using CoreMediaSoftLink.{h,mm} in PAL.

2019-01-22  Chris Dumez  <cdumez@apple.com>

        Regression(r240178) Some API tests are crashing
        https://bugs.webkit.org/show_bug.cgi?id=193680

        Reviewed by Alex Christensen.

        r240178 made sure that userScripts / scriptMessageHandlers / contentExtensions are always
        properly populated in the WebPageCreationParameters. This was needed in case we need to
        reconstruct the WebUserContentController on the WebProcess side. However, this caused a
        regression in the case we reuse a process where the WebUserContentController still exists
        (because it was kept alive, e.g. by the WebPageGroup). In that case, we would add duplicate
        entries to the existing WebUserContentController instance because its "add" methods did not
        have duplicate checks. To address the issue, this patch adds duplicate checks to the
        WebUserContentController "add" methods.

        * WebProcess/UserContent/WebUserContentController.cpp:
        (WebKit::WebUserContentController::addUserScriptMessageHandlerInternal):
        (WebKit::WebUserContentController::removeUserScriptMessageHandlerInternal):
        (WebKit::WebUserContentController::addUserScriptInternal):
        (WebKit::WebUserContentController::removeUserScriptInternal):
        (WebKit::WebUserContentController::addUserStyleSheetInternal):
        (WebKit::WebUserContentController::removeUserStyleSheetInternal):
        (WebKit::WebUserContentController::forEachUserMessageHandler const):
        * WebProcess/UserContent/WebUserContentController.h:

2019-01-22  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed attempt to fix GTK/WPE bots
        https://bugs.webkit.org/show_bug.cgi?id=193580
        <rdar://problem/47457742>

        Doesn't make sense to clear the storage session right after creating it. This should fix
        network process crash on startup under G_DEBUG=fatal-criticals due to the storage session
        not having a cookie jar.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::NetworkProcess):

2019-01-22  Megan Gardner  <megan_gardner@apple.com>

        Cancel Web Touches Properly so that long presses on YouTube links do not incorrectly trigger a load
        https://bugs.webkit.org/show_bug.cgi?id=193687
        <rdar://problem/47056717>

        Reviewed by Tim Horton.

        Cancel web gestures when a long press is recognized.

        * Platform/spi/ios/UIKitSPI.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _cancelWebGestureRecognizer]):
        (-[WKContentView _longPressRecognized:]):

2019-01-22  Alex Christensen  <achristensen@webkit.org>

        Fix an internal build failure after r240292
        https://bugs.webkit.org/show_bug.cgi?id=193580

        Rubber-stamped by Wenson Hsieh.

        * SourcesCocoa.txt:
        * UIProcess/mac/WebContextMenuProxyMac.mm:
        (-[WKMenuTarget forwardContextMenuAction:]):
        * WebKit.xcodeproj/project.pbxproj:
        It was apparently unclear to the compiler sometimes which "state" selector to use, and this apparently mattered.
        Tell the compiler to use the NSMenuItem selector, but at runtime it doesn't matter.

2019-01-22  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed, fix -Wunused-but-set-variable warning
        https://bugs.webkit.org/show_bug.cgi?id=193660
        <rdar://problem/47433602>

        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::removeData):

2019-01-22  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed, further build fixes after r240292
        https://bugs.webkit.org/show_bug.cgi?id=193580
        <rdar://problem/47457742>

        Oops.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::defaultStorageSession const):

2019-01-22  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed, further build fixes after r240292
        https://bugs.webkit.org/show_bug.cgi?id=193580
        <rdar://problem/47457742>

        This builds for libsoup. Doesn't work, but at least builds.

        Also, speculative fixes for curl.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::defaultStorageSession const):

2019-01-22  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed, further build fixes after r240292
        https://bugs.webkit.org/show_bug.cgi?id=193580
        <rdar://problem/47457742>

        Still not working yet.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::NetworkProcess):
        * UIProcess/API/APIHTTPCookieStore.h:

2019-01-22  Antti Koivisto  <antti@apple.com>

        [iOS] Flash when swiping back to Google search result page
        https://bugs.webkit.org/show_bug.cgi?id=193668
        <rdar://problem/47071684>

        Reviewed by Simon Fraser.

        If the google page is scrolled, there is sometimes a short flash.

        When restoring the page state we also restore exposedContentRect which is used to determine
        which part of the page to create layers for. Scroll position is restored by the UI process
        later so we rely on this to get the right layers for the initial view update.

        A viewport configuration update may sometimes trample over the restored exposedContentRect,
        moving it to top left. In this case the initial layer tree unfreeze commit may not have
        layers to cover the actual visible view position.

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::didCommitLoad):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::restorePageState):

        Set a bit to indicate we have already restored the exposedContentRect.

        (WebKit::WebPage::viewportConfigurationChanged):

        Only reset exposedContentRect if wasn't already set by restorePageState.

2019-01-22  Alex Christensen  <achristensen@webkit.org>

        Fix more builds.

        * SourcesCocoa.txt:
        * WebKit.xcodeproj/project.pbxproj:

2019-01-22  Michael Catanzaro  <mcatanzaro@igalia.com>

        Another build fix after r240292
        https://bugs.webkit.org/show_bug.cgi?id=193580
        <rdar://problem/47457742>

        Unreviewed, still not enough to fix soup builds, but closer.

        * UIProcess/API/APIHTTPCookieStore.h:

2019-01-22  Alex Christensen  <achristensen@webkit.org>

        Fix some builds after r240292
        https://bugs.webkit.org/show_bug.cgi?id=193580

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::switchToNewTestingSession):
        * NetworkProcess/cache/NetworkCache.cpp:
        (WebKit::NetworkCache::Cache::retrieve):

2019-01-22  Brian Burg  <bburg@apple.com>

        Automation.computeElementLayout should return visual viewport-aware coordinates
        https://bugs.webkit.org/show_bug.cgi?id=193598
        <rdar://problem/35325644>

        Unreviewed, restore a mistakenly-deleted line whose absence causes hangs.

        * Shared/CoordinateSystem.h:

2019-01-22  Alex Christensen  <achristensen@webkit.org>

        Move NetworkStorageSession ownership to NetworkProcess
        https://bugs.webkit.org/show_bug.cgi?id=193580

        Reviewed by Geoff Garen.

        * NetworkProcess/Cookies/WebCookieManager.cpp:
        (WebKit::WebCookieManager::WebCookieManager):
        (WebKit::WebCookieManager::getHostnamesWithCookies):
        (WebKit::WebCookieManager::deleteCookiesForHostname):
        (WebKit::WebCookieManager::deleteAllCookies):
        (WebKit::WebCookieManager::deleteCookie):
        (WebKit::WebCookieManager::deleteAllCookiesModifiedSince):
        (WebKit::WebCookieManager::getAllCookies):
        (WebKit::WebCookieManager::getCookies):
        (WebKit::WebCookieManager::setCookie):
        (WebKit::WebCookieManager::setCookies):
        (WebKit::WebCookieManager::startObservingCookieChanges):
        (WebKit::WebCookieManager::stopObservingCookieChanges):
        * NetworkProcess/Cookies/WebCookieManager.h:
        * NetworkProcess/Cookies/mac/WebCookieManagerMac.mm:
        (WebKit::WebCookieManager::platformSetHTTPCookieAcceptPolicy):
        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::storageSession):
        (WebKit::NetworkConnectionToWebProcess::cookiesForDOM):
        (WebKit::NetworkConnectionToWebProcess::setCookiesFromDOM):
        (WebKit::NetworkConnectionToWebProcess::cookiesEnabled):
        (WebKit::NetworkConnectionToWebProcess::cookieRequestHeaderFieldValue):
        (WebKit::NetworkConnectionToWebProcess::getRawCookies):
        (WebKit::NetworkConnectionToWebProcess::deleteCookie):
        (WebKit::NetworkConnectionToWebProcess::removeStorageAccessForFrame):
        (WebKit::NetworkConnectionToWebProcess::removeStorageAccessForAllFramesOnPage):
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::initializeNetworkProcess):
        (WebKit::NetworkProcess::clearCachedCredentials):
        (WebKit::NetworkProcess::switchToNewTestingSession):
        (WebKit::NetworkProcess::ensureSession):
        (WebKit::NetworkProcess::storageSession const):
        (WebKit::NetworkProcess::defaultStorageSession const):
        (WebKit::NetworkProcess::forEachNetworkStorageSession):
        (WebKit::NetworkProcess::destroySession):
        (WebKit::NetworkProcess::updatePrevalentDomainsToBlockCookiesFor):
        (WebKit::NetworkProcess::setAgeCapForClientSideCookies):
        (WebKit::NetworkProcess::hasStorageAccessForFrame):
        (WebKit::NetworkProcess::getAllStorageAccessEntries):
        (WebKit::NetworkProcess::grantStorageAccess):
        (WebKit::NetworkProcess::removeAllStorageAccess):
        (WebKit::NetworkProcess::removePrevalentDomains):
        (WebKit::NetworkProcess::setCacheMaxAgeCapForPrevalentResources):
        (WebKit::NetworkProcess::resetCacheMaxAgeCapForPrevalentResources):
        (WebKit::NetworkProcess::fetchWebsiteData):
        (WebKit::NetworkProcess::deleteWebsiteData):
        (WebKit::NetworkProcess::deleteWebsiteDataForOrigins):
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::validateCacheEntryForMaxAgeCapValidation):
        (WebKit::NetworkResourceLoader::logCookieInformation const):
        * NetworkProcess/NetworkSession.cpp:
        (WebKit::NetworkSession::networkStorageSession const):
        * NetworkProcess/NetworkStorageSessionProvider.h:
        * NetworkProcess/cache/NetworkCache.cpp:
        (WebKit::NetworkCache::makeUseDecision):
        (WebKit::NetworkCache::Cache::retrieve):
        (WebKit::NetworkCache::Cache::makeEntry):
        (WebKit::NetworkCache::Cache::makeRedirectEntry):
        (WebKit::NetworkCache::Cache::update):
        * NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp:
        (WebKit::NetworkCache::SpeculativeLoad::willSendRedirectedRequest):
        * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
        (WebKit::NetworkProcess::platformSyncAllCookies):
        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (-[WKNetworkSessionDelegate URLSession:task:willPerformHTTPRedirection:newRequest:completionHandler:]):
        (-[WKNetworkSessionDelegate URLSession:task:_schemeUpgraded:completionHandler:]):
        (-[WKNetworkSessionDelegate URLSession:task:didReceiveChallenge:completionHandler:]):
        (WebKit::NetworkSessionCocoa::NetworkSessionCocoa):
        * NetworkProcess/mac/RemoteNetworkingContext.mm:
        (WebKit::RemoteNetworkingContext::ensureWebsiteDataStoreSession):
        * SourcesCocoa.txt:
        * UIProcess/API/APIHTTPCookieStore.cpp:
        (API::HTTPCookieStore::~HTTPCookieStore):
        (API::HTTPCookieStore::cookies):
        (API::HTTPCookieStore::setCookie):
        (API::HTTPCookieStore::deleteCookie):
        (API::HTTPCookieStore::registerObserver):
        (API::HTTPCookieStore::unregisterObserver):
        (API::HTTPCookieStore::registerForNewProcessPoolNotifications):
        (API::HTTPCookieStore::flushDefaultUIProcessCookieStore):
        (API::HTTPCookieStore::getAllDefaultUIProcessCookieStoreCookies):
        (API::HTTPCookieStore::setCookieInDefaultUIProcessCookieStore):
        (API::HTTPCookieStore::deleteCookieFromDefaultUIProcessCookieStore):
        (API::HTTPCookieStore::startObservingChangesToDefaultUIProcessCookieStore):
        (API::HTTPCookieStore::stopObservingChangesToDefaultUIProcessCookieStore):
        * UIProcess/API/APIHTTPCookieStore.h:
        * UIProcess/API/Cocoa/APIHTTPCookieStoreCocoa.mm: Added.
        (API::HTTPCookieStore::flushDefaultUIProcessCookieStore):
        (API::HTTPCookieStore::getAllDefaultUIProcessCookieStoreCookies):
        (API::HTTPCookieStore::setCookieInDefaultUIProcessCookieStore):
        (API::HTTPCookieStore::deleteCookieFromDefaultUIProcessCookieStore):
        (API::HTTPCookieStore::startObservingChangesToDefaultUIProcessCookieStore):
        (API::HTTPCookieStore::stopObservingChangesToDefaultUIProcessCookieStore):
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::clearCachedCredentials):
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/Plugins/PluginView.cpp:
        (WebKit::PluginView::getAuthenticationInfo):
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::deleteWebsiteData):
        (WebKit::WebProcess::clearCachedCredentials): Deleted.
        * WebProcess/WebProcess.h:
        * WebProcess/WebProcess.messages.in:

2019-01-22  Per Arne Vollan  <pvollan@apple.com>

        [macOS] Adjust logging policy in WebKit's sandbox
        https://bugs.webkit.org/show_bug.cgi?id=193454

        Reviewed by Brent Fulgham.

        Add a rule to initially deny all calls, since the default is to allow every call.
        Later rules allow syscalls that we determined are needed for proper WebKit function.
        This reduces the API surface available to attackers.

        * WebProcess/com.apple.WebProcess.sb.in:

2019-01-22  Daniel Bates  <dabates@apple.com>

        [iOS] WebKit should handle shift state changes when using the software keyboard
        https://bugs.webkit.org/show_bug.cgi?id=191475
        <rdar://problem/45949246>

        Reviewed by Brent Fulgham.

        Implement UIKit SPI to be notified of shift state changes to the software keyboard
        and dispatch a synthetic keydown or keyup event for either the Shift key or Caps Lock
        key.

        A side benefit of this change is that we now show and hide the caps lock indicator
        in a focused password field when caps lock is enabled or disabled using the software
        keyboard, respectively.

        * Platform/spi/ios/UIKitSPI.h: Expose more SPI.
        * SourcesCocoa.txt:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView modifierFlagsDidChangeFrom:to:]): Create a synthetic flags changed
        web event based on the state change and dispatch it.
        (-[WKContentView _didHandleKeyEvent:eventWasHandled:]): Early return if the event
        was a synethic flags change event so that we do not notify UIKit about this event
        as it does not know anything about such synthetic events.
        * UIProcess/ios/WKSyntheticFlagsChangedWebEvent.h: Added.
        * UIProcess/ios/WKSyntheticFlagsChangedWebEvent.mm: Added.
        (-[WKSyntheticFlagsChangedWebEvent initWithKeyCode:modifiers:keyDown:]):
        (-[WKSyntheticFlagsChangedWebEvent initWithCapsLockState:]):
        (-[WKSyntheticFlagsChangedWebEvent initWithShiftState:]):
        * WebKit.xcodeproj/project.pbxproj:

2019-01-22  Daniel Bates  <dabates@apple.com>

        [iOS] Interpret text key commands on keydown and app key commands on keypress
        https://bugs.webkit.org/show_bug.cgi?id=192897
        <rdar://problem/46857378>

        Reviewed by Brent Fulgham.

        Adopt SPI to interpret text key commands and app key commands independently on keydown (isCharEvent
        is false) and keypress (isCharEvent is true), respectively.

        * Platform/spi/ios/UIKitSPI.h: Add more SPI.
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _interpretKeyEvent:isCharEvent:]):

2019-01-22  David Kilzer  <ddkilzer@apple.com>

        C strings in ClientCertificateAuthenticationXPCConstants.h are duplicated
        <https://webkit.org/b/193607>
        <rdar://problem/47334613>

        Reviewed by Alex Christensen.

        * Shared/Authentication/cocoa/AuthenticationManagerCocoa.mm:
        (WebKit::AuthenticationManager::initializeConnection):
        * UIProcess/Authentication/cocoa/AuthenticationChallengeProxyCocoa.mm:
        (WebKit::AuthenticationChallengeProxy::sendClientCertificateCredentialOverXpc):
        - Update name of constants.

        * Shared/Authentication/cocoa/ClientCertificateAuthenticationXPCConstants.cpp: Copied from Source/WebKit/Shared/Authentication/cocoa/ClientCertificateAuthenticationXPCConstants.h.
        * Shared/Authentication/cocoa/ClientCertificateAuthenticationXPCConstants.h:
        - Put constant values in a namespace, and move values to
          ClientCertificateAuthenticationXPCConstants.cpp.

        * SourcesCocoa.txt:
        * UnifiedSources-input.xcfilelist:
        * WebKit.xcodeproj/project.pbxproj:
        - Add ClientCertificateAuthenticationXPCConstants.cpp.

2019-01-22  David Kilzer  <ddkilzer@apple.com>

        Switch remaining QuickLook soft-linking in WebCore, WebKit over to QuickLookSoftLink.{cpp,h}
        <https://webkit.org/b/193654>
        <rdar://problem/47430290>

        Reviewed by Alex Christensen.

        - Moves QuickLookSoftLink.{h,mm} to PAL.
        - Adds soft-link to 3 classes to consolidate QuickLook.framework
          soft-linking.
        - Updates existing source to work with above changes.

        * UIProcess/Cocoa/SystemPreviewControllerCocoa.mm:
        (-[_WKPreviewControllerDataSource previewController:previewItemAtIndex:]):
        (WebKit::SystemPreviewController::start):
        * UIProcess/ios/WKSystemPreviewView.mm:
        (-[WKSystemPreviewView web_setContentProviderData:suggestedFilename:]):
        - Switch to using QuickLookSoftLink.{h,mm} in PAL.

2019-01-22  Oriol Brufau  <obrufau@igalia.com>

        [css-logical] Implement flow-relative margin, padding and border shorthands
        https://bugs.webkit.org/show_bug.cgi?id=188697

        Reviewed by Simon Fraser and Antti Koivisto.

        Add a CSSLogicalEnabled runtime flag.

        * Shared/WebPreferences.yaml:

2019-01-22  Frederic Wang  <fwang@igalia.com>

        Enable CSSOMViewScrollingAPI
        https://bugs.webkit.org/show_bug.cgi?id=189472

        Reviewed by Simon Fraser.

        This patch enables the CSSOMViewScrollingAPI option by default. This feature has already been
        enabled in tests since r235855. Basically, this change fixes an old compatibility issue
        regarding which scrolling element correspond to the viewport in standard mode (WebKit uses
        document.body while Gecko/Edge/Chromium use document.documentElement as described in the
        CSSOM View specification). WebKit developers writing tests can use document.scrollingElement
        for that purpose, so that they work independently of whether the option is enabled.

        [1] https://lists.webkit.org/pipermail/webkit-dev/2018-January/029857.html

        * Shared/WebPreferences.yaml: Enable by default and remove "experimental" category in
        accordance with the new policy. Instead, keep an internal flag only for developers.

2019-01-21  Antti Koivisto  <antti@apple.com>

        [iOS] Handle hit testing for subframes
        https://bugs.webkit.org/show_bug.cgi?id=192303

        Reviewed by Frédéric Wang.

        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::transitionToCommittedForNewPage):

        Only set delegatesScrolling for the main frame.

2019-01-21  Brent Fulgham  <bfulgham@apple.com>

        Unreviewed test fix after r240243
        Nhttps://bugs.webkit.org/show_bug.cgi?id=193660
        <rdar://problem/47433602>

        The new ResourceLoadStatistics section of 'removeData' was incrementing the
        pending callback count before deciding whether to send a message to delete
        data. This left the count out-of-balance leading to the operation never
        completing.

        This patch also prevents sending a second message to the NetworkProcess
        requesting data be deleted if the message was already sent in an earlier
        section of the method (e.g., as typically happens when all website data
        is being deleted).

        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::removeData):

2019-01-21  Brent Fulgham  <bfulgham@apple.com>

        Implement message handlers for NetworkProcess-based ResourceLoadStatistics
        https://bugs.webkit.org/show_bug.cgi?id=193556
        <rdar://problem/47368501>

        Reviewed by Alex Christensen.

        This patch adds a number of sibling methods for tracking ResourceLoadStatistics when the
        observations are being handled in the NetworkProcess, rather than the UIProcess. The
        original versions of these methods will be removed as part of Bug 193303.

        * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp:
        (WebKit::ResourceLoadStatisticsMemoryStore::removeDataRecords):
        (WebKit::ResourceLoadStatisticsMemoryStore::processStatisticsAndDataRecords):
        (WebKit::ResourceLoadStatisticsMemoryStore::grandfatherExistingWebsiteData):
        * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.h:
        (WebKit::ResourceLoadStatisticsMemoryStore::store const):
        * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::setNotifyPagesWhenDataRecordsWereScanned):
        (WebKit::WebResourceLoadStatisticsStore::setNotifyPagesWhenTelemetryWasCaptured):
        (WebKit::WebResourceLoadStatisticsStore::WebResourceLoadStatisticsStore):
        (WebKit::WebResourceLoadStatisticsStore::setPrevalentResourceForDebugMode):
        (WebKit::WebResourceLoadStatisticsStore::scheduleStatisticsAndDataRecordsProcessing):
        (WebKit::WebResourceLoadStatisticsStore::hasStorageAccess):
        (WebKit::WebResourceLoadStatisticsStore::callHasStorageAccessForFrameHandler):
        (WebKit::WebResourceLoadStatisticsStore::requestStorageAccess):
        (WebKit::WebResourceLoadStatisticsStore::logUserInteraction):
        (WebKit::WebResourceLoadStatisticsStore::clearUserInteraction):
        (WebKit::WebResourceLoadStatisticsStore::hasHadUserInteraction):
        (WebKit::WebResourceLoadStatisticsStore::setLastSeen):
        (WebKit::WebResourceLoadStatisticsStore::setPrevalentResource):
        (WebKit::WebResourceLoadStatisticsStore::setVeryPrevalentResource):
        (WebKit::WebResourceLoadStatisticsStore::isPrevalentResource):
        (WebKit::WebResourceLoadStatisticsStore::isVeryPrevalentResource):
        (WebKit::WebResourceLoadStatisticsStore::isRegisteredAsSubresourceUnder):
        (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::setTimeToLiveUserInteraction):
        (WebKit::WebResourceLoadStatisticsStore::logTestingEvent):
        (WebKit::WebResourceLoadStatisticsStore::notifyResourceLoadStatisticsProcessed):
        (WebKit::WebResourceLoadStatisticsStore::deleteWebsiteDataForTopPrivatelyControlledDomainsInAllPersistentDataStores):
        (WebKit::WebResourceLoadStatisticsStore::topPrivatelyControlledDomainsWithWebsiteData):
        (WebKit::WebResourceLoadStatisticsStore::sendDiagnosticMessageWithValue const):
        (WebKit::WebResourceLoadStatisticsStore::notifyPageStatisticsTelemetryFinished const):
        * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h:
        * NetworkProcess/Classifier/WebResourceLoadStatisticsTelemetry.cpp:
        (WebKit::submitTopList):
        (WebKit::submitTopLists):
        (WebKit::notifyPages):
        (WebKit::WebResourceLoadStatisticsTelemetry::calculateAndSubmit):
        (WebKit::nonEphemeralWebPageProxy): Deleted.
        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::logUserInteraction):
        * NetworkProcess/NetworkConnectionToWebProcess.h:
        * NetworkProcess/NetworkConnectionToWebProcess.messages.in:
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::dumpResourceLoadStatistics):
        (WebKit::NetworkProcess::isGrandfathered):
        (WebKit::NetworkProcess::isPrevalentResource):
        (WebKit::NetworkProcess::isVeryPrevalentResource):
        (WebKit::NetworkProcess::setGrandfathered):
        (WebKit::NetworkProcess::setPrevalentResource):
        (WebKit::NetworkProcess::setPrevalentResourceForDebugMode):
        (WebKit::NetworkProcess::setVeryPrevalentResource):
        (WebKit::NetworkProcess::clearPrevalentResource):
        (WebKit::NetworkProcess::submitTelemetry):
        (WebKit::NetworkProcess::scheduleCookieBlockingUpdate):
        (WebKit::NetworkProcess::scheduleClearInMemoryAndPersistent):
        (WebKit::NetworkProcess::resetParametersToDefaultValues):
        (WebKit::NetworkProcess::scheduleStatisticsAndDataRecordsProcessing):
        (WebKit::NetworkProcess::setNotifyPagesWhenDataRecordsWereScanned):
        (WebKit::NetworkProcess::setNotifyPagesWhenTelemetryWasCaptured):
        (WebKit::NetworkProcess::setSubframeUnderTopFrameOrigin):
        (WebKit::NetworkProcess::isRegisteredAsRedirectingTo):
        (WebKit::NetworkProcess::isRegisteredAsSubFrameUnder):
        (WebKit::NetworkProcess::setSubresourceUnderTopFrameOrigin):
        (WebKit::NetworkProcess::setSubresourceUniqueRedirectTo):
        (WebKit::NetworkProcess::setSubresourceUniqueRedirectFrom):
        (WebKit::NetworkProcess::isRegisteredAsSubresourceUnder):
        (WebKit::NetworkProcess::setTopFrameUniqueRedirectTo):
        (WebKit::NetworkProcess::setTopFrameUniqueRedirectFrom):
        (WebKit::NetworkProcess::setLastSeen):
        (WebKit::NetworkProcess::hasStorageAccess):
        (WebKit::NetworkProcess::requestStorageAccess):
        (WebKit::NetworkProcess::grantStorageAccess):
        (WebKit::NetworkProcess::logUserInteraction):
        (WebKit::NetworkProcess::hadUserInteraction):
        (WebKit::NetworkProcess::clearUserInteraction):
        (WebKit::NetworkProcess::setGrandfatheringTime):
        (WebKit::NetworkProcess::setMaxStatisticsEntries):
        (WebKit::NetworkProcess::setMinimumTimeBetweenDataRecordsRemoval):
        (WebKit::NetworkProcess::setPruneEntriesDownTo):
        (WebKit::NetworkProcess::setTimeToLiveUserInteraction):
        (WebKit::NetworkProcess::setShouldClassifyResourcesBeforeDataRecordsRemoval):
        (WebKit::NetworkProcess::setResourceLoadStatisticsEnabled):
        (WebKit::NetworkProcess::setResourceLoadStatisticsDebugMode):
        (WebKit::NetworkProcess::resetCacheMaxAgeCapForPrevalentResources):
        (WebKit::NetworkProcess::deleteWebsiteData):
        (WebKit::filterForTopLevelDomains):
        (WebKit::NetworkProcess::deleteWebsiteDataForTopPrivatelyControlledDomainsInAllPersistentDataStores):
        (WebKit::NetworkProcess::topPrivatelyControlledDomainsWithWebsiteData):
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:
        * NetworkProcess/NetworkSession.cpp:
        (WebKit::NetworkSession::setResourceLoadStatisticsEnabled):
        (WebKit::NetworkSession::notifyResourceLoadStatisticsProcessed):
        (WebKit::NetworkSession::logDiagnosticMessageWithValue):
        (WebKit::NetworkSession::notifyPageStatisticsTelemetryFinished):
        (WebKit::NetworkSession::deleteWebsiteDataForTopPrivatelyControlledDomainsInAllPersistentDataStores):
        (WebKit::NetworkSession::topPrivatelyControlledDomainsWithWebsiteData):
        (WebKit::NetworkSession::enableResourceLoadStatistics): Deleted.
        * NetworkProcess/NetworkSession.h:
        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (WebKit::NetworkSessionCocoa::NetworkSessionCocoa):
        * UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
        (WKWebsiteDataStoreSetResourceLoadStatisticsDebugModeWithCompletionHandler):
        (WKWebsiteDataStoreSetResourceLoadStatisticsPrevalentResourceForDebugMode):
        (WKWebsiteDataStoreSetStatisticsLastSeen):
        (WKWebsiteDataStoreSetStatisticsPrevalentResource):
        (WKWebsiteDataStoreSetStatisticsVeryPrevalentResource):
        (WKWebsiteDataStoreDumpResourceLoadStatistics):
        (WKWebsiteDataStoreIsStatisticsPrevalentResource):
        (WKWebsiteDataStoreIsStatisticsVeryPrevalentResource):
        (WKWebsiteDataStoreIsStatisticsRegisteredAsSubresourceUnder):
        (WKWebsiteDataStoreIsStatisticsRegisteredAsSubFrameUnder):
        (WKWebsiteDataStoreIsStatisticsRegisteredAsRedirectingTo):
        (WKWebsiteDataStoreSetStatisticsHasHadUserInteraction):
        (WKWebsiteDataStoreIsStatisticsHasHadUserInteraction):
        (WKWebsiteDataStoreSetStatisticsGrandfathered):
        (WKWebsiteDataStoreIsStatisticsGrandfathered):
        (WKWebsiteDataStoreSetStatisticsSubframeUnderTopFrameOrigin):
        (WKWebsiteDataStoreSetStatisticsSubresourceUnderTopFrameOrigin):
        (WKWebsiteDataStoreSetStatisticsSubresourceUniqueRedirectTo):
        (WKWebsiteDataStoreSetStatisticsSubresourceUniqueRedirectFrom):
        (WKWebsiteDataStoreSetStatisticsTopFrameUniqueRedirectTo):
        (WKWebsiteDataStoreSetStatisticsTopFrameUniqueRedirectFrom):
        (WKWebsiteDataStoreSetStatisticsTimeToLiveUserInteraction):
        (WKWebsiteDataStoreStatisticsProcessStatisticsAndDataRecords):
        (WKWebsiteDataStoreStatisticsUpdateCookieBlocking):
        (WKWebsiteDataStoreStatisticsSubmitTelemetry):
        (WKWebsiteDataStoreSetStatisticsNotifyPagesWhenDataRecordsWereScanned):
        (WKWebsiteDataStoreSetStatisticsShouldClassifyResourcesBeforeDataRecordsRemoval):
        (WKWebsiteDataStoreSetStatisticsNotifyPagesWhenTelemetryWasCaptured):
        (WKWebsiteDataStoreSetStatisticsMinimumTimeBetweenDataRecordsRemoval):
        (WKWebsiteDataStoreSetStatisticsGrandfatheringTime):
        (WKWebsiteDataStoreSetStatisticsMaxStatisticsEntries):
        (WKWebsiteDataStoreSetStatisticsPruneEntriesDownTo):
        (WKWebsiteDataStoreStatisticsClearInMemoryAndPersistentStore):
        (WKWebsiteDataStoreStatisticsClearInMemoryAndPersistentStoreModifiedSinceHours):
        (WKWebsiteDataStoreStatisticsResetToConsistentState):
        * UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
        (-[WKWebsiteDataStore _setResourceLoadStatisticsTestingCallback:]):
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::clearCallbackStates):
        (WebKit::NetworkProcessProxy::didClose):
        (WebKit::nonEphemeralWebPageProxy):
        (WebKit::NetworkProcessProxy::logGlobalDiagnosticMessageWithValue):
        (WebKit::NetworkProcessProxy::dumpResourceLoadStatistics):
        (WebKit::NetworkProcessProxy::didDumpResourceLoadStatistics):
        (WebKit::NetworkProcessProxy::updatePrevalentDomainsToBlockCookiesFor):
        (WebKit::NetworkProcessProxy::didUpdateBlockCookies):
        (WebKit::NetworkProcessProxy::isPrevalentResource):
        (WebKit::NetworkProcessProxy::isPrevalentResourceResult):
        (WebKit::NetworkProcessProxy::isVeryPrevalentResource):
        (WebKit::NetworkProcessProxy::setPrevalentResource):
        (WebKit::NetworkProcessProxy::setPrevalentResourceForDebugMode):
        (WebKit::NetworkProcessProxy::setVeryPrevalentResource):
        (WebKit::NetworkProcessProxy::didSetResourceLoadStatisticData):
        (WebKit::NetworkProcessProxy::setLastSeen):
        (WebKit::NetworkProcessProxy::clearPrevalentResource):
        (WebKit::NetworkProcessProxy::scheduleCookieBlockingUpdate):
        (WebKit::NetworkProcessProxy::didScheduleCookieBlockingUpdate):
        (WebKit::NetworkProcessProxy::scheduleClearInMemoryAndPersistent):
        (WebKit::NetworkProcessProxy::didScheduleStatisticsProcessing):
        (WebKit::NetworkProcessProxy::scheduleStatisticsAndDataRecordsProcessing):
        (WebKit::NetworkProcessProxy::logUserInteraction):
        (WebKit::NetworkProcessProxy::hasHadUserInteraction):
        (WebKit::NetworkProcessProxy::didHaveUserInteraction):
        (WebKit::NetworkProcessProxy::clearUserInteraction):
        (WebKit::NetworkProcessProxy::setAgeCapForClientSideCookies):
        (WebKit::NetworkProcessProxy::didSetAgeCapForClientSideCookies):
        (WebKit::NetworkProcessProxy::setTimeToLiveUserInteraction):
        (WebKit::NetworkProcessProxy::didUpdateRuntimeSettings):
        (WebKit::NetworkProcessProxy::setNotifyPagesWhenTelemetryWasCaptured):
        (WebKit::NetworkProcessProxy::setNotifyPagesWhenDataRecordsWereScanned):
        (WebKit::NetworkProcessProxy::setSubframeUnderTopFrameOrigin):
        (WebKit::NetworkProcessProxy::isRegisteredAsRedirectingTo):
        (WebKit::NetworkProcessProxy::didIsRegisteredAsRedirectingTo):
        (WebKit::NetworkProcessProxy::isRegisteredAsSubFrameUnder):
        (WebKit::NetworkProcessProxy::didIsRegisteredAsSubFrameUnder):
        (WebKit::NetworkProcessProxy::setSubresourceUnderTopFrameOrigin):
        (WebKit::NetworkProcessProxy::isRegisteredAsSubresourceUnder):
        (WebKit::NetworkProcessProxy::didIsRegisteredAsSubresourceUnder):
        (WebKit::NetworkProcessProxy::setSubresourceUniqueRedirectTo):
        (WebKit::NetworkProcessProxy::setSubresourceUniqueRedirectFrom):
        (WebKit::NetworkProcessProxy::setTopFrameUniqueRedirectTo):
        (WebKit::NetworkProcessProxy::setTopFrameUniqueRedirectFrom):
        (WebKit::NetworkProcessProxy::isGrandfathered):
        (WebKit::NetworkProcessProxy::didIsGrandfathered):
        (WebKit::NetworkProcessProxy::setGrandfathered):
        (WebKit::NetworkProcessProxy::hasStorageAccess):
        (WebKit::NetworkProcessProxy::requestStorageAccess):
        (WebKit::NetworkProcessProxy::grantStorageAccess):
        (WebKit::NetworkProcessProxy::storageAccessRequestResult):
        (WebKit::NetworkProcessProxy::storageAccessOperationResult):
        (WebKit::NetworkProcessProxy::didRemoveAllStorageAccess):
        (WebKit::NetworkProcessProxy::didSetCacheMaxAgeCapForPrevalentResources):
        (WebKit::NetworkProcessProxy::setCacheMaxAgeCap):
        (WebKit::NetworkProcessProxy::setGrandfatheringTime):
        (WebKit::NetworkProcessProxy::setMaxStatisticsEntries):
        (WebKit::NetworkProcessProxy::setMinimumTimeBetweenDataRecordsRemoval):
        (WebKit::NetworkProcessProxy::setPruneEntriesDownTo):
        (WebKit::NetworkProcessProxy::setShouldClassifyResourcesBeforeDataRecordsRemoval):
        (WebKit::NetworkProcessProxy::setResourceLoadStatisticsDebugMode):
        (WebKit::NetworkProcessProxy::resetParametersToDefaultValues):
        (WebKit::NetworkProcessProxy::submitTelemetry):
        (WebKit::NetworkProcessProxy::notifyResourceLoadStatisticsProcessed):
        (WebKit::NetworkProcessProxy::notifyWebsiteDataDeletionForTopPrivatelyOwnedDomainsFinished):
        (WebKit::NetworkProcessProxy::notifyWebsiteDataScanForTopPrivatelyControlledDomainsFinished):
        (WebKit::NetworkProcessProxy::notifyResourceLoadStatisticsTelemetryFinished):
        (WebKit::NetworkProcessProxy::didLogUserInteraction): Deleted.
        (WebKit::NetworkProcessProxy::didResetCacheMaxAgeCapForPrevalentResources): Deleted.
        * UIProcess/Network/NetworkProcessProxy.h:
        * UIProcess/Network/NetworkProcessProxy.messages.in:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::nonEphemeralWebPageProxy):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::ensureNetworkProcess):
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::notifyWebsiteDataScanForTopPrivatelyControlledDomainsFinished):
        (WebKit::WebProcessProxy::notifyWebsiteDataDeletionForTopPrivatelyOwnedDomainsFinished):
        * UIProcess/WebProcessProxy.h:
        * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:
        (WebKit::WebsiteDataStore::parameters):
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::removeData):
        (WebKit::WebsiteDataStore::setMaxStatisticsEntries):
        (WebKit::WebsiteDataStore::setPruneEntriesDownTo):
        (WebKit::WebsiteDataStore::setGrandfatheringTime):
        (WebKit::WebsiteDataStore::setCacheMaxAgeCap):
        (WebKit::WebsiteDataStore::setMinimumTimeBetweenDataRecordsRemoval):
        (WebKit::WebsiteDataStore::dumpResourceLoadStatistics):
        (WebKit::WebsiteDataStore::isPrevalentResource):
        (WebKit::WebsiteDataStore::setPrevalentResource):
        (WebKit::WebsiteDataStore::setPrevalentResourceForDebugMode):
        (WebKit::WebsiteDataStore::isVeryPrevalentResource):
        (WebKit::WebsiteDataStore::setVeryPrevalentResource):
        (WebKit::WebsiteDataStore::setShouldClassifyResourcesBeforeDataRecordsRemoval):
        (WebKit::WebsiteDataStore::setSubframeUnderTopFrameOrigin):
        (WebKit::WebsiteDataStore::isRegisteredAsSubFrameUnder):
        (WebKit::WebsiteDataStore::setSubresourceUnderTopFrameOrigin):
        (WebKit::WebsiteDataStore::isRegisteredAsSubresourceUnder):
        (WebKit::WebsiteDataStore::setSubresourceUniqueRedirectTo):
        (WebKit::WebsiteDataStore::setSubresourceUniqueRedirectFrom):
        (WebKit::WebsiteDataStore::setTopFrameUniqueRedirectTo):
        (WebKit::WebsiteDataStore::setTopFrameUniqueRedirectFrom):
        (WebKit::WebsiteDataStore::isRegisteredAsRedirectingTo):
        (WebKit::WebsiteDataStore::clearPrevalentResource):
        (WebKit::WebsiteDataStore::resetParametersToDefaultValues):
        (WebKit::WebsiteDataStore::submitTelemetry):
        (WebKit::WebsiteDataStore::scheduleClearInMemoryAndPersistent):
        (WebKit::WebsiteDataStore::scheduleCookieBlockingUpdate):
        (WebKit::WebsiteDataStore::scheduleStatisticsAndDataRecordsProcessing):
        (WebKit::WebsiteDataStore::updatePrevalentDomainsToBlockCookiesFor):
        (WebKit::WebsiteDataStore::setAgeCapForClientSideCookies):
        (WebKit::WebsiteDataStore::setLastSeen):
        (WebKit::WebsiteDataStore::setNotifyPagesWhenDataRecordsWereScanned):
        (WebKit::WebsiteDataStore::setNotifyPagesWhenTelemetryWasCaptured):
        (WebKit::WebsiteDataStore::hasStorageAccessForFrameHandler):
        (WebKit::WebsiteDataStore::getAllStorageAccessEntries):
        (WebKit::WebsiteDataStore::grantStorageAccessHandler):
        (WebKit::WebsiteDataStore::removeAllStorageAccessHandler):
        (WebKit::WebsiteDataStore::removePrevalentDomains):
        (WebKit::WebsiteDataStore::hasStorageAccess):
        (WebKit::WebsiteDataStore::requestStorageAccess):
        (WebKit::WebsiteDataStore::grantStorageAccess):
        (WebKit::WebsiteDataStore::setTimeToLiveUserInteraction):
        (WebKit::WebsiteDataStore::logUserInteraction):
        (WebKit::WebsiteDataStore::hasHadUserInteraction):
        (WebKit::WebsiteDataStore::clearUserInteraction):
        (WebKit::WebsiteDataStore::isGrandfathered):
        (WebKit::WebsiteDataStore::setGrandfathered):
        (WebKit::WebsiteDataStore::setCacheMaxAgeCapForPrevalentResources):
        (WebKit::WebsiteDataStore::resetCacheMaxAgeCapForPrevalentResources):
        (WebKit::WebsiteDataStore::webPageWasAdded):
        (WebKit::WebsiteDataStore::webPageWasInvalidated):
        (WebKit::WebsiteDataStore::webProcessWillOpenConnection):
        (WebKit::WebsiteDataStore::webPageWillOpenConnection):
        (WebKit::WebsiteDataStore::webPageDidCloseConnection):
        (WebKit::WebsiteDataStore::webProcessDidCloseConnection):
        (WebKit::WebsiteDataStore::isAssociatedProcessPool const):
        (WebKit::WebsiteDataStore::processPools const):
        (WebKit::WebsiteDataStore::resourceLoadStatisticsEnabled const):
        (WebKit::WebsiteDataStore::setResourceLoadStatisticsEnabled):
        (WebKit::WebsiteDataStore::setResourceLoadStatisticsDebugMode):
        (WebKit::WebsiteDataStore::enableResourceLoadStatisticsAndSetTestingCallback):
        (WebKit::WebsiteDataStore::logTestingEvent):
        * UIProcess/WebsiteData/WebsiteDataStore.h:
        (WebKit::WebsiteDataStore::setStatisticsTestingCallback):
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::initializeWebProcess):

2019-01-15  Darin Adler  <darin@apple.com>

        Use references rather than pointers for register/unregister functions, and more
        https://bugs.webkit.org/show_bug.cgi?id=175028

        Reviewed by Daniel Bates.

        * WebProcess/FullScreen/WebFullScreenManager.cpp:
        (WebKit::WebFullScreenManager::willEnterFullScreen): Update for change to the
        functions in Document; pass a reference.
        (WebKit::WebFullScreenManager::didEnterFullScreen): Ditto, don't pass the element.
        (WebKit::WebFullScreenManager::willExitFullScreen): Ditto.
        (WebKit::WebFullScreenManager::didExitFullScreen): Ditto.

        * WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp:
        (WebKit::UserMediaPermissionRequestManager::startUserMediaRequest): Pass a reference.
        (WebKit::UserMediaPermissionRequestManager::mediaCanStart): Ditto.
        (WebKit::UserMediaPermissionRequestManager::removeMediaRequestFromMaps): Ditto.
        * WebProcess/Plugins/PluginView.cpp:
        (WebKit::PluginView::~PluginView): Ditto.
        (WebKit::PluginView::initializePlugin): Ditto.

2019-01-20  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed, fix -Wreturn-type warning
        https://bugs.webkit.org/show_bug.cgi?id=193333
        <rdar://problem/45649489>

        * UIProcess/Automation/WebAutomationSession.cpp:
        (WebKit::toProtocol):

2019-01-20  chris fleizach  <cfleizach@apple.com>

        AX: Support returning relative frames for accessibility
        https://bugs.webkit.org/show_bug.cgi?id=193414
        <rdar://problem/47268501>

        Reviewed by Zalan Bujtas.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView accessibilityAttributeValue:forParameter:]):
        (-[WKWebView IGNORE_WARNINGS_END]):
        * UIProcess/API/mac/WKView.mm:
        (-[WKView accessibilityAttributeValue:forParameter:]):
        (-[WKView IGNORE_WARNINGS_END]):
        * UIProcess/Cocoa/WebViewImpl.h:
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::accessibilityAttributeValue):
        * UIProcess/ios/WKContentView.mm:
        (-[WKContentView accessibilityConvertRelativeFrameFromPage:]):

2019-01-20  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed, rolling out r240209.

        Broke GTK/WPE injected bundle

        Reverted changeset:

        "AX: Support returning relative frames for accessibility"
        https://bugs.webkit.org/show_bug.cgi?id=193414
        https://trac.webkit.org/changeset/240209

2019-01-12  Dan Bernstein  <mitz@apple.com>

        [Cocoa] Avoid importing directly from subumbrella frameworks
        https://bugs.webkit.org/show_bug.cgi?id=186016
        <rdar://problem/40591038>

        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.

2019-01-20  chris fleizach  <cfleizach@apple.com>

        AX: Support returning relative frames for accessibility
        https://bugs.webkit.org/show_bug.cgi?id=193414
        <rdar://problem/47268501>

        Reviewed by Zalan Bujtas.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView accessibilityAttributeValue:forParameter:]):
        (-[WKWebView IGNORE_WARNINGS_END]):
        * UIProcess/API/mac/WKView.mm:
        (-[WKView accessibilityAttributeValue:forParameter:]):
        (-[WKView IGNORE_WARNINGS_END]):
        * UIProcess/Cocoa/WebViewImpl.h:
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::accessibilityAttributeValue):
        * UIProcess/ios/WKContentView.mm:
        (-[WKContentView accessibilityConvertRelativeFrameFromPage:]):

2019-01-20  Antoine Quint  <graouts@apple.com>

        Add a POINTER_EVENTS feature flag
        https://bugs.webkit.org/show_bug.cgi?id=193577
        <rdar://problem/47408511>

        Unreviewed. Also enable Pointer Events for iosmac.

        * Configurations/FeatureDefines.xcconfig:

2019-01-19  David Kilzer  <ddkilzer@apple.com>

        Follow-up: iOS: Updating input mode should update the software keyboard
        <https://bugs.webkit.org/show_bug.cgi?id=193565>
        <rdar://problem/47376334>

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::focusedElementDidChangeInputMode): Fix iOS
        Debug builds after r240199 by downcasting `element` to
        `HTMLElement` before calling canonicalInputMode().

2019-01-19  David Kilzer  <ddkilzer@apple.com>

        Sort WebKit Xcode project file

        * WebKit.xcodeproj/project.pbxproj:

2019-01-19  Antoine Quint  <graouts@apple.com>

        Add a POINTER_EVENTS feature flag
        https://bugs.webkit.org/show_bug.cgi?id=193577

        Reviewed by Dean Jackson.

        * Configurations/FeatureDefines.xcconfig:

2019-01-18  Ryosuke Niwa  <rniwa@webkit.org>

        iOS: Updating input mode should update the software keyboard
        https://bugs.webkit.org/show_bug.cgi?id=193565
        <rdar://problem/47376334>

        Reviewed by Wenson Hsieh.

        Update the software keyboard when the inputmode content attribute on the focused element had been mutated.

        * Scripts/webkit/messages.py:
        * Shared/WebCoreArgumentCoders.h:
        * UIProcess/PageClient.h:
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * UIProcess/ios/PageClientImplIOS.h:
        * UIProcess/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::focusedElementDidChangeInputMode):
        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _didUpdateInputMode:]):
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::focusedElementDidChangeInputMode):
        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::focusedElementDidChangeInputMode):
        * WebProcess/WebCoreSupport/WebChromeClient.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::focusedElementDidChangeInputMode):
        * WebProcess/WebPage/WebPage.h:

2019-01-18  Tim Horton  <timothy_horton@apple.com>

        Adjust WKDrawingView protocol method name
        https://bugs.webkit.org/show_bug.cgi?id=193604

        Reviewed by Wenson Hsieh.

        * UIProcess/ios/WKDrawingView.mm:
        (-[WKDrawingView canvasViewDrawingDidChange:]):
        (-[WKDrawingView drawingDidChange:]): Deleted.

2019-01-18  David Kilzer  <ddkilzer@apple.com>

        [WebKit] Change Xcode folders to map to folders on disk

        * WebKit.xcodeproj/project.pbxproj: Update these folders:
        - Shared/Authentication
        - Shared/Authentication/cocoa

2019-01-18  Brian Burg  <bburg@apple.com>

        Automation.computeElementLayout should return visual viewport-aware coordinates
        https://bugs.webkit.org/show_bug.cgi?id=193598
        <rdar://problem/35325644>

        Reviewed by Simon Fraser.

        Previously I added CoordinateSystem::VisualViewport to stub out this for iOS.
        But I think that it's a mistake for safaridriver to care about VisualViewport
        being enabled or not, because it is a runtime-switchable setting.

        This patch removes CoordinateSystem::VisualViewport. Make the existing
        CoordinateSystem::LayoutViewport use visual viewport semantics if needed.

        This is tested by WebDriver element clicking tests. There should not be any
        difference in behavior until it is possible to zoom with gestures via WebDriver.

        * Shared/CoordinateSystem.h:
        * UIProcess/Automation/Automation.json:
        * UIProcess/Automation/WebAutomationSession.cpp:
        (WebKit::protocolStringToCoordinateSystem):
        * WebProcess/Automation/WebAutomationSessionProxy.cpp:
        (WebKit::WebAutomationSessionProxy::computeElementLayout):

2019-01-18  Daniel Bates  <dabates@apple.com>

        Fix some build issues.

        Include missing header WKDrawingCoordinator.

        * UIProcess/ios/WKInkPickerView.mm:

2019-01-18  Tim Horton  <timothy_horton@apple.com>

        Get rid of ADVANCED_SPELL_CHECKING
        https://bugs.webkit.org/show_bug.cgi?id=193592

        Reviewed by Wenson Hsieh.

        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::requestCandidatesForSelectionIfNeeded):
        (WebKit::WebViewImpl::insertText):
        * UIProcess/mac/TextCheckerMac.mm:
        (WebKit::TextChecker::checkTextOfParagraph):
        (WebKit::TextChecker::getGuessesForWord):

2019-01-18  Chris Dumez  <cdumez@apple.com>

        Regression(PSON) Content blockers are sometimes lost on back navigation cross-site
        https://bugs.webkit.org/show_bug.cgi?id=193588
        <rdar://problem/47131566>

        Reviewed by Alex Christensen.

        When the WebPageProxy needs to create initialization parameters for its WebPage in the
        WebContent process, it calls WebProcessProxy::addWebUserContentControllerProxy()
        which calls WebUserContentControllerProxy::addProcess(). This last call is supposed to
        register the WebProcessProxy with the WebUserContentControllerProxy and adding the
        contentRuleLists to the WebPageCreationParameters. The issue is that if the
        WebUserContentControllerProxy already knows about this WebProcessProxy, it would return
        early and not populate the WebPageCreationParameters.

        In PSON world, when navigating back to a page that failed to enter page cache, we reuse
        the process where we previously loaded the page but re-create a new WebPage on the
        WebContent process site. When this happens, WebUserContentControllerProxy would not
        add the contentRuleLists to the WebPageCreationParameters and the new WebPage in the
        previously-suspended process would be missing them.

        * UIProcess/UserContent/WebUserContentControllerProxy.cpp:
        (WebKit::WebUserContentControllerProxy::addProcess):

2019-01-18  Jer Noble  <jer.noble@apple.com>

        SDK_VARIANT build destinations should be separate from non-SDK_VARIANT builds
        https://bugs.webkit.org/show_bug.cgi?id=189553

        Reviewed by Tim Horton.

        * Configurations/Base.xcconfig:
        * Configurations/BaseTarget.xcconfig:
        * Configurations/SDKVariant.xcconfig: Added.

2019-01-18  Antti Koivisto  <antti@apple.com>

        Implement asynchronous frame scrolling for iOS
        https://bugs.webkit.org/show_bug.cgi?id=193539
        <rdar://problem/47379873>

        Reviewed by Simon Fraser.

        Add a scrolling node type that can handle UIScrollView backed frames.
        It basically just instantiates and forwards to the existing ScrollingTreeScrollingNodeDelegateIOS.

        * UIProcess/RemoteLayerTree/RemoteScrollingTree.cpp:
        (WebKit::RemoteScrollingTree::createScrollingTreeNode):
        * UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.mm:
        (WebKit::RemoteScrollingCoordinatorProxy::connectStateNodeLayers):
        * UIProcess/RemoteLayerTree/ios/ScrollingTreeFrameScrollingNodeRemoteIOS.h: Added.
        * UIProcess/RemoteLayerTree/ios/ScrollingTreeFrameScrollingNodeRemoteIOS.mm: Added.
        (WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::create):
        (WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::ScrollingTreeFrameScrollingNodeRemoteIOS):
        (WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::~ScrollingTreeFrameScrollingNodeRemoteIOS):
        (WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::commitStateBeforeChildren):
        (WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::commitStateAfterChildren):
        (WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::updateLayersAfterAncestorChange):
        (WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::scrollPosition const):
        (WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::setScrollLayerPosition):
        (WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::updateLayersAfterDelegatedScroll):
        * WebKit.xcodeproj/project.pbxproj:

2019-01-18  Chris Dumez  <cdumez@apple.com>

        Regression(PSON) Scroll position is not always restored properly when navigating back
        https://bugs.webkit.org/show_bug.cgi?id=193578
        <rdar://problem/47386331>

        Reviewed by Tim Horton.

        Fix issues causing the scroll position to not be restored at all (or incorrectly) when
        navigating back cross-site with PSON enabled. Also make sure that the swipe gesture
        snapshot really stays up until we've restored the scroll position.

        Note that even after those changes, I can still sometimes reproduce a white flash when
        swiping back to Google search results (scroll position being correct now). This is
        tracked by <rdar://problem/47071684> and happens even if I disable PSON entirely.

        * Shared/SessionState.cpp:
        (WebKit::FrameState::encode const):
        (WebKit::FrameState::decode):
        * Shared/SessionState.h:
        * WebProcess/WebCoreSupport/SessionStateConversion.cpp:
        (WebKit::toFrameState):
        (WebKit::applyFrameState):
        obscuredInsets is present on the HistoryItem in the WebProcess but was never passed to
        or stored by the UIProcess on the WebBackForwardListItem. obscuredInsets is needed to
        properly restore the scrollPosition (position was 70px off on my iPad without this).
        With PSON enabled, if you swipe back cross-process and the previous page was not put
        into PageCache, then the HistoryItem is gone on the WebProcess side. What happens is
        that the UIProcess sends its WebBackForwardListItem to the WebProcess, which restores
        the HistoryItem there, and then asks it to load it. The obscuredInsets was getting lost
        in the process since the UIProcess never knew about it.

        * UIProcess/Cocoa/ViewGestureController.cpp:
        (WebKit::ViewGestureController::didReachMainFrameLoadTerminalState):
        Drop logic that was causing the ViewGestureController to not wait for the scroll position
        to be restored before taking down the snapshot, when UI-side compositing is enabled.
        If you look at the comment above the code, you'll see that the code in question was meant
        to impact only the non-UI side compositing code path. As a matter of fact, when the code
        was reviewed at https://bugs.webkit.org/show_bug.cgi?id=151224, it was protected by a
        #if PLATFORM(MAC), before getting modified the wrong way before landing. In practice, we
        would have often restored the scroll position by the time the load is finished so it would
        not cause a flash in most cases. However, with PSON enabled and the layer tree freezing we
        do on process-swap, the first post-scroll restoration layer tree commit may now occur a
        little bit later and we would lose the race more often.

        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::updateBackForwardItem):
        * UIProcess/WebProcessProxy.h:
        When adding PageCache support to PSON, we used to navigate the "suspended" page to
        about:blank. This would lead to unwanted WebProcessProxy::updateBackForwardItem()
        calls from the WebProcess which we wanted to ignore. We thus added logic to ignore
        updateBackForwardItem() IPC from the old WebProcess after a swap. The issue with this
        is that we sometimes miss/ignore legit updates to the HistoryItem from the old process,
        in particular with regards to the scroll position and the pageScaleFactor. So if you
        swiped and then quickly enough did a cross-site navigation, the UIProcess'
        WebBackForwardList would not get updated with the latest scroll position and we would
        thus fail to restore it later on. To address the issue, we now stop ignoring updates
        from the old WebProcess after a swap. This logic is no longer needed since we no longer
        navigate the old page to about:blank after a swap, we merely suspend it "in place".

2019-01-18  Wenson Hsieh  <wenson_hsieh@apple.com>

        Remove some last vestiges of assisted node terminology in WebKit
        https://bugs.webkit.org/show_bug.cgi?id=193572

        Reviewed by Tim Horton.

        * UIProcess/API/Cocoa/_WKFocusedElementInfo.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView gestureRecognizerShouldBegin:]):
        (-[WKContentView textInteractionGesture:shouldBeginAtPoint:]):
        (-[WKContentView _showKeyboard]):
        (-[WKContentView _hideKeyboard]):

        Add a FIXME about invoking `-reloadInputViews` on watchOS when the focused element is blurred.

        (-[WKContentView _elementDidFocus:userIsInteracting:blurPreviousNode:changingActivityState:userObject:]):
        (-[WKContentView _elementDidBlur]):
        (-[WKContentView updateCurrentFocusedElementInformation:]):
        (-[WKContentView _startAssistingKeyboard]): Deleted.
        (-[WKContentView _stopAssistingKeyboard]): Deleted.
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::getFocusedElementInformation):

2019-01-18  Youenn Fablet  <youenn@apple.com>

        Add a new SPI to request for cache storage quota increase
        https://bugs.webkit.org/show_bug.cgi?id=193323

        Reviewed by Alex Christensen.

        Add a delegate on the WebSiteDataStore for WebKit to ask for quota update.
        The current SPI is currently CacheStorage specific but future work should
        make it so that other storage like IDB use the same mechanism.
        By default, quota remains unchanged if delegate is not implemented.

        * NetworkProcess/NetworkProcess.cpp:
        * UIProcess/API/Cocoa/WKStorageQuotaDelegatePrivate.h: Added.
        * UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
        (WebsiteDataStoreQuotaManager::WebsiteDataStoreQuotaManager):
        (-[WKWebsiteDataStore _quotaDelegate]):
        (-[WKWebsiteDataStore set_quotaDelegate:]):
        * UIProcess/API/Cocoa/WKWebsiteDataStoreInternal.h:
        * UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::requestCacheStorageSpace):
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::WebsiteDataStore):
        * UIProcess/WebsiteData/WebsiteDataStore.h:
        (WebKit::WebsiteDataStore::quotaManager):
        (WebKit::WebsiteDataStore::setQuotaManager):
        * UIProcess/WebsiteData/WebsiteDataStoreQuotaManager.h: Added.
        (WebKit::WebsiteDataStoreQuotaManager::~WebsiteDataStoreQuotaManager):
        (WebKit::WebsiteDataStoreQuotaManager::requestCacheStorageSpace):
        * WebKit.xcodeproj/project.pbxproj:

2019-01-18  Philippe Normand  <pnormand@igalia.com>

        [WPE] Add Qt extension
        https://bugs.webkit.org/show_bug.cgi?id=191464

        Reviewed by Carlos Garcia Campos.

        This new extension is a QML plugin embedding a WPE ViewBackend
        implementation. It provides a public API very similar to Qt's
        WebView module. It comes with a simple mini-browser implemented in
        QML.

        QtWPE is known to work with the Wayland-EGL (in GNOME and Weston
        compositors) and EGLFS QPAs.

        * PlatformWPE.cmake:
        * UIProcess/API/wpe/qt/WPEQmlExtensionPlugin.cpp: Added.
        (WPEQmlExtensionPlugin::registerTypes):
        * UIProcess/API/wpe/qt/WPEQmlExtensionPlugin.h: Added.
        * UIProcess/API/wpe/qt/WPEQtView.cpp: Added.
        (WPEQtView::WPEQtView):
        (WPEQtView::~WPEQtView):
        (WPEQtView::geometryChanged):
        (WPEQtView::configureWindow):
        (WPEQtView::createOffscreen):
        (WPEQtView::backendCreated):
        (WPEQtView::notifyUrlChangedCallback):
        (WPEQtView::notifyTitleChangedCallback):
        (WPEQtView::notifyLoadProgressCallback):
        (WPEQtView::notifyLoadChangedCallback):
        (WPEQtView::notifyLoadFailedCallback):
        (WPEQtView::updatePaintNode):
        (WPEQtView::url const):
        (WPEQtView::setUrl):
        (WPEQtView::loadProgress const):
        (WPEQtView::title const):
        (WPEQtView::canGoBack const):
        (WPEQtView::isLoading const):
        (WPEQtView::canGoForward const):
        (WPEQtView::goBack):
        (WPEQtView::goForward):
        (WPEQtView::reload):
        (WPEQtView::stop):
        (WPEQtView::loadHtml):
        (WPEQtView::jsAsyncReadyCallback):
        (WPEQtView::handleJsResult):
        (WPEQtView::runJavaScript):
        (WPEQtView::mousePressEvent):
        (WPEQtView::mouseReleaseEvent):
        (WPEQtView::hoverEnterEvent):
        (WPEQtView::hoverLeaveEvent):
        (WPEQtView::hoverMoveEvent):
        (WPEQtView::wheelEvent):
        (WPEQtView::keyPressEvent):
        (WPEQtView::keyReleaseEvent):
        (WPEQtView::touchEvent):
        * UIProcess/API/wpe/qt/WPEQtView.h: Added.
        * UIProcess/API/wpe/qt/WPEQtViewBackend.cpp: Added.
        (configureCallback):
        (WPEQtViewBackend::WPEQtViewBackend):
        (WPEQtViewBackend::~WPEQtViewBackend):
        (WPEQtViewBackend::configureGlibEglDisplay):
        (WPEQtViewBackend::configureEglDisplay):
        (WPEQtViewBackend::initialize):
        (WPEQtViewBackend::backend const):
        (WPEQtViewBackend::resize):
        (WPEQtViewBackend::getTexture):
        (WPEQtViewBackend::initSurface):
        (WPEQtViewBackend::displayImage):
        (WPEQtViewBackend::modifiers const):
        (WPEQtViewBackend::dispatchHoverEnterEvent):
        (WPEQtViewBackend::dispatchHoverLeaveEvent):
        (WPEQtViewBackend::dispatchHoverMoveEvent):
        (WPEQtViewBackend::dispatchMousePressEvent):
        (WPEQtViewBackend::dispatchMouseReleaseEvent):
        (WPEQtViewBackend::dispatchWheelEvent):
        (WPEQtViewBackend::dispatchKeyEvent):
        (WPEQtViewBackend::dispatchTouchEvent):
        * UIProcess/API/wpe/qt/WPEQtViewBackend.h: Added.
        * UIProcess/API/wpe/qt/WPEQtViewLoadRequest.cpp: Added.
        (WPEQtViewLoadRequest::WPEQtViewLoadRequest):
        (WPEQtViewLoadRequest::~WPEQtViewLoadRequest):
        (WPEQtViewLoadRequest::url const):
        (WPEQtViewLoadRequest::status const):
        (WPEQtViewLoadRequest::errorString const):
        * UIProcess/API/wpe/qt/WPEQtViewLoadRequest.h: Added.
        * UIProcess/API/wpe/qt/WPEQtViewLoadRequestPrivate.h: Added.
        (WPEQtViewLoadRequestPrivate::WPEQtViewLoadRequestPrivate):
        (WPEQtViewLoadRequestPrivate::~WPEQtViewLoadRequestPrivate):
        * UIProcess/API/wpe/qt/qmldir: Added.

2019-01-17  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] Content offset jumps erratically when autoscrolling near scroll view content inset areas
        https://bugs.webkit.org/show_bug.cgi?id=193494
        <rdar://problem/46859627>

        Reviewed by Simon Fraser and Tim Horton.

        Adds `contentInsets` to `VisibleContentRectUpdateInfo`. This keeps track of the visible content insets
        surrounding the unobscured content rect. See WebCore ChangeLog for more details.

        * Shared/VisibleContentRectUpdateInfo.cpp:
        (WebKit::VisibleContentRectUpdateInfo::encode const):
        (WebKit::VisibleContentRectUpdateInfo::decode):
        (WebKit::operator<<):
        * Shared/VisibleContentRectUpdateInfo.h:
        (WebKit::VisibleContentRectUpdateInfo::VisibleContentRectUpdateInfo):
        (WebKit::VisibleContentRectUpdateInfo::contentInsets const):
        (WebKit::operator==):
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _computedObscuredInset]):
        (-[WKWebView _computedContentInset]):
        (-[WKWebView _computedUnobscuredSafeAreaInset]):

        We don't care about source compatibility with iOS 10 and below anymore, so we should change these >= iOS 11
        target checks to simply `PLATFORM(IOS)`.

        (-[WKWebView _updateVisibleContentRects]):

        Compute the visible content insets on all sides of the unobscured content rect. These insets are scaled to
        content coordinates.

        * UIProcess/ios/WKContentView.h:
        * UIProcess/ios/WKContentView.mm:
        (floatBoxExtent):

        Add a helper to convert `UIEdgeInsets` to `WebCore::FloatBoxExtent`, and use it in a few places below.

        (-[WKContentView didUpdateVisibleRect:unobscuredRect:contentInsets:unobscuredRectInScrollViewCoordinates:obscuredInsets:unobscuredSafeAreaInsets:inputViewBounds:scale:minimumScale:inStableState:isChangingObscuredInsetsInteractively:enclosedInScrollableAncestorView:]):
        (-[WKContentView didUpdateVisibleRect:unobscuredRect:unobscuredRectInScrollViewCoordinates:obscuredInsets:unobscuredSafeAreaInsets:inputViewBounds:scale:minimumScale:inStableState:isChangingObscuredInsetsInteractively:enclosedInScrollableAncestorView:]): Deleted.
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::updateVisibleContentRects):

        Update the Page's content insets.

2019-01-17  Truitt Savell  <tsavell@apple.com>

        Unreviewed, rolling out r240124.

        This commit broke an internal build.

        Reverted changeset:

        "SDK_VARIANT build destinations should be separate from non-
        SDK_VARIANT builds"
        https://bugs.webkit.org/show_bug.cgi?id=189553
        https://trac.webkit.org/changeset/240124

2019-01-17  John Wilander  <wilander@apple.com>

        Add infrastructure to enable/disable ITP Debug Mode through Preferences
        https://bugs.webkit.org/show_bug.cgi?id=193510
        <rdar://problem/47330969>

        Reviewed by Dean Jackson.

        * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp:
        (WebKit::ResourceLoadStatisticsMemoryStore::ensurePrevalentResourcesForDebugMode):
        (WebKit::ResourceLoadStatisticsMemoryStore::setResourceLoadStatisticsDebugMode):
        (WebKit::ResourceLoadStatisticsMemoryStore::setPrevalentResourceForDebugMode):
            These functions are now suited for runtime switching of ITP Debug Mode.
        * Shared/WebPreferences.yaml:
            Changed name from ResourceLoadStatisticsDebugMode to ItpDebugModeEnabled.
        * UIProcess/API/Cocoa/WKPreferences.mm:
        (-[WKPreferences _setItpDebugModeEnabled:]):
        (-[WKPreferences _itpDebugModeEnabled]):
            New private preferences functions.
        * UIProcess/API/Cocoa/WKPreferencesPrivate.h:
        * UIProcess/Cocoa/ResourceLoadStatisticsMemoryStoreCocoa.mm:
        (WebKit::ResourceLoadStatisticsMemoryStore::registerUserDefaultsIfNeeded):
            Removed support for old experimental user default. Added a new one that's
            not connected to any UI, i.e. merely for command line debugging where
            ITP Debug Mode needs to be on all the time.

2019-01-17  Tim Horton  <timothy_horton@apple.com>

        Adopt NSTextCheckingSuppressInitialCapitalizationKey
        https://bugs.webkit.org/show_bug.cgi?id=193545

        Reviewed by Dean Jackson.

        * UIProcess/mac/TextCheckerMac.mm:
        (WebKit::TextChecker::checkTextOfParagraph):
        (WebKit::TextChecker::getGuessesForWord):

2019-01-17  Jer Noble  <jer.noble@apple.com>

        SDK_VARIANT build destinations should be separate from non-SDK_VARIANT builds
        https://bugs.webkit.org/show_bug.cgi?id=189553

        Reviewed by Tim Horton.

        * Configurations/Base.xcconfig:
        * Configurations/BaseTarget.xcconfig:
        * Configurations/SDKVariant.xcconfig: Added.

2019-01-16  Dean Jackson  <dino@apple.com>

        (iPad) Link tapping is sluggish on many sites
        https://bugs.webkit.org/show_bug.cgi?id=193522
        <rdar://problem/47102987>

        Reviewed by Wenson Hsieh.

        Some WKWebView clients might set the initial zoom scale of the page to
        something other than 1, which disables the "fast tap" behaviour.
        The fix is very simple -- just check against the initial scale rather
        than 1.

        The most likely regression from this would be pages designed for desktop,
        but provide a viewport tag saying width=device-width and initial-scale.
        They might stop allowing double-tap-to-zoom.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _allowsDoubleTapGestures]): Check against initial page scale.

2019-01-17  Alex Christensen  <achristensen@webkit.org>

        Stop using NetworkStorageSession::storageSession in WebCore
        https://bugs.webkit.org/show_bug.cgi?id=193529

        Reviewed by Tim Horton.

        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::createSocketStream):
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkSocketStream.cpp:
        (WebKit::NetworkSocketStream::create):
        (WebKit::NetworkSocketStream::NetworkSocketStream):
        * NetworkProcess/NetworkSocketStream.h:
        * NetworkProcess/NetworkStorageSessionProvider.h: Added.
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/Network/WebSocketProvider.cpp:
        (WebKit::WebSocketProvider::createSocketStreamHandle):
        * WebProcess/Network/WebSocketProvider.h:
        * WebProcess/WebPage/WebCookieJar.cpp:
        (WebKit::WebCookieJar::WebCookieJar):
        * WebProcess/WebPage/WebCookieJar.h:

2019-01-16  Youenn Fablet  <youenn@apple.com>

        Add a new SPI for controlling getUserMedia
        https://bugs.webkit.org/show_bug.cgi?id=192793

        Reviewed by Eric Carlson.

        Some weaknesses of the current getUserMedia/enumerateDevices SPI were found.
        In particular:
        - The hash salt should be handled by WebKit not by apps using WebKit.
        - No need to expose the frame URL, only the top level origin is needed.
        - The names of the callback are changed to improve the intent of these callbacks.
        Addressed these by creating a new SPI which will replace the current one.
        The current SPI will be removed later on.

        Did some refactoring by making the callbacks not return false.
        Instead, implement the default behavior inside the request objects as deny methods.
        Some further refactoring will be done as a follow-up to better align the C API with the Cocoa API.

        * UIProcess/API/APIUIClient.h:
        (API::UIClient::decidePolicyForUserMediaPermissionRequest):
        (API::UIClient::checkUserMediaPermissionForOrigin):
        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetPageUIClient):
        * UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _mediaCaptureState]):
        (-[WKWebView _setMediaCaptureMuted:]):
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        * UIProcess/API/glib/WebKitUIClient.cpp:
        * UIProcess/Cocoa/MediaCaptureUtilities.h: Added.
        * UIProcess/Cocoa/MediaCaptureUtilities.mm: Added.
        * UIProcess/Cocoa/UIDelegate.h:
        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::UIDelegate::setDelegate):
        (WebKit::requestUserMediaAuthorizationForFrame):
        (WebKit::UIDelegate::UIClient::decidePolicyForUserMediaPermissionRequest):
        (WebKit::UIDelegate::UIClient::checkUserMediaPermissionForOrigin):
        (WebKit::UIDelegate::UIClient::mediaCaptureStateDidChange):
        * UIProcess/UserMediaPermissionCheckProxy.h:
        (WebKit::UserMediaPermissionCheckProxy::deny):
        * UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
        (WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame):
        (WebKit::UserMediaPermissionRequestManagerProxy::getUserMediaPermissionInfo):
        * UIProcess/UserMediaPermissionRequestProxy.h:

2019-01-16  Youenn Fablet  <youenn@apple.com>

        Pipe cache quota request from Network Process to UIProcess
        https://bugs.webkit.org/show_bug.cgi?id=193296

        Reviewed by Alex Christensen.

        When cache storage hits quota for a given origin, pipe the request back to NetworkProcess.
        No record will be put until the quota request is answered.
        The request is sent from CacheStorage::Caches to CacheStorage::Engine and to NetworkProcess.
        NetworkProcess then sends it to NetworkProcessProxy.
        Currently NetworkProcessProxy just answers by keeping the quota as it is.
        In the future, NetworkProcessProxy should make a delegate call to let the app using WebKit
        make a decision on the quota. This will allow prompting user to bump it as done for other data.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::requestCacheStorageSpace):
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/cache/CacheStorageEngine.cpp:
        (WebKit::CacheStorage::Engine::~Engine):
        (WebKit::CacheStorage::Engine::from):
        (WebKit::CacheStorage::Engine::Engine):
        (WebKit::CacheStorage::Engine::requestSpace):
        (WebKit::CacheStorage::Engine::requestSpaceCompleted):
        * NetworkProcess/cache/CacheStorageEngine.h:
        * NetworkProcess/cache/CacheStorageEngineCache.cpp:
        (WebKit::CacheStorage::Cache::put):
        (WebKit::CacheStorage::Cache::retryPuttingPendingRecords):
        * NetworkProcess/cache/CacheStorageEngineCache.h:
        * NetworkProcess/cache/CacheStorageEngineCaches.cpp:
        (WebKit::CacheStorage::Caches::requestSpace):
        (WebKit::CacheStorage::Caches::notifyCachesOfRequestSpaceEnd):
        * NetworkProcess/cache/CacheStorageEngineCaches.h:
        (WebKit::CacheStorage::Caches::isRequestingSpace const):
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::requestCacheStorageSpace):
        * UIProcess/Network/NetworkProcessProxy.h:
        * UIProcess/Network/NetworkProcessProxy.messages.in:

2019-01-16  Alex Christensen  <achristensen@webkit.org>

        sendBeacon to previously-unvisited https domain always fails
        https://bugs.webkit.org/show_bug.cgi?id=193508

        Reviewed by Geoffrey Garen.

        * NetworkProcess/PingLoad.cpp:
        (WebKit::PingLoad::didReceiveChallenge):
        If a ping load is doing a TLS handshake, continue if the server has good certificates.

2019-01-16  Youenn Fablet  <youenn@apple.com>

        ASSERTION FAILED: m_networkLoadInformationByID.contains(identifier) in WebKit::NetworkConnectionToWebProcess::addNetworkLoadInformationMetrics
        https://bugs.webkit.org/show_bug.cgi?id=189097
        <rdar://problem/43856423>

        Reviewed by Alex Christensen.

        In case where the inspector is launched, it will instruct the NetworkConnectionToWebProcess to start capturing network metrics.
        If this happens in the middle of a load, addNetworkLoadInformationMetrics might fail since addNetworkLoadInformation will not be called.
        To fix this issue, store whether to capture metrics at NetworkResourceLoader level.

        To ensure that the case of switching back and forth capture of metrics, disable loader capture of metrics whenver NetworkConnectionToWebProcess is asked to.

        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::setCaptureExtraNetworkLoadMetricsEnabled):
        * NetworkProcess/NetworkConnectionToWebProcess.h:
        (WebKit::NetworkConnectionToWebProcess::addNetworkLoadInformationMetrics):
        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::m_shouldCaptureExtraNetworkLoadMetrics):
        (WebKit::NetworkResourceLoader::shouldCaptureExtraNetworkLoadMetrics const):
        * NetworkProcess/NetworkResourceLoader.h:

2019-01-16  Alex Christensen  <achristensen@webkit.org>

        Revert r239938
        https://bugs.webkit.org/show_bug.cgi?id=193267
        <rdar://problem/47297304>

        * Configurations/WebContent-iOS.entitlements:

2019-01-16  Chris Dumez  <cdumez@apple.com>

        Regression(r240046) Several API tests are crashing
        https://bugs.webkit.org/show_bug.cgi?id=193509

        Reviewed by Geoffrey Garen.

        The crashes would happen because loadRequestShared() would take a WebProcessProxy& in parameter but
        then call reattachToWebProcess() if the page is not valid, which would replace m_process and invalidate
        our process reference.

        To address the issue, move the reattachToWebProcess() call to loadRequest(), before calling
        loadRequestShared(). Also, update *Shared() methods to take a Ref<WebProcessProxy>&& instead
        of a WebProcessProxy& in parameter. Since we call client delegates, we need to make sure
        our process stays alive.

        * UIProcess/ProvisionalPageProxy.cpp:
        (WebKit::ProvisionalPageProxy::loadData):
        (WebKit::ProvisionalPageProxy::loadRequest):
        (WebKit::ProvisionalPageProxy::didCreateMainFrame):
        (WebKit::ProvisionalPageProxy::didPerformClientRedirect):
        (WebKit::ProvisionalPageProxy::didStartProvisionalLoadForFrame):
        (WebKit::ProvisionalPageProxy::didFailProvisionalLoadForFrame):
        (WebKit::ProvisionalPageProxy::didNavigateWithNavigationData):
        (WebKit::ProvisionalPageProxy::didChangeProvisionalURLForFrame):
        (WebKit::ProvisionalPageProxy::decidePolicyForNavigationActionAsync):
        (WebKit::ProvisionalPageProxy::decidePolicyForResponse):
        (WebKit::ProvisionalPageProxy::startURLSchemeTask):
        (WebKit::ProvisionalPageProxy::backForwardGoToItem):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::loadRequest):
        (WebKit::WebPageProxy::loadRequestWithNavigationShared):
        (WebKit::WebPageProxy::loadData):
        (WebKit::WebPageProxy::loadDataWithNavigationShared):
        (WebKit::WebPageProxy::didPerformDragControllerAction):
        (WebKit::WebPageProxy::findPlugin):
        (WebKit::WebPageProxy::didCreateMainFrame):
        (WebKit::WebPageProxy::didCreateSubframe):
        (WebKit::WebPageProxy::didStartProvisionalLoadForFrame):
        (WebKit::WebPageProxy::didStartProvisionalLoadForFrameShared):
        (WebKit::WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrame):
        (WebKit::WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrameShared):
        (WebKit::WebPageProxy::willPerformClientRedirectForFrame):
        (WebKit::WebPageProxy::didCancelClientRedirectForFrame):
        (WebKit::WebPageProxy::didChangeProvisionalURLForFrame):
        (WebKit::WebPageProxy::didChangeProvisionalURLForFrameShared):
        (WebKit::WebPageProxy::didFailProvisionalLoadForFrame):
        (WebKit::WebPageProxy::didFailProvisionalLoadForFrameShared):
        (WebKit::WebPageProxy::didCommitLoadForFrame):
        (WebKit::WebPageProxy::didFinishDocumentLoadForFrame):
        (WebKit::WebPageProxy::didFinishLoadForFrame):
        (WebKit::WebPageProxy::didFailLoadForFrame):
        (WebKit::WebPageProxy::didSameDocumentNavigationForFrame):
        (WebKit::WebPageProxy::didReceiveTitleForFrame):
        (WebKit::WebPageProxy::didFirstVisuallyNonEmptyLayoutForFrame):
        (WebKit::WebPageProxy::didDisplayInsecureContentForFrame):
        (WebKit::WebPageProxy::didRunInsecureContentForFrame):
        (WebKit::WebPageProxy::frameDidBecomeFrameSet):
        (WebKit::WebPageProxy::decidePolicyForNavigationActionAsync):
        (WebKit::WebPageProxy::decidePolicyForNavigationActionAsyncShared):
        (WebKit::WebPageProxy::decidePolicyForNavigationAction):
        (WebKit::WebPageProxy::decidePolicyForNavigationActionSync):
        (WebKit::WebPageProxy::decidePolicyForNewWindowAction):
        (WebKit::WebPageProxy::decidePolicyForResponse):
        (WebKit::WebPageProxy::decidePolicyForResponseShared):
        (WebKit::WebPageProxy::unableToImplementPolicy):
        (WebKit::WebPageProxy::willSubmitForm):
        (WebKit::WebPageProxy::didNavigateWithNavigationData):
        (WebKit::WebPageProxy::didNavigateWithNavigationDataShared):
        (WebKit::WebPageProxy::didPerformClientRedirect):
        (WebKit::WebPageProxy::didPerformClientRedirectShared):
        (WebKit::WebPageProxy::didPerformServerRedirect):
        (WebKit::WebPageProxy::didUpdateHistoryTitle):
        (WebKit::WebPageProxy::createNewPage):
        (WebKit::WebPageProxy::runJavaScriptAlert):
        (WebKit::WebPageProxy::runJavaScriptConfirm):
        (WebKit::WebPageProxy::runJavaScriptPrompt):
        (WebKit::WebPageProxy::unavailablePluginButtonClicked):
        (WebKit::WebPageProxy::runBeforeUnloadConfirmPanel):
        (WebKit::WebPageProxy::runOpenPanel):
        (WebKit::WebPageProxy::printFrame):
        (WebKit::WebPageProxy::backForwardGoToItem):
        (WebKit::WebPageProxy::backForwardGoToItemShared):
        (WebKit::WebPageProxy::learnWord):
        (WebKit::WebPageProxy::ignoreWord):
        (WebKit::WebPageProxy::didReceiveEvent):
        (WebKit::WebPageProxy::editingRangeCallback):
        (WebKit::WebPageProxy::rectForCharacterRangeCallback):
        (WebKit::WebPageProxy::focusedFrameChanged):
        (WebKit::WebPageProxy::frameSetLargestFrameChanged):
        (WebKit::WebPageProxy::exceededDatabaseQuota):
        (WebKit::WebPageProxy::requestGeolocationPermissionForFrame):
        (WebKit::WebPageProxy::requestUserMediaPermissionForFrame):
        (WebKit::WebPageProxy::enumerateMediaDevicesForFrame):
        (WebKit::WebPageProxy::startURLSchemeTask):
        (WebKit::WebPageProxy::startURLSchemeTaskShared):
        (WebKit::WebPageProxy::stopURLSchemeTask):
        (WebKit::WebPageProxy::loadSynchronousURLSchemeTask):
        * UIProcess/WebPageProxy.h:

2019-01-16  Chris Dumez  <cdumez@apple.com>

        Regression(PSON) View becomes blank after click a cross-site download link
        https://bugs.webkit.org/show_bug.cgi?id=193361
        <rdar://problem/47099573>

        Reviewed by Geoffrey Garen.

        The issue tracked by rdar://problem/47099573 is that a provisional load may get
        canceled (or converted into a download) *after* we've decided to process-swap.
        In such cases, the view should keep displaying the current site and it should
        still be interactive. However, with the previous PSON model, the view (pageProxy)
        would have already swapped to the new process and would end up displaying the
        initially empty document.

        To address the issue, this patch introduces the concept of a provisional load
        in the UIProcess, handled by a ProvisionalPageProxy which has its own privisional
        process. The WebPageProxy owns the ProvisionalPageProxy but we do not commit the
        provisional page until after the load was committed in the new process. This means
        that the view / WebPageProxy keeps using the old process and displays the current
        content until a load has committed in the provisional page. If no load commits
        in the provisional process (e.g. because the load is cancelled or converted into
        a download), then we merely destroy the ProvisionalPageProxy and terminate its
        process, without impacting the WebPageProxy.

        * Shared/WebPageCreationParameters.cpp:
        (WebKit::WebPageCreationParameters::encode const):
        (WebKit::WebPageCreationParameters::decode):
        * Shared/WebPageCreationParameters.h:
        Rename isSwapFromSuspended to isProcessSwap for clarity as we always want to
        delay attaching the drawing area in case of a process-swap, no matter what
        now that the previous process is kept alive until the provisional load is
        committed in the new process.

        * Shared/WebPolicyAction.h:
        Drop Suspend policy action. At decidePolicyForNavigationAction time, in case of
        process-swap, we now tell the previous process to simply ignore the load, while
        we create a ProvisionalPageProxy to do the new load in a new process.
        Suspension of the previous page in the old process, happens later, when a load
        is actually committed in the new process.

        * Sources.txt:
        Add new ProvisionalPageProxy file.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _killWebContentProcessAndResetState]):
        When calling _killWebContentProcessAndResetState on a WKWebView, kill both the current
        process and the provisional one, to maintain previous behavior in our API tests.

        * UIProcess/API/gtk/PageClientImpl.cpp:
        (WebKit::PageClientImpl::createDrawingAreaProxy):
        * UIProcess/API/gtk/PageClientImpl.h:
        * UIProcess/API/wpe/PageClientImpl.cpp:
        (WebKit::PageClientImpl::createDrawingAreaProxy):
        * UIProcess/API/wpe/PageClientImpl.h:
        * UIProcess/AcceleratedDrawingAreaProxy.cpp:
        (WebKit::AcceleratedDrawingAreaProxy::AcceleratedDrawingAreaProxy):
        (WebKit::AcceleratedDrawingAreaProxy::didUpdateBackingStoreState):
        (WebKit::AcceleratedDrawingAreaProxy::sendUpdateBackingStoreState):
        (WebKit::AcceleratedDrawingAreaProxy::waitForAndDispatchDidUpdateBackingStoreState):
        (WebKit::AcceleratedDrawingAreaProxy::setNativeSurfaceHandleForCompositing):
        (WebKit::AcceleratedDrawingAreaProxy::destroyNativeSurfaceHandleForCompositing):
        * UIProcess/AcceleratedDrawingAreaProxy.h:
        * UIProcess/Cocoa/WebViewImpl.h:
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::createDrawingAreaProxy):
        * UIProcess/DrawingAreaProxy.cpp:
        (WebKit::DrawingAreaProxy::DrawingAreaProxy):
        (WebKit::DrawingAreaProxy::~DrawingAreaProxy):
        (WebKit::DrawingAreaProxy::viewExposedRectChangedTimerFired):
        * UIProcess/DrawingAreaProxy.h:
        (WebKit::DrawingAreaProxy::process):
        * UIProcess/DrawingAreaProxyImpl.cpp:
        (WebKit::DrawingAreaProxyImpl::DrawingAreaProxyImpl):
        (WebKit::DrawingAreaProxyImpl::update):
        * UIProcess/DrawingAreaProxyImpl.h:
        * UIProcess/PageClient.h:
        * UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.h:
        * UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm:
        (WebKit::RemoteLayerTreeDrawingAreaProxy::RemoteLayerTreeDrawingAreaProxy):
        (WebKit::RemoteLayerTreeDrawingAreaProxy::~RemoteLayerTreeDrawingAreaProxy):
        (WebKit::RemoteLayerTreeDrawingAreaProxy::deviceScaleFactorDidChange):
        (WebKit::RemoteLayerTreeDrawingAreaProxy::sendUpdateGeometry):
        (WebKit::RemoteLayerTreeDrawingAreaProxy::acceleratedAnimationDidStart):
        (WebKit::RemoteLayerTreeDrawingAreaProxy::acceleratedAnimationDidEnd):
        (WebKit::RemoteLayerTreeDrawingAreaProxy::didRefreshDisplay):
        (WebKit::RemoteLayerTreeDrawingAreaProxy::waitForDidUpdateActivityState):
        (WebKit::RemoteLayerTreeDrawingAreaProxy::dispatchAfterEnsuringDrawing):
        * UIProcess/ios/PageClientImplIOS.h:
        * UIProcess/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::createDrawingAreaProxy):
        * UIProcess/ios/WKContentView.h:
        * UIProcess/ios/WKContentView.mm:
        (-[WKContentView _createDrawingAreaProxy:]):
        * UIProcess/mac/PageClientImplMac.h:
        * UIProcess/mac/PageClientImplMac.mm:
        (WebKit::PageClientImpl::createDrawingAreaProxy):
        * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.h:
        * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm:
        (WebKit::TiledCoreAnimationDrawingAreaProxy::TiledCoreAnimationDrawingAreaProxy):
        (WebKit::TiledCoreAnimationDrawingAreaProxy::deviceScaleFactorDidChange):
        (WebKit::TiledCoreAnimationDrawingAreaProxy::colorSpaceDidChange):
        (WebKit::TiledCoreAnimationDrawingAreaProxy::waitForDidUpdateActivityState):
        (WebKit::TiledCoreAnimationDrawingAreaProxy::createFence):
        (WebKit::TiledCoreAnimationDrawingAreaProxy::sendUpdateGeometry):
        (WebKit::TiledCoreAnimationDrawingAreaProxy::adjustTransientZoom):
        (WebKit::TiledCoreAnimationDrawingAreaProxy::commitTransientZoom):
        (WebKit::TiledCoreAnimationDrawingAreaProxy::dispatchAfterEnsuringDrawing):
        * UIProcess/mac/WebPageProxyMac.mm:
        * UIProcess/win/PageClientImpl.cpp:
        (WebKit::PageClientImpl::createDrawingAreaProxy):
        * UIProcess/win/PageClientImpl.h:
        * UIProcess/win/PageClientImpl.cpp:
        (WebKit::PageClientImpl::createDrawingAreaProxy):
        * UIProcess/win/PageClientImpl.h:
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
        (WebKit::TiledCoreAnimationDrawingArea::TiledCoreAnimationDrawingArea):
        Pass the drawing area's associated process when constructing it and store it as a member
        in addition to the page. This is necessary now that a page can be associated with 2
        WebProcesses at a time, each having its own drawing area.

        * UIProcess/Cocoa/WebPageProxyCocoa.mm:
        (WebKit::WebPageProxy::createSandboxExtensionsIfNeeded):
        Pass the process.

        * UIProcess/ProvisionalPageProxy.cpp: Added.
        (WebKit::ProvisionalPageProxy::ProvisionalPageProxy):
        (WebKit::ProvisionalPageProxy::~ProvisionalPageProxy):
        (WebKit::ProvisionalPageProxy::processDidTerminate):
        (WebKit::ProvisionalPageProxy::takeDrawingArea):
        (WebKit::ProvisionalPageProxy::cancel):
        (WebKit::ProvisionalPageProxy::processDidFinishLaunching):
        (WebKit::ProvisionalPageProxy::finishInitializingWebPageAfterProcessLaunch):
        (WebKit::ProvisionalPageProxy::initializeWebPage):
        (WebKit::ProvisionalPageProxy::loadData):
        (WebKit::ProvisionalPageProxy::loadRequest):
        (WebKit::ProvisionalPageProxy::goToBackForwardItem):
        (WebKit::ProvisionalPageProxy::didCreateMainFrame):
        (WebKit::ProvisionalPageProxy::didPerformClientRedirect):
        (WebKit::ProvisionalPageProxy::didStartProvisionalLoadForFrame):
        (WebKit::ProvisionalPageProxy::didFailProvisionalLoadForFrame):
        (WebKit::ProvisionalPageProxy::didCommitLoadForFrame):
        (WebKit::ProvisionalPageProxy::didNavigateWithNavigationData):
        (WebKit::ProvisionalPageProxy::didChangeProvisionalURLForFrame):
        (WebKit::ProvisionalPageProxy::decidePolicyForNavigationActionAsync):
        (WebKit::ProvisionalPageProxy::decidePolicyForResponse):
        (WebKit::ProvisionalPageProxy::startURLSchemeTask):
        (WebKit::ProvisionalPageProxy::backForwardGoToItem):
        (WebKit::ProvisionalPageProxy::didReceiveMessage):
        (WebKit::ProvisionalPageProxy::didReceiveSyncMessage):
        * UIProcess/ProvisionalPageProxy.h: Added.
        (WebKit::ProvisionalPageProxy::page):
        (WebKit::ProvisionalPageProxy::mainFrame const):
        (WebKit::ProvisionalPageProxy::process):
        (WebKit::ProvisionalPageProxy::processSwapRequestedByClient const):
        (WebKit::ProvisionalPageProxy::navigationID const):
        (WebKit::ProvisionalPageProxy::drawingArea const):
        New WebPageProxy-like class which is owned by the WebPageProxy and proxies IPC from
        the provisional process.

        * UIProcess/SuspendedPageProxy.cpp:
        (WebKit::SuspendedPageProxy::~SuspendedPageProxy):
        (WebKit::SuspendedPageProxy::unsuspend):
        (WebKit::SuspendedPageProxy::didProcessRequestToSuspend):
        Unregister the SuspendedPageProxy as an IPC message receiver a little bit earlier
        when we're going to unsuspend it. This avoids conflicting with the ProvisionalPageProxy
        which tries to register itself as an IPC message receiver for the same pageID when
        a process-swap occurs and we're switching to a suspended page.

        * UIProcess/WebFrameProxy.cpp:
        (WebKit::WebFrameProxy::isMainFrame const):
        WebFrameProxy::isMainFrame() relies on checking that the frame is the WebPageProxy's m_mainFrame.
        Now that the WebPageProxy can have a ProvisionalPageProxy, also check if it is the ProvisionalPageProxy's
        m_mainFrame to maintain previous behavior.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::provisionalDrawingArea const):
        Add getter for the provisional drawing area. We normally only deal with the page's current drawing area, but
        the ViewGestureController needs access to the provisional once to display the swipe gesture snapshot.

        (WebKit::WebPageProxy::swapToWebProcess):
        swapToWebProcess() no longer takes care of unsuspending the SuspendedPage because we now call swapToWebProcess()
        later, when a load is actually committed in the provisional page / process. swapToWebProcess() now also needs
        to initialize some data members such as the drawing area and the main frame as it is transferring them over from
        the ProvisionalPageProxy which started the provisional load.

        (WebKit::WebPageProxy::finishAttachingToWebProcess):
        We no longer need IsSwapFromSuspended parameter as this is called later now, after a load has actually been
        committed in the provisional process.

        (WebKit::WebPageProxy::setDrawingArea):
        (WebKit::WebPageProxy::initializeWebPage):
        - We no longer need IsSwapFromSuspended parameter as this is called later now, after a load has actually been
          committed in the provisional process.
        - Factor some code out to WebPageProxy::setDrawingArea() so that it can be shared with swapToWebProcess().

        (WebKit::WebPageProxy::maybeInitializeSandboxExtensionHandle):
        (WebKit::WebPageProxy::loadRequest):
        (WebKit::WebPageProxy::loadRequestWithNavigationShared):
        Only call setPendingAPIRequestURL() in loadRequestWithNavigation() only if ShouldTreatAsContinuingLoad is not
        Yes. This avoids hitting some assertions as this was already called during the first API call if needed.

        (WebKit::WebPageProxy::loadData):
        (WebKit::WebPageProxy::loadDataWithNavigationShared):
        (WebKit::WebPageProxy::stopLoading):
        (WebKit::WebPageProxy::reload):
        (WebKit::WebPageProxy::didPerformDragControllerAction):
        (WebKit::WebPageProxy::findPlugin):
        (WebKit::WebPageProxy::receivedNavigationPolicyDecision):
        In case of process swap, tell the previous process to ignore the load instead of suspending it right away.
        Suspension now happens later, only if we end up committing the provisional load in the new process.
        Also discard the SuspendedPage if it failed to suspend (we only reuse its process in this case). This used
        to happen a bit later but it is clearer if we do this as early as possible I think.

        (WebKit::WebPageProxy::commitProvisionalPage):
        When the load is committed in the new process, we call WebPageProxy::commitProvisionalPage(). It takes care of:
        - Actually swapping the WebPageProxy to the new process by calling processDidTerminate() / swapToWebProcess().
        - Suspending the current page.
        - Letting the client know the load is comitted
        - Destroy the ProvisionalPageProxy.
        This work used to happen earlier in continueNavigationInNewProcess().

        (WebKit::WebPageProxy::continueNavigationInNewProcess):
        Moved some of the logic to commitProvisionalPage(). We now merely start the load in a new ProvisionalPageProxy,
        without actually having the WebPageProxy switch to the new process yet.

        (WebKit::WebPageProxy::didCreateMainFrame):
        (WebKit::WebPageProxy::didCreateSubframe):
        (WebKit::WebPageProxy::didCreateWindow):
        Drop some code that is no longer needed, now that the ProvisionalPageProxy takes care of this.

        (WebKit::WebPageProxy::didDestroyNavigation):
        On process-swap, when telling the previous process to ignore the load and starting the new load in a new
        ProvisionalPageProxy, the previous WebPage attempts to destroy the navigation. In this case, we ignore
        the call since the navigation is merely taken over by the ProvisionalPageProxy.

        (WebKit::WebPageProxy::didStartProvisionalLoadForFrame):
        (WebKit::WebPageProxy::didStartProvisionalLoadForFrameShared):
        Moved some PSON logic to the ProvisionalPageProxy instead.

        (WebKit::WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrame):
        (WebKit::WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrameShared):
        (WebKit::WebPageProxy::willPerformClientRedirectForFrame):
        (WebKit::WebPageProxy::didCancelClientRedirectForFrame):
        (WebKit::WebPageProxy::didChangeProvisionalURLForFrame):
        (WebKit::WebPageProxy::didChangeProvisionalURLForFrameShared):

        (WebKit::WebPageProxy::didFailProvisionalLoadForFrame):
        (WebKit::WebPageProxy::didFailProvisionalLoadForFrameShared):
        When didFailProvisionalLoadForFrame() is called for a ProvisionalPageProxy, destroy it.

        (WebKit::WebPageProxy::didCommitLoadForFrame):
        (WebKit::WebPageProxy::didFinishDocumentLoadForFrame):
        (WebKit::WebPageProxy::didFinishLoadForFrame):
        (WebKit::WebPageProxy::didFailLoadForFrame):
        (WebKit::WebPageProxy::didSameDocumentNavigationForFrame):
        (WebKit::WebPageProxy::didReceiveTitleForFrame):
        (WebKit::WebPageProxy::didFirstVisuallyNonEmptyLayoutForFrame):
        (WebKit::WebPageProxy::didDisplayInsecureContentForFrame):
        (WebKit::WebPageProxy::didRunInsecureContentForFrame):
        (WebKit::WebPageProxy::frameDidBecomeFrameSet):
        (WebKit::WebPageProxy::decidePolicyForNavigationActionAsync):
        (WebKit::WebPageProxy::decidePolicyForNavigationActionAsyncShared):
        (WebKit::WebPageProxy::decidePolicyForNavigationAction):
        (WebKit::WebPageProxy::decidePolicyForNavigationActionSync):
        (WebKit::WebPageProxy::decidePolicyForNewWindowAction):
        (WebKit::WebPageProxy::decidePolicyForResponse):
        (WebKit::WebPageProxy::decidePolicyForResponseShared):
        (WebKit::WebPageProxy::unableToImplementPolicy):
        (WebKit::WebPageProxy::willSubmitForm):
        (WebKit::WebPageProxy::didNavigateWithNavigationData):
        (WebKit::WebPageProxy::didNavigateWithNavigationDataShared):
        (WebKit::WebPageProxy::didPerformClientRedirect):
        (WebKit::WebPageProxy::didPerformClientRedirectShared):
        (WebKit::WebPageProxy::didPerformServerRedirect):
        (WebKit::WebPageProxy::didUpdateHistoryTitle):
        (WebKit::WebPageProxy::createNewPage):
        (WebKit::WebPageProxy::runJavaScriptAlert):
        (WebKit::WebPageProxy::runJavaScriptConfirm):
        (WebKit::WebPageProxy::runJavaScriptPrompt):
        (WebKit::WebPageProxy::unavailablePluginButtonClicked):
        (WebKit::WebPageProxy::runBeforeUnloadConfirmPanel):
        (WebKit::WebPageProxy::runOpenPanel):
        (WebKit::WebPageProxy::printFrame):
        (WebKit::WebPageProxy::backForwardGoToItem):
        (WebKit::WebPageProxy::backForwardGoToItemShared):
        (WebKit::WebPageProxy::learnWord):
        (WebKit::WebPageProxy::ignoreWord):
        (WebKit::WebPageProxy::didReceiveEvent):
        (WebKit::WebPageProxy::editingRangeCallback):
        (WebKit::WebPageProxy::rectForCharacterRangeCallback):
        (WebKit::WebPageProxy::focusedFrameChanged):
        (WebKit::WebPageProxy::frameSetLargestFrameChanged):

        (WebKit::WebPageProxy::provisionalProcessDidTerminate):
        Cancel the provisiona load and destroy the ProvisionalPageProxy if
        the provisional process crashes.

        (WebKit::WebPageProxy::resetState):
        Drop some code that is no longer needed.

        (WebKit::WebPageProxy::creationParameters):
        - Move the hasRegisteredServiceWorkers flag initialization from the call site to here now that we have
        more than one call site. This was just some bad factoring.
        - Take the process in parameter now that we page can be associated with several processes at a time.

        (WebKit::WebPageProxy::exceededDatabaseQuota):
        (WebKit::WebPageProxy::requestGeolocationPermissionForFrame):
        (WebKit::WebPageProxy::requestUserMediaPermissionForFrame):
        (WebKit::WebPageProxy::enumerateMediaDevicesForFrame):
        (WebKit::WebPageProxy::startURLSchemeTask):
        (WebKit::WebPageProxy::startURLSchemeTaskShared):
        (WebKit::WebPageProxy::stopURLSchemeTask):
        (WebKit::WebPageProxy::loadSynchronousURLSchemeTask):
        (WebKit::WebPageProxy::checkURLReceivedFromCurrentOrPreviousWebProcess):
        (WebKit::WebPageProxy::willAcquireUniversalFileReadSandboxExtension):
        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::visitedLinkStore):
        (WebKit::WebPageProxy::provisionalPageProxy const):

        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::hasProvisionalPageWithID const):
        (WebKit::WebProcessProxy::updateBackForwardItem):
        (WebKit::WebProcessProxy::processDidTerminateOrFailedToLaunch):
        (WebKit::WebProcessProxy::didFinishLaunching):
        (WebKit::WebProcessProxy::canTerminateChildProcess):
        * UIProcess/WebProcessProxy.h:
        (WebKit::WebProcessProxy::addProvisionalPageProxy):
        (WebKit::WebProcessProxy::removeProvisionalPageProxy):
        Before updating a BackForwardListItem, we normally make sure the process has a WebPageProxy with the
        item's pageID. We have to tweak the logic because there may now be no WebPageProxy with this pageID
        associated with this process yet, because it is still a ProvisionalPageProxy.        

        * UIProcess/WebURLSchemeHandler.cpp:
        (WebKit::WebURLSchemeHandler::startTask):
        * UIProcess/WebURLSchemeHandler.h:
        * UIProcess/WebURLSchemeTask.cpp:
        (WebKit::WebURLSchemeTask::create):
        (WebKit::WebURLSchemeTask::WebURLSchemeTask):
        (WebKit::WebURLSchemeTask::didPerformRedirection):
        (WebKit::WebURLSchemeTask::didReceiveResponse):
        (WebKit::WebURLSchemeTask::didReceiveData):
        (WebKit::WebURLSchemeTask::didComplete):
        (WebKit::WebURLSchemeTask::pageDestroyed):
        * UIProcess/WebURLSchemeTask.h:
        Pass the process when constructing a WebURLSchemeTask and store it as a data member in addition to
        the page. This is necessary now that a WebPageProxy can be associated with several WebProcesses.

        * UIProcess/ios/ViewGestureControllerIOS.mm:
        (WebKit::ViewGestureController::endSwipeGesture):
        Use the provisional drawing area to display the swipe snapshot as it may differ from the one currently
        associated with the page in case of process swap.

        * WebKit.xcodeproj/project.pbxproj:
        Add ProvisionalPageProxy class.

        * WebProcess/WebPage/WebFrame.cpp:
        (WebKit::toPolicyAction):
        (WebKit::WebFrame::didReceivePolicyDecision):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::m_shouldAttachDrawingAreaOnPageTransition):
        (WebKit::WebPage::reinitializeWebPage):
        (WebKit::WebPage::didReceivePolicyDecision):
        Stop dealing with WebPolicyAction::Suspend as it no longer exists.

        (WebKit::WebPage::didCompletePageTransition):

        (WebKit::WebPage::setIsSuspended):
        Suspend the Page when setIsSuspended(true) is called, now that there is no longer a WebPolicyAction::Suspend.
        setIsSuspended(true) IPC is sent when we actually commit the provisional page.

        * WebProcess/WebPage/WebPage.h:

2019-01-16  Tim Horton  <timothy_horton@apple.com>

        Frequent null-deref under TiledCoreAnimationDrawingArea::scaleViewToFitDocumentIfNeeded()
        https://bugs.webkit.org/show_bug.cgi?id=193468
        <rdar://problem/38645869>

        Reviewed by Zalan Bujtas.

        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
        (WebKit::TiledCoreAnimationDrawingArea::scaleViewToFitDocumentIfNeeded):
        Adjust the null-check a bit; Zalan pointed out that the layout could
        be responsible for the Frame/RenderView going away, so we should bail
        *after* layout, not before.

2019-01-15  Fujii Hironori  <Hironori.Fujii@sony.com>

        Unreviewed WinCairo build fix.

        * WebProcess/WebPage/WebPageInspectorTargetController.cpp:
        (WebKit::WebPageInspectorTargetController::connectInspector): Use 'auto' instead of unprefixed InspectorTarget.
        (WebKit::WebPageInspectorTargetController::disconnectInspector): Ditto.
        (WebKit::WebPageInspectorTargetController::sendMessageToTargetBackend): Ditto.

2019-01-15  Alex Christensen  <achristensen@webkit.org>

        Reduce use of NetworkStorageSession::defaultStorageSession in WebCore
        https://bugs.webkit.org/show_bug.cgi?id=193368

        Reviewed by Geoff Garen.

        * WebProcess/Plugins/PluginView.cpp:
        (WebKit::PluginView::getAuthenticationInfo):

2019-01-15  Alex Christensen  <achristensen@webkit.org>

        Remove more NetworkProcess::singleton use
        https://bugs.webkit.org/show_bug.cgi?id=193484

        Reviewed by Geoffrey Garen.

        This removes the use of NetworkProcess::singleton in the LegacyCustomProtocolManager.
        This is the kind of awful duct tape code that keeps me awake at night, but it's necessary
        because we can't quite remove LegacyCustomProtocolManager yet but we need to allow more than
        one NetworkProcess object.  To make it work well enough until we remove LegacyCustomProtocolManager,
        use the last NetworkProcess object that has been created.

        * NetworkProcess/CustomProtocols/Cocoa/LegacyCustomProtocolManagerCocoa.mm:
        (newestNetworkProcess):
        (LegacyCustomProtocolManager::networkProcessCreated):
        (+[WKCustomProtocol canInitWithRequest:]):
        (-[WKCustomProtocol initWithRequest:cachedResponse:client:]):
        (-[WKCustomProtocol startLoading]):
        (-[WKCustomProtocol stopLoading]):
        * NetworkProcess/CustomProtocols/LegacyCustomProtocolManager.cpp:
        (WebKit::LegacyCustomProtocolManager::LegacyCustomProtocolManager):
        (WebKit::LegacyCustomProtocolManager::startLoading):
        (WebKit::LegacyCustomProtocolManager::stopLoading):
        * NetworkProcess/CustomProtocols/LegacyCustomProtocolManager.h:
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::NetworkProcess):

2019-01-15  Alex Christensen  <achristensen@webkit.org>

        Fix WinCairo build after r240014
        https://bugs.webkit.org/show_bug.cgi?id=161106

        * NetworkProcess/curl/NetworkDataTaskCurl.cpp:

2019-01-15  Ryosuke Niwa  <rniwa@webkit.org>

        VisualViewport API should be updated upon opening of keyboard
        https://bugs.webkit.org/show_bug.cgi?id=193475

        Reviewed by Simon Fraser.

        The bug was caused by the changes to unobscuredContentRectRespectingInputViewBounds not updating the visual viewport
        unless it caused a layout to happen. Added a code to update the visual viewport in WebPage::updateVisibleContentRects.

        Also fixed the bug that VisibleContentRectUpdateInfo::operator== was not checking differences in
        unobscuredContentRectRespectingInputViewBounds which resulted in the visual viewport override not getting updated
        while the keyboard is getting brought up.

        * Shared/VisibleContentRectUpdateInfo.h:
        (WebKit::operator==):
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::updateVisibleContentRects):

2019-01-15  Megan Gardner  <megan_gardner@apple.com>

        Add Reveal support in iOSMac
        https://bugs.webkit.org/show_bug.cgi?id=193408
        <rdar://problem/47300699>

        Reviewed by Tim Horton.

        Add calls to DictionaryLookup from the appropriate places.

        * UIProcess/PageClient.h:
        * UIProcess/ios/PageClientImplIOS.h:
        * UIProcess/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::didPerformDictionaryLookup):
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::didPerformDictionaryLookup):
        * WebProcess/WebPage/Cocoa/WebPageCocoa.mm:
        (WebKit::WebPage::dictionaryPopupInfoForRange):

2019-01-15  Claudio Saavedra  <csaavedra@igalia.com>

        [SOUP] Remove usage of NetworkProcess::singleton()
        https://bugs.webkit.org/show_bug.cgi?id=193444

        Reviewed by Michael Catanzaro.

        * NetworkProcess/soup/NetworkDataTaskSoup.cpp:
        (WebKit::NetworkDataTaskSoup::download):
        (WebKit::NetworkDataTaskSoup::didWriteDownload):
        (WebKit::NetworkDataTaskSoup::didFinishDownload):
        (WebKit::NetworkDataTaskSoup::didFailDownload):
        * NetworkProcess/soup/NetworkSessionSoup.cpp:
        (WebKit::NetworkSessionSoup::NetworkSessionSoup):

2019-01-15  Eric Carlson  <eric.carlson@apple.com>

        Fix incorrect ASSERT added in r239840
        https://bugs.webkit.org/show_bug.cgi?id=193466
        <rdar://problem/47095142>

        Reviewed by Youenn Fablet.

        * WebProcess/cocoa/UserMediaCaptureManager.cpp:
        (WebKit::UserMediaCaptureManager::Source::Source):

2019-01-15  Tim Horton  <timothy_horton@apple.com>

        Frequent null-deref under TiledCoreAnimationDrawingArea::scaleViewToFitDocumentIfNeeded()
        https://bugs.webkit.org/show_bug.cgi?id=193468
        <rdar://problem/38645869>

        Reviewed by Beth Dakin.

        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
        (WebKit::TiledCoreAnimationDrawingArea::scaleViewToFitDocumentIfNeeded):
        I'm not sure why this got *worse*, but we should null-check RenderView.
        It's OK to bail from scaleViewToFitDocumentIfNeeded, we'll re-do it
        the next time we paint (which will surely happen if we gain a RenderView).

2019-01-15  Chris Dumez  <cdumez@apple.com>

        Unreviewed, rolling out r239993, r239995, r239997, and
        r239999.

        Caused assertions under
        ViewGestureController::disconnectFromProcess()

        Reverted changesets:

        "Regression(PSON) View becomes blank after click a cross-site
        download link"
        https://bugs.webkit.org/show_bug.cgi?id=193361
        https://trac.webkit.org/changeset/239993

        "Unreviewed iOS build fix after r239993."
        https://trac.webkit.org/changeset/239995

        "Fix iOS build after r239993"
        https://bugs.webkit.org/show_bug.cgi?id=193361
        https://trac.webkit.org/changeset/239997

        "Unreviewed, revert part of r239997 as it is not needed to fix
        the build."
        https://trac.webkit.org/changeset/239999

2019-01-15  Alex Christensen  <achristensen@webkit.org>

        Stop using CookiesStrategy
        https://bugs.webkit.org/show_bug.cgi?id=161106

        Reviewed by Don Olmstead and Antti Koivisto.

        * NetworkProcess/NetworkProcessPlatformStrategies.cpp:
        (WebKit::NetworkProcessPlatformStrategies::createCookiesStrategy): Deleted.
        * NetworkProcess/NetworkProcessPlatformStrategies.h:
        * NetworkProcess/curl/NetworkDataTaskCurl.cpp:
        * Scripts/webkit/messages.py:
        * Sources.txt:
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/Automation/WebAutomationSessionProxy.cpp:
        (WebKit::WebAutomationSessionProxy::getCookiesForFrame):
        (WebKit::WebAutomationSessionProxy::deleteCookie):
        * WebProcess/Plugins/PluginView.cpp:
        (WebKit::PluginView::cookiesForURL):
        (WebKit::PluginView::setCookiesForURL):
        * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
        (WebKit::WebPlatformStrategies::createCookiesStrategy): Deleted.
        (WebKit::WebPlatformStrategies::cookiesForDOM): Deleted.
        (WebKit::WebPlatformStrategies::setCookiesFromDOM): Deleted.
        (WebKit::WebPlatformStrategies::cookiesEnabled): Deleted.
        (WebKit::WebPlatformStrategies::cookieRequestHeaderFieldValue): Deleted.
        (WebKit::WebPlatformStrategies::getRawCookies): Deleted.
        (WebKit::WebPlatformStrategies::deleteCookie): Deleted.
        * WebProcess/WebCoreSupport/WebPlatformStrategies.h:
        * WebProcess/WebPage/WebCookieJar.cpp: Added.
        (WebKit::WebCookieJar::cookies const):
        (WebKit::WebCookieJar::setCookies):
        (WebKit::WebCookieJar::cookiesEnabled const):
        (WebKit::WebCookieJar::cookieRequestHeaderFieldValue const):
        (WebKit::WebCookieJar::getRawCookies const):
        (WebKit::WebCookieJar::deleteCookie):
        * WebProcess/WebPage/WebCookieJar.h: Added.
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::m_shouldAttachDrawingAreaOnPageTransition):

2019-01-15  Per Arne Vollan  <pvollan@apple.com>

        Remove reporting for iOS mach lookups confirmed in-use
        https://bugs.webkit.org/show_bug.cgi?id=193455
        <rdar://problem/47259551>

        Reviewed by Brent Fulgham.

        * Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:

2019-01-15  Tim Horton  <timothy_horton@apple.com>

        Cannot tab out of WKWebView on macOS
        https://bugs.webkit.org/show_bug.cgi?id=161448
        <rdar://problem/28100085>

        Reviewed by Dean Jackson.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::takeFocus):
        If the UIDelegate doesn't implement takeFocus, provide a simple default
        implementation that just uses AppKit's key view loop to move the focus.

        * UIProcess/API/APIUIClient.h:
        (API::UIClient::takeFocus):
        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetPageUIClient):
        * UIProcess/Cocoa/UIDelegate.h:
        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::UIDelegate::UIClient::takeFocus):
        Make API::UIClient's takeFocus return a bool indicating whether the
        client implements it or not.

        * UIProcess/PageClient.h:
        * UIProcess/mac/PageClientImplMac.h:
        * UIProcess/mac/PageClientImplMac.mm:
        (WebKit::PageClientImpl::takeFocus):
        Plumb takeFocus to WebViewImpl.

        * UIProcess/Cocoa/WebViewImpl.h:
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::takeFocus):
        Borrow the relevant portion of WebKitLegacy's implementation of takeFocus,
        shifting focus to the next/previous key view in the window.

2019-01-15  Youenn Fablet  <youenn@apple.com>

        Remove the specific handling of ephemeral sessions from CacheStorage::Engine::from
        https://bugs.webkit.org/show_bug.cgi?id=193400

        Reviewed by Alex Christensen.

        It is no longer needed as we correctly handle ephemeral sessions removal.

        * NetworkProcess/cache/CacheStorageEngine.cpp:
        (WebKit::CacheStorage::Engine::from):

2019-01-15  Alex Christensen  <achristensen@webkit.org>

        Fix iOS build after r239993
        https://bugs.webkit.org/show_bug.cgi?id=193361

        * UIProcess/ProvisionalPageProxy.h:
        * UIProcess/SuspendedPageProxy.h:

2019-01-15  Per Arne Vollan  <pvollan@apple.com>

        [macOS] Adjust logging policy in WebKit's sandbox
        https://bugs.webkit.org/show_bug.cgi?id=193454
        <rdar://problem/47256325>

        Reviewed by Brent Fulgham.

        * WebProcess/com.apple.WebProcess.sb.in:

2019-01-15  Chris Dumez  <cdumez@apple.com>

        Unreviewed iOS build fix after r239993.

        * UIProcess/SuspendedPageProxy.h:

2019-01-15  Per Arne Vollan  <pvollan@apple.com>

        Add allow directive for MTLCompilerService.xpc to PluginProcess and WebContent
        https://bugs.webkit.org/show_bug.cgi?id=193453
        <rdar://problem/47268166>

        Reviewed by Brent Fulgham.

        * PluginProcess/mac/com.apple.WebKit.plugin-common.sb.in:
        * Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
        * WebProcess/com.apple.WebProcess.sb.in:

2019-01-15  Chris Dumez  <cdumez@apple.com>

        Regression(PSON) View becomes blank after click a cross-site download link
        https://bugs.webkit.org/show_bug.cgi?id=193361
        <rdar://problem/47099573>

        Reviewed by Geoff Garen.

        The issue tracked by rdar://problem/47099573 is that a provisional load may get
        canceled (or converted into a download) *after* we've decided to process-swap.
        In such cases, the view should keep displaying the current site and it should
        still be interactive. However, with the previous PSON model, the view (pageProxy)
        would have already swapped to the new process and would end up displaying the
        initially empty document.

        To address the issue, this patch introduces the concept of a provisional load
        in the UIProcess, handled by a ProvisionalPageProxy which has its own privisional
        process. The WebPageProxy owns the ProvisionalPageProxy but we do not commit the
        provisional page until after the load was committed in the new process. This means
        that the view / WebPageProxy keeps using the old process and displays the current
        content until a load has committed in the provisional page. If no load commits
        in the provisional process (e.g. because the load is cancelled or converted into
        a download), then we merely destroy the ProvisionalPageProxy and terminate its
        process, without impacting the WebPageProxy.

        * Shared/WebPageCreationParameters.cpp:
        (WebKit::WebPageCreationParameters::encode const):
        (WebKit::WebPageCreationParameters::decode):
        * Shared/WebPageCreationParameters.h:
        Rename isSwapFromSuspended to isProcessSwap for clarity as we always want to
        delay attaching the drawing area in case of a process-swap, no matter what
        now that the previous process is kept alive until the provisional load is
        committed in the new process.

        * Shared/WebPolicyAction.h:
        Drop Suspend policy action. At decidePolicyForNavigationAction time, in case of
        process-swap, we now tell the previous process to simply ignore the load, while
        we create a ProvisionalPageProxy to do the new load in a new process.
        Suspension of the previous page in the old process, happens later, when a load
        is actually committed in the new process.

        * Sources.txt:
        Add new ProvisionalPageProxy file.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _killWebContentProcessAndResetState]):
        When calling _killWebContentProcessAndResetState on a WKWebView, kill both the current
        process and the provisional one, to maintain previous behavior in our API tests.

        * UIProcess/PageClient.h:
        Tiny build fix.

        * UIProcess/ProvisionalPageProxy.cpp: Added.
        (WebKit::ProvisionalPageProxy::ProvisionalPageProxy):
        (WebKit::ProvisionalPageProxy::~ProvisionalPageProxy):
        (WebKit::ProvisionalPageProxy::takeDrawingArea):
        (WebKit::ProvisionalPageProxy::cancel):
        (WebKit::ProvisionalPageProxy::initializeWebPage):
        (WebKit::ProvisionalPageProxy::loadDataWithNavigation):
        (WebKit::ProvisionalPageProxy::loadRequestWithNavigation):
        (WebKit::ProvisionalPageProxy::goToBackForwardItem):
        (WebKit::ProvisionalPageProxy::didCreateMainFrame):
        (WebKit::ProvisionalPageProxy::didStartProvisionalLoadForFrame):
        (WebKit::ProvisionalPageProxy::didFailProvisionalLoadForFrame):
        (WebKit::ProvisionalPageProxy::didCommitLoadForFrame):
        (WebKit::ProvisionalPageProxy::didReceiveMessage):
        (WebKit::ProvisionalPageProxy::didReceiveSyncMessage):
        * UIProcess/ProvisionalPageProxy.h: Added.
        (WebKit::ProvisionalPageProxy::page):
        (WebKit::ProvisionalPageProxy::mainFrame const):
        (WebKit::ProvisionalPageProxy::process):
        (WebKit::ProvisionalPageProxy::processSwapRequestedByClient const):
        (WebKit::ProvisionalPageProxy::navigationID const):
        Add new ProvisionalPageProxy class to wrap the provisional load in the new process
        after a swap. The provisional page is owned by the WebPageProxy and we only commit
        the provisional page when the load is committed. Until then, the WebPageProxy keeps
        using the old process and displaying the current content.

        * UIProcess/SuspendedPageProxy.cpp:
        (WebKit::SuspendedPageProxy::~SuspendedPageProxy):
        (WebKit::SuspendedPageProxy::unsuspend):
        (WebKit::SuspendedPageProxy::didProcessRequestToSuspend):
        Unregister the SuspendedPageProxy as an IPC message receiver a little bit earlier
        when we're going to unsuspend it. This avoids conflicting with the ProvisionalPageProxy
        which tries to register itself as an IPC message receiver for the same pageID when
        a process-swap occurs and we're switching to a suspended page.

        * UIProcess/WebFrameProxy.cpp:
        (WebKit::WebFrameProxy::isMainFrame const):
        WebFrameProxy::isMainFrame() relies on checking that the frame is the WebPageProxy's m_mainFrame.
        Now that the WebPageProxy can have a ProvisionalPageProxy, also check if it is the ProvisionalPageProxy's
        m_mainFrame to maintain previous behavior.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::swapToWebProcess):
        swapToWebProcess() no longer takes care of unsuspending the SuspendedPage because we now call swapToWebProcess()
        later, when a load is actually committed in the provisional page / process. swapToWebProcess() now also needs
        to initialize some data members such as the drawing area and the main frame as it is transferring them over from
        the ProvisionalPageProxy which started the provisional load.

        (WebKit::WebPageProxy::finishAttachingToWebProcess):
        We no longer need IsSwapFromSuspended parameter as this is called later now, after a load has actually been
        committed in the provisional process.

        (WebKit::WebPageProxy::initializeWebPage):
        - We no longer need IsSwapFromSuspended parameter as this is called later now, after a load has actually been
          committed in the provisional process.
        - Factor some code out to WebPageProxy::setDrawingArea() so that it can be shared with swapToWebProcess().

        (WebKit::WebPageProxy::loadRequestWithNavigation):
        Only call setPendingAPIRequestURL() in loadRequestWithNavigation() only if ShouldTreatAsContinuingLoad is not
        Yes. This avoids hitting some assertions as this was already called during the first API call if needed.

        (WebKit::WebPageProxy::receivedNavigationPolicyDecision):
        In case of process swap, tell the previous process to ignore the load instead of suspending it right away.
        Suspension now happens later, only if we end up committing the provisional load in the new process.
        Also discard the SuspendedPage if it failed to suspend (we only reuse its process in this case). This used
        to happen a bit later but it is clearer if we do this as early as possible I think.

        (WebKit::WebPageProxy::commitProvisionalPage):
        When the load is committed in the new process, we call WebPageProxy::commitProvisionalPage(). It takes care of:
        - Actually swapping the WebPageProxy to the new process by calling processDidTerminate() / swapToWebProcess().
        - Suspending the current page.
        - Letting the client know the load is comitted
        - Destroy the ProvisionalPageProxy.
        This work used to happen earlier in continueNavigationInNewProcess().

        (WebKit::WebPageProxy::continueNavigationInNewProcess):
        Moved some of the logic to commitProvisionalPage(). We now merely start the load in a new ProvisionalPageProxy,
        without actually having the WebPageProxy switch to the new process yet.

        (WebKit::WebPageProxy::didCreateMainFrame):
        (WebKit::WebPageProxy::didCreateWindow):
        Drop some code that is no longer needed, now that the ProvisionalPageProxy takes care of this.

        (WebKit::WebPageProxy::didDestroyNavigation):
        On process-swap, when telling the previous process to ignore the load and starting the new load in a new
        ProvisionalPageProxy, the previous WebPage attempts to destroy the navigation. In this case, we ignore
        the call since the navigation is merely taken over by the ProvisionalPageProxy.

        (WebKit::WebPageProxy::didStartProvisionalLoadForFrame):
        Moved some PSON logic to the ProvisionalPageProxy instead.

        (WebKit::WebPageProxy::didFailProvisionalLoadForFrame):
        When didFailProvisionalLoadForFrame() is called for a ProvisionalPageProxy, destroy it.

        (WebKit::WebPageProxy::decidePolicyForNavigationActionAsync):
        (WebKit::WebPageProxy::decidePolicyForResponse):
        Capture the process in the lambda, to make sure we send the policy decision to the same process that
        asked for it, so as to not get confused by process swaps.

        (WebKit::WebPageProxy::resetState):
        Drop some code that is no longer needed.

        (WebKit::WebPageProxy::creationParameters):
        Move the hasRegisteredServiceWorkers flag initialization from the call site to here now that we have
        more than one call site. This was just some bad factoring.

        (WebKit::WebPageProxy::PageProcessOverride::PageProcessOverride):
        (WebKit::WebPageProxy::PageProcessOverride::~PageProcessOverride):
        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::temporarilyOverrideProcess):
        Add utility class to temporarily override the WebPageProxy's m_process with the provisional one when
        the ProvisionalPageProxy interacts with the WebPageProxy.

        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::hasProvisionalPageWithID const):
        (WebKit::WebProcessProxy::updateBackForwardItem):
        Before updating a BackForwardListItem, we normally make sure the process has a WebPageProxy with the
        item's pageID. We have to tweak the logic because there may now be no WebPageProxy with this pageID
        associated with this process yet, because it is still a ProvisionalPageProxy.

        (WebKit::WebProcessProxy::canTerminateChildProcess):
        Do not terminate the WebProcess if there are ProvisionalPageProxy objects using it.

        * UIProcess/WebProcessProxy.h:
        (WebKit::WebProcessProxy::addProvisionalPageProxy):
        (WebKit::WebProcessProxy::removeProvisionalPageProxy):

        * WebKit.xcodeproj/project.pbxproj:

        * WebProcess/WebPage/WebFrame.cpp:
        (WebKit::toPolicyAction):
        (WebKit::WebFrame::didReceivePolicyDecision):
        Stop dealing with WebPolicyAction::Suspend as it no longer exists.

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::reinitializeWebPage):
        (WebKit::WebPage::didReceivePolicyDecision):

        (WebKit::WebPage::setIsSuspended):
        Suspend the Page when setIsSuspended(true) is called, now that there is no longer a WebPolicyAction::Suspend.
        setIsSuspended(true) IPC is sent when we actually commit the provisional page.

        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
        (WebKit::TiledCoreAnimationDrawingArea::TiledCoreAnimationDrawingArea):

2019-01-15  Brian Burg  <bburg@apple.com>

        WebDriver: update Create Window implementation to support newest specification
        https://bugs.webkit.org/show_bug.cgi?id=193333
        <rdar://problem/45649489>

        Reviewed by Carlos Garcia Campos.

        Spec link: https://w3c.github.io/webdriver/#create-window

        The command as specified returns a value indicating whether the new browsing context
        was presented as a new tab or new window. Add a new delegate method to query the current
        'presentation' of the browsing context. The presentation can change over time due to
        things such as screen orientation, so the value that is returned by the command only
        reflects how the browsing context was initially presented to the user.

        This is covered by existing WPT and internal tests. More will be added when Selenium
        exposes this command in its various bindings.

        * UIProcess/API/Cocoa/_WKAutomationSessionDelegate.h:
        Add new SPI delegate method to query the 'presentation' (tab or window) for an automated WKWebView.

        * UIProcess/API/APIAutomationSessionClient.h:
        (API::AutomationSessionClient::currentPresentationOfPage):
        * UIProcess/Cocoa/AutomationSessionClient.h:
        * UIProcess/Cocoa/AutomationSessionClient.mm:
        (WebKit::AutomationSessionClient::AutomationSessionClient):
        (WebKit::toImpl):
        (WebKit::AutomationSessionClient::currentPresentationOfPage):
        * UIProcess/Automation/WebAutomationSession.cpp:
        (WebKit::toProtocol):
        (WebKit::WebAutomationSession::createBrowsingContext):
        Add plumbing between ObjC delegate and C++.

        * UIProcess/Automation/Automation.json:
        Include the initial presentation in the createBrowsingContext command result.

2019-01-14  Alex Christensen  <achristensen@webkit.org>

        Split headerValueForVary into specialized functions for NetworkProcess and WebProcess/WebKitLegacy
        https://bugs.webkit.org/show_bug.cgi?id=193429

        Reviewed by Joseph Pecoraro.

        * NetworkProcess/cache/NetworkCache.cpp:
        (WebKit::NetworkCache::makeUseDecision):
        (WebKit::NetworkCache::Cache::retrieve):
        (WebKit::NetworkCache::Cache::makeEntry):
        (WebKit::NetworkCache::Cache::makeRedirectEntry):
        (WebKit::NetworkCache::Cache::update):

2019-01-14  Tim Horton  <timothy_horton@apple.com>

        Fix a style mistake in PageClientImplMac

        * UIProcess/mac/PageClientImplMac.h:
        Somehow these methods ended up above the members.

2019-01-14  Per Arne Vollan  <pvollan@apple.com>

        [macOS] Remove reporting for mach lookups confirmed in-use
        https://bugs.webkit.org/show_bug.cgi?id=193415
        <rdar://problem/47266542>

        Reviewed by Brent Fulgham.

        Also, start denying the services which have not been confirmed to be in use.

        * WebProcess/com.apple.WebProcess.sb.in:

2019-01-14  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r239901, r239909, r239910, r239912,
        r239913, and r239914.
        https://bugs.webkit.org/show_bug.cgi?id=193407

        These revisions caused an internal failure (Requested by
        Truitt on #webkit).

        Reverted changesets:

        "[Cocoa] Avoid importing directly from subumbrella frameworks"
        https://bugs.webkit.org/show_bug.cgi?id=186016
        https://trac.webkit.org/changeset/239901

        "Tried to fix USE(APPLE_INTERNAL_SDK) builds after r239901."
        https://trac.webkit.org/changeset/239909

        "Tried to fix the build."
        https://trac.webkit.org/changeset/239910

        "Fixed iOS builds after r239910."
        https://trac.webkit.org/changeset/239912

        "More build fixing."
        https://trac.webkit.org/changeset/239913

        "Tried to fix USE(APPLE_INTERNAL_SDK) 32-bit builds."
        https://trac.webkit.org/changeset/239914

2019-01-14  Mark Lam  <mark.lam@apple.com>

        Re-enable ability to build --cloop builds.
        https://bugs.webkit.org/show_bug.cgi?id=192955
        <rdar://problem/46882363>

        Reviewed by Saam barati and Keith Miller.

        * Configurations/FeatureDefines.xcconfig:

2019-01-14  Alex Christensen  <achristensen@webkit.org>

        Remove unused networking entitlement from iOS WebProcess entitlements
        https://bugs.webkit.org/show_bug.cgi?id=193267

        Reviewed by Dean Jackson.

        * Configurations/WebContent-iOS.entitlements:
        This gave access to VPN stuff.  It's not needed any more.

2019-01-14  Youenn Fablet  <youenn@apple.com>

        Enable MDNS ICE candidate support by default
        https://bugs.webkit.org/show_bug.cgi?id=193358

        Reviewed by Geoffrey Garen.

        * Shared/WebPreferences.yaml:

2019-01-11  Matt Rajca  <mrajca@apple.com>

        Expose preference for site-specific quirks on iOS
        https://bugs.webkit.org/show_bug.cgi?id=193353

        Reviewed by Dean Jackson.

        * UIProcess/API/Cocoa/WKPreferences.mm:
        (-[WKPreferences _setNeedsSiteSpecificQuirks:]):
        (-[WKPreferences _needsSiteSpecificQuirks]):
        * UIProcess/API/Cocoa/WKPreferencesPrivate.h:

2019-01-14  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] Expose SPI to access the current sentence boundary and selection state
        https://bugs.webkit.org/show_bug.cgi?id=193398
        <rdar://problem/45893108>

        Reviewed by Dean Jackson.

        Expose SPI on WKWebView for internal clients to grab information about attributes at the current selection; so
        far, this only includes whether the selection is a caret or a range, and whether or not the start of the
        selection is at the start of a new sentence.

        Test: EditorStateTests.ObserveSelectionAttributeChanges

        * Shared/EditorState.cpp:
        (WebKit::EditorState::PostLayoutData::encode const):
        (WebKit::EditorState::PostLayoutData::decode):
        * Shared/EditorState.h:

        Add a new bit in EditorState on iOS to compute whether or not the start of the selection is at the start of a
        new sentence. This is computed and set when sending post-layout data in `WebPageIOS.mm`.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (selectionAttributes):
        (-[WKWebView _didChangeEditorState]):
        (-[WKWebView _selectionAttributes]):

        Make the new SPI property support KVO by invoking `-willChangeValueForKey:` and `-didChangeValueForKey:`
        whenever the selection attributes change.

        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::platformEditorState const):

2019-01-14  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Update OptionsGTK.cmake and NEWS for 2.23.3 release

        * gtk/NEWS: Add release notes for 2.23.3.

2019-01-13  Dan Bernstein  <mitz@apple.com>

        Fixed iOS builds after r239910.

        * Platform/spi/ios/PDFKitSPI.h:

2019-01-13  Dan Bernstein  <mitz@apple.com>

        Tried to fix the build.

        * Platform/spi/ios/PDFKitSPI.h:

2019-01-13  Dan Bernstein  <mitz@apple.com>

        Tried to fix USE(APPLE_INTERNAL_SDK) builds after r239901.

        Patch by Keith Rollin.

        * Platform/IPC/mac/ConnectionMac.mm:
        * Shared/mac/ChildProcessMac.mm:
        (WebKit::ChildProcess::launchServicesCheckIn):

2019-01-12  Timothy Hatcher  <timothy@apple.com>

        Have prefers-color-scheme: light always match on macOS versions before Mojave.
        https://bugs.webkit.org/show_bug.cgi?id=191655
        rdar://problem/46074680

        Reviewed by Megan Gardner.

        * Configurations/FeatureDefines.xcconfig: ENABLE_DARK_MODE_CSS_macosx for all OS versions.
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::effectiveAppearanceIsDark):
        * UIProcess/RemoteLayerTree/mac/ScrollerMac.mm:

2019-01-12  Dan Bernstein  <mitz@apple.com>

        [Cocoa] Avoid importing directly from subumbrella frameworks
        https://bugs.webkit.org/show_bug.cgi?id=186016
        <rdar://problem/40591038>

        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.

2019-01-11  Ryosuke Niwa  <rniwa@webkit.org>

        Enable visual viewport API by default
        https://bugs.webkit.org/show_bug.cgi?id=193376

        Reviewed by Simon Fraser.

        Enable this feature by default since the remaining issue on iOS is mostly about test failures,
        not an issue with the core functionality of the API.

        * Shared/WebPreferences.yaml:

2019-01-11  Brent Fulgham  <bfulgham@apple.com>

        Allow WebContent process access to some drawing-related IOKit properties
        https://bugs.webkit.org/show_bug.cgi?id=193086
        <rdar://problem/46568088>

        Reviewed by Eric Carlson.

        Add one missing IOKit property, and revise the regexp used for another.

        * Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:

2019-01-11  John Wilander  <wilander@apple.com>

        Compile out Web API Statistics Collection
        https://bugs.webkit.org/show_bug.cgi?id=193370
        <rdar://problem/45388584>

        Reviewed by Brent Fulgham.

        * Configurations/FeatureDefines.xcconfig:
            Defined ENABLE_WEB_API_STATISTICS, off by default.
        * Shared/WebCoreArgumentCoders.cpp:
        (IPC::ArgumentCoder<ResourceLoadStatistics>::encode):
            Skipped encoding of web API statistics.
        (IPC::ArgumentCoder<ResourceLoadStatistics>::decode):
            Skipped decoding of web API statistics.

2019-01-11  Sihui Liu  <sihui_liu@apple.com>

        IndexedDB: leak WebIDBConnectionToClient for retain cycle
        https://bugs.webkit.org/show_bug.cgi?id=193097
        <rdar://problem/46899601>

        Reviewed by Brady Eidson.

        Let WebIDBConnectionToClient hold reference to IPC::Connection instead of NetworkConnectionToWebProcess to break
        the cycle.

        * NetworkProcess/IndexedDB/WebIDBConnectionToClient.cpp:
        (WebKit::WebIDBConnectionToClient::create):
        (WebKit::WebIDBConnectionToClient::WebIDBConnectionToClient):
        (WebKit::WebIDBConnectionToClient::messageSenderConnection):
        * NetworkProcess/IndexedDB/WebIDBConnectionToClient.h:
        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::establishIDBConnectionToServer):

2019-01-11  Sihui Liu  <sihui_liu@apple.com>

        Make "Disable Web SQL" on by default
        https://bugs.webkit.org/show_bug.cgi?id=193354
        <rdar://problem/46524584>

        Reviewed by Geoffrey Garen.

        * Shared/WebPreferences.yaml:

2019-01-11  Devin Rousso  <drousso@apple.com>

        Fix style CFNetworkSPI style checker warnings from r239698
        https://bugs.webkit.org/show_bug.cgi?id=193369

        Reviewed by Joseph Pecoraro.

        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (-[WKNetworkSessionDelegate URLSession:task:didFinishCollectingMetrics:]):

2019-01-11  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] Precision drop state thrashes when dragging near the top edge of an editable element
        https://bugs.webkit.org/show_bug.cgi?id=193364
        <rdar://problem/47214117>

        Reviewed by Tim Horton.

        On iOS, marking a UIDropProposal as precise offsets the hit-testing location of the drop by a small distance
        either upwards or downwards from the actual location of the user's finger. When dragging over an editable
        element, WebKit currently marks the drop proposal as precise; however, when dragging over the top edge of an
        editable element, what happens is that the hit-testing location is offset to a location outside of the editable
        element, which causes us to turn off precision drop mode; subsequently, turning off precision drop mode removes
        the offset, which causes us to hit-test within the editable element once again and re-enable precision mode, and
        the cycle continues.

        In order to mitigate this, bail out of precision drop mode when dragging near the top or bottom edges of the
        highest editable root that contains the current drop caret position (or, if the drop caret is inside of a text
        form control, use the form control as the editable element instead).

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didPerformDragControllerAction):
        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::currentDragCaretEditableElementRect const):
        * UIProcess/WebPageProxy.messages.in:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView dropInteraction:sessionDidUpdate:]):

        Avoid precise mode when we're less than 25pt away from the top and bottom edge of the editable element rect.
        Since the drag location offset amount is a fixed offset in window coordinates, we first convert this minimum
        distance to the content view's coordinate space by dividing by the content scale factor.

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::performDragControllerAction):

2019-01-11  Tim Horton  <timothy_horton@apple.com>

        REGRESSION (PSON): Firefox app lacks Open in New Tab in menu
        https://bugs.webkit.org/show_bug.cgi?id=193366
        <rdar://problem/46097212>

        Reviewed by Simon Fraser.

        A pair of unrelated changes broke Firefox's use of WKWebView internals
        to override the long-press menu. Maintain binary compatibility by
        introducing linked-on-or-after checks.

        * UIProcess/Cocoa/VersionChecks.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::createWebPage):
        Disable PSON in Firefox when linked against an SDK where PSON wasn't enabled by default.
        Because gestures are very stateful, we always swap them out when swapping
        processes (changing that behavior is fairly risky). Also, we don't always
        inform the client when we swap processes (only when the process actually crashes),
        so they currently don't re-adjust the gesture recognizers when a PSON swap occurs.

        * UIProcess/ios/WKContentView.mm:
        (-[WKContentView _commonInitializationWithProcessPool:configuration:]):
        Synchronously install gesture recognizers under -init when linked against
        an SDK before the version that introduces lazy gesture recognizer installation.
        r237331 is an optimization that made us lazily install gestures when the
        view is parented, but Firefox (and potentially other clients) depend
        on them being installed synchronously in order to find and override them.

2019-01-11  Wenson Hsieh  <wenson_hsieh@apple.com>

        Introduce IDL files for runtime-enabled UndoManager and UndoItem JavaScript API
        https://bugs.webkit.org/show_bug.cgi?id=193109
        <rdar://problem/44807048>

        Reviewed by Ryosuke Niwa.

        Add a new SPI configuration flag to enable the UndoManager API. This is off by default.

        * Shared/WebPreferences.yaml:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _initializeWithConfiguration:]):
        * UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
        (-[WKWebViewConfiguration init]):
        (-[WKWebViewConfiguration copyWithZone:]):
        (-[WKWebViewConfiguration _setUndoManagerAPIEnabled:]):
        (-[WKWebViewConfiguration _undoManagerAPIEnabled]):
        * UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:

2019-01-10  Jiewen Tan  <jiewen_tan@apple.com>

        [WebAuthN] Change the nonce in the CTAP kInit command to weak random values
        https://bugs.webkit.org/show_bug.cgi?id=192061
        <rdar://problem/46471091>

        Reviewed by Chris Dumez.

        Change the nonce in the CTAP kInit command to weak random values as the nonce is mainly
        for being a probabilistically unique global identifier for hand shakes, instead of
        preventing replay attacks. Otherwise, it might exhaust system entropy unnecessarily.

        The patch also removes all logging when debugging the test case flakiness.

        * UIProcess/WebAuthentication/AuthenticatorManager.cpp:
        (WebKit::AuthenticatorManager::respondReceived):
        (WebKit::AuthenticatorManager::initTimeOutTimer):
        (WebKit::AuthenticatorManager::timeOutTimerFired):
        * UIProcess/WebAuthentication/Cocoa/HidService.mm:
        (WebKit::HidService::deviceAdded):
        * UIProcess/WebAuthentication/Mock/MockAuthenticatorManager.cpp:
        (WebKit::MockAuthenticatorManager::respondReceivedInternal):
        * UIProcess/WebAuthentication/Mock/MockHidConnection.cpp:
        (WebKit::MockHidConnection::send):
        * UIProcess/WebAuthentication/fido/CtapHidAuthenticator.cpp:
        (WebKit::CtapHidAuthenticator::makeCredential):
        (WebKit::CtapHidAuthenticator::getAssertion):
        * UIProcess/WebAuthentication/fido/CtapHidDriver.cpp:
        (WebKit::CtapHidDriver::Worker::write):
        (WebKit::CtapHidDriver::Worker::read):
        (WebKit::CtapHidDriver::Worker::returnMessage):
        (WebKit::CtapHidDriver::transact):
        (WebKit::CtapHidDriver::continueAfterChannelAllocated):
        (WebKit::CtapHidDriver::continueAfterResponseReceived):

2019-01-10  Timothy Hatcher  <timothy@apple.com>

        Add WKBundlePage SPI to temporarily force light or dark appearance on a page.
        https://bugs.webkit.org/show_bug.cgi?id=193327
        rdar://problem/47093222

        Reviewed by Tim Horton.

        Tests: WebKit.ForceLightAppearanceInBundle API Test

        * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
        (WKBundlePageSetUseDarkAppearance): Added.
        (WKBundlePageIsUsingDarkAppearance): Added.
        * WebProcess/InjectedBundle/API/c/WKBundlePagePrivate.h:

2019-01-10  Eric Carlson  <eric.carlson@apple.com>

        DeviceID hash salt manager can be NULL
        https://bugs.webkit.org/show_bug.cgi?id=193334
        <rdar://problem/47179650>

        Reviewed by Youenn Fablet.

        * UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
        (WebKit::UserMediaPermissionRequestManagerProxy::userMediaAccessWasGranted): No need to
        NULL-check websiteDataStore.deviceIdHashSaltStorage, it is a Ref.
        (WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame): Ditto.
        (WebKit::UserMediaPermissionRequestManagerProxy::getUserMediaPermissionInfo): Ditto.
        (WebKit::UserMediaPermissionRequestManagerProxy::enumerateMediaDevicesForFrame): Ditto.

        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::WebsiteDataStore): m_deviceIdHashSaltStorage is a Ref.
        (WebKit::WebsiteDataStore::fetchDataAndApply): Ditto.
        (WebKit::WebsiteDataStore::removeData): Ditto.
        * UIProcess/WebsiteData/WebsiteDataStore.h:
        (WebKit::WebsiteDataStore::deviceIdHashSaltStorage): Ditto.

2019-01-10  Per Arne Vollan  <pvollan@apple.com>

        [macOS] Add name of IORegistry key in sandbox.
        https://bugs.webkit.org/show_bug.cgi?id=193335
        <rdar://problem/47184951>

        Reviewed by Alexey Proskuryakov.

        The property IOGVAHEVCDecodeCapabilities was added in https://bugs.webkit.org/show_bug.cgi?id=193324.
        Also, the property IOGVAHEVCEncodeCapabilities needs to be added.

        * WebProcess/com.apple.WebProcess.sb.in:

2019-01-10  Zalan Bujtas  <zalan@apple.com>

        REGRESSION (r237658): Tap highlight limits cause the highlight to no longer show with legitimate button sizes
        https://bugs.webkit.org/show_bug.cgi?id=193294
        <rdar://problem/46006678>

        Reviewed by Simon Fraser.

        Input type elements should always paint tap highlight (ignore size heuristic). 

        * UIProcess/PageClient.h:
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * UIProcess/ios/PageClientImplIOS.h:
        * UIProcess/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::didGetTapHighlightGeometries):
        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _showTapHighlight]):
        (-[WKContentView _didGetTapHighlightForRequest:color:quads:topLeftRadius:topRightRadius:bottomLeftRadius:bottomRightRadius:nodeHasBuiltInClickHandling:]):
        (-[WKContentView _didGetTapHighlightForRequest:color:quads:topLeftRadius:topRightRadius:bottomLeftRadius:bottomRightRadius:]): Deleted.
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::didGetTapHighlightGeometries):
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::sendTapHighlightForNodeIfNecessary):

2019-01-10  Alexey Proskuryakov  <ap@apple.com>

        Remove unneeded XPCService variant for plugin service
        https://bugs.webkit.org/show_bug.cgi?id=193326

        Reviewed by Tim Horton.

        * Configurations/PluginService.32.xcconfig: Removed.
        * Configurations/PluginService.64.xcconfig:
        * PluginProcess/EntryPoint/mac/XPCService/PluginService.32-64.Info.plist: Removed.
        * PluginProcess/EntryPoint/mac/XPCService/PluginService.64.Info.plist: Copied from Source/WebKit/PluginProcess/EntryPoint/mac/XPCService/PluginService.32-64.Info.plist.
        * WebKit.xcodeproj/project.pbxproj:

2019-01-10  Eric Carlson  <eric.carlson@apple.com>

        Define page media state flags for display capture.
        https://bugs.webkit.org/show_bug.cgi?id=193230
        <rdar://problem/47095142>

        Reviewed by Youenn Fablet.

        * UIProcess/API/C/WKPage.cpp:
        (WKPageGetMediaState):
        * UIProcess/API/C/WKPagePrivate.h:
        * WebProcess/cocoa/UserMediaCaptureManager.cpp:
        (WebKit::UserMediaCaptureManager::Source::Source):
        (WebKit::UserMediaCaptureManager::createCaptureSource):

2019-01-10  Alex Christensen  <achristensen@webkit.org>

        REGRESSION(r239815) http/tests/workers/service/serviceworker-private-browsing.https.html test times out
        https://bugs.webkit.org/show_bug.cgi?id=193325

        Reviewed by Joseph Pecoraro.

        InjectedBundle::setPrivateBrowsingEnabled effectively didn't do anything when enabled was false.
        I made it destroy the legacy private browsing session in the NetworkProcess, which caused a test to time out.
        This functionality is only used for testing, so it's no big deal to revert that part of the patch.

        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::destroyLegacyPrivateBrowsingSession): Deleted.
        * NetworkProcess/NetworkConnectionToWebProcess.h:
        * NetworkProcess/NetworkConnectionToWebProcess.messages.in:
        * WebProcess/InjectedBundle/InjectedBundle.cpp:
        (WebKit::InjectedBundle::setPrivateBrowsingEnabled):
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::destroyLegacyPrivateBrowsingSessionInNetworkProcess): Deleted.
        * WebProcess/WebProcess.h:

2019-01-10  Per Arne Vollan  <pvollan@apple.com>

        [macOS] Add name of IORegistry key in sandbox.
        https://bugs.webkit.org/show_bug.cgi?id=193324

        Reviewed by Brent Fulgham.

        IOGVAVTCapabilities key has been changed to IOGVAHEVCDecodeCapabilities.

        * WebProcess/com.apple.WebProcess.sb.in:

2019-01-10  John Wilander  <wilander@apple.com>

        Override the session configuration for cookieAcceptPolicy
        https://bugs.webkit.org/show_bug.cgi?id=190925
        <rdar://problem/45497382>

        Reviewed by Alexey Proskuryakov and Alex Christensen.

        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (WebKit::NetworkSessionCocoa::NetworkSessionCocoa):
            Now sets cookieStorage._overrideSessionCookieAcceptPolicy to YES.

2019-01-09  Matt Rajca  <mrajca@apple.com>

        Put per-document autoplay behavior behind runtime website policies quirk instead of a compile time flag
        https://bugs.webkit.org/show_bug.cgi?id=193301

        Reviewed by Jer Noble.

        Register a new quirk that can be configured per-load for per-document media
        autoplay behaviors.

        * Shared/WebsiteAutoplayQuirk.h:
        * Shared/WebsitePoliciesData.cpp:
        (WebKit::WebsitePoliciesData::applyToDocumentLoader):
        * UIProcess/API/C/WKWebsitePolicies.cpp:
        (WKWebsitePoliciesSetAllowedAutoplayQuirks):
        (WKWebsitePoliciesGetAllowedAutoplayQuirks):
        * UIProcess/API/C/WKWebsitePolicies.h:
        * UIProcess/API/Cocoa/_WKWebsitePolicies.h:
        * UIProcess/API/Cocoa/_WKWebsitePolicies.mm:
        (-[_WKWebsitePolicies setAllowedAutoplayQuirks:]):
        (-[_WKWebsitePolicies allowedAutoplayQuirks]):

2019-01-10  Tim Horton  <timothy_horton@apple.com>

        Rename some entitlements files to be more clear about their target platform
        https://bugs.webkit.org/show_bug.cgi?id=193311

        Reviewed by Alexey Proskuryakov.

        * Configurations/Network-iOSMac.entitlements: Renamed from Source/WebKit/Configurations/Network-iOS-minimalsimulator.entitlements.
        * Configurations/NetworkService.xcconfig:
        * Configurations/WebContent-iOSMac.entitlements: Renamed from Source/WebKit/Configurations/WebContent-iOS-minimalsimulator.entitlements.
        * Configurations/WebContentService.xcconfig:
        * WebKit.xcodeproj/project.pbxproj:

2019-01-09  Brent Fulgham  <bfulgham@apple.com>

        Unreviewed build fix after r239816.

        Although EWS had no problem with the patch, I'm seeing build errors on the actual bots.
        This patch corrects the problem.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::logFrameNavigation):
        (WebKit::NetworkProcess::logUserInteraction):

2019-01-09  Brent Fulgham  <bfulgham@apple.com>

        Create a WebResourceLoadStatisticsStore attached to the NetworkSession
        https://bugs.webkit.org/show_bug.cgi?id=193261
        <rdar://problem/47158616>

        Reviewed by Alex Christensen.

        This patch modifies NetworkSession so that it owns a WebResourceLoadStatisticsStore
        object. This object is only created if the ResourceLoadStatistics feature is turned on.

        The patch also modifies WebResourceLoadStatisticsStore so that it can be constructed
        with an owning NetworkSession as an alternative to the current practice of using a
        WebsiteDataStore object.

        Two initial messages from the WebContent process are added (logFrameNavigation and
        logUserNavigation) that notify the network process of these actions. Currently they
        are called in addition the calls to the WebsiteDataStore object. These redundant calls
        will be removed in a future patch.

        This patch forces the ResourceLoadStatistics code in the NetworkSession to be off by
        default, so there should be no change in behavior with this patch.

        * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp:
        (WebKit::ResourceLoadStatisticsMemoryStore::updateClientSideCookiesAgeCap):
        * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::WebResourceLoadStatisticsStore):
        (WebKit::WebResourceLoadStatisticsStore::hasStorageAccessForFrame):
        (WebKit::WebResourceLoadStatisticsStore::callHasStorageAccessForFrameHandler):
        (WebKit::WebResourceLoadStatisticsStore::grantStorageAccess):
        (WebKit::WebResourceLoadStatisticsStore::callGrantStorageAccessHandler):
        (WebKit::WebResourceLoadStatisticsStore::removeAllStorageAccess):
        (WebKit::WebResourceLoadStatisticsStore::logFrameNavigation):
        (WebKit::WebResourceLoadStatisticsStore::logUserInteraction):
        (WebKit::WebResourceLoadStatisticsStore::setCacheMaxAgeCapForPrevalentResources):
        (WebKit::WebResourceLoadStatisticsStore::setCacheMaxAgeCap):
        (WebKit::WebResourceLoadStatisticsStore::updatePrevalentDomainsToBlockCookiesFor):
        (WebKit::WebResourceLoadStatisticsStore::callUpdatePrevalentDomainsToBlockCookiesForHandler):
        (WebKit::WebResourceLoadStatisticsStore::removePrevalentDomains):
        (WebKit::WebResourceLoadStatisticsStore::callRemoveDomainsHandler):
        * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h:
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::initializeNetworkProcess):
        (WebKit::NetworkProcess::logFrameNavigation):
        (WebKit::NetworkProcess::logUserInteraction):
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:
        * NetworkProcess/NetworkSession.cpp:
        (WebKit::NetworkSession::enableResourceLoadStatistics):
        * NetworkProcess/NetworkSession.h:
        (WebKit::NetworkSession::resourceLoadStatistics const):
        * NetworkProcess/NetworkSessionCreationParameters.cpp:
        (WebKit::NetworkSessionCreationParameters::privateSessionParameters):
        (WebKit::NetworkSessionCreationParameters::encode const):
        (WebKit::NetworkSessionCreationParameters::decode):
        * NetworkProcess/NetworkSessionCreationParameters.h:
        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (WebKit::NetworkSessionCocoa::NetworkSessionCocoa):
        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        (WebKit::WebProcessPool::platformInitializeNetworkProcess):
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::didLogUserInteraction):
        * UIProcess/Network/NetworkProcessProxy.h:
        * UIProcess/Network/NetworkProcessProxy.messages.in:
        * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:
        (WebsiteDataStore::parameters):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::decidePolicyForNavigationAction):
        (WebKit::WebPageProxy::logFrameNavigation):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::ensureNetworkProcess):
        (WebKit::WebProcessPool::initializeNewWebProcess):

2019-01-09  Alex Christensen  <achristensen@webkit.org>

        Replace SessionTracker with HashMap member of NetworkProcess
        https://bugs.webkit.org/show_bug.cgi?id=193266

        Reviewed by Joseph Pecoraro.

        * NetworkProcess/Downloads/DownloadManager.cpp:
        (WebKit::DownloadManager::startDownload):
        * NetworkProcess/Downloads/DownloadManager.h:
        * NetworkProcess/Downloads/cocoa/DownloadCocoa.mm:
        (WebKit::Download::resume):
        * NetworkProcess/NetworkCORSPreflightChecker.cpp:
        (WebKit::NetworkCORSPreflightChecker::startPreflight):
        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::preconnectTo):
        (WebKit::NetworkConnectionToWebProcess::cookiesForDOM):
        (WebKit::NetworkConnectionToWebProcess::setCookiesFromDOM):
        (WebKit::NetworkConnectionToWebProcess::destroyLegacyPrivateBrowsingSession):
        * NetworkProcess/NetworkConnectionToWebProcess.h:
        * NetworkProcess/NetworkConnectionToWebProcess.messages.in:
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::initializeNetworkProcess):
        (WebKit::NetworkProcess::clearCachedCredentials):
        (WebKit::NetworkProcess::networkSession):
        (WebKit::NetworkProcess::setSession):
        (WebKit::NetworkProcess::destroySession):
        (WebKit::NetworkProcess::preconnectTo):
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::startNetworkLoad):
        (WebKit::NetworkResourceLoader::didFinishLoading):
        (WebKit::NetworkResourceLoader::sendResultForCacheEntry):
        (WebKit::NetworkResourceLoader::shouldLogCookieInformation):
        (WebKit::NetworkResourceLoader::logCookieInformation const):
        (WebKit::logBlockedCookieInformation):
        (WebKit::logCookieInformationInternal):
        (WebKit::NetworkResourceLoader::logCookieInformation):
        * NetworkProcess/NetworkResourceLoader.h:
        * NetworkProcess/PingLoad.cpp:
        (WebKit::PingLoad::loadRequest):
        * NetworkProcess/PingLoad.h:
        * NetworkProcess/PreconnectTask.cpp:
        (WebKit::PreconnectTask::PreconnectTask):
        * NetworkProcess/PreconnectTask.h:
        * NetworkProcess/RemoteNetworkingContext.h:
        * NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp:
        (WebKit::NetworkCache::SpeculativeLoad::SpeculativeLoad):
        * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
        * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        * NetworkProcess/mac/RemoteNetworkingContext.mm:
        (WebKit::RemoteNetworkingContext::ensureWebsiteDataStoreSession):
        * Shared/SessionTracker.cpp: Removed.
        * Shared/SessionTracker.h: Removed.
        * Sources.txt:
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/InjectedBundle/InjectedBundle.cpp:
        (WebKit::InjectedBundle::setPrivateBrowsingEnabled):
        * WebProcess/Network/WebLoaderStrategy.cpp:
        * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
        * WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.h:
        * WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.mm:
        * WebProcess/WebPage/WebPage.cpp:
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::destroyLegacyPrivateBrowsingSessionInNetworkProcess):
        * WebProcess/WebProcess.h:
        * WebProcess/cocoa/WebProcessCocoa.mm:

2019-01-09  Alex Christensen  <achristensen@webkit.org>

        Expand use of sourceApplicationAuditData
        https://bugs.webkit.org/show_bug.cgi?id=192995
        <rdar://problem/46627875>

        Reviewed by Brady Eidson.

        sourceApplicationAuditData has been used for a long time on iOS, but it's needed on more platforms.
        I also made it return an Optional instead of a bool and returning by reference. Ahhh. So much nicer.
        The NetworkProcess needed an additional entitlement on Mac to continue to load anything, which is desirable.

        * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
        (WebKit::NetworkProcess::sourceApplicationAuditData const):
        * Platform/IPC/Connection.h:
        * Platform/IPC/mac/ConnectionMac.mm:
        (IPC::Connection::getAuditToken):
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::initializeWebProcess):
        * WebProcess/cocoa/WebProcessCocoa.mm:
        (WebKit::WebProcess::sourceApplicationAuditData const):

2019-01-09  Brent Fulgham  <bfulgham@apple.com>

        [iOS] Update sandbox profile to use iconservices instead of lsdiconservice
        https://bugs.webkit.org/show_bug.cgi?id=193115
        <rdar://problem/44867379>

        Reviewed by Eric Carlson.

        Add access to the 'com.apple.iconservices' endpoint. We will remove access to
        the older name ('com.apple.lsdiconservices') once existing clients have completed
        the switch.

        * Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:

2019-01-09  Antti Koivisto  <antti@apple.com>

        [PSON] Flash of blank content while transitioning from page A to page B.
        https://bugs.webkit.org/show_bug.cgi?id=193283

        Reviewed by Chris Dumez.

        Layer tree is not frozen during WebPage construction. If the flush timer (started for the initial
        empty document) manages to run before the actual page load starts, we'll get a flash.

        * Shared/WebPageCreationParameters.cpp:
        (WebKit::WebPageCreationParameters::encode const):
        (WebKit::WebPageCreationParameters::decode):
        * Shared/WebPageCreationParameters.h:

        Rename shouldDelayAttachingDrawingArea bit to isSwapFromSuspended and make it available on all platforms.

        * UIProcess/RemoteLayerTree/mac/ScrollerMac.h: Removed.
        * UIProcess/RemoteLayerTree/mac/ScrollerMac.mm: Removed.
        * UIProcess/RemoteLayerTree/mac/ScrollerPairMac.h: Removed.
        * UIProcess/RemoteLayerTree/mac/ScrollerPairMac.mm: Removed.
        * UIProcess/RemoteLayerTree/mac/ScrollingTreeFrameScrollingNodeRemoteMac.cpp: Removed.
        * UIProcess/RemoteLayerTree/mac/ScrollingTreeFrameScrollingNodeRemoteMac.h: Removed.
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::swapToWebProcess):
        (WebKit::WebPageProxy::finishAttachingToWebProcess):
        (WebKit::WebPageProxy::initializeWebPage):
        (WebKit::WebPageProxy::continueNavigationInNewProcess):
        * UIProcess/WebPageProxy.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::m_shouldAttachDrawingAreaOnPageTransition):

        Freeze the layer tree in WebPage constructor if this is a swap from a suspended process.

        (WebKit::WebPage::reinitializeWebPage):
        (WebKit::WebPage::didCompletePageTransition):

        Unfreeze on first non-initial empty document page transition.

        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
        (WebKit::TiledCoreAnimationDrawingArea::TiledCoreAnimationDrawingArea):

2019-01-09  Chris Dumez  <cdumez@apple.com>

        WebKit Networking process crashes if the HTTPSUpgradeList is not found in the bundle
        https://bugs.webkit.org/show_bug.cgi?id=193285
        <rdar://problem/47147610>

        Reviewed by Geoffrey Garen.

        * NetworkProcess/NetworkHTTPSUpgradeChecker.cpp:
        (WebKit::networkHTTPSUpgradeCheckerDatabasePath):
        (WebKit::NetworkHTTPSUpgradeChecker::NetworkHTTPSUpgradeChecker):

2019-01-09  Michael Catanzaro  <mcatanzaro@igalia.com>

        [GTK] Add missing autocleanups
        https://bugs.webkit.org/show_bug.cgi?id=193068

        Reviewed by Carlos Garcia Campos.

        * UIProcess/API/gtk/WebKitAutocleanups.h:

2019-01-08  Alex Christensen  <achristensen@webkit.org>

        Fix CompletionHandler assertions introduced today.
        https://bugs.webkit.org/show_bug.cgi?id=193237

        This reverts part of r239710 and all of r239725, r239738, and r239748 which unsuccessfully tried to fix all the assertions.
        This code is a mess that will have to be cleaned up later.

        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::tryStoreAsCacheEntry):
        * NetworkProcess/cache/CacheStorageEngine.cpp:
        (WebKit::CacheStorage::Engine::from):
        * NetworkProcess/cache/CacheStorageEngine.h:
        * NetworkProcess/cache/NetworkCache.cpp:
        (WebKit::NetworkCache::Cache::store):
        (WebKit::NetworkCache::Cache::remove):
        (WebKit::NetworkCache::Cache::traverse):
        (WebKit::NetworkCache::Cache::clear):
        (WebKit::NetworkCache::Cache::retrieveData):
        * NetworkProcess/cache/NetworkCache.h:
        * NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp:
        (WebKit::NetworkCache::SpeculativeLoad::didFinishLoading):
        * NetworkProcess/cache/NetworkCacheStorage.cpp:
        (WebKit::NetworkCache::Storage::store):
        (WebKit::NetworkCache::Storage::WriteOperation::~WriteOperation): Deleted.
        * NetworkProcess/cache/NetworkCacheStorage.h:
        (WebKit::NetworkCache::Storage::store):

2019-01-08  Jiewen Tan  <jiewen_tan@apple.com>

        [Mac] Layout Test http/wpt/webauthn/public-key-credential-create-success-hid.https.html and http/wpt/webauthn/public-key-credential-get-success-hid.https.html are flaky
        https://bugs.webkit.org/show_bug.cgi?id=192061

        Reviewed by Dewei Zhu.

        Part 6.

        Add some additional temporary logging info to determine if data is actually sent.
        Once the bug is determined and fixed, we should remove all logging added in this patch.

        * UIProcess/WebAuthentication/Mock/MockHidConnection.cpp:
        (WebKit::MockHidConnection::send):

2019-01-08  Jiewen Tan  <jiewen_tan@apple.com>

        [WebAuthN] Support U2F HID Authenticators on macOS
        https://bugs.webkit.org/show_bug.cgi?id=191535
        <rdar://problem/47102027>

        Reviewed by Brent Fulgham.

        This patch implements the support for U2F authenticators, and enables it for hid devices.
        It follows the CTAP spec to map WebAuthN requests to U2F commands and return the responses:
        https://fidoalliance.org/specs/fido-v2.0-id-20180227/fido-client-to-authenticator-protocol-v2.0-id-20180227.html#u2f-interoperability
        Most of the parts are done before this patch, this patch focues on: 7.2.2 and 7.3.2.

        Besides implementing the U2fHidAuthenticator, this patch also adds support in the mocking
        environment for U2F authenticators. It is done by extending the stages in MockHidConnection
        from 4 to indefinite as multi-round communications are expected to map WebAuthN requests
        to U2F requests.

        * Sources.txt:
        * UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
        (WKWebsiteDataStoreSetWebAuthenticationMockConfiguration):
        * UIProcess/WebAuthentication/Cocoa/HidService.mm:
        (WebKit::HidService::continueAddDeviceAfterGetInfo):
        * UIProcess/WebAuthentication/fido/CtapHidDriver.cpp:
        (WebKit::CtapHidDriver::continueAfterChannelAllocated):
        * UIProcess/WebAuthentication/fido/CtapHidDriver.h:
        (WebKit::CtapHidDriver::setProtocol):
        * UIProcess/WebAuthentication/fido/U2fHidAuthenticator.cpp: Added.
        (WebKit::U2fHidAuthenticator::U2fHidAuthenticator):
        (WebKit::U2fHidAuthenticator::makeCredential):
        (WebKit::U2fHidAuthenticator::checkExcludeList):
        (WebKit::U2fHidAuthenticator::issueRegisterCommand):
        (WebKit::U2fHidAuthenticator::getAssertion):
        (WebKit::U2fHidAuthenticator::issueSignCommand):
        (WebKit::U2fHidAuthenticator::issueNewCommand):
        (WebKit::U2fHidAuthenticator::issueCommand):
        (WebKit::U2fHidAuthenticator::responseReceived):
        (WebKit::U2fHidAuthenticator::continueRegisterCommandAfterResponseReceived):
        (WebKit::U2fHidAuthenticator::continueCheckOnlyCommandAfterResponseReceived):
        (WebKit::U2fHidAuthenticator::continueBogusCommandAfterResponseReceived):
        (WebKit::U2fHidAuthenticator::continueSignCommandAfterResponseReceived):
        * UIProcess/WebAuthentication/fido/U2fHidAuthenticator.h: Added.
        * UIProcess/WebAuthentication/Mock/MockHidConnection.cpp:
        (WebKit::MockHidConnection::parseRequest):
        (WebKit::MockHidConnection::feedReports):
        * UIProcess/WebAuthentication/Mock/MockHidConnection.h:
        * UIProcess/WebAuthentication/Mock/MockWebAuthenticationConfiguration.h:
        * WebKit.xcodeproj/project.pbxproj:

2019-01-08  Youenn Fablet  <youenn@apple.com>

        service worker fetch handler results in bad referrer
        https://bugs.webkit.org/show_bug.cgi?id=188248
        <rdar://problem/47050478>

        Reviewed by Alex Christensen.

        NetworkDataTaskCocoa is sometimes updating the referrer on its own.
        Instead of updating the referrer when sending the request to WebProcess for evaluation,
        Update the referrer once the web process decides to follow the redirection.
        This ensures that any referrer that the WebProcess will set will be updated by NetworkDataTaskCocoa.

        * NetworkProcess/cocoa/NetworkDataTaskCocoa.h:
        * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
        (WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa):
        (WebKit::NetworkDataTaskCocoa::restrictRequestReferrerToOriginIfNeeded):
        (WebKit::NetworkDataTaskCocoa::willPerformHTTPRedirection):

2019-01-08  Alex Christensen  <achristensen@webkit.org>

        Fix more assertions after r239710
        https://bugs.webkit.org/show_bug.cgi?id=193237

        * NetworkProcess/cache/NetworkCacheStorage.h:
        (WebKit::NetworkCache::Storage::store):
        Make default parameter an empty lambda instead of a null CompletionHandler.
        This way it can be called once instead of thinking it has already been called.

2019-01-08  Brent Fulgham  <bfulgham@apple.com>

        Move ResourceLoadStatistics files from UIProcess to NetworkProcess
        https://bugs.webkit.org/show_bug.cgi?id=193252
        <rdar://problem/47125401>

        Reviewed by Alex Christensen.

        This patch is the first part of a refactoring to move the ResourceLoadStatistics logic from the UIProcess to the NetworkProcess.

        This patch moves code into different folders and adjusts necessary build files, but does not change where the code executes. These
        changes have no impact on behavior or test results.

        I also modified a few files to add missing include files uncovered by the unified build system.

        * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp: Renamed from Source/WebKit/UIProcess/ResourceLoadStatisticsMemoryStore.cpp.
        * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.h: Renamed from Source/WebKit/UIProcess/ResourceLoadStatisticsMemoryStore.h.
        * NetworkProcess/Classifier/ResourceLoadStatisticsPersistentStorage.cpp: Renamed from Source/WebKit/UIProcess/ResourceLoadStatisticsPersistentStorage.cpp.
        * NetworkProcess/Classifier/ResourceLoadStatisticsPersistentStorage.h: Renamed from Source/WebKit/UIProcess/ResourceLoadStatisticsPersistentStorage.h.
        * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: Renamed from Source/WebKit/UIProcess/WebResourceLoadStatisticsStore.cpp.
        * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h: Renamed from Source/WebKit/UIProcess/WebResourceLoadStatisticsStore.h.
        * NetworkProcess/Classifier/WebResourceLoadStatisticsTelemetry.cpp: Renamed from Source/WebKit/UIProcess/WebResourceLoadStatisticsTelemetry.cpp.
        * NetworkProcess/Classifier/WebResourceLoadStatisticsTelemetry.h: Renamed from Source/WebKit/UIProcess/WebResourceLoadStatisticsTelemetry.h.
        * NetworkProcess/Downloads/PendingDownload.cpp:
        * NetworkProcess/Downloads/PendingDownload.h:
        * CMakeLists.txt:
        * PlatformMac.cmake:
        * PlatformWin.cmake:
        * Shared/PersistencyUtils.cpp: Renamed from Source/WebKit/UIProcess/PersistencyUtils.cpp.
        * Shared/PersistencyUtils.h: Renamed from Source/WebKit/UIProcess/PersistencyUtils.h.
        * Sources.txt:
        * SourcesCocoa.txt:
        * SourcesGTK.txt:
        * SourcesWPE.txt:
        * UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
        (WKWebsiteDataStoreSetWebAuthenticationMockConfiguration): Add missing WebKit:: scope.
        * UIProcess/UserMediaPermissionRequestManagerProxy.cpp: Add missing include.
        * UIProcess/WebDataListSuggestionsDropdown.cpp: Ditto.
        * UIProcess/mac/DisplayLink.cpp:
        * UnifiedSources-input.xcfilelist:
        * WebKit.xcodeproj/project.pbxproj:

2019-01-08  Chris Dumez  <cdumez@apple.com>

        Mark SuspendedPageProxy as fast allocated
        https://bugs.webkit.org/show_bug.cgi?id=193248

        Reviewed by Alex Christensen.

        * UIProcess/SuspendedPageProxy.h:

2019-01-08  Chris Dumez  <cdumez@apple.com>

        Prevent cross-site top-level navigations from third-party iframes
        https://bugs.webkit.org/show_bug.cgi?id=193076
        <rdar://problem/36074736>

        Reviewed by Alex Christensen.

        Add experimental feature flag, on by default.

        * Shared/WebPreferences.yaml:

2019-01-08  Alex Christensen  <achristensen@webkit.org>

        Remove more use of NetworkProcess::singleton
        https://bugs.webkit.org/show_bug.cgi?id=193244

        Reviewed by Brent Fulgham.

        * NetworkProcess/NetworkCORSPreflightChecker.cpp:
        (WebKit::NetworkCORSPreflightChecker::NetworkCORSPreflightChecker):
        (WebKit::NetworkCORSPreflightChecker::didReceiveChallenge):
        * NetworkProcess/NetworkCORSPreflightChecker.h:
        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::loadPing):
        * NetworkProcess/NetworkContentRuleListManager.cpp:
        (WebKit::NetworkContentRuleListManager::NetworkContentRuleListManager):
        (WebKit::NetworkContentRuleListManager::contentExtensionsBackend):
        * NetworkProcess/NetworkContentRuleListManager.h:
        * NetworkProcess/NetworkLoadChecker.cpp:
        (WebKit::NetworkLoadChecker::NetworkLoadChecker):
        (WebKit::NetworkLoadChecker::applyHTTPSUpgradeIfNeeded const):
        (WebKit::NetworkLoadChecker::checkCORSRequestWithPreflight):
        (WebKit::NetworkLoadChecker::processContentExtensionRulesForLoad):
        * NetworkProcess/NetworkLoadChecker.h:
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::NetworkProcess):
        (WebKit::NetworkProcess::didReceiveMessage):
        (WebKit::NetworkProcess::createNetworkConnectionToWebProcess):
        * NetworkProcess/NetworkProcess.h:
        (WebKit::NetworkProcess::networkContentRuleListManager):
        * NetworkProcess/NetworkResourceLoader.cpp:
        * NetworkProcess/PingLoad.cpp:
        (WebKit::PingLoad::PingLoad):
        * NetworkProcess/PingLoad.h:
        * NetworkProcess/ServiceWorker/WebSWServerToContextConnection.cpp:
        (WebKit::WebSWServerToContextConnection::WebSWServerToContextConnection):
        (WebKit::WebSWServerToContextConnection::connectionMayNoLongerBeNeeded):
        * NetworkProcess/ServiceWorker/WebSWServerToContextConnection.h:

2019-01-08  Alex Christensen  <achristensen@webkit.org>

        Stop using NetworkProcess::singleton in NetworkCache code
        https://bugs.webkit.org/show_bug.cgi?id=193243

        Reviewed by Brent Fulgham.

        * NetworkProcess/cache/NetworkCache.cpp:
        (WebKit::NetworkCache::Cache::open):
        (WebKit::NetworkCache::Cache::Cache):
        * NetworkProcess/cache/NetworkCache.h:
        (WebKit::NetworkCache::Cache::networkProcess):
        * NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp:
        (WebKit::NetworkCache::logSpeculativeLoadingDiagnosticMessage):
        (WebKit::NetworkCache::SpeculativeLoadManager::canRetrieve const):
        (WebKit::NetworkCache::SpeculativeLoadManager::addPreloadedEntry):
        (WebKit::NetworkCache::SpeculativeLoadManager::revalidateSubresource):
        (WebKit::NetworkCache::SpeculativeLoadManager::preloadEntry):
        (WebKit::NetworkCache::SpeculativeLoadManager::startSpeculativeRevalidation):
        * NetworkProcess/cache/NetworkCacheStatistics.cpp:
        (WebKit::NetworkCache::Statistics::recordRetrievalRequest):
        (WebKit::NetworkCache::Statistics::recordNotUsingCacheForRequest):
        (WebKit::NetworkCache::Statistics::recordRetrievalFailure):
        (WebKit::NetworkCache::Statistics::recordRetrievedCachedEntry):
        (WebKit::NetworkCache::Statistics::recordRevalidationSuccess):
        * NetworkProcess/cache/NetworkCacheStorage.cpp:
        (WebKit::NetworkCache::retrieveFromMemory):
        * NetworkProcess/cache/NetworkCacheStorage.h:
        * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
        (WebKit::NetworkProcess::platformInitializeNetworkProcessCocoa):

2019-01-08  Alex Christensen  <achristensen@webkit.org>

        Call CompletionHandler when destroying a NetworkCache::Storage::WriteOperation
        https://bugs.webkit.org/show_bug.cgi?id=193251

        Reviewed by Chris Dumez.

        This fixes another assertion introduced in r239710.

        * NetworkProcess/cache/NetworkCacheStorage.cpp:
        (WebKit::NetworkCache::Storage::WriteOperation::~WriteOperation):

2019-01-08  Alex Christensen  <achristensen@webkit.org>

        Stop using NetworkStorageSession in WebProcess
        https://bugs.webkit.org/show_bug.cgi?id=193236

        Reviewed by Don Olmstead.

        * Shared/WebProcessCreationParameters.cpp:
        (WebKit::WebProcessCreationParameters::encode const):
        (WebKit::WebProcessCreationParameters::decode):
        * Shared/WebProcessCreationParameters.h:
        * Shared/WebsitePoliciesData.cpp:
        (WebKit::WebsitePoliciesData::applyToDocumentLoader):
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::setAnyPageGroupMightHavePrivateBrowsingEnabled):
        (WebKit::WebProcessPool::tryTakePrewarmedProcess):
        (WebKit::WebProcessPool::initializeNewWebProcess):
        (WebKit::WebProcessPool::pageBeginUsingWebsiteDataStore):
        (WebKit::WebProcessPool::pageEndUsingWebsiteDataStore):
        (WebKit::WebProcessPool::processForNavigationInternal):
        * WebProcess/InjectedBundle/InjectedBundle.cpp:
        (WebKit::InjectedBundle::setPrivateBrowsingEnabled):
        * WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.h:
        * WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.mm:
        (WebKit::WebFrameNetworkingContext::ensureWebsiteDataStoreSession): Deleted.
        (WebKit::WebFrameNetworkingContext::storageSession const): Deleted.
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::setSessionID):
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::initializeWebProcess):
        (WebKit::WebProcess::fetchWebsiteData):
        (WebKit::WebProcess::addWebsiteDataStore): Deleted.
        (WebKit::WebProcess::destroySession): Deleted.
        * WebProcess/WebProcess.h:
        * WebProcess/WebProcess.messages.in:

2019-01-08  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed, silence -Wformat warnings

        * NetworkProcess/NetworkHTTPSUpgradeChecker.cpp:
        (WebKit::NetworkHTTPSUpgradeChecker::NetworkHTTPSUpgradeChecker):
        (WebKit::NetworkHTTPSUpgradeChecker::query):

2019-01-08  Alex Christensen  <achristensen@webkit.org>

        Unreviewed, rolling out r239727.

        Broke API tests

        Reverted changeset:

        "Stop using NetworkStorageSession in WebProcess"
        https://bugs.webkit.org/show_bug.cgi?id=193236
        https://trac.webkit.org/changeset/239727

2019-01-08  Brian Burg  <bburg@apple.com>

        Remove WKPageRef-based SPI in _WKAutomationSessionDelegate
        https://bugs.webkit.org/show_bug.cgi?id=193202
        <rdar://problem/37408718>

        Reviewed by Alex Christensen.

        This code is no longer used, it should be deleted.

        * UIProcess/API/Cocoa/_WKAutomationSessionDelegate.h:
        * UIProcess/Cocoa/AutomationSessionClient.h:
        * UIProcess/Cocoa/AutomationSessionClient.mm:
        (WebKit::AutomationSessionClient::AutomationSessionClient):
        (WebKit::AutomationSessionClient::requestNewPageWithOptions):
        (WebKit::AutomationSessionClient::requestSwitchToPage):
        (WebKit::AutomationSessionClient::requestHideWindowOfPage):
        (WebKit::AutomationSessionClient::requestRestoreWindowOfPage):
        (WebKit::AutomationSessionClient::requestMaximizeWindowOfPage):
        (WebKit::AutomationSessionClient::isShowingJavaScriptDialogOnPage):
        (WebKit::AutomationSessionClient::dismissCurrentJavaScriptDialogOnPage):
        (WebKit::AutomationSessionClient::acceptCurrentJavaScriptDialogOnPage):
        (WebKit::AutomationSessionClient::messageOfCurrentJavaScriptDialogOnPage):
        (WebKit::AutomationSessionClient::setUserInputForCurrentJavaScriptPromptOnPage):
        (WebKit::AutomationSessionClient::typeOfCurrentJavaScriptDialogOnPage):
        Clean up the delegate bridging methods now that only one delegate implementation is possible.

2019-01-08  Patrick Griffis  <pgriffis@igalia.com>

        [GTK][WPE] Remove DConf permissions from sandbox
        https://bugs.webkit.org/show_bug.cgi?id=193021

        Reviewed by Michael Catanzaro.

        The latest development releases of xdg-desktop-portal and gtk3 use a
        new portal for settings on Wayland org.freedesktop.portal.Settings.

        * UIProcess/Launcher/glib/BubblewrapLauncher.cpp:
        (WebKit::bubblewrapSpawn):

2019-01-08  Alex Christensen  <achristensen@webkit.org>

        Stop using NetworkStorageSession in WebProcess
        https://bugs.webkit.org/show_bug.cgi?id=193236

        Reviewed by Don Olmstead.

        * Shared/WebProcessCreationParameters.cpp:
        (WebKit::WebProcessCreationParameters::encode const):
        (WebKit::WebProcessCreationParameters::decode):
        * Shared/WebProcessCreationParameters.h:
        * Shared/WebsitePoliciesData.cpp:
        (WebKit::WebsitePoliciesData::applyToDocumentLoader):
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::setAnyPageGroupMightHavePrivateBrowsingEnabled):
        (WebKit::WebProcessPool::tryTakePrewarmedProcess):
        (WebKit::WebProcessPool::initializeNewWebProcess):
        (WebKit::WebProcessPool::pageBeginUsingWebsiteDataStore):
        (WebKit::WebProcessPool::pageEndUsingWebsiteDataStore):
        (WebKit::WebProcessPool::processForNavigationInternal):
        * WebProcess/InjectedBundle/InjectedBundle.cpp:
        (WebKit::InjectedBundle::setPrivateBrowsingEnabled):
        * WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.h:
        * WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.mm:
        (WebKit::WebFrameNetworkingContext::ensureWebsiteDataStoreSession): Deleted.
        (WebKit::WebFrameNetworkingContext::storageSession const): Deleted.
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::setSessionID):
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::initializeWebProcess):
        (WebKit::WebProcess::fetchWebsiteData):
        (WebKit::WebProcess::addWebsiteDataStore): Deleted.
        (WebKit::WebProcess::destroySession): Deleted.
        * WebProcess/WebProcess.h:
        * WebProcess/WebProcess.messages.in:

2019-01-08  Alex Christensen  <achristensen@webkit.org>

        Always call CompletionHandler in Cache::store
        https://bugs.webkit.org/show_bug.cgi?id=193237

        Reviewed by Chris Dumez.

        No change in behavior. This just fixes an assertion introduced in r239710 when the speculative loader finishes.

        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::tryStoreAsCacheEntry):
        * NetworkProcess/cache/NetworkCache.cpp:
        (WebKit::NetworkCache::Cache::store):
        * NetworkProcess/cache/NetworkCache.h:
        * NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp:
        (WebKit::NetworkCache::SpeculativeLoad::didFinishLoading):

2019-01-08  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Update OptionsGTK.cmake and NEWS for 2.23.2 release

        * gtk/NEWS: Add release notes for 2.23.2.

2019-01-07  Chris Dumez  <cdumez@apple.com>

        Cannot scoll for 5 seconds after swiping back on quoteunquoteapps.com
        https://bugs.webkit.org/show_bug.cgi?id=193215
        <rdar://problem/45108222>

        Reviewed by Tim Horton.

        When doing the history navigation, if the source and destination history
        items are clones then we will not trigger a main frame load. We may
        however trigger loads in subframes if needed. This was an issue for the
        ViewGestureController because it was expecting a main frame load after
        calling WebPageProxy::goToBackForwardItem() in order to determine when
        taking down the view snapshot is appropriate.

        To address the problem, the ViewGestureController now takes the snapshot
        down as soon as the swipe gesture ends when the source and destination
        items are clones.

        * Shared/WebBackForwardListItem.cpp:
        (WebKit::childItemWithTarget):
        (WebKit::WebBackForwardListItem::itemIsInSameDocument const):
        (WebKit::hasSameFrames):
        (WebKit::WebBackForwardListItem::itemIsClone):
        * Shared/WebBackForwardListItem.h:
        * UIProcess/ios/ViewGestureControllerIOS.mm:
        (WebKit::ViewGestureController::endSwipeGesture):
        * UIProcess/mac/ViewGestureControllerMac.mm:
        (WebKit::ViewGestureController::endSwipeGesture):

2019-01-07  David Kilzer  <ddkilzer@apple.com>

        Leak of ScrollCompletionCallbackData (16 bytes) in com.apple.WebKit.WebContent running WebKit layout tests
        <https://webkit.org/b/193222>
        <rdar://problem/46862309>

        Reviewed by Joseph Pecoraro.

        * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
        (WKBundlePageRegisterScrollOperationCompletionCallback): Change
        to return true if callback will be called, else false.
        * WebProcess/InjectedBundle/API/c/WKBundlePage.h:
        (WKBundlePageRegisterScrollOperationCompletionCallback): Change
        to return `bool` value to denote whether callback will be called
        (true) or not called (false).

2019-01-07  Alex Christensen  <achristensen@webkit.org>

        Remove use of NetworkProcess::singleton from CacheStorage::Engine::from
        https://bugs.webkit.org/show_bug.cgi?id=193220

        Reviewed by Andy Estes.

        This required passing the NetworkProcess& in from all its callers.
        While I was at it, I made them use CompletionHandlers where appropriate.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::destroySession):
        (WebKit::NetworkProcess::fetchWebsiteData):
        (WebKit::NetworkProcess::deleteWebsiteData):
        (WebKit::NetworkProcess::deleteWebsiteDataForOrigins):
        (WebKit::NetworkProcess::findCacheEngine):
        (WebKit::NetworkProcess::ensureCacheEngine):
        (WebKit::NetworkProcess::removeCacheEngine):
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/cache/CacheStorageEngine.cpp:
        (WebKit::CacheStorage::Engine::from):
        (WebKit::CacheStorage::Engine::destroyEngine):
        (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::globalEngineMap): Deleted.
        * NetworkProcess/cache/CacheStorageEngine.h:
        * 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/NetworkCache.cpp:
        (WebKit::NetworkCache::Cache::store):
        (WebKit::NetworkCache::Cache::remove):
        (WebKit::NetworkCache::Cache::traverse):
        (WebKit::NetworkCache::Cache::clear):
        (WebKit::NetworkCache::Cache::retrieveData):
        * NetworkProcess/cache/NetworkCache.h:

2019-01-07  David Kilzer  <ddkilzer@apple.com>

        Prefer RetainPtr<NSObject> to RetainPtr<NSObject *>
        <https://webkit.org/b/193056>

        Reviewed by Alex Christensen.

        * Shared/EntryPointUtilities/mac/XPCService/XPCServiceMain.mm:
        (WebKit::XPCServiceMain):
        * UIProcess/API/Cocoa/_WKThumbnailView.mm:
        * UIProcess/ApplePay/WebPaymentCoordinatorProxy.h:
        * UIProcess/Cocoa/VideoFullscreenManagerProxy.h:
        * UIProcess/Plugins/PluginProcessProxy.h:
        * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeHostIOS.mm:
        (WebKit::RemoteLayerTreeHost::createEmbeddedView):
        * WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemoteCustom.mm:
        (WebKit::PlatformCALayerRemoteCustom::clone const):
        - Remove '*' from RetainPtr<> type.

2019-01-07  Dean Jackson  <dino@apple.com>

        Turn on Pointer Events by default for iOS
        https://bugs.webkit.org/show_bug.cgi?id=193214
        <rdar://problem/46974878>

        Reviewed by Wenson Hsieh.

        Turn on Pointer Events.

        * Shared/WebPreferences.yaml:
        * Shared/WebPreferencesDefaultValues.h: Make a new #define for iOS.

2019-01-07  Alex Christensen  <achristensen@webkit.org>

        Remove use of NetworkProcess::singleton in ServiceWorker code
        https://bugs.webkit.org/show_bug.cgi?id=193209

        Reviewed by Megan Gardner.

        Use a member Ref<NetworkProcess> instead to avoid global singleton use.

        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::establishSWServerConnection):
        * NetworkProcess/ServiceWorker/WebSWServerConnection.cpp:
        (WebKit::WebSWServerConnection::WebSWServerConnection):
        (WebKit::WebSWServerConnection::~WebSWServerConnection):
        (WebKit::WebSWServerConnection::startFetch):
        (WebKit::WebSWServerConnection::postMessageToServiceWorker):
        (WebKit::WebSWServerConnection::scheduleJobInServer):
        * NetworkProcess/ServiceWorker/WebSWServerConnection.h:

2019-01-07  Alex Christensen  <achristensen@webkit.org>

        Remove use of NetworkProcess::singleton in NetworkLoad/NetworkDataTask code
        https://bugs.webkit.org/show_bug.cgi?id=193212

        Reviewed by Andy Estes.

        * NetworkProcess/NetworkDataTaskBlob.cpp:
        (WebKit::NetworkDataTaskBlob::NetworkDataTaskBlob):
        (WebKit::NetworkDataTaskBlob::download):
        (WebKit::NetworkDataTaskBlob::writeDownload):
        (WebKit::NetworkDataTaskBlob::didFailDownload):
        (WebKit::NetworkDataTaskBlob::didFinishDownload):
        * NetworkProcess/NetworkDataTaskBlob.h:
        * NetworkProcess/NetworkLoad.cpp:
        (WebKit::NetworkLoad::NetworkLoad):
        (WebKit::NetworkLoad::convertTaskToDownload):
        (WebKit::NetworkLoad::didReceiveChallenge):
        (WebKit::NetworkLoad::didReceiveResponse):
        * NetworkProcess/NetworkLoad.h:

2019-01-07  Alex Christensen  <achristensen@webkit.org>

        Remove use of NetworkProcess::singleton for downloads
        https://bugs.webkit.org/show_bug.cgi?id=193207

        Reviewed by Brady Eidson.

        No change in behavior.  The DownloadManager is now a member of the NetworkProcess instead of a static singleton.

        * NetworkProcess/Downloads/Download.cpp:
        (WebKit::Download::Download):
        (WebKit::Download::didReceiveChallenge):
        * NetworkProcess/Downloads/Download.h:
        * NetworkProcess/Downloads/DownloadManager.cpp:
        (WebKit::DownloadManager::startDownload):
        (WebKit::DownloadManager::convertNetworkLoadToDownload):
        * NetworkProcess/Downloads/DownloadManager.h:
        (WebKit::DownloadManager::client):
        * NetworkProcess/Downloads/PendingDownload.cpp:
        (WebKit::PendingDownload::PendingDownload):
        (WebKit::PendingDownload::messageSenderConnection):
        * NetworkProcess/Downloads/PendingDownload.h:
        * NetworkProcess/NetworkLoadChecker.cpp:
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::NetworkProcess):
        (WebKit::NetworkProcess::downloadManager):
        * NetworkProcess/NetworkProcess.h:

2019-01-07  Devin Rousso  <drousso@apple.com>

        Web Inspector: Network: show secure connection details per-request
        https://bugs.webkit.org/show_bug.cgi?id=191539
        <rdar://problem/45979891>

        Reviewed by Joseph Pecoraro.

        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (stringForSSLProtocol): Added.
        (stringForSSLCipher): Added.
        (-[WKNetworkSessionDelegate URLSession:task:didFinishCollectingMetrics:]):

2019-01-07  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Remote inspector can crash if attempting to navigate inspector page
        https://bugs.webkit.org/show_bug.cgi?id=193204
        <rdar://problem/45550428>

        Reviewed by Devin Rousso.

        * UIProcess/mac/RemoteWebInspectorProxyMac.mm:
        (WebKit::RemoteWebInspectorProxy::platformCreateFrontendPageAndWindow):
        * UIProcess/mac/WKInspectorViewController.mm:
        (-[WKInspectorViewController webView:decidePolicyForNavigationAction:decisionHandler:]):

2019-01-07  Eric Carlson  <eric.carlson@apple.com>

        Deactivate audio session whenever possible
        https://bugs.webkit.org/show_bug.cgi?id=193188
        <rdar://problem/42678977>

        Reviewed by Jer Noble.

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::WebPage):

2019-01-07  Joseph Pecoraro  <pecoraro@apple.com>

        [Cocoa] Add SPI to check if a WKWebView has an inspector frontend
        https://bugs.webkit.org/show_bug.cgi?id=193162
        <rdar://problem/24267143>

        Reviewed by Alex Christensen.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _hasInspectorFrontend]):
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::hasInspectorFrontend const):

2019-01-07  Antti Koivisto  <antti@apple.com>

        UI process side scrollbars for UI side compositing on Mac
        https://bugs.webkit.org/show_bug.cgi?id=193106

        Reviewed by Tim Horton.

        This patch implements Mac scrollbars on UI process side using the low level NSScrollerImp/NSScrollerPairImp
        SPIs. With this patch scrollbars mostly work for the main frame and also render (but can't be interacted with)
        for the subframes.

        This is based on the similar code for web process side scrollbars in ScrollAnimatorMac. There is quite a bit of
        copy code as there is no way to share nicely. One of these will eventually go away anyway.

        * Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp:
        (ArgumentCoder<ScrollingStateFrameScrollingNode>::encode):
        (ArgumentCoder<ScrollingStateFrameScrollingNode>::decode):
        * Shared/WebCoreArgumentCoders.cpp:
        (IPC::ArgumentCoder<ScrollableAreaParameters>::encode):
        (IPC::ArgumentCoder<ScrollableAreaParameters>::decode):
        * UIProcess/RemoteLayerTree/RemoteLayerTreeNode.h:
        * UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.cpp:
        (WebKit::RemoteScrollingCoordinatorProxy::connectStateNodeLayers):
        (WebKit::RemoteScrollingCoordinatorProxy::handleMouseEvent):
        * UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.h:
        * UIProcess/RemoteLayerTree/RemoteScrollingTree.cpp:
        (WebKit::RemoteScrollingTree::createScrollingTreeNode):
        (WebKit::RemoteScrollingTree::handleMouseEvent):
        * UIProcess/RemoteLayerTree/RemoteScrollingTree.h:
        * UIProcess/RemoteLayerTree/mac: Added.
        * UIProcess/RemoteLayerTree/mac/ScrollerMac.h: Added.

        Wraps NSScrollerImp for vertical or horizontal scrollbar.

        (WebKit::ScrollerMac::pair):
        (WebKit::ScrollerMac::orientation const):
        (WebKit::ScrollerMac::hostLayer const):
        (WebKit::ScrollerMac::scrollerImp):
        * UIProcess/RemoteLayerTree/mac/ScrollerMac.mm: Added.
        (-[WKScrollbarPartAnimation initWithScroller:featureToAnimate:animateFrom:animateTo:duration:]):
        (-[WKScrollbarPartAnimation startAnimation]):
        (-[WKScrollbarPartAnimation setStartValue:]):
        (-[WKScrollbarPartAnimation setEndValue:]):
        (-[WKScrollbarPartAnimation setCurrentProgress:]):
        (-[WKScrollbarPartAnimation invalidate]):
        (-[WKScrollerImpDelegate initWithScroller:]):
        (-[WKScrollerImpDelegate cancelAnimations]):
        (-[WKScrollerImpDelegate scrollerPair]):
        (-[WKScrollerImpDelegate convertRectToBacking:]):
        (-[WKScrollerImpDelegate convertRectFromBacking:]):
        (-[WKScrollerImpDelegate layer]):
        (-[WKScrollerImpDelegate mouseLocationInScrollerForScrollerImp:]):
        (-[WKScrollerImpDelegate convertRectToLayer:]):
        (-[WKScrollerImpDelegate shouldUseLayerPerPartForScrollerImp:]):
        (-[WKScrollerImpDelegate effectiveAppearanceForScrollerImp:]):
        (-[WKScrollerImpDelegate setUpAlphaAnimation:scrollerPainter:part:animateAlphaTo:duration:]):
        (-[WKScrollerImpDelegate scrollerImp:animateKnobAlphaTo:duration:]):
        (-[WKScrollerImpDelegate scrollerImp:animateTrackAlphaTo:duration:]):
        (-[WKScrollerImpDelegate scrollerImp:animateUIStateTransitionWithDuration:]):
        (-[WKScrollerImpDelegate scrollerImp:animateExpansionTransitionWithDuration:]):
        (-[WKScrollerImpDelegate scrollerImp:overlayScrollerStateChangedTo:]):
        (-[WKScrollerImpDelegate invalidate]):
        (WebKit::ScrollerMac::ScrollerMac):
        (WebKit::ScrollerMac::~ScrollerMac):
        (WebKit::ScrollerMac::attach):
        (WebKit::ScrollerMac::setHostLayer):
        (WebKit::ScrollerMac::updatePosition):
        (WebKit::ScrollerMac::convertFromContent const):
        * UIProcess/RemoteLayerTree/mac/ScrollerPairMac.h: Added.
        (WebKit::ScrollerPairMac::verticalScroller):
        (WebKit::ScrollerPairMac::horizontalScroller):
        (WebKit::ScrollerPairMac::scrollerImpPair):
        (WebKit::ScrollerPairMac::lastKnownMousePosition const):
        * UIProcess/RemoteLayerTree/mac/ScrollerPairMac.mm: Added.

        Wraps NSScrollerPairImp and owns the vertical and horizontal scrollers.

        (-[WKScrollerImpPairDelegate initWithScrollerPair:]):
        (-[WKScrollerImpPairDelegate invalidate]):
        (-[WKScrollerImpPairDelegate contentAreaRectForScrollerImpPair:]):
        (-[WKScrollerImpPairDelegate inLiveResizeForScrollerImpPair:]):
        (-[WKScrollerImpPairDelegate mouseLocationInContentAreaForScrollerImpPair:]):
        (-[WKScrollerImpPairDelegate scrollerImpPair:convertContentPoint:toScrollerImp:]):
        (-[WKScrollerImpPairDelegate scrollerImpPair:setContentAreaNeedsDisplayInRect:]):
        (-[WKScrollerImpPairDelegate scrollerImpPair:updateScrollerStyleForNewRecommendedScrollerStyle:]):
        (WebKit::ScrollerPairMac::ScrollerPairMac):
        (WebKit::ScrollerPairMac::~ScrollerPairMac):
        (WebKit::ScrollerPairMac::handleWheelEvent):
        (WebKit::ScrollerPairMac::handleMouseEvent):
        (WebKit::ScrollerPairMac::updatePositions):
        (WebKit::ScrollerPairMac::contentsSize const):
        (WebKit::ScrollerPairMac::visibleContentsRect const):
        (WebKit::ScrollerPairMac::useDarkAppearance const):
        * UIProcess/RemoteLayerTree/mac/ScrollingTreeFrameScrollingNodeRemoteMac.cpp: Added.

        Special node for UI side Mac scrolling. Owns ScrollerPairMac instance.

        (WebKit::ScrollingTreeFrameScrollingNodeRemoteMac::ScrollingTreeFrameScrollingNodeRemoteMac):
        (WebKit::ScrollingTreeFrameScrollingNodeRemoteMac::~ScrollingTreeFrameScrollingNodeRemoteMac):
        (WebKit::ScrollingTreeFrameScrollingNodeRemoteMac::create):
        (WebKit::ScrollingTreeFrameScrollingNodeRemoteMac::commitStateBeforeChildren):
        (WebKit::ScrollingTreeFrameScrollingNodeRemoteMac::setScrollLayerPosition):
        (WebKit::ScrollingTreeFrameScrollingNodeRemoteMac::handleWheelEvent):
        (WebKit::ScrollingTreeFrameScrollingNodeRemoteMac::handleMouseEvent):
        (WebKit::ScrollingTreeFrameScrollingNodeRemoteMac::scrollingTree const):
        * UIProcess/RemoteLayerTree/mac/ScrollingTreeFrameScrollingNodeRemoteMac.h: Added.
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::handleMouseEvent):
        * WebKit.xcodeproj/project.pbxproj:

2019-01-07  Brian Burg  <bburg@apple.com>

        Unwanted page navigation after showing & dismissing contextual menu with control-click
        https://bugs.webkit.org/show_bug.cgi?id=192912
        <rdar://problem/46318508>

        Reviewed by Timothy Hatcher.

        After the conversion to use a mouse event queue, this behavior was observed rarely, especially
        when CPU is under load and lots of things are going on in the page. In other words, it's racy.

        Based on NSEvent logging, it seems that when the system is under load, we simply take too long
        to enter the nested runloop that AppKit uses to handle events when the context menu is present.
        AppKit doesn't care whether or not the MouseDown triggered a nested runloop; on my machine it delivers
        the MouseUp event about 130ms after the MouseDown event. If we haven't show the context menu in
        that time, then the MouseUp is enqueued as a normal mouse event. If the Ctrl-click is on a link,
        then the MouseUp will be interpreted by EventHandler as a click event, which in the simplest case
        will initiate a main frame navigation. When the context menu is dismissed and the nested runloop
        is torn down, the navigation IPC message is handled in UIProcess and the page navigates away.

        We can't do much to change AppKit's inherently racy behavior, but we can avoid processing
        mouse events that are delivered whilst we are processing the context menu-initiating event.
        From the WebProcess point of view, there is no race anymore because it does not receive the
        MouseUp event.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::showContextMenu):
        If new events come in, drop them on the floor. Based on testing, the nested runloop will discard
        the unpaired MouseUp event anyway, so this does not cause a change in behavior.

2019-01-07  Wenson Hsieh  <wenson_hsieh@apple.com>

        Native caret shows up alongside the page's caret when requesting desktop site on jsfiddle.net
        https://bugs.webkit.org/show_bug.cgi?id=193180
        <rdar://problem/45971041>

        Reviewed by Tim Horton.

        JSFiddle uses CodeMirror; CodeMirror's editor works by capturing keystrokes and input in a hidden textarea
        element, and then drawing its own selection caret using web content. This textarea is hidden by being placed
        underneath an empty div with `overflow: hidden;`.

        When requesting desktop site on iOS, both CodeMirror's caret and the native iOS caret are shown because iOS
        selection UI consists of native views overlaid on the page, whereas on macOS, the entire textarea (along with
        the caret) are occluded by the hidden overflow container. Additionally, various iOS behaviors related to
        selection and editing, such as zooming to reveal the focused element and showing the platform callout bar, are
        active when focusing this hidden editable area; these don't work as intended, and just interfere with the page's
        custom editing UI.

        To fix this, we augment the text interaction suppression mechanism added in r238146 to detect when the focused
        element is in an empty `overflow: hidden` container, and bail out of native text editing behaviors.

        * Shared/EditorState.cpp:
        (WebKit::EditorState::PostLayoutData::encode const):
        (WebKit::EditorState::PostLayoutData::decode):
        * Shared/EditorState.h:

        Rename elementIsTransparent to elementIsTransparentOrFullyClipped.

        * Shared/FocusedElementInformation.cpp:
        (WebKit::FocusedElementInformation::encode const):
        (WebKit::FocusedElementInformation::decode):
        * Shared/FocusedElementInformation.h:
        * UIProcess/ios/WKContentViewInteraction.h:

        Rename FocusedElementIsTransparent to FocusedElementIsTransparentOrFullyClipped.

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _zoomToRevealFocusedElement]):
        (-[WKContentView _elementDidFocus:userIsInteracting:blurPreviousNode:changingActivityState:userObject:]):
        (-[WKContentView _elementDidBlur]):

        Make an additional tweak here to only stop suppressing text interaction assistant in `-_elementDidBlur` if we're
        not also in the middle of changing the focused element. Without this, focusing a hidden editable element while
        another hidden editable element is currently focused causes us to zoom to reveal the newly focused hidden
        editable element, when we should be avoiding this behavior.

        (-[WKContentView _updateChangedSelection:]):
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::platformEditorState const):
        (WebKit::WebPage::getFocusedElementInformation):

2019-01-07  Alex Christensen  <achristensen@webkit.org>

        Move identifierBase from SessionTracker to NetworkProcess/WebProcess
        https://bugs.webkit.org/show_bug.cgi?id=193201

        Reviewed by Tim Horton.

        No change in behavior.  This just reduces process-global state.

        * NetworkProcess/NetworkProcess.h:
        (WebKit::NetworkProcess::uiProcessBundleIdentifier const):
        * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
        (WebKit::NetworkProcess::platformInitializeNetworkProcessCocoa):
        * NetworkProcess/mac/RemoteNetworkingContext.mm:
        (WebKit::RemoteNetworkingContext::ensureWebsiteDataStoreSession):
        * Shared/SessionTracker.cpp:
        (WebKit::identifierBase): Deleted.
        (WebKit::SessionTracker::getIdentifierBase): Deleted.
        (WebKit::SessionTracker::setIdentifierBase): Deleted.
        * Shared/SessionTracker.h:
        * WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.mm:
        (WebKit::WebFrameNetworkingContext::ensureWebsiteDataStoreSession):
        (WebKit::WebFrameNetworkingContext::sourceApplicationIdentifier const):
        * WebProcess/WebProcess.h:
        (WebKit::WebProcess::uiProcessBundleIdentifier const):
        * WebProcess/cocoa/WebProcessCocoa.mm:
        (WebKit::WebProcess::platformInitializeWebProcess):

2019-01-07  Alex Christensen  <achristensen@webkit.org>

        Reduce use of NetworkProcess::singleton
        https://bugs.webkit.org/show_bug.cgi?id=193197

        Reviewed by Brady Eidson.

        Pass it around as a Ref<NetworkProcess> as a step towards reducing global state.
        Soup's WebFrameNetworkingContext no longer makes a NetworkSession like all other ports
        because networking is no longer done in the WebProcess.

        * NetworkProcess/IndexedDB/WebIDBConnectionToClient.cpp:
        (WebKit::WebIDBConnectionToClient::create):
        (WebKit::WebIDBConnectionToClient::WebIDBConnectionToClient):
        (WebKit::WebIDBConnectionToClient::disconnectedFromWebProcess):
        (WebKit::WebIDBConnectionToClient::deleteDatabase):
        (WebKit::WebIDBConnectionToClient::openDatabase):
        (WebKit::WebIDBConnectionToClient::abortTransaction):
        (WebKit::WebIDBConnectionToClient::commitTransaction):
        (WebKit::WebIDBConnectionToClient::didFinishHandlingVersionChangeTransaction):
        (WebKit::WebIDBConnectionToClient::createObjectStore):
        (WebKit::WebIDBConnectionToClient::deleteObjectStore):
        (WebKit::WebIDBConnectionToClient::renameObjectStore):
        (WebKit::WebIDBConnectionToClient::clearObjectStore):
        (WebKit::WebIDBConnectionToClient::createIndex):
        (WebKit::WebIDBConnectionToClient::deleteIndex):
        (WebKit::WebIDBConnectionToClient::renameIndex):
        (WebKit::WebIDBConnectionToClient::putOrAdd):
        (WebKit::WebIDBConnectionToClient::getRecord):
        (WebKit::WebIDBConnectionToClient::getAllRecords):
        (WebKit::WebIDBConnectionToClient::getCount):
        (WebKit::WebIDBConnectionToClient::deleteRecord):
        (WebKit::WebIDBConnectionToClient::openCursor):
        (WebKit::WebIDBConnectionToClient::iterateCursor):
        (WebKit::WebIDBConnectionToClient::establishTransaction):
        (WebKit::WebIDBConnectionToClient::databaseConnectionPendingClose):
        (WebKit::WebIDBConnectionToClient::databaseConnectionClosed):
        (WebKit::WebIDBConnectionToClient::abortOpenAndUpgradeNeeded):
        (WebKit::WebIDBConnectionToClient::didFireVersionChangeEvent):
        (WebKit::WebIDBConnectionToClient::openDBRequestCancelled):
        (WebKit::WebIDBConnectionToClient::confirmDidCloseFromServer):
        (WebKit::WebIDBConnectionToClient::getAllDatabaseNames):
        * NetworkProcess/IndexedDB/WebIDBConnectionToClient.h:
        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::create):
        (WebKit::NetworkConnectionToWebProcess::NetworkConnectionToWebProcess):
        (WebKit::NetworkConnectionToWebProcess::didReceiveMessage):
        (WebKit::NetworkConnectionToWebProcess::didClose):
        (WebKit::NetworkConnectionToWebProcess::createSocketStream):
        (WebKit::NetworkConnectionToWebProcess::prefetchDNS):
        (WebKit::NetworkConnectionToWebProcess::startDownload):
        (WebKit::NetworkConnectionToWebProcess::convertMainResourceLoadToDownload):
        (WebKit::NetworkConnectionToWebProcess::ensureLegacyPrivateBrowsingSession):
        (WebKit::NetworkConnectionToWebProcess::establishIDBConnectionToServer):
        (WebKit::NetworkConnectionToWebProcess::establishSWServerConnection):
        * NetworkProcess/NetworkConnectionToWebProcess.h:
        (WebKit::NetworkConnectionToWebProcess::networkProcess):
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::singleton):
        (WebKit::NetworkProcess::initializeNetworkProcess):
        (WebKit::NetworkProcess::createNetworkConnectionToWebProcess):
        (WebKit::NetworkProcess::addWebsiteDataStore):
        (WebKit::fetchDiskCacheEntries):
        (WebKit::NetworkProcess::fetchWebsiteData):
        (WebKit::clearDiskCacheEntries):
        (WebKit::NetworkProcess::deleteWebsiteDataForOrigins):
        (WebKit::NetworkProcess::getNetworkProcessStatistics):
        (WebKit::NetworkProcess::idbServer):
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::startNetworkLoad):
        (WebKit::NetworkResourceLoader::convertToDownload):
        (WebKit::NetworkResourceLoader::isAlwaysOnLoggingAllowed const):
        * NetworkProcess/NetworkSession.cpp:
        (WebKit::NetworkSession::create):
        (WebKit::NetworkSession::NetworkSession):
        * NetworkProcess/NetworkSession.h:
        (WebKit::NetworkSession::networkProcess):
        * NetworkProcess/RemoteNetworkingContext.h:
        * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
        (WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa):
        (WebKit::NetworkDataTaskCocoa::isAlwaysOnLoggingAllowed const):
        * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
        (WebKit::NetworkProcess::clearDiskCache):
        * NetworkProcess/cocoa/NetworkSessionCocoa.h:
        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (-[WKNetworkSessionDelegate URLSession:task:didReceiveChallenge:completionHandler:]):
        (-[WKNetworkSessionDelegate URLSession:task:didCompleteWithError:]):
        (-[WKNetworkSessionDelegate URLSession:downloadTask:didFinishDownloadingToURL:]):
        (-[WKNetworkSessionDelegate URLSession:downloadTask:didWriteData:totalBytesWritten:totalBytesExpectedToWrite:]):
        (-[WKNetworkSessionDelegate URLSession:dataTask:didBecomeDownloadTask:]):
        (WebKit::NetworkSessionCocoa::create):
        (WebKit::NetworkSessionCocoa::NetworkSessionCocoa):
        * NetworkProcess/curl/NetworkSessionCurl.cpp:
        (WebKit::NetworkSessionCurl::NetworkSessionCurl):
        * NetworkProcess/curl/NetworkSessionCurl.h:
        * NetworkProcess/mac/RemoteNetworkingContext.mm:
        (WebKit::RemoteNetworkingContext::ensureWebsiteDataStoreSession):
        * NetworkProcess/soup/NetworkSessionSoup.cpp:
        (WebKit::NetworkSessionSoup::NetworkSessionSoup):
        * NetworkProcess/soup/NetworkSessionSoup.h:

2019-01-07  Alex Christensen  <achristensen@webkit.org>

        Modernize CacheModel and disk cache fetching and clearing
        https://bugs.webkit.org/show_bug.cgi?id=193164

        Reviewed by Joseph Pecoraro.

        fetchDiskCacheEntries and clearDiskCacheEntries now use an early-return model.
        CacheModel is now an enum class.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::NetworkProcess):
        (WebKit::NetworkProcess::initializeNetworkProcess):
        (WebKit::fetchDiskCacheEntries):
        (WebKit::NetworkProcess::fetchWebsiteData):
        (WebKit::clearDiskCacheEntries):
        (WebKit::NetworkProcess::setCacheModel):
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:
        * NetworkProcess/NetworkProcessCreationParameters.h:
        * NetworkProcess/cache/NetworkCacheEntry.cpp:
        (WebKit::NetworkCache::Entry::initializeShareableResourceHandleFromStorageRecord const):
        * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
        (WebKit::NetworkProcess::clearDiskCache):
        * Shared/CacheModel.cpp:
        (WebKit::calculateMemoryCacheSizes):
        (WebKit::calculateURLCacheSizes):
        * Shared/CacheModel.h:
        (): Deleted.
        * UIProcess/API/APIProcessPoolConfiguration.cpp:
        (API::ProcessPoolConfiguration::createWithLegacyOptions):
        * UIProcess/API/APIProcessPoolConfiguration.h:
        * UIProcess/API/C/WKAPICast.h:
        (WebKit::toCacheModel):
        (WebKit::toAPI):
        * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm:
        (-[_WKProcessPoolConfiguration pageCacheEnabled]):
        (-[_WKProcessPoolConfiguration setPageCacheEnabled:]):
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::initializeWebProcess):
        (WebKit::WebProcess::setCacheModel):
        (WebKit::WebProcess::clearResourceCaches):
        * WebProcess/WebProcess.h:
        * WebProcess/WebProcess.messages.in:

2019-01-06  Jiewen Tan  <jiewen_tan@apple.com>

        [WebAuthN] Import U2F command/response converters from Chromium
        https://bugs.webkit.org/show_bug.cgi?id=193150
        <rdar://problem/47054028>

        Reviewed by Brent Fulgham.

        Moves helper functions to WebAuthenticationUtils.

        * UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm:
        (WebKit::LocalAuthenticatorInternal::produceHashSet):
        (WebKit::LocalAuthenticator::continueMakeCredentialAfterAttested):
        (): Deleted.
        (WebKit::LocalAuthenticatorInternal::buildAuthData): Deleted.
        * UIProcess/WebAuthentication/Mock/MockHidConnection.cpp:
        (WebKit::MockHidConnection::feedReports):

2019-01-04  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Use save sheet instead of dialog where possible
        https://bugs.webkit.org/show_bug.cgi?id=193160
        <rdar://problem/37399759>

        Reviewed by Devin Rousso.

        * UIProcess/mac/RemoteWebInspectorProxyMac.mm:
        (WebKit::RemoteWebInspectorProxy::platformSave):
        * UIProcess/mac/WebInspectorProxyMac.mm:
        (WebKit::WebInspectorProxy::platformSave):

2019-01-04  Jer Noble  <jer.noble@apple.com>

        [WebKitLegacy] Media playback pauses on scroll
        https://bugs.webkit.org/show_bug.cgi?id=192829

        Reviewed by Eric Carlson.

        Add a new WebPage, WebPageProxy, & WKWebView SPI to stop, suspend, and resume all
        existing media playback in the page.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _stopAllMediaPlayback]):
        (-[WKWebView _suspendAllMediaPlayback]):
        (-[WKWebView _resumeAllMediaPlayback]):
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::stopAllMediaPlayback):
        (WebKit::WebPageProxy::suspendAllMediaPlayback):
        (WebKit::WebPageProxy::resumeAllMediaPlayback):
        * UIProcess/WebPageProxy.h:
        * UIProcess/ios/fullscreen/WKFullScreenViewController.mm:
        (-[WKFullScreenViewController _showPhishingAlert]):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::stopAllMediaPlayback):
        (WebKit::WebPage::suspendAllMediaPlayback):
        (WebKit::WebPage::resumeAllMediaPlayback):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:

2019-01-04  Chris Dumez  <cdumez@apple.com>

        Add support for toggling device orientation API support per site
        https://bugs.webkit.org/show_bug.cgi?id=193143
        <rdar://problem/46605724>

        Reviewed by Alex Christensen.

        Add support for toggling device orientation API support per site via _WKWebsitePolicies.

        * Shared/WebsitePoliciesData.cpp:
        (WebKit::WebsitePoliciesData::encode const):
        (WebKit::WebsitePoliciesData::decode):
        (WebKit::WebsitePoliciesData::applyToDocumentLoader):
        * Shared/WebsitePoliciesData.h:
        * UIProcess/API/APIWebsitePolicies.cpp:
        (API::WebsitePolicies::data):
        * UIProcess/API/APIWebsitePolicies.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _simulateDeviceOrientationChangeWithAlpha:beta:gamma:]):
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        * UIProcess/API/Cocoa/_WKWebsitePolicies.h:
        * UIProcess/API/Cocoa/_WKWebsitePolicies.mm:
        (-[_WKWebsitePolicies setDeviceOrientationEventEnabled:]):
        (-[_WKWebsitePolicies deviceOrientationEventEnabled]):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::simulateDeviceOrientationChange):
        * UIProcess/WebPageProxy.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::simulateDeviceOrientationChange):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:

2019-01-04  Chris Dumez  <cdumez@apple.com>

        Crash under WebPageProxy::continueNavigationInNewProcess()
        https://bugs.webkit.org/show_bug.cgi?id=193113
        <rdar://problem/46938686>

        Reviewed by Brady Eidson.

        The crash was happening in continueNavigationInNewProcess() when dereferencing
        the Optional<> value returned by API::Navigation::backForwardFrameLoadType(), after verifying
        that API::Navigation::targetItem() is not null.

        When constructing an API::Navigation object with a targetItem, you HAVE to pass
        in a backForwardFrameLoadType as well so this normally is not possible. However,
        it can happen because API::Navigation::setTargetItem() can get called later on and
        set a target item on a Navigation object which potentially does not have a
        backForwardFrameLoadType. This setter was only called in one place in
        decidePolicyForNavigationAction() to update an existing Navigation object using
        the targetItem provided by a NavigationAction. This logic was added with PSON
        support.

        Because I was unable to write a test case reproducing this and because I do not know
        how it can happen in practice that we'd have a NavigationAction with a targetItem
        even though the Navigation object itself is not for a back/forward navigation, I have
        chosen to drop the unsafe API::Navigation::setTargetItem() setter and the call site.
        When the call site was added, with ProcessSwap.NavigateToDataURLThenBack API test,
        the intention was to create a back/forward navigation object instead of a standard load
        navigation one if there is currently no existing Navigation object in the UIProcess.
        This can happen when the back/forward navigation is triggered by the WebProcess via
        JS (e.g. history.back()) and this is what the API test covers. The part of the logic
        that updates an existing Navigation object with a targetItem coming from the
        NavigationAction is untested and I have no evidence it does anything useful. However,
        we DO have evidence that it can cause crashes.

        * UIProcess/API/APINavigation.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::decidePolicyForNavigationAction):

2019-01-04  Tim Horton  <timothy_horton@apple.com>

        Remove some nonexistent files from the WebKit Xcode project

        * WebKit.xcodeproj/project.pbxproj:
        r238468 and r237205 forgot to remove some files from the project.

2019-01-04  Youenn Fablet  <youenn@apple.com>

        CSP violation reports should bypass CSP checks
        https://bugs.webkit.org/show_bug.cgi?id=192857
        <rdar://problem/46887236>

        Reviewed by Chris Dumez.

        * WebProcess/Network/WebLoaderStrategy.cpp:
        (WebKit::WebLoaderStrategy::startPingLoad):
        * WebProcess/Network/WebLoaderStrategy.h:

2019-01-04  Alex Christensen  <achristensen@webkit.org>

        Use WebsiteDataStoreParameters instead of NetworkProcessCreationParameters for IndexedDB directories
        https://bugs.webkit.org/show_bug.cgi?id=193114

        Reviewed by Brady Eidson.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::initializeNetworkProcess):
        * NetworkProcess/NetworkProcessCreationParameters.cpp:
        (WebKit::NetworkProcessCreationParameters::encode const):
        (WebKit::NetworkProcessCreationParameters::decode):
        * NetworkProcess/NetworkProcessCreationParameters.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::ensureNetworkProcess):

2019-01-04  Alex Christensen  <achristensen@webkit.org>

        Deprecate WKContextCreate
        https://bugs.webkit.org/show_bug.cgi?id=193118

        Reviewed by Brady Eidson.

        It has only one use that is being removed in rdar://problem/47030792
        This is a step towards removing ProcessPoolConfiguration::createWithLegacyOptions.
        Also make WKContextCreateWithConfiguration accept a null configuration to make it easier to use.

        * UIProcess/API/C/WKContext.cpp:
        (WKContextCreateWithConfiguration):
        * UIProcess/API/C/WKContext.h:

2019-01-04  Tim Horton  <timothy_horton@apple.com>

        Fix the build

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView cleanupInteraction]):

2019-01-04  Tim Horton  <timothy_horton@apple.com>

        Share ink choice and ruler between all editable images
        https://bugs.webkit.org/show_bug.cgi?id=193130
        <rdar://problem/46826491>

        Reviewed by Wenson Hsieh.

        * SourcesCocoa.txt:
        Add WKDrawingCoordinator, which maintains WKWebView-wide drawing state,
        and manages a single shared ink picker.

        * UIProcess/PageClient.h:
        (WebKit::PageClient::createDrawingView):
        * UIProcess/ios/EditableImageController.mm:
        (WebKit::EditableImageController::ensureEditableImage):
        * UIProcess/ios/PageClientImplIOS.h:
        * UIProcess/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::createDrawingView):
        Plumb WKDrawingView creation through PageClient, so that it can be instantiated
        with knowledge of its owning WKContentView.

        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _elementDidFocus:userIsInteracting:blurPreviousNode:changingActivityState:userObject:]):
        (-[WKContentView _elementDidBlur]):
        (-[WKContentView _drawingCoordinator]):
        (-[WKContentView _installInkPickerForDrawingViewWithID:]): Deleted.
        (-[WKContentView _uninstallInkPicker]): Deleted.
        Move ink picker management into WKDrawingCoordinator.

        * UIProcess/ios/WKDrawingView.h:
        * UIProcess/ios/WKDrawingView.mm:
        (-[WKDrawingView initWithEmbeddedViewID:contentView:]):
        (-[WKDrawingView _canvasViewWillBeginDrawing:]):
        (-[WKDrawingView invalidateAttachment]):
        (-[WKDrawingView didChangeRulerState:]):
        (-[WKDrawingView initWithEmbeddedViewID:webPageProxy:]): Deleted.
        (-[WKDrawingView canvasView]): Deleted.
        Use a shared ruler, owned by WKDrawingCoordinator.
        Update the editable image's ink when drawing begins. This way, we don't have
        to push ink changes to all drawings as they happen.

        * UIProcess/ios/WKInkPickerView.h:
        * UIProcess/ios/WKInkPickerView.mm:
        (-[WKInkPickerView initWithContentView:]):
        (-[WKInkPickerView inlineInkPickerDidToggleRuler:]):
        (-[WKInkPickerView viewControllerForPopoverPresentationFromInlineInkPicker:]):
        (-[WKInkPickerView setInk:]):
        (-[WKInkPickerView ink]):
        (-[WKInkPickerView initWithDrawingView:]): Deleted.
        (-[WKInkPickerView didPickInk]): Deleted.
        (-[WKInkPickerView inlineInkPicker:didSelectTool:]): Deleted.
        (-[WKInkPickerView inlineInkPicker:didSelectColor:]): Deleted.
        * WebKit.xcodeproj/project.pbxproj:

2019-01-04  Wenson Hsieh  <wenson_hsieh@apple.com>

        [Cocoa] Merge WebEditCommandProxy::nameForEditAction and undoNameForEditAction into a single function
        https://bugs.webkit.org/show_bug.cgi?id=193129

        Reviewed by Tim Horton.

        Remove WebEditCommandProxy::nameForEditAction and use WebCore::nameForUndoRedo instead.

        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::registerEditCommand):
        * UIProcess/WebEditCommandProxy.cpp:
        (WebKit::WebEditCommandProxy::WebEditCommandProxy):
        (WebKit::WebEditCommandProxy::~WebEditCommandProxy):
        (WebKit::WebEditCommandProxy::nameForEditAction): Deleted.
        * UIProcess/WebEditCommandProxy.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::addEditCommand):
        (WebKit::WebPageProxy::removeEditCommand):
        (WebKit::WebPageProxy::isValidEditCommand): Deleted.

        Bit of drive-by refactoring: remove an unused function, and make addEditCommand and removeEditCommand take
        references instead of pointers, since these are assumed to be nonnull.

        * UIProcess/WebPageProxy.h:
        * UIProcess/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::registerEditCommand):

2019-01-03  Matt Rajca  <mrajca@apple.com>

        Make DidPlayMediaPreventedFromPlaying autoplay event more generic.
        https://bugs.webkit.org/show_bug.cgi?id=193128
        rdar://34554231

        Reviewed by Jer Noble.

        Today, the "DidPlayMediaPreventedFromPlaying" autoplay event is only sent for
        media prevented from autoplaying. It could be generalized to a "DidPlayMediaWithUserGesture"
        event along with a flag that indicates whether or not autoplay was actually prevented.

        Tests: existing API tests were updated to reflect the new names. New API tests
        were added for the new case in which the "DidPlayMediaWithUserGesture" event is sent.

        * Shared/WebCoreArgumentCoders.h: Take into account new flags.
        * UIProcess/API/C/WKPage.cpp: Ditto.
        (WKPageSetPageUIClient):
        * UIProcess/API/C/WKPageUIClient.h: Ditto.
        * UIProcess/API/Cocoa/WKUIDelegatePrivate.h: Ditto.
        * UIProcess/Cocoa/UIDelegate.mm: Ditto.
        (WebKit::toWKAutoplayEventFlags):
        (WebKit::toWKAutoplayEvent):

2019-01-04  Fujii Hironori  <Hironori.Fujii@sony.com>

        [curl] Move cookiePersistentStorageFile from NetworkProcessCreationParameters to NetworkSessionCreationParameters
        https://bugs.webkit.org/show_bug.cgi?id=192970

        Reviewed by Alex Christensen.

        * NetworkProcess/NetworkProcessCreationParameters.cpp:
        (WebKit::NetworkProcessCreationParameters::encode const): Removed code for cookiePersistentStorageFile.
        (WebKit::NetworkProcessCreationParameters::decode): Ditto.
        * NetworkProcess/NetworkProcessCreationParameters.h: Ditto.
        * NetworkProcess/curl/NetworkProcessCurl.cpp:
        (WebKit::NetworkProcess::platformInitializeNetworkProcess): Ditto.

        * NetworkProcess/NetworkSessionCreationParameters.cpp:
        (WebKit::NetworkSessionCreationParameters::privateSessionParameters): Added code for cookiePersistentStorageFile.
        (WebKit::NetworkSessionCreationParameters::encode const): Ditto.
        (WebKit::NetworkSessionCreationParameters::decode): Ditto.
        * NetworkProcess/NetworkSessionCreationParameters.h: Ditto.
        * NetworkProcess/curl/NetworkSessionCurl.cpp:
        (WebKit::NetworkSessionCurl::NetworkSessionCurl): Ditto.

        * NetworkProcess/Cookies/WebCookieManager.h: Removed setCookiePersistentStorage method of curl port extension.
        * NetworkProcess/Cookies/curl/WebCookieManagerCurl.cpp:
        (WebKit::WebCookieManager::setCookiePersistentStorage): Deleted.

2019-01-04  Chris Dumez  <cdumez@apple.com>

        [PSON] Calling history.back() from inside the load event handler prevents process-swapping
        https://bugs.webkit.org/show_bug.cgi?id=193120

        Reviewed by Alex Christensen.

        A HistoryItem is created only *after* we've fired the load event. As a result, if you call
        history.back() in JS from inside the load event handler, the current HistoryItem and and
        the target HistoryItem will be the same. This is normally not an issue. However, there was
        logic inside of WebProcessPool::processForNavigationInternal() which would compare the
        processID of the source and destination BackForwardListItems and which would force a process
        reuse if both BackForwardListItems came from the same WebContent process. So even though
        we swapped when doing a standard load from site A to site B, we would fail to swap if site
        B called history.back() from inside its load event handler.

        To address the issue, stop relying on the source backforward item's processID. Instead, just
        use the WebContent process matching the destination backforward item's processID if it still
        exists.

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::processForNavigationInternal):

2019-01-04  Keith Rollin  <krollin@apple.com>

        Bring back parent processID for logging
        https://bugs.webkit.org/show_bug.cgi?id=193121
        <rdar://problem/47031634>

        Reviewed by Alex Christensen.

        Bug 192961 removes presentingApplicationPID from
        NetworkProcessCreationParameters because it was (a) stored in some
        global state, the use of which is being minimized, and (b) it was
        largely unused. However, it was actually still being used in some
        useful logging in order to tie together child processes with their
        parent process. Re-introduce this value in NetworkLoadParameters so
        that we can log it.

        * NetworkProcess/NetworkLoadParameters.h:
        * NetworkProcess/NetworkResourceLoadParameters.cpp:
        (WebKit::NetworkResourceLoadParameters::encode const):
        (WebKit::NetworkResourceLoadParameters::decode):
        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::start):
        * WebProcess/Network/WebLoaderStrategy.cpp:
        (WebKit::WebLoaderStrategy::scheduleLoadFromNetworkProcess):
        (WebKit::WebLoaderStrategy::loadResourceSynchronously):
        (WebKit::WebLoaderStrategy::startPingLoad):
        (WebKit::WebLoaderStrategy::preconnectTo):

2019-01-04  Youenn Fablet  <youenn@apple.com>

        Make RestrictedHTTPResponseAccess an internal flag
        https://bugs.webkit.org/show_bug.cgi?id=193145

        Reviewed by Chris Dumez.

        * Shared/WebPreferences.yaml: This will ease debugging.

2019-01-04  Per Arne Vollan  <pvollan@apple.com>

        [iOS] Enable logging for services in sandbox
        https://bugs.webkit.org/show_bug.cgi?id=192705

        Reviewed by Brent Fulgham.

        When running layout tests, we didn’t see 107 services being looked up through launchd. We should
        add logging to these services to determine which services we actually need in the sandbox.

        * Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:

2019-01-04  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r239603.
        https://bugs.webkit.org/show_bug.cgi?id=193146

        Breaks shipping tests (Requested by bfulgha__ on #webkit).

        Reverted changeset:

        "[iOS] Update sandbox profile to use iconservices instead of
        lsdiconservice"
        https://bugs.webkit.org/show_bug.cgi?id=193115
        https://trac.webkit.org/changeset/239603

2019-01-04  Chris Dumez  <cdumez@apple.com>

        Crash under WebProcessPool::addSuspendedPage()
        https://bugs.webkit.org/show_bug.cgi?id=193110

        Reviewed by Youenn Fablet.

        When PageCache is disabled, WebProcessPool::m_maxSuspendedPageCount is 0 and WebProcessPool::addSuspendedPage()
        would call m_suspendedPages.removeFirst() even though m_suspendedPages is empty, causing a crash.
        Do an early return when m_maxSuspendedPageCount is 0 since we do not want to add any suspended page in this
        case.

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::addSuspendedPage):

2019-01-03  Brent Fulgham  <bfulgham@apple.com>

        [iOS] Silently deny access to mail settings triggered by MessageUI framework
        https://bugs.webkit.org/show_bug.cgi?id=193123
        <rdar://problem/42485581>

        Reviewed by Alexey Proskuryakov.

        Remove unhelpful logging generated when we block access to non-WebKit preferences. These
        invalid checks are done by an system framework that we cannot modify.

        * Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:

2019-01-03  Brent Fulgham  <bfulgham@apple.com>

        [iOS] Update sandbox profile to use iconservices instead of lsdiconservice
        https://bugs.webkit.org/show_bug.cgi?id=193115
        <rdar://problem/44867379>

        Reviewed by Eric Carlson.

        * Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:

2019-01-03  Brent Fulgham  <bfulgham@apple.com>

        Remove logic handling DNT header during redirects
        https://bugs.webkit.org/show_bug.cgi?id=193082
        <rdar://problem/45555965>

        Reviewed by Chris Dumez.

        Test: http/wpt/fetch/dnt-header-after-redirection.html.

        Don't bother looking for (or passing along) DNT headers during redirects.

        * NetworkProcess/NetworkLoadChecker.cpp:
        (WebKit::NetworkLoadChecker::check):
        (WebKit::NetworkLoadChecker::prepareRedirectedRequest): Deleted.
        * NetworkProcess/NetworkLoadChecker.h:
        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::restartNetworkLoad):
        (WebKit::NetworkResourceLoader::continueWillSendRequest):
        * NetworkProcess/PingLoad.cpp:
        (WebKit::PingLoad::willPerformHTTPRedirection):

2019-01-03  Chris Dumez  <cdumez@apple.com>

        Add release logging to help debug HTTPS upgrade issues
        https://bugs.webkit.org/show_bug.cgi?id=193075

        Reviewed by Alex Christensen.

        Add release logging to help debug HTTPS upgrade issues like Bug 193026.

        * NetworkProcess/NetworkHTTPSUpgradeChecker.cpp:
        (WebKit::NetworkHTTPSUpgradeChecker::NetworkHTTPSUpgradeChecker):
        (WebKit::NetworkHTTPSUpgradeChecker::query):

2019-01-03  Alex Christensen  <achristensen@webkit.org>

        NetworkProcess should initialize its default NetworkSession with parameters from the UIProcess
        https://bugs.webkit.org/show_bug.cgi?id=192967

        Reviewed by Brent Fulgham.

        I moved 3 of the NetworkProcessCreationParameters to use corresponding values of a WebsiteDataStoreParameters.
        More will be moved in the near future, like indexedDatabaseDirectory.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::initializeNetworkProcess):
        * NetworkProcess/NetworkProcessCreationParameters.cpp:
        (WebKit::NetworkProcessCreationParameters::encode const):
        (WebKit::NetworkProcessCreationParameters::decode):
        * NetworkProcess/NetworkProcessCreationParameters.h:
        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        (WebKit::WebProcessPool::platformInitializeNetworkProcess):
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::ensureNetworkProcess):

2019-01-03  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] REGRESSION (r239441): Tab cycling to offscreen <select> may not scroll it into view
        https://bugs.webkit.org/show_bug.cgi?id=193084
        <rdar://problem/47006882>

        Reviewed by Simon Fraser.

        In `WKWebView.mm`, `-_zoomToFocusRect:` will ignore the given selection rect if it is of size `{ 0, 0 }` and at
        the origin. Prior to r239441, when using the tab key to move focus between non-editable form controls (or any
        other method that doesn't involve tapping on the focused select element, with the exception of the next and
        previous buttons in the input accessory view), we would compute a selection rect of `{{ 0, 0 }, { 0, 0 }}`, and
        subsequently try to scroll the focused element to the center of the visible area, without taking the selection
        rect into account.

        However, after r239441, the web process sends the element interaction location to the UI process, which then
        computes the selection rect by taking this location and adding a size of `{ 1, 1 }` (before r239441, this was
        done in `WebPage::getAssistedNodeInformation`). However, our new implementation doesn't take into account the
        case where the element interaction rect is null, which happens when the last interaction location is outside of
        the bounding rect of the element. In this case, we set the element interaction location to { 0, 0 } and end up
        computing a selection rect of `{{ 0, 0 }, { 1, 1 }}` instead of `{{ 0, 0 }, { 0, 0 }}` as we would have
        previously done. This causes us to scroll up to the origin, instead of revealing the focused element.

        To fix this, we restore the pre-r239441 behavior. See additional comments below for details.

        Test: fast/forms/ios/scroll-to-reveal-focused-select.html

        * Shared/FocusedElementInformation.cpp:
        (WebKit::FocusedElementInformation::encode const):
        (WebKit::FocusedElementInformation::decode):
        * Shared/FocusedElementInformation.h:

        Rename `elementInteractionLocation` to `lastInteractionLocation`. This was previously
        `elementInteractionLocation` due to existing logic that tries to move the interaction location into the bounding
        rect of the element in the case where visual viewports are disabled; however, since this feature has long been
        enabled by default for all modern WebKit clients (internal and external), it's simpler to just use always send
        the last interaction location over to the UI process, and have the UI process use `{{ 0, 0 }, { 0, 0 }}` if
        the interaction location is outside of the element rect.

        In the very unlikely event that any modern WebKit client disables visual viewports, this will still behave
        reasonably, since we'll just use `{{ 0, 0 }, { 0, 0 }}` as the target rect and scroll to reveal the entire
        element rather than the top left corner of the element.

        * UIProcess/ios/WKContentViewInteraction.mm:
        (rectToRevealWhenZoomingToFocusedElement):
        * WebProcess/WebPage/ios/WebPageIOS.mm:

        Move the check for whether the interaction location is inside the element's bounding rect from the web process
        to the UI process. This relocates the logic to determine whether the selection rect should be a 1 by 1 fallback
        interaction rect or the zero rect (`{{ 0, 0 }, { 0, 0 }}`) closer to the code that actually uses this rect.

        (WebKit::WebPage::getFocusedElementInformation):

2019-01-03  Wenson Hsieh  <wenson_hsieh@apple.com>

        WebUndoStep's monotonically increasing identifier should be a WebUndoStepID instead of uint64_t
        https://bugs.webkit.org/show_bug.cgi?id=193100

        Reviewed by Simon Fraser.

        Add a type alias, WebUndoStepID, to represent the monotonically increasing undo step ID for each undoable
        editing command, and use this type alias in lieu of `uint64_t`. No change in behavior.

        * UIProcess/WebEditCommandProxy.cpp:
        (WebKit::WebEditCommandProxy::WebEditCommandProxy):
        * UIProcess/WebEditCommandProxy.h:
        (WebKit::WebEditCommandProxy::create):
        (WebKit::WebEditCommandProxy::commandID const):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::registerEditCommandForUndo):
        * UIProcess/WebPageProxy.h:
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/WebCoreSupport/WebEditorClient.cpp:
        (WebKit::WebEditorClient::registerUndoStep):

        Store the step ID in a temporary variable, since `webUndoStep` is now moved when calling `addWebUndoStep`.

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::webUndoStep):
        (WebKit::WebPage::addWebUndoStep):

        Make this take a `Ref<WebUndoStep>&&` instead of a `WebUndoStep*`, and use move semantics to transfer the
        given `Ref` to the table.

        (WebKit::WebPage::removeWebEditCommand):
        (WebKit::WebPage::unapplyEditCommand):
        (WebKit::WebPage::reapplyEditCommand):

        Use `auto*` in a couple of places.

        (WebKit::WebPage::didRemoveEditCommand):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebUndoStep.cpp:
        (WebKit::generateUndoStep):
        * WebProcess/WebPage/WebUndoStep.h:
        (WebKit::WebUndoStep::stepID const):
        (WebKit::WebUndoStep::WebUndoStep):
        * WebProcess/WebPage/WebUndoStepID.h: Copied from Source/WebKit/WebProcess/WebPage/WebUndoStep.cpp.

2019-01-02  Wenson Hsieh  <wenson_hsieh@apple.com>

        Add support for using the current text selection as the find string on iOS
        https://bugs.webkit.org/show_bug.cgi?id=193034
        <rdar://problem/45138739>

        Reviewed by Tim Horton.

        * SourcesCocoa.txt:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _takeFindStringFromSelection:]):

        Provides a way to set the find string on iOS and macOS (an aside: takeFindStringFromSelection: already exists on
        macOS, but there is no equivalent protocol method on iOS, so this new SPI acts as a cross-platform way for
        WebKit clients to take the find string from the selection across all Cocoa platforms).

        (+[WKWebView _stringForFind]):
        (+[WKWebView _setStringForFind:]):

        Call into find-in-page helper functions.

        (-[WKWebView _findString:options:maxCount:]):

        On iOS, additionally update the find-in-page string when exercising the _findString:options:maxCount: SPI. This
        mirrors macOS behavior of updating the find pasteboard every time the find string changes; however, on macOS,
        this is implemented by the platform (in AppKit), whereas there's no platform find pasteboard on iOS, let alone
        logic to update it in UIKit. As such, we directly drive updates to the find string within WebKit.

        * UIProcess/API/Cocoa/WKWebViewPrivate.h:

        Add some new cross-platform find-in-page SPI. See above for more details.

        * UIProcess/Cocoa/GlobalFindInPageState.h: Added.
        * UIProcess/Cocoa/GlobalFindInPageState.mm: Added.
        (WebKit::findPasteboard):
        (WebKit::globalStringForFind):

        Fetch the string to use when finding text in the page. On macOS, this accesses the AppKit find pasteboard; on
        iOS, this instead returns the current global find string.

        (WebKit::updateStringForFind):

        Sets the global find string. Uses the find pasteboard on macOS, and sets the global find string on iOS.

        (WebKit::stringForFind):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:

        Add plumbing to allow WebEditorClient to deliver the update the global find string in the UI process.

        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::updateStringForFind):
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/WebCoreSupport/WebEditorClient.h:
        * WebProcess/WebCoreSupport/ios/WebEditorClientIOS.mm:
        (WebKit::WebEditorClient::updateStringForFind):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::updateStringForFind):

2019-01-02  Brent Fulgham  <bfulgham@apple.com>

        Allow WebContent process access to some drawing-related IOKit properties
        https://bugs.webkit.org/show_bug.cgi?id=193086
        <rdar://problem/46568088>

        Reviewed by Eric Carlson.

        Update the iOS WebContent process sandbox to allow access to some IOKit properties
        that are needed for drawing and media playback operations.

        * Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
        * WebProcess/com.apple.WebKit.WebContent.sb.in:

2019-01-02  Brent Fulgham  <bfulgham@apple.com>

        Remove unused logging service 
        https://bugs.webkit.org/show_bug.cgi?id=193081
        <rdar://problem/40414815>

        Reviewed by Alexey Proskuryakov.

        We don't use this logging service, so don't open an exception for it.

        * Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:

2019-01-02  Brent Fulgham  <bfulgham@apple.com>

        Remove temporary workaround for CVMS code signing objects
        https://bugs.webkit.org/show_bug.cgi?id=193079
        <rdar://problem/40139202>

        Reviewed by Alexey Proskuryakov.

        * WebProcess/com.apple.WebProcess.sb.in:

2019-01-02  Wenson Hsieh  <wenson_hsieh@apple.com>

        REGRESSION (r239441): [iOS] Selection UI sometimes doesn't change after tapping "select all" in the callout bar
        https://bugs.webkit.org/show_bug.cgi?id=193070
        <rdar://problem/46921508>

        Reviewed by Tim Horton.

        r239441 added logic to include an EditorState in the next layer tree commit when refocusing an element; this was
        done to ensure that after tapping an element that has already been programmatically focused, we still send up-
        to-date editor information to the UI process for the purposes of zooming to the selection rect, even if the
        selection in the DOM is unchanged, since other aspects of the editor state may have changed since the element
        was initially focused.

        We currently try to flag the next layer tree commit by setting `m_hasPendingEditorStateUpdate` to `true`.
        However, this is problematic since we aren't guaranteed in all cases that a compositing flush has been
        scheduled. In the case where it hasn't, we'll end up in a state where the editor state update flag has been set,
        yet the update will not make it over to the UI process until something happens that forces a layer tree commit
        (e.g. scrolling, pinch zooming). Worse still, if the selection is then programmatically changed from the web
        process, we will bail from sending a subsequent editor state update to the UI process because `WebPage` thinks
        that a pending editor state has already been scheduled. This manifests in selection UI not updating after
        tapping "Select All" in the callout bar, if the callout bar was brought up by tapping near the selection (since
        this refocuses the element).

        To fix this, we adjust this logic in `WebPage::elementDidRefocus` so that it sets the flag and then schedules a
        compositing flush, but only if the user is actually interacting with the focused element (i.e., if the page
        calls `focus` repeatedly, we won't continue to schedule compositing flushes).

        Test: editing/selection/ios/change-selection-after-tapping-focused-element.html

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::elementDidRefocus):
        (WebKit::WebPage::sendEditorStateUpdate):
        (WebKit::WebPage::scheduleFullEditorStateUpdate):

        Add a private helper method to schedule an editor state update by setting `m_hasPendingEditorStateUpdate` to
        `true` and then scheduling a compositing layer flush. Also, add a FIXME aluding to the fact that scheduling an
        entire compositing layer flush to send an editor state update is somewhat wasteful, and should be replaced by
        just scheduling this work to be done before the next frame (see: <rdar://problem/36523583> for more detail).

        We also use this helper method in a few places where we currently turn on the editor state flag and schedule a
        subsequent compositing flush.

        (WebKit::WebPage::sendPartialEditorStateAndSchedulePostLayoutUpdate):
        * WebProcess/WebPage/WebPage.h:

2019-01-02  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r239524.
        https://bugs.webkit.org/show_bug.cgi?id=193083

        basic browsing seems not to work (Requested by thorton on
        #webkit).

        Reverted changeset:

        "Expand use of sourceApplicationAuditData"
        https://bugs.webkit.org/show_bug.cgi?id=192995
        https://trac.webkit.org/changeset/239524

2019-01-01  Jeff Miller  <jeffm@apple.com>

        Update user-visible copyright strings to include 2019
        https://bugs.webkit.org/show_bug.cgi?id=192811

        Reviewed by Mark Lam.

        * Info.plist:
        * NetworkProcess/EntryPoint/mac/XPCService/NetworkService/Info-OSX.plist:
        * NetworkProcess/EntryPoint/mac/XPCService/NetworkService/Info-iOS.plist:
        * PluginProcess/EntryPoint/mac/XPCService/PluginService.32-64.Info.plist:
        * WebProcess/EntryPoint/mac/XPCService/WebContentService/Info-OSX.plist:
        * WebProcess/EntryPoint/mac/XPCService/WebContentService/Info-iOS.plist:

2018-12-28  Wenson Hsieh  <wenson_hsieh@apple.com>

        Move WKEditCommandObjC and WKEditorUndoTargetObjC into a separate file
        https://bugs.webkit.org/show_bug.cgi?id=193049

        Reviewed by Sam Weinig.

        Pull common code (WKEditCommandObjC and WKEditorUndoTargetObjC) on iOS and macOS out into a separate file. No
        change in behavior.

        * SourcesCocoa.txt:
        * UIProcess/Cocoa/WKEditCommand.h: Added.
        * UIProcess/Cocoa/WKEditCommand.mm: Added.

        Rename WKEditCommandObjC to WKEditCommand, and WKEditorUndoTargetObjC to WKEditorUndoTarget. The ObjC suffix in
        the name seems to diverge from the common naming scheme in other parts of WebKit, where most WK- and _WK-
        prefixed names already refer to Objective-C objects. Additionally, mark -[WKEditCommand init] as unavailable.

        (-[WKEditCommand initWithWebEditCommandProxy:]):

        Make the return type instancetype instead of id, and also make this take a Ref<WebEditCommandProxy>&& instead
        of a RefPtr.

        (-[WKEditCommand command]):

        Make this return a reference to the WebEditCommandProxy, rather than a pointer, since the WebEditCommandProxy
        should always be non-null.

        (-[WKEditorUndoTarget undoEditing:]):
        (-[WKEditorUndoTarget redoEditing:]):
        * UIProcess/Cocoa/WebViewImpl.h:
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::WebViewImpl):
        (WebKit::WebViewImpl::registerEditCommand):

        Use WTFMove instead of copying the Ref when creating a WKEditCommand.

        (-[WKEditCommandObjC initWithWebEditCommandProxy:]): Deleted.
        (-[WKEditCommandObjC command]): Deleted.
        (-[WKEditorUndoTargetObjC undoEditing:]): Deleted.
        (-[WKEditorUndoTargetObjC redoEditing:]): Deleted.
        * UIProcess/ios/PageClientImplIOS.h:
        * UIProcess/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::PageClientImpl):
        (WebKit::PageClientImpl::registerEditCommand):

        Use WTFMove instead of creating a new RefPtr when creating a WKEditCommand.

        (-[WKEditCommandObjC initWithWebEditCommandProxy:]): Deleted.
        (-[WKEditCommandObjC command]): Deleted.
        (-[WKEditorUndoTargetObjC undoEditing:]): Deleted.
        (-[WKEditorUndoTargetObjC redoEditing:]): Deleted.
        * UIProcess/mac/PageClientImplMac.h:
        * WebKit.xcodeproj/project.pbxproj:

2018-12-27  Alex Christensen  <achristensen@webkit.org>

        Resurrect Mac CMake build
        https://bugs.webkit.org/show_bug.cgi?id=192658

        Reviewed by Yusuke Suzuki.

        * PlatformMac.cmake:

2018-12-26  Fujii Hironori  <Hironori.Fujii@sony.com>

        [MSVC] error C2381: 'WebKit::NetworkHTTPSUpgradeChecker::~NetworkHTTPSUpgradeChecker': redefinition; '__declspec(noreturn)' or '[[noreturn]]' differs
        https://bugs.webkit.org/show_bug.cgi?id=193030

        Reviewed by Ross Kirsling.

        Windows Debug builds are failing to compile due to
        NO_RETURN_DUE_TO_ASSERT inconsistency of
        NetworkHTTPSUpgradeChecker destructor's definition and
        declaration.

        * NetworkProcess/NetworkHTTPSUpgradeChecker.h: Added
        NO_RETURN_DUE_TO_ASSERT to NetworkHTTPSUpgradeChecker destructor
        declaration.
        * NetworkProcess/NetworkHTTPSUpgradeChecker.cpp: Removed
        NO_RETURN_DUE_TO_ASSERT from the definition.

2018-12-24  Fujii Hironori  <Hironori.Fujii@sony.com>

        [WebKit][Win] Remove using namespace in the global scope
        https://bugs.webkit.org/show_bug.cgi?id=192968

        Reviewed by Alex Christensen.

        Moved using namespace statements in the global scope to inside
        namespaces.
        <https://webkit.org/code-style-guidelines/#using-position>

        * NetworkProcess/Cookies/curl/WebCookieManagerCurl.cpp:
        * NetworkProcess/curl/NetworkDataTaskCurl.cpp:
        * NetworkProcess/curl/NetworkProcessCurl.cpp:
        * NetworkProcess/curl/NetworkSessionCurl.cpp:
        * NetworkProcess/curl/RemoteNetworkingContextCurl.cpp:
        * Shared/Plugins/Netscape/NetscapePluginModuleNone.cpp:
        * Shared/WebWheelEvent.cpp:
        * Shared/curl/WebCoreArgumentCodersCurl.cpp:
        * Shared/win/NativeWebKeyboardEventWin.cpp:
        * Shared/win/WebEventFactory.cpp:
        * UIProcess/Automation/WebAutomationSession.cpp:

2018-12-24  Fujii Hironori  <Hironori.Fujii@sony.com>

        Remove "using namespace std;"
        https://bugs.webkit.org/show_bug.cgi?id=192973

        Reviewed by Alex Christensen.

        * Platform/IPC/win/ConnectionWin.cpp:

2018-12-24  Simon Fraser  <simon.fraser@apple.com>

        Change ScrollingNodeType to an enum class
        https://bugs.webkit.org/show_bug.cgi?id=193009

        Reviewed by Zalan Bujtas.

        Change the ScrollingNodeType enum to an enum class.
        
        No behavior change.

        * Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp:
        (WebKit::encodeNodeAndDescendants):
        (WebKit::RemoteScrollingCoordinatorTransaction::decode):
        (WebKit::dump):
        * UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.cpp:
        (WebKit::RemoteScrollingCoordinatorProxy::connectStateNodeLayers):
        * UIProcess/RemoteLayerTree/RemoteScrollingTree.cpp:
        (WebKit::RemoteScrollingTree::createScrollingTreeNode):
        * UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.mm:
        (WebKit::RemoteScrollingCoordinatorProxy::connectStateNodeLayers):
        * UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.mm:
        (WebKit::ScrollingTreeScrollingNodeDelegateIOS::updateChildNodesAfterScroll):

2018-12-23  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] Remove some unnecessary editing SPI after <rdar://problem/46047546>
        https://bugs.webkit.org/show_bug.cgi?id=193019

        Reviewed by Dan Bernstein.

        Remove these SPI method declarations, as well as method forwarding in WKContentView. Mail was the only adoptee
        of these methods; after <rdar://problem/46047546>, they have moved to the underscore-prefixed versions, so we
        we have no need for these erroneously-named SPI methods anymore. There is no change in behavior; verified this
        through existing API tests (WKWebViewEditActions), as well as building iOS Mail against WebKit with these
        changes to WKWebViewPrivate.h.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView canPerformAction:withSender:]):
        (-[WKWebView targetForAction:withSender:]):
        (-[WKWebView _setFont:sender:]):
        (-[WKWebView _setFontSize:sender:]):
        (-[WKWebView _setTextColor:sender:]):
        (-[WKWebView setFont:sender:]): Deleted.
        (-[WKWebView setTextColor:sender:]): Deleted.
        (-[WKWebView setFontSize:sender:]): Deleted.
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView canPerformActionForWebView:withSender:]):
        (-[WKContentView setFontForWebView:sender:]): Deleted.
        (-[WKContentView setFontSizeForWebView:sender:]): Deleted.
        (-[WKContentView setTextColorForWebView:sender:]): Deleted.

2018-12-23  Wenson Hsieh  <wenson_hsieh@apple.com>

        Fix fast/ruby/ruby-base-merge-block-children-crash-2.html after r239543
        https://bugs.webkit.org/show_bug.cgi?id=193015
        <rdar://problem/46583527>

        Reviewed by Tim Horton.

        Fix the crash by gracefully handling integer overflow when computing the area of a very large editable element.

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _elementDidFocus:userIsInteracting:blurPreviousNode:changingActivityState:userObject:]):
        (-[WKContentView _updateChangedSelection:]):

2018-12-22  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] Suppress native selection behaviors when focusing a very small editable element
        https://bugs.webkit.org/show_bug.cgi?id=193005
        <rdar://problem/46583527>

        Reviewed by Tim Horton.

        In r238146, I added a mechanism to detect when the selection is hidden within transparent editable elements, and
        used this to suppress native selection on iOS (such as selection handles, highlight, callout bar, etc.) to avoid
        conflicts between the page's editing UI and the platform.

        However, one additional technique observed on some websites involves hiding the selection by moving it into a
        tiny (1x1) editable element. Here, we currently still present a callout bar with editing actions, as well as
        show a selection caret or handles on iOS. To fix this, we extend the mechanism added in r238146 by also
        suppressing the selection assistant in the case where the editable element's area is beneath a tiny minimum
        threshold.

        Test: editing/selection/ios/hide-selection-in-tiny-contenteditable.html

        * Shared/EditorState.cpp:
        (WebKit::EditorState::PostLayoutData::encode const):
        (WebKit::EditorState::PostLayoutData::decode):
        (WebKit::operator<<):
        * Shared/EditorState.h:

        Rename selectionClipRect to focusedElementRect. We currently propagate the bounds of the focused element to the
        UI process through EditorState updates, but only for the purpose of returning it in the computed selection clip
        rect; instead, rename this member to something more general-purpose, so we can also use it when determining
        whether to suppress the selection assistant.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _candidateRect]):
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::handleRequestedCandidates):
        * UIProcess/ios/WKContentViewInteraction.h:

        Add a new SuppressSelectionAssistantReason that corresponds to focusing tiny editable elements.

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _zoomToRevealFocusedElement]):
        (-[WKContentView _selectionClipRect]):
        (-[WKContentView _elementDidFocus:userIsInteracting:blurPreviousNode:changingActivityState:userObject:]):
        (-[WKContentView _updateChangedSelection:]):

        Check the size of the focused element, and begin or stop suppressing the selection assistant accordingly.

        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::platformEditorState const):
        * WebProcess/WebPage/mac/WebPageMac.mm:
        (WebKit::WebPage::platformEditorState const):

2018-12-20  Yusuke Suzuki  <yusukesuzuki@slowstart.org>

        Use Ref<> as much as possible
        https://bugs.webkit.org/show_bug.cgi?id=192808

        Reviewed by Alex Christensen.

        * PluginProcess/WebProcessConnection.cpp:
        (WebKit::WebProcessConnection::create):
        * PluginProcess/WebProcessConnection.h:
        * UIProcess/API/Cocoa/WKConnection.mm:
        (-[WKConnection sendMessageWithName:body:]):
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView takeSnapshotWithConfiguration:completionHandler:]):
        (-[WKWebView _takeViewSnapshot]):
        (-[WKWebView _snapshotRect:intoImageOfWidth:completionHandler:]):
        * UIProcess/API/glib/WebKitGeolocationProvider.cpp:
        (WebKit::WebKitGeolocationProvider::notifyPositionChanged):
        * UIProcess/API/glib/WebKitWebContext.cpp:
        (webkit_web_context_allow_tls_certificate_for_host):
        * UIProcess/Automation/cairo/WebAutomationSessionCairo.cpp:
        (WebKit::WebAutomationSession::platformGetBase64EncodedPNGData):
        * UIProcess/Automation/cocoa/WebAutomationSessionCocoa.mm:
        (WebKit::WebAutomationSession::platformGetBase64EncodedPNGData):
        * UIProcess/BackingStore.cpp:
        (WebKit::BackingStore::incorporateUpdate):
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::createErrorWithRecoveryAttempter):
        * UIProcess/Cocoa/PlaybackSessionManagerProxy.h:
        * UIProcess/Cocoa/PlaybackSessionManagerProxy.mm:
        (WebKit::PlaybackSessionManagerProxy::create):
        * UIProcess/Cocoa/VideoFullscreenManagerProxy.h:
        * UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:
        (WebKit::VideoFullscreenManagerProxy::create):
        * UIProcess/Cocoa/WebPasteboardProxyCocoa.mm:
        (WebKit::WebPasteboardProxy::setPasteboardBufferForType):
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::takeViewSnapshot):
        * UIProcess/Downloads/DownloadProxyMap.cpp:
        (WebKit::DownloadProxyMap::createDownloadProxy):
        * UIProcess/Notifications/WebNotificationManagerProxy.cpp:
        (WebKit::WebNotificationManagerProxy::show):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didCreateSubframe):
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::getStatistics):
        (WebKit::WebProcessPool::requestWebContentStatistics):
        (WebKit::WebProcessPool::requestNetworkingStatistics):
        * UIProcess/WebProcessPool.h:
        * UIProcess/gstreamer/WebPageProxyGStreamer.cpp:
        (WebKit::WebPageProxy::requestInstallMissingMediaPlugins):
        * UIProcess/gtk/RemoteWebInspectorProxyGtk.cpp:
        (WebKit::RemoteWebInspectorProxy::platformCreateFrontendPageAndWindow):
        * UIProcess/gtk/WebInspectorProxyGtk.cpp:
        (WebKit::WebInspectorProxy::platformCreateFrontendPage):
        * UIProcess/ios/WKGeolocationProviderIOS.mm:
        (-[WKGeolocationProviderIOS geolocationAuthorizationGranted]):
        * UIProcess/mac/PageClientImplMac.mm:
        (WebKit::PageClientImpl::setPromisedDataForImage):
        * UIProcess/win/WebInspectorProxyWin.cpp:
        (WebKit::WebInspectorProxy::platformCreateFrontendPage):
        * WebProcess/InjectedBundle/API/mac/WKDOMRange.mm:
        (-[WKDOMRange initWithDocument:]):
        * WebProcess/InjectedBundle/DOM/InjectedBundleRangeHandle.cpp:
        (WebKit::InjectedBundleRangeHandle::renderedImage):
        * WebProcess/InjectedBundle/InjectedBundlePageEditorClient.cpp:
        (WebKit::InjectedBundlePageEditorClient::getPasteboardDataForRange):
        * WebProcess/InjectedBundle/InjectedBundlePageUIClient.cpp:
        (WebKit::InjectedBundlePageUIClient::mouseDidMoveOverElement):
        * WebProcess/Plugins/Netscape/NetscapePlugin.cpp:
        (WebKit::NetscapePlugin::snapshot):
        * WebProcess/Plugins/PDF/PDFPlugin.mm:
        (WebKit::PDFPlugin::addArchiveResource):
        (WebKit::PDFPlugin::snapshot):
        (WebKit::PDFPlugin::writeItemsToPasteboard):
        * WebProcess/Plugins/PluginProcessConnectionManager.cpp:
        (WebKit::PluginProcessConnectionManager::getPluginProcessConnection):
        * WebProcess/Plugins/PluginProxy.cpp:
        (WebKit::PluginProxy::snapshot):
        * WebProcess/Plugins/PluginView.cpp:
        (WebKit::PluginView::performURLRequest):
        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::exceededDatabaseQuota):
        (WebKit::WebChromeClient::reachedApplicationCacheOriginQuota):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNewWindowAction):
        * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
        (WebKit::WebPlatformStrategies::getPathnamesForType):
        * WebProcess/WebCoreSupport/gtk/WebDragClientGtk.cpp:
        (WebKit::convertCairoSurfaceToShareableBitmap):
        * WebProcess/WebCoreSupport/mac/WebDragClientMac.mm:
        (WebKit::WebDragClient::declareAndWriteDragImage):
        * WebProcess/WebPage/Cocoa/WebPageCocoa.mm:
        (WebKit::WebPage::dictionaryPopupInfoForRange):
        * WebProcess/WebPage/DrawingAreaImpl.cpp:
        (WebKit::DrawingAreaImpl::display):
        * WebProcess/WebPage/FindController.cpp:
        (WebKit::FindController::updateFindIndicator):
        * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm:
        (WebKit::RemoteLayerTreeDrawingArea::flushLayers):
        * WebProcess/WebPage/WebFrame.cpp:
        (WebKit::WebFrame::webArchiveData):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::navigateToPDFLinkWithSimulatedClick):
        (WebKit::WebPage::performDragControllerAction):
        * WebProcess/WebPage/ios/FindControllerIOS.mm:
        (WebKit::FindController::updateFindIndicator):
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::replaceDictatedText):
        (WebKit::WebPage::getPositionInformation):
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
        (WebKit::TiledCoreAnimationDrawingArea::commitTransientZoom):
        * WebProcess/WebStorage/StorageNamespaceImpl.cpp:
        (WebKit::StorageNamespaceImpl::createSessionStorageNamespace):
        (WebKit::StorageNamespaceImpl::createEphemeralLocalStorageNamespace):
        (WebKit::StorageNamespaceImpl::createLocalStorageNamespace):
        (WebKit::StorageNamespaceImpl::createTransientLocalStorageNamespace):
        (WebKit::StorageNamespaceImpl::storageArea):
        (WebKit::StorageNamespaceImpl::ephemeralLocalStorageArea):
        (WebKit::StorageNamespaceImpl::copy):
        * WebProcess/WebStorage/StorageNamespaceImpl.h:
        * WebProcess/WebStorage/WebStorageNamespaceProvider.cpp:
        (WebKit::WebStorageNamespaceProvider::getOrCreate):
        (WebKit::WebStorageNamespaceProvider::createSessionStorageNamespace):
        (WebKit::WebStorageNamespaceProvider::createEphemeralLocalStorageNamespace):
        (WebKit::WebStorageNamespaceProvider::createLocalStorageNamespace):
        (WebKit::WebStorageNamespaceProvider::createTransientLocalStorageNamespace):
        * WebProcess/WebStorage/WebStorageNamespaceProvider.h:
        * WebProcess/cocoa/PlaybackSessionManager.mm:
        (WebKit::PlaybackSessionManager::createModelAndInterface):
        * WebProcess/cocoa/VideoFullscreenManager.mm:
        (WebKit::VideoFullscreenManager::createModelAndInterface):

2018-12-21  Chris Dumez  <cdumez@apple.com>

        navigator.userAgent in service workers does not reflect customUserAgent set by client
        https://bugs.webkit.org/show_bug.cgi?id=192951

        Reviewed by Youenn Fablet.

        * NetworkProcess/ServiceWorker/WebSWServerConnection.cpp:
        (WebKit::WebSWServerConnection::registerServiceWorkerClient):
        * NetworkProcess/ServiceWorker/WebSWServerConnection.h:
        * NetworkProcess/ServiceWorker/WebSWServerConnection.messages.in:
        * NetworkProcess/ServiceWorker/WebSWServerToContextConnection.cpp:
        (WebKit::WebSWServerToContextConnection::installServiceWorkerContext):
        * NetworkProcess/ServiceWorker/WebSWServerToContextConnection.h:
        * WebProcess/Storage/WebSWClientConnection.cpp:
        (WebKit::WebSWClientConnection::registerServiceWorkerClient):
        * WebProcess/Storage/WebSWClientConnection.h:
        * WebProcess/Storage/WebSWContextManagerConnection.cpp:
        (WebKit::WebSWContextManagerConnection::installServiceWorker):
        * WebProcess/Storage/WebSWContextManagerConnection.h:
        * WebProcess/Storage/WebSWContextManagerConnection.messages.in:

2018-12-21  Alex Christensen  <achristensen@webkit.org>

        Expand use of sourceApplicationAuditData
        https://bugs.webkit.org/show_bug.cgi?id=192995
        <rdar://problem/46627875>

        Reviewed by Brady Eidson.

        sourceApplicationAuditData has been used for a long time on iOS, but it's needed on more platforms.
        I also made it return an Optional instead of a bool and returning by reference. Ahhh. So much nicer.

        * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
        (WebKit::NetworkProcess::sourceApplicationAuditData const):
        * Platform/IPC/Connection.h:
        * Platform/IPC/mac/ConnectionMac.mm:
        (IPC::Connection::getAuditToken):
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::initializeWebProcess):
        * WebProcess/cocoa/WebProcessCocoa.mm:
        (WebKit::WebProcess::sourceApplicationAuditData const):

2018-12-21  Jiewen Tan  <jiewen_tan@apple.com>

        [Mac] Layout Test http/wpt/webauthn/public-key-credential-create-success-hid.https.html and http/wpt/webauthn/public-key-credential-get-success-hid.https.html are flaky
        https://bugs.webkit.org/show_bug.cgi?id=192061

        Reviewed by Dewei Zhu.

        Part 5.

        Add some additional temporary logging info to determine if the time out value passed to the timer is respected.
        Once the bug is determined and fixed, we should remove all logging added in this patch.

        Reviewed by Dewei Zhu.

        * UIProcess/WebAuthentication/AuthenticatorManager.cpp:
        (WebKit::AuthenticatorManager::initTimeOutTimer):
        (WebKit::AuthenticatorManager::timeOutTimerFired):

2018-12-21  Keith Rollin  <krollin@apple.com>

        Crash in com.apple.WebKit: WebKit::WebResourceLoader::willSendRequest + 223
        https://bugs.webkit.org/show_bug.cgi?id=192989

        Reviewed by Chris Dumez.

        willSendRequest is calling maybeLoadFallbackForRedirect, which can
        delete “this”. After that, some new logging code tries to access
        “this” and causes the crash. Fix this by adjusting the scope of a
        "protectedThis".

        * WebProcess/Network/WebResourceLoader.cpp:
        (WebKit::WebResourceLoader::willSendRequest):

2018-12-21  Alejandro G. Castro  <alex@igalia.com>

        [GTK][WPE] Add DeviceIdHashSaltStorage disk persistence
        https://bugs.webkit.org/show_bug.cgi?id=190466

        Reviewed by Youenn Fablet.

        Added persistency to the DeviceIdHashSaltStorage. Implemented a
        decoder and an encoder for the HashSaltForOrigin struct to store
        it in a file, this allows us to save the lastTimeUsed, the origin
        and the hash salt. It uses a new directory where it creates a file
        per hash salt, the name of the file is the hash salt to avoid
        leaking information in the system. The last time used and the
        origin are stored inside the file, it also adds a version
        directory used to change the structure of the file in the future,
        if we need to do it. In the DeviceIdHashSaltStorage class the disk
        operations happen in a WorkQueue, but all interactions go in the
        main thread. We added code to handle the operations when the load
        still did not finish.

        * Platform/Logging.h:
        Added channel DiskPersistency..
        * Sources.txt: Added new files.
        * UIProcess/API/APIProcessPoolConfiguration.cpp: Added code to set
        the directory for the deviceIdHashSalts. That way we can use the
        configuration when creating the DeviceIdHashSaltStorage.
        (API::ProcessPoolConfiguration::createWithWebsiteDataStoreConfiguration):
        (API::ProcessPoolConfiguration::ProcessPoolConfiguration):
        (API::ProcessPoolConfiguration::copy):
        * UIProcess/API/APIProcessPoolConfiguration.h:
        * UIProcess/API/APIWebsiteDataStore.cpp:
        (API::WebsiteDataStore::legacyDefaultDataStoreConfiguration):
        Added code to set the directory in the disk used to store the
        information.
        * UIProcess/API/APIWebsiteDataStore.h: Ditto.
        * UIProcess/API/Cocoa/APIWebsiteDataStoreCocoa.mm: Added dummy
        implementation to get the directory in cocoa.
        (API::WebsiteDataStore::defaultDeviceIdHashSaltsStorageDirectory):
        (API::WebsiteDataStore::legacyDefaultDeviceIdHashSaltsStorageDirectory):
        * UIProcess/API/glib/APIWebsiteDataStoreGLib.cpp: Defined the
        default directories used to store the information in the disk.
        (API::WebsiteDataStore::defaultDeviceIdHashSaltsStorageDirectory):
        (API::WebsiteDataStore::legacyDefaultDeviceIdHashSaltsStorageDirectory):
        (API::WebsiteDataStore::defaultDataStoreConfiguration):
        * UIProcess/API/glib/WebKitWebsiteDataManager.cpp:
        (webkitWebsiteDataManagerGetDataStore): Added the directory used
        to store the information.
        (webkit_website_data_manager_remove): Modified the way we use to
        make sure when we remove the cookies we also remove the hash salts.
        * UIProcess/API/win/APIWebsiteDataStoreWin.cpp: Added dummy
        implementations to get the directory in windows platform.
        (API::WebsiteDataStore::defaultDeviceIdHashSaltsStorageDirectory):
        (API::WebsiteDataStore::legacyDefaultDeviceIdHashSaltsStorageDirectory):
        * UIProcess/API/C/WKBackForwardListItemRef.cpp: Add namespace, it
        seems some unified build compilation issue.
        * UIProcess/DeviceIdHashSaltStorage.cpp:
        (WebKit::DeviceIdHashSaltStorage::create): Added a create method
        used to pass the directory and the persistency status of the websitedatastore.
        (WebKit::DeviceIdHashSaltStorage::completeHandler): Added to share
        the code copying the origins to complete the get handler.
        (WebKit::DeviceIdHashSaltStorage::completeDeviceIdHashSaltForOriginCall):
        Added to share the code when completing the task of getting a new
        hash salt.
        (WebKit::DeviceIdHashSaltStorage::DeviceIdHashSaltStorage): Added
        a new constructor for the create method.
        (WebKit::getSecurityOriginData): Added to get the
        SecurityOriginData from a field in the decoder and do all the
        checks.
        (WebKit::DeviceIdHashSaltStorage::loadStorageFromDisk): Open the
        directory and restore all the hash salts from disk to the memory
        structure.
        (WebKit::DeviceIdHashSaltStorage::createEncoderFromData const):
        Creates the decoder to store the HashSaltForOrigin structure.
        (WebKit::DeviceIdHashSaltStorage::storeHashSaltToDisk): Write to
        disk a decoder object created from a HashSaltForOrigin
        structure. It uses the writeEncoderToDisk function.
        (WebKit::DeviceIdHashSaltStorage::deviceIdHashSaltForOrigin): Make
        sure we store in disk a new hash salt when it is generated and the
        WebsiteDataStore is persistent. Add a completionHandler to return
        the value found or generated, this way we can control if the
        HashMap is already loaded from disk.
        (WebKit::DeviceIdHashSaltStorage::getDeviceIdHashSaltOrigins):
        Make sure we run the get in a queue now that we store information
        in disk.
        (WebKit::DeviceIdHashSaltStorage::deleteHashSaltFromDiskIfNeeded):
        Added code to make sure we remove the files in disk.
        (WebKit::DeviceIdHashSaltStorage::deleteDeviceIdHashSaltForOrigins):
        Added code to use the deleteHashSaltFromDiskIfNeeded and remove the files in disk.
        (WebKit::DeviceIdHashSaltStorage::deleteDeviceIdHashSaltOriginsModifiedSince):
        Added code to use the deleteHashSaltFromDiskIfNeeded and remove the files in disk.
        * UIProcess/DeviceIdHashSaltStorage.h: Ditto.
        * UIProcess/PersistencyUtils.cpp: Added file to share the
        persistency code with the ResourceLoadStatisticsPersistentStorage class.
        (WebKit::createDecoderForFile): Ditto.
        (WebKit::writeEncoderToDisk): Ditto.
        * UIProcess/PersistencyUtils.h: Ditto.
        * UIProcess/ResourceLoadStatisticsPersistentStorage.cpp: Use the
        new PersistencyUtils functions shared with the
        DeviceIdHashSaltStorage class.
        (WebKit::ResourceLoadStatisticsPersistentStorage::refreshMemoryStoreFromDisk):
        (WebKit::ResourceLoadStatisticsPersistentStorage::populateMemoryStoreFromDisk):
        (WebKit::ResourceLoadStatisticsPersistentStorage::writeMemoryStoreToDisk):
        * UIProcess/UserMediaPermissionRequestManagerProxy.cpp: After
        changing the API of the deviceIdHashSaltForOrigin we now use a
        completionHandler because it could happen the HashMap is not still
        loaded and we would have to wait for it. We refactored the calls
        to the method to use this new completionHandler.
        (WebKit::UserMediaPermissionRequestManagerProxy::userMediaAccessWasGranted):
        (WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame):
        (WebKit::UserMediaPermissionRequestManagerProxy::enumerateMediaDevicesForFrame):
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::WebsiteDataStore): Create the
        DeviceIdHashSaltStorage class with the persistency information.
        (WebKit::WebsiteDataStore::resolveDirectoriesIfNecessary): Make
        sure we have the directory to store the information.
        * UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h: Add get
        and set functions for the deviceHashSaltStorageDirectory.
        * WebKit.xcodeproj/project.pbxproj: Added PersistencyUtils file to
        the xcode compilation.

2018-12-20  Alex Christensen  <achristensen@webkit.org>

        Remove unused NetworkProcessCreationParameters
        https://bugs.webkit.org/show_bug.cgi?id=192961

        Reviewed by Andy Estes.

        loadThrottleLatency isn't used since I replaced it with NetworkSessionCreationParameters.loadThrottleLatency in r238654
        presentingApplicationPID has no effect because that value is only used in the WebProcess in NetworkExtensionContentFilter::initialize

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::initializeNetworkProcess):
        * NetworkProcess/NetworkProcessCreationParameters.cpp:
        (WebKit::NetworkProcessCreationParameters::encode const):
        (WebKit::NetworkProcessCreationParameters::decode):
        * NetworkProcess/NetworkProcessCreationParameters.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::ensureNetworkProcess):

2018-12-20  Chris Dumez  <cdumez@apple.com>

        Use Optional::hasValue() instead of Optional::has_value()
        https://bugs.webkit.org/show_bug.cgi?id=192948

        Reviewed by Tim Horton.

        * UIProcess/Automation/WebAutomationSession.cpp:
        (WebKit::AutomationCommandError::toProtocolString):
        (WebKit::WebAutomationSession::willClosePage):
        * WebProcess/Automation/WebAutomationSessionProxy.cpp:
        (WebKit::WebAutomationSessionProxy::computeElementLayout):

2018-12-20  Jeremy Jones  <jeremyj@apple.com>

        Flicker when exiting element fullscreen.
        https://bugs.webkit.org/show_bug.cgi?id=192774
        rdar://problem/33088878

        Reviewed by Jer Noble.

        Fixes an issue where the web page would flicker upon exiting element fullscreen.

        Replace WebView with a snapshot while the WebView is restyled and resized for inline.

        * UIProcess/mac/WKFullScreenWindowController.h:
        * UIProcess/mac/WKFullScreenWindowController.mm:
        (-[WKFullScreenWindowController initWithWindow:webView:page:]):
        (-[WKFullScreenWindowController finishedExitFullScreenAnimation:]):
        (-[WKFullScreenWindowController completeFinishExitFullScreenAnimationAfterRepaint]):

2018-12-20  Chris Dumez  <cdumez@apple.com>

        Move HTTPS_UPGRADE code behind a runtime flag, off by default
        https://bugs.webkit.org/show_bug.cgi?id=192937

        Reviewed by Youenn Fablet.

        Move HTTPS_UPGRADE code behind a runtime flag, off by default and drop the build time flag.

        * Configurations/WebKit.xcconfig:
        * DerivedSources.make:
        * NetworkProcess/NetworkHTTPSUpgradeChecker.cpp:
        * NetworkProcess/NetworkHTTPSUpgradeChecker.h:
        * NetworkProcess/NetworkLoadChecker.cpp:
        (WebKit::NetworkLoadChecker::NetworkLoadChecker):
        (WebKit::NetworkLoadChecker::applyHTTPSUpgradeIfNeeded const):
        (WebKit::NetworkLoadChecker::checkRequest):
        * NetworkProcess/NetworkLoadChecker.h:
        * NetworkProcess/NetworkProcess.h:
        (WebKit::NetworkProcess::networkHTTPSUpgradeChecker):
        * NetworkProcess/NetworkResourceLoadParameters.cpp:
        (WebKit::NetworkResourceLoadParameters::encode const):
        (WebKit::NetworkResourceLoadParameters::decode):
        * NetworkProcess/NetworkResourceLoadParameters.h:
        * NetworkProcess/NetworkResourceLoader.cpp:
        * NetworkProcess/PingLoad.cpp:
        (WebKit::PingLoad::PingLoad):
        * Shared/WebPreferences.yaml:
        * WebProcess/Network/WebLoaderStrategy.cpp:
        (WebKit::WebLoaderStrategy::scheduleLoadFromNetworkProcess):
        * config.h:

2018-12-20  Jiewen Tan  <jiewen_tan@apple.com>

        [WebAuthN] Add a runtime flag for local authenticator
        https://bugs.webkit.org/show_bug.cgi?id=192792
        <rdar://problem/46798738>

        Reviewed by Brent Fulgham.

        * Shared/WebPreferences.yaml:
        * UIProcess/API/C/WKPreferences.cpp:
        (WKPreferencesSetWebAuthenticationLocalAuthenticatorEnabled):
        (WKPreferencesGetWebAuthenticationLocalAuthenticatorEnabled):
        * UIProcess/API/C/WKPreferencesRefPrivate.h:
        * UIProcess/WebAuthentication/Cocoa/LocalService.mm:
        (WebKit::LocalService::isAvailable):

2018-12-20  Chris Dumez  <cdumez@apple.com>

        Use Optional::valueOr() instead of Optional::value_or()
        https://bugs.webkit.org/show_bug.cgi?id=192933

        Reviewed by Geoffrey Garen.

        * Shared/API/c/WKSecurityOriginRef.cpp:
        (WKSecurityOriginGetPort):
        * UIProcess/API/APIProcessPoolConfiguration.h:
        * UIProcess/API/Cocoa/WKSecurityOrigin.mm:
        (-[WKSecurityOrigin port]):
        * UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
        (-[WKWebViewConfiguration _cpuLimit]):
        * UIProcess/API/glib/WebKitSecurityOrigin.cpp:
        (webkit_security_origin_get_port):
        * UIProcess/API/gtk/WebKitWebViewBase.cpp:
        (webkitWebViewBaseHandleWheelEvent):
        * UIProcess/Automation/SimulatedInputDispatcher.cpp:
        (WebKit::SimulatedInputKeyFrame::maximumDuration const):
        (WebKit::SimulatedInputDispatcher::transitionInputSourceToState):
        * UIProcess/Automation/WebAutomationSession.cpp:
        (WebKit::WebAutomationSession::setWindowFrameOfBrowsingContext):
        (WebKit::WebAutomationSession::performInteractionSequence):
        * UIProcess/Automation/WebAutomationSessionMacros.h:
        * UIProcess/ServiceWorkerProcessProxy.cpp:
        (WebKit::ServiceWorkerProcessProxy::start):
        * UIProcess/WebAuthentication/AuthenticatorManager.cpp:
        (WebKit::AuthenticatorManager::initTimeOutTimer):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::deviceScaleFactor const):
        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::viewportSizeForCSSViewportUnits const):
        * UIProcess/gtk/WebPopupMenuProxyGtk.cpp:
        (WebKit::WebPopupMenuProxyGtk::activateItem):
        * UIProcess/mac/LegacySessionStateCoding.cpp:
        (WebKit::encodeFormDataElement):
        * WebProcess/Network/WebLoaderStrategy.cpp:
        (WebKit::WebLoaderStrategy::scheduleLoad):
        * WebProcess/Plugins/PDF/PDFPlugin.mm:
        (WebKit::PDFPlugin::convertFromPDFViewToRootView const):
        (WebKit::PDFPlugin::boundsOnScreen const):
        (WebKit::PDFPlugin::geometryDidChange):
        * WebProcess/WebCoreSupport/SessionStateConversion.cpp:
        (WebKit::toFormData):
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::updateVisibleContentRects):
        * WebProcess/WebPage/wpe/CompositingManager.cpp:
        (WebKit::CompositingManager::releaseConnectionFd):

2018-12-20  Keith Rollin  <krollin@apple.com>

        Improve release-level page-load logging
        https://bugs.webkit.org/show_bug.cgi?id=192872
        <rdar://problem/46850309>

        Reviewed by Chris Dumez.

        There are a number of reported bugs that are difficult or impossible
        to track down with our current level of logging. Additionally, some
        software groups lower in the page-loading stack have requested logging
        sufficient for tracking a user-visible error message down to the
        requested resource that caused the message. Add more-comprehensive
        logging to address these issues/requests.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::m_editableImageController):
        (WebKit::WebPageProxy::~WebPageProxy):
        (WebKit::WebPageProxy::reattachToWebProcess):
        (WebKit::WebPageProxy::swapToWebProcess):
        (WebKit::WebPageProxy::reattachToWebProcessForReload):
        (WebKit::WebPageProxy::reattachToWebProcessWithItem):
        (WebKit::WebPageProxy::close):
        (WebKit::WebPageProxy::tryClose):
        (WebKit::WebPageProxy::loadRequest):
        (WebKit::WebPageProxy::loadRequestWithNavigation):
        (WebKit::WebPageProxy::loadFile):
        (WebKit::WebPageProxy::loadData):
        (WebKit::WebPageProxy::loadDataWithNavigation):
        (WebKit::WebPageProxy::loadAlternateHTML):
        (WebKit::WebPageProxy::loadWebArchiveData):
        (WebKit::WebPageProxy::navigateToPDFLinkWithSimulatedClick):
        (WebKit::WebPageProxy::stopLoading):
        (WebKit::WebPageProxy::reload):
        (WebKit::WebPageProxy::goToBackForwardItem):
        (WebKit::WebPageProxy::tryRestoreScrollPosition):
        (WebKit::WebPageProxy::updateThrottleState):
        (WebKit::WebPageProxy::receivedNavigationPolicyDecision):
        (WebKit::WebPageProxy::continueNavigationInNewProcess):
        (WebKit::WebPageProxy::restoreFromSessionState):
        (WebKit::WebPageProxy::didStartProvisionalLoadForFrame):
        (WebKit::WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrame):
        (WebKit::WebPageProxy::willPerformClientRedirectForFrame):
        (WebKit::WebPageProxy::didCancelClientRedirectForFrame):
        (WebKit::WebPageProxy::didFailProvisionalLoadForFrame):
        (WebKit::WebPageProxy::didCommitLoadForFrame):
        (WebKit::WebPageProxy::didFinishDocumentLoadForFrame):
        (WebKit::WebPageProxy::didFinishLoadForFrame):
        (WebKit::WebPageProxy::didFailLoadForFrame):
        (WebKit::WebPageProxy::didSameDocumentNavigationForFrame):
        (WebKit::WebPageProxy::didNavigateWithNavigationData):
        (WebKit::WebPageProxy::didPerformClientRedirect):
        (WebKit::WebPageProxy::didPerformServerRedirect):
        (WebKit::WebPageProxy::processDidBecomeUnresponsive):
        (WebKit::WebPageProxy::processDidBecomeResponsive):
        (WebKit::WebPageProxy::processDidTerminate):
        (WebKit::WebPageProxy::dispatchProcessDidTerminate):
        (WebKit::WebPageProxy::tryReloadAfterProcessTermination):
        (WebKit::WebPageProxy::didExceedInactiveMemoryLimitWhileActive):
        (WebKit::WebPageProxy::didExceedBackgroundCPULimitWhileInForeground):
        * WebProcess/Network/WebLoaderStrategy.cpp:
        (WebKit::WebLoaderStrategy::scheduleLoad):
        (WebKit::WebLoaderStrategy::scheduleLoadFromNetworkProcess):
        (WebKit::WebLoaderStrategy::loadResourceSynchronously):
        * WebProcess/Network/WebResourceLoader.cpp:
        (WebKit::WebResourceLoader::willSendRequest):
        (WebKit::WebResourceLoader::didReceiveResponse):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDidFailProvisionalLoad):
        (WebKit::WebFrameLoaderClient::dispatchDidFailLoad):

2018-12-20  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] Replace "node assistance" terminology in WebKit with "focused element"
        https://bugs.webkit.org/show_bug.cgi?id=192936

        Reviewed by Tim Horton.

        Renames a few methods and data structures in WebKit, to refer to "focused elements" rather than "assisted nodes";
        see below for more details. No new tests, because there should be no change in behavior.

        * Shared/FocusedElementInformation.cpp: Renamed from Source/WebKit/Shared/AssistedNodeInformation.cpp.
        (WebKit::OptionItem::encode const):
        (WebKit::OptionItem::decode):
        (WebKit::FocusedElementInformation::encode const):
        (WebKit::FocusedElementInformation::decode):
        * Shared/FocusedElementInformation.h: Renamed from Source/WebKit/Shared/AssistedNodeInformation.h.

        Rename AssistedNodeInformation to FocusedElementInformation. Additionally, introduce a named type for the
        focusedElementIdentifier (which is currently just a `uint64_t`).

        (WebKit::OptionItem::OptionItem):
        * Shared/ios/InteractionInformationAtPosition.h:
        * Shared/ios/InteractionInformationAtPosition.mm:
        (WebKit::InteractionInformationAtPosition::encode const):
        (WebKit::InteractionInformationAtPosition::decode):
        * SourcesCocoa.txt:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _shouldUpdateKeyboardWithInfo:]):
        * UIProcess/PageClient.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::resetStateAfterProcessExited):
        * UIProcess/WebPageProxy.h:

        Rename NodeAssistanceArguments to ElementDidFocusArguments (and also add a FIXME for removing this mechanism
        eventually).

        (WebKit::WebPageProxy::focusNextFocusedElement):
        (WebKit::WebPageProxy::focusNextAssistedNode): Deleted.
        * UIProcess/WebPageProxy.messages.in:

        Rename StartAssistingNode to ElementDidFocus, and StopAssistingNode to ElementDidBlur.

        * UIProcess/ios/PageClientImplIOS.h:
        * UIProcess/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::elementDidFocus):
        (WebKit::PageClientImpl::isFocusingElement):
        (WebKit::PageClientImpl::elementDidBlur):
        (WebKit::PageClientImpl::startAssistingNode): Deleted.
        (WebKit::PageClientImpl::isAssistingNode): Deleted.
        (WebKit::PageClientImpl::stopAssistingNode): Deleted.
        * UIProcess/ios/WKContentView.h:
        * UIProcess/ios/WKContentView.mm:
        (-[WKContentView isFocusingElement]):
        (-[WKContentView _didCommitLoadForMainFrame]):
        (-[WKContentView isAssistingNode]): Deleted.
        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKFocusedElementInfo initWithFocusedElementInformation:isUserInitiated:userObject:]):
        (hasFocusedElement):
        (-[WKContentView cleanupInteraction]):
        (-[WKContentView shouldHideSelectionWhenScrolling]):
        (-[WKContentView resignFirstResponderForWebView]):
        (-[WKContentView _didGetTapHighlightForRequest:color:quads:topLeftRadius:topRightRadius:bottomLeftRadius:bottomRightRadius:]):
        (-[WKContentView _requiresKeyboardWhenFirstResponder]):
        (-[WKContentView _zoomToRevealFocusedElement]):
        (-[WKContentView inputView]):
        (-[WKContentView _selectionClipRect]):
        (-[WKContentView gestureRecognizerShouldBegin:]):
        (-[WKContentView textInteractionGesture:shouldBeginAtPoint:]):
        (-[WKContentView clearSelection]):
        (-[WKContentView requiresAccessoryView]):
        (-[WKContentView canPerformActionForWebView:withSender:]):
        (-[WKContentView _isInteractingWithFocusedElement]):
        (-[WKContentView changeSelectionWithGestureAt:withGesture:withState:withFlags:]):
        (-[WKContentView selectPositionAtPoint:completionHandler:]):
        (-[WKContentView selectPositionAtBoundary:inDirection:fromPoint:completionHandler:]):
        (-[WKContentView selectTextWithGranularity:atPoint:completionHandler:]):
        (-[WKContentView updateSelectionWithExtentPoint:completionHandler:]):
        (-[WKContentView updateSelectionWithExtentPoint:withBoundary:completionHandler:]):
        (-[WKContentView accessoryTab:]):
        (-[WKContentView _becomeFirstResponderWithSelectionMovingForward:completionHandler:]):
        (-[WKContentView accessoryClear]):
        (-[WKContentView _updateAccessory]):
        (-[WKContentView insertTextSuggestion:]):
        (-[WKContentView setSelectedTextRange:]):
        (-[WKContentView textInputTraits]):
        (-[WKContentView isScrollableForKeyboardScrollViewAnimator:]):
        (-[WKContentView focusedElementInformation]):
        (-[WKContentView focusedSelectElementOptions]):
        (rectToRevealWhenZoomingToFocusedElement):
        (-[WKContentView _elementDidFocus:userIsInteracting:blurPreviousNode:changingActivityState:userObject:]):
        (-[WKContentView _elementDidBlur]):
        (-[WKContentView _didReceiveEditorStateUpdateAfterFocus]):
        (-[WKContentView updateCurrentFocusedElementInformation:]):
        (-[WKContentView presentViewControllerForCurrentFocusedElement]):
        (-[WKContentView focusedFormControlViewDidSubmit:]):
        (-[WKContentView focusedFormControlViewDidCancel:]):
        (-[WKContentView focusedFormControlViewDidBeginEditing:]):
        (-[WKContentView rectForFocusedFormControlView:]):
        (-[WKContentView nextRectForFocusedFormControlView:]):
        (-[WKContentView previousRectForFocusedFormControlView:]):
        (-[WKContentView actionNameForFocusedFormControlView:]):
        (-[WKContentView focusedFormControlViewDidRequestNextNode:]):
        (-[WKContentView focusedFormControlViewDidRequestPreviousNode:]):
        (-[WKContentView hasNextNodeForFocusedFormControlView:]):
        (-[WKContentView hasPreviousNodeForFocusedFormControlView:]):
        (-[WKContentView selectMenu:didSelectItemAtIndex:]):
        (-[WKContentView numberOfItemsInSelectMenu:]):
        (-[WKContentView selectMenu:displayTextForItemAtIndex:]):
        (-[WKContentView selectMenu:didCheckItemAtIndex:checked:]):
        (-[WKContentView selectMenuUsesMultipleSelection:]):
        (-[WKContentView selectMenu:hasSelectedOptionAtIndex:]):
        (-[WKContentView _updateChangedSelection:]):
        (-[WKContentView _autofillContext]):
        (-[WKContentView dismissQuickboardViewControllerAndRevealFocusedFormOverlayIfNecessary:]):
        (-[WKContentView allowsLanguageSelectionMenuForListViewController:]):
        (-[WKContentView inputLabelTextForViewController:]):
        (-[WKContentView initialValueForViewController:]):
        (-[WKContentView shouldDisplayInputContextViewForListViewController:]):
        (-[WKContentView numericInputModeForListViewController:]):
        (-[WKContentView textContentTypeForListViewController:]):
        (-[WKContentView allowsDictationInputForListViewController:]):
        (-[WKFocusedElementInfo initWithAssistedNodeInformation:isUserInitiated:userObject:]): Deleted.
        (hasAssistedNode): Deleted.

        Replaced with hasFocusedElement.

        (-[WKContentView _isInteractingWithAssistedNode]): Deleted.
        (-[WKContentView assistedNodeInformation]): Deleted.
        (-[WKContentView assistedNodeSelectOptions]): Deleted.
        (-[WKContentView _startAssistingNode:userIsInteracting:blurPreviousNode:changingActivityState:userObject:]): Deleted.
        (-[WKContentView _stopAssistingNode]): Deleted.
        (-[WKContentView updateCurrentAssistedNodeInformation:]): Deleted.
        (-[WKContentView presentViewControllerForCurrentAssistedNode]): Deleted.
        * UIProcess/ios/WebDataListSuggestionsDropdownIOS.mm:
        (-[WKDataListSuggestionsControl textAlignment]):
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::focusedElementInformationCallback):
        (WebKit::WebPageProxy::requestFocusedElementInformation):
        (WebKit::WebPageProxy::computeCustomFixedPositionRect const):
        (WebKit::WebPageProxy::didCommitLayerTree):
        (WebKit::WebPageProxy::selectWithGesture):
        (WebKit::WebPageProxy::selectTextWithGranularityAtPoint):
        (WebKit::WebPageProxy::selectPositionAtBoundaryWithDirection):
        (WebKit::WebPageProxy::selectPositionAtPoint):
        (WebKit::WebPageProxy::updateSelectionWithExtentPoint):
        (WebKit::WebPageProxy::updateSelectionWithExtentPointAndBoundary):
        (WebKit::WebPageProxy::blurFocusedElement):
        (WebKit::WebPageProxy::elementDidFocus):
        (WebKit::WebPageProxy::elementDidBlur):
        (WebKit::WebPageProxy::focusNextFocusedElement):
        (WebKit::WebPageProxy::setFocusedElementValue):
        (WebKit::WebPageProxy::setFocusedElementValueAsNumber):
        (WebKit::WebPageProxy::setFocusedElementSelectedIndex):
        (WebKit::WebPageProxy::assistedNodeInformationCallback): Deleted.
        (WebKit::WebPageProxy::requestAssistedNodeInformation): Deleted.
        (WebKit::WebPageProxy::blurAssistedNode): Deleted.
        (WebKit::WebPageProxy::startAssistingNode): Deleted.
        (WebKit::WebPageProxy::stopAssistingNode): Deleted.
        (WebKit::WebPageProxy::focusNextAssistedNode): Deleted.
        (WebKit::WebPageProxy::setAssistedNodeValue): Deleted.
        (WebKit::WebPageProxy::setAssistedNodeValueAsNumber): Deleted.
        (WebKit::WebPageProxy::setAssistedNodeSelectedIndex): Deleted.
        * UIProcess/ios/forms/WKFormColorPicker.mm:
        (-[WKColorPicker initWithView:]):
        (-[WKColorPicker setControlValueFromUIColor:]):
        * UIProcess/ios/forms/WKFormInputControl.mm:
        (-[WKDateTimePicker initWithView:datePickerMode:]):
        (-[WKDateTimePicker shouldPresentGregorianCalendar:]):
        (-[WKDateTimePicker _dateChangedSetAsNumber]):
        (-[WKDateTimePicker _dateChangedSetAsString]):
        (-[WKDateTimePicker controlBeginEditing]):
        (-[WKFormInputControl initWithView:]):
        (-[WKDateTimePopover clear:]):
        (-[WKDateTimePopover initWithView:datePickerMode:]):
        * UIProcess/ios/forms/WKFormPopover.mm:
        (-[WKRotatingPopover presentPopoverAnimated:]):
        * UIProcess/ios/forms/WKFormSelectControl.h:
        * UIProcess/ios/forms/WKFormSelectControl.mm:
        (-[WKFormSelectControl initWithView:]):
        * UIProcess/ios/forms/WKFormSelectPicker.mm:
        (-[WKMultipleSelectPicker initWithView:]):
        (-[WKMultipleSelectPicker pickerView:viewForRow:forComponent:reusingView:]):
        (-[WKMultipleSelectPicker pickerView:numberOfRowsInComponent:]):
        (-[WKMultipleSelectPicker findItemIndexAt:]):
        (-[WKMultipleSelectPicker pickerView:row:column:checked:]):
        (-[WKSelectSinglePicker initWithView:]):
        (-[WKSelectSinglePicker controlEndEditing]):
        (-[WKSelectSinglePicker pickerView:numberOfRowsInComponent:]):
        (-[WKSelectSinglePicker pickerView:attributedTitleForRow:forComponent:]):
        (-[WKSelectSinglePicker pickerView:didSelectRow:inComponent:]):
        * UIProcess/ios/forms/WKFormSelectPopover.mm:
        (-[WKSelectTableViewController initWithView:hasGroups:]):
        (-[WKSelectTableViewController tableView:numberOfRowsInSection:]):
        (-[WKSelectTableViewController tableView:titleForHeaderInSection:]):
        (-[WKSelectTableViewController findItemIndexAt:]):
        (-[WKSelectTableViewController findItemAt:]):
        (-[WKSelectTableViewController tableView:cellForRowAtIndexPath:]):
        (-[WKSelectTableViewController tableView:didSelectRowAtIndexPath:]):
        (-[WKSelectPopover initWithView:hasGroups:]):
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::elementDidFocus):
        (WebKit::WebChromeClient::elementDidRefocus):
        (WebKit::WebChromeClient::elementDidBlur):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::didStartPageTransition):
        (WebKit::WebPage::setTextAsync):
        (WebKit::WebPage::resetFocusedElementForFrame):
        (WebKit::WebPage::elementDidRefocus):
        (WebKit::WebPage::elementDidFocus):
        (WebKit::WebPage::elementDidBlur):
        (WebKit::WebPage::didCommitLoad):
        (WebKit::WebPage::resetAssistedNodeForFrame): Deleted.
        * WebProcess/WebPage/WebPage.h:

        Refactor elementDid{Refocus|Focus|Blur} to take `Element&` rather than `Node*`.

        * WebProcess/WebPage/WebPage.messages.in:
        * WebProcess/WebPage/ios/WebPageIOS.mm:

        Replace m_assistedNode (a `RefPtr<Node>`) with m_focusedElement (a `RefPtr<Element>`).

        (WebKit::WebPage::platformEditorState const):
        (WebKit::WebPage::completeSyntheticClick):
        (WebKit::WebPage::requestFocusedElementInformation):
        (WebKit::WebPage::blurFocusedElement):
        (WebKit::WebPage::setFocusedElementValue):
        (WebKit::WebPage::setFocusedElementValueAsNumber):
        (WebKit::WebPage::setFocusedElementSelectedIndex):
        (WebKit::innerFrameQuad):
        (WebKit::constrainPoint):
        (WebKit::WebPage::selectWithGesture):
        (WebKit::WebPage::startAutoscrollAtPosition):
        (WebKit::WebPage::visiblePositionInFocusedNodeForPoint):
        (WebKit::WebPage::selectPositionAtPoint):
        (WebKit::WebPage::selectPositionAtBoundaryWithDirection):
        (WebKit::WebPage::rangeForGranularityAtPoint):
        (WebKit::WebPage::selectTextWithGranularityAtPoint):
        (WebKit::WebPage::updateSelectionWithExtentPointAndBoundary):
        (WebKit::WebPage::updateSelectionWithExtentPoint):
        (WebKit::WebPage::getPositionInformation):
        (WebKit::WebPage::focusNextFocusedElement):
        (WebKit::WebPage::getFocusedElementInformation):
        (WebKit::WebPage::autofillLoginCredentials):
        (WebKit::WebPage::requestAssistedNodeInformation): Deleted.
        (WebKit::WebPage::blurAssistedNode): Deleted.
        (WebKit::WebPage::setAssistedNodeValue): Deleted.
        (WebKit::WebPage::setAssistedNodeValueAsNumber): Deleted.
        (WebKit::WebPage::setAssistedNodeSelectedIndex): Deleted.
        (WebKit::WebPage::focusNextAssistedNode): Deleted.
        (WebKit::WebPage::getAssistedNodeInformation): Deleted.

2018-12-20  Brent Fulgham  <bfulgham@apple.com>

        WKWebView default UA doesn't freeze the build number
        https://bugs.webkit.org/show_bug.cgi?id=192809
        <rdar://problem/44687185>

        Reviewed by Andy Estes.

        Always reports the frozen build number.

        * UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
        (defaultApplicationNameForUserAgent): Do not expose the actual build number through this API.

2018-12-20  Jer Noble  <jer.noble@apple.com>

        Enable MediaCapabilities by default.
        https://bugs.webkit.org/show_bug.cgi?id=192340
        <rdar://problem/46435149>

        Reviewed by Dean Jackson.

        * Shared/WebPreferences.yaml:

2018-12-20  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] WebDriver: tests in imported/w3c/webdriver/tests/element_clear/user_prompts.py are failing
        https://bugs.webkit.org/show_bug.cgi?id=192927

        Reviewed by Michael Catanzaro.

        Give the focus back to the web view when a dialog is dismissed.

        * UIProcess/API/gtk/WebKitWebViewBase.cpp:
        (webkitWebViewBaseContainerRemove):

2018-12-20  Tim Horton  <timothy_horton@apple.com>

        Unparented WKWebView can't retrieve main resource data for a main frame plugin
        https://bugs.webkit.org/show_bug.cgi?id=192923
        <rdar://problem/46859068>

        Reviewed by Wenson Hsieh.

        * WebProcess/Plugins/PluginView.cpp:
        (WebKit::PluginView::liveResourceData const):
        If the WKWebView is unparented, we may not immediately initialize the plugin.
        In that case, PluginView holds on to the backing data until the plugin
        is initialized. If a WKWebView API client asks for the backing data
        for the plugin during this time, we should return it, instead of bailing.

2018-12-20  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] Focusing an editable element should scroll to reveal the selection
        https://bugs.webkit.org/show_bug.cgi?id=192802
        <rdar://problem/46781759>

        Reviewed by Tim Horton.

        Currently, when tapping on an editable element, logic in -[WKWebView _zoomToFocusRect:…:] attempts to adjust the
        visible viewport such that the rect containing the selection is visible. However, AssistedNodeInformation's
        selectionRect is used here, which (as the FIXME in WebPage::getAssistedNodeInformation notes) is either the last
        touch location, or the top left of the element if the touch location is outside of the element's bounding rect.
        This leads to confusing and undesirable behavior when tapping near the bottom of a large contenteditable element
        to focus it, since the actual selection will end up near the top of the element, yet we'll try to scroll to
        reveal the bottom of the element, which causes the visible selection to scroll offscreen. Notably, this affects
        scenarios involving editable web views embedded in apps, such as Mail compose.

        Right now, we use the last touch location as an approximation for the selection rect because the selection may
        have not yet been updated at the moment when focus moves into an editable element. To fix this, we defer the
        process of zooming to the focused element rect until after the selection changes and the UI process is updated
        with information about the new selection rects.

        Test: editing/selection/ios/selection-is-visible-after-focusing-editable-area.html

        * Shared/AssistedNodeInformation.cpp:
        (WebKit::AssistedNodeInformation::encode const):
        (WebKit::AssistedNodeInformation::decode):
        * Shared/AssistedNodeInformation.h:

        Rename selectionRect to elementInteractionLocation, to more accurately reflect its value and purpose. This isn't
        strictly always the last touch location, since we may default to the focused element location instead if the
        last touch location is outside of the element rect.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _zoomToFocusRect:selectionRect:insideFixed:fontSize:minimumScale:maximumScale:allowScaling:forceScroll:]):

        Tweak a constant that determines the minimum amount of margin to leave between the selection rect and the edge
        of the window when scrolling to reveal the focused element. Previously, this was larger than necessary to
        accomodate for the fact that the "selection rect" used when zooming to the focused element did not take the
        actual selection into account at all, and was simply a 1 by 1 rect; this meant that the margin needed to be
        large enough to exceed the usual height of a text caret in editable content. Since we now use the real selection
        rect, we can be much less generous with this margin.

        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView cleanupInteraction]):
        (-[WKContentView observeValueForKeyPath:ofObject:change:context:]):

        Don't additionally update the selection in the middle of triggering zooming to the focused element; on
        particular versions of iOS, this now attempts to scroll the selection rect on-screen, which then conflicts with
        zooming to reveal the focused element.

        (-[WKContentView _zoomToRevealFocusedElement]):

        Renamed from _displayFormNodeInputView to _zoomToRevealFocusedElement, to make the purpose of this function more
        clear. Additionally, pull logic to update the accessory view out of this method, so that it's strictly concerned
        with zooming to the focused element.

        (-[WKContentView inputView]):

        Add a FIXME describing the implications of zooming to the focused element in the implementation of -inputView.
        See also: <https://bugs.webkit.org/show_bug.cgi?id=192878>.

        (-[WKContentView accessoryTab:]):

        Fix a subtle issue when keeping track of _didAccessoryTabInitiateFocus. Currently, this is set to YES in
        -accessoryTab: and unset in _displayFormNodeInputView, but since _displayFormNodeInputView may be invoked
        multiple times for the same focused element (see: -inputView), we might end up zooming to the focused element
        with _didAccessoryTabInitiateFocus set to NO, even though we initiated focus with the previous/next buttons.

        Instead, temporarily set a different ivar, _isChangingFocusUsingAccessoryTab, to YES in -accessoryTab:, and
        unset it in the completion handler after the focused element has changed. Then, when we _startAssistingNode:,
        set _didAccessoryTabInitiateFocus to _isChangingFocusUsingAccessoryTab. This ensures that the correctness of
        _didAccessoryTabInitiateFocus isn't tied to the number of times -[WKContentView inputView] is invoked when
        focusing an element.

        (shouldZoomToRevealSelectionRect):
        (rectToRevealWhenZoomingToFocusedElement):

        Add a helper method to determine the selection rect to use when zooming to reveal the focused element. ASSERTs
        that we have post-layout data in the EditorState.

        (-[WKContentView _startAssistingNode:userIsInteracting:blurPreviousNode:changingActivityState:userObject:]):

        When "assisting" a focused element, immediately zoom to it if we don't need selection information to compute the
        rect to zoom to; otherwise, defer zooming until we receive the first editor state update in the UI process that
        contains information about our selection rects.

        (-[WKContentView _stopAssistingNode]):
        (-[WKContentView _didReceiveEditorStateUpdateAfterFocus]):

        If necessary, reveal the focused element by zooming.

        (-[WKContentView _updateInitialWritingDirectionIfNecessary]):

        Pull this initial writing direction update logic out into a separate helper method.

        (-[WKContentView _displayFormNodeInputView]): Deleted.

        Replaced by _zoomToRevealFocusedElement.

        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::elementDidRefocus):

        This currently calls WebChromeClient::elementDidFocus; instead, call the new WebPage::elementDidRefocus;
        additionally, make this available on all PLATFORM(COCOA), rather than just IOS_FAMILY.

        * WebProcess/WebCoreSupport/WebChromeClient.h:
        * WebProcess/WebCoreSupport/ios/WebChromeClientIOS.mm:
        (WebKit::WebChromeClient::elementDidRefocus): Deleted.

        Replaced by the PLATFORM(COCOA) version.

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::elementDidRefocus):

        When refocusing an element, ensure that post-layout editor state data is sent to the UI process by including a
        full EditorState in the next layer tree transaction.

        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::completeSyntheticClick):

        Call elementDidRefocus instead of elementDidFocus, in the case where the existing focused element is clicked.

        (WebKit::WebPage::getAssistedNodeInformation):

        Adjust for the change from selectionRect to elementInteractionLocation.

2018-12-20  Patrick Griffis  <pgriffis@igalia.com>

        [GTK][WPE] Grant the sandbox read access to XDG_DATA_HOME/prgname
        https://bugs.webkit.org/show_bug.cgi?id=192929

        Reviewed by Michael Catanzaro.

        * UIProcess/API/glib/WebKitWebContext.cpp:
        * UIProcess/Launcher/glib/BubblewrapLauncher.cpp:
        (WebKit::bubblewrapSpawn):

2018-12-20  Chris Dumez  <cdumez@apple.com>

        [PSON] SuspendedPageProxy fails to release its process assertion if the WebPage fails to enter PageCache
        https://bugs.webkit.org/show_bug.cgi?id=192873

        Reviewed by Antti Koivisto.

        SuspendedPageProxy fails to release its process assertion if the WebPage fails to enter PageCache, preventing
        the process from suspending on iOS.

        * UIProcess/SuspendedPageProxy.cpp:
        (WebKit::SuspendedPageProxy::didProcessRequestToSuspend):
        (WebKit::SuspendedPageProxy::didReceiveMessage):
        (WebKit::SuspendedPageProxy::didSuspend): Deleted.
        (WebKit::SuspendedPageProxy::didFailToSuspend): Deleted.
        * UIProcess/SuspendedPageProxy.h:

2018-12-19  Chris Dumez  <cdumez@apple.com>

        wtf/Optional.h: move-constructor and move-assignment operator should disengage the value being moved from
        https://bugs.webkit.org/show_bug.cgi?id=192728
        <rdar://problem/46746779>

        Reviewed by Geoff Garen.

        * NetworkProcess/*:
        * Platform/*:
        * Scripts/*:
        * Shared/*:
        * UIProcess/*:
        * WebProcess/*:

2018-12-19  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed, silence -Wpragmas warning

        * WebProcess/WebCoreSupport/WebAlternativeTextClient.h:

2018-12-19  Vivek Seth  <v_seth@apple.com>

        HTTPS Upgrade: Use full sqlite upgrade list
        https://bugs.webkit.org/show_bug.cgi?id=192736
        <rdar://problem/45851427>

        Reviewed by Chris Dumez.

        * NetworkProcess/NetworkHTTPSUpgradeChecker.cpp: Added.
        (WebKit::NetworkHTTPSUpgradeCheckerDatabasePath):
        (WebKit::NetworkHTTPSUpgradeChecker::NetworkHTTPSUpgradeChecker):
        (WebKit::NetworkHTTPSUpgradeChecker::~NetworkHTTPSUpgradeChecker):
        (WebKit::NetworkHTTPSUpgradeChecker::query):
        (WebKit::NetworkHTTPSUpgradeChecker::isAlwaysOnLoggingAllowed const):
        * NetworkProcess/NetworkHTTPSUpgradeChecker.h: Added.
        (WebKit::NetworkHTTPSUpgradeChecker::didSetupCompleteSuccessfully const):
        * NetworkProcess/NetworkLoadChecker.cpp:
        (WebKit::NetworkLoadChecker::applyHTTPSUpgradeIfNeeded const):
        (WebKit::NetworkLoadChecker::checkRequest):
        * NetworkProcess/NetworkLoadChecker.h:
        * NetworkProcess/NetworkProcess.h:
        (WebKit::NetworkProcess::networkHTTPSUpgradeChecker):
        * Sources.txt:
        * WebKit.xcodeproj/project.pbxproj:

2018-12-19  Tim Horton  <timothy_horton@apple.com>

        Use delegate instead of drawingDelegate in WKDrawingView
        https://bugs.webkit.org/show_bug.cgi?id=192899
        <rdar://problem/46733339>

        Reviewed by Wenson Hsieh.

        * UIProcess/ios/WKDrawingView.mm:
        (-[WKDrawingView initWithEmbeddedViewID:webPageProxy:]):
        Do the dance.

2018-12-19  Alex Christensen  <achristensen@webkit.org>

        Navigations away from the SafeBrowsing interstitial show a flash of old content
        https://bugs.webkit.org/show_bug.cgi?id=192676

        Reviewed by Chris Dumez.

        When a user clicks through a safe browsing warning, do not remove the warning until content is drawn for the destination.
        Otherwise, the user will confusingly see the page before the warning while the navigation happens.
        We can only do this for warnings caused by main frame navigations, though.  Other warnings (such as those caused by iframes)
        need to be cleared immediately, and we still need to clear the warning immediately if the user has said to go back.

        This change is reflected in an updated API test.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _showSafeBrowsingWarning:completionHandler:]):
        * UIProcess/Cocoa/SafeBrowsingWarningCocoa.mm:
        (WebKit::SafeBrowsingWarning::SafeBrowsingWarning):
        * UIProcess/Cocoa/WKSafeBrowsingWarning.h:
        * UIProcess/Cocoa/WKSafeBrowsingWarning.mm:
        (-[WKSafeBrowsingWarning forMainFrameNavigation]):
        * UIProcess/Cocoa/WebPageProxyCocoa.mm:
        (WebKit::WebPageProxy::beginSafeBrowsingCheck):
        * UIProcess/Cocoa/WebViewImpl.h:
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::showSafeBrowsingWarning):
        (WebKit::WebViewImpl::clearSafeBrowsingWarningIfForMainFrameNavigation):
        * UIProcess/PageClient.h:
        (WebKit::PageClient::clearSafeBrowsingWarningIfForMainFrameNavigation):
        * UIProcess/SafeBrowsingWarning.h:
        (WebKit::SafeBrowsingWarning::create):
        (WebKit::SafeBrowsingWarning::forMainFrameNavigation const):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didReachLayoutMilestone):
        (WebKit::WebPageProxy::beginSafeBrowsingCheck):
        (WebKit::WebPageProxy::decidePolicyForNavigationAction):
        * UIProcess/WebPageProxy.h:
        * UIProcess/ios/PageClientImplIOS.h:
        * UIProcess/mac/PageClientImplMac.h:
        * UIProcess/mac/PageClientImplMac.mm:
        (WebKit::PageClientImpl::clearSafeBrowsingWarningIfForMainFrameNavigation):

2018-12-19  Tim Horton  <timothy_horton@apple.com>

        UI process crash when focusing an editable image
        https://bugs.webkit.org/show_bug.cgi?id=192839
        <rdar://problem/46786670>

        Reviewed by Wenson Hsieh.

        * SourcesCocoa.txt:
        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _requiresKeyboardWhenFirstResponder]):
        (-[WKContentView inputView]):
        (-[WKContentView requiresAccessoryView]):
        (-[WKContentView _startAssistingNode:userIsInteracting:blurPreviousNode:changingActivityState:userObject:]):
        (-[WKContentView _stopAssistingNode]):
        (-[WKContentView _installInkPickerForDrawingViewWithID:]):
        (-[WKContentView _uninstallInkPicker]):
        * UIProcess/ios/WKInkPickerView.h: Renamed from Source/WebKit/UIProcess/ios/WKInkPickerControl.h.
        * UIProcess/ios/WKInkPickerView.mm: Renamed from Source/WebKit/UIProcess/ios/WKInkPickerControl.mm.
        (-[WKInkPickerView initWithDrawingView:]):
        (-[WKInkPickerView didPickInk]):
        (-[WKInkPickerView inlineInkPickerDidToggleRuler:]):
        (-[WKInkPickerView inlineInkPicker:didSelectTool:]):
        (-[WKInkPickerView inlineInkPicker:didSelectColor:]):
        (-[WKInkPickerView inkPickerSize]):
        (-[WKInkPickerView layoutSubviews]):
        (-[WKInkPickerView sizeThatFits:]):
        (-[WKInkPickerView viewControllerForPopoverPresentationFromInlineInkPicker:]):
        * WebKit.xcodeproj/project.pbxproj:
        Make WKInkPickerView a WKWebView subview instead of an inputView.
        Also, don't force the keyboard to be visible when an editable image is focused.

2018-12-19  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] Force system camera/microphone TCC prompt if necessary
        https://bugs.webkit.org/show_bug.cgi?id=192820
        <rdar://problem/42680098>

        Reviewed by Jer Noble.

        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::UIDelegate::UIClient::decidePolicyForUserMediaPermissionRequest): Enable TCC check 
        and prompt on Mojave.

2018-12-19  Megan Gardner  <megan_gardner@apple.com>

        Allow clients to set the navigator platform
        https://bugs.webkit.org/show_bug.cgi?id=192735

        Reviewed by Tim Horton.

        Add private API to allow clients to override the default navigator
        platform. Some websites check for the platform, which 
        interfears with our request desktop site feature. This should
        help more sites function as expected.

        * Shared/WebsitePoliciesData.cpp:
        (WebKit::WebsitePoliciesData::encode const):
        (WebKit::WebsitePoliciesData::decode):
        (WebKit::WebsitePoliciesData::applyToDocumentLoader):
        * Shared/WebsitePoliciesData.h:
        * UIProcess/API/APIWebsitePolicies.cpp:
        (API::WebsitePolicies::data):
        * UIProcess/API/APIWebsitePolicies.h:
        * UIProcess/API/Cocoa/_WKWebsitePolicies.h:
        * UIProcess/API/Cocoa/_WKWebsitePolicies.mm:
        (-[_WKWebsitePolicies setCustomNavigatorPlatform:]):
        (-[_WKWebsitePolicies customNavigatorPlatform]):
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction):

2018-12-19  Truitt Savell  <tsavell@apple.com>

        Unreviewed, rolling out r239358.

        Revision caused imported/w3c/web-platform-tests/IndexedDB/ to
        crash on Debug bots

        Reverted changeset:

        "Clean up IndexedDB files between tests"
        https://bugs.webkit.org/show_bug.cgi?id=192796
        https://trac.webkit.org/changeset/239358

2018-12-18  Alex Christensen  <achristensen@webkit.org>

        REGRESSION(r239134) iOS safe browsing warning unable to show details
        https://bugs.webkit.org/show_bug.cgi?id=192837

        Reviewed by Tim Horton.

        * UIProcess/Cocoa/WKSafeBrowsingWarning.mm:
        (-[WKSafeBrowsingWarning addContent]):
        I had a fragile design that relied on the internal view heirarchy structure of UIScrollView,
        which I changed in r239134 by introducing a layout which changed where its scrollbars were in the view heirarchy.
        I now have a more robust design that saves a WeakObjCPtr to the view I need to traverse to.
        Testing is problematic because this had to do with scrollbars and UIScrollView internals which seem to behave
        differently in TestWebKitAPI, but I verified manually that this fixes the issue.

2018-12-18  Fujii Hironori  <Hironori.Fujii@sony.com>

        [Win][Clang] Fix compilation warnings under Source/WebKit directory
        https://bugs.webkit.org/show_bug.cgi?id=192695

        Reviewed by Alex Christensen.

        * NetworkProcess/cache/NetworkCacheData.cpp:
        (makeSalt): Enclosed by #if !OS(WINDOWS).
        * NetworkProcess/cache/NetworkCacheFileSystem.cpp:
        (WebKit::NetworkCache::directoryEntryType): Ditto.
        * Platform/win/ModuleWin.cpp:
        (WebKit::Module::platformFunctionPointer const): Cast a function pointer with reinterpret_cast<void*>().
        * UIProcess/DrawingAreaProxyImpl.cpp:
        (WebKit::DrawingAreaProxyImpl::DrawingMonitor::DrawingMonitor):
        Moved the initializer of m_webPage in order to be encluded by #if PLATFORM(GTK).
        * UIProcess/DrawingAreaProxyImpl.h: Ditto.
        * UIProcess/Launcher/win/ProcessLauncherWin.cpp:
        (WebKit::processName): Removed the duplicated 'const' type qualifier.
        * UIProcess/win/WebInspectorProxyWin.cpp:
        (WebKit::WebInspectorProxy::platformAttach): Removed an unused variable.
        (WebKit::WebInspectorProxy::platformDetach): Ditto.
        * UIProcess/win/WebPopupMenuProxyWin.cpp: Ditto.
        * UIProcess/win/WebView.cpp:
        (WebKit::WebView::paint): Ditto.
        (WebKit::WebPopupMenu::setUpPlatformData): Ditto.
        * UIProcess/win/WebPopupMenuProxyWin.h: Marked override methods with 'override'.
        * WebProcess/WebCoreSupport/curl/WebFrameNetworkingContext.h: Ditto.
        * WebProcess/WebCoreSupport/win/WebPopupMenuWin.cpp: Removed an unused variable.

2018-12-18  Wenson Hsieh  <wenson_hsieh@apple.com>

        [macOS] fast/forms/datalist/datalist-textinput-suggestions-order.html sometimes crashes after r239337
        https://bugs.webkit.org/show_bug.cgi?id=192836
        <rdar://problem/45321184>

        Reviewed by Tim Horton.

        r239337 exposed a subtle issue in the implementation of `-[WKDataListSuggestionsView updateWithInformation:]`,
        wherein we might end up recomputing information for table view cells at rows that no longer exist. This currently
        happens because we first set the datalist's `_suggestions`, then change the table view's frame, and then finally
        reload the table view; however, in the case where the number of suggestions decreased and the frame changed
        (which prompts AppKit to ask us again for table cell views), we'll attempt to access an out-of-bounds index in
        the `_suggestions` vector.

        To address this, we change our suggestions and immediately reload the table view before updating `NSTableView`'s
        frame, so that we only provide table view cells for rows that actually correspond to items in `_suggestions`.

        * UIProcess/mac/WebDataListSuggestionsDropdownMac.mm:
        (-[WKDataListSuggestionsView updateWithInformation:]):

2018-12-18  Jiewen Tan  <jiewen_tan@apple.com>

        [Mac] Layout Test http/wpt/webauthn/public-key-credential-create-success-hid.https.html and http/wpt/webauthn/public-key-credential-get-success-hid.https.html are flaky
        https://bugs.webkit.org/show_bug.cgi?id=192061

        Reviewed by Dewei Zhu.

        Part 4.

        Add some additional temporary logging info to determine if the time out value passed to the timer is right.
        Once the bug is determined and fixed, we should remove all logging added in this patch.

        * UIProcess/WebAuthentication/AuthenticatorManager.cpp:
        (WebKit::AuthenticatorManager::initTimeOutTimer):

2018-12-18  Sihui Liu  <sihui_liu@apple.com>

        Clean up IndexedDB files between tests
        https://bugs.webkit.org/show_bug.cgi?id=192796

        Reviewed by Geoffrey Garen.

        * UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
        (WKWebsiteDataStoreRemoveAllIndexedDatabasesSync):
        * UIProcess/API/C/WKWebsiteDataStoreRef.h:

2018-12-18  Vivek Seth  <v_seth@apple.com>

        HTTPS Upgrade: Scripts / preprocessing necessary to create new database in future
        https://bugs.webkit.org/show_bug.cgi?id=192612
        <rdar://problem/46651207>

        Reviewed by Andy Estes.

        * Configurations/WebKit.xcconfig:
        * DerivedSources.make:
        * Scripts/generate-https-upgrade-database.sh: Added.
        * WebKit.xcodeproj/project.pbxproj:

2018-12-18  Wenson Hsieh  <wenson_hsieh@apple.com>

        Unreviewed, fix the 32-bit watchOS build after r239314

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _zoomToFocusRect:selectionRect:insideFixed:fontSize:minimumScale:maximumScale:allowScaling:forceScroll:]):

2018-12-18  Alex Christensen  <achristensen@webkit.org>

        WKWebView has old URL while displaying SafeBrowsing interstitial, for link-click navigations
        https://bugs.webkit.org/show_bug.cgi?id=192675

        Reviewed by Geoffrey Garen.

        When a safe browsing warning is being shown, WKWebView.URL should be the unsafe website, not the safe website before it.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _showSafeBrowsingWarningWithTitle:warning:details:completionHandler:]):
        (-[WKWebView _showSafeBrowsingWarningWithURL:title:warning:details:completionHandler:]):
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        * UIProcess/Cocoa/SafeBrowsingWarningCocoa.mm:
        (WebKit::SafeBrowsingWarning::SafeBrowsingWarning):
        * UIProcess/SafeBrowsingWarning.h:
        (WebKit::SafeBrowsingWarning::create):
        (WebKit::SafeBrowsingWarning::url const):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::decidePolicyForNavigationAction):

2018-12-18  Chris Dumez  <cdumez@apple.com>

        Regression(r239182) SuspendedPage's process reuse for link navigation optimization sometimes broken
        https://bugs.webkit.org/show_bug.cgi?id=192772

        Reviewed by Antti Koivisto.

        With r239182, if the page in the previous process would fail to enter PageCache, we would destroy
        the corresponding SuspendedPageProxy, which would potentially terminate the process. This would
        regress performance when trying to navigate back in history to that page. This would also regress
        performance when link-navigating to the same domain as we would have previously reused the suspended
        page's process for such navigation.

        Address the issue by keeping the SuspendedPageProxy alive even if the WebPage fails to suspend.
        When trying to reuse a SuspendedPageProxy, if the page failed to suspend, reuse its process but
        not the suspended page itself.

        * UIProcess/SuspendedPageProxy.cpp:
        (WebKit::SuspendedPageProxy::~SuspendedPageProxy):
        (WebKit::SuspendedPageProxy::waitUntilReadyToUnsuspend):
        (WebKit::SuspendedPageProxy::unsuspend):
        (WebKit::SuspendedPageProxy::didSuspend):
        (WebKit::SuspendedPageProxy::didFailToSuspend):
        (WebKit::SuspendedPageProxy::loggingString const):
        * UIProcess/SuspendedPageProxy.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::swapToWebProcess):
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::processForNavigationInternal):

2018-12-17  Jiewen Tan  <jiewen_tan@apple.com>

        [Mac] Layout Test http/wpt/webauthn/public-key-credential-create-success-hid.https.html and http/wpt/webauthn/public-key-credential-get-success-hid.https.html are flaky
        https://bugs.webkit.org/show_bug.cgi?id=192061

        Reviewed by Dewei Zhu.

        Part 3.

        Add some additional temporary logging info to determine if the timer is working as expected.
        Once the bug is determined and fixed, we should remove all logging added in this patch.

        * UIProcess/WebAuthentication/AuthenticatorManager.cpp:
        (WebKit::AuthenticatorManager::respondReceived):
        (WebKit::AuthenticatorManager::initTimeOutTimer):
        (WebKit::AuthenticatorManager::timeOutTimerFired):
        * UIProcess/WebAuthentication/Mock/MockAuthenticatorManager.cpp:
        (WebKit::MockAuthenticatorManager::respondReceivedInternal):

2018-12-17  Saam barati  <sbarati@apple.com>

        Enable HTTP and HTTPS proxies on iOS and make it a property of the NSURLSession
        https://bugs.webkit.org/show_bug.cgi?id=192374
        <rdar://problem/46506286>

        Reviewed by Alex Christensen.

        This patch makes it so that we can use HTTP/HTTPS proxies on iOS as well.
        To enable on iOS, you can do something like:
        $ defaults write -g WebKit2HTTPProxy -string "http://localhost:8080"
        $ defaults write -g WebKit2HTTPSProxy -string "http://localhost:8080"
        
        This patch also changes the Proxy to be enabled on a per NSURLSession
        basis instead of a per process basis.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::initializeNetworkProcess):
        * NetworkProcess/NetworkSessionCreationParameters.cpp:
        (WebKit::NetworkSessionCreationParameters::privateSessionParameters):
        (WebKit::NetworkSessionCreationParameters::encode const):
        (WebKit::NetworkSessionCreationParameters::decode):
        * NetworkProcess/NetworkSessionCreationParameters.h:
        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (WebKit::proxyDictionary):
        (WebKit::NetworkSessionCocoa::NetworkSessionCocoa):
        * NetworkProcess/mac/NetworkProcessMac.mm:
        (WebKit::NetworkProcess::platformInitializeNetworkProcess):
        (WebKit::overrideSystemProxies): Deleted.
        * UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
        (-[WKWebsiteDataStore _initWithConfiguration:]):
        * UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h:
        * UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm:
        (-[_WKWebsiteDataStoreConfiguration httpProxy]):
        (-[_WKWebsiteDataStoreConfiguration setHTTPProxy:]):
        (-[_WKWebsiteDataStoreConfiguration httpsProxy]):
        (-[_WKWebsiteDataStoreConfiguration setHTTPSProxy:]):
        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        (WebKit::WebProcessPool::platformInitializeNetworkProcess):
        * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:
        (WebKit::WebsiteDataStore::parameters):
        * UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp:
        (WebKit::WebsiteDataStoreConfiguration::copy):
        * UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h:
        (WebKit::WebsiteDataStoreConfiguration::httpProxy const):
        (WebKit::WebsiteDataStoreConfiguration::setHTTPProxy):
        (WebKit::WebsiteDataStoreConfiguration::httpsProxy const):
        (WebKit::WebsiteDataStoreConfiguration::setHTTPSProxy):

2018-12-17  Wenson Hsieh  <wenson_hsieh@apple.com>

        Tap highlights should not be shown on iOSMac
        https://bugs.webkit.org/show_bug.cgi?id=192797
        <rdar://problem/46793995>

        Reviewed by Tim Horton.

        WKWebViews in iOSMac should avoid painting tap highlights, since tap highlights are not present in the rest of
        the macOS platform. Simply disable this functionality by bailing in `-[WKContentView _showTapHighlight]`.

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _showTapHighlight]):

2018-12-17  Wenson Hsieh  <wenson_hsieh@apple.com>

        Unreviewed, fix the iOSMac engineering build again

        After r239311, `WebProcessProxy::fullKeyboardAccessEnabled` in `WebProcessProxyIOS.mm` attempts to use
        `WKFullKeyboardAccessWatcher`, which is guarded by `ENABLE(FULL_KEYBOARD_ACCESS)`. However, on iOSMac,
        `ENABLE(FULL_KEYBOARD_ACCESS)` is 0. Fix the build by putting access to `WKFullKeyboardAccessWatcher` behind
        `ENABLE(FULL_KEYBOARD_ACCESS)`.

        * UIProcess/ios/WebProcessProxyIOS.mm:
        (WebKit::WebProcessProxy::fullKeyboardAccessEnabled):

2018-12-17  Wenson Hsieh  <wenson_hsieh@apple.com>

        Unreviewed, fix the iOSMac engineering build

        `generateRequestID()` is only invoked from code under `ENABLE(MEDIA_STREAM)`; move it under this guard to avoid
        an unused function warning.

        * UIProcess/UserMediaPermissionRequestManagerProxy.cpp:

2018-12-17  David Kilzer  <ddkilzer@apple.com>

        clang-tidy: Fix unnecessary object copy in CPUMonitor::setCPULimit()
        <https://webkit.org/b/192707>
        <rdar://problem/46734926>

        Reviewed by Daniel Bates.

        * WebProcess/cocoa/WebProcessCocoa.mm:
        (WebKit::WebProcess::updateCPUMonitorState):
        - Pass m_cpuLimit directly since getting its value causes an
          identical std::optional<double> to be created unnecessarily.

2018-12-17  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] Focusing a large editable element always scrolls to the top of the element
        https://bugs.webkit.org/show_bug.cgi?id=192745
        <rdar://problem/46758445>

        Reviewed by Tim Horton.

        Currently, when focusing form controls or editable elements, we try to scroll such that the focused element rect
        is centered within the visible area. In the case of very large focusable elements whose dimensions exceed the
        width or height of the visible area, we instead scroll such that the top left point of the element is at the top
        left corner of the visible area.

        However, this results in unnecessary scrolling if the top of the element is already near the top of the visible
        area. For WebKit2-based rich text editors that have an editable body element with a top content inset that
        contains additional content, this means we will always scroll the additional content away when focusing the
        editable body.

        To avoid this behavior, adjust focused element zooming logic for editable elements that are too large to be
        centered in the visible area, such that we only scroll the top left position of the focused element to the top
        half or top right of the visible area, respectively. This reduces the amount of scrolling when focusing large
        editable elements, while still making it clear which element is being focused.

        * Platform/spi/ios/UIKitSPI.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _zoomToFocusRect:selectionRect:insideFixed:fontSize:minimumScale:maximumScale:allowScaling:forceScroll:]):

        Make some small adjustments to improve the readability of this method by using `clampTo` instead of clamping
        values by comparing and setting values.

        Also, fix an existing bug wherein focusable elements that are meant to be centered within the visible area are
        currently offset by half the difference between the bottom inset amount and the top inset amount, in the case
        where the `_obscuredInsets` SPI is used to specify content insets for the web view (i.e., MobileSafari).

        * UIProcess/API/Cocoa/WKWebViewInternal.h:

        Make a couple of arguments `const FloatRect&` instead of just `FloatRect`.

2018-12-17  Ryosuke Niwa  <rniwa@webkit.org>

        offsetLeft and offsetParent should adjust across shadow boundaries
        https://bugs.webkit.org/show_bug.cgi?id=157437
        <rdar://problem/26154021>

        Reviewed by Simon Fraser.

        Use *forBindings variants of offsetLeft, offsetTop, and offsetParent.

        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMElementGtk.cpp:
        (webkit_dom_element_get_offset_left):
        (webkit_dom_element_get_offset_top):
        (webkit_dom_element_get_offset_parent):

2018-12-17  Chris Fleizach  <cfleizach@apple.com>

        Some builds are broken after r239262
        https://bugs.webkit.org/show_bug.cgi?id=192777

        Reviewed by Simon Fraser.

        * Platform/spi/ios/AccessibilitySupportSPI.h:
        * UIProcess/Cocoa/WKFullKeyboardAccessWatcher.h:
        * UIProcess/Cocoa/WKFullKeyboardAccessWatcher.mm:
        (platformIsFullKeyboardAccessEnabled):
        (-[WKFullKeyboardAccessWatcher init]):
        Fix the build by being more clear about when it's OK to use AccessibilitySupport.

2018-12-17  Chris Dumez  <cdumez@apple.com>

        Allow passing nil as session state to [WKWebView _restoreSessionState:]
        https://bugs.webkit.org/show_bug.cgi?id=192789
        <rdar://problem/46755277>

        Reviewed by Alex Christensen.

        Allow passing nil as session state to [WKWebView _restoreSessionState:] instead of crashing.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _restoreSessionState:andNavigate:]):

2018-12-17  Alex Christensen  <achristensen@webkit.org>

        Fix occasional null-dereference crash in WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrame
        https://bugs.webkit.org/show_bug.cgi?id=192744
        <rdar://problem/45842668>

        Reviewed by Chris Dumez.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrame):
        Things happen.  Navigations can be null.  If they are, we shouldn't dereference pointers to them.

2018-12-17  Chris Dumez  <cdumez@apple.com>

        Unreviewed, revert recent CrashReporterClient build fixes as they are no longer needed.

        * Platform/cocoa/WKCrashReporter.mm:

2018-12-17  Suresh Koppisetty  <skoppisettyt@apple.com>

        Rollout r235411
        https://bugs.webkit.org/show_bug.cgi?id=192778
        <rdar://46789485>

        Disabling access to CoreServices is causing a performance
        regression in process launch time.  See <rdar://46141878>

        Reviewed by Alex Christensen.

        * WebProcess/com.apple.WebProcess.sb.in:

2018-12-17  Zan Dobersek  <zdobersek@igalia.com>

        Unreviewed WPE build fix after r239277.

        * UIProcess/API/C/WKContext.cpp:
        (WKContextClearCurrentModifierStateForTesting):
        Use the WebKit:: namespace specifier as it is used across this file.

2018-12-17  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r239265 and r239274.
        https://bugs.webkit.org/show_bug.cgi?id=192765

        unorm_normalize is deprecated, and broke an internal build
        (Requested by Truitt on #webkit).

        Reverted changesets:

        "[GTK][WPE] Need a function to convert internal URI to display
        ("pretty") URI"
        https://bugs.webkit.org/show_bug.cgi?id=174816
        https://trac.webkit.org/changeset/239265

        "Fix the Apple Internal Mac build with a newer SDK"
        https://trac.webkit.org/changeset/239274

2018-12-17  Daniel Bates  <dabates@apple.com>

        Implement UIScriptController::toggleCapsLock() for iOS
        https://bugs.webkit.org/show_bug.cgi?id=191815

        Reviewed by Andy Estes.

        Add test infrastructure to clear the current modifier state. We will use this to ensure that
        the caps lock state does not persist between tests.

        * UIProcess/API/C/WKContext.cpp:
        (WKContextClearCurrentModifierStateForTesting): Added.
        * UIProcess/API/C/WKContextPrivate.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::clearCurrentModifierStateForTesting): Added.
        * UIProcess/WebProcessPool.h:
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::clearCurrentModifierStateForTesting): Added.
        * WebProcess/WebProcess.h:
        * WebProcess/WebProcess.messages.in:

2018-12-17  David Kilzer  <ddkilzer@apple.com>

        REGRESSION (r239262): Fix broken builds prior to Mojave
        <https://bugs.webkit.org/show_bug.cgi?id=192373>
        <rdar://problem/46462670>

        * UIProcess/Cocoa/WKFullKeyboardAccessWatcher.mm:
        Wrap header in ENABLE(ACCESSIBILITY_EVENTS) to fix the build.

2018-12-17  Daniel Bates  <dabates@apple.com>

        [iOS] Remove -[WebEvent initWithKeyEventType:...:characterSet:]
        https://bugs.webkit.org/show_bug.cgi?id=192633

        Reviewed by Wenson Hsieh.

        Update code to use the modern initializer.

        * UIProcess/ios/WKWebEvent.mm:
        (-[WKWebEvent initWithEvent:]):

2018-12-17  Matt Lewis  <jlewis3@apple.com>

        Unreviewed, rolling out r239254.

        This broke the Windows 10 Debug build

        Reverted changeset:

        "Replace many uses of String::format with more type-safe
        alternatives"
        https://bugs.webkit.org/show_bug.cgi?id=192742
        https://trac.webkit.org/changeset/239254

2018-12-17  David Kilzer  <ddkilzer@apple.com>

        clang-tidy: loop variable is copied but only used as const reference in WebCore, WebKit, Tools
        <https://webkit.org/b/192751>
        <rdar://problem/46771623>

        Reviewed by Daniel Bates.

        Change loop variables to const references to avoid unnecessary
        copies.

        * NetworkProcess/ServiceWorker/WebSWServerConnection.cpp:
        (WebKit::WebSWServerConnection::~WebSWServerConnection):
        * Shared/RemoteLayerTree/RemoteLayerTreeTransaction.mm:
        (WebKit::RemoteLayerTreeTransaction::encode const):
        * UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
        (WebKit::toNSErrors):
        * UIProcess/Automation/WebAutomationSession.cpp:
        (WebKit::WebAutomationSession::setFilesToSelectForFileUpload):
        (WebKit::WebAutomationSession::performKeyboardInteractions):
        (WebKit::WebAutomationSession::performInteractionSequence):
        * UIProcess/Plugins/PluginProcessManager.cpp:
        (WebKit::PluginProcessManager::getPluginProcess):
        * UIProcess/ResourceLoadStatisticsMemoryStore.cpp:
        (WebKit::ResourceLoadStatisticsMemoryStore::removeDataRecords):
        (WebKit::ResourceLoadStatisticsMemoryStore::shouldRemoveDataRecords const):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::serializedAttachmentDataForIdentifiers):
        * UIProcess/WebStorage/LocalStorageDatabaseTracker.cpp:
        (WebKit::LocalStorageDatabaseTracker::deleteAllDatabases):
        (WebKit::LocalStorageDatabaseTracker::origins const):
        (WebKit::LocalStorageDatabaseTracker::originDetails):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::m_shouldAttachDrawingAreaOnPageTransition):
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
        (WebKit::TiledCoreAnimationDrawingArea::didUpdateActivityStateTimerFired):

2018-12-17  Ms2ger  <Ms2ger@igalia.com>

        [GTK][WPE] Need a function to convert internal URI to display ("pretty") URI
        https://bugs.webkit.org/show_bug.cgi?id=174816

        Reviewed by Michael Catanzaro.

        Add webkit_uri_for_display for GTK and WPE.

        * PlatformGTK.cmake:
        * PlatformWPE.cmake:
        * SourcesGTK.txt:
        * SourcesWPE.txt:
        * UIProcess/API/glib/WebKitURIUtilities.cpp: Added.
        (webkit_uri_for_display):
        * UIProcess/API/gtk/WebKitURIUtilities.h: Added.
        * UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt:
        * UIProcess/API/gtk/docs/webkit2gtk-docs.sgml:
        * UIProcess/API/gtk/webkit2.h:
        * UIProcess/API/wpe/WebKitURIUtilities.h: Added.
        * UIProcess/API/wpe/docs/wpe-0.1-sections.txt:
        * UIProcess/API/wpe/docs/wpe-docs.sgml:
        * UIProcess/API/wpe/webkit.h:

2018-12-17  Carlos Garcia Campos  <cgarcia@igalia.com>

        [WPE] Add API to notify about frame displayed view backend callback
        https://bugs.webkit.org/show_bug.cgi?id=192224

        Reviewed by Michael Catanzaro.

        Add API to add a callback to the view to be called when the view backend notifies that a frame has been
        displayed.

        * UIProcess/API/glib/WebKitWebView.cpp:
        (FrameDisplayedCallback::FrameDisplayedCallback):
        (FrameDisplayedCallback::~FrameDisplayedCallback):
        (webkit_web_view_add_frame_displayed_callback):
        (webkit_web_view_remove_frame_displayed_callback):
        * UIProcess/API/wpe/WebKitWebView.h:
        * UIProcess/API/wpe/docs/wpe-0.1-sections.txt:

2018-12-16  Chris Fleizach  <cfleizach@apple.com>

        AX: Support keyboard access preference for iOS in WebKit
        https://bugs.webkit.org/show_bug.cgi?id=192373
        <rdar://problem/46462670>

        Reviewed by Tim Horton.

        * Platform/spi/ios/AccessibilitySupportSPI.h:
        * PlatformMac.cmake:
        * SourcesCocoa.txt:
        * UIProcess/Cocoa/WKFullKeyboardAccessWatcher.h: Added.
        * UIProcess/Cocoa/WKFullKeyboardAccessWatcher.mm: Added.
        (platformIsFullKeyboardAccessEnabled):
        (-[WKFullKeyboardAccessWatcher notifyAllProcessPools]):
        (-[WKFullKeyboardAccessWatcher retrieveKeyboardUIModeFromPreferences:]):
        (-[WKFullKeyboardAccessWatcher init]):
        (+[WKFullKeyboardAccessWatcher fullKeyboardAccessEnabled]):
        * UIProcess/ios/WebProcessProxyIOS.mm:
        (WebKit::WebProcessProxy::fullKeyboardAccessEnabled):
        * UIProcess/mac/WKFullKeyboardAccessWatcher.h: Removed.
        * UIProcess/mac/WKFullKeyboardAccessWatcher.mm: Removed.
        * WebKit.xcodeproj/project.pbxproj:

2018-12-16  Adrian Perez de Castro  <aperez@igalia.com>

        Unreviewed follow up after r239260
        https://bugs.webkit.org/show_bug.cgi?id=192714
        <rdar://problem/46762407>

        * Platform/win/SharedMemoryWin.cpp:
        (WebKit::SharedMemory::allocate): Use PAGE_READWRITE directly instead
        of going through the protectAttribute() function, which is removed
        because it is now unused.

2018-12-16  Adrian Perez de Castro  <aperez@igalia.com>

        Unify SharedMemory factory functions
        https://bugs.webkit.org/show_bug.cgi?id=192714

        Reviewed by Darin Adler.

        This unifies SharedMemory so in the following way, across platforms:

        - SharedMemory::create() is removed, to avoid ambiguity.
        - SharedMemory::allocate() always allocates a new block of shared memory.
        - SharedMemory::wrapMap() always creates a SharedMemory object which refers to an
          existing region of memory resulting from memory-mapping a file.

        * NetworkProcess/cache/NetworkCacheDataCocoa.mm:
        (WebKit::NetworkCache::Data::tryCreateSharedMemory const): Use SharedMemory::wrapMap().
        * Platform/SharedMemory.h: Remove the definition of SharedMemory::create(), and make
        SharedMemory::wrapMap() available on OS(DARWIN) as well.
        * Platform/cocoa/SharedMemoryCocoa.cpp:
        (WebKit::SharedMemory::wrapMap): Renamed from ::create().
        * Platform/unix/SharedMemoryUnix.cpp:
        (WebKit::SharedMemory::allocate): Renamed from ::create().
        * Platform/win/SharedMemoryWin.cpp:
        (WebKit::SharedMemory::allocate): Renamed from ::create()
        * UIProcess/API/APIContentRuleListStore.cpp:
        (API::createExtension): Use NetworkCache::Data::tryCreateSharedMemory() instead of
        SharedMemory::create().

2018-12-15  Chris Fleizach  <cfleizach@apple.com>

        [meta][WebKit] Remove using namespace WebCore and WebKit in the global scope for unified source builds
        https://bugs.webkit.org/show_bug.cgi?id=192449
        <rdar://problem/46595508>

        Reviewed by Darin Adler.

        Part 7: Files in UIProcess/API

        * UIProcess/API/APIContentRuleListStore.cpp:
        * UIProcess/API/APIHitTestResult.cpp:
        * UIProcess/API/APINavigation.cpp:
        * UIProcess/API/APIOpenPanelParameters.cpp:
        * UIProcess/API/APIPageConfiguration.cpp:
        * UIProcess/API/C/WKApplicationCacheManager.cpp:
        (WKApplicationCacheManagerGetTypeID):
        (WKApplicationCacheManagerGetApplicationCacheOrigins):
        (WKApplicationCacheManagerDeleteEntriesForOrigin):
        (WKApplicationCacheManagerDeleteAllEntries):
        * UIProcess/API/C/WKAuthenticationDecisionListener.cpp:
        (WKAuthenticationDecisionListenerGetTypeID):
        (WKAuthenticationDecisionListenerUseCredential):
        (WKAuthenticationDecisionListenerCancel):
        (WKAuthenticationDecisionListenerRejectProtectionSpaceAndContinue):
        * UIProcess/API/C/WKBackForwardListItemRef.cpp:
        (WKBackForwardListItemGetTypeID):
        (WKBackForwardListItemCopyURL):
        (WKBackForwardListItemCopyTitle):
        (WKBackForwardListItemCopyOriginalURL):
        * UIProcess/API/C/WKContext.cpp:
        (WKContextGetTypeID):
        (WKContextCreate):
        (WKContextCreateWithInjectedBundlePath):
        (WKContextCreateWithConfiguration):
        (WKContextSetClient):
        (WKContextSetInjectedBundleClient):
        (WKContextSetHistoryClient):
        (WKContextSetDownloadClient):
        (WKContextSetConnectionClient):
        (WKContextDownloadURLRequest):
        (WKContextResumeDownload):
        (WKContextSetInitializationUserDataForInjectedBundle):
        (WKContextPostMessageToInjectedBundle):
        (WKContextGetGlobalStatistics):
        (WKContextAddVisitedLink):
        (WKContextClearVisitedLinks):
        (WKContextSetCacheModel):
        (WKContextGetCacheModel):
        (WKContextSetMaximumNumberOfProcesses):
        (WKContextGetMaximumNumberOfProcesses):
        (WKContextSetAlwaysUsesComplexTextCodePath):
        (WKContextSetShouldUseFontSmoothing):
        (WKContextSetAdditionalPluginsDirectory):
        (WKContextRefreshPlugIns):
        (WKContextRegisterURLSchemeAsEmptyDocument):
        (WKContextRegisterURLSchemeAsSecure):
        (WKContextRegisterURLSchemeAsBypassingContentSecurityPolicy):
        (WKContextRegisterURLSchemeAsCachePartitioned):
        (WKContextRegisterURLSchemeAsCanDisplayOnlyIfCanRequest):
        (WKContextSetDomainRelaxationForbiddenForURLScheme):
        (WKContextSetCanHandleHTTPSServerTrustEvaluation):
        (WKContextSetPrewarmsProcessesAutomatically):
        (WKContextSetCustomWebContentServiceBundleIdentifier):
        (WKContextSetDiskCacheSpeculativeValidationEnabled):
        (WKContextPreconnectToServer):
        (WKContextGetCookieManager):
        (WKContextGetWebsiteDataStore):
        (WKContextGetGeolocationManager):
        (WKContextGetMediaSessionFocusManager):
        (WKContextGetNotificationManager):
        (WKContextStartMemorySampler):
        (WKContextStopMemorySampler):
        (WKContextAllowSpecificHTTPSCertificateForHost):
        (WKContextDisableProcessTermination):
        (WKContextEnableProcessTermination):
        (WKContextSetHTTPPipeliningEnabled):
        (WKContextWarmInitialProcess):
        (WKContextGetStatistics):
        (WKContextGetStatisticsWithOptions):
        (WKContextJavaScriptConfigurationFileEnabled):
        (WKContextSetJavaScriptConfigurationFileEnabled):
        (WKContextGarbageCollectJavaScriptObjects):
        (WKContextSetJavaScriptGarbageCollectorTimerEnabled):
        (WKContextUseTestingNetworkSession):
        (WKContextSetAllowsAnySSLCertificateForWebSocketTesting):
        (WKContextSetAllowsAnySSLCertificateForServiceWorkerTesting):
        (WKContextClearCachedCredentials):
        (WKContextCopyPlugInAutoStartOriginHashes):
        (WKContextSetPlugInAutoStartOriginHashes):
        (WKContextSetPlugInAutoStartOriginsFilteringOutEntriesAddedAfterTime):
        (WKContextSetPlugInAutoStartOrigins):
        (WKContextSetInvalidMessageFunction):
        (WKContextSetMemoryCacheDisabled):
        (WKContextSetFontWhitelist):
        (WKContextTerminateNetworkProcess):
        (WKContextTerminateServiceWorkerProcess):
        (WKContextGetNetworkProcessIdentifier):
        (WKContextAddSupportedPlugin):
        (WKContextClearSupportedPlugins):
        (WKContextSetIDBPerOriginQuota):
        * UIProcess/API/C/WKPage.cpp:
        (WKPageLoadURLWithShouldOpenExternalURLsPolicy):
        (WKPageLoadURLWithUserData):
        (WKPageLoadURLRequestWithUserData):
        (WKPageSetPaginationMode):
        (WKPageGetPaginationMode):
        (WKPageSetPageLoaderClient):
        (WKPageSetPagePolicyClient):
        * UIProcess/API/C/cg/WKIconDatabaseCG.cpp:

2018-12-15  Darin Adler  <darin@apple.com>

        Use warning-ignoring macros more consistently and simply
        https://bugs.webkit.org/show_bug.cgi?id=192743

        Reviewed by Mark Lam.

        * UIProcess/ios/WKDrawingView.mm:
        (-[WKDrawingView initWithEmbeddedViewID:webPageProxy:]):
        Use ALLOW_DEPRECATED_DECLARATIONS_BEGIN/END.
        * UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm:
        (-[WKFullScreenWindowController _EVOrganizationName]): Ditto.

        * WebProcess/WebCoreSupport/WebAlternativeTextClient.h: Use
        IGNORE_WARNINGS_BEGIN/END instead of IGNORE_CLANG_WARNINGS_BEGIN/END
        because there is no need to accomodate non-clang compilers here.
        Also use #pragma once, add a missing "explicit", and fix conditionals.

2018-12-15  Darin Adler  <darin@apple.com>

        Replace many uses of String::format with more type-safe alternatives
        https://bugs.webkit.org/show_bug.cgi?id=192742

        Reviewed by Mark Lam.

        * Shared/WebMemorySampler.cpp:
        (WebKit::WebMemorySampler::writeHeaders): Use makeString.

        * UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm:
        (WebKit::LocalAuthenticator::makeCredential): Use string concatentation.

        * UIProcess/WebInspectorUtilities.cpp:
        (WebKit::inspectorPageGroupIdentifierForPage): Use makeString.
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::processDidFinishLaunching): Ditto.
        (WebKit::WebProcessPool::startMemorySampler): Ditto.

2018-12-14  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, fix the build with recent SDKs.

        * UIProcess/ios/WKDrawingView.mm:
        (-[WKDrawingView initWithEmbeddedViewID:webPageProxy:]):

2018-12-14  Jiewen Tan  <jiewen_tan@apple.com>

        [Mac] Layout Test http/wpt/webauthn/public-key-credential-create-success-hid.https.html and http/wpt/webauthn/public-key-credential-get-success-hid.https.html are flaky
        https://bugs.webkit.org/show_bug.cgi?id=192061

        Reviewed by Dewei Zhu.

        Part 2.

        Add some additional temporary logging info. Since the failure cannot be reproduced easily by human, we have to
        rely on the test infrastructure to reporoduce it. Once the bug is determined and fixed, we should remove all
        logging added in this patch.

        * UIProcess/WebAuthentication/Cocoa/HidService.mm:
        (WebKit::HidService::deviceAdded):
        * UIProcess/WebAuthentication/fido/CtapHidAuthenticator.cpp:
        (WebKit::CtapHidAuthenticator::makeCredential):
        (WebKit::CtapHidAuthenticator::getAssertion):
        * UIProcess/WebAuthentication/fido/CtapHidDriver.cpp:
        (WebKit::CtapHidDriver::Worker::write):
        (WebKit::CtapHidDriver::Worker::read):
        (WebKit::CtapHidDriver::Worker::returnMessage):
        (WebKit::CtapHidDriver::transact):
        (WebKit::CtapHidDriver::continueAfterChannelAllocated):
        (WebKit::CtapHidDriver::continueAfterResponseReceived):

2018-12-14  Adrian Perez de Castro  <aperez@igalia.com>

        [GTK] Unreviewed build fix.

        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: Add missing WebPolicyAction.h include.

2018-12-14  Chris Dumez  <cdumez@apple.com>

        Unreviewed, fix assertion failure in API test after r239210.

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::createDocumentLoader):

2018-12-14  Adrian Perez de Castro  <aperez@igalia.com>

        [SOUP] Unreviewed build fix after r239219

        * NetworkProcess/soup/NetworkDataTaskSoup.cpp:
        (WebKit::NetworkDataTaskSoup::dispatchDidReceiveResponse): Remove
        handling of PolicyAction::Suspend, which is no longer available.

2018-12-14  Joseph Pecoraro  <pecoraro@apple.com>

        Unreviewed, apply post-landing review comments after r239221.

        * UIProcess/WebPageDebuggable.cpp:
        (WebKit::WebPageDebuggable::url const):
        Switch to WTF::blankURL() instead of using "about:blank" directly.

2018-12-14  Chris Dumez  <cdumez@apple.com>

        [PSON] Process-swapping on a loadHTMLString causes duplicate decidePolicyForNavigationAction delegate calls
        https://bugs.webkit.org/show_bug.cgi?id=192704

        Reviewed by Geoffrey Garen.

        Process-swapping on a loadHTMLString causes duplicate decidePolicyForNavigationAction delegate calls. This
        is because we were failing to pass the ShouldTreatAsContinuingLoad flag to the WebContent process when
        doing a LoadData.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::loadData):
        (WebKit::WebPageProxy::loadDataWithNavigation):
        (WebKit::WebPageProxy::continueNavigationInNewProcess):
        * UIProcess/WebPageProxy.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::loadDataImpl):
        (WebKit::WebPage::loadData):
        (WebKit::WebPage::loadAlternateHTML):
        * WebProcess/WebPage/WebPage.h:

2018-12-14  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Prefer "about:blank" instead of an empty string for WebPageDebuggable url
        https://bugs.webkit.org/show_bug.cgi?id=192691
        <rdar://problem/46719798>

        Reviewed by Darin Adler.

        * UIProcess/WebPageDebuggable.cpp:
        (WebKit::WebPageDebuggable::url const):
        Instead of an empty string, return "about:blank" in bail cases.
        When inspecting the page that matches the contents.

2018-12-14  Chris Dumez  <cdumez@apple.com>

        [PSON] Stop exposing PolicyAction::Suspend to WebCore
        https://bugs.webkit.org/show_bug.cgi?id=192701

        Reviewed by Brady Eidson.

        Introduce a new WebPolicyAction enum that is used at WebKit2 layer and augments
        WebCore::PolicyAction with a "Suspend" value.

        * NetworkProcess/NetworkDataTaskBlob.cpp:
        (WebKit::NetworkDataTaskBlob::dispatchDidReceiveResponse):
        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (toNSURLSessionResponseDisposition):
        * Shared/WebPolicyAction.h: Added.
        * UIProcess/WebFramePolicyListenerProxy.cpp:
        (WebKit::WebFramePolicyListenerProxy::didReceiveSafeBrowsingResults):
        (WebKit::WebFramePolicyListenerProxy::use):
        (WebKit::WebFramePolicyListenerProxy::download):
        (WebKit::WebFramePolicyListenerProxy::ignore):
        * UIProcess/WebFramePolicyListenerProxy.h:
        * UIProcess/WebFrameProxy.cpp:
        (WebKit::WebFrameProxy::setUpPolicyListenerProxy):
        * UIProcess/WebFrameProxy.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::receivedNavigationPolicyDecision):
        (WebKit::WebPageProxy::receivedPolicyDecision):
        (WebKit::WebPageProxy::decidePolicyForNavigationAction):
        (WebKit::WebPageProxy::decidePolicyForNavigationActionSync):
        (WebKit::WebPageProxy::decidePolicyForNewWindowAction):
        (WebKit::WebPageProxy::decidePolicyForResponse):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForResponse):
        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
        * WebProcess/WebPage/WebFrame.cpp:
        (WebKit::toPolicyAction):
        (WebKit::WebFrame::didReceivePolicyDecision):
        * WebProcess/WebPage/WebFrame.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::didReceivePolicyDecision):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:

2018-12-14  David Quesada  <david_quesada@apple.com>

        Remove a global 'using namespace WebKit' in WebViewImpl.mm
        https://bugs.webkit.org/show_bug.cgi?id=192690

        Reviewed by Tim Horton.

        * UIProcess/Cocoa/WebViewImpl.mm:
        (-[WKTextListTouchBarViewController initWithWebViewImpl:]):
        (-[WKTextListTouchBarViewController _selectList:]):
        (-[WKTextListTouchBarViewController setCurrentListType:]):
        (-[WKTextTouchBarItemController initWithWebViewImpl:]):

2018-12-14  Chris Dumez  <cdumez@apple.com>

        [PSON] WebsitePolicies are lost on process-swap
        https://bugs.webkit.org/show_bug.cgi?id=192694
        <rdar://problem/46715748>

        Reviewed by Brady Eidson.

        In case of process-swap on navigation, instead of sending the websitePolicies to the old
        process, send them to the new process as we trigger the navigation. We tell the new process
        that it is continuing a load and it will therefore not re-trigger a decidePolicyForNavigationAction.

        * Shared/LoadParameters.cpp:
        (WebKit::LoadParameters::encode const):
        (WebKit::LoadParameters::decode):
        * Shared/LoadParameters.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::reattachToWebProcessForReload):
        (WebKit::WebPageProxy::reattachToWebProcessWithItem):
        (WebKit::WebPageProxy::loadRequestWithNavigation):
        (WebKit::WebPageProxy::loadDataWithNavigation):
        (WebKit::WebPageProxy::goToBackForwardItem):
        (WebKit::WebPageProxy::receivedNavigationPolicyDecision):
        (WebKit::WebPageProxy::continueNavigationInNewProcess):
        * UIProcess/WebPageProxy.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::loadRequest):
        (WebKit::WebPage::loadDataImpl):
        (WebKit::WebPage::loadData):
        (WebKit::WebPage::loadAlternateHTML):
        (WebKit::WebPage::goToBackForwardItem):
        (WebKit::WebPage::createDocumentLoader):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:

2018-12-14  Patrick Griffis  <pgriffis@igalia.com>

        [GTK][WPE] Fix forwarding webkit socket to flatpak sandbox
        https://bugs.webkit.org/show_bug.cgi?id=192622

        Reviewed by Michael Catanzaro.

        This fixes running with the sandbox enabled in Flatpak.

        * UIProcess/Launcher/glib/FlatpakLauncher.cpp:
        (WebKit::flatpakSpawn):
        * UIProcess/Launcher/glib/FlatpakLauncher.h:
        * UIProcess/Launcher/glib/ProcessLauncherGLib.cpp:
        (WebKit::ProcessLauncher::launchProcess):

2018-12-14  Carlos Garcia Campos  <cgarcia@igalia.com>

        [WPE] Use new view state API from libwpe
        https://bugs.webkit.org/show_bug.cgi?id=191906

        Reviewed by Žan Doberšek.

        Remove WKViewSetViewState from the C API.

        * UIProcess/API/C/wpe/WKAPICastWPE.h:
        * UIProcess/API/C/wpe/WKView.cpp:
        * UIProcess/API/C/wpe/WKView.h:
        * UIProcess/API/wpe/WPEView.cpp:
        (WKWPE::View::View): Add implementation for activity_state_changed vfunc of the view backend client.):
        (WKWPE::View::setViewState): Remove the default flags.
        * UIProcess/API/wpe/WPEView.h:
        (WKWPE::View::setViewState const): Make it private.

2018-12-13  Joseph Pecoraro  <pecoraro@apple.com>

        [iOS] Web Inspector: Occasional UIProcess crashes under WebPageProxy::showInspectorIndication
        https://bugs.webkit.org/show_bug.cgi?id=192689
        <rdar://problem/46323610>

        Reviewed by Simon Fraser.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::close):
        * UIProcess/WebPageProxy.h:
        Don't wait until ~WebPageProxy to destroy the WebPageProxyDebuggable
        which broadcasts it as a remote inspector target. Terminate this
        as soon as the WebPageProxy closes and becomes invalid.

2018-12-13  Chris Dumez  <cdumez@apple.com>

        Unreviewed build fix for tvOS.

        * Platform/cocoa/WKCrashReporter.mm:

2018-12-13  Chris Dumez  <cdumez@apple.com>

        Unreviewed build fix for tvOS.

        * Platform/cocoa/WKCrashReporter.mm:

2018-12-13  Chris Dumez  <cdumez@apple.com>

        [PSON] We should not need to navigate to 'about:blank' to suspend pages
        https://bugs.webkit.org/show_bug.cgi?id=192668
        <rdar://problem/46701466>

        Reviewed by Alex Christensen.

        To support PageCache when process-swap on cross-site navigation is enabled,
        we've been navigating the previous process to 'about:blank' when swapping.
        This would trigger PageCaching of the page in the old process. While
        convenient, this design has led to a lot of bugs because we did not really
        want a navigation to happen in the old process.

        To address the issue, when a WebPage is asked to suspend (for process-swap),
        we now attempt to add it to PageCache and save it on the current HistoryItem,
        *without* triggering any navigation. Any pending navigation gets cancelled
        and we just suspend in place.

        Later on, when we want to go back to this HistoryItem, we simply leverage the
        existing WebPage::goToBackForwardItem() code path. The only subtlety is that
        we're actually asking the WebPage to load a HistoryItem that is the current
        one in the History. I had to tweak a some logic / assertions to support this
        as this is not something we usually do. However, it actually works with very
        little changes and successfully restores the PageCache entry on the current
        HistoryItem.

        There is no expected overall behavior change and ProcessSwap API tests (which
        cover PageCache) still pass. This is merely a simpler design because it avoids
        navigating to about:blank.

        * UIProcess/SuspendedPageProxy.cpp:
        (WebKit::SuspendedPageProxy::didSuspend):
        (WebKit::SuspendedPageProxy::didReceiveMessage):
        * UIProcess/SuspendedPageProxy.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didSuspendAfterProcessSwap):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForResponse):
        * WebProcess/WebPage/WebDocumentLoader.cpp:
        (WebKit::WebDocumentLoader::setNavigationID):
        * WebProcess/WebPage/WebFrame.cpp:
        (WebKit::WebFrame::didReceivePolicyDecision):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::suspendForProcessSwap):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/cocoa/WebProcessCocoa.mm:
        (WebKit::origin):

2018-12-13  Per Arne Vollan  <pvollan@apple.com>

        [macOS] Remove with-report from 3 services that are currently needed on macOS
        https://bugs.webkit.org/show_bug.cgi?id=192593
        <rdar://problem/46604752>

        Reviewed by Brent Fulgham.

        * WebProcess/com.apple.WebProcess.sb.in:

2018-12-13  Youenn Fablet  <youenn@apple.com>

        On page close, WebPage::m_userMediaPermissionRequestManager is nullified too early
        https://bugs.webkit.org/show_bug.cgi?id=192657

        Reviewed by Eric Carlson.

        Instead of nullifying the manager, make it a UniqueRef and clear it on closing the page.
        This ensures we revoke the sandbox extensions as early as possible and keep the manager lifetime simple.

        * WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp:
        (WebKit::UserMediaPermissionRequestManager::~UserMediaPermissionRequestManager):
        (WebKit::UserMediaPermissionRequestManager::clear):
        * WebProcess/MediaStream/UserMediaPermissionRequestManager.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::close):
        * WebProcess/WebPage/WebPage.h:
        (WebKit::WebPage::userMediaPermissionRequestManager):

2018-12-13  Chris Fleizach  <cfleizach@apple.com>

        [meta][WebKit] Remove using namespace WebCore and WebKit in the global scope for unified source builds
        https://bugs.webkit.org/show_bug.cgi?id=192449
        <rdar://problem/46595508>

        Reviewed by Darin Adler.

        Part 6: Files in plugin process and UI process.

        * PluginProcess/PluginControllerProxy.cpp:
        * PluginProcess/PluginProcess.cpp:
        * PluginProcess/WebProcessConnection.cpp:
        * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeHostIOS.mm:
        * UIProcess/WebStorage/LocalStorageDatabase.cpp:
        * UIProcess/mac/WebPageProxyMac.mm:

2018-12-13  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] Calculate width or height when constraints contain only the other
        https://bugs.webkit.org/show_bug.cgi?id=192632
        <rdar://problem/46665734>

        Reviewed by Youenn Fablet.

        * UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
        (WebKit::UserMediaCaptureManagerProxy::SourceProxy::remoteVideoSampleAvailable): Deleted,
        replaced with videoSampleAvailable.

        * WebProcess/cocoa/UserMediaCaptureManager.cpp:
        (WebKit::UserMediaCaptureManager::Source::remoteVideoSampleAvailable): Use original frame
        size if necessary when calculating new frame size.

2018-12-12  Chris Fleizach  <cfleizach@apple.com>

        [meta][WebKit] Remove using namespace WebCore and WebKit in the global scope for unified source builds
        https://bugs.webkit.org/show_bug.cgi?id=192449
        <rdar://problem/46595508>

        Reviewed by Darin Adler.

        Part 5: Files in WebProcess folder.

        * WebProcess/Cache/WebCacheStorageConnection.cpp:
        * WebProcess/WebPage/RemoteLayerTree/PlatformCAAnimationRemote.mm:
        (mediaTimeToCurrentTime):
        (-[WKAnimationDelegate initWithLayerID:layerTreeHost:]):
        * WebProcess/WebPage/mac/WKAccessibilityWebPageObjectMac.mm:
        (-[WKAccessibilityWebPageObject accessibilityHitTest:]):

2018-12-12  Ross Kirsling  <ross.kirsling@sony.com>

        [MSVC] Unreviewed build fix for r239080.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didFailToSuspendAfterProcessSwap):

2018-12-12  Chris Fleizach  <cfleizach@apple.com>

        [meta][WebKit] Remove using namespace WebCore and WebKit in the global scope for unified source builds
        https://bugs.webkit.org/show_bug.cgi?id=192449
        <rdar://problem/46595508>

        Reviewed by Darin Adler.

        Part 4: Handling NetworkProcess folder.

        * NetworkProcess/Cookies/mac/WebCookieManagerMac.mm:
        * NetworkProcess/IndexedDB/WebIDBConnectionToClient.cpp:
        * NetworkProcess/ServiceWorker/WebSWServerConnection.cpp:
        * NetworkProcess/ServiceWorker/WebSWServerToContextConnection.cpp:
        * NetworkProcess/ios/NetworkProcessIOS.mm:
        * NetworkProcess/mac/NetworkProcessMac.mm:
        * NetworkProcess/mac/RemoteNetworkingContext.mm:

2018-12-12  Chris Fleizach  <cfleizach@apple.com>

        [meta][WebKit] Remove using namespace WebCore and WebKit in the global scope for unified source builds
        https://bugs.webkit.org/show_bug.cgi?id=192449
        <rdar://problem/46595508>

        Reviewed by Tim Horton.

        Fix iosmac build.

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _hoverGestureRecognizerChanged:]):

2018-12-12  Alex Christensen  <achristensen@webkit.org>

        Implement safe browsing in WebKit on WatchOS
        https://bugs.webkit.org/show_bug.cgi?id=192641
        <rdar://problem/46376188>

        Reviewed by Geoff Garen.

        WatchOS has a few special requirements:
        1. The margin size needs to be smaller and the title font smaller to fit on the screen.
        2. The exclamation point cannot be beside the title or it won't fit on the screen.  I put it above the title.
        3. The application must be told when the safe browsing warning has been shown.  I added a new delegate callback.
        4. The UIScrollView's contentSize must be set even before the details are shown to be able to scroll down to the buttons.
           This was already an issue on small WKWebViews on iOS, so this fixes both operating systems.

        * Configurations/WebKit.xcconfig:
        * UIProcess/API/APIUIClient.h:
        (API::UIClient::didShowSafeBrowsingWarning):
        * UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
        * UIProcess/Cocoa/UIDelegate.h:
        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::UIDelegate::setDelegate):
        (WebKit::UIDelegate::UIClient::didShowSafeBrowsingWarning):
        * UIProcess/Cocoa/WKSafeBrowsingWarning.mm:
        (fontOfSize):
        (buttonSize):
        (-[WKSafeBrowsingWarning addContent]):
        (-[WKSafeBrowsingWarning showDetailsClicked]):
        (-[WKSafeBrowsingWarning updateContentSize]):
        (buttonWidth): Deleted.
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::decidePolicyForNavigationAction):

2018-12-12  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r239129 and r239131.
        https://bugs.webkit.org/show_bug.cgi?id=192646

        Casued macOS and iOS Debug testing to fail early (Requested by
        Truitt on #webkit).

        Reverted changesets:

        "Unreviewed build fix for WinCairo Debug after r239080(?)."
        https://trac.webkit.org/changeset/239129

        "Unreviewed fix for Cocoa Debug test instability following
        r239129."
        https://trac.webkit.org/changeset/239131

2018-12-12  Vivek Seth  <v_seth@apple.com>

        HTTPS Upgrade: Figure out if/how to tell clients that the HTTPS upgrade happened
        https://bugs.webkit.org/show_bug.cgi?id=192375
        <rdar://problem/45851159>

        Reviewed by Chris Dumez.

        Use simulated redirect to tell clients that HTTPS Upgrade happened.

        * NetworkProcess/NetworkLoadChecker.cpp:
        (WebKit::NetworkLoadChecker::NetworkLoadChecker):
        (WebKit::NetworkLoadChecker::checkRedirection):
        (WebKit::NetworkLoadChecker::accessControlErrorForValidationHandler):
        (WebKit::NetworkLoadChecker::applyHTTPSUpgradeIfNeeded const):
        (WebKit::NetworkLoadChecker::checkRequest):
        (WebKit::NetworkLoadChecker::continueCheckingRequestOrDoSyntheticRedirect):
        (WebKit::NetworkLoadChecker::checkCORSRequestWithPreflight):
        (WebKit::NetworkLoadChecker::applyHTTPSUpgradeIfNeeded): Deleted.
        * NetworkProcess/NetworkLoadChecker.h:
        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::start):
        * NetworkProcess/PingLoad.cpp:

2018-12-12  Ross Kirsling  <ross.kirsling@sony.com>

        Unreviewed fix for Cocoa Debug test instability following r239129.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didFailToSuspendAfterProcessSwap): Deleted.
        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::didFailToSuspendAfterProcessSwap):
        Move the whole assertion to the declaration site.

2018-12-12  Chris Dumez  <cdumez@apple.com>

        Add a preference to enable / disable devicemotion and deviceorientation events
        https://bugs.webkit.org/show_bug.cgi?id=192631
        <rdar://problem/46646244>

        Reviewed by Geoffrey Garen.

        Add setting to toggle support for the deviceorientation / devicemotion events:
        - https://w3c.github.io/deviceorientation/

        * Shared/WebPreferences.yaml:
        * UIProcess/API/Cocoa/WKPreferences.mm:
        (-[WKPreferences _setDeviceOrientationEventEnabled:]):
        (-[WKPreferences _deviceOrientationEventEnabled]):
        * UIProcess/API/Cocoa/WKPreferencesPrivate.h:

2018-12-12  Ross Kirsling  <ross.kirsling@sony.com>

        Unreviewed build fix for WinCairo Debug after r239080(?).

        MSVC gives a redefinition error if noreturn is specified on the definition instead of the declaration.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didFailToSuspendAfterProcessSwap):
        * UIProcess/WebPageProxy.h:
        Move NO_RETURN_DUE_TO_ASSERT to the declaration site.

2018-12-12  Chris Fleizach  <cfleizach@apple.com>

        [meta][WebKit] Remove using namespace WebCore and WebKit in the global scope for unified source builds
        https://bugs.webkit.org/show_bug.cgi?id=192449
        <rdar://problem/46595508>

        Reviewed by Darin Adler.

        Part 2: UIProcess/Cocoa and UIProcess/ios folders.

        * UIProcess/Cocoa/WebViewImpl.h:
        * UIProcess/Cocoa/WebViewImpl.mm:
        * UIProcess/ios/WKContentView.mm:
        (-[WKContentView _commonInitializationWithProcessPool:configuration:]):
        (-[WKContentView initWithFrame:processPool:configuration:webView:]):
        (-[WKContentView dealloc]):
        (-[WKContentView page]):
        (-[WKContentView updateFixedClippingView:]):
        (-[WKContentView didUpdateVisibleRect:unobscuredRect:unobscuredRectInScrollViewCoordinates:obscuredInsets:unobscuredSafeAreaInsets:inputViewBounds:scale:minimumScale:inStableState:isChangingObscuredInsetsInteractively:enclosedInScrollableAncestorView:]):
        (-[WKContentView _updateForScreen:]):
        (-[WKContentView _accessibilityRegisterUIProcessTokens]):
        (-[WKContentView _createDrawingAreaProxy]):
        (-[WKContentView _didCommitLayerTree:]):
        (-[WKContentView _wk_pageCountForPrintFormatter:]):
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKFocusedElementInfo initWithAssistedNodeInformation:isUserInitiated:userObject:]):
        (hasAssistedNode):
        (-[WKContentView setupInteraction]):
        (-[WKContentView positionInformation]):
        (-[WKContentView _webTouchEventsRecognized:]):
        (inflateQuad):
        (-[WKContentView _updateTapHighlight]):
        (-[WKContentView _showTapHighlight]):
        (-[WKContentView _requiresKeyboardWhenFirstResponder]):
        (-[WKContentView _displayFormNodeInputView]):
        (-[WKContentView inputView]):
        (-[WKContentView _actionForLongPressFromPositionInformation:]):
        (-[WKContentView currentPositionInformation]):
        (-[WKContentView doAfterPositionInformationUpdate:forRequest:]):
        (-[WKContentView _currentPositionInformationIsValidForRequest:]):
        (-[WKContentView _hasValidOutstandingPositionInformationRequest:]):
        (-[WKContentView _currentPositionInformationIsApproximatelyValidForRequest:]):
        (-[WKContentView gestureRecognizerShouldBegin:]):
        (-[WKContentView hasSelectablePositionAtPoint:]):
        (-[WKContentView pointIsNearMarkedText:]):
        (-[WKContentView textInteractionGesture:shouldBeginAtPoint:]):
        (-[WKContentView webSelectionRectsForSelectionRects:]):
        (-[WKContentView _twoFingerSingleTapGestureRecognized:]):
        (-[WKContentView _stylusSingleTapRecognized:]):
        (-[WKContentView _singleTapCommited:]):
        (-[WKContentView _attemptClickAtLocation:]):
        (-[WKContentView _positionInformationDidChange:]):
        (-[WKContentView requiresAccessoryView]):
        (-[WKContentView supportedPasteboardTypesForCurrentSelection]):
        (-[WKContentView _lookupForWebView:]):
        (-[WKContentView _shareForWebView:]):
        (-[WKContentView textStylingAtPosition:inDirection:]):
        (-[WKContentView canPerformActionForWebView:withSender:]):
        (-[WKContentView selectForWebView:]):
        (-[WKContentView _accessibilityRetrieveRectsEnclosingSelectionOffset:withGranularity:]):
        (-[WKContentView _accessibilityRetrieveRectsAtSelectionOffset:withText:completionHandler:]):
        (toGestureType):
        (toUIWKGestureType):
        (toSelectionTouch):
        (toUIWKSelectionTouch):
        (toGestureRecognizerState):
        (toUIGestureRecognizerState):
        (toUIWKSelectionFlags):
        (toWKTextGranularity):
        (toWKSelectionDirection):
        (selectionChangedWithGesture):
        (selectionChangedWithTouch):
        (-[WKContentView changeSelectionWithGestureAt:withGesture:withState:withFlags:]):
        (-[WKContentView autocorrectionData]):
        (-[WKContentView requestAutocorrectionRectsForString:withCompletionHandler:]):
        (-[WKContentView _becomeFirstResponderWithSelectionMovingForward:completionHandler:]):
        (-[WKContentView _updateAccessory]):
        (-[WKContentView selectedTextRange]):
        (-[WKContentView setMarkedText:selectedRange:]):
        (coreWritingDirection):
        (-[WKContentView closestPositionToPoint:]):
        (-[WKContentView insertText:]):
        (-[WKContentView textInputTraits]):
        (-[WKContentView handleKeyWebEvent:]):
        (-[WKContentView handleKeyWebEvent:withCompletionHandler:]):
        (-[WKContentView isScrollableForKeyboardScrollViewAnimator:]):
        (-[WKContentView keyboardScrollViewAnimator:distanceForIncrement:]):
        (-[WKContentView assistedNodeInformation]):
        (-[WKContentView assistedNodeSelectOptions]):
        (isAssistableInputType):
        (-[WKContentView _startAssistingNode:userIsInteracting:blurPreviousNode:changingActivityState:userObject:]):
        (-[WKContentView _stopAssistingNode]):
        (-[WKContentView updateCurrentAssistedNodeInformation:]):
        (-[WKContentView presentViewControllerForCurrentAssistedNode]):
        (-[WKContentView actionNameForFocusedFormControlView:]):
        (-[WKContentView selectWordForReplacement]):
        (-[WKContentView _updateChangedSelection:]):
        (-[WKContentView _beginSuppressingSelectionAssistantForReason:]):
        (-[WKContentView _stopSuppressingSelectionAssistantForReason:]):
        (-[WKContentView _showPlaybackTargetPicker:fromRect:routeSharingPolicy:routingContextUID:]):
        (-[WKContentView _showRunOpenPanel:resultListener:]):
        (-[WKContentView _showShareSheet:completionHandler:]):
        (-[WKContentView positionInformationForActionSheetAssistant:]):
        (-[WKContentView updatePositionInformationForActionSheetAssistant:]):
        (-[WKContentView _startDrag:item:]):
        (-[WKContentView _didHandleAdditionalDragItemsRequest:]):
        (-[WKContentView _didHandleStartDataInteractionRequest:]):
        (dropOperationForWebCoreDragOperation):
        (-[WKContentView dragDataForDropSession:dragDestinationAction:]):
        (-[WKContentView _didConcludeEditDataInteraction:]):
        (-[WKContentView _didPerformDragOperation:]):
        (-[WKContentView _prepareToDragPromisedAttachment:]):
        (-[WKContentView _itemsForBeginningOrAddingToSessionWithRegistrationList:stagedDragSource:]):
        (-[WKContentView _autofillContext]):
        (-[WKContentView _dragInteraction:itemsForAddingToSession:withTouchAtPoint:completion:]):
        (-[WKContentView _dragInteraction:prepareForSession:completion:]):
        (-[WKContentView dragInteraction:itemsForBeginningSession:]):
        (-[WKContentView dragInteraction:willAnimateLiftWithAnimator:session:]):
        (-[WKContentView dragInteraction:session:didEndWithOperation:]):
        (-[WKContentView dragInteraction:item:willAnimateCancelWithAnimator:]):
        (-[WKContentView dropInteraction:performDrop:]):
        (-[WKContentView dropInteraction:sessionDidEnd:]):
        (-[WKContentView allowsLanguageSelectionMenuForListViewController:]):
        (-[WKContentView shouldDisplayInputContextViewForListViewController:]):
        (-[WKContentView numericInputModeForListViewController:]):
        (-[WKContentView textContentTypeForListViewController:]):
        (-[WKContentView allowsDictationInputForListViewController:]):
        (-[WKContentView _simulateLongPressActionAtLocation:]):
        (-[WKContentView _interactionShouldBeginFromPreviewItemController:forPosition:]):
        (-[WKContentView _presentationRectsForPreviewItemController:]):
        * UIProcess/ios/fullscreen/WKFullScreenViewController.mm:
        (WKFullScreenViewControllerPlaybackSessionModelClient::setInterface):
        (WKFullScreenViewControllerVideoFullscreenModelClient::setInterface):
        (WKFullScreenViewControllerVideoFullscreenModelClient::interface const):
        (-[WKFullScreenViewController videoControlsManagerDidChange]):
        (-[WKFullScreenViewController _manager]):
        (-[WKFullScreenViewController _togglePiPAction:]):
        * UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm:
        (-[WKFullscreenAnimationController configureInitialAndFinalStatesForTransition:]):
        (-[WKFullScreenWindowController isFullScreen]):
        (-[WKFullScreenWindowController enterFullScreen]):
        (-[WKFullScreenWindowController beganEnterFullScreenWithInitialFrame:finalFrame:]):
        (-[WKFullScreenWindowController exitFullScreen]):
        (-[WKFullScreenWindowController beganExitFullScreenWithInitialFrame:finalFrame:]):
        (-[WKFullScreenWindowController _completedExitFullScreen]):
        (-[WKFullScreenWindowController webViewDidRemoveFromSuperviewWhileInFullscreen]):
        (-[WKFullScreenWindowController _exitFullscreenImmediately]):
        (-[WKFullScreenWindowController _manager]):

2018-12-12  Chris Fleizach  <cfleizach@apple.com>

        [meta][WebKit] Remove using namespace WebCore and WebKit in the global scope for unified source builds
        https://bugs.webkit.org/show_bug.cgi?id=192449
        <rdar://problem/46595508>

        Reviewed by Darin Adler.

        Part 1: Files in Shared folder.

        * Shared/API/c/WKRenderLayer.cpp:
        (WKRenderLayerGetFrameContentsLayer):
        * Shared/API/c/cf/WKErrorCF.cpp:
        (WKErrorCreateWithCFError):
        (WKErrorCopyCFError):
        * Shared/API/c/cg/WKImageCG.cpp:
        (WKImageCreateCGImage):
        (WKImageCreateFromCGImage):
        * Shared/API/c/mac/WKWebArchive.cpp:
        (WKWebArchiveGetTypeID):
        (WKWebArchiveCreate):
        (WKWebArchiveCreateWithData):
        (WKWebArchiveCreateFromRange):
        (WKWebArchiveCopyMainResource):
        (WKWebArchiveCopySubresources):
        (WKWebArchiveCopySubframeArchives):
        (WKWebArchiveCopyData):
        * Shared/API/c/mac/WKWebArchiveResource.cpp:
        (WKWebArchiveResourceGetTypeID):
        (WKWebArchiveResourceCreate):
        (WKWebArchiveResourceCopyData):
        (WKWebArchiveResourceCopyURL):
        (WKWebArchiveResourceCopyMIMEType):
        (WKWebArchiveResourceCopyTextEncoding):
        * Shared/ChildProcess.cpp:
        * Shared/ContextMenuContextData.cpp:
        * Shared/EditorState.cpp:
        * Shared/Plugins/NPIdentifierData.cpp:
        * Shared/RemoteLayerTree/RemoteLayerTreePropertyApplier.mm:
        * Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp:
        * Shared/SessionState.cpp:
        * Shared/SessionTracker.cpp:
        * Shared/ShareableBitmap.cpp:
        * Shared/ShareableResource.cpp:
        * Shared/VisibleContentRectUpdateInfo.cpp:
        * Shared/WebBackForwardListItem.cpp:
        * Shared/WebContextMenuItemData.cpp:
        * Shared/WebCoreArgumentCoders.cpp:
        * Shared/WebHitTestResultData.cpp:
        * Shared/WebImage.cpp:
        * Shared/WebMediaSessionMetadata.cpp:
        * Shared/WebMemorySampler.cpp:
        * Shared/WebMouseEvent.cpp:
        * Shared/WebRenderObject.cpp:
        * Shared/WebSQLiteDatabaseTracker.cpp:
        * Shared/WebWheelEvent.cpp:
        * Shared/cf/ArgumentCodersCF.cpp:
        * Shared/ios/WebPlatformTouchPointIOS.cpp:

2018-12-12  Chris Fleizach  <cfleizach@apple.com>

        [meta][WebKit] Remove using namespace WebCore and WebKit in the global scope for unified source builds
        https://bugs.webkit.org/show_bug.cgi?id=192449
        <rdar://problem/46595508>

        Reviewed by Darin Adler.

        Part 1: Files in NetworkProcess.

        * NetworkProcess/Cookies/mac/WebCookieManagerMac.mm:
        * NetworkProcess/IndexedDB/WebIDBConnectionToClient.cpp:
        * NetworkProcess/ServiceWorker/WebSWServerConnection.cpp:
        * NetworkProcess/ServiceWorker/WebSWServerToContextConnection.cpp:
        * NetworkProcess/ios/NetworkProcessIOS.mm:
        * NetworkProcess/mac/NetworkProcessMac.mm:
        * NetworkProcess/mac/RemoteNetworkingContext.mm:

2018-12-12  Chris Dumez  <cdumez@apple.com>

        Unreviewed build with with recent macOS SDKs.

        * Platform/cocoa/WKCrashReporter.mm:

2018-12-12  Chris Dumez  <cdumez@apple.com>

        Unreviewed attempt to fix GTK build after r239104.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::performDragControllerAction):

2018-12-12  Chris Dumez  <cdumez@apple.com>

        Unreviewed attempt to fix build with older SDKs after r239110.

        * Platform/cocoa/WKCrashReporter.mm:

2018-12-12  Chris Dumez  <cdumez@apple.com>

        Unreviewed, fix build with recent SDKs.

        * Platform/cocoa/WKCrashReporter.mm:

2018-12-09  Darin Adler  <darin@apple.com>

        [iOS] Zero memory containing the password for PDF documents when a WKPDFView is deallocated
        https://bugs.webkit.org/show_bug.cgi?id=192536
        rdar://problem/41174451

        Reviewed by Tim Horton.

        * UIProcess/ios/WKPDFView.mm: Took out PLATFORM(IOSMAC) since
        this class is not compiled on that platform at this time. Can always
        add it back later.
        (-[WKPDFView dealloc]): Zero out characters of _passwordForPrinting.
        (-[WKPDFView pdfHostViewController:documentDidUnlockWithPassword:]):
        Initialize _passwordForPrinting; use a CString instead of retaining
        an NSString since we can zero that out easily.
        (-[WKPDFView _ensureDocumentForPrinting]): Use _passwordForPrinting.

2018-12-12  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r239103.
        https://bugs.webkit.org/show_bug.cgi?id=192627

        It broke the built because it depends on another patch that
        didn't land yet (Requested by KaL on #webkit).

        Reverted changeset:

        "[WPE] Add API to notify about frame displayed view backend
        callback"
        https://bugs.webkit.org/show_bug.cgi?id=192224
        https://trac.webkit.org/changeset/239103

2018-12-12  Chris Dumez  <cdumez@apple.com>

        Restore MESSAGE_CHECK_URL() security check on sourceURL in didPerformClientRedirect()
        https://bugs.webkit.org/show_bug.cgi?id=191982
        <rdar://problem/46258054>

        Reviewed by Alex Christensen.

        Have the WebPageProxy remember the local paths it previously visited so that the
        MESSAGE_CHECK_URL() checks still work when process-swap on navigation is enabled.

        Add back MESSAGE_CHECK_URL() on sourceURL in didPerformClientRedirect().

        * UIProcess/Cocoa/WebPageProxyCocoa.mm:
        (WebKit::WebPageProxy::createSandboxExtensionsIfNeeded):
        * UIProcess/RemoteWebInspectorProxy.cpp:
        (WebKit::RemoteWebInspectorProxy::createFrontendPageAndWindow):
        * UIProcess/WebInspectorProxy.cpp:
        (WebKit::WebInspectorProxy::createFrontendPage):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::loadRequestWithNavigation):
        (WebKit::WebPageProxy::loadFile):
        (WebKit::WebPageProxy::loadDataWithNavigation):
        (WebKit::WebPageProxy::loadAlternateHTML):
        (WebKit::WebPageProxy::reload):
        (WebKit::WebPageProxy::didPerformClientRedirect):
        (WebKit::WebPageProxy::backForwardGoToItem):
        (WebKit::WebPageProxy::checkURLReceivedFromCurrentOrPreviousWebProcess):
        (WebKit::WebPageProxy::addPreviouslyVisitedPath):
        (WebKit::WebPageProxy::willAcquireUniversalFileReadSandboxExtension):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::assumeReadAccessToBaseURL):
        * UIProcess/WebProcessProxy.h:
        * UIProcess/mac/WebPageProxyMac.mm:

2018-11-30  Carlos Garcia Campos  <cgarcia@igalia.com>

        [WPE] Add API to notify about frame displayed view backend callback
        https://bugs.webkit.org/show_bug.cgi?id=192224

        Reviewed by Michael Catanzaro.

        Add API to add a callback to the view to be called when the view backend notifies that a frame has been
        displayed.

        * UIProcess/API/glib/WebKitWebView.cpp:
        (FrameDisplayedCallback::FrameDisplayedCallback):
        (FrameDisplayedCallback::~FrameDisplayedCallback):
        (webkit_web_view_add_frame_displayed_callback):
        (webkit_web_view_remove_frame_displayed_callback):
        * UIProcess/API/wpe/WebKitWebView.h:

2018-12-11  Justin Michaud  <justin_michaud@apple.com>

        Implement feature flag for CSS Typed OM
        https://bugs.webkit.org/show_bug.cgi?id=192610

        Reviewed by Ryosuke Niwa.

        * Configurations/FeatureDefines.xcconfig:
        * Shared/WebPreferences.yaml:
        * WebProcess/InjectedBundle/InjectedBundle.cpp:
        (WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner):

2018-12-11  Fujii Hironori  <Hironori.Fujii@sony.com>

        [Win][Clang] Fix warning -Wmissing-field-initializers
        https://bugs.webkit.org/show_bug.cgi?id=192584

        Reviewed by Yusuke Suzuki.

        Initialize a struct with '{ }' instead of '= {0}'.

        * UIProcess/Launcher/win/ProcessLauncherWin.cpp:
        (WebKit::ProcessLauncher::launchProcess):
        * UIProcess/win/WebPopupMenuProxyWin.cpp:
        (WebKit::WebPopupMenuProxyWin::showPopupMenu):
        * UIProcess/win/WebView.cpp:
        (WebKit::WebView::initializeToolTipWindow):
        (WebKit::WebView::setToolTip):

2018-12-11  Chris Dumez  <cdumez@apple.com>

        PSON logic gets confused by concurrent decidePolicyForNavigationAction requests
        https://bugs.webkit.org/show_bug.cgi?id=192482
        <rdar://problem/46470145>

        Reviewed by Antti Koivisto.

        It is possible to get 2 parallel decidePolicyForNavigationAction() requests from the
        WebProcess when a new load is started before responding to the existing policy
        decision. This would lead to several issues with regards to PSON:
        - We would decide to swap for the first policy decision and tell the WebProcess to
          suspend. However, because the WebProcess issued a new decidePolicyForNavigationAction
          since for the same frame, the previous one is invalidated and the WebProcess would
          ignore our request to suspend.
        - We would hit assertions later on because the navigation has been destroyed and yet
          we're getting a didStartProvisionalLoad for it.
        - swapToWebProcess() was asynchronous so that it would wait for the destination
          SuspendedPage to finish suspending before asking it to unsuspend. This led to various
          problems because anything can happen in the UIProcess while we're waiting for the
          suspension (e.g. another load). Also, we may create the SuspendedPageProxy for
          the current page too late and start getting IPC from the previous process about
          the suspension load to about:blank.

        To address these issues, the following design is now implemented:
        - swapToWebProcess() is no longer asynchronous
        - instead, WebProcessPool::processForNavigation() is now asynchronous. This is better
          because at this point we have not yet told the WebProcess about the policy decision.
          We already properly deal with the policy decision being made asynchronously. This
          also allows us to choose another process if the SuspendedPage we'd like to use
          failed to suspend.
        - If the WebProcess receives a PolicyAction::Suspend but ignores it, have it send an
          IPC to the UIProcess so that the SuspendedPageProxy knows about it. We then destroy
          the SuspendedPageProxy and make sure it is not used.
        - After the asynchronous process selection, if the navigation has been destroy, abort
          the process-swap to avoid hitting assertions later on due to doing a load for a
          destroyed navigation.

        * UIProcess/SuspendedPageProxy.cpp:
        (WebKit::SuspendedPageProxy::~SuspendedPageProxy):
        Make sure m_whenReadyToConsume completion handler gets called if necessary if the
        SuspendedPageProxy gets destroyed. We pass null so that the SuspendedPage is not
        used.

        (WebKit::SuspendedPageProxy::whenReadyToConsume):
        Add whenReadyToConsume() utility method to get a completion handler called when
        the SuspendedPageProxy is ready to be used. This basically means we have to wait
        for the page to finish its about:blank suspension load. If the suspension fails
        then we call the completion handler with null to indicate that the suspended
        page is not usable.

        (WebKit::SuspendedPageProxy::unsuspendAndConsume):
        Rename unsuspend() to unsuspendAndConsume() and make it synchronous. This only gets
        called after whenReadyToConsume()'s completion handler has been called and if we
        do decide to use the SuspendedPageProxy. It tells the WebProcess to unsuspend and
        removes the SuspendedPageProxy from the WebProcessPool.

        (WebKit::SuspendedPageProxy::didFinishLoad):
        rename m_finishedSuspendingHandler to m_whenReadyToConsume.

        (WebKit::SuspendedPageProxy::didFailToSuspend):
        Add new didFailToSuspend() that gets called when the WebProcess sends us an IPC telling
        us it ignored our request to suspend. We then call m_whenReadyToConsume completion
        handler with null and destroy the SuspendedPageProxy.

        (WebKit::SuspendedPageProxy::didReceiveMessage):
        * UIProcess/SuspendedPageProxy.h:

        * UIProcess/WebNavigationState.h:
        (WebKit::WebNavigationState::hasNavigation const):
        Add utility function to query if a navigation is still valid.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::swapToWebProcess):
        Update method so that it is no longer asynchronous. Some of its code was also moved to
        continueNavigationInNewProcess() for clarity.

        (WebKit::WebPageProxy::receivedNavigationPolicyDecision):
        Deal with WebProcessPool::processForNavigation() now being asynchronous.

        (WebKit::WebPageProxy::continueNavigationInNewProcess):
        Update code now that swapToWebProcess() is no longer asynchronous. Some of the swapToWebProcess()
        code was also moved here for clarity.

        (WebKit::WebPageProxy::didFailToSuspendAfterProcessSwap):

        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        Add new DidFailToSuspendAfterProcessSwap IPC message.

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::processForNavigation):
        (WebKit::WebProcessPool::processForNavigationInternal):
        * UIProcess/WebProcessPool.h:
        Make asynchronous. If we decide to use a SuspendedPageProxy's process, then call
        whenReadyToConsume() on it to wait for it to suspend. If the SuspendedPageProxy
        fails to suspend use a new process instead.

        * WebProcess/WebPage/WebFrame.cpp:
        (WebKit::WebFrame::didReceivePolicyDecision):
        If we ignore the policy decision and the decision was "Suspend", send the DidFailToSuspendAfterProcessSwap
        IPC to the UIProcess so that the SuspendedPageProxy knows about it.

2018-12-11  Andy Estes  <aestes@apple.com>

        Introduce makeBlockPtr for lambdas
        https://bugs.webkit.org/show_bug.cgi?id=192594

        Reviewed by Alex Christensen.

        Adopted makeBlockPtr.

        * NetworkProcess/Downloads/cocoa/WKDownloadProgress.mm:
        (-[WKDownloadProgress initWithDownloadTask:download:URL:sandboxExtension:]):
        * NetworkProcess/cache/NetworkCacheIOChannelCocoa.mm:
        (WebKit::NetworkCache::IOChannel::read):
        (WebKit::NetworkCache::IOChannel::write):
        * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
        (WebKit::NetworkProcess::clearDiskCache):
        (WebKit::saveCookies):
        * NetworkProcess/watchos/NetworkProximityAssertion.mm:
        (WebKit::BluetoothProximityAssertion::suspend):
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _setInputDelegate:]):
        * UIProcess/API/mac/WKView.mm:
        (-[WKView maybeInstallIconLoadingClient]):
        * UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
        (WebKit::WebPaymentCoordinatorProxy::platformCanMakePaymentsWithActiveCard):
        (WebKit::WebPaymentCoordinatorProxy::platformOpenPaymentSetup):
        * UIProcess/ApplePay/mac/WebPaymentCoordinatorProxyMac.mm:
        (WebKit::WebPaymentCoordinatorProxy::platformShowPaymentUI):
        * UIProcess/Cocoa/AutomationSessionClient.mm:
        (WebKit::AutomationSessionClient::requestNewPageWithOptions):
        (WebKit::AutomationSessionClient::requestSwitchToPage):
        (WebKit::AutomationSessionClient::requestHideWindowOfPage):
        (WebKit::AutomationSessionClient::requestRestoreWindowOfPage):
        (WebKit::AutomationSessionClient::requestMaximizeWindowOfPage):
        * UIProcess/Cocoa/DownloadClient.mm:
        (WebKit::DownloadClient::didReceiveAuthenticationChallenge):
        (WebKit::DownloadClient::decideDestinationWithSuggestedFilename):
        * UIProcess/Cocoa/IconLoadingDelegate.mm:
        (WebKit::IconLoadingDelegate::IconLoadingClient::getLoadDecisionForIcon):
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::NavigationClient::decidePolicyForPluginLoad):
        (WebKit::NavigationState::NavigationClient::webGLLoadPolicy const):
        (WebKit::NavigationState::NavigationClient::resolveWebGLLoadPolicy const):
        (WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction):
        (WebKit::NavigationState::NavigationClient::decidePolicyForNavigationResponse):
        (WebKit::NavigationState::NavigationClient::didReceiveAuthenticationChallenge):
        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::UIDelegate::ContextMenuClient::menuFromProposedMenu):
        (WebKit::UIDelegate::UIClient::createNewPage):
        (WebKit::UIDelegate::UIClient::runJavaScriptAlert):
        (WebKit::UIDelegate::UIClient::runJavaScriptConfirm):
        (WebKit::UIDelegate::UIClient::runJavaScriptPrompt):
        (WebKit::UIDelegate::UIClient::requestStorageAccessConfirm):
        (WebKit::UIDelegate::UIClient::decidePolicyForGeolocationPermissionRequest):
        (WebKit::UIDelegate::UIClient::runBeforeUnloadConfirmPanel):
        (WebKit::UIDelegate::UIClient::exceededDatabaseQuota):
        (WebKit::UIDelegate::UIClient::windowFrame):
        (WebKit::UIDelegate::UIClient::toolbarsAreVisible):
        (WebKit::UIDelegate::UIClient::decidePolicyForNotificationPermissionRequest):
        (WebKit::UIDelegate::UIClient::runOpenPanel):
        (WebKit::requestUserMediaAuthorizationForDevices):
        (WebKit::UIDelegate::UIClient::decidePolicyForUserMediaPermissionRequest):
        (WebKit::UIDelegate::UIClient::checkUserMediaPermissionForOrigin):
        (WebKit::UIDelegate::UIClient::reachedApplicationCacheOriginQuota):
        (WebKit::UIDelegate::UIClient::requestPointerLock):
        * UIProcess/Cocoa/WKSafeBrowsingWarning.mm:
        (-[WKSafeBrowsingWarning clickedOnLink:]):
        * UIProcess/Cocoa/WebPageProxyCocoa.mm:
        (WebKit::WebPageProxy::beginSafeBrowsingCheck):
        * UIProcess/WebAuthentication/Cocoa/HidConnection.mm:
        (WebKit::HidConnection::send):
        * UIProcess/WebAuthentication/Cocoa/LocalConnection.mm:
        (WebKit::LocalConnection::getUserConsent const):
        (WebKit::LocalConnection::getAttestation const):
        * UIProcess/WebAuthentication/Mock/MockHidConnection.cpp:
        (WebKit::MockHidConnection::send):
        * UIProcess/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::requestPasswordForQuickLookDocument):
        * UIProcess/ios/WKGeolocationProviderIOS.mm:
        (-[WKGeolocationProviderIOS geolocationAuthorizationGranted]):
        * UIProcess/mac/ServicesController.mm:
        (WebKit::hasCompatibleServicesForItems):
        (WebKit::ServicesController::refreshExistingServices):
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:
        (PageLoaderClient::didStartProvisionalLoadForFrame):

2018-12-11  Alex Christensen  <achristensen@webkit.org>

        Fix an internal build failure after r239014
        https://bugs.webkit.org/show_bug.cgi?id=192205

        * UIProcess/Cocoa/WKSafeBrowsingWarning.mm:
        (fontOfSize):
        There's a system that doesn't have safe browsing or UIFontTextStyleLargeTitle.

2018-12-11  Brian Burg  <bburg@apple.com>

        SimulatedInputDispatcher::transitionInputSourceToState() can reuse a moved-from completion handler
        https://bugs.webkit.org/show_bug.cgi?id=191155
        <rdar://problem/45745569>

        Reviewed by Joseph Pecoraro.

        * UIProcess/Automation/SimulatedInputDispatcher.cpp:
        (WebKit::SimulatedInputDispatcher::transitionInputSourceToState):
        Add an ASSERT to guard against unexpected inputs where >1 VirtualKey changes per state.
        webkitdriver needs to be updated to not produce such states in this scenario, but this will
        avoid a runtime crash caused by trying to call a moved-out completion handler a second time.

2018-12-11  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r239071.
        https://bugs.webkit.org/show_bug.cgi?id=192588

        Broke WPE build due to undefined references to toAPI() and
        toImpl() inside the C API (Requested by magomez on #webkit).

        Reverted changeset:

        "[meta][WebKit] Remove using namespace WebCore and WebKit in
        the global scope for unified source builds"
        https://bugs.webkit.org/show_bug.cgi?id=192449
        https://trac.webkit.org/changeset/239071

2018-12-10  Chris Fleizach  <cfleizach@apple.com>

        [meta][WebKit] Remove using namespace WebCore and WebKit in the global scope for unified source builds
        https://bugs.webkit.org/show_bug.cgi?id=192449

        Reviewed by Darin Adler.

        * NetworkProcess/Cookies/mac/WebCookieManagerMac.mm:
        * NetworkProcess/IndexedDB/WebIDBConnectionToClient.cpp:
        * NetworkProcess/ServiceWorker/WebSWServerConnection.cpp:
        * NetworkProcess/ServiceWorker/WebSWServerToContextConnection.cpp:
        * NetworkProcess/ios/NetworkProcessIOS.mm:
        * NetworkProcess/mac/NetworkProcessMac.mm:
        * NetworkProcess/mac/RemoteNetworkingContext.mm:
        * Platform/spi/ios/AccessibilitySupportSPI.h:
        * PlatformMac.cmake:
        * PluginProcess/PluginControllerProxy.cpp:
        * PluginProcess/PluginProcess.cpp:
        * PluginProcess/WebProcessConnection.cpp:
        * Scripts/PreferencesTemplates/WebPreferencesStoreDefaultsMap.cpp.erb:
        * Shared/API/c/cf/WKErrorCF.cpp:
        (WKErrorCreateWithCFError):
        (WKErrorCopyCFError):
        * Shared/API/c/cg/WKImageCG.cpp:
        (WKImageCreateCGImage):
        (WKImageCreateFromCGImage):
        * Shared/ChildProcess.cpp:
        * Shared/ContextMenuContextData.cpp:
        * Shared/EditorState.cpp:
        * Shared/Plugins/NPIdentifierData.cpp:
        * Shared/RemoteLayerTree/RemoteLayerTreePropertyApplier.mm:
        * Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp:
        * Shared/SessionState.cpp:
        * Shared/SessionTracker.cpp:
        * Shared/ShareableBitmap.cpp:
        * Shared/ShareableResource.cpp:
        * Shared/VisibleContentRectUpdateInfo.cpp:
        * Shared/WebBackForwardListItem.cpp:
        * Shared/WebContextMenuItemData.cpp:
        * Shared/WebCoreArgumentCoders.cpp:
        * Shared/WebHitTestResultData.cpp:
        * Shared/WebImage.cpp:
        * Shared/WebMediaSessionMetadata.cpp:
        * Shared/WebMemorySampler.cpp:
        * Shared/WebMouseEvent.cpp:
        * Shared/WebRenderObject.cpp:
        * Shared/WebSQLiteDatabaseTracker.cpp:
        * Shared/WebWheelEvent.cpp:
        * Shared/cf/ArgumentCodersCF.cpp:
        * Shared/ios/WebPlatformTouchPointIOS.cpp:
        * SourcesCocoa.txt:
        * UIProcess/API/APIContentRuleListStore.cpp:
        * UIProcess/API/APIHitTestResult.cpp:
        * UIProcess/API/APINavigation.cpp:
        * UIProcess/API/APIOpenPanelParameters.cpp:
        * UIProcess/API/APIPageConfiguration.cpp:
        * UIProcess/API/C/WKPage.cpp:
        (WKPageLoadURLWithShouldOpenExternalURLsPolicy):
        (WKPageLoadURLWithUserData):
        (WKPageLoadURLRequestWithUserData):
        (WKPageSetPaginationMode):
        (WKPageGetPaginationMode):
        (WKPageSetPageLoaderClient):
        (WKPageSetPagePolicyClient):
        * UIProcess/API/C/cg/WKIconDatabaseCG.cpp:
        * UIProcess/Cocoa/WebViewImpl.h:
        * UIProcess/Cocoa/WebViewImpl.mm:
        * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeHostIOS.mm:
        * UIProcess/WebStorage/LocalStorageDatabase.cpp:
        * UIProcess/ios/WKContentView.mm:
        (-[WKContentView _commonInitializationWithProcessPool:configuration:]):
        (-[WKContentView initWithFrame:processPool:configuration:webView:]):
        (-[WKContentView dealloc]):
        (-[WKContentView page]):
        (-[WKContentView updateFixedClippingView:]):
        (-[WKContentView didUpdateVisibleRect:unobscuredRect:unobscuredRectInScrollViewCoordinates:obscuredInsets:unobscuredSafeAreaInsets:inputViewBounds:scale:minimumScale:inStableState:isChangingObscuredInsetsInteractively:enclosedInScrollableAncestorView:]):
        (-[WKContentView _updateForScreen:]):
        (-[WKContentView _accessibilityRegisterUIProcessTokens]):
        (-[WKContentView _createDrawingAreaProxy]):
        (-[WKContentView _didCommitLayerTree:]):
        (-[WKContentView _wk_pageCountForPrintFormatter:]):
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKFocusedElementInfo initWithAssistedNodeInformation:isUserInitiated:userObject:]):
        (hasAssistedNode):
        (-[WKContentView setupInteraction]):
        (-[WKContentView positionInformation]):
        (-[WKContentView _webTouchEventsRecognized:]):
        (inflateQuad):
        (-[WKContentView _updateTapHighlight]):
        (-[WKContentView _showTapHighlight]):
        (-[WKContentView _requiresKeyboardWhenFirstResponder]):
        (-[WKContentView _displayFormNodeInputView]):
        (-[WKContentView inputView]):
        (-[WKContentView _actionForLongPressFromPositionInformation:]):
        (-[WKContentView currentPositionInformation]):
        (-[WKContentView doAfterPositionInformationUpdate:forRequest:]):
        (-[WKContentView _currentPositionInformationIsValidForRequest:]):
        (-[WKContentView _hasValidOutstandingPositionInformationRequest:]):
        (-[WKContentView _currentPositionInformationIsApproximatelyValidForRequest:]):
        (-[WKContentView gestureRecognizerShouldBegin:]):
        (-[WKContentView hasSelectablePositionAtPoint:]):
        (-[WKContentView pointIsNearMarkedText:]):
        (-[WKContentView textInteractionGesture:shouldBeginAtPoint:]):
        (-[WKContentView webSelectionRectsForSelectionRects:]):
        (-[WKContentView _twoFingerSingleTapGestureRecognized:]):
        (-[WKContentView _stylusSingleTapRecognized:]):
        (-[WKContentView _singleTapCommited:]):
        (-[WKContentView _attemptClickAtLocation:]):
        (-[WKContentView _positionInformationDidChange:]):
        (-[WKContentView requiresAccessoryView]):
        (-[WKContentView supportedPasteboardTypesForCurrentSelection]):
        (-[WKContentView _lookupForWebView:]):
        (-[WKContentView _shareForWebView:]):
        (-[WKContentView textStylingAtPosition:inDirection:]):
        (-[WKContentView canPerformActionForWebView:withSender:]):
        (-[WKContentView selectForWebView:]):
        (-[WKContentView _accessibilityRetrieveRectsEnclosingSelectionOffset:withGranularity:]):
        (-[WKContentView _accessibilityRetrieveRectsAtSelectionOffset:withText:completionHandler:]):
        (toGestureType):
        (toUIWKGestureType):
        (toSelectionTouch):
        (toUIWKSelectionTouch):
        (toGestureRecognizerState):
        (toUIGestureRecognizerState):
        (toUIWKSelectionFlags):
        (toWKTextGranularity):
        (toWKSelectionDirection):
        (selectionChangedWithGesture):
        (selectionChangedWithTouch):
        (-[WKContentView changeSelectionWithGestureAt:withGesture:withState:withFlags:]):
        (-[WKContentView autocorrectionData]):
        (-[WKContentView requestAutocorrectionRectsForString:withCompletionHandler:]):
        (-[WKContentView _becomeFirstResponderWithSelectionMovingForward:completionHandler:]):
        (-[WKContentView _updateAccessory]):
        (-[WKContentView selectedTextRange]):
        (-[WKContentView setMarkedText:selectedRange:]):
        (coreWritingDirection):
        (-[WKContentView closestPositionToPoint:]):
        (-[WKContentView insertText:]):
        (-[WKContentView textInputTraits]):
        (-[WKContentView handleKeyWebEvent:]):
        (-[WKContentView handleKeyWebEvent:withCompletionHandler:]):
        (-[WKContentView isScrollableForKeyboardScrollViewAnimator:]):
        (-[WKContentView keyboardScrollViewAnimator:distanceForIncrement:]):
        (-[WKContentView assistedNodeInformation]):
        (-[WKContentView assistedNodeSelectOptions]):
        (isAssistableInputType):
        (-[WKContentView _startAssistingNode:userIsInteracting:blurPreviousNode:changingActivityState:userObject:]):
        (-[WKContentView _stopAssistingNode]):
        (-[WKContentView updateCurrentAssistedNodeInformation:]):
        (-[WKContentView presentViewControllerForCurrentAssistedNode]):
        (-[WKContentView actionNameForFocusedFormControlView:]):
        (-[WKContentView selectWordForReplacement]):
        (-[WKContentView _updateChangedSelection:]):
        (-[WKContentView _beginSuppressingSelectionAssistantForReason:]):
        (-[WKContentView _stopSuppressingSelectionAssistantForReason:]):
        (-[WKContentView _showPlaybackTargetPicker:fromRect:routeSharingPolicy:routingContextUID:]):
        (-[WKContentView _showRunOpenPanel:resultListener:]):
        (-[WKContentView _showShareSheet:completionHandler:]):
        (-[WKContentView positionInformationForActionSheetAssistant:]):
        (-[WKContentView updatePositionInformationForActionSheetAssistant:]):
        (-[WKContentView _startDrag:item:]):
        (-[WKContentView _didHandleAdditionalDragItemsRequest:]):
        (-[WKContentView _didHandleStartDataInteractionRequest:]):
        (dropOperationForWebCoreDragOperation):
        (-[WKContentView dragDataForDropSession:dragDestinationAction:]):
        (-[WKContentView _didConcludeEditDataInteraction:]):
        (-[WKContentView _didPerformDragOperation:]):
        (-[WKContentView _prepareToDragPromisedAttachment:]):
        (-[WKContentView _itemsForBeginningOrAddingToSessionWithRegistrationList:stagedDragSource:]):
        (-[WKContentView _autofillContext]):
        (-[WKContentView _dragInteraction:itemsForAddingToSession:withTouchAtPoint:completion:]):
        (-[WKContentView _dragInteraction:prepareForSession:completion:]):
        (-[WKContentView dragInteraction:itemsForBeginningSession:]):
        (-[WKContentView dragInteraction:willAnimateLiftWithAnimator:session:]):
        (-[WKContentView dragInteraction:session:didEndWithOperation:]):
        (-[WKContentView dragInteraction:item:willAnimateCancelWithAnimator:]):
        (-[WKContentView dropInteraction:performDrop:]):
        (-[WKContentView dropInteraction:sessionDidEnd:]):
        (-[WKContentView allowsLanguageSelectionMenuForListViewController:]):
        (-[WKContentView shouldDisplayInputContextViewForListViewController:]):
        (-[WKContentView numericInputModeForListViewController:]):
        (-[WKContentView textContentTypeForListViewController:]):
        (-[WKContentView allowsDictationInputForListViewController:]):
        (-[WKContentView _simulateLongPressActionAtLocation:]):
        (-[WKContentView _interactionShouldBeginFromPreviewItemController:forPosition:]):
        (-[WKContentView _presentationRectsForPreviewItemController:]):
        * UIProcess/ios/fullscreen/WKFullScreenViewController.mm:
        (WKFullScreenViewControllerPlaybackSessionModelClient::setInterface):
        (WKFullScreenViewControllerVideoFullscreenModelClient::setInterface):
        (WKFullScreenViewControllerVideoFullscreenModelClient::interface const):
        (-[WKFullScreenViewController videoControlsManagerDidChange]):
        (-[WKFullScreenViewController _manager]):
        (-[WKFullScreenViewController _togglePiPAction:]):
        * UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm:
        (-[WKFullscreenAnimationController configureInitialAndFinalStatesForTransition:]):
        (-[WKFullScreenWindowController isFullScreen]):
        (-[WKFullScreenWindowController enterFullScreen]):
        (-[WKFullScreenWindowController beganEnterFullScreenWithInitialFrame:finalFrame:]):
        (-[WKFullScreenWindowController exitFullScreen]):
        (-[WKFullScreenWindowController beganExitFullScreenWithInitialFrame:finalFrame:]):
        (-[WKFullScreenWindowController _completedExitFullScreen]):
        (-[WKFullScreenWindowController webViewDidRemoveFromSuperviewWhileInFullscreen]):
        (-[WKFullScreenWindowController _exitFullscreenImmediately]):
        (-[WKFullScreenWindowController _manager]):
        * UIProcess/mac/WebPageProxyMac.mm:
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/Cache/WebCacheStorageConnection.cpp:
        * WebProcess/WebPage/RemoteLayerTree/PlatformCAAnimationRemote.mm:
        (mediaTimeToCurrentTime):
        (-[WKAnimationDelegate initWithLayerID:layerTreeHost:]):
        * WebProcess/WebPage/mac/WKAccessibilityWebPageObjectBase.mm:
        (-[WKAccessibilityWebPageObjectBase accessibilityRootObjectWrapper]):

2018-12-10  Don Olmstead  <don.olmstead@sony.com>

        Move ENABLE_RESOURCE_LOAD_STATISTICS to FeatureDefines.xcconfig
        https://bugs.webkit.org/show_bug.cgi?id=192573

        Reviewed by Simon Fraser.

        * Configurations/FeatureDefines.xcconfig:

2018-12-10  Youenn Fablet  <youenn@apple.com>

        Remove derived classes of RealtimeMediaSourceCenter
        https://bugs.webkit.org/show_bug.cgi?id=192546

        Reviewed by Eric Carlson.

        pdate code according WebCore changes.

        * UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
        (WebKit::UserMediaCaptureManagerProxy::createMediaSourceForCaptureDeviceWithConstraints):
        * WebProcess/cocoa/UserMediaCaptureManager.cpp:
        (WebKit::UserMediaCaptureManager::~UserMediaCaptureManager):
        (WebKit::UserMediaCaptureManager::initialize):

2018-12-10  Tim Horton  <timothy_horton@apple.com>

        Animated scrolling on Google Maps scrolls the page in addition to moving the map
        https://bugs.webkit.org/show_bug.cgi?id=192521
        <rdar://problem/46382007>

        Reviewed by Sam Weinig.

        * Platform/spi/ios/UIKitSPI.h:
        * UIProcess/ios/WKKeyboardScrollingAnimator.mm:
        (-[WKKeyboardScrollViewAnimator rubberbandableDirections]):
        Only do keyboard-based rubber-banding in directions that we can actually
        scroll, not directions we can only finger-rubber-band in. This effectively
        means keyboard scrolling will ignore "alwaysBounce{Vertical, Horizontal}".

2018-12-10  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r239023.
        https://bugs.webkit.org/show_bug.cgi?id=192571

        Speculative rollout due to broken perf test (Requested by
        deanj on #webkit).

        Reverted changeset:

        "Enable HTTP and HTTPS proxies on iOS and make it a property
        of the NSURLSession"
        https://bugs.webkit.org/show_bug.cgi?id=192374
        https://trac.webkit.org/changeset/239023

2018-12-10  Wenson Hsieh  <wenson_hsieh@apple.com>

        Unreviewed, fix the iOS build after r239039.
        https://bugs.webkit.org/show_bug.cgi?id=192568

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView dropInteraction:sessionDidUpdate:]):

2018-12-10  Alex Christensen  <achristensen@webkit.org>

        Fix WatchOS build.

        * UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView actionNameForFocusedFormControlView:]):

2018-12-10  Matt Lewis  <jlewis3@apple.com>

        Unreviewed, rolling out r239029.

        This patch caused internal build failures.

        Reverted changeset:

        "[meta][WebKit] Remove using namespace WebCore and WebKit in
        the global scope for unified source builds"
        https://bugs.webkit.org/show_bug.cgi?id=192449
        https://trac.webkit.org/changeset/239029

2018-12-10  Chris Dumez  <cdumez@apple.com>

        Add SPI to allow the client to set the user-agent at main frame level, from the UIProcess
        https://bugs.webkit.org/show_bug.cgi?id=192509
        <rdar://problem/46500832>

        Reviewed by Alex Christensen.

        Add SPI to allow the client to set the user-agent at main frame level, from the UIProcess instead of doing
        it at resource-level from the injected bundle.

        The custom user-agent string can now be set on _WKWebsitePolicies during the
        decidePolicyForNavigationAction for the main feame, and will impact this main resource load as well as its
        future subresource loads.

        * Shared/WebsitePoliciesData.cpp:
        (WebKit::WebsitePoliciesData::encode const):
        (WebKit::WebsitePoliciesData::decode):
        (WebKit::WebsitePoliciesData::applyToDocumentLoader):
        * Shared/WebsitePoliciesData.h:
        * UIProcess/API/APIWebsitePolicies.cpp:
        (API::WebsitePolicies::data):
        * UIProcess/API/APIWebsitePolicies.h:
        * UIProcess/API/Cocoa/_WKWebsitePolicies.h:
        * UIProcess/API/Cocoa/_WKWebsitePolicies.mm:
        (-[_WKWebsitePolicies setCustomUserAgent:]):
        (-[_WKWebsitePolicies customUserAgent]):
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction):

2018-12-10  Alex Christensen  <achristensen@webkit.org>

        Safe browsing warning should layout buttons vertically in narrow WKWebViews
        https://bugs.webkit.org/show_bug.cgi?id=192535
        <rdar://problem/46308364>

        Reviewed by Tim Horton.

        They're usually next to each other, but in narrow WKWebViews they currently get clipped.
        In order to make it more likely that both buttons are completely visible, put one above
        the other if the WKWebView is too narrow to completely show both.  This also helps with
        languages where the translations of "Go Back" or "Show Details" are rendered wider than English.

        * UIProcess/Cocoa/WKSafeBrowsingWarning.mm:
        (buttonWidth):
        (-[WKSafeBrowsingWarning addContent]):

2018-12-10  Simon Fraser  <simon.fraser@apple.com>

        Allow control over child order when adding nodes to the scrolling tree
        https://bugs.webkit.org/show_bug.cgi?id=176914
        <rdar://problem/46542237>
        
        Re-land r239010 after over-zealous rollout.

        * Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp:
        (WebKit::RemoteScrollingCoordinatorTransaction::decode):

2018-12-10  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] Caret is obscured by finger when dragging over an editable element
        https://bugs.webkit.org/show_bug.cgi?id=192499
        <rdar://problem/46570101>

        Reviewed by Tim Horton.

        Add support for setting the `precise` property of `UIDropProposal` to YES when dragging over an editable area.
        When enabled, this property shifts the drop location up by a small amount, allowing the user to see the drop
        caret (currently, this is not the case, and it's difficult to drop text at a precise location on iOS). Changes
        are covered by adding to existing API tests.

        * Scripts/webkit/messages.py:
        * UIProcess/API/Cocoa/WKUIDelegatePrivate.h:

        Add a new version of `-_webView:willUpdateDataInteractionOperationToOperation:forSession:` that receives and
        returns a UIDropProposal, so that Mail can more easily port over existing logic in its legacy-WebKit-based
        compose implementation. iOS Safari is currently the only client of this private delegate, so the old version can
        be easily removed once Safari adopts this new version.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didPerformDragControllerAction):

        Add plumbing to send the latest drag handling method from WebPage to WebPageProxy.

        (WebKit::WebPageProxy::resetCurrentDragInformation):
        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::currentDragHandlingMethod const):
        * UIProcess/WebPageProxy.messages.in:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView dropInteraction:sessionDidUpdate:]):

        Call the new UI delegate hook when determining the drop proposal to return to UIKit. Additionally set the
        `precise` bit on the drop proposal in the case where the drop handling method is either "editing rich text" or
        "editing plain text".

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::performDragControllerAction):
        * WebProcess/WebPage/WebPage.h:

2018-12-10  Youenn Fablet  <youenn@apple.com>

        Make mock capture happen in the process used for real capture
        https://bugs.webkit.org/show_bug.cgi?id=192544

        Reviewed by Eric Carlson.

        Make mock capture happen in the right process by only overriding
        factories by mock factories for source types that UserMediaCaptureManager will not override.
        That way, UserMediaCaptureManager will be used to go to UIProcess, where mock will be used as if it was the real capture.

        * WebProcess/cocoa/UserMediaCaptureManager.cpp:
        (WebKit::UserMediaCaptureManager::initialize):

2018-12-10  Alexey Proskuryakov  <ap@apple.com>

        Move ENABLE_SEC_ITEM_SHIM out of WebKit's config.h
        https://bugs.webkit.org/show_bug.cgi?id=192428

        Reviewed by Tim Horton.

        * config.h:

2018-12-10  Alexey Proskuryakov  <ap@apple.com>

        Move more macros out of WebKit's config.h
        https://bugs.webkit.org/show_bug.cgi?id=192430

        Reviewed by Tim Horton.

        * config.h:

2018-12-10  Chris Fleizach  <cfleizach@apple.com>

        [meta][WebKit] Remove using namespace WebCore and WebKit in the global scope for unified source builds
        https://bugs.webkit.org/show_bug.cgi?id=192449

        Reviewed by Darin Adler.

        * NetworkProcess/Cookies/mac/WebCookieManagerMac.mm:
        * NetworkProcess/IndexedDB/WebIDBConnectionToClient.cpp:
        * NetworkProcess/ServiceWorker/WebSWServerConnection.cpp:
        * NetworkProcess/ServiceWorker/WebSWServerToContextConnection.cpp:
        * NetworkProcess/ios/NetworkProcessIOS.mm:
        * NetworkProcess/mac/NetworkProcessMac.mm:
        * NetworkProcess/mac/RemoteNetworkingContext.mm:
        * Platform/spi/ios/AccessibilitySupportSPI.h:
        * PlatformMac.cmake:
        * PluginProcess/PluginControllerProxy.cpp:
        * PluginProcess/PluginProcess.cpp:
        * PluginProcess/WebProcessConnection.cpp:
        * Scripts/PreferencesTemplates/WebPreferencesStoreDefaultsMap.cpp.erb:
        * Shared/API/c/cf/WKErrorCF.cpp:
        (WKErrorCreateWithCFError):
        (WKErrorCopyCFError):
        * Shared/API/c/cg/WKImageCG.cpp:
        (WKImageCreateCGImage):
        (WKImageCreateFromCGImage):
        * Shared/ChildProcess.cpp:
        * Shared/ContextMenuContextData.cpp:
        * Shared/EditorState.cpp:
        * Shared/Plugins/NPIdentifierData.cpp:
        * Shared/RemoteLayerTree/RemoteLayerTreePropertyApplier.mm:
        * Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp:
        * Shared/SessionState.cpp:
        * Shared/SessionTracker.cpp:
        * Shared/ShareableBitmap.cpp:
        * Shared/ShareableResource.cpp:
        * Shared/VisibleContentRectUpdateInfo.cpp:
        * Shared/WebBackForwardListItem.cpp:
        * Shared/WebContextMenuItemData.cpp:
        * Shared/WebCoreArgumentCoders.cpp:
        * Shared/WebHitTestResultData.cpp:
        * Shared/WebImage.cpp:
        * Shared/WebMediaSessionMetadata.cpp:
        * Shared/WebMemorySampler.cpp:
        * Shared/WebMouseEvent.cpp:
        * Shared/WebRenderObject.cpp:
        * Shared/WebSQLiteDatabaseTracker.cpp:
        * Shared/WebWheelEvent.cpp:
        * Shared/cf/ArgumentCodersCF.cpp:
        * Shared/ios/WebPlatformTouchPointIOS.cpp:
        * SourcesCocoa.txt:
        * UIProcess/API/APIContentRuleListStore.cpp:
        * UIProcess/API/APIHitTestResult.cpp:
        * UIProcess/API/APINavigation.cpp:
        * UIProcess/API/APIOpenPanelParameters.cpp:
        * UIProcess/API/APIPageConfiguration.cpp:
        * UIProcess/API/C/WKPage.cpp:
        (WKPageLoadURLWithShouldOpenExternalURLsPolicy):
        (WKPageLoadURLWithUserData):
        (WKPageLoadURLRequestWithUserData):
        (WKPageSetPaginationMode):
        (WKPageGetPaginationMode):
        (WKPageSetPageLoaderClient):
        (WKPageSetPagePolicyClient):
        * UIProcess/API/C/cg/WKIconDatabaseCG.cpp:
        * UIProcess/Cocoa/WebViewImpl.h:
        * UIProcess/Cocoa/WebViewImpl.mm:
        * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeHostIOS.mm:
        * UIProcess/WebStorage/LocalStorageDatabase.cpp:
        * UIProcess/ios/WKContentView.mm:
        (-[WKContentView _commonInitializationWithProcessPool:configuration:]):
        (-[WKContentView initWithFrame:processPool:configuration:webView:]):
        (-[WKContentView dealloc]):
        (-[WKContentView page]):
        (-[WKContentView updateFixedClippingView:]):
        (-[WKContentView didUpdateVisibleRect:unobscuredRect:unobscuredRectInScrollViewCoordinates:obscuredInsets:unobscuredSafeAreaInsets:inputViewBounds:scale:minimumScale:inStableState:isChangingObscuredInsetsInteractively:enclosedInScrollableAncestorView:]):
        (-[WKContentView _updateForScreen:]):
        (-[WKContentView _accessibilityRegisterUIProcessTokens]):
        (-[WKContentView _createDrawingAreaProxy]):
        (-[WKContentView _didCommitLayerTree:]):
        (-[WKContentView _wk_pageCountForPrintFormatter:]):
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKFocusedElementInfo initWithAssistedNodeInformation:isUserInitiated:userObject:]):
        (hasAssistedNode):
        (-[WKContentView setupInteraction]):
        (-[WKContentView positionInformation]):
        (-[WKContentView _webTouchEventsRecognized:]):
        (inflateQuad):
        (-[WKContentView _updateTapHighlight]):
        (-[WKContentView _showTapHighlight]):
        (-[WKContentView _requiresKeyboardWhenFirstResponder]):
        (-[WKContentView _displayFormNodeInputView]):
        (-[WKContentView inputView]):
        (-[WKContentView _actionForLongPressFromPositionInformation:]):
        (-[WKContentView currentPositionInformation]):
        (-[WKContentView doAfterPositionInformationUpdate:forRequest:]):
        (-[WKContentView _currentPositionInformationIsValidForRequest:]):
        (-[WKContentView _hasValidOutstandingPositionInformationRequest:]):
        (-[WKContentView _currentPositionInformationIsApproximatelyValidForRequest:]):
        (-[WKContentView gestureRecognizerShouldBegin:]):
        (-[WKContentView hasSelectablePositionAtPoint:]):
        (-[WKContentView pointIsNearMarkedText:]):
        (-[WKContentView textInteractionGesture:shouldBeginAtPoint:]):
        (-[WKContentView webSelectionRectsForSelectionRects:]):
        (-[WKContentView _twoFingerSingleTapGestureRecognized:]):
        (-[WKContentView _stylusSingleTapRecognized:]):
        (-[WKContentView _singleTapCommited:]):
        (-[WKContentView _attemptClickAtLocation:]):
        (-[WKContentView _positionInformationDidChange:]):
        (-[WKContentView requiresAccessoryView]):
        (-[WKContentView supportedPasteboardTypesForCurrentSelection]):
        (-[WKContentView _lookupForWebView:]):
        (-[WKContentView _shareForWebView:]):
        (-[WKContentView textStylingAtPosition:inDirection:]):
        (-[WKContentView canPerformActionForWebView:withSender:]):
        (-[WKContentView selectForWebView:]):
        (-[WKContentView _accessibilityRetrieveRectsEnclosingSelectionOffset:withGranularity:]):
        (-[WKContentView _accessibilityRetrieveRectsAtSelectionOffset:withText:completionHandler:]):
        (toGestureType):
        (toUIWKGestureType):
        (toSelectionTouch):
        (toUIWKSelectionTouch):
        (toGestureRecognizerState):
        (toUIGestureRecognizerState):
        (toUIWKSelectionFlags):
        (toWKTextGranularity):
        (toWKSelectionDirection):
        (selectionChangedWithGesture):
        (selectionChangedWithTouch):
        (-[WKContentView changeSelectionWithGestureAt:withGesture:withState:withFlags:]):
        (-[WKContentView autocorrectionData]):
        (-[WKContentView requestAutocorrectionRectsForString:withCompletionHandler:]):
        (-[WKContentView _becomeFirstResponderWithSelectionMovingForward:completionHandler:]):
        (-[WKContentView _updateAccessory]):
        (-[WKContentView selectedTextRange]):
        (-[WKContentView setMarkedText:selectedRange:]):
        (coreWritingDirection):
        (-[WKContentView closestPositionToPoint:]):
        (-[WKContentView insertText:]):
        (-[WKContentView textInputTraits]):
        (-[WKContentView handleKeyWebEvent:]):
        (-[WKContentView handleKeyWebEvent:withCompletionHandler:]):
        (-[WKContentView isScrollableForKeyboardScrollViewAnimator:]):
        (-[WKContentView keyboardScrollViewAnimator:distanceForIncrement:]):
        (-[WKContentView assistedNodeInformation]):
        (-[WKContentView assistedNodeSelectOptions]):
        (isAssistableInputType):
        (-[WKContentView _startAssistingNode:userIsInteracting:blurPreviousNode:changingActivityState:userObject:]):
        (-[WKContentView _stopAssistingNode]):
        (-[WKContentView updateCurrentAssistedNodeInformation:]):
        (-[WKContentView presentViewControllerForCurrentAssistedNode]):
        (-[WKContentView actionNameForFocusedFormControlView:]):
        (-[WKContentView selectWordForReplacement]):
        (-[WKContentView _updateChangedSelection:]):
        (-[WKContentView _beginSuppressingSelectionAssistantForReason:]):
        (-[WKContentView _stopSuppressingSelectionAssistantForReason:]):
        (-[WKContentView _showPlaybackTargetPicker:fromRect:routeSharingPolicy:routingContextUID:]):
        (-[WKContentView _showRunOpenPanel:resultListener:]):
        (-[WKContentView _showShareSheet:completionHandler:]):
        (-[WKContentView positionInformationForActionSheetAssistant:]):
        (-[WKContentView updatePositionInformationForActionSheetAssistant:]):
        (-[WKContentView _startDrag:item:]):
        (-[WKContentView _didHandleAdditionalDragItemsRequest:]):
        (-[WKContentView _didHandleStartDataInteractionRequest:]):
        (dropOperationForWebCoreDragOperation):
        (-[WKContentView dragDataForDropSession:dragDestinationAction:]):
        (-[WKContentView _didConcludeEditDataInteraction:]):
        (-[WKContentView _didPerformDragOperation:]):
        (-[WKContentView _prepareToDragPromisedAttachment:]):
        (-[WKContentView _itemsForBeginningOrAddingToSessionWithRegistrationList:stagedDragSource:]):
        (-[WKContentView _autofillContext]):
        (-[WKContentView _dragInteraction:itemsForAddingToSession:withTouchAtPoint:completion:]):
        (-[WKContentView _dragInteraction:prepareForSession:completion:]):
        (-[WKContentView dragInteraction:itemsForBeginningSession:]):
        (-[WKContentView dragInteraction:willAnimateLiftWithAnimator:session:]):
        (-[WKContentView dragInteraction:session:didEndWithOperation:]):
        (-[WKContentView dragInteraction:item:willAnimateCancelWithAnimator:]):
        (-[WKContentView dropInteraction:performDrop:]):
        (-[WKContentView dropInteraction:sessionDidEnd:]):
        (-[WKContentView allowsLanguageSelectionMenuForListViewController:]):
        (-[WKContentView shouldDisplayInputContextViewForListViewController:]):
        (-[WKContentView numericInputModeForListViewController:]):
        (-[WKContentView textContentTypeForListViewController:]):
        (-[WKContentView allowsDictationInputForListViewController:]):
        (-[WKContentView _simulateLongPressActionAtLocation:]):
        (-[WKContentView _interactionShouldBeginFromPreviewItemController:forPosition:]):
        (-[WKContentView _presentationRectsForPreviewItemController:]):
        * UIProcess/ios/fullscreen/WKFullScreenViewController.mm:
        (WKFullScreenViewControllerPlaybackSessionModelClient::setInterface):
        (WKFullScreenViewControllerVideoFullscreenModelClient::setInterface):
        (WKFullScreenViewControllerVideoFullscreenModelClient::interface const):
        (-[WKFullScreenViewController videoControlsManagerDidChange]):
        (-[WKFullScreenViewController _manager]):
        (-[WKFullScreenViewController _togglePiPAction:]):
        * UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm:
        (-[WKFullscreenAnimationController configureInitialAndFinalStatesForTransition:]):
        (-[WKFullScreenWindowController isFullScreen]):
        (-[WKFullScreenWindowController enterFullScreen]):
        (-[WKFullScreenWindowController beganEnterFullScreenWithInitialFrame:finalFrame:]):
        (-[WKFullScreenWindowController exitFullScreen]):
        (-[WKFullScreenWindowController beganExitFullScreenWithInitialFrame:finalFrame:]):
        (-[WKFullScreenWindowController _completedExitFullScreen]):
        (-[WKFullScreenWindowController webViewDidRemoveFromSuperviewWhileInFullscreen]):
        (-[WKFullScreenWindowController _exitFullscreenImmediately]):
        (-[WKFullScreenWindowController _manager]):
        * UIProcess/mac/WebPageProxyMac.mm:
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/Cache/WebCacheStorageConnection.cpp:
        * WebProcess/WebPage/RemoteLayerTree/PlatformCAAnimationRemote.mm:
        (mediaTimeToCurrentTime):
        (-[WKAnimationDelegate initWithLayerID:layerTreeHost:]):
        * WebProcess/WebPage/mac/WKAccessibilityWebPageObjectBase.mm:
        (-[WKAccessibilityWebPageObjectBase accessibilityRootObjectWrapper]):

2018-12-10  Tim Horton  <timothy_horton@apple.com>

        WKWebView should support custom tintColor
        https://bugs.webkit.org/show_bug.cgi?id=192518
        <rdar://problem/37243261>

        Reviewed by Wenson Hsieh.

        * Platform/spi/ios/UIKitSPI.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView insertionPointColor]):
        (-[WKContentView selectionBarColor]):
        (-[WKContentView selectionHighlightColor]):
        Grab insertion point and selection colors from UITextInputTraits.

        (-[WKContentView _updateInteractionTintColor]):
        Determine our effective tint color:
            - transparent if interaction is disabled
            - a CSS-derived color if caret-color style is applied
            - the _inheritedInteractionTintColor, which climbs up to the tintColor API
        Apply it to our UITextInputTraits.

        (-[WKContentView tintColorDidChange]):
        (-[WKContentView textInputTraits]):
        Call _updateInteractionTintColor whenever we create a new UITextInputTraits
        or when the tint color changes.

2018-12-09  Youenn Fablet  <youenn@apple.com>

        Move capture manager from RealtimeMediaSourceCenter to capture factory
        https://bugs.webkit.org/show_bug.cgi?id=192542

        Reviewed by Eric Carlson.

        Make sure to unregister for video capture as done for other capture types.
        Implement manager which should be doing nothing as the manager is used for enumeration of devices
        which should only happen in UIProcess.

        Given that mock capture is interfering with UserMediaCaptureManager,
        switching on/off mock capture will require creating a new process.
        This shortcoming should be fixed once mock capture will be fully happening in
        the same process as regular capture.

        * WebProcess/cocoa/UserMediaCaptureManager.cpp:
        (WebKit::UserMediaCaptureManager::~UserMediaCaptureManager):
        * WebProcess/cocoa/UserMediaCaptureManager.h:

2018-12-09  Saam barati  <sbarati@apple.com>

        Enable HTTP and HTTPS proxies on iOS and make it a property of the NSURLSession
        https://bugs.webkit.org/show_bug.cgi?id=192374
        <rdar://problem/46506286>

        Reviewed by Alex Christensen.

        This patch makes it so that we can use HTTP/HTTPS proxies on iOS as well.
        To enable on iOS, you can do something like:
        $ defaults write -g WebKit2HTTPProxy -string "http://localhost:8080"
        $ defaults write -g WebKit2HTTPSProxy -string "http://localhost:8080"
        
        This patch also changes the Proxy to be enabled on a per NSURLSession
        basis instead of a per process basis.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::initializeNetworkProcess):
        * NetworkProcess/NetworkSessionCreationParameters.cpp:
        (WebKit::NetworkSessionCreationParameters::privateSessionParameters):
        (WebKit::NetworkSessionCreationParameters::encode const):
        (WebKit::NetworkSessionCreationParameters::decode):
        * NetworkProcess/NetworkSessionCreationParameters.h:
        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (WebKit::proxyDictionary):
        (WebKit::NetworkSessionCocoa::NetworkSessionCocoa):
        * NetworkProcess/mac/NetworkProcessMac.mm:
        (WebKit::NetworkProcess::platformInitializeNetworkProcess):
        (WebKit::overrideSystemProxies): Deleted.
        * UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
        (-[WKWebsiteDataStore _initWithConfiguration:]):
        * UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h:
        * UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm:
        (-[_WKWebsiteDataStoreConfiguration httpProxy]):
        (-[_WKWebsiteDataStoreConfiguration setHTTPProxy:]):
        (-[_WKWebsiteDataStoreConfiguration httpsProxy]):
        (-[_WKWebsiteDataStoreConfiguration setHTTPSProxy:]):
        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        (WebKit::WebProcessPool::platformInitializeNetworkProcess):
        * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:
        (WebKit::WebsiteDataStore::parameters):
        * UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp:
        (WebKit::WebsiteDataStoreConfiguration::copy):
        * UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h:
        (WebKit::WebsiteDataStoreConfiguration::httpProxy const):
        (WebKit::WebsiteDataStoreConfiguration::setHTTPProxy):
        (WebKit::WebsiteDataStoreConfiguration::httpsProxy const):
        (WebKit::WebsiteDataStoreConfiguration::setHTTPSProxy):

2018-12-09  Adrian Perez de Castro  <aperez@igalia.com>

        Build failure due to missing include of APIWebsiteDataStore.h
        https://bugs.webkit.org/show_bug.cgi?id=192541

        Reviewed by Youenn Fablet.

        * UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp: Add missing
        include of APIWebsiteDataStore.h

2018-12-09  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS device] Crash when attempting to call -[_WKAttachment info] for an editable image
        https://bugs.webkit.org/show_bug.cgi?id=192538

        Reviewed by Tim Horton.

        Fix the crash by ensuring that the result of `-renderedDrawing` survives long enough to be wrapped by a
        `RetainPtr` in `-PNGRepresentation`. This isn't currently testable, since this codepath isn't supported on the
        iOS simulator; instead, I manually verified using MobileAttachments.app.

        * UIProcess/ios/WKDrawingView.mm:
        (-[WKDrawingView renderedDrawing]):

2018-12-09  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r239010.
        https://bugs.webkit.org/show_bug.cgi?id=192537

        Breaks fast/visual-viewport/tiled-drawing/zoomed-fixed-
        scrolling-layers-state.html again (Requested by ap on
        #webkit).

        Reverted changeset:

        "Allow control over child order when adding nodes to the
        scrolling tree"
        https://bugs.webkit.org/show_bug.cgi?id=176914
        https://trac.webkit.org/changeset/239010

2018-12-08  Alex Christensen  <achristensen@webkit.org>

        Don't programmatically capitalize safe browsing warning buttons
        https://bugs.webkit.org/show_bug.cgi?id=192531
        <rdar://problem/46417791>

        Reviewed by Darin Adler.

        * UIProcess/Cocoa/WKSafeBrowsingWarning.mm:
        (makeButton):

2018-12-08  Alex Christensen  <achristensen@webkit.org>

        Safe browsing warning should respect text size from settings
        https://bugs.webkit.org/show_bug.cgi?id=192205

        Reviewed by Tim Horton.

        * UIProcess/Cocoa/WKSafeBrowsingWarning.mm:
        (fontWithSize):
        (makeButton):
        (-[WKSafeBrowsingWarning addContent]):
        (-[WKSafeBrowsingWarning showDetailsClicked]):

2018-12-08  Frederic Wang  <fwang@igalia.com>

        Allow control over child order when adding nodes to the scrolling tree
        https://bugs.webkit.org/show_bug.cgi?id=176914
        <rdar://problem/46542237>

        Reviewed by Simon Fraser.

        Based on an earlier patch by Simon Fraser.

        * Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp:
        (WebKit::RemoteScrollingCoordinatorTransaction::decode):

2018-12-07  Rob Buis  <rbuis@igalia.com>

        Remove unused API in NetworkProcess
        https://bugs.webkit.org/show_bug.cgi?id=192415

        Reviewed by Alex Christensen.

        This patch removed some unused API and headers in NetworkProcess.

        * NetworkProcess/NetworkCORSPreflightChecker.cpp:
        (WebKit::NetworkCORSPreflightChecker::startPreflight):
        * NetworkProcess/NetworkCORSPreflightChecker.h:
        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        * NetworkProcess/NetworkConnectionToWebProcess.h:
        * NetworkProcess/NetworkContentRuleListManager.h:
        * NetworkProcess/NetworkDataTask.cpp:
        * NetworkProcess/NetworkDataTask.h:
        * NetworkProcess/NetworkDataTaskBlob.cpp:
        * NetworkProcess/NetworkLoad.cpp:
        * NetworkProcess/NetworkLoad.h:
        * NetworkProcess/NetworkLoadChecker.cpp:
        * NetworkProcess/NetworkLoadChecker.h:
        * NetworkProcess/NetworkLoadClient.h:
        * NetworkProcess/NetworkLoadParameters.h:
        * NetworkProcess/NetworkProcess.cpp:
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcessCreationParameters.h:
        * NetworkProcess/NetworkResourceLoadParameters.cpp:
        (WebKit::NetworkResourceLoadParameters::encode const):
        (WebKit::NetworkResourceLoadParameters::decode):
        * NetworkProcess/NetworkResourceLoadParameters.h:
        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::didReceiveBuffer):
        * NetworkProcess/NetworkResourceLoader.h:
        * NetworkProcess/NetworkSession.cpp:
        * NetworkProcess/NetworkSession.h:
        * NetworkProcess/NetworkSocketStream.cpp:
        * NetworkProcess/NetworkSocketStream.h:
        * NetworkProcess/PingLoad.cpp:
        (WebKit::PingLoad::PingLoad):
        * NetworkProcess/PingLoad.h:
        * NetworkProcess/PreconnectTask.cpp:
        (WebKit::PreconnectTask::PreconnectTask):
        (WebKit::PreconnectTask::frameID const): Deleted.
        (WebKit::PreconnectTask::pageID const): Deleted.
        * NetworkProcess/PreconnectTask.h:

2018-12-07  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] 'devicechange' event should not fire in frames that can't access capture devices
        https://bugs.webkit.org/show_bug.cgi?id=192511
        <rdar://problem/46562063>

        Reviewed by Youenn Fablet.

        * UIProcess/UserMediaPermissionCheckProxy.cpp:
        (WebKit::UserMediaPermissionCheckProxy::UserMediaPermissionCheckProxy): Remove userMediaID parameter.
        (WebKit::UserMediaPermissionCheckProxy::setUserMediaAccessInfo): ID not passed to callback.
        * UIProcess/UserMediaPermissionCheckProxy.h:
        (WebKit::UserMediaPermissionCheckProxy::create):
        (WebKit::UserMediaPermissionCheckProxy::completionHandler): Deleted.

        * UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
        (WebKit::generateRequestID): New.
        (WebKit::UserMediaPermissionRequestManagerProxy::captureDevicesChanged): Don't notify if
        the page does not have a granted request and does not have persistent access.
        (WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame): Use generateRequestID.
        (WebKit::UserMediaPermissionRequestManagerProxy::getUserMediaPermissionInfo): Change variable name.
        (WebKit::UserMediaPermissionRequestManagerProxy::enumerateMediaDevicesForFrame): Use generateRequestID.
        * UIProcess/UserMediaPermissionRequestManagerProxy.h:

2018-12-07  Saam Barati  <sbarati@apple.com>

        WKWebProcessPlugInLoadDelegate should have API for saying which rendering events it wants to listen for
        https://bugs.webkit.org/show_bug.cgi?id=192473

        Reviewed by Andy Estes.

        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInLoadDelegate.h:
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:
        (PageLoaderClient::layoutMilestones const):

2018-12-07  Youenn Fablet  <youenn@apple.com>

        Update libwebrtc up to 0d007d7c4f
        https://bugs.webkit.org/show_bug.cgi?id=192316

        Reviewed by Eric Carlson.

        Update code base according new libwebrtc backend
        In particular, use directly int64_t for packet time.

        * Configurations/WebKit.xcconfig:
        * NetworkProcess/webrtc/LibWebRTCSocketClient.cpp:
        (WebKit::LibWebRTCSocketClient::signalReadPacket):
        * NetworkProcess/webrtc/LibWebRTCSocketClient.h:
        * NetworkProcess/webrtc/NetworkRTCProvider.cpp:
        * NetworkProcess/webrtc/NetworkRTCSocket.h:
        * WebProcess/Network/webrtc/LibWebRTCSocket.cpp:
        (WebKit::LibWebRTCSocket::signalReadPacket):

2018-12-07  Truitt Savell  <tsavell@apple.com>

        Unreviewed, rolling out r238947.

        Revision caused fast/visual-viewport/tiled-drawing/zoomed-
        fixed-scrolling-layers-state.html to constantly fail

        Reverted changeset:

        "Allow control over child order when adding nodes to the
        scrolling tree"
        https://bugs.webkit.org/show_bug.cgi?id=176914
        https://trac.webkit.org/changeset/238947

2018-12-06  David Kilzer  <ddkilzer@apple.com>

        Injected bundle for WebKitTestRunner leaks WKTypeRef objects
        <https://webkit.org/b/192481>
        <rdar://problem/46539059>

        Reviewed by Simon Fraser.

        Change function parameter name from `returnData[Ref]` to
        `returnRetainedData[Ref]` to document that the value returned is
        a +1 retained WKTypeRef object.

        * WebProcess/InjectedBundle/API/c/WKBundle.cpp:
        (WKBundlePostSynchronousMessage):
        * WebProcess/InjectedBundle/API/c/WKBundle.h:
        * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
        (WKBundlePagePostSynchronousMessageForTesting):
        * WebProcess/InjectedBundle/API/c/WKBundlePage.h:

2018-12-06  Frederic Wang  <fwang@igalia.com>

        Allow control over child order when adding nodes to the scrolling tree
        https://bugs.webkit.org/show_bug.cgi?id=176914

        Reviewed by Simon Fraser.

        Based on an earlier patch by Simon Fraser.

        * Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp:
        (WebKit::RemoteScrollingCoordinatorTransaction::decode): Make explicit that we want to append
        the new node at the end of child list.

2018-12-06  Yongjun Zhang  <yongjun_zhang@apple.com>

        We should ignore minimumEffectiveDeviceWidth if the page specifies device-width in viewport meta-tag.
        https://bugs.webkit.org/show_bug.cgi?id=192377
        <rdar://problem/46364206>

        Reviewed by Tim Horton.

        Since we are using page's viewport arguments to decide the default viewport parameters and
        whether we can use mininum effective device width, we should always call setViewportArguments()
        regardless of shouldIgnoreMetaViewport settings.

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::viewportPropertiesDidChange): Always call setViewportArguments().
        (WebKit::WebPage::didCommitLoad): Ditto.

2018-12-06  Tim Horton  <timothy_horton@apple.com>

        Web Share API: share overlay does not stick to the Safari window
        https://bugs.webkit.org/show_bug.cgi?id=192469
        <rdar://problem/46074833>

        Reviewed by Wenson Hsieh.

        * UIProcess/Cocoa/WKShareSheet.mm:
        (-[WKShareSheet sharingServicePicker:didChooseSharingService:]):
        (-[WKShareSheet sharingServicePicker:delegateForSharingService:]):
        (-[WKShareSheet sharingService:sourceWindowForShareItems:sharingContentScope:]):
        (-[WKShareSheet sharingService:didFailToShareItems:error:]):
        (-[WKShareSheet sharingService:didShareItems:]):
        Implement another NSSharingServicePickerDelegate method to return
        an *NSSharingService* delegate when needed.

        Implement an NSSharingServiceDelegate method to return the window that
        the service's UI should attach to.

        Also, instead of notifying the Web Content process when a service is picked
        (or not) in the NSSharingServicePicker, wait until the share has completed
        (or failed) to send didComplete. This both makes the return completion
        value more accurate (matching iOS, if you cancel the share during the
        recipient choice step, it will now fail), and avoids explicitly tearing
        down the NSSharingServicePicker too early, which breaks the UI attaching mechanism.

2018-12-06  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] WKWebView should match UITextView behavior when editing text with an RTL keyboard
        https://bugs.webkit.org/show_bug.cgi?id=187554
        <rdar://problem/42075638>

        Reviewed by Tim Horton.

        Add support for automatically switching the base writing direction to the default writing direction with respect
        to the current keyboard in an editable WKWebView by implementing `-setBaseWritingDirection:forRange:`. On iOS 12
        and earlier, UIKit invokes this protocol method whenever the keyboard is changed to one with a different writing
        direction, although in some other versions of iOS, this only happens when first focusing an editable area.

        Test: editing/input/ios/rtl-keyboard-input-on-focus.html

        * Platform/spi/ios/UIKitSPI.h:

        Declare UIKeyboardImpl IPI methods mostly for use in WebKitTestRunner (with the exception of
        `-setInitialDirection`, which we may invoke when we receive the first post-layout EditorState update after
        focusing an editable element).

        * UIProcess/PageClient.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::increaseListLevel):
        (WebKit::WebPageProxy::decreaseListLevel):
        (WebKit::WebPageProxy::changeListType):
        (WebKit::WebPageProxy::setBaseWritingDirection):

        Drive-by style fixes: make these bail and return early if `!isValid()`.

        (WebKit::WebPageProxy::resetStateAfterProcessExited):

        Reset assisted node state in the UI process upon web process termination.

        * UIProcess/WebPageProxy.h:

        Add plumbing for `setBaseWritingDirection`, from `WebPageProxy` to `WebPage` to `Editor`.

        * UIProcess/ios/PageClientImplIOS.h:
        * UIProcess/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::didReceiveEditorStateUpdateAfterFocus):
        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView baseWritingDirectionForPosition:inDirection:]):
        (coreWritingDirection):
        (-[WKContentView setBaseWritingDirection:forRange:]):

        Support `-setBaseWritingDirectionForPosition:forRange:`, but only in the case where the given range is the
        selected range. This is all that's currently needed to fulfill the requirements in <rdar://problem/42075638>,
        though we could potentially add full support for this in the future by mapping the given text range to a DOM
        range and moving the selection prior to setting the base writing direction.

        (-[WKContentView _didReceiveEditorStateUpdateAfterFocus]):

        Add a hook to notify WKContentView when the first post-layout EditorState has been received in the UI process.
        When this is invoked, if the web view is editable and the selection is not a range, we call into `UIKeyboardImpl`
        to change the initial writing direction if necessary.

        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::startAssistingNode):
        (WebKit::WebPageProxy::stopAssistingNode):
        (WebKit::WebPageProxy::editorStateChanged):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::setBaseWritingDirection):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:

2018-12-06  David Quesada  <david_quesada@apple.com>

        -[WKProcessPool _resumeDownloadFromData:path:] should allow specifying the originating web view
        https://bugs.webkit.org/show_bug.cgi?id=192411
        rdar://problem/46492487

        Reviewed by Alex Christensen.

        * UIProcess/API/C/WKContext.cpp:
        (WKContextResumeDownload):
        * UIProcess/API/Cocoa/WKProcessPool.mm:
        (-[WKProcessPool _resumeDownloadFromData:path:originatingWebView:]):
        (-[WKProcessPool _resumeDownloadFromData:path:]): Deleted.
        * UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::resumeDownload):
         - Set the originating page of the DownloadProxy.
         - If the originating page is non-null, use its session ID for the download.
         - Remove a FIXME. It's possible to do this now by providing the web view whose session
           should be used for the download.
        * UIProcess/WebProcessPool.h:

2018-12-06  Jiewen Tan  <jiewen_tan@apple.com>

        Unreviewed, a quick fix after r238919

        Add an early return such that the error message is actually meaningful.

        * UIProcess/WebAuthentication/Mock/MockHidService.cpp:
        (WebKit::MockHidService::platformStartDiscovery):

2018-12-06  Alex Christensen  <achristensen@webkit.org>

        Remove unused LoaderStrategy::storeDerivedDataToCache and associated dead code
        https://bugs.webkit.org/show_bug.cgi?id=192452

        Reviewed by Anders Carlsson.

        This was introduced in r210835 but never used.
        It's preventing me from making the disk cache associated with a SessionID/NetworkSession.

        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::storeDerivedDataToCache): Deleted.
        * NetworkProcess/NetworkConnectionToWebProcess.h:
        * NetworkProcess/NetworkConnectionToWebProcess.messages.in:
        * NetworkProcess/NetworkResourceLoadParameters.cpp:
        (WebKit::NetworkResourceLoadParameters::encode const):
        (WebKit::NetworkResourceLoadParameters::decode):
        * NetworkProcess/NetworkResourceLoadParameters.h:
        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::continueDidReceiveResponse):
        (WebKit::NetworkResourceLoader::didRetrieveCacheEntry):
        (WebKit::NetworkResourceLoader::continueProcessingCachedEntryAfterDidReceiveResponse): Deleted.
        * NetworkProcess/NetworkResourceLoader.h:
        * WebProcess/Network/WebLoaderStrategy.cpp:
        (WebKit::WebLoaderStrategy::scheduleLoadFromNetworkProcess):
        (WebKit::WebLoaderStrategy::storeDerivedDataToCache): Deleted.
        * WebProcess/Network/WebLoaderStrategy.h:
        * WebProcess/Network/WebResourceLoader.cpp:
        (WebKit::WebResourceLoader::didRetrieveDerivedData): Deleted.
        * WebProcess/Network/WebResourceLoader.messages.in:

2018-12-06  Carlos Eduardo Ramalho  <cadubentzen@gmail.com>

        REGRESSION(r231043): [GTK] Undefined references to WebCore::LayerRepresentation::* with -DENABLE_OPENGL=OFF builds
        https://bugs.webkit.org/show_bug.cgi?id=191997

        Reviewed by Philippe Normand.

        Fix build with -DENABLE_OPENGL=OFF and -DENABLE_VIDEO=OFF.

        * Shared/WebEventConversion.cpp:
        (WebKit::WebKit2PlatformWheelEvent::WebKit2PlatformWheelEvent): add required #if ENABLE(ASYNC_SCROLLING)

2018-12-05  Ryosuke Niwa  <rniwa@webkit.org>

        REGRESSION(PSON): Process swapping code doesn't set DisplayID in WebContent process
        https://bugs.webkit.org/show_bug.cgi?id=192290

        Reviewed by Simon Fraser.

        Fixed the bug by updating the DisplayID upon attaching to a WebContent process
        after a process swap as well as after the previous WebContent process had crashed.

        Unfortunately no new tests since WebKitTestRunner / DumpRenderTree should use 0 as DisplayID
        as they have an off-screen NSWindow. The issue that this results in no fallback for
        the animation timer is tracked by webkit.org/b/192448.

        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::didRelaunchProcess):

2018-12-05  Youenn Fablet  <youenn@apple.com>

        Remove a document entry from NetworkMDNSRegister::m_services when document goes away
        https://bugs.webkit.org/show_bug.cgi?id=192429

        Reviewed by Eric Carlson.

        * NetworkProcess/webrtc/NetworkMDNSRegister.cpp:
        (WebKit::NetworkMDNSRegister::unregisterMDNSNames):
        We should remove the entry to limit the size of the map.

2018-12-05  Jiewen Tan  <jiewen_tan@apple.com>

        [Mac] Layout Test http/wpt/webauthn/public-key-credential-create-success-hid.https.html and http/wpt/webauthn/public-key-credential-get-success-hid.https.html are flaky
        https://bugs.webkit.org/show_bug.cgi?id=192061

        Reviewed by Dewei Zhu.

        Part 1.

        Add some loggings to determine possible causes for the flakiness.

        * UIProcess/WebAuthentication/Cocoa/HidService.mm:
        (WebKit::HidService::continueAddDeviceAfterGetInfo):
        * UIProcess/WebAuthentication/Mock/MockHidService.cpp:
        (WebKit::MockHidService::platformStartDiscovery):

2018-12-05  Chris Dumez  <cdumez@apple.com>

        Simplify logic inside WebPageProxy::continueNavigationInNewProcess()
        https://bugs.webkit.org/show_bug.cgi?id=192404

        Reviewed by Alex Christensen.

        Simplify get the item state from the current back/forward list item, instead of
        relying on WebBackForwardList::filteredItemStates().

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::continueNavigationInNewProcess):

2018-12-05  Youenn Fablet  <youenn@apple.com>

        Enable the possibility to do video capture in UIProcess
        https://bugs.webkit.org/show_bug.cgi?id=192394

        Reviewed by Eric Carlson.

        Add two web preferences to toggle audio/video capture in UIProcess or WebProcess.
        Add mechanism for video capture that was not implemented yet.

        * Shared/WebPreferences.yaml:
        * Shared/WebPreferencesDefaultValues.h:
        * Shared/WebProcessCreationParameters.cpp:
        (WebKit::WebProcessCreationParameters::encode const):
        (WebKit::WebProcessCreationParameters::decode):
        * Shared/WebProcessCreationParameters.h:
        * UIProcess/API/APIProcessPoolConfiguration.h:
        * UIProcess/API/C/WKPreferences.cpp:
        (WKPreferencesSetCaptureAudioInUIProcessEnabled):
        (WKPreferencesGetCaptureAudioInUIProcessEnabled):
        (WKPreferencesSetCaptureVideoInUIProcessEnabled):
        (WKPreferencesGetCaptureVideoInUIProcessEnabled):
        * UIProcess/API/C/WKPreferencesRef.h:
        * UIProcess/WebPreferences.cpp:
        (WebKit::WebPreferences::updateBoolValueForInternalDebugFeatureKey):
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::initializeNewWebProcess):
        (WebKit::WebProcessPool::createWebPage):
        * WebProcess/cocoa/UserMediaCaptureManager.cpp:
        (WebKit::UserMediaCaptureManager::initialize):

2018-12-05  Alex Christensen  <achristensen@webkit.org>

        Make WebsiteDataStoreConfiguration a proper API object
        https://bugs.webkit.org/show_bug.cgi?id=192380

        Reviewed by Youenn Fablet.

        In the immediate future I'll need to add things to _WKWebsiteDataStoreConfiguration.
        Instead of making ivars, setting them, copying them to a local object, make this a wrapper of an API::Object
        like all our other ObjC API objects are.

        * Shared/API/APIObject.h:
        (API::Object::wrapper const):
        (API::Object::wrapper): Deleted.
        * Shared/Cocoa/APIObject.mm:
        (API::Object::ref const):
        (API::Object::deref const):
        (API::Object::newObject):
        (API::Object::ref): Deleted.
        (API::Object::deref): Deleted.
        * Sources.txt:
        * UIProcess/API/APIProcessPoolConfiguration.cpp:
        (API::ProcessPoolConfiguration::createWithWebsiteDataStoreConfiguration):
        * UIProcess/API/APIProcessPoolConfiguration.h:
        * UIProcess/API/APIWebsiteDataStore.cpp:
        (API::WebsiteDataStore::createLegacy):
        (API::WebsiteDataStore::WebsiteDataStore):
        (API::WebsiteDataStore::legacyDefaultDataStoreConfiguration):
        * UIProcess/API/APIWebsiteDataStore.h:
        * UIProcess/API/Cocoa/APIWebsiteDataStoreCocoa.mm:
        (API::WebsiteDataStore::defaultDataStoreConfiguration):
        * UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
        (-[WKWebsiteDataStore _initWithConfiguration:]):
        * UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm:
        (-[_WKWebsiteDataStoreConfiguration _webStorageDirectory]):
        (-[_WKWebsiteDataStoreConfiguration _setWebStorageDirectory:]):
        (-[_WKWebsiteDataStoreConfiguration _indexedDBDatabaseDirectory]):
        (-[_WKWebsiteDataStoreConfiguration _setIndexedDBDatabaseDirectory:]):
        (-[_WKWebsiteDataStoreConfiguration _webSQLDatabaseDirectory]):
        (-[_WKWebsiteDataStoreConfiguration _setWebSQLDatabaseDirectory:]):
        (-[_WKWebsiteDataStoreConfiguration _cookieStorageFile]):
        (-[_WKWebsiteDataStoreConfiguration _setCookieStorageFile:]):
        (-[_WKWebsiteDataStoreConfiguration _resourceLoadStatisticsDirectory]):
        (-[_WKWebsiteDataStoreConfiguration _setResourceLoadStatisticsDirectory:]):
        (-[_WKWebsiteDataStoreConfiguration _cacheStorageDirectory]):
        (-[_WKWebsiteDataStoreConfiguration _setCacheStorageDirectory:]):
        (-[_WKWebsiteDataStoreConfiguration _serviceWorkerRegistrationDirectory]):
        (-[_WKWebsiteDataStoreConfiguration _setServiceWorkerRegistrationDirectory:]):
        (-[_WKWebsiteDataStoreConfiguration setSourceApplicationBundleIdentifier:]):
        (-[_WKWebsiteDataStoreConfiguration sourceApplicationBundleIdentifier]):
        (-[_WKWebsiteDataStoreConfiguration sourceApplicationSecondaryIdentifier]):
        (-[_WKWebsiteDataStoreConfiguration setSourceApplicationSecondaryIdentifier:]):
        (-[_WKWebsiteDataStoreConfiguration _apiObject]):
        * UIProcess/API/Cocoa/_WKWebsiteDataStoreConfigurationInternal.h: Added.
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::retrieveCacheStorageParameters):
        * UIProcess/WebProcessPool.cpp:
        (WebKit::legacyWebsiteDataStoreConfiguration):
        (WebKit::WebProcessPool::mayHaveRegisteredServiceWorkers):
        * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:
        (WebKit::WebsiteDataStore::parameters):
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::create):
        (WebKit::WebsiteDataStore::WebsiteDataStore):
        (WebKit::WebsiteDataStore::resolveDirectoriesIfNecessary):
        (WebKit::WebsiteDataStore::fetchDataAndApply):
        (WebKit::WebsiteDataStore::removeData):
        (WebKit::WebsiteDataStore::parameters):
        (WebKit::WebsiteDataStore::Configuration::Configuration): Deleted.
        * UIProcess/WebsiteData/WebsiteDataStore.h:
        (WebKit::WebsiteDataStore::cacheStoragePerOriginQuota const):
        (WebKit::WebsiteDataStore::setCacheStoragePerOriginQuota):
        (WebKit::WebsiteDataStore::cacheStorageDirectory const):
        (WebKit::WebsiteDataStore::setCacheStorageDirectory):
        (WebKit::WebsiteDataStore::serviceWorkerRegistrationDirectory const):
        (WebKit::WebsiteDataStore::setServiceWorkerRegistrationDirectory):
        (WebKit::WebsiteDataStore::resolvedApplicationCacheDirectory const):
        (WebKit::WebsiteDataStore::resolvedMediaCacheDirectory const):
        (WebKit::WebsiteDataStore::resolvedMediaKeysDirectory const):
        (WebKit::WebsiteDataStore::resolvedDatabaseDirectory const):
        (WebKit::WebsiteDataStore::resolvedJavaScriptConfigurationDirectory const):
        (WebKit::WebsiteDataStore::resolvedCookieStorageFile const):
        (WebKit::WebsiteDataStore::resolvedIndexedDatabaseDirectory const):
        (WebKit::WebsiteDataStore::resolvedServiceWorkerRegistrationDirectory const):
        (WebKit::WebsiteDataStore::resolvedResourceLoadStatisticsDirectory const):
        * UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp: Added.
        (WebKit::WebsiteDataStoreConfiguration::WebsiteDataStoreConfiguration):
        * UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h: Added.
        (WebKit::WebsiteDataStoreConfiguration::create):
        (WebKit::WebsiteDataStoreConfiguration::cacheStoragePerOriginQuota):
        (WebKit::WebsiteDataStoreConfiguration::setCacheStoragePerOriginQuota):
        (WebKit::WebsiteDataStoreConfiguration::applicationCacheDirectory const):
        (WebKit::WebsiteDataStoreConfiguration::setApplicationCacheDirectory):
        (WebKit::WebsiteDataStoreConfiguration::mediaCacheDirectory const):
        (WebKit::WebsiteDataStoreConfiguration::setMediaCacheDirectory):
        (WebKit::WebsiteDataStoreConfiguration::mediaKeysStorageDirectory const):
        (WebKit::WebsiteDataStoreConfiguration::setMediaKeysStorageDirectory):
        (WebKit::WebsiteDataStoreConfiguration::javaScriptConfigurationDirectory const):
        (WebKit::WebsiteDataStoreConfiguration::setJavaScriptConfigurationDirectory):
        (WebKit::WebsiteDataStoreConfiguration::webStorageDirectory const):
        (WebKit::WebsiteDataStoreConfiguration::setWebStorageDirectory):
        (WebKit::WebsiteDataStoreConfiguration::indexedDBDatabaseDirectory const):
        (WebKit::WebsiteDataStoreConfiguration::setIndexedDBDatabaseDirectory):
        (WebKit::WebsiteDataStoreConfiguration::webSQLDatabaseDirectory const):
        (WebKit::WebsiteDataStoreConfiguration::setWebSQLDatabaseDirectory):
        (WebKit::WebsiteDataStoreConfiguration::localStorageDirectory const):
        (WebKit::WebsiteDataStoreConfiguration::setLocalStorageDirectory):
        (WebKit::WebsiteDataStoreConfiguration::cookieStorageFile const):
        (WebKit::WebsiteDataStoreConfiguration::setCookieStorageFile):
        (WebKit::WebsiteDataStoreConfiguration::resourceLoadStatisticsDirectory const):
        (WebKit::WebsiteDataStoreConfiguration::setResourceLoadStatisticsDirectory):
        (WebKit::WebsiteDataStoreConfiguration::networkCacheDirectory const):
        (WebKit::WebsiteDataStoreConfiguration::setNetworkCacheDirectory):
        (WebKit::WebsiteDataStoreConfiguration::cacheStorageDirectory const):
        (WebKit::WebsiteDataStoreConfiguration::setCacheStorageDirectory):
        (WebKit::WebsiteDataStoreConfiguration::applicationCacheFlatFileSubdirectoryName const):
        (WebKit::WebsiteDataStoreConfiguration::setApplicationCacheFlatFileSubdirectoryName):
        (WebKit::WebsiteDataStoreConfiguration::serviceWorkerRegistrationDirectory const):
        (WebKit::WebsiteDataStoreConfiguration::setServiceWorkerRegistrationDirectory):
        (WebKit::WebsiteDataStoreConfiguration::sourceApplicationBundleIdentifier const):
        (WebKit::WebsiteDataStoreConfiguration::setSourceApplicationBundleIdentifier):
        (WebKit::WebsiteDataStoreConfiguration::sourceApplicationSecondaryIdentifier const):
        (WebKit::WebsiteDataStoreConfiguration::setSourceApplicationSecondaryIdentifier):
        * WebKit.xcodeproj/project.pbxproj:

2018-12-05  Wenson Hsieh  <wenson_hsieh@apple.com>

        Turn WritingDirection into an enum class
        https://bugs.webkit.org/show_bug.cgi?id=192401
        Work towards <rdar://problem/42075638>

        Reviewed by Dan Bernstein.

        Change WritingDirection from an enum to an enum class. No change in behavior.

        * WebProcess/WebPage/WebFrame.cpp:
        (WebKit::WebFrame::setTextDirection):

2018-12-05  Rob Buis  <rbuis@igalia.com>

        [Mac] HEAD requests changed to GET after 301, 302, and 303 redirections (http/tests/xmlhttprequest/head-redirection.html)
        https://bugs.webkit.org/show_bug.cgi?id=114965

        Reviewed by Frédéric Wang.

        HEAD requests should not be changed to GET after 303 redirects, see [1].
        This was fixed earlier for GTK [2].

        Behavior matches Firefox and Chrome.

        [1] http://tools.ietf.org/html/draft-ietf-httpbis-p2-semantics-21#section-7.4
        [2] https://bugs.webkit.org/show_bug.cgi?id=110127

        Tests: web-platform-tests/fetch/api/redirect/redirect-method.html
               web-platform-tests/fetch/api/redirect/redirect-method-worker.html
               http/tests/xmlhttprequest/head-redirection.html

        * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
        (WebKit::NetworkDataTaskCocoa::willPerformHTTPRedirection):

2018-12-04  Fujii Hironori  <Hironori.Fujii@sony.com>

        Remove using namespace WebCore and WebKit under WebKit/Shared/API
        https://bugs.webkit.org/show_bug.cgi?id=192352

        Reviewed by Alex Christensen.

        Removed using namespace statements, and use namespace prefix
        instead.

        * Shared/API/APIURLRequest.cpp:
        * Shared/API/APIURLResponse.cpp:
        * Shared/API/c/WKArray.cpp:
        * Shared/API/c/WKCertificateInfo.cpp:
        * Shared/API/c/WKConnectionRef.cpp:
        * Shared/API/c/WKContextMenuItem.cpp:
        * Shared/API/c/WKData.cpp:
        * Shared/API/c/WKDictionary.cpp:
        * Shared/API/c/WKErrorRef.cpp:
        * Shared/API/c/WKGeometry.cpp:
        * Shared/API/c/WKImage.cpp:
        * Shared/API/c/WKMutableArray.cpp:
        * Shared/API/c/WKMutableDictionary.cpp:
        * Shared/API/c/WKNumber.cpp:
        * Shared/API/c/WKPluginInformation.cpp:
        * Shared/API/c/WKRenderLayer.cpp:
        * Shared/API/c/WKRenderObject.cpp:
        * Shared/API/c/WKSecurityOriginRef.cpp:
        * Shared/API/c/WKSerializedScriptValue.cpp:
        * Shared/API/c/WKString.cpp:
        * Shared/API/c/WKType.cpp:
        * Shared/API/c/WKURL.cpp:
        * Shared/API/c/WKURLRequest.cpp:
        * Shared/API/c/WKURLResponse.cpp:
        * Shared/API/c/WKUserContentURLPattern.cpp:
        * Shared/API/c/cairo/WKImageCairo.cpp:
        * Shared/API/c/curl/WKCertificateInfoCurl.cpp:

2018-12-04  Alex Christensen  <achristensen@webkit.org>

        Remove source application identifiers from NetworkProcessCreationParameters
        https://bugs.webkit.org/show_bug.cgi?id=192372

        Reviewed by Brady Eidson.

        The _WKWebProcessPoolConfiguration way of setting these was deprecated in http://trac.webkit.org/r235127
        The replacement was adopted in <rdar://problem/46359330>
        The transition process is done!  Time to remove the old code.

        * NetworkProcess/NetworkProcessCreationParameters.cpp:
        (WebKit::NetworkProcessCreationParameters::encode const):
        (WebKit::NetworkProcessCreationParameters::decode):
        * NetworkProcess/NetworkProcessCreationParameters.h:
        * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
        (WebKit::NetworkProcess::platformInitializeNetworkProcessCocoa):
        * NetworkProcess/cocoa/NetworkSessionCocoa.h:
        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (WebKit::NetworkSessionCocoa::NetworkSessionCocoa):
        (WebKit::globalSourceApplicationAuditTokenData): Deleted.
        (WebKit::globalSourceApplicationBundleIdentifier): Deleted.
        (WebKit::globalSourceApplicationSecondaryIdentifier): Deleted.
        (WebKit::NetworkSessionCocoa::setSourceApplicationAuditTokenData): Deleted.
        (WebKit::NetworkSessionCocoa::setSourceApplicationBundleIdentifier): Deleted.
        (WebKit::NetworkSessionCocoa::setSourceApplicationSecondaryIdentifier): Deleted.
        * UIProcess/API/APIProcessPoolConfiguration.cpp:
        (API::ProcessPoolConfiguration::copy):
        * UIProcess/API/APIProcessPoolConfiguration.h:
        * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm:
        (-[_WKProcessPoolConfiguration sourceApplicationBundleIdentifier]):
        (-[_WKProcessPoolConfiguration setSourceApplicationBundleIdentifier:]):
        (-[_WKProcessPoolConfiguration sourceApplicationSecondaryIdentifier]):
        (-[_WKProcessPoolConfiguration setSourceApplicationSecondaryIdentifier:]):
        * UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
        (WebKit::WebPaymentCoordinatorProxy::platformCanMakePaymentsWithActiveCard):
        (WebKit::toPKPaymentRequest):
        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        (WebKit::WebProcessPool::platformInitializeNetworkProcess):
        * UIProcess/WebsiteData/WebsiteDataStore.h:
        (WebKit::WebsiteDataStore::configuration):

2018-12-04  Youenn Fablet  <youenn@apple.com>

        Calling getUserMedia in a link that was opened with target="_blank" does not work the second time
        https://bugs.webkit.org/show_bug.cgi?id=188088
        <rdar://problem/42681448>

        Reviewed by Eric Carlson.

        On closing a page, we need to make sure to consider that the capture is ended,
        as otherwise WebPageProxy will not get noticed from WebPage, since WebPageProxy is no longer an IPC receiver.

        * UIProcess/UserMediaProcessManager.cpp:
        (WebKit::UserMediaProcessManager::endedCaptureSession):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::close):

2018-12-04  Chris Dumez  <cdumez@apple.com>

        Regression(r238817) PSON Page Cache API tests are failing
        https://bugs.webkit.org/show_bug.cgi?id=192348

        Reviewed by Alex Christensen.

        Before suspending a WebProcess on iOS, we normally fake a memory pressure signal
        so that the suspended process uses as little memory as possible while suspended.
        Among other things, this will clear the page cache. This is an issue in the case
        of process-swap on navigation because we keep suspended web processes around to
        keep Page Cache functional.

        To address the issue, when a WebProcess is about to get suspended, we check if
        the process has any suspended WebPage (WebPage used for PSON PageCache support)
        and we bypass the PageCache clearing if it does.

        Our API tests did not catch this before r238817 because the NavigationState's
        assertion was preventing the old WebProcesses from suspending for 3 seconds,
        which was enough for those tests to complete.

        * UIProcess/SuspendedPageProxy.cpp:
        (WebKit::SuspendedPageProxy::SuspendedPageProxy):
        (WebKit::SuspendedPageProxy::didFinishLoad):
        * UIProcess/SuspendedPageProxy.h:
        Take a background assertion until the suspension load is complete, to make sure
        the suspension load has a chance to complete before the process gets suspended.

        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::initializeWebProcess):
        (WebKit::WebProcess::hasPageRequiringPageCacheWhileSuspended const):
        (WebKit::WebProcess::actualPrepareToSuspend):
        * WebProcess/WebProcess.h:

2018-12-04  Youenn Fablet  <youenn@apple.com>

        Device orientation may be wrong on page reload after crash
        https://bugs.webkit.org/show_bug.cgi?id=192349
        <rdar://problem/46359466>

        Reviewed by Eric Carlson.

        On page crash, the process is relaunched and the page is reloaded.
        At that point, the orientation information of the page is not reset until the next device orientation change.
        To fix that, add the device orientation to the page creation parameters so that we pass it everytime we create a page.
        Covered by manual testing.

        * Shared/WebPageCreationParameters.cpp:
        (WebKit::WebPageCreationParameters::encode const):
        (WebKit::WebPageCreationParameters::decode):
        * Shared/WebPageCreationParameters.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::creationParameters):
        * WebProcess/WebPage/WebPage.cpp:

2018-12-04  Carlos Eduardo Ramalho  <cadubentzen@gmail.com>

        [WPE] Add gtk-doc
        https://bugs.webkit.org/show_bug.cgi?id=178900

        Reviewed by Michael Catanzaro.

        Add gtk-doc to WPE port. This patch tries to reuse as much code from
        WebKitGTK+ as possible.

        * PlatformWPE.cmake: Write variables to gtkdoc-wpe.cfg and gtkdoc-webextensions that is used by python script later.
        * UIProcess/API/wpe/WebKitWebContext.h: Placed sandbox functions in the same location as in the WebKitGTK+ for consistency.
        * UIProcess/API/wpe/docs/wpe-0.1-sections.txt: Added.
        * UIProcess/API/wpe/docs/wpe-docs.sgml: Added.
        * WebProcess/InjectedBundle/API/wpe/WebKitWebPage.h: Placed webkit_web_page_get_dom_document
        in the same position as in the WebKitGTK+ for consistency.
        * WebProcess/InjectedBundle/API/wpe/docs/wpe-webextensions-0.1-sections.txt: Added.
        * WebProcess/InjectedBundle/API/wpe/docs/wpe-webextensions-docs.sgml: Added.

2018-12-04  Carlos Garcia Campos  <cgarcia@igalia.com>

        [SOUP] Move URLSoup back to WebCore after r238771
        https://bugs.webkit.org/show_bug.cgi?id=192306

        Reviewed by Michael Catanzaro.

        Include GUniquePtrSoup from WebCore again and fix several build failures that showed up after removing the soup
        includes from URL header.

        * NetworkProcess/soup/NetworkDataTaskSoup.cpp:
        (WebKit::NetworkDataTaskSoup::tlsConnectionAcceptCertificate):
        * PluginProcess/PluginProcess.cpp:
        * Shared/API/glib/WebKitURIRequest.cpp:
        * Shared/API/glib/WebKitURIResponse.cpp:
        * UIProcess/API/glib/APIWebsiteDataStoreGLib.cpp:
        * UIProcess/API/glib/WebKitURISchemeRequest.cpp:
        (webkit_uri_scheme_request_finish_error): Use soupURIToURL().
        * UIProcess/API/glib/WebKitWebView.cpp:
        (webkit_web_view_load_uri): Use soupURIToURL().
        * UIProcess/API/gtk/WebKitAuthenticationDialog.cpp:
        * UIProcess/Launcher/glib/BubblewrapLauncher.h:
        * UIProcess/Launcher/glib/FlatpakLauncher.cpp:
        * UIProcess/Launcher/glib/FlatpakLauncher.h:

2018-12-04  Tim Horton  <timothy_horton@apple.com>

        Fix the watchOS build; stop unnecessarily linking CorePDF
        https://bugs.webkit.org/show_bug.cgi?id=192356
        <rdar://problem/46427844>

        Reviewed by Wenson Hsieh.

        * Configurations/WebKit.xcconfig:
        * Platform/spi/ios/CorePDFSPI.h:

2018-12-03  Tim Horton  <timothy_horton@apple.com>

        Make it possible to disable animated keyboard scrolling behavior
        https://bugs.webkit.org/show_bug.cgi?id=192331
        <rdar://problem/45586859>

        Reviewed by Simon Fraser.

        * UIProcess/API/Cocoa/WKWebView.mm:
        * UIProcess/ios/WKKeyboardScrollingAnimator.mm:
        (-[WKKeyboardScrollingAnimator invalidate]):
        (-[WKKeyboardScrollingAnimator beginWithEvent:]):
        (-[WKKeyboardScrollingAnimator stopAnimatedScroll]):
        (-[WKKeyboardScrollingAnimator willStartInteractiveScroll]):
        (-[WKKeyboardScrollingAnimator startRepeatTimerIfNeeded]):
        (-[WKKeyboardScrollingAnimator stopRepeatTimer]):
        (-[WKKeyboardScrollingAnimator performDiscreteScroll]):
        (-[WKKeyboardScrollViewAnimator scrollToContentOffset:animated:]):
        (-[WKKeyboardScrollViewAnimator scrollWithScrollToExtentAnimationTo:]):
        * WebKit.xcodeproj/project.pbxproj:

2018-12-03  Fujii Hironori  <Hironori.Fujii@sony.com>

        Remove "using namespace WebKit" under Source/WebKit/WebProcess/InjectedBundle/API
        https://bugs.webkit.org/show_bug.cgi?id=192301

        Reviewed by Alex Christensen.

        Removed "using namespace WebKit" statement, and use "WebKit::"
        namespace prefix instead.

        * WebProcess/InjectedBundle/API/c/WKBundle.cpp:
        * WebProcess/InjectedBundle/API/c/WKBundleBackForwardList.cpp:
        * WebProcess/InjectedBundle/API/c/WKBundleBackForwardListItem.cpp:
        * WebProcess/InjectedBundle/API/c/WKBundleDOMWindowExtension.cpp:
        * WebProcess/InjectedBundle/API/c/WKBundleFrame.cpp:
        * WebProcess/InjectedBundle/API/c/WKBundleHitTestResult.cpp:
        * WebProcess/InjectedBundle/API/c/WKBundleInspector.cpp:
        * WebProcess/InjectedBundle/API/c/WKBundleNavigationAction.cpp:
        * WebProcess/InjectedBundle/API/c/WKBundleNodeHandle.cpp:
        * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
        * WebProcess/InjectedBundle/API/c/WKBundlePageBanner.cpp:
        * WebProcess/InjectedBundle/API/c/WKBundlePageGroup.cpp:
        * WebProcess/InjectedBundle/API/c/WKBundlePageOverlay.cpp:
        * WebProcess/InjectedBundle/API/c/WKBundleRangeHandle.cpp:
        * WebProcess/InjectedBundle/API/c/WKBundleScriptWorld.cpp:

2018-12-03  Chris Dumez  <cdumez@apple.com>

        Regression(PSON) Google OAuth is broken in private sessions
        https://bugs.webkit.org/show_bug.cgi?id=192337
        <rdar://problem/46353558>

        Reviewed by Alex Christensen.

        In WebPageProxy::swapToWebProcess(), we would call removeWebPage() on the old WebProcessProxy and then
        addExistingWebPage() on the new WebProcessProxy, as you would expect in case of process swap.

        The issue is that WebProcessProxy::removeWebPage() calls WebProcessPool::pageEndUsingWebsiteDataStore()
        which would cause the session to get destroyed assuming this was the last page using it. We would
        therefore lose session cookies after a process-swap in private session.

        To address the issue, a parameter to WebProcessPool::pageEndUsingWebsiteDataStore() and
        WebProcessPool::pageBeginUsingWebsiteDataStore() to control if we want to tell the WebProcessPool
        about the page beginning / ending its use of the session. In the case of a process-swap, we make
        sure the process pool is not notified.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::reattachToWebProcess):
        (WebKit::WebPageProxy::swapToWebProcess):
        (WebKit::WebPageProxy::finishAttachingToWebProcess):
        (WebKit::WebPageProxy::close):
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::createWebPage):
        (WebKit::WebProcessProxy::addExistingWebPage):
        (WebKit::WebProcessProxy::removeWebPage):
        * UIProcess/WebProcessProxy.h:

2018-12-03  Chris Dumez  <cdumez@apple.com>

        [PSON] Request by the client to process-swap is ignored if the window has an opener
        https://bugs.webkit.org/show_bug.cgi?id=192267
        <rdar://problem/46386886>

        Reviewed by Brady Eidson.

        If the client forces a process-swap, we should process-swap, even if the browsing
        context has an opener (or openees). Previously, we would only bypass the cross-site
        check, not the openee / openees checks.

        The issue when doing so is that the openee still has a opener link to the window
        in the old process. They would see that the window is still there and navigated
        to 'about:blank' due to our page suspension logic. To address the issue, we no
        longer suspend the old WebPage if the process swap was forced by the client and
        we make sure that the old WebPage gets closed.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::suspendCurrentPageIfPossible):
        (WebKit::WebPageProxy::swapToWebProcess):
        (WebKit::WebPageProxy::receivedNavigationPolicyDecision):
        (WebKit::WebPageProxy::continueNavigationInNewProcess):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::processForNavigationInternal):

2018-12-03  Keith Rollin  <krollin@apple.com>

        Add .xcfilelist files
        https://bugs.webkit.org/show_bug.cgi?id=192082
        <rdar://problem/46312533>

        Reviewed by Brent Fulgham.

        Add .xcfilelist files for Generate Derived Sources and Generate
        Unified Sources build phases in Xcode. These are just being staged for
        now; they'll be added to the Xcode projects later.

        * DerivedSources-input.xcfilelist: Added.
        * DerivedSources-output.xcfilelist: Added.
        * UnifiedSources-input.xcfilelist: Added.
        * UnifiedSources-output.xcfilelist: Added.

2018-12-03  Zalan Bujtas  <zalan@apple.com>

        [iOS] Unreviewed build fix.

        * Platform/Logging.h:

2018-12-03  Alex Christensen  <achristensen@webkit.org>

        Remove unused NetworkProcessCreationParameters.diskCacheSizeOverride
        https://bugs.webkit.org/show_bug.cgi?id=192246

        Reviewed by Chris Dumez.

        The last use of this functionality was removed in rdar://problem/46344871

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::initializeNetworkProcess):
        (WebKit::NetworkProcess::setCacheModel):
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcessCreationParameters.cpp:
        (WebKit::NetworkProcessCreationParameters::encode const):
        (WebKit::NetworkProcessCreationParameters::decode):
        * NetworkProcess/NetworkProcessCreationParameters.h:
        * UIProcess/API/APIProcessPoolConfiguration.cpp:
        (API::ProcessPoolConfiguration::copy):
        * UIProcess/API/APIProcessPoolConfiguration.h:
        * UIProcess/API/C/WKContextConfigurationRef.cpp:
        (WKContextConfigurationDiskCacheSizeOverride):
        (WKContextConfigurationSetDiskCacheSizeOverride):
        * UIProcess/API/C/WKContextConfigurationRef.h:
        * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h:
        * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm:
        (-[_WKProcessPoolConfiguration diskCacheSizeOverride]):
        (-[_WKProcessPoolConfiguration setDiskCacheSizeOverride:]):
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::ensureNetworkProcess):

2018-12-03  Alex Christensen  <achristensen@webkit.org>

        Add WKWebProcessPlugInLoadDelegate SPI willStartProvisionalLoadForFrame with a completion handler
        https://bugs.webkit.org/show_bug.cgi?id=192272

        Reviewed by Brady Eidson.

        * WebProcess/InjectedBundle/API/APIInjectedBundlePageLoaderClient.h:
        (API::InjectedBundle::PageLoaderClient::didStartProvisionalLoadForFrame):
        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInLoadDelegate.h:
        * WebProcess/InjectedBundle/API/glib/WebKitWebPage.cpp:
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:
        (ResourceLoadClient::ResourceLoadClient):
        (ResourceLoadClient::loadDelegate const):
        (ResourceLoadClient::pluginContextController const):
        (PageLoaderClient::PageLoaderClient):
        (PageLoaderClient::loadDelegate const):
        (PageLoaderClient::pluginContextController const):
        (PageLoaderClient::didStartProvisionalLoadForFrame):
        (PageLoaderClient::didReceiveServerRedirectForProvisionalLoadForFrame):
        (PageLoaderClient::didFinishLoadForFrame):
        (PageLoaderClient::globalObjectIsAvailableForFrame):
        (PageLoaderClient::didRemoveFrameFromHierarchy):
        (PageLoaderClient::didCommitLoadForFrame):
        (PageLoaderClient::didFinishDocumentLoadForFrame):
        (PageLoaderClient::didFailProvisionalLoadWithErrorForFrame):
        (PageLoaderClient::didFailLoadWithErrorForFrame):
        (PageLoaderClient::didSameDocumentNavigationForFrame):
        (PageLoaderClient::didLayoutForFrame):
        (PageLoaderClient::didReachLayoutMilestone):
        (PageLoaderClient::didFirstVisuallyNonEmptyLayoutForFrame):
        (PageLoaderClient::didHandleOnloadEventsForFrame):
        (PageLoaderClient::userAgentForURL const):
        (ResourceLoadClient::willSendRequestForFrame):
        (ResourceLoadClient::didInitiateLoadForResource):
        (ResourceLoadClient::didFinishLoadForResource):
        (ResourceLoadClient::didFailLoadForResource):
        (-[WKWebProcessPlugInBrowserContextController setLoadDelegate:]):
        (didStartProvisionalLoadForFrame): Deleted.
        (didReceiveServerRedirectForProvisionalLoadForFrame): Deleted.
        (didFinishLoadForFrame): Deleted.
        (globalObjectIsAvailableForFrame): Deleted.
        (didRemoveFrameFromHierarchy): Deleted.
        (didCommitLoadForFrame): Deleted.
        (didFinishDocumentLoadForFrame): Deleted.
        (didFailProvisionalLoadWithErrorForFrame): Deleted.
        (didFailLoadWithErrorForFrame): Deleted.
        (didSameDocumentNavigationForFrame): Deleted.
        (didLayoutForFrame): Deleted.
        (didReachLayoutMilestone): Deleted.
        (didFirstVisuallyNonEmptyLayoutForFrame): Deleted.
        (didHandleOnloadEventsForFrame): Deleted.
        (userAgentForURL): Deleted.
        (setUpPageLoaderClient): Deleted.
        (willSendRequestForFrame): Deleted.
        (didInitiateLoadForResource): Deleted.
        (didFinishLoadForResource): Deleted.
        (didFailLoadForResource): Deleted.
        (setUpResourceLoadClient): Deleted.
        * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.cpp:
        (WebKit::InjectedBundlePageLoaderClient::didStartProvisionalLoadForFrame):
        * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.h:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDidStartProvisionalLoad):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.h:

2018-12-03  Tim Horton  <timothy_horton@apple.com>

        Swipe snapshot stays up too long swiping around on apple.com (waiting for first paint)
        https://bugs.webkit.org/show_bug.cgi?id=192319
        <rdar://problem/45928708>

        Reviewed by Simon Fraser.

        * UIProcess/Cocoa/ViewGestureController.cpp:
        (WebKit::ViewGestureController::didStartProvisionalLoadForMainFrame):
        * UIProcess/Cocoa/ViewGestureController.h:
        * UIProcess/ios/ViewGestureControllerIOS.mm:
        (WebKit::ViewGestureController::endSwipeGesture):
        In r236966, I reverted slightly too much of r232416.
        We still need to defer requesting a presentation update callback until
        after the provisional load starts. Otherwise, we could get the callback
        while we're in the 'paused' state, and drop it on the floor. That would
        then mean that we time out instead of promptly removing the snapshot.

2018-12-03  Alex Christensen  <achristensen@webkit.org>

        Update process assertions after swapping processes
        https://bugs.webkit.org/show_bug.cgi?id=192318
        <rdar://problem/46377552>

        Reviewed by Chris Dumez.

        If the previous WebProcess had a ProcessAssertion to prevent it from being suspended,
        after navigation and process swapping we need the new WebProcess to update its process assertions.

        * UIProcess/API/Cocoa/PageLoadStateObserver.h:
        * UIProcess/Cocoa/NavigationState.h:
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::didSwapWebProcesses):
        * UIProcess/PageLoadState.cpp:
        (WebKit::PageLoadState::didSwapWebProcesses):
        * UIProcess/PageLoadState.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::finishAttachingToWebProcess):

2018-12-03  Daniel Bates  <dabates@apple.com>

        [iOS] Do not handle key events that are key commands
        https://bugs.webkit.org/show_bug.cgi?id=191608
        <rdar://problem/46046013>

        Reviewed by Ryosuke Niwa.

        A key down event may be associated with a key command. If it is then we want to execute the
        key command instead of inserting or deleting text. We need to ask UIKit to handle the current
        event as a key command to find out.

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _interpretKeyEvent:isCharEvent:]): Ask UIKit to handle the current event
        as a key command. If it handles it then we're done. Otherwise, do what we do now.

2018-12-03  Zalan Bujtas  <zalan@apple.com>

        [iOS] Add logging channel for hover related content observation
        https://bugs.webkit.org/show_bug.cgi?id=192312

        Reviewed by Simon Fraser.

        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::handleSyntheticClick):
        (WebKit::WebPage::completePendingSyntheticClickForContentChangeObserver):

2018-12-03  Tim Horton  <timothy_horton@apple.com>

        Enable swipe snapshot removal logging in release builds
        https://bugs.webkit.org/show_bug.cgi?id=192313

        Reviewed by Dean Jackson.

        * UIProcess/Cocoa/ViewGestureController.cpp:
        (WebKit::ViewGestureController::SnapshotRemovalTracker::log const):
        This is super-low-traffic and super-helpful logging.
        Turn it on all the time.

2018-12-03  Yusuke Suzuki  <yusukesuzuki@slowstart.org>

        Use WallTime for file time
        https://bugs.webkit.org/show_bug.cgi?id=192287

        Reviewed by Darin Adler.

        * Shared/SessionState.h:
        * Shared/WebCoreArgumentCoders.cpp:
        (IPC::ArgumentCoder<DatabaseDetails>::decode):
        * UIProcess/API/C/WKKeyValueStorageManager.cpp:
        (WKKeyValueStorageManagerGetStorageDetailsByOrigin):
        * UIProcess/API/glib/WebKitWebViewSessionState.cpp:
        (decodeHTTPBody):
        * UIProcess/Plugins/gtk/PluginInfoCache.cpp:
        (WebKit::PluginInfoCache::getPluginInfo):
        (WebKit::PluginInfoCache::updatePluginInfo):
        * UIProcess/ResourceLoadStatisticsPersistentStorage.cpp:
        (WebKit::hasFileChangedSince):
        * UIProcess/WebStorage/LocalStorageDatabaseTracker.cpp:
        (WebKit::LocalStorageDatabaseTracker::databasesModifiedSince):
        (WebKit::LocalStorageDatabaseTracker::originDetails):
        * UIProcess/WebStorage/LocalStorageDatabaseTracker.h:
        * UIProcess/mac/LegacySessionStateCoding.cpp:
        (WebKit::encodeFormDataElement):
        (WebKit::decodeFormDataElement):
        * WebProcess/MediaCache/WebMediaKeyStorageManager.cpp:
        (WebKit::removeAllMediaKeyStorageForOriginPath):
        (WebKit::WebMediaKeyStorageManager::deleteMediaKeyEntriesForOrigin):
        (WebKit::WebMediaKeyStorageManager::deleteMediaKeyEntriesModifiedBetweenDates):
        (WebKit::WebMediaKeyStorageManager::deleteAllMediaKeyEntries):
        * WebProcess/MediaCache/WebMediaKeyStorageManager.h:
        * WebProcess/WebCoreSupport/SessionStateConversion.cpp:
        (WebKit::toHTTPBody):
        (WebKit::toFormData):

2018-12-03  Darin Adler  <darin@apple.com>

        [Cocoa] Check message IDs when decoding Mach messages in IPC::Connection
        https://bugs.webkit.org/show_bug.cgi?id=192300
        rdar://problem/46215523

        Reviewed by Chris Dumez.

        * Platform/IPC/mac/ConnectionMac.mm:
        (IPC::Connection::sendOutgoingMessage): Use message IDs other than 0 and 1 for
        the messages, as suggested by an expert at Apple.
        (IPC::createMessageDecoder): Update for the new message IDs.
        (IPC::Connection::receiveSourceEventHandler): Ignore messages with unexpected
        message IDs.

2018-12-03  Darin Adler  <darin@apple.com>

        [Cocoa] Check descriptor types in createMessageDecoder
        https://bugs.webkit.org/show_bug.cgi?id=192302

        Reviewed by Chris Dumez.

        Not sure how to construct a test case for Connection, so not adding any
        tests at this time.

        * Platform/IPC/mac/ConnectionMac.mm:
        (IPC::createMessageDecoder): Check descriptor types and return nullptr if they
        are incorrect. Retained the assertions to help with debugging.
        (IPC::Connection::receiveSourceEventHandler): Ignore the message if no decoder
        is created, which means the message is invalid.

2018-12-03  Darin Adler  <darin@apple.com>

        Alignment padding needs to be zeroed out in IPC::Encoder
        https://bugs.webkit.org/show_bug.cgi?id=192304

        Reviewed by Chris Dumez.

        Might be useful to make a regression test for this, but I couldn't find any
        other tests for this code.

        * Platform/IPC/Encoder.cpp:
        (IPC::Encoder::grow): Use std::memset to zero-fill padding bytes.

        * UIProcess/mac/LegacySessionStateCoding.cpp:
        (WebKit::HistoryEntryDataEncoder::grow): Ditto.

2018-12-03  Darin Adler  <darin@apple.com>

        [Cocoa] Streamline sandbox code a tiny bit
        https://bugs.webkit.org/show_bug.cgi?id=192299

        Reviewed by Anders Carlsson.

        * Shared/mac/SandboxUtilities.mm:
        (WebKit::processHasContainer): Removed separate function, just use the
        pathForProcessContainer instead of repeating logic. This costs a tiny
        bit of memory allocation overhead the first time this function is called,
        but in return we can eliminate a second copy of the code to call
        sandbox_container_path_for_pid.

2018-12-03  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] 'devicechange' event when more capture device information are revealed.
        https://bugs.webkit.org/show_bug.cgi?id=192268

        Reviewed by Youenn Fablet.

        * UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
        (WebKit::UserMediaPermissionRequestManagerProxy::userMediaAccessWasGranted): Call captureDevicesChanged
        if a filtered device list was returned previously.
        (WebKit::UserMediaPermissionRequestManagerProxy::resetAccess): Clear m_hasFilteredDeviceList.
        (WebKit::UserMediaPermissionRequestManagerProxy::wasGrantedVideoOrAudioAccess): New.
        (WebKit::UserMediaPermissionRequestManagerProxy::enumerateMediaDevicesForFrame): Filter device
        list and strip device IDs if gUM permission hasn't been given.
        (WebKit::UserMediaPermissionRequestManagerProxy::watchdogTimerFired): Clear m_hasFilteredDeviceList.
        * UIProcess/UserMediaPermissionRequestManagerProxy.h:

2018-12-03  Keith Rollin  <krollin@apple.com>

        Remove Network Capture
        https://bugs.webkit.org/show_bug.cgi?id=192296
        <rdar://problem/46408648>

        Reviewed by Daniel Bates.

        r209498 introduced an embedded record and replay facility for network
        resource loading. This facility was added in order to support a new
        implementation of the PLT and related performance tests. The PLT is
        currenty taking a different direction, and so this record/replace
        facility is no longer needed. Removing it as unused code.

        * CMakeLists.txt:
        * NetworkProcess/NetworkLoad.cpp:
        (WebKit::NetworkLoad::NetworkLoad):
        (WebKit::NetworkLoad::setDefersLoading):
        (WebKit::NetworkLoad::continueWillSendRequest):
        (WebKit::NetworkLoad::willPerformHTTPRedirection):
        (WebKit::NetworkLoad::notifyDidReceiveResponse):
        (WebKit::NetworkLoad::didReceiveData):
        (WebKit::NetworkLoad::didCompleteWithError):
        (WebKit::NetworkLoad::initializeForRecord): Deleted.
        (WebKit::NetworkLoad::initializeForReplay): Deleted.
        * NetworkProcess/NetworkLoad.h:
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::initializeNetworkProcess):
        (WebKit::NetworkProcess::terminate):
        * NetworkProcess/NetworkProcessCreationParameters.cpp:
        (WebKit::NetworkProcessCreationParameters::encode const):
        (WebKit::NetworkProcessCreationParameters::decode):
        * NetworkProcess/NetworkProcessCreationParameters.h:
        * NetworkProcess/capture/NetworkCaptureEvent.cpp: Removed.
        * NetworkProcess/capture/NetworkCaptureEvent.h: Removed.
        * NetworkProcess/capture/NetworkCaptureLogging.h: Removed.
        * NetworkProcess/capture/NetworkCaptureManager.cpp: Removed.
        * NetworkProcess/capture/NetworkCaptureManager.h: Removed.
        * NetworkProcess/capture/NetworkCaptureRecorder.cpp: Removed.
        * NetworkProcess/capture/NetworkCaptureRecorder.h: Removed.
        * NetworkProcess/capture/NetworkCaptureReplayer.cpp: Removed.
        * NetworkProcess/capture/NetworkCaptureReplayer.h: Removed.
        * NetworkProcess/capture/NetworkCaptureResource.cpp: Removed.
        * NetworkProcess/capture/NetworkCaptureResource.h: Removed.
        * NetworkProcess/capture/NetworkDataTaskReplay.cpp: Removed.
        * NetworkProcess/capture/NetworkDataTaskReplay.h: Removed.
        * NetworkProcess/capture/json.hpp: Removed.
        * Sources.txt:
        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        (WebKit::WebProcessPool::platformInitializeNetworkProcess):
        * WebKit.xcodeproj/project.pbxproj:
        * config.h:

2018-12-02  Zalan Bujtas  <zalan@apple.com>

        Add a runtime feature flag for LayoutFormattingContext.
        https://bugs.webkit.org/show_bug.cgi?id=192280

        Reviewed by Simon Fraser.

        * Configurations/FeatureDefines.xcconfig:
        * Shared/WebPreferences.yaml:
        * WebProcess/InjectedBundle/InjectedBundle.cpp:
        (WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner):

2018-12-01  Chris Dumez  <cdumez@apple.com>

        [PSON] process-swapping may occur even though opener has handle to openee
        https://bugs.webkit.org/show_bug.cgi?id=192277

        Reviewed by Antti Koivisto.

        * Shared/NavigationActionData.cpp:
        (WebKit::NavigationActionData::encode const):
        (WebKit::NavigationActionData::decode):
        * Shared/NavigationActionData.h:
        * UIProcess/API/APINavigation.h:
        (API::Navigation::openedByDOMWithOpener const):
        (API::Navigation::openedViaWindowOpenWithOpener const): Deleted.
        (API::Navigation::opener const): Deleted.
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::processForNavigationInternal):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):

2018-12-01  Alexey Proskuryakov  <ap@apple.com>

        Modernize version check for _suppressedAutoAddedHTTPHeaders
        https://bugs.webkit.org/show_bug.cgi?id=192175

        Reviewed by Tim Horton.

        * NetworkProcess/cocoa/NetworkSessionCocoa.mm: (WebKit::NetworkSessionCocoa::NetworkSessionCocoa):
        Also removed selector check - we only need to support running on 10.13.0 when building
        with 10.13.0 SDK.

2018-11-30  Alex Christensen  <achristensen@webkit.org>

        Fix Windows build.

        * UIProcess/API/C/curl/WKWebsiteDataStoreRefCurl.cpp:
        (WKWebsiteDataStoreEnableCustomNetworkProxySettings):

2018-11-30  Alex Christensen  <achristensen@webkit.org>

        Move URL from WebCore to WTF
        https://bugs.webkit.org/show_bug.cgi?id=190234

        Reviewed by Keith Miller.

        * NetworkProcess/Cookies/WebCookieManager.cpp:
        * NetworkProcess/Cookies/WebCookieManager.h:
        * NetworkProcess/Cookies/WebCookieManager.messages.in:
        * NetworkProcess/CustomProtocols/Cocoa/LegacyCustomProtocolManagerCocoa.mm:
        * NetworkProcess/Downloads/Download.h:
        * NetworkProcess/Downloads/DownloadManager.cpp:
        (WebKit::DownloadManager::publishDownloadProgress):
        * NetworkProcess/Downloads/DownloadManager.h:
        * NetworkProcess/Downloads/PendingDownload.cpp:
        (WebKit::PendingDownload::publishProgress):
        * NetworkProcess/Downloads/PendingDownload.h:
        * NetworkProcess/Downloads/cocoa/DownloadCocoa.mm:
        (WebKit::Download::publishProgress):
        * NetworkProcess/FileAPI/NetworkBlobRegistry.cpp:
        (WebKit::NetworkBlobRegistry::registerBlobURL):
        (WebKit::NetworkBlobRegistry::registerBlobURLForSlice):
        (WebKit::NetworkBlobRegistry::unregisterBlobURL):
        (WebKit::NetworkBlobRegistry::blobSize):
        (WebKit::NetworkBlobRegistry::filesInBlob):
        * NetworkProcess/FileAPI/NetworkBlobRegistry.h:
        * NetworkProcess/NetworkConnectionToWebProcess.h:
        * NetworkProcess/NetworkConnectionToWebProcess.messages.in:
        * NetworkProcess/NetworkDataTask.cpp:
        (WebKit::NetworkDataTask::didReceiveResponse):
        * NetworkProcess/NetworkDataTaskBlob.cpp:
        * NetworkProcess/NetworkLoadChecker.h:
        (WebKit::NetworkLoadChecker::setContentExtensionController):
        (WebKit::NetworkLoadChecker::url const):
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::writeBlobToFilePath):
        (WebKit::NetworkProcess::publishDownloadProgress):
        (WebKit::NetworkProcess::preconnectTo):
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:
        * NetworkProcess/NetworkResourceLoadParameters.h:
        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::logBlockedCookieInformation):
        (WebKit::logCookieInformationInternal):
        * NetworkProcess/NetworkResourceLoader.h:
        * NetworkProcess/NetworkSocketStream.cpp:
        (WebKit::NetworkSocketStream::create):
        * NetworkProcess/NetworkSocketStream.h:
        * NetworkProcess/PingLoad.h:
        * NetworkProcess/ServiceWorker/WebSWServerConnection.h:
        * NetworkProcess/ServiceWorker/WebSWServerConnection.messages.in:
        * NetworkProcess/ServiceWorker/WebSWServerToContextConnection.messages.in:
        * NetworkProcess/cache/CacheStorageEngine.cpp:
        (WebKit::CacheStorage::Engine::retrieveRecords):
        * NetworkProcess/cache/CacheStorageEngine.h:
        * NetworkProcess/cache/CacheStorageEngineCache.h:
        * NetworkProcess/cache/CacheStorageEngineConnection.cpp:
        (WebKit::CacheStorageEngineConnection::retrieveRecords):
        * NetworkProcess/cache/CacheStorageEngineConnection.h:
        * NetworkProcess/cache/CacheStorageEngineConnection.messages.in:
        * NetworkProcess/cache/NetworkCache.h:
        * NetworkProcess/cache/NetworkCacheStatistics.cpp:
        (WebKit::NetworkCache::Statistics::recordRetrievedCachedEntry):
        (WebKit::NetworkCache::Statistics::recordRevalidationSuccess):
        * NetworkProcess/cache/NetworkCacheSubresourcesEntry.h:
        (WebKit::NetworkCache::SubresourceInfo::firstPartyForCookies const):
        * NetworkProcess/capture/NetworkCaptureEvent.cpp:
        (WebKit::NetworkCapture::Request::operator WebCore::ResourceRequest const):
        (WebKit::NetworkCapture::Response::operator WebCore::ResourceResponse const):
        (WebKit::NetworkCapture::Error::operator WebCore::ResourceError const):
        * NetworkProcess/capture/NetworkCaptureManager.cpp:
        (WebKit::NetworkCapture::Manager::findBestFuzzyMatch):
        (WebKit::NetworkCapture::Manager::fuzzyMatchURLs):
        (WebKit::NetworkCapture::Manager::urlIdentifyingCommonDomain):
        * NetworkProcess/capture/NetworkCaptureManager.h:
        * NetworkProcess/capture/NetworkCaptureResource.cpp:
        (WebKit::NetworkCapture::Resource::url):
        (WebKit::NetworkCapture::Resource::queryParameters):
        * NetworkProcess/capture/NetworkCaptureResource.h:
        * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
        (WebKit::NetworkDataTaskCocoa::willPerformHTTPRedirection):
        * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
        (WebKit::NetworkProcess::deleteHSTSCacheForHostNames):
        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (-[WKNetworkSessionDelegate URLSession:task:didReceiveChallenge:completionHandler:]):
        * PluginProcess/mac/PluginProcessMac.mm:
        (WebKit::openCFURLRef):
        (WebKit::replacedNSWorkspace_launchApplicationAtURL_options_configuration_error):
        * Shared/API/APIURL.h:
        (API::URL::create):
        (API::URL::equals):
        (API::URL::URL):
        (API::URL::url const):
        (API::URL::parseURLIfNecessary const):
        * Shared/API/APIUserContentURLPattern.h:
        (API::UserContentURLPattern::matchesURL const):
        * Shared/API/c/WKURLRequest.cpp:
        * Shared/API/c/WKURLResponse.cpp:
        * Shared/API/c/cf/WKURLCF.mm:
        (WKURLCreateWithCFURL):
        (WKURLCopyCFURL):
        * Shared/API/glib/WebKitURIRequest.cpp:
        * Shared/API/glib/WebKitURIResponse.cpp:
        * Shared/APIWebArchiveResource.mm:
        (API::WebArchiveResource::WebArchiveResource):
        * Shared/AssistedNodeInformation.h:
        * Shared/Cocoa/WKNSURLExtras.mm:
        (-[NSURL _web_originalDataAsWTFString]):
        (): Deleted.
        * Shared/SessionState.h:
        * Shared/WebBackForwardListItem.cpp:
        (WebKit::WebBackForwardListItem::itemIsInSameDocument const):
        * Shared/WebCoreArgumentCoders.cpp:
        * Shared/WebCoreArgumentCoders.h:
        * Shared/WebErrors.h:
        * Shared/WebHitTestResultData.cpp:
        * Shared/cf/ArgumentCodersCF.cpp:
        (IPC::encode):
        (IPC::decode):
        * Shared/gtk/WebErrorsGtk.cpp:
        * Shared/ios/InteractionInformationAtPosition.h:
        * UIProcess/API/APIHTTPCookieStore.h:
        * UIProcess/API/APINavigation.cpp:
        (API::Navigation::appendRedirectionURL):
        * UIProcess/API/APINavigation.h:
        (API::Navigation::takeRedirectChain):
        * UIProcess/API/APINavigationAction.h:
        * UIProcess/API/APINavigationClient.h:
        (API::NavigationClient::signedPublicKeyAndChallengeString):
        (API::NavigationClient::contentRuleListNotification):
        (API::NavigationClient::webGLLoadPolicy const):
        (API::NavigationClient::resolveWebGLLoadPolicy const):
        * UIProcess/API/APIUIClient.h:
        (API::UIClient::saveDataToFileInDownloadsFolder):
        * UIProcess/API/APIUserScript.cpp:
        (API::UserScript::generateUniqueURL):
        * UIProcess/API/APIUserScript.h:
        * UIProcess/API/APIUserStyleSheet.cpp:
        (API::UserStyleSheet::generateUniqueURL):
        * UIProcess/API/APIUserStyleSheet.h:
        * UIProcess/API/C/WKOpenPanelResultListener.cpp:
        (filePathsFromFileURLs):
        * UIProcess/API/C/WKPage.cpp:
        (WKPageLoadPlainTextStringWithUserData):
        (WKPageSetPageUIClient):
        (WKPageSetPageNavigationClient):
        * UIProcess/API/C/WKPageGroup.cpp:
        (WKPageGroupAddUserStyleSheet):
        (WKPageGroupAddUserScript):
        * UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
        (WKWebsiteDataStoreSetResourceLoadStatisticsPrevalentResourceForDebugMode):
        (WKWebsiteDataStoreSetStatisticsLastSeen):
        (WKWebsiteDataStoreSetStatisticsPrevalentResource):
        (WKWebsiteDataStoreSetStatisticsVeryPrevalentResource):
        (WKWebsiteDataStoreIsStatisticsPrevalentResource):
        (WKWebsiteDataStoreIsStatisticsVeryPrevalentResource):
        (WKWebsiteDataStoreIsStatisticsRegisteredAsSubresourceUnder):
        (WKWebsiteDataStoreIsStatisticsRegisteredAsSubFrameUnder):
        (WKWebsiteDataStoreIsStatisticsRegisteredAsRedirectingTo):
        (WKWebsiteDataStoreSetStatisticsHasHadUserInteraction):
        (WKWebsiteDataStoreIsStatisticsHasHadUserInteraction):
        (WKWebsiteDataStoreSetStatisticsGrandfathered):
        (WKWebsiteDataStoreIsStatisticsGrandfathered):
        (WKWebsiteDataStoreSetStatisticsSubframeUnderTopFrameOrigin):
        (WKWebsiteDataStoreSetStatisticsSubresourceUnderTopFrameOrigin):
        (WKWebsiteDataStoreSetStatisticsSubresourceUniqueRedirectTo):
        (WKWebsiteDataStoreSetStatisticsSubresourceUniqueRedirectFrom):
        (WKWebsiteDataStoreSetStatisticsTopFrameUniqueRedirectTo):
        (WKWebsiteDataStoreSetStatisticsTopFrameUniqueRedirectFrom):
        * UIProcess/API/Cocoa/WKHTTPCookieStore.mm:
        * UIProcess/API/Cocoa/WKUserScript.mm:
        (-[WKUserScript _initWithSource:injectionTime:forMainFrameOnly:legacyWhitelist:legacyBlacklist:associatedURL:userContentWorld:]):
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _showSafeBrowsingWarning:completionHandler:]):
        (-[WKWebView _showSafeBrowsingWarningWithTitle:warning:details:completionHandler:]):
        * UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
        (-[WKWebViewConfiguration setURLSchemeHandler:forURLScheme:]):
        (-[WKWebViewConfiguration urlSchemeHandlerForURLScheme:]):
        * UIProcess/API/Cocoa/WKWebViewInternal.h:
        * UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
        * UIProcess/API/Cocoa/_WKApplicationManifest.mm:
        (-[_WKApplicationManifest initWithCoder:]):
        (+[_WKApplicationManifest applicationManifestFromJSON:manifestURL:documentURL:]):
        * UIProcess/API/Cocoa/_WKUserStyleSheet.mm:
        (-[_WKUserStyleSheet initWithSource:forMainFrameOnly:legacyWhitelist:legacyBlacklist:baseURL:userContentWorld:]):
        * UIProcess/API/glib/IconDatabase.cpp:
        * UIProcess/API/glib/WebKitCookieManager.cpp:
        (webkit_cookie_manager_get_cookies):
        * UIProcess/API/glib/WebKitFileChooserRequest.cpp:
        * UIProcess/API/glib/WebKitSecurityOrigin.cpp:
        (webkit_security_origin_new_for_uri):
        * UIProcess/API/glib/WebKitUIClient.cpp:
        * UIProcess/API/glib/WebKitURISchemeRequest.cpp:
        * UIProcess/API/glib/WebKitWebView.cpp:
        (webkit_web_view_load_plain_text):
        * UIProcess/API/gtk/WebKitRemoteInspectorProtocolHandler.cpp:
        * UIProcess/ApplePay/WebPaymentCoordinatorProxy.cpp:
        (WebKit::WebPaymentCoordinatorProxy::showPaymentUI):
        (WebKit::WebPaymentCoordinatorProxy::validateMerchant):
        * UIProcess/ApplePay/WebPaymentCoordinatorProxy.h:
        * UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.h:
        * UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
        (WebKit::toPKPaymentRequest):
        * UIProcess/ApplePay/ios/WebPaymentCoordinatorProxyIOS.mm:
        (WebKit::WebPaymentCoordinatorProxy::platformShowPaymentUI):
        * UIProcess/ApplePay/mac/WebPaymentCoordinatorProxyMac.mm:
        (WebKit::WebPaymentCoordinatorProxy::platformShowPaymentUI):
        * UIProcess/Automation/WebAutomationSession.cpp:
        (WebKit::WebAutomationSession::navigateBrowsingContext):
        (WebKit::domainByAddingDotPrefixIfNeeded):
        (WebKit::WebAutomationSession::addSingleCookie):
        (WebKit::WebAutomationSession::deleteAllCookies):
        * UIProcess/Cocoa/DownloadClient.mm:
        (WebKit::DownloadClient::didFinish):
        * UIProcess/Cocoa/NavigationState.h:
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::NavigationClient::webGLLoadPolicy const):
        (WebKit::NavigationState::NavigationClient::resolveWebGLLoadPolicy const):
        (WebKit::NavigationState::NavigationClient::contentRuleListNotification):
        (WebKit::NavigationState::NavigationClient::willPerformClientRedirect):
        (WebKit::NavigationState::NavigationClient::didPerformClientRedirect):
        (WebKit::NavigationState::NavigationClient::signedPublicKeyAndChallengeString):
        * UIProcess/Cocoa/SafeBrowsingResultCocoa.mm: Copied from Source/WebKit/WebProcess/Network/WebSocketProvider.h.
        (WebKit::SafeBrowsingResult::SafeBrowsingResult):
        * UIProcess/Cocoa/SafeBrowsingWarningCocoa.mm:
        (WebKit::reportAnErrorURL):
        (WebKit::malwareDetailsURL):
        (WebKit::safeBrowsingDetailsText):
        (WebKit::SafeBrowsingWarning::SafeBrowsingWarning):
        * UIProcess/Cocoa/SystemPreviewControllerCocoa.mm:
        (-[_WKPreviewControllerDataSource finish:]):
        (WebKit::SystemPreviewController::finish):
        * UIProcess/Cocoa/UIDelegate.h:
        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::UIDelegate::UIClient::createNewPage):
        (WebKit::UIDelegate::UIClient::saveDataToFileInDownloadsFolder):
        (WebKit::requestUserMediaAuthorizationForDevices):
        (WebKit::UIDelegate::UIClient::checkUserMediaPermissionForOrigin):
        * UIProcess/Cocoa/WKReloadFrameErrorRecoveryAttempter.mm:
        (-[WKReloadFrameErrorRecoveryAttempter attemptRecovery]):
        * UIProcess/Cocoa/WKSafeBrowsingWarning.h:
        * UIProcess/Cocoa/WKSafeBrowsingWarning.mm:
        (-[WKSafeBrowsingWarning initWithFrame:safeBrowsingWarning:completionHandler:]):
        * UIProcess/Cocoa/WebPasteboardProxyCocoa.mm:
        * UIProcess/Cocoa/WebViewImpl.h:
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::showSafeBrowsingWarning):
        (WebKit::WebViewImpl::writeToURLForFilePromiseProvider):
        * UIProcess/Downloads/DownloadProxy.cpp:
        (WebKit::DownloadProxy::publishProgress):
        * UIProcess/Downloads/DownloadProxy.h:
        (WebKit::DownloadProxy::setRedirectChain):
        (WebKit::DownloadProxy::redirectChain const):
        * UIProcess/FrameLoadState.cpp:
        (WebKit::FrameLoadState::didStartProvisionalLoad):
        (WebKit::FrameLoadState::didReceiveServerRedirectForProvisionalLoad):
        (WebKit::FrameLoadState::didSameDocumentNotification):
        (WebKit::FrameLoadState::setUnreachableURL):
        * UIProcess/FrameLoadState.h:
        (WebKit::FrameLoadState::url const):
        (WebKit::FrameLoadState::setURL):
        (WebKit::FrameLoadState::provisionalURL const):
        (WebKit::FrameLoadState::unreachableURL const):
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::writeBlobToFilePath):
        * UIProcess/Network/NetworkProcessProxy.h:
        * UIProcess/PageClient.h:
        (WebKit::PageClient::showSafeBrowsingWarning):
        * UIProcess/PageLoadState.cpp:
        (WebKit::PageLoadState::hasOnlySecureContent):
        * UIProcess/Plugins/PluginInfoStore.cpp:
        * UIProcess/Plugins/PluginInfoStore.h:
        * UIProcess/Plugins/mac/PluginProcessProxyMac.mm:
        * UIProcess/SafeBrowsingResult.h: Copied from Source/WebKit/UIProcess/SystemPreviewController.h.
        (WebKit::SafeBrowsingResult::create):
        (WebKit::SafeBrowsingResult::url const):
        (WebKit::SafeBrowsingResult::provider const):
        (WebKit::SafeBrowsingResult::isPhishing const):
        (WebKit::SafeBrowsingResult::isMalware const):
        (WebKit::SafeBrowsingResult::isUnwantedSoftware const):
        (WebKit::SafeBrowsingResult::isKnownToBeUnsafe const):
        * UIProcess/SafeBrowsingWarning.h:
        (WebKit::SafeBrowsingWarning::create):
        * UIProcess/SuspendedPageProxy.cpp:
        * UIProcess/SystemPreviewController.h:
        * UIProcess/WebCookieManagerProxy.h:
        * UIProcess/WebFrameProxy.h:
        (WebKit::WebFrameProxy::url const):
        (WebKit::WebFrameProxy::provisionalURL const):
        (WebKit::WebFrameProxy::unreachableURL const):
        * UIProcess/WebInspectorProxy.h:
        * UIProcess/WebOpenPanelResultListenerProxy.cpp:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::loadDataWithNavigation):
        (WebKit::WebPageProxy::loadAlternateHTML):
        (WebKit::WebPageProxy::loadWebArchiveData):
        (WebKit::WebPageProxy::navigateToPDFLinkWithSimulatedClick):
        (WebKit::WebPageProxy::continueNavigationInNewProcess):
        (WebKit::WebPageProxy::didStartProvisionalLoadForFrame):
        (WebKit::WebPageProxy::didChangeProvisionalURLForFrame):
        (WebKit::WebPageProxy::didSameDocumentNavigationForFrame):
        (WebKit::WebPageProxy::contentRuleListNotification):
        (WebKit::WebPageProxy::processDidTerminate):
        (WebKit::WebPageProxy::signedPublicKeyAndChallengeString):
        (WebKit::WebPageProxy::setURLSchemeHandlerForScheme):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::tryPrewarmWithDomainInformation):
        * UIProcess/WebProcessPool.h:
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::processDidTerminateOrFailedToLaunch):
        * UIProcess/WebProcessProxy.h:
        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::setPrevalentResourceForDebugMode):
        (WebKit::WebResourceLoadStatisticsStore::logFrameNavigation):
        * UIProcess/WebResourceLoadStatisticsStore.h:
        * UIProcess/ios/DragDropInteractionState.h:
        * UIProcess/ios/PageClientImplIOS.h:
        * UIProcess/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::showSafeBrowsingWarning):
        * UIProcess/ios/WKActionSheetAssistant.mm:
        (-[WKActionSheetAssistant _createSheetWithElementActions:showLinkTitle:]):
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView actionSheetAssistant:shareElementWithURL:rect:]):
        (-[WKContentView _presentedViewControllerForPreviewItemController:]):
        * UIProcess/ios/WKGeolocationProviderIOS.mm:
        (-[WKGeolocationProviderIOS geolocationAuthorizationGranted]):
        * UIProcess/ios/WKLegacyPDFView.mm:
        (-[WKLegacyPDFView actionSheetAssistant:shareElementWithURL:rect:]):
        * UIProcess/ios/WKPDFView.mm:
        (-[WKPDFView actionSheetAssistant:shareElementWithURL:rect:]):
        * UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm:
        (-[WKFullScreenWindowController _updateLocationInfo]):
        * UIProcess/mac/LegacySessionStateCoding.cpp:
        (WebKit::decodeLegacySessionState):
        * UIProcess/mac/PageClientImplMac.h:
        * UIProcess/mac/PageClientImplMac.mm:
        (WebKit::PageClientImpl::showSafeBrowsingWarning):
        * UIProcess/mac/WKImmediateActionController.mm:
        (-[WKImmediateActionController _defaultAnimationController]):
        * UIProcess/win/WebInspectorProxyWin.cpp:
        * WebProcess/ApplePay/WebPaymentCoordinator.cpp:
        (WebKit::WebPaymentCoordinator::showPaymentUI):
        (WebKit::WebPaymentCoordinator::validateMerchant):
        * WebProcess/ApplePay/WebPaymentCoordinator.h:
        * WebProcess/Cache/WebCacheStorageConnection.cpp:
        (WebKit::WebCacheStorageConnection::doRetrieveRecords):
        * WebProcess/Cache/WebCacheStorageConnection.h:
        * WebProcess/FileAPI/BlobRegistryProxy.cpp:
        (WebKit::BlobRegistryProxy::registerFileBlobURL):
        * WebProcess/FileAPI/BlobRegistryProxy.h:
        * WebProcess/InjectedBundle/API/APIInjectedBundlePageLoaderClient.h:
        (API::InjectedBundle::PageLoaderClient::willLoadDataRequest):
        (API::InjectedBundle::PageLoaderClient::userAgentForURL const):
        * WebProcess/InjectedBundle/API/c/WKBundleFrame.cpp:
        (WKBundleFrameAllowsFollowingLink):
        (WKBundleFrameCopySuggestedFilenameForResourceWithURL):
        (WKBundleFrameCopyMIMETypeForResourceWithURL):
        * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
        (WKBundlePageHasLocalDataForURL):
        * WebProcess/InjectedBundle/API/gtk/DOM/ConvertToUTF8String.cpp:
        (convertToUTF8String):
        * WebProcess/InjectedBundle/API/gtk/DOM/ConvertToUTF8String.h:
        * WebProcess/InjectedBundle/InjectedBundleHitTestResult.cpp:
        * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.h:
        * WebProcess/MediaCache/WebMediaKeyStorageManager.cpp:
        * WebProcess/Network/WebLoaderStrategy.cpp:
        (WebKit::WebLoaderStrategy::preconnectTo):
        * WebProcess/Network/WebLoaderStrategy.h:
        * WebProcess/Network/WebSocketProvider.h:
        * WebProcess/Network/WebSocketStream.cpp:
        (WebKit::WebSocketStream::WebSocketStream):
        * WebProcess/Network/WebSocketStream.h:
        * WebProcess/Plugins/Netscape/NetscapePlugin.cpp:
        * WebProcess/Plugins/Netscape/NetscapePlugin.h:
        * WebProcess/Plugins/Netscape/NetscapePluginStream.h:
        * WebProcess/Plugins/PDF/PDFPlugin.h:
        * WebProcess/Plugins/PDF/PDFPlugin.mm:
        (WebKit::PDFPlugin::clickedLink):
        * WebProcess/Plugins/Plugin.h:
        * WebProcess/Plugins/PluginController.h:
        * WebProcess/Plugins/PluginProxy.h:
        * WebProcess/Plugins/PluginView.cpp:
        (WebKit::PluginView::performURLRequest):
        (WebKit::PluginView::performJavaScriptURLRequest):
        * WebProcess/Plugins/WebPluginInfoProvider.cpp:
        (WebKit::WebPluginInfoProvider::webVisiblePluginInfo):
        * WebProcess/Plugins/WebPluginInfoProvider.h:
        * WebProcess/Storage/WebSWClientConnection.h:
        * WebProcess/Storage/WebSWContextManagerConnection.h:
        * WebProcess/UserContent/WebUserContentController.h:
        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::signedPublicKeyAndChallengeString const):
        * WebProcess/WebCoreSupport/WebChromeClient.h:
        * WebProcess/WebCoreSupport/WebContextMenuClient.h:
        * WebProcess/WebCoreSupport/WebDragClient.h:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForResponse):
        (WebKit::WebFrameLoaderClient::shouldForceUniversalAccessFromLocalURL):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
        * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
        (WebKit::WebPlatformStrategies::readURLFromPasteboard):
        * WebProcess/WebCoreSupport/WebPlatformStrategies.h:
        * WebProcess/WebCoreSupport/mac/WebDragClientMac.mm:
        (WebKit::WebDragClient::declareAndWriteDragImage):
        * WebProcess/WebCoreSupport/mac/WebEditorClientMac.mm:
        * WebProcess/WebPage/VisitedLinkTableController.h:
        * WebProcess/WebPage/WebFrame.cpp:
        (WebKit::WebFrame::allowsFollowingLink const):
        * WebProcess/WebPage/WebFrame.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::loadURLInFrame):
        (WebKit::WebPage::loadData):
        (WebKit::WebPage::loadAlternateHTML):
        (WebKit::WebPage::dumpHistoryForTesting):
        (WebKit::WebPage::sendCSPViolationReport):
        (WebKit::WebPage::addUserScript):
        (WebKit::WebPage::addUserStyleSheet):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:
        * WebProcess/WebPage/gtk/WebPrintOperationGtk.cpp:
        (WebKit::WebPrintOperationGtk::frameURL const):
        * WebProcess/WebPage/gtk/WebPrintOperationGtk.h:
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::sendPrewarmInformation):
        * WebProcess/WebProcess.h:
        * WebProcess/cocoa/WebProcessCocoa.mm:
        (WebKit::activePagesOrigins):

2018-11-30  Per Arne Vollan  <pvollan@apple.com>

        [macOS] Add more logging of sandbox call entries.
        https://bugs.webkit.org/show_bug.cgi?id=192261
        rdar://problem/45772445

        Reviewed by Dean Jackson.

        * WebProcess/com.apple.WebProcess.sb.in:

2018-11-30  Tim Horton  <timothy_horton@apple.com>

        Editable images should always return some data, even if the canvas doesn't have a size yet
        https://bugs.webkit.org/show_bug.cgi?id=192265
        <rdar://problem/46385911>

        Reviewed by Wenson Hsieh.

        * UIProcess/ios/WKDrawingView.mm:
        (-[WKDrawingView layoutSubviews]):
        (emptyImage):
        (-[WKDrawingView renderedDrawing]):
        (-[WKDrawingView PNGRepresentation]):
        Some clients strongly depend on there being some data in an image, even if
        it's not of a usable size yet. We'll invalidate the attachment when the
        canvas size changes, so it will eventually settle at a usable size (after
        the first layer tree commit that includes the editable image).

2018-11-30  Don Olmstead  <don.olmstead@sony.com>

        Rename ENABLE_SUBTLE_CRYPTO to ENABLE_WEB_CRYPTO
        https://bugs.webkit.org/show_bug.cgi?id=192197

        Reviewed by Jiewen Tan.

        * Configurations/FeatureDefines.xcconfig:
        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetPageNavigationClient):
        * UIProcess/WebPageProxy.cpp:
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        * WebProcess/WebCoreSupport/WebChromeClient.h:

2018-11-30  Alexey Proskuryakov  <ap@apple.com>

        Move USE_CFNETWORK_IGNORE_HSTS to its proper place
        https://bugs.webkit.org/show_bug.cgi?id=192173

        Reviewed by Tim Horton.

        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (updateIgnoreStrictTransportSecuritySettingIfNecessary):
        (-[WKNetworkSessionDelegate URLSession:task:willPerformHTTPRedirection:newRequest:completionHandler:]):
        (-[WKNetworkSessionDelegate URLSession:task:_schemeUpgraded:completionHandler:]):

2018-11-30  Alex Christensen  <achristensen@webkit.org>

        Remove unused WebProcessCreationParameters.uiProcessCookieStorageIdentifier
        https://bugs.webkit.org/show_bug.cgi?id=192157

        Reviewed by Chris Dumez.

        * Shared/WebProcessCreationParameters.cpp:
        (WebKit::WebProcessCreationParameters::encode const):
        (WebKit::WebProcessCreationParameters::decode):
        * Shared/WebProcessCreationParameters.h:
        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        (WebKit::WebProcessPool::platformInitializeWebProcess):

2018-11-30  Alex Christensen  <achristensen@webkit.org>

        Remove privateBrowsingEnabled from NetworkProcessCreationParameters
        https://bugs.webkit.org/show_bug.cgi?id=192156

        Reviewed by Chris Dumez.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::initializeNetworkProcess):
        * NetworkProcess/NetworkProcessCreationParameters.cpp:
        (WebKit::NetworkProcessCreationParameters::encode const):
        (WebKit::NetworkProcessCreationParameters::decode):
        * NetworkProcess/NetworkProcessCreationParameters.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::ensureNetworkProcess):

2018-11-30  Basuke Suzuki  <basuke.suzuki@sony.com>

        [Curl] Add API for ProtectionSpace.
        https://bugs.webkit.org/show_bug.cgi?id=191648

        Reviewed by Alex Christensen.

        Added API to get certificate information from protection space.

        * PlatformWin.cmake:
        * Shared/curl/WebCoreArgumentCodersCurl.cpp:
        (IPC::ArgumentCoder<ProtectionSpace>::encodePlatformData):
        (IPC::ArgumentCoder<ProtectionSpace>::decodePlatformData):
        * UIProcess/API/C/curl/WKProtectionSpaceCurl.cpp: Added.
        (WKProtectionSpaceCopyCertificateInfo):
        * UIProcess/API/C/curl/WKProtectionSpaceCurl.h: Added.

2018-11-30  David Quesada  <david_quesada@apple.com>

        -[WKProcessPool _downloadURLRequest:] should allow specifying the initiating web view
        https://bugs.webkit.org/show_bug.cgi?id=192212
        rdar://problem/46363706

        Reviewed by Alex Christensen.

        * UIProcess/API/Cocoa/WKProcessPool.mm:
        (-[WKProcessPool _downloadURLRequest:originatingWebView:]):
        (-[WKProcessPool _downloadURLRequest:]): Deleted.
        * UIProcess/API/Cocoa/WKProcessPoolPrivate.h:

2018-11-30  Per Arne Vollan  <pvollan@apple.com>

        Remove invalid character in sandbox introduced in r238703.

        Unreviewed sandbox fix.

        * WebProcess/com.apple.WebProcess.sb.in:

2018-11-30  Andy Estes  <aestes@apple.com>

        [Cocoa] Add some WKA extension points
        https://bugs.webkit.org/show_bug.cgi?id=192131
        <rdar://problem/46330293>

        Reviewed by Tim Horton.

        * DerivedSources.make: Added an extension point for WebPreferences.yaml.
        * Platform/IPC/MessageSender.h:
        (IPC::MessageSender::sendWithAsyncReply): Send async messages via IPC::MessageSender.
        * Platform/cocoa/WebKitAdditions.mm: A an extension point for additional WebKit sources.
        * SourcesCocoa.txt: Added WebKitAdditions.mm as non-unified source.
        * UIProcess/ApplePay/WebPaymentCoordinatorProxy.cpp:
        (WebKit::WebPaymentCoordinatorProxy::WebPaymentCoordinatorProxy): Called finishConstruction.
        * UIProcess/ApplePay/WebPaymentCoordinatorProxy.h: Added an extension point for
        WebPaymentCoordinatorProxy.
        * WebKit.xcodeproj/project.pbxproj: Added WebKitAdditions.mm.
        * WebProcess/ApplePay/WebPaymentCoordinator.h: Added an extension point for
        WebPaymentCoordinator.

2018-11-30  Frederic Wang  <fwang@igalia.com>

        [WebAuthN] Support CTAP HID authenticators on macOS
        https://bugs.webkit.org/show_bug.cgi?id=188623

        Unreviewed build fix.

        * UIProcess/WebAuthentication/Cocoa/HidConnection.mm: Add missing header.

2018-11-29  Wenson Hsieh  <wenson_hsieh@apple.com>

        REGRESSION (r238635): Dragging a text selection within WKWebView causes the selection highlight to get into a bad state
        https://bugs.webkit.org/show_bug.cgi?id=192165
        <rdar://problem/46346682>

        Reviewed by Daniel Bates.

        Fixes a bug in PageClientImpl::isViewFocused. Consider the following scenario:
        1. WKWebView is hosted within the view hierarchy
        2. First responder is *not* WKContentView
        3. The active focus retain count is nonzero

        Before r238635, we would return true, due to condition (3). However, after r238635, we only consider whether the
        first responder is WKContentView, since the web view is in the view hierarchy. This breaks scenarios where
        WebKit or UIKit attempts to retain focus and later restore the content view to be the first responder (an
        example of this is dragging a text selection between editable elements in the same web view).

        To fix this, simply bail early and return true if focus is being retained.

        * UIProcess/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::isViewFocused):

2018-11-29  Tim Horton  <timothy_horton@apple.com>

        Inform clients when editable image attachment backing data changes
        https://bugs.webkit.org/show_bug.cgi?id=192206
        <rdar://problem/46350277>

        Reviewed by Wenson Hsieh.

        * UIProcess/API/Cocoa/APIAttachmentCocoa.mm:
        (API::Attachment::invalidateGeneratedFileWrapper):
        * UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _didInvalidateDataForAttachment:]):
        * UIProcess/API/Cocoa/WKWebViewInternal.h:
        * UIProcess/Cocoa/PageClientImplCocoa.h:
        * UIProcess/Cocoa/PageClientImplCocoa.mm:
        (WebKit::PageClientImplCocoa::didInvalidateDataForAttachment):
        * UIProcess/PageClient.h:
        (WebKit::PageClient::didInvalidateDataForAttachment):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didInvalidateDataForAttachment):
        * UIProcess/WebPageProxy.h:
        Plumb file-wrapper-invalidation through from APIAttachment to WKUIDelegate.

2018-11-29  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] DeviceIdHashSaltStorage should use iframe and top level documents
        https://bugs.webkit.org/show_bug.cgi?id=192182

        Reviewed by Youenn Fablet.

        * UIProcess/DeviceIdHashSaltStorage.cpp:
        (WebKit::DeviceIdHashSaltStorage::deviceIdHashSaltForOrigin): Key off of request and top 
        level documents.
        (WebKit::DeviceIdHashSaltStorage::deleteDeviceIdHashSaltForOrigins): Ditto.
        * UIProcess/DeviceIdHashSaltStorage.h:
        (WebKit::DeviceIdHashSaltStorage::HashSaltForOrigin::HashSaltForOrigin):

        * UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
        (WebKit::UserMediaPermissionRequestManagerProxy::userMediaAccessWasGranted): Pass both documents.
        (WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame): Ditto.
        (WebKit::UserMediaPermissionRequestManagerProxy::enumerateMediaDevicesForFrame): Ditto.

2018-11-29  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r238713.

        Breaks internal builds.

        Reverted changeset:

        "[Cocoa] Add some WKA extension points"
        https://bugs.webkit.org/show_bug.cgi?id=192131
        https://trac.webkit.org/changeset/238713

2018-11-29  Simon Fraser  <simon.fraser@apple.com>

        Add an internal feature flag to enable async overflow scrolling
        https://bugs.webkit.org/show_bug.cgi?id=192184

        Reviewed by Tim Horton.

        Add a new internal feature flag that will enable async overflow-scrolling for
        most overflow:scroll elements. Defaults to off.

        * Shared/WebPreferences.yaml:

2018-11-29  Andy Estes  <aestes@apple.com>

        [Cocoa] Add some WKA extension points
        https://bugs.webkit.org/show_bug.cgi?id=192131
        <rdar://problem/46330293>

        Reviewed by Tim Horton.

        * DerivedSources.make: Added an extension point for WebPreferences.yaml.
        * Platform/IPC/MessageSender.h:
        (IPC::MessageSender::sendWithAsyncReply): Send async messages via IPC::MessageSender.
        * Platform/cocoa/WebKitAdditions.mm: A an extension point for additional WebKit sources.
        * SourcesCocoa.txt: Added WebKitAdditions.mm as non-unified source.
        * UIProcess/ApplePay/WebPaymentCoordinatorProxy.cpp:
        (WebKit::WebPaymentCoordinatorProxy::WebPaymentCoordinatorProxy): Called finishConstruction.
        * UIProcess/ApplePay/WebPaymentCoordinatorProxy.h: Added an extension point for
        WebPaymentCoordinatorProxy.
        * WebKit.xcodeproj/project.pbxproj: Added WebKitAdditions.mm.
        * WebProcess/ApplePay/WebPaymentCoordinator.h: Added an extension point for
        WebPaymentCoordinator.

2018-11-29  Tim Horton  <timothy_horton@apple.com>

        Try to fix the build.

        * Platform/spi/ios/PencilKitSPI.h:

2018-11-29  David Quesada  <david_quesada@apple.com>

        Add SPI to publish NSProgress on active downloads
        https://bugs.webkit.org/show_bug.cgi?id=192021
        rdar://problem/44405661

        Reviewed by Alex Christensen.

        Make it possible for clients to allow other processes to monitor the state of active
        downloads. On Cocoa platforms, this can be done by creating an NSProgress, publishing
        it on an appropriate file URL (potentially a different file URL than where the download
        data is being written), updating properties on it as the download makes progress, and
        wiring up a cancellation handler that allows it to be remotely canceled. Interested
        clients can then subscribe to progress on that URL and receive a proxy to the progress
        that WebKit publishes.

        * NetworkProcess/Downloads/Download.cpp:
        (WebKit::Download::~Download):
        (WebKit::Download::platformDestroyDownload):
            Add a platform-customizable hook for destructing the Download. DownloadCocoa.mm
            will interact with its Objective-C NSProgress instance at this point.

        * NetworkProcess/Downloads/Download.h:
        * NetworkProcess/Downloads/DownloadManager.cpp:
        (WebKit::DownloadManager::dataTaskBecameDownloadTask):
            See comments for publishDownloadProgress().
        (WebKit::DownloadManager::publishDownloadProgress):
            If the provided downloadID corresponds to a non-Pending Download, hand the URL
            and a matching sandbox extension to the Download so it can create its progress.
            Otherwise, store the URL and sandbox extension on the PendingDownload to be used
            later when the full Download is created. When this happens, dataTaskBecameDownloadTask()
            will tell the PendingDownload about the Download it has become. The PendingDownload
            will then relay the progress URL and sandbox extension to the Download.

        * NetworkProcess/Downloads/DownloadManager.h:
        * NetworkProcess/Downloads/PendingDownload.cpp:
        (WebKit::PendingDownload::publishProgress):
            Store the progress info for later use, when the proper Download is created.
        (WebKit::PendingDownload::didBecomeDownload):
            If there was a progress URL provided earlier, tell the Download corresponding to this
            PendingDownload to publish its progress using that URL.

        * NetworkProcess/Downloads/PendingDownload.h:
        * NetworkProcess/Downloads/cocoa/DownloadCocoa.mm:
        (WebKit::Download::platformDestroyDownload):
            When the Download is destroyed (i.e. when the download succeeds, fails, or is canceled),
            unpublish the progress, since there is no longer any activity to report.
        (WebKit::Download::publishProgress):
            Resolve the sandbox extension, create a progress configured to reflect the progress of
            this Download's NSURLSessionDownloadTask, and publish it at the given file URL.

        * NetworkProcess/Downloads/cocoa/WKDownloadProgress.h: Copied from Source/WebKit/UIProcess/API/Cocoa/_WKDownload.h.
        * NetworkProcess/Downloads/cocoa/WKDownloadProgress.mm: Added.
        (-[WKDownloadProgress initWithDownloadTask:download:URL:sandboxExtension:]):
            Configure this progress, start observing properties on the download task that this
            progress will reflect, and connect the cancellation handler of the progress to cancel
            the corresponding Download.
        (-[WKDownloadProgress publish]):
        (-[WKDownloadProgress unpublish]):
            Override these methods to consume and revoke the sandbox extension to make sure the
            process has access to the progress file while the progress will be published.
        (-[WKDownloadProgress dealloc]):
        (-[WKDownloadProgress observeValueForKeyPath:ofObject:change:context:]):
            When either byte count (number received, or number expected to receive) of the download
            task changes, update this progress to reflect that.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::publishDownloadProgress):
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:

        * NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in:
        * Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb:
            Allow looking up the services that manages published NSProgresses.

        * UIProcess/API/Cocoa/_WKDownload.h:
        * UIProcess/API/Cocoa/_WKDownload.mm:
        (-[_WKDownload publishProgressAtURL:]):
        * UIProcess/Downloads/DownloadProxy.cpp:
        (WebKit::DownloadProxy::publishProgress):
        * UIProcess/Downloads/DownloadProxy.h:
        * WebKit.xcodeproj/project.pbxproj:

2018-11-29  Tim Horton  <timothy_horton@apple.com>

        Make drawing tools available when an editable image is focused
        https://bugs.webkit.org/show_bug.cgi?id=192172
        <rdar://problem/30337960>

        Reviewed by Dean Jackson.

        * Platform/spi/ios/PencilKitSPI.h:
        Add some more SPI.

        * Shared/AssistedNodeInformation.cpp:
        (WebKit::AssistedNodeInformation::encode const):
        (WebKit::AssistedNodeInformation::decode):
        * Shared/AssistedNodeInformation.h:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::handleStylusSingleTapAtPoint):
        (WebKit::isAssistableElement):
        (WebKit::WebPage::getAssistedNodeInformation):
        Plumb the assisted node's embedded view ID, if available.
        Also add a new input type for drawings, and use it when appropriate.

        * SourcesCocoa.txt:
        * UIProcess/API/Cocoa/_WKFocusedElementInfo.h:
        Add WKInputTypeDrawing.

        * UIProcess/ios/PencilKitSoftLink.h: Added.
        * UIProcess/ios/PencilKitSoftLink.mm: Added.
        Pull soft-linking out into its own file, to fix unified sources.

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKFocusedElementInfo initWithAssistedNodeInformation:isUserInitiated:userObject:]):
        (-[WKContentView _requiresKeyboardWhenFirstResponder]):
        (-[WKContentView requiresAccessoryView]):
        Install a keyboard when a drawing is focused.
        Also, deduplicate one "curretUserInterfaceIdiomIsPad"; just fall through.

        (-[WKContentView inputView]):
        Make a WKInkPickerControl when a drawing is focused.

        (-[WKContentView textInputTraits]):
        (isAssistableInputType):
        * UIProcess/ios/WKDrawingView.h:
        * UIProcess/ios/WKDrawingView.mm:
        (-[WKDrawingView initWithEmbeddedViewID:webPageProxy:]):
        (-[WKDrawingView PNGRepresentation]):
        (-[WKDrawingView loadDrawingFromPNGRepresentation:]):
        Adopt PencilKitSoftLink.

        (-[WKDrawingView canvasView]):
        Expose the internal canvas view for use by WKInkPickerControl.

        * UIProcess/ios/WKInkPickerControl.h: Copied from Source/WebKit/Platform/spi/ios/PencilKitSPI.h.
        * UIProcess/ios/WKInkPickerControl.mm: Added.
        (-[WKInkPickerView initWithFrame:drawingView:]):
        (-[WKInkPickerView didPickInk]):
        (-[WKInkPickerView inlineInkPickerDidToggleRuler:]):
        (-[WKInkPickerView inlineInkPicker:didSelectTool:]):
        (-[WKInkPickerView inlineInkPicker:didSelectColor:]):
        (-[WKInkPickerView inkPickerSize]):
        (-[WKInkPickerView layoutSubviews]):
        (-[WKInkPickerView sizeThatFits:]):
        (-[WKInkPickerView viewControllerForPopoverPresentationFromInlineInkPicker:]):
        (-[WKInkPickerControl initWithDrawingView:]):
        (-[WKInkPickerControl beginEditing]):
        (-[WKInkPickerControl endEditing]):
        (-[WKInkPickerControl assistantView]):
        Install and hook up a PKInlineInkPicker.
        Center it in the keyboard.
        Plumb changes through to the canvas view.

        * WebKit.xcodeproj/project.pbxproj:

2018-11-29  Per Arne Vollan  <pvollan@apple.com>

        [macOS] Add logging for some sandbox entries.
        https://bugs.webkit.org/show_bug.cgi?id=192126

        Reviewed by Brent Fulgham.

        Add logging for sandbox entries which are possibly not needed.

        * WebProcess/com.apple.WebProcess.sb.in:

2018-11-29  Alex Christensen  <achristensen@webkit.org>

        Fix _WKWebsiteDataStoreConfiguration. sourceApplicationBundleIdentifier and sourceApplicationSecondaryIdentifier SPI introduced in r235127
        https://bugs.webkit.org/show_bug.cgi?id=192191

        Reviewed by Andy Estes.

        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (WebKit::NetworkSessionCocoa::NetworkSessionCocoa):
        When trying to adopt the new SPI and verify it worked, I found that the strings are not copied in one place where they should be.

2018-11-29  Megan Gardner  <megan_gardner@apple.com>

        Move Lookup Code for better cross platform usage
        https://bugs.webkit.org/show_bug.cgi?id=191732

        Reviewed by Alex Christensen.

        Lookup is being replaced by Reveal. This framework should work on all platforms.
        The patch moves the code that we expect will be needed for all platforms to the more
        general cocoa area. This patch changes no funcationality, and should not change
        anything currently. This work will be build on later when Reveal is ready to support
        multiple platforms.

        * Platform/spi/ios/UIKitSPI.h:
        * UIProcess/Cocoa/WebPageProxyCocoa.mm:
        (WebKit::WebPageProxy::performDictionaryLookupAtLocation):
        (WebKit::WebPageProxy::performDictionaryLookupOfCurrentSelection):
        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView setupInteraction]):
        (-[WKContentView cleanupInteraction]):
        (-[WKContentView _removeDefaultGestureRecognizers]):
        (-[WKContentView _addDefaultGestureRecognizers]):
        (-[WKContentView gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:]):
        (-[WKContentView _lookupGestureRecognized:]):
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::performDictionaryLookupAtLocation): Deleted.
        * UIProcess/mac/WebPageProxyMac.mm:
        (WebKit::WebPageProxy::performDictionaryLookupAtLocation): Deleted.
        (WebKit::WebPageProxy::performDictionaryLookupOfCurrentSelection): Deleted.
        * WebProcess/WebPage/Cocoa/WebPageCocoa.mm:
        (WebKit::WebPage::performDictionaryLookupAtLocation):
        (WebKit::WebPage::performDictionaryLookupForSelection):
        (WebKit::WebPage::performDictionaryLookupOfCurrentSelection):
        (WebKit::WebPage::performDictionaryLookupForRange):
        (WebKit::WebPage::dictionaryPopupInfoForRange):
        * WebProcess/WebPage/WebPage.messages.in:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::performDictionaryLookupAtLocation): Deleted.
        (WebKit::WebPage::performDictionaryLookupForSelection): Deleted.
        (WebKit::WebPage::performDictionaryLookupForRange): Deleted.
        * WebProcess/WebPage/mac/WebPageMac.mm:
        (WebKit::WebPage::performDictionaryLookupAtLocation): Deleted.
        (WebKit::WebPage::performDictionaryLookupForSelection): Deleted.
        (WebKit::WebPage::performDictionaryLookupOfCurrentSelection): Deleted.
        (WebKit::WebPage::dictionaryPopupInfoForRange): Deleted.
        (WebKit::WebPage::performDictionaryLookupForRange): Deleted.

2018-11-29  Zalan Bujtas  <zalan@apple.com>

        [ContentObservation] Decouple content change and DOM timer scheduling observation
        https://bugs.webkit.org/show_bug.cgi?id=192170

        Reviewed by Simon Fraser.

        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::handleSyntheticClick):

2018-11-29  Eric Carlson  <eric.carlson@apple.com>

        [iOS] Tell AirPlay picker when a file has video
        https://bugs.webkit.org/show_bug.cgi?id=192155
        <rdar://problem/43843865>

        Reviewed by Jer Noble.

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _showPlaybackTargetPicker:fromRect:routeSharingPolicy:routingContextUID:]):
        Add hasVideo parameter.

        * UIProcess/ios/forms/WKAirPlayRoutePicker.h:
        * UIProcess/ios/forms/WKAirPlayRoutePicker.mm:
        (-[WKAirPlayRoutePicker showFromView:routeSharingPolicy:routingContextUID:hasVideo:]): Add
        hasVideo parameter, pass info to MPMediaControlsViewController.
        (-[WKAirPlayRoutePicker showFromView:routeSharingPolicy:routingContextUID:]): Deleted.

2018-11-29  Alexey Proskuryakov  <ap@apple.com>

        Modernize the check for kCFURLRequestContentDecoderSkipURLCheck existence
        https://bugs.webkit.org/show_bug.cgi?id=192041

        Reviewed by Tim Horton.

        * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
        (WebKit::NetworkDataTaskCocoa::applySniffingPoliciesAndBindRequestToInferfaceIfNeeded):

2018-11-29  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r238678.

        Breaks internal builds.

        Reverted changeset:

        "Move Lookup Code for better cross platform usage"
        https://bugs.webkit.org/show_bug.cgi?id=191732
        https://trac.webkit.org/changeset/238678

2018-11-29  Suresh Koppisetty  <skoppisetty@apple.com>

        Addressed a FIXME by removing an unnecessary call to [NSApplication sharedApplication].
        https://bugs.webkit.org/show_bug.cgi?id=192099

        Reviewed by Geoffrey Garen.

        [NSApplication sharedApplication] call is no longer needed in platformInitializeWebProcess as [NSApplication _accessibilityInitialize] calls [NSApplication sharedApplication].

        * WebProcess/cocoa/WebProcessCocoa.mm:
        (WebKit::WebProcess::platformInitializeWebProcess):

2018-11-29  Megan Gardner  <megan_gardner@apple.com>

        Move Lookup Code for better cross platform usage
        https://bugs.webkit.org/show_bug.cgi?id=191732

        Reviewed by Alex Christensen.

        Lookup is being replaced by Reveal. This framework should work on all platforms.
        The patch moves the code that we expect will be needed for all platforms to the more
        general cocoa area. This patch changes no funcationality, and should not change
        anything currently. This work will be build on later when Reveal is ready to support
        multiple platforms.

        * Platform/spi/ios/UIKitSPI.h:
        * UIProcess/Cocoa/WebPageProxyCocoa.mm:
        (WebKit::WebPageProxy::performDictionaryLookupAtLocation):
        (WebKit::WebPageProxy::performDictionaryLookupOfCurrentSelection):
        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView setupInteraction]):
        (-[WKContentView cleanupInteraction]):
        (-[WKContentView _removeDefaultGestureRecognizers]):
        (-[WKContentView _addDefaultGestureRecognizers]):
        (-[WKContentView gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:]):
        (-[WKContentView _lookupGestureRecognized:]):
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::performDictionaryLookupAtLocation): Deleted.
        * UIProcess/mac/WebPageProxyMac.mm:
        (WebKit::WebPageProxy::performDictionaryLookupAtLocation): Deleted.
        (WebKit::WebPageProxy::performDictionaryLookupOfCurrentSelection): Deleted.
        * WebProcess/WebPage/Cocoa/WebPageCocoa.mm:
        (WebKit::WebPage::performDictionaryLookupAtLocation):
        (WebKit::WebPage::performDictionaryLookupForSelection):
        (WebKit::WebPage::performDictionaryLookupOfCurrentSelection):
        (WebKit::WebPage::performDictionaryLookupForRange):
        (WebKit::WebPage::dictionaryPopupInfoForRange):
        * WebProcess/WebPage/WebPage.messages.in:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::performDictionaryLookupAtLocation): Deleted.
        (WebKit::WebPage::performDictionaryLookupForSelection): Deleted.
        (WebKit::WebPage::performDictionaryLookupForRange): Deleted.
        * WebProcess/WebPage/mac/WebPageMac.mm:
        (WebKit::WebPage::performDictionaryLookupAtLocation): Deleted.
        (WebKit::WebPage::performDictionaryLookupForSelection): Deleted.
        (WebKit::WebPage::performDictionaryLookupOfCurrentSelection): Deleted.
        (WebKit::WebPage::dictionaryPopupInfoForRange): Deleted.
        (WebKit::WebPage::performDictionaryLookupForRange): Deleted.

2018-11-29  Conrad Shultz  <conrad_shultz@apple.com>

        Factor out configuration of the file upload image picker
        https://bugs.webkit.org/show_bug.cgi?id=192138
        <rdar://problem/46334871>

        Reviewed by Tim Horton.

        By factoring configuration of the picker into its own method, it makes it easier
        to apply custom configuration in subclasses in the future.

        * UIProcess/ios/forms/WKFileUploadPanel.mm:
        (-[WKFileUploadPanel _showPhotoPickerWithSourceType:]):
        (-[WKFileUploadPanel _configureImagePicker:]):

2018-11-29  Tomas Popela  <tpopela@redhat.com>

        [GTK][WPE] Fix BubblewrapLauncher clang warnings
        https://bugs.webkit.org/show_bug.cgi?id=192086

        Reviewed by Michael Catanzaro.

        * UIProcess/Launcher/glib/BubblewrapLauncher.cpp:
        (WebKit::bindPathVar): Initialize the i variable to 0.
        (WebKit::setupSeccomp): Initialize the optional datum_b member.

2018-11-28  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: REGRESSION(?): all "Show *" develop menu items cause the page to crash
        https://bugs.webkit.org/show_bug.cgi?id=192016
        <rdar://problem/46284417>

        Reviewed by Devin Rousso.

        Previously calling the Page's inspectorController.show()
        would create a frontend connection on the WebProcess side.
        However now the frontend connection is handed to the WebProcess
        once the UIProcess creates it. So queue actions that take place
        immediately after showing the inspector until we have a frontend
        to send the actions to.

        * WebProcess/WebPage/WebInspector.h:
        * WebProcess/WebPage/WebInspector.cpp:
        (WebKit::WebInspector::setFrontendConnection):
        (WebKit::WebInspector::closeFrontendConnection):
        (WebKit::WebInspector::whenFrontendConnectionEstablished):
        (WebKit::WebInspector::showConsole):
        (WebKit::WebInspector::showResources):
        (WebKit::WebInspector::showTimelines):
        (WebKit::WebInspector::showMainResourceForFrame):
        (WebKit::WebInspector::startPageProfiling):
        (WebKit::WebInspector::stopPageProfiling):
        (WebKit::WebInspector::startElementSelection):
        (WebKit::WebInspector::stopElementSelection):

2018-11-28  Vivek Seth  <v_seth@apple.com>

        Consult dummy storage for HTTPS Upgrade, Apply If Appropriate
        https://bugs.webkit.org/show_bug.cgi?id=192094
        <rdar://problem/45851103> HTTPS Upgrade: Consult dummy storage for HTTPS Upgrade, Apply If Appropriate

        Reviewed by Chris Dumez.

        For main page loads upgrade HTTP requests to HTTPS if the hostname belongs to a set of upgradable hostnames.

        * NetworkProcess/NetworkLoadChecker.cpp:
        (WebKit::NetworkLoadChecker::applyHTTPSUpgradeIfNeeded):
        (WebKit::NetworkLoadChecker::checkRequest):
        * NetworkProcess/NetworkLoadChecker.h:
        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::start):

2018-11-28  Simon Fraser  <simon.fraser@apple.com>

        REGRESSION (r234980): Crash in -[WKWebView _restorePageStateToUnobscuredCenter:scale:]
        https://bugs.webkit.org/show_bug.cgi?id=192127
        rdar://problem/44194179

        Reviewed by Tim Horton.
        
        _restorePageStateToUnobscuredCenter: could receive an Optional<FloatRect> from the
        web process, and unconditionally called .value() even though it may not be engaged.
        
        No repro steps known, so no testcase.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _restorePageStateToUnobscuredCenter:scale:]):

2018-11-28  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r238653 and r238656.
        https://bugs.webkit.org/show_bug.cgi?id=192130

        Breaks iOS build (Requested by smfr on #webkit).

        Reverted changesets:

        "Move Lookup Code for better cross platform usage"
        https://bugs.webkit.org/show_bug.cgi?id=191732
        https://trac.webkit.org/changeset/238653

        "Attempt to fix the iOS build by only including RevealSPI.h
        when it's needed."
        https://trac.webkit.org/changeset/238656

2018-11-28  Alex Christensen  <achristensen@webkit.org>

        Modernize BlobRegistry::writeBlobsToTemporaryFiles
        https://bugs.webkit.org/show_bug.cgi?id=192117

        Reviewed by Dean Jackson.

        * NetworkProcess/FileAPI/NetworkBlobRegistry.cpp:
        (WebKit::NetworkBlobRegistry::writeBlobsToTemporaryFiles):
        (WebKit::NetworkBlobRegistry::writeBlobToFilePath):
        * NetworkProcess/FileAPI/NetworkBlobRegistry.h:
        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::writeBlobsToTemporaryFiles):
        * NetworkProcess/NetworkConnectionToWebProcess.h:
        * NetworkProcess/NetworkConnectionToWebProcess.messages.in:
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::writeBlobToFilePath):
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:
        * UIProcess/ChildProcessProxy.h:
        (WebKit::ChildProcessProxy::sendWithAsyncReply):
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::didClose):
        (WebKit::NetworkProcessProxy::writeBlobToFilePath):
        (WebKit::NetworkProcessProxy::didWriteBlobToFilePath): Deleted.
        * UIProcess/Network/NetworkProcessProxy.h:
        * UIProcess/Network/NetworkProcessProxy.messages.in:
        * WebProcess/FileAPI/BlobRegistryProxy.cpp:
        (WebKit::BlobRegistryProxy::writeBlobsToTemporaryFiles):
        * WebProcess/FileAPI/BlobRegistryProxy.h:
        * WebProcess/Network/NetworkProcessConnection.cpp:
        (WebKit::NetworkProcessConnection::didClose):
        (WebKit::NetworkProcessConnection::writeBlobsToTemporaryFiles):
        (WebKit::NetworkProcessConnection::didWriteBlobsToTemporaryFiles): Deleted.
        * WebProcess/Network/NetworkProcessConnection.h:
        * WebProcess/Network/NetworkProcessConnection.messages.in:

2018-11-28  Alex Christensen  <achristensen@webkit.org>

        Move loadThrottleLatency from NetworkProcessCreationParameters to NetworkSessionCreationParameters
        https://bugs.webkit.org/show_bug.cgi?id=192122

        Reviewed by Dean Jackson.

        This is part of an effort to reduce global variables in the NetworkProcess.

        * NetworkProcess/NetworkLoad.cpp:
        (WebKit::NetworkLoad::NetworkLoad):
        (WebKit::NetworkLoad::didReceiveResponse):
        * NetworkProcess/NetworkLoad.h:
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::initializeNetworkProcess):
        * NetworkProcess/NetworkProcess.h:
        (WebKit::NetworkProcess::loadThrottleLatency const): Deleted.
        * NetworkProcess/NetworkProcessCreationParameters.cpp:
        (WebKit::NetworkProcessCreationParameters::encode const):
        (WebKit::NetworkProcessCreationParameters::decode):
        * NetworkProcess/NetworkSession.h:
        (WebKit::NetworkSession::loadThrottleLatency const):
        * NetworkProcess/NetworkSessionCreationParameters.cpp: Added.
        (WebKit::NetworkSessionCreationParameters::privateSessionParameters):
        (WebKit::NetworkSessionCreationParameters::encode const):
        (WebKit::NetworkSessionCreationParameters::decode):
        * NetworkProcess/NetworkSessionCreationParameters.h:
        (WebKit::NetworkSessionCreationParameters::encode const): Deleted.
        (WebKit::NetworkSessionCreationParameters::decode): Deleted.
        * NetworkProcess/cocoa/NetworkSessionCocoa.h:
        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (WebKit::NetworkSessionCocoa::NetworkSessionCocoa):
        * Shared/WebsiteDataStoreParameters.cpp:
        (WebKit::WebsiteDataStoreParameters::privateSessionParameters):
        * Sources.txt:
        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        (WebKit::WebProcessPool::platformInitializeNetworkProcess):
        * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:
        (WebKit::WebsiteDataStore::parameters):
        * WebKit.xcodeproj/project.pbxproj:

2018-11-15  Megan Gardner  <megan_gardner@apple.com>

        Move Lookup Code for better cross platform usage
        https://bugs.webkit.org/show_bug.cgi?id=191732

        Reviewed by Alex Christensen.

        Lookup is being replaced by Reveal. This framework should work on all platforms.
        The patch moves the code that we expect will be needed for all platforms to the more
        general cocoa area. This patch changes no funcationality, and should not change
        anything currently. This work will be build on later when Reveal is ready to support
        multiple platforms.

        * Platform/spi/ios/UIKitSPI.h:
        * UIProcess/Cocoa/WebPageProxyCocoa.mm:
        (WebKit::WebPageProxy::performDictionaryLookupAtLocation):
        (WebKit::WebPageProxy::performDictionaryLookupOfCurrentSelection):
        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView setupInteraction]):
        (-[WKContentView cleanupInteraction]):
        (-[WKContentView _removeDefaultGestureRecognizers]):
        (-[WKContentView _addDefaultGestureRecognizers]):
        (-[WKContentView gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:]):
        (-[WKContentView _lookupGestureRecognized:]):
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::performDictionaryLookupAtLocation): Deleted.
        * UIProcess/mac/WebPageProxyMac.mm:
        (WebKit::WebPageProxy::performDictionaryLookupAtLocation): Deleted.
        (WebKit::WebPageProxy::performDictionaryLookupOfCurrentSelection): Deleted.
        * WebProcess/WebPage/Cocoa/WebPageCocoa.mm:
        (WebKit::WebPage::performDictionaryLookupAtLocation):
        (WebKit::WebPage::performDictionaryLookupForSelection):
        (WebKit::WebPage::performDictionaryLookupOfCurrentSelection):
        (WebKit::WebPage::performDictionaryLookupForRange):
        (WebKit::WebPage::dictionaryPopupInfoForRange):
        * WebProcess/WebPage/WebPage.messages.in:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::performDictionaryLookupAtLocation): Deleted.
        (WebKit::WebPage::performDictionaryLookupForSelection): Deleted.
        (WebKit::WebPage::performDictionaryLookupForRange): Deleted.
        * WebProcess/WebPage/mac/WebPageMac.mm:
        (WebKit::WebPage::performDictionaryLookupAtLocation): Deleted.
        (WebKit::WebPage::performDictionaryLookupForSelection): Deleted.
        (WebKit::WebPage::performDictionaryLookupOfCurrentSelection): Deleted.
        (WebKit::WebPage::dictionaryPopupInfoForRange): Deleted.
        (WebKit::WebPage::performDictionaryLookupForRange): Deleted.

2018-11-28  Keith Rollin  <krollin@apple.com>

        Update generate-{derived,unified}-sources scripts to support generating .xcfilelist files
        https://bugs.webkit.org/show_bug.cgi?id=192031
        <rdar://problem/46286816>

        Reviewed by Alex Christensen.

        The Generate Derived Sources and Generate Unified Sources build phases
        in Xcode need to have their inputs and outputs specified. This
        specification will come in the form of .xcfilelist files that will be
        attached to these build phases. There is one .xcfilelist file that
        lists the input file and one that lists the output files. As part of
        this work, the various generate-{derived,unified}-sources scripts that
        are executed in these Generate build phases are modified to help in
        the creation of these .xcfilelist files. In particular, they can now
        be invoked with command-line parameters. These parameters are then
        used to alter the normal execution of these scripts, causing them to
        produce the .xcfilelist files as opposed to actually generating the
        files that are listed in those files.

        * Scripts/generate-derived-sources.sh:
        * Scripts/generate-unified-sources.sh:

2018-11-28  Keith Rollin  <krollin@apple.com>

        Revert print_all_generated_files work in r238008; tighten up target specifications
        https://bugs.webkit.org/show_bug.cgi?id=192025
        <rdar://problem/46284301>

        Reviewed by Alex Christensen.

        In r238008, I added a facility for DerivedSources.make makefiles to
        print out the list of files that they generate. This output was used
        in the generation of .xcfilelist files used to specify the output of
        the associated Generate Derived Sources build phases in Xcode. This
        approach worked, but it meant that people would need to follow a
        specific convention to keep this mechanism working.

        Instead of continuing this approach, I'm going to implement a new
        facility based on the output of `make` when passed the -d flag (which
        prints dependency information). This new mechanism is completely
        automatic and doesn't need maintainers to follow a convention. To that
        end, remove most of the work performed in r238008 that supports the
        print_all_generated_files target.

        At the same time, it's important for the sets of targets and their
        dependencies to be complete and correct. Therefore, also include
        changes to bring those up-to-date. As part of that, you'll see
        prevalent use of a particular technique. Here's an example:

            BYTECODE_FILES = \
                Bytecodes.h \
                BytecodeIndices.h \
                BytecodeStructs.h \
                InitBytecodes.asm \
            #
            BYTECODE_FILES_PATTERNS = $(subst .,%,$(BYTECODE_FILES))

            all : $(BYTECODE_FILES)

            $(BYTECODE_FILES_PATTERNS): $(wildcard $(JavaScriptCore)/generator/*.rb) $(JavaScriptCore)/bytecode/BytecodeList.rb
                ...

        These lines indicate a set of generated files (those specified in
        BYTECODE_FILES). These files are generated by the BytecodeList.rb
        tool. But, as opposed to the normal rule where a single foo.output is
        generated by foo.input plus some additional dependencies, this rule
        produces multiple output files from a tool whose connection to the
        output files is not immediately clear. A special approach is needed
        where a single rule produces multiple output files. The normal way to
        implement this is to use an .INTERMEDIATE target. However, we used
        this approach in the past and ran into a problem with it, addressing
        it with an alternate approach in r210507. The above example shows this
        approach. The .'s in the list of target files are replaced with %'s,
        and the result is used as the left side of the dependency rule.

        * DerivedSources.make:

2018-11-28  Daniel Bates  <dabates@apple.com>

        [iOS] Page not defocused when Find-in-page becomes first responder
        https://bugs.webkit.org/show_bug.cgi?id=192084
        <rdar://problem/46146777>

        Reviewed by Tim Horton.

        When -becomeFirstResponder and -resignFirstResponder is called the page should become focused
        and defocused, respectively. WebKit adjusts it behavior depending on whether it knows it has
        focus. This includes decisions about whether to allow an element to be focused. We need to
        ensure that WebKit knows whether the web view is focused for it to make good decisions.

        * UIProcess/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::isViewFocused): Check if the content view is the first responder and
        hence is accepting keyboard input. Note that picture-in-picture views do not accept keyboard
        input.
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView becomeFirstResponderForWebView]): Update activity state when the view
        becomes focused.
        (-[WKContentView resignFirstResponderForWebView]): Update activity state when the view
        becomes defocused.

2018-11-28  Alex Christensen  <achristensen@webkit.org>

        Remove dead code from an earlier attempt at implementing safe browsing
        https://bugs.webkit.org/show_bug.cgi?id=192067

        Reviewed by Chris Dumez.

        * Shared/LoadParameters.cpp:
        (WebKit::LoadParameters::encode const):
        (WebKit::LoadParameters::decode):
        * Shared/LoadParameters.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::loadAlternateHTML):
        (WebKit::WebPageProxy::decidePolicyForNavigationActionAsync):
        (WebKit::WebPageProxy::decidePolicyForNavigationAction):
        (WebKit::WebPageProxy::decidePolicyForNavigationActionSync):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.h:

2018-11-28  Alex Christensen  <achristensen@webkit.org>

        Move logCookieInformation bool from NetworkProcess to NetworkSession
        https://bugs.webkit.org/show_bug.cgi?id=192049

        Reviewed by Chris Dumez.

        Part of an effort to remove globals in the NetworkProcess.

        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::cookiesForDOM):
        (WebKit::NetworkConnectionToWebProcess::setCookiesFromDOM):
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::initializeNetworkProcess):
        * NetworkProcess/NetworkProcess.h:
        (WebKit::NetworkProcess::shouldLogCookieInformation const): Deleted.
        * NetworkProcess/NetworkProcessCreationParameters.cpp:
        (WebKit::NetworkProcessCreationParameters::encode const):
        (WebKit::NetworkProcessCreationParameters::decode):
        * NetworkProcess/NetworkProcessCreationParameters.h:
        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::didFinishLoading):
        (WebKit::NetworkResourceLoader::sendResultForCacheEntry):
        (WebKit::NetworkResourceLoader::shouldLogCookieInformation):
        (WebKit::NetworkResourceLoader::logCookieInformation const):
        (WebKit::logBlockedCookieInformation):
        (WebKit::logCookieInformationInternal):
        (WebKit::NetworkResourceLoader::logCookieInformation):
        * NetworkProcess/NetworkResourceLoader.h:
        * NetworkProcess/NetworkSession.h:
        (WebKit::NetworkSession::logCookieInformation const):
        * NetworkProcess/NetworkSessionCreationParameters.h:
        (WebKit::NetworkSessionCreationParameters::encode const):
        (WebKit::NetworkSessionCreationParameters::decode):
        * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
        (WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa):
        (WebKit::NetworkDataTaskCocoa::willPerformHTTPRedirection):
        * NetworkProcess/cocoa/NetworkSessionCocoa.h:
        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (WebKit::NetworkSessionCocoa::NetworkSessionCocoa):
        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        (WebKit::WebProcessPool::platformInitializeNetworkProcess):
        * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:
        (WebKit::WebsiteDataStore::parameters):

2018-11-28  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r238620.

        Broke internal builds again.

        Reverted changeset:

        "Remove @no-unify of InjectedBundleRangeHandle.cpp and
        InjectedBundleNodeHandle.cpp"
        https://bugs.webkit.org/show_bug.cgi?id=191853
        https://trac.webkit.org/changeset/238620

2018-11-28  Yongjun Zhang  <yongjun_zhang@apple.com>

        Allow WebKit clients to specify a minimum effective width for layout.
        https://bugs.webkit.org/show_bug.cgi?id=191499
        <rdar://problem/45362678>

        Reviewed by Wenson Hsieh.

        If we ignore the meta viewport (_shouldIgnoreMetaViewport is true), the default layout width will be device
        width. For clients that wish to lay out the content with a different width value, we would need to add a way
        to specify the effective width for layout.

        * UIProcess/API/Cocoa/WKWebView.mm: Add an iVar _minimumEffectiveDeviceWidth.
        (-[WKWebView _dispatchSetViewLayoutSize:]): Call the new setViewportConfigurationViewLayoutSize method.
        (-[WKWebView _setViewScale:]): Ditto.
        (-[WKWebView _setMinimumEffectiveWidth:]): The setter for _minimumEffectiveDeviceWidth.
        (-[WKWebView _minimumEffectiveWidth]): Getter for _minimumEffectiveDeviceWidth
        * UIProcess/API/Cocoa/WKWebViewPrivate.h: Add a property _minimumEffectiveDeviceWidth to WKWebView.
        * UIProcess/WebPageProxy.h: Change setViewportConfigurationViewLayoutSize to take another argument minimumEffectiveDeviceWidth.
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::setViewportConfigurationViewLayoutSize): Also send effectiveWidth to WebContent process.
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::WebPage): Set the initial effective width to 0 when creating a web page, this tells ViewportConfiguration
             to ignore the minimum effective width value.
        * WebProcess/WebPage/WebPage.h: Change setViewportConfigurationViewLayoutSize to take another argument effectiveWidth.
        * WebProcess/WebPage/WebPage.messages.in:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::setViewportConfigurationViewLayoutSize): Also pass effectiveWidth value to ViewportConfiguration.

2018-11-28  Fujii Hironori  <Hironori.Fujii@sony.com>

        Remove @no-unify of InjectedBundleRangeHandle.cpp and InjectedBundleNodeHandle.cpp
        https://bugs.webkit.org/show_bug.cgi?id=191853

        Reviewed by Michael Catanzaro.

        In r235845, I excluded InjectedBundleRangeHandle.cpp and
        InjectedBundleNodeHandle.cpp from unify source builds in order to
        work around a MSVC bug.

        Then, I commited a different workaround for the MSVC bug in
        r238386. Now, we can include InjectedBundleRangeHandle.cpp and
        InjectedBundleNodeHandle.cpp in unified source builds. Revert
        r235845.

        * Sources.txt: Removed @no-unify of InjectedBundleRangeHandle.cpp
        and InjectedBundleNodeHandle.cpp
        * WebKit.xcodeproj/project.pbxproj: Unchecked Target Membership
        not to be compiled by XCode.

2018-11-28  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: REGRESSION(r238378): reloading WebInspector after a settings change doesn't re-show WebInspector
        https://bugs.webkit.org/show_bug.cgi?id=191971

        Reviewed by Matt Baker.

        * WebProcess/WebPage/WebInspector.cpp:
        (WebKit::WebInspector::reopen): Deleted.
        * WebProcess/WebPage/WebInspector.h:
        * WebProcess/WebPage/WebInspector.messages.in:
        Move reopen out of the WebProcess...

        * UIProcess/WebInspectorProxy.cpp:
        (WebKit::WebInspectorProxy::reopen):
        * UIProcess/WebInspectorProxy.h:
        * UIProcess/WebInspectorProxy.messages.in:
        And into the UIProcess where the order of messages won't
        be as problematic.

        * WebProcess/WebPage/WebInspectorUI.cpp:
        (WebKit::WebInspectorUI::reopen):
        Send a message to the WebInspectorProxy instead.

2018-11-28  Alexey Proskuryakov  <ap@apple.com>

        Remove another OS version check from NetworkDataTaskCocoa.mm
        https://bugs.webkit.org/show_bug.cgi?id=192046

        Reviewed by Alex Christensen.

        * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
        (WebKit::NetworkDataTaskCocoa::statelessCookieStorage):

2018-11-28  Alexey Proskuryakov  <ap@apple.com>

        Modernize version checks for same site cookie support
        https://bugs.webkit.org/show_bug.cgi?id=192054

        Reviewed by Tim Horton.

        * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm: (WebKit::updateTaskWithFirstPartyForSameSiteCookies):
        Also removed runtime checks, which are no longer relevant.

2018-11-27  Mark Lam  <mark.lam@apple.com>

        ENABLE_FAST_JIT_PERMISSIONS should be false for iosmac.
        https://bugs.webkit.org/show_bug.cgi?id=192055
        <rdar://problem/46288783>

        Reviewed by Saam Barati.

        * Configurations/FeatureDefines.xcconfig:

2018-11-27  Alex Christensen  <achristensen@webkit.org>

        Make synchronous IPC introduced in r237267 asynchronous
        https://bugs.webkit.org/show_bug.cgi?id=190757

        Reviewed by Chris Dumez.

        * UIProcess/API/Cocoa/WKProcessPool.mm:
        (-[WKProcessPool _getActivePagesOriginsInWebProcessForTesting:completionHandler:]):
        (-[WKProcessPool _getActivePagesOriginsInWebProcessForTesting:]): Deleted.
        * UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::activePagesOriginsInWebProcessForTesting):
        * UIProcess/WebProcessPool.h:
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::activePagesDomainsForTesting):
        * UIProcess/WebProcessProxy.h:
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::getActivePagesOriginsForTesting):
        * WebProcess/WebProcess.messages.in:
        * WebProcess/cocoa/WebProcessCocoa.mm:
        (WebKit::WebProcess::getActivePagesOriginsForTesting):

2018-11-27  Alex Christensen  <achristensen@webkit.org>

        Safe browsing warning text needs to be visible on High Sierra
        https://bugs.webkit.org/show_bug.cgi?id=192022

        Reviewed by Tim Horton.

        Something about AppKit, autolayout, view insertion order, and NSTextView makes the text lay
        out with initial size of {0, 0} on High Sierra. Using an NSTextField instead makes the details visible.

        Covered by an API test.

        * UIProcess/Cocoa/WKSafeBrowsingWarning.h:
        * UIProcess/Cocoa/WKSafeBrowsingWarning.mm:
        (makeLabel):
        (-[WKSafeBrowsingWarning addContent]):
        (-[WKSafeBrowsingWarning showDetailsClicked]):
        (-[WKSafeBrowsingWarning layoutText]):
        (makeTitleLabel): Deleted.

2018-11-27  Tim Horton  <timothy_horton@apple.com>

        WKNavigation.AutomaticViewReloadAfterWebProcessCrash asserts after r238538
        https://bugs.webkit.org/show_bug.cgi?id=192038
        <rdar://problem/46288457>

        Reviewed by Wenson Hsieh.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::m_resetRecentCrashCountTimer):
        (WebKit::WebPageProxy::finishAttachingToWebProcess):
        (WebKit::WebPageProxy::resetState):
        (WebKit::m_editableImageController): Deleted.
        Properly invalidate m_editableImageController when resetting WebPageProxy.
        Otherwise, the MessageReceiverMaps get invalidated, then later when
        EditableImageController goes away we assert trying to remove the receiver.

2018-11-27  Jiewen Tan  <jiewen_tan@apple.com>

        (r238246) [ MacOS Debug ] Layout Test http/wpt/webauthn/ctap-hid-failure.https.html is Crashing
        https://bugs.webkit.org/show_bug.cgi?id=191757

        Reviewed by Chris Dumez.

        Wrong nonce error causes retransmission, which then trigger wrong nonce error. This is expected
        behavior for mock testing. However, the main thread could time out when MockHidConnection::send
        is excuting the block on another thread. The block will then return without invoking the callback,
        which triggers this WTFCrash. The solution is always invoking the callback before return in the
        block.

        * UIProcess/WebAuthentication/Mock/MockHidConnection.cpp:
        (WebKit::MockHidConnection::send):

2018-11-27  Keith Rollin  <krollin@apple.com>

        Better parsing of comments in generate-message*.py
        https://bugs.webkit.org/show_bug.cgi?id=191866
        <rdar://problem/46189563>

        Reviewed by Chris Dumez.

        The script parsing the *.messages.in files would treat a line starting
        with '#' as a comment, but not a line starting with '<whitespace>#'.
        This means that jamming a '#' right in front of the first character of
        a message definition (as opposed to the beginning of a line) will have
        no effect and the line will get treated just the same as a
        non-commented line. Fix this by trimming all white space from the
        beginning and ending of the line before processing it.

        * Scripts/webkit/parser.py:
        (parse):
        * Scripts/webkit/test-messages.in:

2018-11-27  Thibault Saunier  <tsaunier@igalia.com>

        [GTK|WPE] Allow disabling WebRTC unified plan SDP through an env var
        https://bugs.webkit.org/show_bug.cgi?id=192024

        Reviewed by Michael Catanzaro.

        * UIProcess/API/glib/WebKitSettings.cpp:
        (webKitSettingsConstructed):

2018-11-27  Alexey Proskuryakov  <ap@apple.com>

        Modernize the check for async _saveCookies existence
        https://bugs.webkit.org/show_bug.cgi?id=191987

        Reviewed by Dean Jackson.

        * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
        (WebKit::NetworkProcess::platformSyncAllCookies):

2018-11-27  Tim Horton  <timothy_horton@apple.com>

        Serialize and deserialize editable image strokes
        https://bugs.webkit.org/show_bug.cgi?id=192002
        <rdar://problem/30900149>

        Reviewed by Dean Jackson.

        * UIProcess/API/APIAttachment.cpp:
        (API::Attachment::updateAttributes):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::willUpdateAttachmentAttributes):
        * UIProcess/WebPageProxy.h:
        When an attachment would update its DOM attributes, plumb a notification
        to EditableImageController, and allow it to block the update (because
        we don't really want to set src for editable image attachments,
        we just want the UI process to fully own the data).

        * Platform/spi/ios/PencilKitSPI.h:
        Add some SPI.

        * UIProcess/ios/EditableImageController.h:
        * UIProcess/ios/EditableImageController.mm:
        (WebKit::EditableImageController::loadStrokesFromAttachment):
        Add a helper to load strokes from an attachment.

        (WebKit::EditableImageController::associateWithAttachment):
        Try to load strokes from the attachment when initially associated.
        Don't create a file wrapper around a null image, so it will be regenerated later.

        (WebKit::EditableImageController::willUpdateAttachmentAttributes):
        The aforementioned plumbing at update time.

        * UIProcess/ios/WKDrawingView.h:
        * UIProcess/ios/WKDrawingView.mm:
        (-[WKDrawingView layoutSubviews]):
        Invalidate the attachment (so it will be regenerated upon request) if the
        canvas size changes.

        (-[WKDrawingView PNGRepresentation]):
        Serialize strokes into the EXIF User Comment field.
        We will find a different field to use (ideally a custom vendor-specific
        field that nobody else will use for anything), but this works for now.

        Don't try to render an image if we don't have a size or scale;
        PKImageRenderer will just fail anyway, so bail early.

        In the iOS Simulator, PKImageRenderer currently returns an unusable image.
        Instead, so that we have a image on which to serialize the strokes,
        create a transparent 1x1 image. This makes it possible to serialize strokes
        even though we don't have a usable rendered image, so that we can still test
        this change (and future changes).

        (-[WKDrawingView loadDrawingFromPNGRepresentation:]):
        If available, deserialize strokes from the EXIF User Comment field.

        (-[WKDrawingView drawingDidChange:]):
        (-[WKDrawingView invalidateAttachment]):
        Factor invalidateAttachment out of drawingDidChange so we can call
        it from layoutSubviews too!

2018-11-27  Chris Dumez  <cdumez@apple.com>

        Regression(PSON) crash under WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrame()
        https://bugs.webkit.org/show_bug.cgi?id=191983
        <rdar://problem/46246863>

        Reviewed by Geoffrey Garen.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::continueNavigationInNewProcess):
        Make sure the navigation still exists in m_mainFrameCreationHandler and return early if it
        does not.

        (WebKit::WebPageProxy::resetState):
        Clear out m_mainFrameCreationHandler / m_mainFrameWindowCreationHandler if we resetting the state
        after a crash. At this point, there is no chance the WebProcess will send us the IPC that will
        cause these to get called and we do not want old state to remain for future navigations.

2018-11-16  Jiewen Tan  <jiewen_tan@apple.com>

        Disallow loading webarchives as iframes
        https://bugs.webkit.org/show_bug.cgi?id=191728
        <rdar://problem/45524528>

        Reviewed by Youenn Fablet.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::unableToImplementPolicy):
        Add a check to prevent null pointer dereference.

2018-11-27  Wenson Hsieh  <wenson_hsieh@apple.com>

        WebKit.AddAndRemoveDataDetectors hits a debug assertion after r238515
        https://bugs.webkit.org/show_bug.cgi?id=191996

        Reviewed by Tim Horton.

        This assertion is hit because `decode(Decoder& decoder, NSArray<Class> *allowedClasses)` expects the decoded
        object (of class `_NSArrayM`) to be equal to `NSArray.class`.

        We fix the crash by relaxing the debug assertion when decoding securely-codable objects over IPC. Instead of
        checking that the class of the decoded object is equal to one of the allowed classes, check that the object is a
        kind of any of the allowed classes.

        * Shared/Cocoa/ArgumentCodersCocoa.h:
        (IPC::isObjectClassAllowed):
        (IPC::decode):

2018-11-27  Tomas Popela  <tpopela@redhat.com>

        [GTK][WPE] Remove temporary workaround in Source/WebKit/Platform*.cmake
        https://bugs.webkit.org/show_bug.cgi?id=192008

        Reviewed by Michael Catanzaro.

        Looks like it's not needed anymore as the code compiles fine without
        it.

        * PlatformGTK.cmake:
        * PlatformWPE.cmake:

2018-11-27  Antti Koivisto  <antti@apple.com>

        Factor mask layer applying in RemoteLayerTreePropertyApplier into a shared function
        https://bugs.webkit.org/show_bug.cgi?id=192001

        Reviewed by Tim Horton.

        * Shared/RemoteLayerTree/RemoteLayerTreePropertyApplier.h:
        * Shared/RemoteLayerTree/RemoteLayerTreePropertyApplier.mm:
        (WebKit::RemoteLayerTreePropertyApplier::applyProperties):
        (WebKit::RemoteLayerTreePropertyApplier::updateMask):

        Shared function, with some special tricks for iOS backdrop layers.

        (WebKit::RemoteLayerTreePropertyApplier::applyPropertiesToUIView):

2018-11-27  Antti Koivisto  <antti@apple.com>

        Stop collecting related layers in RemoteLayerTreeHost::updateLayerTree
        https://bugs.webkit.org/show_bug.cgi?id=192003

        Reviewed by Tim Horton.

        We can pass the node hash directly to RemoteLayerTreePropertyApplier. The collection step doesn't seem
        to add anything except an extra hash lookup.

        * Shared/RemoteLayerTree/RemoteLayerTreePropertyApplier.h:
        * UIProcess/RemoteLayerTree/RemoteLayerTreeHost.mm:
        (WebKit::RemoteLayerTreeHost::updateLayerTree):

        Pass m_nodes directly.
        Some random cleanups.

2018-11-27  Antti Koivisto  <antti@apple.com>

        Remote tile layers shouldn't be UIViews
        https://bugs.webkit.org/show_bug.cgi?id=191953

        Reviewed by Tim Horton.

        They don't need any UIView functionality, nor do they ever have UIView descendants.
        We can use lighter weight objects.

        * Shared/RemoteLayerTree/RemoteLayerTreePropertyApplier.h:
        * Shared/RemoteLayerTree/RemoteLayerTreePropertyApplier.mm:
        (WebKit::RemoteLayerTreePropertyApplier::applyProperties):
        (WebKit::RemoteLayerTreePropertyApplier::updateChildren):

        Factor to a function shared between platforms.
        Support having both views and plain layers in the same tree.
        Assert that all siblings are of the same type and that we don't attempt to add views to layers.

        (WebKit::RemoteLayerTreePropertyApplier::applyPropertiesToUIView):
        * UIProcess/RemoteLayerTree/RemoteLayerTreeHost.mm:
        (WebKit::RemoteLayerTreeHost::makeNode):

        Use new plain layer on Mac too.

        * UIProcess/RemoteLayerTree/RemoteLayerTreeNode.h:
        * UIProcess/RemoteLayerTree/RemoteLayerTreeNode.mm:
        (-[WKPlainRemoteLayer description]):

        Add a CALayer subclass so we can have a description, similar to WKCompositingView and pals.

        (WebKit::RemoteLayerTreeNode::createWithPlainLayer):
        (WebKit::RemoteLayerTreeNode::detachFromParent):

        Support having null view.

        (WebKit::RemoteLayerTreeNode::appendLayerDescription):

        Helper for layer descriptions.

        * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeHostIOS.mm:
        (WebKit::RemoteLayerTreeHost::makeNode):

        Construct plain layers for tiles.

        * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeViews.mm:
        (-[WKCompositingView description]):
        (-[WKUIRemoteView description]):
        (-[WKBackdropView description]):

2018-11-27  Fujii Hironori  <Hironori.Fujii@sony.com>

        Remove "using namespace WebCore" under Source/WebKit/WebProcess/InjectedBundle/API
        https://bugs.webkit.org/show_bug.cgi?id=191995

        Reviewed by Alex Christensen.

        The statement "using namespace WebCore" should be placed inside
        namespace WebKit for unified source builds. But, source files
        defining WebKit API can't be enclosed by namespace WebKit { }
        becuase they are defined in the global scope.

        "using namespace WebCore" in global scope and unified source
        builds may cause build breaks (Bug 191853).

        Remove "using namespace WebCore" in the global scope. Use
        "WebCore::" prefix instead.

        * WebProcess/InjectedBundle/API/c/WKBundle.cpp:
        (WKBundleClearAllDatabases):
        (WKBundleSetDatabaseQuota):
        (WKBundleClearResourceLoadStatistics):
        (WKBundleResourceLoadStatisticsNotifyObserver):
        * WebProcess/InjectedBundle/API/c/WKBundleFrame.cpp:
        (WKBundleFrameGetFrameLoadState):
        (WKBundleFrameClearOpener):
        (WKBundleFrameCallShouldCloseOnWebView):
        (WKBundleFrameCopySecurityOrigin):
        (WKBundleFrameFocus):
        * WebProcess/InjectedBundle/API/c/WKBundleInspector.cpp:
        * WebProcess/InjectedBundle/API/c/WKBundlePageOverlay.cpp:

2018-11-26  Wenson Hsieh  <wenson_hsieh@apple.com>

        [Cocoa] No way for clients to tell whether the content view is in the responder chain when the web view is
        https://bugs.webkit.org/show_bug.cgi?id=169212
        <rdar://problem/30899656>

        Reviewed by Tim Horton.

        Add an SPI hook to allow internal WKWebView clients to determine whether the WKWebView's content view is the
        first responder. Intended for use by clients, such as Mail, that embed native text input views and other views
        that may become first responder within the view hierarchy of the WKWebView.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _contentViewIsFirstResponder]):
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:

2018-11-26  Tim Horton  <timothy_horton@apple.com>

        Insert <attachment> elements under editable images to make their backing data accessible
        https://bugs.webkit.org/show_bug.cgi?id=191844
        <rdar://problem/30900149>

        Reviewed by Simon Fraser.

        * DerivedSources.make:
        * SourcesCocoa.txt:
        * UIProcess/API/APIAttachment.h:
        fileWrapper() is no longer a trivial getter; it can now construct
        the file wrapper from a file wrapper generator if necessary.

        Add setFileWrapperGenerator() and invalidateGeneratedFileWrapper().

        Make m_fileWrapper mutable so it can be adjusted inside its own getter.

        * UIProcess/API/Cocoa/APIAttachmentCocoa.mm:
        (API::Attachment::fileWrapper const):
        If we have a fileWrapperGenerator and don't have a cached file wrapper,
        create one before returning it.

        (API::Attachment::invalidateGeneratedFileWrapper):
        Invalidate the currently-cached file wrapper. The next time a client
        requests the file wrapper it will be regenerated.

        (API::Attachment::fileName const):
        (API::Attachment::fileSizeForDisplay const):
        (API::Attachment::enclosingImageData const):
        (API::Attachment::isEmpty const):
        (API::Attachment::createSerializedRepresentation const):
        Make use of fileWrapper() instead of m_fileWrapper directly, to ensure
        that it is created lazily if necessary.

        (API::Attachment::setFileWrapperGenerator):
        * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeHostIOS.mm:
        (WebKit::RemoteLayerTreeHost::createEmbeddedView):
        * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeViews.h:
        * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeViews.mm:
        (-[WKEmbeddedView initWithEmbeddedViewID:]):
        Defer to EditableImageController for creating WKDrawingViews for
        editable images. This is done primarily so we don't have to pollute
        Remote Layer Tree and DrawingArea interfaces with editable-image-specific messages.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::m_editableImageController):
        (WebKit::m_resetRecentCrashCountTimer): Deleted.
        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::editableImageController):
        Keep an EditableImageController on the WebPageProxy.

        * UIProcess/ios/EditableImageController.h: Added.
        * UIProcess/ios/EditableImageController.messages.in: Added.
        * UIProcess/ios/EditableImageController.mm: Added.
        (WebKit::EditableImageController::EditableImageController):
        (WebKit::EditableImageController::~EditableImageController):
        (WebKit::EditableImageController::ensureEditableImage):
        (WebKit::EditableImageController::editableImage):
        (WebKit::EditableImageController::didCreateEditableImage):
        (WebKit::EditableImageController::didDestroyEditableImage):
        (WebKit::EditableImageController::associateWithAttachment):
        (WebKit::EditableImageController::invalidateAttachmentForEditableImage):
        Add EditableImageController, which keeps track of EditableImages.
        It can be messaged directly to create or destroy the UI-side state
        of an editable image, and also to associate a WKDrawingView with
        a particular attachment.

        * UIProcess/ios/WKDrawingView.h:
        * UIProcess/ios/WKDrawingView.mm:
        (-[WKDrawingView initWithEmbeddedViewID:webPageProxy:]):
        Store the WebPageProxy (weakly) so that we can get to the EditableImageController.

        (-[WKDrawingView layoutSubviews]):
        (-[WKDrawingView PNGRepresentation]):
        Synchronously render the PKCanvasView to PNG.

        (-[WKDrawingView drawingDidChange:]):
        If the drawing changes, inform the APIAttachment that it needs
        to discard its NSFileWrapper; a new one will be generated lazily.

        (-[WKDrawingView init]): Deleted.
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/WebCoreSupport/WebChromeClient.h:
        * WebProcess/WebCoreSupport/ios/WebChromeClientIOS.mm:
        (WebKit::WebChromeClient::associateEditableImageWithAttachment):
        (WebKit::WebChromeClient::didCreateEditableImage):
        (WebKit::WebChromeClient::didDestroyEditableImage):

2018-11-26  Jer Noble  <jer.noble@apple.com>

        Adopt -setOverrideRouteSharingPolicy:routingContextUID: SPI
        https://bugs.webkit.org/show_bug.cgi?id=190951
        <rdar://problem/45213065>

        Reviewed by Alex Christensen.

        Add an asyncronous reply request to VideoFullscreenManager.

        * Platform/IPC/MessageSender.h:
        (IPC::MessageSender::sendWithAsyncReply):
        * UIProcess/Cocoa/VideoFullscreenManagerProxy.h:
        * UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:
        (WebKit::VideoFullscreenModelContext::requestRouteSharingPolicyAndContextUID):
        * WebProcess/cocoa/VideoFullscreenManager.h:
        * WebProcess/cocoa/VideoFullscreenManager.messages.in:
        * WebProcess/cocoa/VideoFullscreenManager.mm:
        (WebKit::VideoFullscreenManager::requestRouteSharingPolicyAndContextUID):

2018-11-26  Alex Christensen  <achristensen@webkit.org>

        Rename WKWebView._safeBrowsingWarningForTesting to _safeBrowsingWarning to use it for more than testing
        https://bugs.webkit.org/show_bug.cgi?id=191981

        Reviewed by Tim Horton.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _safeBrowsingWarning]):
        (-[WKWebView _safeBrowsingWarningForTesting]): Deleted.
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:

2018-11-26  Daniel Bates  <dabates@apple.com>

        REGRESSION (r237738): Command Down Arrow doesn't scroll to the end of a page anymore
        https://bugs.webkit.org/show_bug.cgi?id=191967
        <rdar://problem/45976390>

        Reviewed by Tim Horton.

        Fixes an issue where pressing Command + Down Arrow does not scroll the view to the end of the page.

        Following r237738 the value of the enumerations used to identify modifier keys (e.g. Shift) changed
        to match the values of the corresponding enumerations in GraphicsServices, which are the
        enumerations UIKit uses to computes the modifier flags bitmask when instantiating a WebEvent to
        pass to WebKit. Before r237738 WebKit was using enumerations whose values matched the values
        of the corresponding UIKit public API UIKeyModifier* enumerations. For non-content editable elements,
        WebKit intercepts UIKit events in -_handleKeyUIEvent, synthesizes and dispatches its own WebEvent.
        However it was creating WebEvents with a modifier flags bitmask built from the UIKeyModifier* enumerations,
        -_modifierFlags, as opposed to a bitmask from the GraphicsServices enumerations, -_gsModifierFlags.
        Instead WebKit should call -_gsModifierFlags to compute the GraphicsServices-compatible modifier
        flags bitmask when instantiating a WebEvent.

        * Platform/spi/ios/UIKitSPI.h: Expose -_gsModifierFlags and remove -_modifierFlags.
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _handleKeyUIEvent:]): Remove unnecessary code to update the current modifier state.
        This will be done by the WebProcess when it receives the keyboard event.
        (-[WKContentView _didHandleKeyEvent:eventWasHandled:]): Do not pass modifier flags changed events
        to the scrolling animator as it does not know how to handle these kinds of events and triggers an
        assertion failure when it tries to read the input string from the event (calls -charactersIgnoringModifiers).
        FlagsChanged WebEvents events do not have an input string just like a FlagsChanged NSEvent that
        they model on Mac.
        * UIProcess/ios/WKWebEvent.mm:
        (-[WKWebEvent initWithEvent:]): Pass the value of -_gsModifierFlags for the modifier flags bitmask
        instead of the value of -_modifierFlags.

2018-11-26  Chris Dumez  <cdumez@apple.com>

        [PSON] process pre-warming should not be on for everyone
        https://bugs.webkit.org/show_bug.cgi?id=191966
        <rdar://problem/46138499>

        Reviewed by Ryosuke Niwa.

        If automatic process-prewarming is not explicitly turned on/off by the client, then we now only
        turn it on automatically after the first process swap. Previously, it was always enabled if
        process-swap on cross-site navigation was enabled (which is the case by default for all apps).

        This is important because some apps do not actually browse (only display static content) or never
        browse cross-site, and thus would not benefit from process prewarming and yet pay a memory cost.

        * UIProcess/API/APIProcessPoolConfiguration.h:
        Add m_clientWouldBenefitFromAutomaticProcessPrewarming flag which is false by default and is used
        as a fallback if the client did not call setIsAutomaticProcessWarmingEnabled().

        * UIProcess/API/C/WKContextConfigurationRef.cpp:
        (WKContextConfigurationPrewarmsProcessesAutomatically):
        (WKContextConfigurationSetPrewarmsProcessesAutomatically):
        Add C API to toggle automatic process prewarming. It is needed for Safari to turn on this feature
        by default for browsing. This way Safari does not have to wait for the first process swap to
        start prewarming.

        * UIProcess/API/C/WKContextConfigurationRef.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::didReachGoodTimeToPrewarm):
        Only do automatic process prewarming if process-swap on cross-site navigation is also enabled.
        This is needed for clients like Safari that explicitly enable automatic process prewarming but
        only want to have it enabled if PSON is also enabled via experimental features.

        (WebKit::WebProcessPool::processForNavigation):
        On first process swap, if the client did not explicitly turn on or off automatic process prewarming
        then we enable it then. This avoids paying the cost of process prewarming in apps that would not
        benefit from it.

2018-11-26  Andy Estes  <aestes@apple.com>

        [Cocoa] Make it easier to encode NSObjects
        https://bugs.webkit.org/show_bug.cgi?id=191948

        Reviewed by Dean Jackson.

        It should be easier to encode objects that conform to NSSecureCoding for WebKit IPC. Right
        now, several argument coders duplicate the logic for encoding and decoding objects using
        NSKeyedArchiver and NSKeyedUnarchiver.

        This patch adds encodeObject() and decodeObject() primitives for encoding and decoding using
        Foundation keyed archiving. It then partially specializes ArgumentCoder for raw pointers and
        RetainPtrs whose pointee conforms to NSSecureCoding to call these new primitives.

        This allows us to use Encoder::operator<< to encode raw pointers or RetainPtrs and use
        Decoder::operator>> to decode to an optional RetainPtr. By default, IPC::decode infers the
        allowed class for decoding by calling `[T class]`. We can also specify the allowed classes
        explicitly for containers and classes that are loaded at runtime.

        * Shared/Cocoa/ArgumentCodersCocoa.h: Added.
        * Shared/Cocoa/ArgumentCodersCocoa.mm: Added.
        * Shared/Cocoa/DataDetectionResult.mm:
        (WebKit::DataDetectionResult::encode const): Removed custom encoding code and used ArgumentCodersCocoa instead.
        (WebKit::DataDetectionResult::decode): Ditto.
        * Shared/Cocoa/WebCoreArgumentCodersCocoa.mm:
        (IPC::ArgumentCoder<WebCore::Payment>::encode): Ditto.
        (IPC::ArgumentCoder<WebCore::Payment>::decode): Ditto.
        (IPC::ArgumentCoder<WebCore::PaymentAuthorizationResult>::decode): Ditto.
        (IPC::ArgumentCoder<WebCore::PaymentContact>::encode): Ditto.
        (IPC::ArgumentCoder<WebCore::PaymentContact>::decode): Ditto.
        (IPC::ArgumentCoder<WebCore::PaymentMerchantSession>::encode): Ditto.
        (IPC::ArgumentCoder<WebCore::PaymentMerchantSession>::decode): Ditto.
        (IPC::ArgumentCoder<WebCore::PaymentMethod>::encode): Ditto.
        (IPC::ArgumentCoder<WebCore::PaymentMethod>::decode): Ditto.
        (IPC::ArgumentCoder<ApplePaySessionPaymentRequest>::decode): Ditto.
        * Shared/RemoteLayerTree/RemoteLayerTreeTransaction.mm:
        (WebKit::RemoteLayerTreeTransaction::description const): Added some needed namespaces due to unified source shuffling.
        * Shared/WebCoreArgumentCoders.h: Modernized several decoders.
        * Shared/ios/InteractionInformationAtPosition.mm:
        (WebKit::InteractionInformationAtPosition::encode const): Removed custom encoding code and used ArgumentCodersCocoa instead.
        (WebKit::InteractionInformationAtPosition::decode): Ditto.
        * Shared/mac/WebCoreArgumentCodersMac.mm:
        (IPC::ArgumentCoder<WebCore::ProtectionSpace>::encodePlatformData): Ditto.
        (IPC::ArgumentCoder<WebCore::ProtectionSpace>::decodePlatformData): Ditto.
        (IPC::ArgumentCoder<WebCore::Credential>::encodePlatformData): Ditto.
        (IPC::ArgumentCoder<WebCore::Credential>::decodePlatformData): Ditto.
        (IPC::ArgumentCoder<WebCore::MediaPlaybackTargetContext>::encodePlatformData): Ditto.
        (IPC::ArgumentCoder<WebCore::MediaPlaybackTargetContext>::decodePlatformData): Ditto.
        (IPC::deviceContextKey): Deleted.
        * Shared/mac/WebHitTestResultData.mm:
        (WebKit::WebHitTestResultData::platformEncode const): Ditto.
        (WebKit::WebHitTestResultData::platformDecode): Ditto.
        * SourcesCocoa.txt: Added ArgumentCodersCocoa.mm.
        * WebKit.xcodeproj/project.pbxproj: Ditto.

2018-11-26  Wenson Hsieh  <wenson_hsieh@apple.com>

        CompletionHandler-based async IPC messages only work when the completion handler takes a single argument
        https://bugs.webkit.org/show_bug.cgi?id=191965

        Reviewed by Tim Horton.

        Teach `messages.py` to handle the case where an async IPC completion handler takes no arguments, or takes more
        than a single argument. Currently, the generated code attempts to wrap all arguments in a `WTFMove(*~)`, but
        this either results in `WTFMove(*)` in the case where there are no arguments, or `WTFMove(*foo, *bar, *baz)` in
        the case where there are several arguments. Both of these results fail to compile.

        Instead, emit `completionHandler()` when there are no arguments, and
        `completionHandler(WTFMove(*foo), WTFMove(*bar), WTFMove(*baz))` when there are multiple arguments.

        Tests:  TestAsyncMessageWithNoArguments
                TestAsyncMessageWithMultipleArguments

        * Scripts/webkit/MessageReceiverSuperclass-expected.cpp:
        (Messages::WebPage::TestAsyncMessageWithNoArguments::callReply):
        (Messages::WebPage::TestAsyncMessageWithNoArguments::cancelReply):
        (Messages::WebPage::TestAsyncMessageWithNoArguments::send):
        (Messages::WebPage::TestAsyncMessageWithMultipleArguments::callReply):
        (Messages::WebPage::TestAsyncMessageWithMultipleArguments::cancelReply):
        (Messages::WebPage::TestAsyncMessageWithMultipleArguments::send):
        (WebKit::WebPage::didReceiveMessage):
        * Scripts/webkit/MessagesSuperclass-expected.h:
        (Messages::WebPage::TestAsyncMessageWithNoArguments::receiverName):
        (Messages::WebPage::TestAsyncMessageWithNoArguments::name):
        (Messages::WebPage::TestAsyncMessageWithNoArguments::asyncMessageReplyName):
        (Messages::WebPage::TestAsyncMessageWithNoArguments::arguments const):
        (Messages::WebPage::TestAsyncMessageWithMultipleArguments::receiverName):
        (Messages::WebPage::TestAsyncMessageWithMultipleArguments::name):
        (Messages::WebPage::TestAsyncMessageWithMultipleArguments::asyncMessageReplyName):
        (Messages::WebPage::TestAsyncMessageWithMultipleArguments::arguments const):
        * Scripts/webkit/messages.py:
        * Scripts/webkit/messages_unittest.py:

        Add new `messages.py` unit tests to cover these cases.

        * Scripts/webkit/test-superclass-messages.in:

2018-11-26  Jeremy Jones  <jeremyj@apple.com>

        Use Full Screen consistently in localizable strings.
        https://bugs.webkit.org/show_bug.cgi?id=190363
        rdar://problem/43882333

        Reviewed by Jon Lee.

        Rename "Fullscreen" to "Full Screen" in localizable strings for consistency.

        * UIProcess/ios/fullscreen/WKFullScreenViewController.mm:
        (-[WKFullScreenViewController _showPhishingAlert]):

2018-11-26  Daniel Bates  <dabates@apple.com>

        Wire up ChromeClient::takeFocus() on iOS
        https://bugs.webkit.org/show_bug.cgi?id=191763
        <rdar://problem/18584508>

        Reviewed by Dan Bernstein.

        Expose existing Mac SPI for use on iOS. This will allow Safari to be notified when
        the engine has cycled through all the tab focusable elements on the page.

        * UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
        * UIProcess/Cocoa/UIDelegate.h:
        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::UIDelegate::setDelegate):

2018-11-26  Wenson Hsieh  <wenson_hsieh@apple.com>

        Unreviewed, fix the internal 32-bit macOS 10.13 build after r238471

        r238471 added an `#include WebPageMessages.h` in `WebPage.h`, which causes the 32-bit macOS build using an
        internal macOS SDK ≤ 10.13 to fail. To address this, move the `#include` back under `PLATFORM(IOS_FAMILY)` by
        changing the parameters of `WebPage::removeDataDetectedLinks` and `WebPage::detectDataInAllFrames` to completion
        handlers rather than async IPC replies.

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::removeDataDetectedLinks):
        (WebKit::WebPage::detectDataInAllFrames):
        * WebProcess/WebPage/WebPage.h:

2018-11-26  Antti Koivisto  <antti@apple.com>

        Clean up layer tree freezing logic in WebPage
        https://bugs.webkit.org/show_bug.cgi?id=191826

        Reviewed by Dean Jackson.

        Use OptionSet<LayerTreeFreezeReason> to track various reasons that can cause layer tree to get frozen.

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::reinitializeWebPage):
        (WebKit::WebPage::freezeLayerTree):
        (WebKit::WebPage::unfreezeLayerTree):
        (WebKit::WebPage::updateDrawingAreaLayerTreeFreezeState):

        Layer tree is unfrozen when there there are no reasons to freeze it.

        (WebKit::WebPage::didStartPageTransition):
        (WebKit::WebPage::didCompletePageTransition):
        (WebKit::WebPage::beginPrinting):
        (WebKit::WebPage::endPrinting):
        (WebKit::WebPage::setIsSuspended):
        (WebKit::WebPage::setLayerTreeStateIsFrozen): Deleted.
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::applicationDidEnterBackground):
        (WebKit::WebPage::applicationWillEnterForeground):
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::actualPrepareToSuspend):
        (WebKit::WebProcess::cancelPrepareToSuspend):
        (WebKit::WebProcess::freezeAllLayerTrees):
        (WebKit::WebProcess::unfreezeAllLayerTrees):
        (WebKit::WebProcess::processDidResume):
        (WebKit::WebProcess::setAllLayerTreeStatesFrozen): Deleted.
        * WebProcess/WebProcess.h:

2018-11-25  Antti Koivisto  <antti@apple.com>

        RemoteLayerTreeNode construction cleanups
        https://bugs.webkit.org/show_bug.cgi?id=191951

        Reviewed by Tim Horton.

        * UIProcess/RemoteLayerTree/RemoteLayerTreeHost.h:
        * UIProcess/RemoteLayerTree/RemoteLayerTreeHost.mm:
        (WebKit::RemoteLayerTreeHost::updateLayerTree):

            Drop unused LayerProperties argument.

        (WebKit::RemoteLayerTreeHost::createLayer):

            Split the actual construction out to makeNode.
            Map updating is shared between platforms.
            Move setting of layerID and clearing default actions to RemoteLayerTreeNode.

        (WebKit::RemoteLayerTreeHost::makeNode):

            Returns RemoteLayerTreeNode.

        (WebKit::RemoteLayerTreeHost::setLayerID): Deleted.
        (WebKit::RemoteLayerTreeHost::layerID): Deleted.

            Move to RemoteLayerTreeNode.

        * UIProcess/RemoteLayerTree/RemoteLayerTreeNode.h:
        * UIProcess/RemoteLayerTree/RemoteLayerTreeNode.mm:
        (WebKit::RemoteLayerTreeNode::RemoteLayerTreeNode):
        (WebKit::RemoteLayerTreeNode::setLayerID):
        (WebKit::RemoteLayerTreeNode::layerID):
        * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeHostIOS.mm:
        (WebKit::RemoteLayerTreeHost::makeNode):
        (WebKit::RemoteLayerTreeHost::createEmbeddedView):
        (WebKit::RemoteLayerTreeHost::createLayer): Deleted.
        * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeViews.mm:
        (-[WKCompositingView description]):
        (-[WKUIRemoteView description]):
        (-[WKBackdropView description]):
        * WebProcess/WebPage/RemoteLayerTree/PlatformCAAnimationRemote.mm:
        (WebKit::addAnimationToLayer):

2018-11-25  Tim Horton  <timothy_horton@apple.com>

        Make it possible to insert editable images with a gesture
        https://bugs.webkit.org/show_bug.cgi?id=191937

        Reviewed by Wenson Hsieh.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _stylusTapGestureShouldCreateEditableImage]):
        * UIProcess/API/Cocoa/WKWebViewInternal.h:
        Add a internal getter for a WKWebViewConfiguration property.

        * UIProcess/WebEditCommandProxy.cpp:
        (WebKit::WebEditCommandProxy::nameForEditAction):
        Add a undo name.

        * UIProcess/WebPageProxy.h:
        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView setupInteraction]):
        (-[WKContentView cleanupInteraction]):
        (-[WKContentView _removeDefaultGestureRecognizers]):
        (-[WKContentView _addDefaultGestureRecognizers]):
        Add a single-stylus-tap gesture recognizer.

        (-[WKContentView _stylusSingleTapRecognized:]):
        If allowed, request to insert an editable image when a stylus tap occurs.

        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::handleStylusSingleTapAtPoint):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::handleStylusSingleTapAtPoint):
        Do a hit test, select the hit position, insert an editable image, and
        then de-assist any assisted node (to make the keyboard go away).
        For now, we'll only insert if we hit non-replaced elements,
        though this heuristic will need to be enhanced significantly once we
        decide on a design.

2018-11-25  Tim Horton  <timothy_horton@apple.com>

        Scrolling and drawing compete for incoming gestures
        https://bugs.webkit.org/show_bug.cgi?id=191940

        Reviewed by Wenson Hsieh.

        * Platform/spi/ios/PencilKitSPI.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _initializeWithConfiguration:]):
        * UIProcess/ios/WKDrawingView.mm:
        (-[WKDrawingView initWithEmbeddedViewID:webPageProxy:]):
        Make scrolling and drawing mutually exclusive if editable images
        are enabled.

2018-11-24  Wenson Hsieh  <wenson_hsieh@apple.com>

        [Cocoa] Fix a few localizable string descriptions in WebEditCommandProxy.cpp and WebEditorClient.mm
        https://bugs.webkit.org/show_bug.cgi?id=191945

        Reviewed by Anders Carlsson.

        Replace some a couple of command undo action name descriptions with "Undo action name", to match all other
        edit commands.

        * UIProcess/WebEditCommandProxy.cpp:
        (WebKit::WebEditCommandProxy::nameForEditAction):

2018-11-24  Wenson Hsieh  <wenson_hsieh@apple.com>

        [Cocoa] Add WKWebView SPI to trigger and remove data detection
        https://bugs.webkit.org/show_bug.cgi?id=191918
        <rdar://problem/36185051>

        Reviewed by Tim Horton.

        Adds support for two new WKWebView SPI methods, `-_detectDataWithTypes:completionHandler:` and
        `-_removeAllDataDetectedLinks:`, to allow internal WebKit clients to run data detection and add links to data
        detected content, or remove all data detected links from the document.

        Test: WebKit.AddAndRemoveDataDetectors

        * Shared/Cocoa/DataDetectionResult.h:
        * Shared/Cocoa/DataDetectionResult.mm:
        (WebKit::DataDetectionResult::decode):

        Modernize DataDetectionResult's IPC decoding, so that it can be used with reply-based async IPC.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _removeDataDetectedLinks:]):
        (-[WKWebView _detectDataWithTypes:completionHandler:]):
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::detectDataInAllFrames):
        (WebKit::WebPageProxy::removeDataDetectedLinks):

        Add or remove data detected links from each frame in the page, and then propagate the new data detector
        results of the main frame to the UI process (this matches current behavior, where the results of -[WKWebView
        _dataDetectionResults] only reflects data detection results in the main frame of the page).

        * UIProcess/WebPageProxy.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::removeDataDetectedLinks):
        (WebKit::WebPage::detectDataInAllFrames):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:

2018-11-24  Andy Estes  <aestes@apple.com>

        [Cocoa] SOFT_LINK_CLASS_FOR_{HEADER,SOURCE} should generate a more concise getter function
        https://bugs.webkit.org/show_bug.cgi?id=191899

        Reviewed by Dean Jackson.

        * Shared/cocoa/WebCoreArgumentCodersCocoa.mm:
        * UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
        * UIProcess/ApplePay/mac/WebPaymentCoordinatorProxyMac.mm:

2018-11-23  Antti Koivisto  <antti@apple.com>

        Replace LayerOrView typedef with a class
        https://bugs.webkit.org/show_bug.cgi?id=191927

        Reviewed by Tim Horton.

        This typedef restricts remote layer representation to be either a CA layer or a view. We might want
        have more flexibility, for example tiles don't really need to be UIViews. It will also make it easier
        to unify Mac and iOS code, and hopefully make it less confusing too.

        This patch introduces RemoteLayerTreeNode class that replaces most uses of LayerOrView typedef
        (the rest are converted to pure CALayer). It also does a bunch of related cleanup.

        * Shared/RemoteLayerTree/RemoteLayerTreePropertyApplier.h:
        * Shared/RemoteLayerTree/RemoteLayerTreePropertyApplier.mm:
        (WebKit::RemoteLayerTreePropertyApplier::applyPropertiesToLayer):
        (WebKit::RemoteLayerTreePropertyApplier::applyProperties):
        (WebKit::RemoteLayerTreePropertyApplier::applyPropertiesToUIView):
        (WebKit::applyPropertiesToLayer): Deleted.
        * SourcesCocoa.txt:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _propertiesOfLayerWithID:]):
        * UIProcess/Cocoa/LayerRepresentation.h: Removed.
        * UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:
        (WebKit::VideoFullscreenManagerProxy::setupFullscreenWithID):
        * UIProcess/PageClient.h:
        * UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.h:
        * UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm:
        (WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTree):
        (WebKit::RemoteLayerTreeDrawingAreaProxy::updateDebugIndicator):
        (WebKit::RemoteLayerTreeDrawingAreaProxy::layerWithIDForTesting const):
        * UIProcess/RemoteLayerTree/RemoteLayerTreeHost.h:
        (WebKit::RemoteLayerTreeHost::rootNode const):
        (WebKit::RemoteLayerTreeHost::rootLayer const): Deleted.
        * UIProcess/RemoteLayerTree/RemoteLayerTreeHost.mm:
        (WebKit::RemoteLayerTreeHost::updateLayerTree):
        (WebKit::RemoteLayerTreeHost::nodeForID const):
        (WebKit::RemoteLayerTreeHost::layerWillBeRemoved):
        (WebKit::RemoteLayerTreeHost::animationDidStart):
        (WebKit::RemoteLayerTreeHost::animationDidEnd):
        (WebKit::RemoteLayerTreeHost::clearLayers):
        (WebKit::RemoteLayerTreeHost::layerWithIDForTesting const):
        (WebKit::RemoteLayerTreeHost::layerForID const):
        (WebKit::RemoteLayerTreeHost::rootLayer const):
        (WebKit::RemoteLayerTreeHost::createLayer):
        (WebKit::RemoteLayerTreeHost::detachRootLayer):
        (WebKit::RemoteLayerTreeHost::mapAllIOSurfaceBackingStore):
        (WebKit::RemoteLayerTreeHost::getLayer const): Deleted.
        * UIProcess/RemoteLayerTree/RemoteLayerTreeNode.h: Added.
        (WebKit::RemoteLayerTreeNode::layer const):
        (WebKit::RemoteLayerTreeNode::uiView const):
        * UIProcess/RemoteLayerTree/RemoteLayerTreeNode.mm: Added.
        (WebKit::RemoteLayerTreeNode::RemoteLayerTreeNode):
        (WebKit::RemoteLayerTreeNode::detachFromParent):
        * UIProcess/RemoteLayerTree/RemoteLayerTreeScrollingPerformanceData.mm:
        (WebKit::RemoteLayerTreeScrollingPerformanceData::blankPixelCount const):
        * UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.cpp:
        (WebKit::RemoteScrollingCoordinatorProxy::connectStateNodeLayers):
        * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeHostIOS.mm:
        (WebKit::RemoteLayerTreeHost::createLayer):
        * UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.mm:
        (WebKit::RemoteScrollingCoordinatorProxy::connectStateNodeLayers):
        (WebKit::layerRepresentationFromLayerOrView): Deleted.
        * UIProcess/WebAuthentication/Cocoa/HidService.h:
        * UIProcess/WebAuthentication/Cocoa/HidService.mm:
        * UIProcess/WebPageProxy.h:
        * UIProcess/ios/LayerRepresentation.mm: Removed.
        * UIProcess/ios/PageClientImplIOS.h:
        * UIProcess/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::setRemoteLayerTreeRootNode):
        (WebKit::PageClientImpl::acceleratedCompositingRootLayer const):
        (WebKit::PageClientImpl::setAcceleratedCompositingRootLayer): Deleted.
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::setRemoteLayerTreeRootNode):
        (WebKit::WebPageProxy::setAcceleratedCompositingRootLayer): Deleted.
        * UIProcess/mac/PageClientImplMac.h:
        * UIProcess/mac/PageClientImplMac.mm:
        (WebKit::PageClientImpl::setRemoteLayerTreeRootNode):
        (WebKit::PageClientImpl::setAcceleratedCompositingRootLayer): Deleted.
        * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm:
        (WebKit::TiledCoreAnimationDrawingAreaProxy::createFence):
        * UIProcess/mac/WebPageProxyMac.mm:
        (WebKit::WebPageProxy::setRemoteLayerTreeRootNode):
        (WebKit::WebPageProxy::acceleratedCompositingRootLayer const):
        (WebKit::WebPageProxy::setAcceleratedCompositingRootLayer): Deleted.
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.cpp:
        (WebKit::PlatformCALayerRemote::recursiveBuildTransaction):

2018-11-23  Jiewen Tan  <jiewen_tan@apple.com>

        [WebAuthN] Enable Web Authentication as an experimental feature for macOS
        https://bugs.webkit.org/show_bug.cgi?id=191932
        rdar://problem/46225210

        Reviewed by Brent Fulgham.

        * Shared/WebPreferences.yaml:

2018-11-23  Wenson Hsieh  <wenson_hsieh@apple.com>

        Enable drag and drop support for iOSMac
        https://bugs.webkit.org/show_bug.cgi?id=191818
        <rdar://problem/43907454>

        Reviewed by Dean Jackson.

        * Configurations/FeatureDefines.xcconfig:
        * Shared/WebPreferencesDefaultValues.cpp:
        (defaultCustomPasteboardDataEnabled):

        Enable custom pasteboard data by default on iOSMac. While writing and reading custom pasteboard data is
        currently broken in iOSMac due to the lack of `teamData` and `preferredPresentationStyle`, opting into custom
        pasteboard data at least allows us to avoid writing unsanitized data types to the pasteboard.

        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::platformEditorState const):

        Fix a regression from <https://trac.webkit.org/r236619> wherein the web process crashes when attempting to edit
        a text field. This happens because the call to `-[UIKeyboard isInHardwareKeyboardMode]` on the iOSMac platform
        attempts to initialize a `UHASWorkspace` from the web process, which then attempts to connect to the UIKit host
        application. Instead, we can skip this call altogether on iOSMac, where the platform never considers a hardware
        keyboard to be "connected", even when typing.

2018-11-23  Antti Koivisto  <antti@apple.com>

        UI side compositing doesn't paint on Mac
        https://bugs.webkit.org/show_bug.cgi?id=191908

        Reviewed by Tim Horton.

        * Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:
        (WebKit::RemoteLayerBackingStore::bytesPerPixel const):
        (WebKit::RemoteLayerBackingStore::surfaceBufferFormat const):

        These deep color formats are not supported on Mac.

2018-11-22  Chris Dumez  <cdumez@apple.com>

        Regression(r238353) Load sometimes hangs when navigating back after a cross-site navigation
        https://bugs.webkit.org/show_bug.cgi?id=191914

        Reviewed by Ryosuke Niwa.

        When process-swapping on a cross-site server-side redirect, we end up doing a decidePolicyForNavigationResponse
        policy check for the about:blank suspension load. This policy decision is ignored by the UIProcess because
        SuspendedPageProxy does not handle this particular IPC message. To handle the issue, make sure the WebProcess
        never sends a DecidePolicyForNavigationResponse IPC to the UIProcess for about:blank suspension loads and let
        the load proceed.

        The issue was already there before r238353 but it was made obvious by r238353 which caused a hang when trying
        to reuse a Suspended page which is hanging while trying to suspend.

        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForResponse):

2018-11-22  Wenson Hsieh  <wenson_hsieh@apple.com>

        [Cocoa] clang emits a warning when building WebKit after r238293
        https://bugs.webkit.org/show_bug.cgi?id=191917

        Reviewed by Dan Bernstein.

        Move the implementations of -setSafeBrowsingEnabled: and -isSafeBrowsingEnabled to the main implementation of
        WKPreferences to fix the warning.

        * UIProcess/API/Cocoa/WKPreferences.mm:
        (-[WKPreferences setSafeBrowsingEnabled:]):
        (-[WKPreferences isSafeBrowsingEnabled]):

2018-11-22  Wenson Hsieh  <wenson_hsieh@apple.com>

        Address post-review feedback after r238438
        https://bugs.webkit.org/show_bug.cgi?id=191913

        Reviewed by Ryosuke Niwa.

        Replace boolean arguments to setSelectedRange, replaceSelectionWithText and replaceSelectionWithFragment with
        enum flags, and tweak a couple of functions to take `const Vector&` instead of `Vector&&`.

        * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
        (WKBundlePageReplaceStringMatches):
        * WebProcess/WebPage/FindController.cpp:
        (WebKit::FindController::replaceMatches):
        * WebProcess/WebPage/FindController.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::replaceStringMatchesFromInjectedBundle):
        (WebKit::WebPage::replaceMatches):
        (WebKit::WebPage::replaceSelectionWithText):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::selectWithGesture):
        (WebKit::WebPage::updateSelectionWithTouches):
        (WebKit::WebPage::selectWithTwoTouches):
        (WebKit::WebPage::extendSelection):
        (WebKit::WebPage::selectWordBackward):
        (WebKit::WebPage::moveSelectionByOffset):
        (WebKit::WebPage::selectPositionAtPoint):
        (WebKit::WebPage::selectPositionAtBoundaryWithDirection):
        (WebKit::WebPage::moveSelectionAtBoundaryWithDirection):
        (WebKit::WebPage::selectTextWithGranularityAtPoint):
        (WebKit::WebPage::updateSelectionWithExtentPointAndBoundary):
        (WebKit::WebPage::updateSelectionWithExtentPoint):
        (WebKit::WebPage::replaceSelectedText):
        (WebKit::WebPage::replaceDictatedText):
        (WebKit::WebPage::syncApplyAutocorrection):

2018-11-22  Mark Lam  <mark.lam@apple.com>

        Rollout r238432: Breaks internal Mac builds.
        https://bugs.webkit.org/show_bug.cgi?id=191909
        <rdar://problem/46214163>

        Unreviewed. Rolling out r238432: Remove @no-unify of InjectedBundleRangeHandle.cpp and InjectedBundleNodeHandle.cpp

        * Sources.txt:
        * WebKit.xcodeproj/project.pbxproj:

2018-11-22  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Update OptionsGTK.cmake and NEWS for 2.23.1 release.

        * gtk/NEWS: Add release notes for 2.23.1.

2018-11-21  Wenson Hsieh  <wenson_hsieh@apple.com>

        [Cocoa] [WebKit2] Add support for replacing find-in-page text matches
        https://bugs.webkit.org/show_bug.cgi?id=191786
        <rdar://problem/45813871>

        Reviewed by Ryosuke Niwa.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView replaceMatches:withString:inSelectionOnly:resultCollector:]):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::replaceMatches):
        * UIProcess/WebPageProxy.h:
        * UIProcess/mac/WKTextFinderClient.mm:
        (-[WKTextFinderClient replaceMatches:withString:inSelectionOnly:resultCollector:]):

        Implement this method to opt in to "Replace…" UI on macOS in the find bar. In this API, we're given a list of
        matches to replace. We propagate the indices of each match to the web process, where FindController maps them to
        corresponding replacement ranges. Currently, the given list of matches is only ever a list containing the first
        match, or a list containing all matches.

        * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
        (WKBundlePageFindStringMatches):
        (WKBundlePageReplaceStringMatches):
        * WebProcess/InjectedBundle/API/c/WKBundlePage.h:
        * WebProcess/WebCoreSupport/WebEditorClient.cpp:
        * WebProcess/WebPage/FindController.cpp:
        (WebKit::FindController::replaceMatches):

        Map match indices to Ranges, and then call into WebCore::Page to do the heavy lifting (see WebCore ChangeLog for
        more details). Additionally add a hard find-and-replace limit here to prevent the web process from spinning
        indefinitely if there are an enormous number of find matches.

        * WebProcess/WebPage/FindController.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::findStringMatchesFromInjectedBundle):
        (WebKit::WebPage::replaceStringMatchesFromInjectedBundle):

        Add helpers to exercise find and replace in WebKit2.

        (WebKit::WebPage::replaceMatches):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:

2018-11-21  Andy Estes  <aestes@apple.com>

        [Cocoa] Create a soft-linking file for PassKit
        https://bugs.webkit.org/show_bug.cgi?id=191875
        <rdar://problem/46203215>

        Reviewed by Myles Maxfield.

        * Shared/Cocoa/WebCoreArgumentCodersCocoa.mm: Removed SOFT_LINK macros and included PassKitSoftLink.h instead.
        * SourcesCocoa.txt: Removed @no-unify from WebPaymentCoordinatorProxyIOS.mm and WebPaymentCoordinatorProxyMac.mm.
        * UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm: Removed SOFT_LINK macros and included PassKitSoftLink.h instead.
        * UIProcess/ApplePay/ios/WebPaymentCoordinatorProxyIOS.mm: Ditto.
        * UIProcess/ApplePay/mac/WebPaymentCoordinatorProxyMac.mm: Ditto.
        * UIProcess/Cocoa/SafeBrowsingWarningCocoa.mm: Included NSAttributedStringSPI.h.
        * UIProcess/mac/WebProcessProxyMac.mm: Included ProcessPrivilege.h.
        * WebKit.xcodeproj/project.pbxproj: Removed WebPaymentCoordinatorProxyIOS.mm and WebPaymentCoordinatorProxyMac.mm from the WebKit target.

2018-11-21  Fujii Hironori  <Hironori.Fujii@sony.com>

        Remove @no-unify of InjectedBundleRangeHandle.cpp and InjectedBundleNodeHandle.cpp
        https://bugs.webkit.org/show_bug.cgi?id=191853

        Reviewed by Michael Catanzaro.

        In r235845, I excluded InjectedBundleRangeHandle.cpp and
        InjectedBundleNodeHandle.cpp from unify source builds in order to
        work around a MSVC bug.

        Then, I commited a different workaround for the MSVC bug in
        r238386. Now, we can include InjectedBundleRangeHandle.cpp and
        InjectedBundleNodeHandle.cpp in unified source builds. Revert
        r235845.

        * Sources.txt: Removed @no-unify of InjectedBundleRangeHandle.cpp
        and InjectedBundleNodeHandle.cpp
        * WebKit.xcodeproj/project.pbxproj: Unchecked Target Membership
        not to be compiled by XCode.

2018-11-20  Jeff Miller  <jeffm@apple.com>

        Return nullptr immediately if the key doesn't exist in the HashMap.
        https://bugs.webkit.org/show_bug.cgi?id=191841

        Reviewed by Chris Dumez.

        * Shared/API/APIDictionary.h:

2018-11-20  Don Olmstead  <don.olmstead@sony.com>

        WebPasteboard should USE(LIBWPE)
        https://bugs.webkit.org/show_bug.cgi?id=191846

        Reviewed by Michael Catanzaro.

        Add USE(LIBWPE) for Pasteboard related functionality within WebKit.

        * UIProcess/WebPasteboardProxy.h:
        * UIProcess/WebPasteboardProxy.messages.in:
        * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
        * WebProcess/WebCoreSupport/WebPlatformStrategies.h:

2018-11-20  Don Olmstead  <don.olmstead@sony.com>

        [WPE] Fix some feature guards in WebKit
        https://bugs.webkit.org/show_bug.cgi?id=191847

        Reviewed by Michael Catanzaro.

        Some feature guards are not present in these files.

        * UIProcess/API/wpe/PageClientImpl.cpp:
        * UIProcess/API/wpe/PageClientImpl.h:
        * UIProcess/wpe/WebProcessPoolWPE.cpp:
        (WebKit::WebProcessPool::platformInitializeWebProcess):

2018-11-20  Antti Koivisto  <antti@apple.com>

        Avoid potential longer than expected layer flush delays
        https://bugs.webkit.org/show_bug.cgi?id=191833

        Reviewed by Dean Jackson.

        Layer flush throttling also stops style recalcs and layouts. Layouts schedule layer flushes. Especially
        on a slow network we can in principle end up in situation where layer flush timer fires but there is no
        flush scheduled and so nothing happens. However there is a pending style recalc or layout that would
        actually schedule a flush (in practice various things force style recalcs and this doesn't occur
        commonly).

        To avoid this we should flush unconditionally when the flush timer fires. This performs any pending
        style recalc and layout too. If there is nothing to do the flush will be cheap.

        PLT doesn't appear to hit cases affected by this patch and there shouldn't be any impact.

        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:

        Remove now unnecessary m_hasPendingFlush bit, simplifying the logic.

        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
        (WebKit::TiledCoreAnimationDrawingArea::setLayerTreeStateIsFrozen):

        Schedule unconditionally when unfreezing.

        (WebKit::TiledCoreAnimationDrawingArea::scheduleCompositingLayerFlush):

        Remove branch that starts the flush timer. It is not needed as either it was already running
        or immediate flush is already scheduled and will start the timer anyway.

        (WebKit::TiledCoreAnimationDrawingArea::flushLayers):
        (WebKit::TiledCoreAnimationDrawingArea::adjustLayerFlushThrottling):
        (WebKit::TiledCoreAnimationDrawingArea::layerFlushThrottlingTimerFired):

        Flush unconditionally.

2018-11-19  Don Olmstead  <don.olmstead@sony.com>

        Simplify platform check in WebEditorClient
        https://bugs.webkit.org/show_bug.cgi?id=191848

        Reviewed by Fujii Hironori.

        !PLATFORM(GTK) && !PLATFORM(COCOA) && !PLATFORM(WPE) can be better
        represented as PLATFORM(WIN).

        * WebProcess/WebCoreSupport/WebEditorClient.cpp:

2018-11-19  Alex Christensen  <achristensen@webkit.org>

        Add SPI to disable JIT in a WKWebView
        https://bugs.webkit.org/show_bug.cgi?id=191822
        <rdar://problem/28119360>

        Reviewed by Geoffrey Garen.

        * Shared/EntryPointUtilities/mac/XPCService/XPCServiceEntryPoint.h:
        (WebKit::XPCServiceInitializer):
        * UIProcess/API/APIProcessPoolConfiguration.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _canUseJIT:]):
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h:
        * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm:
        (-[_WKProcessPoolConfiguration enableJIT]):
        (-[_WKProcessPoolConfiguration setEnableJIT:]):
        * UIProcess/Launcher/ProcessLauncher.h:
        (WebKit::ProcessLauncher::Client::enableJIT const):
        * UIProcess/Launcher/mac/ProcessLauncherMac.mm:
        (WebKit::ProcessLauncher::launchProcess):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::canUseJIT):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::enableJIT const):
        * UIProcess/WebProcessProxy.h:
        (WebKit::WebProcessProxy::processPool const):
        (WebKit::WebProcessProxy::processPool): Deleted.
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::canUseJIT):
        * WebProcess/WebProcess.h:
        * WebProcess/WebProcess.messages.in:

2018-11-19  Basuke Suzuki  <basuke.suzuki@sony.com>

        [Curl] Add API for CertificateInfo.
        https://bugs.webkit.org/show_bug.cgi?id=191647

        Reviewed by Alex Christensen.

        Added API for CertificateInfo to create, fetch contents.

        Tests: TestWebKitAPI/Tests/WebKit/curl/Certificates.cpp

        * PlatformWin.cmake:
        * Shared/API/c/curl/WKCertificateInfoCurl.cpp: Added.
        (WKCertificateInfoCreateWithCertficateChain):
        (WKCertificateInfoGetVerificationError):
        (WKCertificateInfoGetCertificateChainSize):
        (WKCertificateInfoCopyCertificateAtIndex):
        * Shared/API/c/curl/WKCertificateInfoCurl.h: Copied from Source/WebCore/platform/network/curl/CertificateInfoCurl.cpp.
        * Shared/curl/WebCoreArgumentCodersCurl.cpp:
        (IPC::ArgumentCoder<CertificateInfo>::encode):
        (IPC::ArgumentCoder<CertificateInfo>::decode):

2018-11-19  Don Olmstead  <don.olmstead@sony.com>

        Add USE(LIBWPE) for WebKit events
        https://bugs.webkit.org/show_bug.cgi?id=191842

        Reviewed by Michael Catanzaro.

        Moves all WPE events to USE(LIBWPE) instead of PLATFORM(WPE). Updates
        filenames to LibWPE.

        * PlatformWPE.cmake:
        * Shared/NativeWebKeyboardEvent.h:
        * Shared/NativeWebMouseEvent.h:
        * Shared/NativeWebTouchEvent.h:
        * Shared/NativeWebWheelEvent.h:
        * Shared/WebCoreArgumentCoders.cpp:
        * Shared/WebCoreArgumentCoders.h:
        * Shared/WebEvent.h:
        * Shared/WebKeyboardEvent.cpp:
        (WebKit::WebKeyboardEvent::WebKeyboardEvent):
        * Shared/libwpe/NativeWebKeyboardEventLibWPE.cpp: Renamed from Source/WebKit/Shared/wpe/NativeWebKeyboardEventWPE.cpp.
        * Shared/libwpe/NativeWebMouseEventLibWPE.cpp: Renamed from Source/WebKit/Shared/wpe/NativeWebMouseEventWPE.cpp.
        * Shared/libwpe/NativeWebTouchEventLibWPE.cpp: Renamed from Source/WebKit/Shared/wpe/NativeWebTouchEventWPE.cpp.
        * Shared/libwpe/NativeWebWheelEventLibWPE.cpp: Renamed from Source/WebKit/Shared/wpe/NativeWebWheelEventWPE.cpp.
        * Shared/libwpe/WebEventFactory.cpp: Renamed from Source/WebKit/Shared/wpe/WebEventFactory.cpp.
        * Shared/libwpe/WebEventFactory.h: Renamed from Source/WebKit/Shared/wpe/WebEventFactory.h.
        * SourcesWPE.txt:

2018-11-19  David Quesada  <david_quesada@apple.com>

        EXC_BAD_ACCESS when invoking a DownloadProxy's destination decision handler after the download has been canceled
        https://bugs.webkit.org/show_bug.cgi?id=191762
        rdar://problem/46151509

        Reviewed by Dean Jackson.

        When the DownloadClient calls the decision handler with a destination path, check if
        m_processPool is null before trying to access its network process. This can happen
        if a download is canceled before the client decides its destination.

        * UIProcess/Downloads/DownloadProxy.cpp:
        (WebKit::DownloadProxy::decideDestinationWithSuggestedFilenameAsync):

2018-11-19  Tomoki Imai  <Tomoki.Imai@sony.com>

        [cairo] BackingStore::incorporateUpdate should use CompositeCopy to support drawsBackground=false in general Cairo ports
        https://bugs.webkit.org/show_bug.cgi?id=191577

        Reviewed by Carlos Garcia Campos.

        We should use CompositeCopy operator to update bitmap to overwrite existing bitmap even if source contains
        transparent parts. It enables ports which uses Cairo to set drawsBackground to false.
        GTK ports has custom background extension, and in such case, we need to use CompositeSourceOver to retain
        custom background.

        * UIProcess/cairo/BackingStoreCairo.cpp:
        (WebKit::BackingStore::incorporateUpdate): Use CompositeCopy operator to update bitmap.

2018-11-19  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: "Reload Web Inspector" button no longer partially works
        https://bugs.webkit.org/show_bug.cgi?id=191773
        <rdar://problem/46139932>

        Reviewed by Devin Rousso.

        * UIProcess/RemoteWebInspectorProxy.cpp:
        (WebKit::RemoteWebInspectorProxy::load):
        (WebKit::RemoteWebInspectorProxy::reopen):
        * UIProcess/RemoteWebInspectorProxy.h:
        * UIProcess/RemoteWebInspectorProxy.messages.in:
        * WebProcess/WebPage/RemoteWebInspectorUI.cpp:
        (WebKit::RemoteWebInspectorUI::reopen):
        * WebProcess/WebPage/RemoteWebInspectorUI.h:
        * WebProcess/WebPage/WebInspector.cpp:
        (WebKit::WebInspector::reopen):
        * WebProcess/WebPage/WebInspector.h:
        * WebProcess/WebPage/WebInspector.messages.in:
        * WebProcess/WebPage/WebInspectorUI.cpp:
        (WebKit::WebInspectorUI::reopen):
        * WebProcess/WebPage/WebInspectorUI.h:

2018-11-19  Alejandro G. Castro  <alex@igalia.com>

        [GTK][WPE] Solve some issues in the enumerateDevices code
        https://bugs.webkit.org/show_bug.cgi?id=191832

        Reviewed by Carlos Garcia Campos.

        * UIProcess/API/glib/WebKitDeviceInfoPermissionRequest.cpp:
        Increase the version to 2.24.
        (webkitDeviceInfoPermissionRequestAllow):
        (webkitDeviceInfoPermissionRequestDeny):
        * UIProcess/API/glib/WebKitDeviceInfoPermissionRequestPrivate.h:
        Replace the forward declaration with the include.
        * UIProcess/API/gtk/WebKitDeviceInfoPermissionRequest.h: Typo.
        * UIProcess/API/gtk/WebKitWebsiteData.h:
        Increase the version to 2.24.
        * UIProcess/API/wpe/WebKitDeviceInfoPermissionRequest.h: Typo.
        * UIProcess/API/wpe/WebKitWebsiteData.h:
        Increase the version to 2.24.

2018-11-19  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Fix GTK+ build after r238318.

        Add new symbols to API documentation files. They should have been added in r237031, but r238318 revealed it.

        * UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt:
        * UIProcess/API/gtk/docs/webkit2gtk-4.0.types:
        * UIProcess/API/gtk/docs/webkit2gtk-docs.sgml:

2018-11-19  Joseph Pecoraro  <pecoraro@apple.com>

        Regression(r238330): A lot of WebInspector tests are crashing on the bots
        https://bugs.webkit.org/show_bug.cgi?id=191814

        Reviewed by Ryosuke Niwa.

        Expose the expected connection type from the UIProcess into the WebProcess.
        When there is a local inspector connection to the UIProcess expose it as
        a local frontend channel to the inspector controllers in the Page.

        * UIProcess/WebPageInspectorTargetAgent.h:
        * UIProcess/WebPageInspectorTargetAgent.cpp:
        (WebKit::WebPageInspectorTargetAgent::frontendChannel):
        An additional FrontendChannel class is not needed, just use self.

        (WebKit::WebPageInspectorTargetAgent::WebPageInspectorTargetAgent):
        (WebKit::WebPageInspectorTargetAgent::connectionType const):
        (WebKit::WebPageInspectorTargetAgent::sendMessageToFrontend):
        Expose the channel to targets as local if there is a local frontend
        in the UIProcess.

2018-11-18  Joseph Pecoraro  <pecoraro@apple.com>

        Regression(r238330) ProcessSwap.WebInspector API test is a flaky crash in debug
        https://bugs.webkit.org/show_bug.cgi?id=191812

        Reviewed by Chris Dumez.

        * WebProcess/WebPage/WebInspector.cpp:
        (WebKit::WebInspector::setFrontendConnection):
        It can be possible to receive a frontend connection multiple times
        if another WebProcess opened the inspector and this WebProcess got
        swapped in before the InspectorProcess notified the WebProcess of
        a connection to use. It is always best to use the latest connection
        we have received, since any others would have been invalidated.

2018-11-18  Chris Dumez  <cdumez@apple.com>

        [PSON] Received an invalid message "WebPageProxy.DidPerformClientRedirect" from the web process
        https://bugs.webkit.org/show_bug.cgi?id=191828

        Reviewed by Antti Koivisto.

        WebPageProxy::didPerformClientRedirect() had a MESSAGE_CHECK_URL() for both the source
        and the destination URL. The macro calls WebProcessProxy::checkURLReceivedFromWebProcess()
        to make sure that both URLs were actually loaded by this WebContent process.

        However, now that we're enabled process-swap on cross-site navigation, these checks are no
        longer fully valid. If the client-side redirect is cross-site, then the source and destination
        URLs get loaded by 2 different WebContent processes. Since didPerformClientRedirect() gets
        called after the redirect and gets set by the new WebContent process, only the destination URL
        is guaranteed to have been loaded by this process. The source URL may have been loaded in
        another process so this patch drops the message check for the source URL.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didPerformClientRedirect):

2018-11-18  Yusuke Suzuki  <yusukesuzuki@slowstart.org>

        Use Box<BinarySemaphore> instead of dispatch_semaphore_t
        https://bugs.webkit.org/show_bug.cgi?id=189691

        Reviewed by Ryosuke Niwa.

        Use Box<BinarySemaphore> instead, which utilizes our WTF::Lock mechanism.

        * NetworkProcess/watchos/NetworkProximityManager.mm:
        (WebKit::NetworkProximityManager::updateRecommendation):

2018-11-17  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] Remove all usages of UIItemProvider, UIItemProviderReading, and related classes
        https://bugs.webkit.org/show_bug.cgi?id=191819

        Reviewed by Dan Bernstein.

        Replace UIItemProvider (and related classes) with NSItemProvider.

        * Platform/spi/ios/UIKitSPI.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _itemsForBeginningOrAddingToSessionWithRegistrationList:stagedDragSource:]):
        (-[WKContentView dropInteraction:performDrop:]):

2018-11-17  Ross Kirsling  <ross.kirsling@sony.com>

        Unreviewed WinCairo build fix for r238353.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::continueNavigationInNewProcess):

2018-11-17  Chris Dumez  <cdumez@apple.com>

        ASSERTION FAILED: m_messageReceivers.contains(...) under ViewGestureController removeMessageReceiver
        https://bugs.webkit.org/show_bug.cgi?id=191734
        <rdar://problem/46151497>

        Reviewed by Ryosuke Niwa.

        When a WebProcess crashes, we destroy the ViewGestureController and reconstruct it later
        after we've relaunched a new WebProcess. The ViewGestureController controller takes care
        of adding itself as an IPC message receiver to the WebProcessProxy, and the destructor
        takes care of removing itself as an IPC message receiver.

        However, when process-swapping on navigation, we do not destroy the ViewGestureController
        because doing so would take down the swipe gesture snapshot on cross-site swipe navigation.
        This led to hitting this assertion later on because the ViewGestureController is still
        registered as an IPC message receiver with the old process after process swapping.

        To address the issue, we now make sure the ViewGestureController unregisters itself from
        the old process and registers itself with the new process on process-swap.

        * UIProcess/Cocoa/ViewGestureController.cpp:
        (WebKit::ViewGestureController::ViewGestureController):
        (WebKit::ViewGestureController::~ViewGestureController):
        (WebKit::ViewGestureController::disconnectFromProcess):
        (WebKit::ViewGestureController::connectToProcess):
        * UIProcess/Cocoa/ViewGestureController.h:
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::processWillSwap):
        (WebKit::WebViewImpl::didRelaunchProcess):

2018-11-17  Chris Dumez  <cdumez@apple.com>

        [PSON] ASSERTION FAILED: m_uncommittedState.state == State::Committed
        https://bugs.webkit.org/show_bug.cgi?id=191781

        Reviewed by Ryosuke Niwa.

        The crash was happening when switching to a suspended page that is not yet done
        suspending (e.g. in case of very fast back/forward navigation). The WebPageProxy
        would reattach to the suspended process and get load notifications that it did
        not expect since it did not schedule any load yet. Those notifications are for
        the about:blank load we do for page suspension.

        To address the issue, make swapToWebProcess() asynchronous and take a completion
        handler. When we try to unsuspend a SuspendedPageProxy, we first make sure it
        is actually done suspending. If it is not done suspending, we wait until it is
        before telling in to unsuspend and proceeding with the new load.

        * UIProcess/SuspendedPageProxy.cpp:
        (WebKit::SuspendedPageProxy::unsuspend):
        (WebKit::SuspendedPageProxy::didFinishLoad):
        * UIProcess/SuspendedPageProxy.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::swapToWebProcess):
        (WebKit::WebPageProxy::continueNavigationInNewProcess):
        * UIProcess/WebPageProxy.h:

2018-11-17  Chris Dumez  <cdumez@apple.com>

        Unreviewed follow-up to r238343 to address debug assertions in 2 API tests.

        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::networkProcessCrashed):

2018-11-17  Devin Rousso  <drousso@apple.com>

        Web Inspector: Network: add button to show system certificate dialog
        https://bugs.webkit.org/show_bug.cgi?id=191458
        <rdar://problem/45977019>

        Reviewed by Joseph Pecoraro.

        * UIProcess/WebInspectorProxy.messages.in:
        * UIProcess/WebInspectorProxy.h:
        * UIProcess/WebInspectorProxy.cpp:
        (WebKit::WebInspectorProxy::showCertificate): Added.
        (WebKit::WebInspectorProxy::platformShowCertificate): Added.
        * UIProcess/mac/WebInspectorProxyGtk.cpp:
        (WebKit::WebInspectorProxy::platformShowCertificate): Added.
        * UIProcess/mac/WebInspectorProxyMac.mm:
        (WebKit::WebInspectorProxy::platformShowCertificate): Added.
        * UIProcess/mac/WebInspectorProxyWPE.cpp:
        (WebKit::WebInspectorProxy::platformShowCertificate): Added.
        * UIProcess/mac/WebInspectorProxyWin.cpp:
        (WebKit::WebInspectorProxy::platformShowCertificate): Added.
        * WebProcess/WebPage/WebInspectorUI.h:
        * WebProcess/WebPage/WebInspectorUI.cpp:
        (WebKit::WebInspectorUI::showCertificate): Added.

        * UIProcess/RemoteWebInspectorProxy.messages.in:
        * UIProcess/RemoteWebInspectorProxy.h:
        * UIProcess/RemoteWebInspectorProxy.cpp:
        (WebKit::RemoteWebInspectorProxy::showCertificate): Added.
        (WebKit::RemoteWebInspectorProxy::platformShowCertificate): Added.
        * UIProcess/mac/RemoteWebInspectorProxyGtk.cpp:
        (WebKit::RemoteWebInspectorProxy::platformShowCertificate): Added.
        * UIProcess/mac/RemoteWebInspectorProxyMac.mm:
        (WebKit::RemoteWebInspectorProxy::platformShowCertificate): Added.
        * WebProcess/WebPage/RemoteWebInspectorUI.h:
        * WebProcess/WebPage/RemoteWebInspectorUI.cpp:
        (WebKit::RemoteWebInspectorUI::showCertificate): Added.

        * NetworkProcess/cache/NetworkCacheCoders.h:
        * NetworkProcess/cache/NetworkCacheCodersCocoa.cpp: Removed.
        * NetworkProcess/cache/NetworkCacheCodersCurl.cpp: Removed.
        * NetworkProcess/cache/NetworkCacheCodersSoup.cpp: Removed.
        Moved `WebCore::CertificateInfo` code for `WTF::Encoder` and `WTF::Decoder` into their
        respective platform's CertificateInfo.h file.

        * UIProcess/Authentication/mac/WebCredentialMac.mm:

        * Configurations/WebKit.xcconfig:
        * PlatformMac.cmake:
        * PlatformWin.cmake:
        * SourcesCocoa.txt:
        * SourcesGTK.txt:
        * SourcesWPE.txt:
        * WebKit.xcodeproj/project.pbxproj:

2018-11-16  Chris Dumez  <cdumez@apple.com>

        Regression(ProcessPrewarming) Assertion hit in NetworkProcessProxy destructor
        https://bugs.webkit.org/show_bug.cgi?id=191800

        Reviewed by Ryosuke Niwa.

        Make sure the NetworkProcessProxy destructor calls its remaining m_pendingConnectionReplies
        completion handlers to avoid hitting an assertion in the CompletionHandler destructor.

        Prewarmed WebProcess do not keep the ProcessPool alive and thus not the NetworkProcessProxy
        either. As a result, it is possible for NetworkProcessProxy to have pending connection
        requests from those prewarmed processes when it is destroyed. Similar story for the
        suspended page processes when they are destroyed.

        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::~NetworkProcessProxy):

2018-11-16  Alex Christensen  <achristensen@webkit.org>

        Tweak _showSafeBrowsingWarningWithTitle SPI
        https://bugs.webkit.org/show_bug.cgi?id=191799

        Reviewed by Wenson Hsieh.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _showSafeBrowsingWarningWithTitle:warning:details:completionHandler:]):
        (+[WKWebView _visitUnsafeWebsiteSentinel]):
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        * UIProcess/Cocoa/WKSafeBrowsingWarning.mm:
        (-[WKSafeBrowsingWarning clickedOnLink:]):
        I need to localize "Continue" and "Cancel" so they aren't always in English.

2018-11-16  Chris Dumez  <cdumez@apple.com>

        WKWebViewMacEditingTests.DoNotCrashWhenInterpretingKeyEventWhileDeallocatingView API test is crashing in debug
        https://bugs.webkit.org/show_bug.cgi?id=191797

        Reviewed by Ryosuke Niwa.

        We were hitting the assertion because the error handler was first getting called. It would
        deallocate the send right, cancel/null out the XPC connection and call
        didFinishLaunchingProcess(0, IPC::Connection::Identifier()).

        Then the xpc_connection_send_message_with_reply() block would get called later and
        would try to deallocate the send right again, and call
        didFinishLaunchingProcess(0, IPC::Connection::Identifier()) again because the xpc
        connection is null.

        Handle this case by having the xpc_connection_send_message_with_reply() block check
        that we're still launching (i.e. didFinishLaunchingProcess() has not been called
        yet).

        * UIProcess/Launcher/mac/ProcessLauncherMac.mm:
        (WebKit::ProcessLauncher::launchProcess):

2018-11-16  Joseph Pecoraro  <pecoraro@apple.com>

        Unreviewed follow-up to r238330.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::close):
        Don't clear the pointer after invalidating since the pointer is
        used later one. We don't mind it being used after invalidation
        it will do the right thing, we'd rather have the WebInspectorProxy
        lifetime match the WebPageProxy.

2018-11-16  Chris Dumez  <cdumez@apple.com>

        ProcessSwap.NavigationWithLockedHistoryWithoutPSON API test is a flaky crash in debug
        https://bugs.webkit.org/show_bug.cgi?id=191795

        Reviewed by Alex Christensen.

        If the WebProcessPool is getting destroyed while there is a prewarmed WebContent process
        that is awaiting its connnection to the network process, then we'll hit the
        process->hasOneRef() assertion in the WebProcessPool destructor. This is because
        NetworkProcessProxy::m_pendingConnectionReplies keeps a RefPtr to the WebProcessProxy
        that is awaiting the connection. The NetworkProcessProxy does not really need to keep
        the WebProcessProxy alive in this case so this patch switches to using a WeakPtr instead.

        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::getNetworkProcessConnection):
        (WebKit::NetworkProcessProxy::networkProcessCrashed):
        * UIProcess/Network/NetworkProcessProxy.h:
        * UIProcess/WebProcessProxy.h:

2018-11-16  Chris Dumez  <cdumez@apple.com>

        [macOS] Label "prewarmed" WebContent processes in Activity Monitor
        https://bugs.webkit.org/show_bug.cgi?id=191765
        <rdar://problem/45953463>

        Reviewed by Geoffrey Garen.

        Label "prewarmed" WebContent processes in Activity Monitor to facilitate debugging.

        * Shared/EntryPointUtilities/mac/XPCService/XPCServiceEntryPoint.mm:
        (WebKit::XPCServiceInitializerDelegate::getExtraInitializationData):
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::getLaunchOptions):
        (WebKit::WebProcessProxy::markIsNoLongerInPrewarmedPool):
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::markIsNoLongerPrewarmed):
        * WebProcess/WebProcess.h:
        * WebProcess/WebProcess.messages.in:
        * WebProcess/cocoa/WebProcessCocoa.mm:
        (WebKit::WebProcess::initializeProcessName):
        (WebKit::WebProcess::updateProcessName):
        (WebKit::WebProcess::platformInitializeProcess):

2018-11-16  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Keep Web Inspector window alive across process swaps (PSON) (Local Inspector)
        https://bugs.webkit.org/show_bug.cgi?id=191740
        <rdar://problem/45470897>

        Reviewed by Timothy Hatcher.

        When a web page asks to open a local Web Inspector, that inspector
        will now connect in the UIProcess (WebPageProxy / WebPageInspectorController)
        instead of the WebContentProcess (WebKit::WebInspector / InspectorController).

        Previously a WebInspectorProxy was re-created every time the WebPageProxy's
        WebPage / WebProcess was changed, effectively closing the Web Inspector
        frontend when the WebPage was swapped or crashed.

        This change keeps the WebInspectorProxy alive as long as the WebPageProxy
        is alive. During process swaps, or process crashes, the WebInspectorProxy
        is reset when the page is reset and updated when the page's WebProcess
        changes. Since WebInspectorProxy owns the Web Inspector view / window
        the Web Inspector window can be kept alive across (and attached state)
        across WebPage / WebProcess changes.

        Previously the WebContentProcess's WebKit::WebInspector was the Local
        FrontendChannel for the WebCore::InspectorController. This can't
        outlive the single WebContentProcess.

        This change makes the UIProcesses' WebInspectorProxy the Local FrontendChannel
        for the WebKit::WebPageInspectorController. Given the WebInspectorProxy
        now stays alive alongside the WebPageProxy this will live across process changes.
        This means that the WebInspectorUI process must send its backend messages to
        the WebInspectorProxy -> WebPageInspectorController now instead of the
        old path WebInspector -> WebCore::InspectorController.

        A direct IPC connection is still maintained between the WebContentProcess's
        WebKit::WebInspector and the InspectorProcess's WebInspectorUI. Previously
        this connection was established by WebKit::WebInspector vending an
        IPC::Attachment to the WebInspectorUI process. This patch inverts that
        relationship, because the WebInspectorUI process now lives across multiple
        WebContentProcess changes. The WebInspectorUI now vends the IPC::Attachment
        to the WebContentProcess each time the process changes. This way they can both
        still communicate through normal Messages::WebInspector/WebInspectorUI
        messages and everything behaves as previously expected.

        * Scripts/webkit/messages.py:
        Header for Inspector::FrontendChannel::ConnectionType.

        * WebProcess/WebCoreSupport/WebInspectorClient.cpp:
        (WebKit::WebInspectorClient::openLocalFrontend):
        * WebProcess/WebPage/WebInspector.cpp:
        (WebKit::WebInspector::openLocalInspectorFrontend):
        (WebKit::WebInspector::setFrontendConnection):
        (WebKit::WebInspector::closeFrontendConnection):
        (WebKit::WebInspector::close):
        (WebKit::WebInspector::openFrontendConnection): Deleted.
        (WebKit::WebInspector::sendMessageToBackend): Deleted.
        (WebKit::WebInspector::sendMessageToFrontend): Deleted.
        On the WebProcess side we ask the UIProcess to open a local frontend and now
        receive instead of vend an IPC connection to the WebInspectorUI process.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::finishAttachingToWebProcess):
        (WebKit::WebPageProxy::close):
        (WebKit::WebPageProxy::resetState):
        Keep the WebInspectorProxy alive alongside the WebPageProxy.
        Update it as processes / states change.

        * UIProcess/WebInspectorProxy.h:
        * UIProcess/WebInspectorProxy.messages.in:
        * UIProcess/WebInspectorProxy.cpp:
        (WebKit::WebInspectorProxy::openLocalInspectorFrontend):
        (WebKit::WebInspectorProxy::createInspectorPage): Deleted.
        (WebKit::WebInspectorProxy::sendMessageToFrontend):
        (WebKit::WebInspectorProxy::closeFrontendPageAndWindow):
        Open and close a local frontend by being the FrontendChannel on the UIProcess side.

        (WebKit::WebInspectorProxy::sendMessageToBackend):
        Dispatch WebInspectorUI backend messages to the UIProcess's InspectorController
        now that the InspectorController is here instead of in the WebProcess.

        (WebKit::WebInspectorProxy::setFrontendConnection):
        Transfer the WebProcess <-> InspectorProcess IPC connection through us
        because we are the one link between them when processes change.

        (WebKit::WebInspectorProxy::invalidate):
        (WebKit::WebInspectorProxy::frontendLoaded):
        Be safer and handle inspectedPage being potentially null.

        * WebProcess/WebPage/WebPageInspectorTargetController.cpp:
        (WebKit::WebPageInspectorTargetController::connectInspector):
        * WebProcess/WebPage/WebPageInspectorTargetController.h:
        * WebProcess/WebPage/WebPageInspectorTargetFrontendChannel.cpp:
        (WebKit::WebPageInspectorTargetFrontendChannel::create):
        (WebKit::WebPageInspectorTargetFrontendChannel::WebPageInspectorTargetFrontendChannel):
        * WebProcess/WebPage/WebPageInspectorTargetFrontendChannel.h:
        * UIProcess/InspectorTargetProxy.cpp:
        (WebKit::InspectorTargetProxy::connect):
        Proxy the ConnectionType received on the UIProcess side to the WebProcess side
        when connecting to sub-targets.

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::connectInspector):
        (WebKit::WebPage::setHasLocalInspectorFrontend): Deleted.
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:
        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::hasLocalInspectorFrontend const): Deleted.
        (WebKit::WebPageProxy::setHasLocalInspectorFrontend): Deleted.
        * UIProcess/WebPageProxy.messages.in:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::processForNavigationInternal):
        Eliminate the hasLocalInspectorFrontend state that was only used
        to disable PSON. PSON no longer needs to be disabled for this reason.

        * WebProcess/WebPage/WebInspector.h:
        * WebProcess/WebPage/WebInspector.messages.in:
        * WebProcess/WebPage/WebInspectorUI.cpp:
        (WebKit::WebInspectorUI::establishConnection):
        (WebKit::WebInspectorUI::updateConnection):
        (WebKit::WebInspectorUI::closeWindow):
        (WebKit::WebInspectorUI::sendMessageToBackend):
        * WebProcess/WebPage/WebInspectorUI.h:
        * WebProcess/WebPage/WebInspectorUI.messages.in:
        Vend an IPC connection on demand to the WebProcess side.

2018-11-16  Michael Catanzaro  <mcatanzaro@igalia.com>

        [GTK][WPE] Add "WebKitDeviceInfoPermissionRequest.h" into webkit2.h
        https://bugs.webkit.org/show_bug.cgi?id=191744
        <rdar://problem/46125461>

        Unreviewed, install the file.

        * PlatformGTK.cmake:
        * PlatformWPE.cmake:

2018-11-16  Zalan Bujtas  <zalan@apple.com>

        Add DidFirstMeaningfulPaint milestone.
        https://bugs.webkit.org/show_bug.cgi?id=191754

        Reviewed by Simon Fraser.

        * Shared/API/c/WKPageLoadTypes.h:
        * Shared/API/c/WKSharedAPICast.h:
        (WebKit::toWKLayoutMilestones):
        (WebKit::toLayoutMilestones):
        * UIProcess/API/C/WKPageRenderingProgressEvents.h:
        * UIProcess/API/C/WKPageRenderingProgressEventsInternal.h:
        (pageRenderingProgressEvents):

2018-11-16  Chris Dumez  <cdumez@apple.com>

        Automatic process prewarming should be turned on if PSON is enabled via experimental features
        https://bugs.webkit.org/show_bug.cgi?id=191761

        Reviewed by Ryosuke Niwa.

        m_isAutomaticProcessWarmingEnabledByClient is a std::optional and should not be initialized to
        true / false until the client calls API to toggle the feature. When m_isAutomaticProcessWarmingEnabledByClient
        is std::nullopt then m_processSwapsOnNavigationFromExperimentalFeatures controls automatic
        process prewarming.

        * UIProcess/API/APIProcessPoolConfiguration.h:

2018-11-16  Alex Christensen  <achristensen@webkit.org>

        Add API to disable safe browsing checks
        https://bugs.webkit.org/show_bug.cgi?id=191610

        Reviewed by Dean Jackson.

        * UIProcess/API/Cocoa/WKPreferences.h:
        * UIProcess/API/Cocoa/WKPreferences.mm:
        (-[WKPreferences setSafeBrowsingEnabled:]):
        (-[WKPreferences isSafeBrowsingEnabled]):
        (-[WKPreferences _setSafeBrowsingEnabled:]): Deleted.
        (-[WKPreferences _safeBrowsingEnabled]): Deleted.
        * UIProcess/API/Cocoa/WKPreferencesPrivate.h:

2018-11-16  Chris Dumez  <cdumez@apple.com>

        WebKit.UnavailablePlugIn API test is crashing in debug
        https://bugs.webkit.org/show_bug.cgi?id=191753

        Reviewed by Alex Christensen.

        Add missing early returns. Those were mistakenly dropped in r235200.

        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::NavigationClient::decidePolicyForPluginLoad):

2018-11-16  Chris Dumez  <cdumez@apple.com>

        [Mac] Regression: WebContent process's display name is no longer set
        https://bugs.webkit.org/show_bug.cgi?id=191722
        <rdar://problem/45960550>

        Reviewed by Per Arne Vollan.

        Make sure The WebContent process calls _RegisterApplication() during initialization and
        *before* trying to set its display name. Setting the display name fails otherwise.

        * WebProcess/cocoa/WebProcessCocoa.mm:
        (WebKit::WebProcess::initializeProcessName):
        (WebKit::WebProcess::platformInitializeProcess):

2018-11-16  Ryosuke Niwa  <rniwa@webkit.org>

        Enable process swap on cross-site navigation by default on iOS
        https://bugs.webkit.org/show_bug.cgi?id=191735

        Reviewed by Chris Dumez.

        Enabled the feature.

        * Shared/WebPreferencesDefaultValues.h:

2018-11-16  Antti Koivisto  <antti@apple.com>

        REGRESSION(r237467) [PSON] iOS: Going back to a page sometimes doesn't restore the full page
        https://bugs.webkit.org/show_bug.cgi?id=191737

        Reviewed by Simon Fraser.

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::setLayerTreeStateIsFrozen):

        Layer tree should stay frozen in m_shouldResetDrawingArea state. Otherwise spurious commit transactions may
        mess up state on UI process side.

        Specifically WKWebView._needsResetViewStateAfterCommitLoadForMainFrame would get stuck to TRUE and prevent
        all viewport updates because WKWebView._firstPaintAfterCommitLoadTransactionID has value greater
        than any current transaction IDs.

2018-11-16  Chris Dumez  <cdumez@apple.com>

        Unreviewed typo fix in comment added in r238250.

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::ensureNetworkProcess):

2018-11-16  Sihui Liu  <sihui_liu@apple.com>

        Storing blobs in IDB on iOS: "Error preparing blob/file"
        https://bugs.webkit.org/show_bug.cgi?id=188438
        <rdar://problem/43097279>

        Reviewed by Alex Christensen.

        Grant sandbox extension of temp folder to network process, and clean up some code that managed sandbox extension
        of IDB temporary blob files in network process.

        * NetworkProcess/FileAPI/NetworkBlobRegistry.cpp:
        (WebKit::NetworkBlobRegistry::registerBlobURLOptionallyFileBacked):
        * NetworkProcess/IndexedDB/WebIDBConnectionToClient.cpp:
        (WebKit::WebIDBConnectionToClient::handleGetResult):
        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::writeBlobsToTemporaryFiles):
        (WebKit::NetworkConnectionToWebProcess::preregisterSandboxExtensionsForOptionallyFileBackedBlob): Deleted.
        (WebKit::NetworkConnectionToWebProcess::getBlobDataFileReferenceForPath): Deleted.
        * NetworkProcess/NetworkConnectionToWebProcess.h:
        * NetworkProcess/NetworkConnectionToWebProcess.messages.in:
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::accessToTemporaryFileComplete):
        (WebKit::NetworkProcess::getSandboxExtensionsForBlobFiles):
        (WebKit::NetworkProcess::prepareForAccessToTemporaryFile): Deleted.
        (WebKit::NetworkProcess::updateTemporaryFileSandboxExtensions): Deleted.
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcessCreationParameters.cpp:
        (WebKit::NetworkProcessCreationParameters::encode const):
        (WebKit::NetworkProcessCreationParameters::decode):
        * NetworkProcess/NetworkProcessCreationParameters.h:
        * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
        (WebKit::NetworkProcess::platformInitializeNetworkProcessCocoa):
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::ensureNetworkProcess):
        * WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp:
        (WebKit::WebIDBConnectionToServer::didGetRecord):
        (WebKit::WebIDBConnectionToServer::didGetAllRecords):
        (WebKit::WebIDBConnectionToServer::didOpenCursor):
        (WebKit::WebIDBConnectionToServer::didIterateCursor):
        (WebKit::preregisterSandboxExtensionsIfNecessary): Deleted.

2018-11-16  Don Olmstead  <don.olmstead@sony.com>

        Add USE(LIBWPE) to WebCore
        https://bugs.webkit.org/show_bug.cgi?id=191401

        Reviewed by Michael Catanzaro.

        Rename PlatformDisplayWPE to PlatformDisplayLibWPE.

        * WebProcess/WebPage/wpe/AcceleratedSurfaceWPE.cpp:
        (WebKit::AcceleratedSurfaceWPE::initialize):
        * WebProcess/wpe/WebProcessMainWPE.cpp:

2018-11-16  Thibault Saunier  <tsaunier@igalia.com>

        [GStreamer][WebRTC] Add API to enable/disable device mocks
        https://bugs.webkit.org/show_bug.cgi?id=191699

        This basically us to test MediaStream/WebRTC support without
        requiring cameras or microphones and is quite useful.

        Also fix the GStreamerAudioMock by:
          - Stop setting `leaky-upstream` on the GStreamerCapturer queue,
            this was usefull when we were trying to bring the MediaStream
            sources inside the main pipeline, it is not the case anymore
            (and not doable with latest version of LibWebRTC).
          - Use a 'ticks' wave on the gstreamer audiotestsrc so the test
            stream is similar to what Apple port does.

        Reviewed by Xabier Rodriguez-Calvar.

        The mocks are already tested and the API is really simple.

        * UIProcess/API/glib/WebKitSettings.cpp:
        (webKitSettingsSetProperty):
        (webKitSettingsGetProperty):
        (webkit_settings_class_init):
        (webkit_settings_get_enable_mock_capture_devices):
        (webkit_settings_set_enable_mock_capture_devices):
        * UIProcess/API/gtk/WebKitSettings.h:
        * UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt:

2018-11-16  Thibault Saunier  <tsaunier@igalia.com>

        [GTK][WPE] Add "WebKitDeviceInfoPermissionRequest.h" into webkit2.h
        https://bugs.webkit.org/show_bug.cgi?id=191744

        It should always have been there.

        Reviewed by Carlos Garcia Campos.

        * UIProcess/API/gtk/webkit2.h:

2018-11-16  Antoine Quint  <graouts@apple.com>

        PointerEvents should not require touch event listeners to be registered
        https://bugs.webkit.org/show_bug.cgi?id=191333
        <rdar://problem/45857523>

        Reviewed by Dean Jackson.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::updateTouchEventTracking):
        (WebKit::WebPageProxy::touchEventTrackingType const):
        (WebKit::WebPageProxy::handleTouchEventSynchronously):
        (WebKit::WebPageProxy::handleTouchEventAsynchronously):
        (WebKit::WebPageProxy::handleTouchEvent):
        (WebKit::WebPageProxy::resetState):
        * UIProcess/WebPageProxy.h:

2018-11-15  Myles C. Maxfield  <mmaxfield@apple.com>

        WKPreferencesSetFontSmoothingLevel doesn't actually do anything
        https://bugs.webkit.org/show_bug.cgi?id=191708

        Reviewed by Simon Fraser.

        Delete the symbol because no one calls it and it doesn't do anything

        * Scripts/PreferencesTemplates/WebPreferencesStoreDefaultsMap.cpp.erb:
        * Shared/FontSmoothingLevel.h: Removed.
        * Shared/WebPreferences.yaml:
        * UIProcess/API/C/WKAPICast.h:
        (WebKit::toFontSmoothingLevel): Deleted.
        * UIProcess/API/C/WKPreferences.cpp:
        (WKPreferencesSetFontSmoothingLevel): Deleted.
        (WKPreferencesGetFontSmoothingLevel): Deleted.
        * UIProcess/API/C/WKPreferencesRefPrivate.h:
        * UIProcess/WebPreferences.h:
        * WebKit.xcodeproj/project.pbxproj:
        * mac/WebKit2.order:

2018-11-15  Truitt Savell  <tsavell@apple.com>

        Unreviewed, rolling out r238244.

        Caused High Sierra test runs to fail early with 50 crashes and
        casued 25 API failures.

        Reverted changeset:

        "[css-logical] Implement flow-relative margin, padding and
        border shorthands"
        https://bugs.webkit.org/show_bug.cgi?id=188697
        https://trac.webkit.org/changeset/238244

2018-11-15  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Remove unused WebInspectorProxy code
        https://bugs.webkit.org/show_bug.cgi?id=191674

        Reviewed by Dean Jackson.

        * UIProcess/WebInspectorProxy.cpp:
        (WebKit::WebInspectorProxy::createInspectorPage):
        (WebKit::WebInspectorProxy::closeFrontendPageAndWindow):
        * UIProcess/WebInspectorProxy.h:
        * UIProcess/mac/WebInspectorProxyMac.mm:
        (WebKit::WebInspectorProxy::setInspectorWindowFrame): Deleted.
        (WebKit::WebInspectorProxy::inspectorWindowFrame): Deleted.
        * WebProcess/WebPage/WebInspector.h:

2018-11-15  Ryosuke Niwa  <rniwa@webkit.org>

        Enable process swap on cross-site navigation by default on macOS
        https://bugs.webkit.org/show_bug.cgi?id=191572

        Reviewed by Chris Dumez.

        Enabled the feature by default on macOS.

        * Shared/WebPreferences.yaml:
        * Shared/WebPreferencesDefaultValues.h:

2018-11-15  Chris Dumez  <cdumez@apple.com>

        IndexedDB.IndexedDBTempFileSize API test times out with process prewarming enabled
        https://bugs.webkit.org/show_bug.cgi?id=191671
        <rdar://problem/46086062>

        Reviewed by Alex Christensen.

        Enabling process prewarming caused IndexedDB.IndexedDBTempFileSize API to time out and print
        the following line:
        "Attempted to create a NetworkLoad with a session (id=2) that does not exist."

        This actually identified a pre-existing bug with our handling of non-default data store.
        Whenever a page starts using a data store, we call WebProcessPool::pageBeginUsingWebsiteDataStore()
        which will call NetworkProcessProxy::addSession() if the network process was already started
        to let the network process know about this non-default session. There are several issues with the
        current model:
        1. If the network process was not created yet when pageBeginUsingWebsiteDataStore() is called,
           then the network process will not know about the non-default session when it actually gets
           started later on. This is unlikely to happen in practice, except in case of network process
           crash because we create the network process as soon as we initialize the first WebProcessProxy.
        2. Even if we successfuly managed to register the session with the network process proxy, we get
           in trouble if the network process crashes or is terminated later on as we do not re-register
           those sessions with the new network process.

        To address these 2 issues, WebProcessPool::ensureNetworkProcess() now takes care of registering
        all the non-default sessions (that are associated with this process pool) with the new network
        process. The WebProcessPool knows about these sessions because it adds them to m_sessionToPagesMap
        whenever WebProcessPool::pageBeginUsingWebsiteDataStore() is called, even if the network process
        proxy was not created yet.

        The reason the IndexedDB.IndexedDBTempFileSize API test was failing was because it did:
        1. A load in a WebView V1 with a non-default session
        2. Process prewarming kicked in after this load and would create a new WebProcessProxy.
        3. Terminate the network process
        4. Another load in a WebView V2 with the same non-defaut session, which would reuse the
          prewarmed process. Because the network process was terminated, constructing the new
          page would not register the session ID with the new network process when
          pageBeginUsingWebsiteDataStore() is called.
        -> The load would hang because the new network process would not know about the
           non-default session when started later on.

        The bug was previously hidden without process prewarming because step 4 would create a *new*
        WebProcessProxy and WebProcessPool::initializeNewWebProcess() would call ensureNetworkProcess()
        so that pageBeginUsingWebsiteDataStore() would successfuly register the session with the
        network process later on.

        I wrote a second API test (WebKit.DoLoadWithNonDefaultDataStoreAfterTerminatingNetworkProcess)
        to demonstrate the pre-existing bug without process prewarming enabled.

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::ensureNetworkProcess):

2018-11-15  Vivek Seth  <v_seth@apple.com>

        Create feature flag (HTTPS_UPGRADE)
        https://bugs.webkit.org/show_bug.cgi?id=191613
        <rdar://problem/45851068>

        Reviewed by Dean Jackson.

        * config.h:

2018-11-15  Chris Dumez  <cdumez@apple.com>

        Regression(r238215) WKProcessPool.WarmInitialProcess API test is failing
        https://bugs.webkit.org/show_bug.cgi?id=191693

        Reviewed by Alex Christensen.

        Allow *explicit* process prewarming to construct the default data store if necessary or we would
        not be obeying the client's request. Only automatic process prewarming should avoid constructing
        the default data store unnecessarily to avoid causing memory regressions.

        * UIProcess/API/C/WKContext.cpp:
        (WKContextWarmInitialProcess):
        * UIProcess/API/Cocoa/WKProcessPool.mm:
        (-[WKProcessPool _warmInitialProcess]):
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::prewarmProcess):
        (WebKit::WebProcessPool::didReachGoodTimeToPrewarm):
        * UIProcess/WebProcessPool.h:
        (WebKit::WebProcessPool::sendToOneProcess):

2018-11-14  Jiewen Tan  <jiewen_tan@apple.com>

        Unreviewed, comment improvement over r238166.

        * UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
        (WKWebsiteDataStoreSetWebAuthenticationMockConfiguration):
        * UIProcess/WebAuthentication/fido/CtapHidAuthenticator.h:

2018-11-15  Jiewen Tan  <jiewen_tan@apple.com>

        [WebAuthN] Use a real nonce for CTAPHID_INIT
        https://bugs.webkit.org/show_bug.cgi?id=191533
        <rdar://problem/46103502>

        Reviewed by Brent Fulgham.

        Use a real nonce for CTAPHID_INIT request according to:
        https://fidoalliance.org/specs/fido-v2.0-ps-20170927/fido-client-to-authenticator-protocol-v2.0-ps-20170927.html#ctaphid_init-0x06.
        The challenge here is the new transaction needs to start in the next runloop otherwise a dead lock will form:
        wrong nonce -> new transaction -> new nonce -> write init request -> read init response from last run as it
        piped in the run loop -> wrong nonce of course -> ...
        To break the above dead lock, we have to start the new transaction in the next run. However, that isn't
        sufficient as the arrived init response will be piped in HidConnection::m_inputReports, which is designed
        on purpose to store any data packets within (initialized, terminated) time interval to prevent data loss in
        the case when HidConnection::registerDataReceivedCallback is called after the first data packet's arrival.
        In order to break the dead lock completely, HidConnection::invalidateCache will bnnne called prior to every
        send to delete any potential init response from last run. HidConnection::invalidateCache is not necessary
        for other protocols though. The above scenario is more or less a design flaw in CTAP HID.

        Of course, all above scenarios are covered in our mock tests.

        * UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
        (WKWebsiteDataStoreSetWebAuthenticationMockConfiguration):
        * UIProcess/WebAuthentication/Cocoa/HidConnection.h:
        (WebKit::HidConnection::invalidateCache):
        * UIProcess/WebAuthentication/Mock/MockHidConnection.cpp:
        (WebKit::MockHidConnection::send):
        (WebKit::MockHidConnection::parseRequest):
        (WebKit::MockHidConnection::feedReports):
        * UIProcess/WebAuthentication/Mock/MockHidConnection.h:
        * UIProcess/WebAuthentication/Mock/MockWebAuthenticationConfiguration.h:
        * UIProcess/WebAuthentication/fido/CtapHidDriver.cpp:
        (WebKit::CtapHidDriver::Worker::transact):
        (WebKit::CtapHidDriver::CtapHidDriver):
        (WebKit::CtapHidDriver::transact):
        (WebKit::CtapHidDriver::continueAfterChannelAllocated):
        (WebKit::CtapHidDriver::returnResponse):
        * UIProcess/WebAuthentication/fido/CtapHidDriver.h:

2018-11-15  Oriol Brufau  <obrufau@igalia.com>

        [css-logical] Implement flow-relative margin, padding and border shorthands
        https://bugs.webkit.org/show_bug.cgi?id=188697

        Reviewed by Simon Fraser and Antti Koivisto.

        Add a CSSLogicalEnabled runtime flag.

        * Shared/WebPreferences.yaml:

2018-11-15  Jiewen Tan  <jiewen_tan@apple.com>

        [WebAuthN] PublicKeyCredentialCreationOptions::AuthenticatorSelectionCriteria::AuthenticatorAttachment should be optional
        https://bugs.webkit.org/show_bug.cgi?id=191522

        Reviewed by Brent Fulgham.

        * UIProcess/WebAuthentication/AuthenticatorManager.cpp:
        (WebKit::AuthenticatorManagerInternal::collectTransports):

2018-11-15  Michael Catanzaro  <mcatanzaro@igalia.com>

        [SOUP] Make Accept-Languages header look more like other browsers
        https://bugs.webkit.org/show_bug.cgi?id=191614

        Reviewed by Carlos Garcia Campos.

        This changes our Accept-Language header to better match other browsers, from something
        like this:

        Accept-Language: en-us, en;q=0.90, es-es;q=0.80, es;q=0.70

        to something like this:

        Accept-Language: en-US,en;q=0.90,es-ES;q=0.80,es;q=0.70

        There's no particular motivation for this change. I just noticed we were different for no
        clear reason.

        * NetworkProcess/soup/NetworkProcessSoup.cpp:
        (WebKit::buildAcceptLanguages):
        * UIProcess/API/glib/WebKitWebContext.cpp:
        (webkit_web_context_set_preferred_languages):

2018-11-15  Daniel Bates  <dabates@apple.com>

        [iOS] Shift + Tab does not focus previous field
        https://bugs.webkit.org/show_bug.cgi?id=191596
        <rdar://problem/45892053>

        Reviewed by Wenson Hsieh.

        Wire up the the tab and shift + tab key commands to the WKWebView/WKContentView's
        action forwarding mechanism. Also rename -_prevAccessoryTab to -_previousAccessoryTab.

        * Platform/spi/ios/UIKitSPI.h: Add more SPI.
        * UIProcess/API/Cocoa/WKWebViewInternal.h:
        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView canPerformActionForWebView:withSender:]):
        (-[WKContentView keyCommands]):
        (-[WKContentView _nextAccessoryTabForWebView:]): Added.
        (-[WKContentView _previousAccessoryTabForWebView:]): Added.
        (-[WKContentView _nextAccessoryTab:]): Deleted.
        (-[WKContentView _prevAccessoryTab:]): Deleted.

2018-11-15  Keith Rollin  <krollin@apple.com>

        Delete old .xcfilelist files
        https://bugs.webkit.org/show_bug.cgi?id=191669
        <rdar://problem/46081994>

        Reviewed by Chris Dumez.

        .xcfilelist files were created and added to the Xcode project files in
        https://trac.webkit.org/changeset/238008/webkit. However, they caused
        build issues and they were removed from the Xcode projects in
        https://trac.webkit.org/changeset/238055/webkit. This check-in removes
        the files from the repository altogether. They'll ultimately be
        replaced with new files with names that indicate whether the
        associated files are inputs to the Run Script phase or are files
        created by the Run Script phase.

        * DerivedSources.xcfilelist: Removed.
        * UnifiedSources.xcfilelist: Removed.

2018-11-15  Frederic Wang  <fwang@igalia.com>

        [WebAuthN] Make AuthenticatorManager
        https://bugs.webkit.org/show_bug.cgi?id=189279

        Unreviewed build fix.

        * UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm: Add missing header.
        * UIProcess/WebAuthentication/Cocoa/LocalConnection.mm: Ditto.
        * UIProcess/WebAuthentication/WebAuthenticatorCoordinatorProxy.cpp: Ditto.

2018-11-14  Keith Rollin  <krollin@apple.com>

        Move scripts for Derived and Unified Sources to external files
        https://bugs.webkit.org/show_bug.cgi?id=191670
        <rdar://problem/46082278>

        Reviewed by Keith Miller.

        Move the scripts in the Generate Derived Sources and Generate Unified
        Sources Run Script phases from the Xcode projects to external shell
        script files. Then invoke those scripts from the Run Script phases.
        This refactoring is being performed to support later work that will
        invoke these scripts in other contexts.

        The scripts were maintained as-is when making the move. I did a little
        reformatting and added 'set -e' to the top of each file, but that's
        it.

        * Scripts/generate-derived-sources.sh: Added.
        * Scripts/generate-unified-sources.sh: Added.
        * WebKit.xcodeproj/project.pbxproj:

2018-11-14  Chris Dumez  <cdumez@apple.com>

        WebKit.DecidePolicyForNavigationActionForHyperlinkThatRedirects API fails when PSON is enabled
        https://bugs.webkit.org/show_bug.cgi?id=191640

        Reviewed by Alex Christensen.

        The issue was that when process-swapping on a redirect, the parameters provided by the new
        WebContent process for navigationActionData / originatingFrameInfoData / frameSecurityOrigin
        are not correct because it does not have sufficient information (it does not know a swap
        happened).

        To address the issue, we now store the navigationActionData / originatingFrameInfoData /
        frameSecurityOrigin on the Navigation object whenever decidePolicyForNavigationAction is
        called. If the decidePolicyForNavigationAction is for a redirect, use the ones we stored
        on the Navigation object instead of the ones provided by the WebContent process. In case
        of redirect, those do not change anyway.

        This fixes all WebKit.DecidePolicyForNavigationAction* tests with PSON enabled.

        * UIProcess/API/APINavigation.h:
        (API::Navigation::currentRequestIsRedirect const):
        (API::Navigation::wasUserInitiated const):
        (API::Navigation::shouldForceDownload const):
        (API::Navigation::treatAsSameOriginNavigation const):
        (API::Navigation::hasOpenedFrames const):
        (API::Navigation::openedViaWindowOpenWithOpener const):
        (API::Navigation::opener const):
        (API::Navigation::requesterOrigin const):
        (API::Navigation::lockHistory const):
        (API::Navigation::lockBackForwardList const):
        (API::Navigation::clientRedirectSourceForHistory const):
        (API::Navigation::setLastNavigationAction):
        (API::Navigation::lastNavigationAction const):
        (API::Navigation::setOriginatingFrameInfo):
        (API::Navigation::originatingFrameInfo const):
        (API::Navigation::setDestinationFrameSecurityOrigin):
        (API::Navigation::destinationFrameSecurityOrigin const):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::decidePolicyForNavigationActionAsync):
        (WebKit::WebPageProxy::decidePolicyForNavigationAction):
        (WebKit::WebPageProxy::decidePolicyForNavigationActionSync):
        * UIProcess/WebPageProxy.h:

2018-11-14  Chris Dumez  <cdumez@apple.com>

        WebKit.WebsiteDataStoreCustomPaths API test is failing when enabling process prewarming
        https://bugs.webkit.org/show_bug.cgi?id=191638

        Reviewed by Alex Christensen.

        WebProcessPool::prewarmProcess() should not create the default WebSite Data Store if it
        does not exist yet. This is bad for memory consumption and it is what was causing this
        API test to fail.

        WebProcessPool::prewarmProcess() now tries to use the following data stores in this
        order of preference:
        1. WebProcessPool::m_websiteDataStore (aka this process pool's primary data store)
        2. The data store of the last WebProcessProxy that was created
        3. The default data store if it exists

        If no suitable data store is found, we cancel the process prewarming and log a console
        message instead.

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::prewarmProcess):

2018-11-14  Timothy Hatcher  <timothy@apple.com>

        Enabled dark mode CSS support by default.
        https://bugs.webkit.org/show_bug.cgi?id=191609
        rdar://problem/46046861

        Reviewed by Megan Gardner.

        * Shared/WebPreferences.yaml: Set DarkModeCSSEnabled's defaultValue to true.

2018-11-14  Timothy Hatcher  <timothy@apple.com>

        Default the view background color and text color to different values when in dark mode.
        https://bugs.webkit.org/show_bug.cgi?id=191607
        rdar://problem/46045854

        Reviewed by Dean Jackson.

        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::backgroundColor const): Use controlBackgroundColor.
        (WebKit::WebViewImpl::updateLayer): Simplified and use backgroundColor() getter.
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::transitionToCommittedForNewPage): Drop backgroundColor.
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::setDrawsBackground): Drop backgroundColor.

2018-11-14  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Pass Inspector::FrontendChannel as a reference connect/disconnect methods
        https://bugs.webkit.org/show_bug.cgi?id=191612

        Reviewed by Matt Baker.

        * UIProcess/Automation/WebAutomationSession.cpp:
        (WebKit::WebAutomationSession::connect):
        (WebKit::WebAutomationSession::disconnect):
        (WebKit::WebAutomationSession::terminate):
        * UIProcess/Automation/WebAutomationSession.h:
        * UIProcess/WebPageDebuggable.cpp:
        (WebKit::WebPageDebuggable::connect):
        (WebKit::WebPageDebuggable::disconnect):
        * UIProcess/WebPageDebuggable.h:
        * UIProcess/WebPageInspectorController.cpp:
        (WebKit::WebPageInspectorController::connectFrontend):
        (WebKit::WebPageInspectorController::disconnectFrontend):
        * UIProcess/WebPageInspectorController.h:
        * WebProcess/WebPage/WebInspector.cpp:
        (WebKit::WebInspector::close):
        * WebProcess/WebPage/WebPageInspectorTarget.cpp:
        (WebKit::WebPageInspectorTarget::connect):
        (WebKit::WebPageInspectorTarget::disconnect):

2018-11-14  Joseph Pecoraro  <pecoraro@apple.com>

        Unreviewed attempted wincairo build fix after 238192.

        * WebProcess/WebPage/WebPageInspectorTargetController.h:
        * WebProcess/WebPage/WebPageInspectorTargetFrontendChannel.cpp:

2018-11-14  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Follow-up: Keep Disabling Process Swap for Local Web Inspector
        https://bugs.webkit.org/show_bug.cgi?id=191494
        <rdar://problem/45469854>

        Reviewed by Devin Rousso.

        Continue to have the Local Inspector disable PSON while open
        until support is added.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::resetState):
        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::hasLocalInspectorFrontend const):
        (WebKit::WebPageProxy::setHasLocalInspectorFrontend):
        * UIProcess/WebPageProxy.messages.in:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::processForNavigationInternal):
        * WebProcess/WebPage/WebInspector.cpp:
        (WebKit::WebInspector::openFrontendConnection):
        (WebKit::WebInspector::closeFrontendConnection):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::setHasLocalInspectorFrontend):
        * WebProcess/WebPage/WebPage.h:

2018-11-14  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Keep Web Inspector window alive across process swaps (PSON) (Remote Inspector)
        https://bugs.webkit.org/show_bug.cgi?id=191494
        <rdar://problem/45469854>

        Reviewed by Devin Rousso.

        To support process swapping a slim Web Inspector backend lives in the UIProcess.
        The Web Inspector frontend connects to it and is told about sub-targets, namely
        pages, that it can further connect to. When performing a process swap the backend
        tells the frontend to destroy existing targets and create new targets.

        In the UIProcess the WebPageProxy has a WebPageInspectorController, with a single
        TargetAgent holding InspectorTargetProxies to targets it knows about. Inspector
        protocol messages go through this inspector controller and are routed to the
        WebPage and its WebCore::Page's InspectorController. The WebPageProxy decides
        when to close and expose new page targets during process swap, or basically
        any time it reconnects to a WebProcess. So this patch also makes Web Inspector
        stay alive and reconnect to a page when the inspected page crashes!

        In the WebContentProcess the WebPage has a WebPageInspectorTarget. It also
        has a WebPageInspectorTargetController in anticipation of further sub-targets
        within the page (workers, frames) but none exist at the moment. The WebPage
        relies on the WebPageProxy to know when to expose this target as a debuggable.

        * Sources.txt:
        * WebKit.xcodeproj/project.pbxproj:
        New files.

        * Shared/WebPageCreationParameters.cpp:
        (WebKit::WebPageCreationParameters::encode const):
        (WebKit::WebPageCreationParameters::decode):
        * Shared/WebPageCreationParameters.h:
        Remote inspector state can now stay in the UIProcess and does not need to
        be passed down to the WebContentProcess.

        * UIProcess/WebPageDebuggable.cpp: Copied from Source/WebCore/page/PageDebuggable.cpp.
        (WebKit::WebPageDebuggable::WebPageDebuggable):
        (WebKit::WebPageDebuggable::name const):
        (WebKit::WebPageDebuggable::url const):
        (WebKit::WebPageDebuggable::hasLocalDebugger const):
        (WebKit::WebPageDebuggable::connect):
        (WebKit::WebPageDebuggable::disconnect):
        (WebKit::WebPageDebuggable::dispatchMessageFromRemote):
        (WebKit::WebPageDebuggable::setIndicating):
        (WebKit::WebPageDebuggable::setNameOverride):
        * UIProcess/WebPageDebuggable.h: Copied from Source/WebCore/page/PageDebuggable.h.
        Remote debuggable entry point into the UIProcess for a page.
        This is pretty much identical to the PageDebuggable in WebCore.

        * Scripts/webkit/messages.py:
        * UIProcess/WebPageProxy.messages.in:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::m_resetRecentCrashCountTimer):
        (WebKit::WebPageProxy::finishAttachingToWebProcess):
        (WebKit::WebPageProxy::close):
        (WebKit::WebPageProxy::createInspectorTarget):
        (WebKit::WebPageProxy::destroyInspectorTarget):
        (WebKit::WebPageProxy::sendMessageToInspectorFrontend):
        (WebKit::WebPageProxy::setIndicating):
        (WebKit::WebPageProxy::allowsRemoteInspection const):
        (WebKit::WebPageProxy::setAllowsRemoteInspection):
        (WebKit::WebPageProxy::remoteInspectionNameOverride const):
        (WebKit::WebPageProxy::setRemoteInspectionNameOverride):
        (WebKit::WebPageProxy::remoteInspectorInformationDidChange):
        (WebKit::WebPageProxy::clearInspectorTargets):
        (WebKit::WebPageProxy::createInspectorTargets):
        (WebKit::WebPageProxy::didCommitLoadForFrame):
        (WebKit::WebPageProxy::didReceiveTitleForFrame):
        (WebKit::WebPageProxy::creationParameters):
        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::inspectorController):
        (WebKit::WebPageProxy::allowsRemoteInspection const): Deleted.
        (WebKit::WebPageProxy::remoteInspectionNameOverride const): Deleted.
        Own more inspector state in the UIProcess including a debuggable and inspector controller.

        * UIProcess/WebPageInspectorController.h: Added.
        * UIProcess/WebPageInspectorController.cpp: Added.
        (WebKit::WebPageInspectorController::WebPageInspectorController):
        (WebKit::WebPageInspectorController::pageClosed):
        (WebKit::WebPageInspectorController::hasLocalFrontend const):
        (WebKit::WebPageInspectorController::hasRemoteFrontend const):
        (WebKit::WebPageInspectorController::connectFrontend):
        (WebKit::WebPageInspectorController::disconnectFrontend):
        (WebKit::WebPageInspectorController::disconnectAllFrontends):
        (WebKit::WebPageInspectorController::dispatchMessageFromFrontend):
        (WebKit::WebPageInspectorController::setIndicating):
        (WebKit::WebPageInspectorController::clearTargets):
        (WebKit::WebPageInspectorController::createInspectorTarget):
        (WebKit::WebPageInspectorController::destroyInspectorTarget):
        (WebKit::WebPageInspectorController::sendMessageToInspectorFrontend):
        InspectorController with a single TargetAgent in the UIProcess.

        * UIProcess/WebPageInspectorTargetAgent.h:
        * UIProcess/WebPageInspectorTargetAgent.cpp:
        (WebKit::WebPageInspectorTargetAgent::WebPageInspectorTargetAgent):
        (WebKit::WebPageInspectorTargetAgent::frontendChannel):
        Target agent implementation.

        * UIProcess/InspectorTargetProxy.cpp:
        (WebKit::InspectorTargetProxy::create):
        (WebKit::InspectorTargetProxy::InspectorTargetProxy):
        (WebKit::InspectorTargetProxy::connect):
        (WebKit::InspectorTargetProxy::disconnect):
        (WebKit::InspectorTargetProxy::sendMessageToTargetBackend):
        * UIProcess/InspectorTargetProxy.h:
        UIProcess proxy for an InspectorTarget in the WebContentProcess.

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::processForNavigationInternal):

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::m_shouldAttachDrawingAreaOnPageTransition):
        (WebKit::WebPage::connectInspector):
        (WebKit::WebPage::disconnectInspector):
        (WebKit::WebPage::sendMessageToTargetBackend):
        (WebKit::WebPage::setIndicating):
        (WebKit::WebPage::setAllowsRemoteInspection): Deleted.
        (WebKit::WebPage::setRemoteInspectionNameOverride): Deleted.
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:

        * WebProcess/WebPage/WebPageInspectorTarget.h:
        * WebProcess/WebPage/WebPageInspectorTarget.cpp:
        (WebKit::WebPageInspectorTarget::WebPageInspectorTarget):
        (WebKit::WebPageInspectorTarget::identifier const):
        (WebKit::WebPageInspectorTarget::connect):
        (WebKit::WebPageInspectorTarget::disconnect):
        (WebKit::WebPageInspectorTarget::sendMessageToTargetBackend):
        InspectorTarget for this WebPage.

        * WebProcess/WebPage/WebPageInspectorTargetController.cpp: Added.
        (WebKit::WebPageInspectorTargetController::WebPageInspectorTargetController):
        (WebKit::WebPageInspectorTargetController::~WebPageInspectorTargetController):
        (WebKit::WebPageInspectorTargetController::addTarget):
        (WebKit::WebPageInspectorTargetController::removeTarget):
        (WebKit::WebPageInspectorTargetController::connectInspector):
        (WebKit::WebPageInspectorTargetController::disconnectInspector):
        (WebKit::WebPageInspectorTargetController::sendMessageToTargetBackend):
        (WebKit::WebPageInspectorTargetController::sendMessageToTargetFrontend):
        * WebProcess/WebPage/WebPageInspectorTargetController.h:
        * WebProcess/WebPage/WebPageInspectorTargetFrontendChannel.h:
        * WebProcess/WebPage/WebPageInspectorTargetFrontendChannel.cpp:
        (WebKit::WebPageInspectorTargetFrontendChannel::create):
        (WebKit::WebPageInspectorTargetFrontendChannel::WebPageInspectorTargetFrontendChannel):
        (WebKit::WebPageInspectorTargetFrontendChannel::sendMessageToFrontend):
        Preparation for more target managment in the WebContentProcess.

2018-11-14  Alex Christensen  <achristensen@webkit.org>

        Add SPI to show a safe browsing warning
        https://bugs.webkit.org/show_bug.cgi?id=191604

        Reviewed by Andy Estes.

        Safari has a case where it shows safe browsing warnings for a reason other than being told to by the SafeBrowsing framework.
        Because safe browsing is moving to WebKit, we will have Safari call this WebKit SPI in that case.
        The warning looks a little different, so I had to change the structure of a SafeBrowsingResult and the location of the string processing,
        but the existing behavior is the same as verified by existing unit tests.  I added a unit test to verify behavior of the new SPI.

        * SourcesCocoa.txt:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _showSafeBrowsingWarningWithTitle:warning:details:completionHandler:]):
        (-[WKWebView _showSafeBrowsingWarning:completionHandler:]):
        (+[WKWebView _confirmMalwareSentinel]):
        (+[WKWebView _visitUnsafeWebsiteSentinel]):
        * UIProcess/API/Cocoa/WKWebViewInternal.h:
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        * UIProcess/Cocoa/SafeBrowsingResultCocoa.mm: Removed.
        * UIProcess/Cocoa/SafeBrowsingWarningCocoa.mm: Copied from Source/WebKit/UIProcess/Cocoa/SafeBrowsingResultCocoa.mm.
        (WebKit::malwareDetailsBase):
        (WebKit::learnMoreURL):
        (WebKit::reportAnErrorBase):
        (WebKit::localizedProvider):
        (WebKit::SafeBrowsingWarning::visitUnsafeWebsiteSentinel):
        (WebKit::SafeBrowsingWarning::confirmMalwareSentinel):
        (WebKit::replace):
        (WebKit::addLinkAndReplace):
        (WebKit::reportAnErrorURL):
        (WebKit::malwareDetailsURL):
        (WebKit::safeBrowsingTitleText):
        (WebKit::safeBrowsingWarningText):
        (WebKit::safeBrowsingDetailsText):
        (WebKit::SafeBrowsingWarning::SafeBrowsingWarning):
        (WebKit::learnMore): Deleted.
        (WebKit::SafeBrowsingResult::SafeBrowsingResult): Deleted.
        * UIProcess/Cocoa/WKSafeBrowsingWarning.h:
        * UIProcess/Cocoa/WKSafeBrowsingWarning.mm:
        (-[WKSafeBrowsingWarning initWithFrame:safeBrowsingWarning:completionHandler:]):
        (-[WKSafeBrowsingWarning addContent]):
        (-[WKSafeBrowsingWarning showDetailsClicked]):
        (-[WKSafeBrowsingWarning clickedOnLink:]):
        (-[WKSafeBrowsingTextView initWithAttributedString:forWarning:]):
        (confirmMalwareSentinel): Deleted.
        (visitUnsafeWebsiteSentinel): Deleted.
        (replace): Deleted.
        (addLinkAndReplace): Deleted.
        (reportAnErrorURL): Deleted.
        (malwareDetailsURL): Deleted.
        (titleText): Deleted.
        (warningText): Deleted.
        (detailsText): Deleted.
        (-[WKSafeBrowsingWarning initWithFrame:safeBrowsingResult:completionHandler:]): Deleted.
        * UIProcess/Cocoa/WebPageProxyCocoa.mm:
        (WebKit::WebPageProxy::beginSafeBrowsingCheck):
        * UIProcess/Cocoa/WebViewImpl.h:
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::showSafeBrowsingWarning):
        * UIProcess/PageClient.h:
        (WebKit::PageClient::showSafeBrowsingWarning):
        * UIProcess/SafeBrowsingResult.h: Removed.
        * UIProcess/SafeBrowsingWarning.h: Copied from Source/WebKit/UIProcess/SafeBrowsingResult.h.
        (WebKit::SafeBrowsingWarning::create):
        (WebKit::SafeBrowsingWarning::title const):
        (WebKit::SafeBrowsingWarning::warning const):
        (WebKit::SafeBrowsingWarning::details const):
        (WebKit::SafeBrowsingResult::create): Deleted.
        (WebKit::SafeBrowsingResult::isPhishing const): Deleted.
        (WebKit::SafeBrowsingResult::isMalware const): Deleted.
        (WebKit::SafeBrowsingResult::isUnwantedSoftware const): Deleted.
        (WebKit::SafeBrowsingResult::url const): Deleted.
        (WebKit::SafeBrowsingResult::provider const): Deleted.
        (WebKit::SafeBrowsingResult::localizedProviderName const): Deleted.
        (WebKit::SafeBrowsingResult::malwareDetailsURLBase const): Deleted.
        (WebKit::SafeBrowsingResult::reportAnErrorURLBase const): Deleted.
        (WebKit::SafeBrowsingResult::learnMoreURL const): Deleted.
        (WebKit::SafeBrowsingResult::needsSafeBrowsingWarning const): Deleted.
        (): Deleted.
        * UIProcess/WebFramePolicyListenerProxy.cpp:
        (WebKit::WebFramePolicyListenerProxy::didReceiveSafeBrowsingResults):
        (WebKit::WebFramePolicyListenerProxy::use):
        * UIProcess/WebFramePolicyListenerProxy.h:
        * UIProcess/WebFrameProxy.cpp:
        (WebKit::WebFrameProxy::WebFrameProxy):
        (WebKit::WebFrameProxy::setUpPolicyListenerProxy):
        (WebKit::WebFrameProxy::didHandleContentFilterUnblockNavigation):
        * UIProcess/WebFrameProxy.h:
        (WebKit::WebFrameProxy::create):
        (WebKit::WebFrameProxy::page const):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::swapToWebProcess):
        (WebKit::WebPageProxy::didCreateMainFrame):
        (WebKit::WebPageProxy::didCreateSubframe):
        (WebKit::WebPageProxy::decidePolicyForNavigationAction):
        (WebKit::WebPageProxy::decidePolicyForNewWindowAction):
        (WebKit::WebPageProxy::decidePolicyForResponse):
        * UIProcess/ios/PageClientImplIOS.h:
        * UIProcess/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::showSafeBrowsingWarning):
        * UIProcess/mac/PageClientImplMac.h:
        * UIProcess/mac/PageClientImplMac.mm:
        (WebKit::PageClientImpl::showSafeBrowsingWarning):
        * UIProcess/mac/WebDataListSuggestionsDropdownMac.mm:
        * WebKit.xcodeproj/project.pbxproj:

2018-11-14  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] A few drag and drop tests are crashing after r238146
        https://bugs.webkit.org/show_bug.cgi?id=191617

        Reviewed by Dean Jackson.

        The notion of temporarily suppressing the selection assistant was introduced during iOS drag and drop
        development as a way of allowing both the selection view and dropped content snapshot to fade in simultaneously
        during a drop in an editable element. r238146 piggy-backs on this mechanism by changing selection suppression
        state when an element is focused, when the selection changes, and when an element is blurred, depending on
        whether the currently focused element is transparent.

        However, in the case where the selection assistant is suppressed due to a running drop animation, if focus moves
        to an element that is not fully transparent, we end up prematurely unsuppressing the text selection assistant.
        This subsequently causes selection UI to immediately show up after a drop instead of animating in alongside a
        snapshot of the inserted document fragment, if the drop moved focus to an editable element.

        A number of drag and drop tests on iOS exercised this codepath by dragging content into editable fields and/or
        moving content between editable elements in a web view. These tests began to crash due to selection views and
        the accompanying callout bar appearing earlier than usual, which triggers an unrelated UIKit assertion in
        <https://webkit.org/b/190401>.

        This patch fixes the failing tests by refactoring our selection assistant suppression code. Instead of
        maintaining a single `BOOL` flag indicating whether the selection is suppressed, we use an `OptionSet` of
        `SuppressSelectionAssistantReason`s, which (at the moment) only include (1) a running drop animation, and (2)
        focusing a transparent element. The text selection assistant is considered suppressed when either of the reasons
        apply. This allows us to correctly handle a drop animation that occurs simultaneously as an element is focused
        without unsuppressing the selection assistant early, and also allows us to handle selection assistant
        suppression in more nuanced ways, depending on the suppression reason.

        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView cleanupInteraction]):
        (-[WKContentView _displayFormNodeInputView]):

        Only prevent zooming to the focused element during drop if we're suppressing the selection assistant due to
        focusing a transparent element. In the case of a drop, we still want to allow scrolling and zooming.

        (-[WKContentView canShowNonEmptySelectionView]):
        (-[WKContentView hasSelectablePositionAtPoint:]):
        (-[WKContentView pointIsNearMarkedText:]):
        (-[WKContentView textInteractionGesture:shouldBeginAtPoint:]):
        (-[WKContentView _startAssistingKeyboard]):
        (-[WKContentView _startAssistingNode:userIsInteracting:blurPreviousNode:changingActivityState:userObject:]):
        (-[WKContentView _stopAssistingNode]):
        (-[WKContentView _updateChangedSelection:]):
        (-[WKContentView _shouldSuppressSelectionCommands]):
        (-[WKContentView _beginSuppressingSelectionAssistantForReason:]):
        (-[WKContentView _stopSuppressingSelectionAssistantForReason:]):

        Add helper methods for adding or removing selection assistant suppression reasons. When the last selection
        assistant suppression reason is removed, we activate the selection assistant, and conversely, when the first
        suppression reason is added, we deactivate the selection assistant.

        (-[WKContentView _didConcludeEditDataInteraction:]):
        (-[WKContentView _didPerformDragOperation:]):
        (-[WKContentView dropInteraction:performDrop:]):
        (-[WKContentView suppressAssistantSelectionView]): Deleted.
        (-[WKContentView setSuppressAssistantSelectionView:]): Deleted.

2018-11-14  Wenson Hsieh  <wenson_hsieh@apple.com>

        [Cocoa] [WebKit2] Hook up some more editing actions (-_pasteAndMatchStyle:, -makeTextWritingDirectionNatural:)
        https://bugs.webkit.org/show_bug.cgi?id=191605
        <rdar://problem/45813991>

        Reviewed by Dean Jackson.

        Hook up a couple of editing actions on iOS and macOS. The `-pasteAndMatchStyle:` selector is privately declared
        in UIKit, but does not exist on macOS; as such, add `-_pasteAndMatchStyle:` as SPI on WKWebView, and
        additionally implement the unprefixed version, `-pasteAndMatchStyle:`, on iOS.

        Since `-makeTextWritingDirectionNatural:` is already declared on both iOS and macOS (SPI on UIResponder and API
        on macOS, respectively) we simply implement the unprefixed variant on both platforms.

        * Platform/spi/ios/UIKitSPI.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView makeTextWritingDirectionNaturalForWebView:]):
        (-[WKContentView canPerformActionForWebView:withSender:]):

2018-11-14  Per Arne Vollan  <pvollan@apple.com>

        REGRESSION (WEBPROCESS_WINDOWSERVER_BLOCKING): requestAnimationFrame Stops Completing
        https://bugs.webkit.org/show_bug.cgi?id=190884

        Reviewed by Dean Jackson.

        Since the Web page currently owns the display link on the UI process side, the display link will be
        deleted in the UI process when a Web page is closed. This is incorrect, since a display link can be
        reused between Web pages in the WebContent process. This patch moves the ownership of the UI process
        display links to the Web process object to address this issue. Also, the display ID of the display
        being updated is included in the message to the WebContent process.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::close):
        (WebKit::WebPageProxy::resetStateAfterProcessExited):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * UIProcess/WebProcessProxy.h:
        * UIProcess/WebProcessProxy.messages.in:
        * UIProcess/mac/DisplayLink.cpp:
        (WebKit::DisplayLink::DisplayLink):
        (WebKit::DisplayLink::displayLinkCallback):
        * UIProcess/mac/DisplayLink.h:
        (WebKit::DisplayLink::displayID const):
        * UIProcess/mac/WebPageProxyMac.mm:
        (WebKit::WebPageProxy::startDisplayLink): Deleted.
        (WebKit::WebPageProxy::stopDisplayLink): Deleted.
        * UIProcess/mac/WebProcessProxyMac.mm:
        (WebKit::WebProcessProxy::startDisplayLink):
        (WebKit::WebProcessProxy::stopDisplayLink):
        * WebProcess/WebPage/DrawingArea.h:
        * WebProcess/WebPage/DrawingArea.messages.in:
        * WebProcess/WebPage/mac/DrawingAreaMac.cpp:
        (WebKit::DisplayRefreshMonitorMac::create):
        (WebKit::DisplayRefreshMonitorMac::DisplayRefreshMonitorMac):
        (WebKit::DisplayRefreshMonitorMac::~DisplayRefreshMonitorMac):
        (WebKit::DisplayRefreshMonitorMac::requestRefreshCallback):
        (WebKit::DrawingArea::createDisplayRefreshMonitor):
        (WebKit::DrawingArea::displayWasRefreshed): Deleted.
        * WebProcess/WebProcess.h:
        * WebProcess/WebProcess.messages.in:
        * WebProcess/cocoa/WebProcessCocoa.mm:
        (WebKit::WebProcess::displayWasRefreshed):

2018-11-14  Chris Dumez  <cdumez@apple.com>

        Client should be able to disable PSON even if the experimental feature is on by default
        https://bugs.webkit.org/show_bug.cgi?id=191634

        Reviewed by Dean Jackson.

        Instead of overriding the APIProcessPoolConfiguration's m_processSwapsOnNavigation flag to true
        when the experimental is enabled, use a separate flag to store this information. If the client
        explicitly sets the APIProcessPoolConfiguration's m_processSwapsOnNavigation flag then we obey
        the client's request, otherwise, we fall back to using the state from experimental features.

        This allows:
        - API tests to explicitely disable PSON / Process prewarming even if those are on by default
          in experimental features.
        - If the client does not set those flags on the APIProcessPoolConfiguration (Safari for e.g.),
          then the experimental feature flag still fully controls the feature.

        * UIProcess/API/APIProcessPoolConfiguration.cpp:
        (API::ProcessPoolConfiguration::copy):
        * UIProcess/API/APIProcessPoolConfiguration.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::createWebPage):

2018-11-14  Chris Dumez  <cdumez@apple.com>

        WebKit.ApplicationManifestBasic API test is failing when enabling PSON
        https://bugs.webkit.org/show_bug.cgi?id=191602

        Reviewed by Alex Christensen.

        Add support for process swapping for a [WKWebView loadHTML:] load by storing
        the necessary data on the API::Navigation and doing a loadData() instead of
        a loadRequest() after process swapping when this data is present on the
        navigation.

        * UIProcess/API/APINavigation.cpp:
        (API::Navigation::Navigation):
        * UIProcess/API/APINavigation.h:
        (API::Navigation::create):
        (API::Navigation::substituteData const):
        * UIProcess/WebNavigationState.cpp:
        (WebKit::WebNavigationState::createLoadDataNavigation):
        * UIProcess/WebNavigationState.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::loadData):
        (WebKit::WebPageProxy::continueNavigationInNewProcess):

2018-11-14  Antti Koivisto  <antti@apple.com>

        Align Mac WK2 layer flush throttling with iOS
        https://bugs.webkit.org/show_bug.cgi?id=191632

        Reviewed by Zalan Bujtas.

        Currently Mac WK2 uses WebCore side throttling implementation in RenderLayerCompositor. This code has
        throttling timer per-frame while the actual decision making and layer flushes itself are per page. These
        timers generate way more flushes than expected in presence of multiple frames. There are also bugs in how
        flushing state is updated when frames are created dynamically.

        On iOS WK2 throttling is implemented on WebKit side and controlled by a per-page timer. Recent fixes also
        make this implementation visually fast. We should align the Mac implementation and eventually unify them.

        This patch implements throttling in TiledCoreAnimationDrawingArea mirroring the iOS RemoteLayerTreeDrawingArea
        implementation. There are some adjustments for platform differences (local vs remote layers) and we continue
        using runloop observer for the actual flushes. Timings are as in the existing Mac code.

        The patch appears to be a significant performance progression.

        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
        (WebKit::TiledCoreAnimationDrawingArea::TiledCoreAnimationDrawingArea):
        (WebKit::TiledCoreAnimationDrawingArea::setLayerTreeStateIsFrozen):

        Schedule an immediate flush when layers are unfrozen.

        (WebKit::TiledCoreAnimationDrawingArea::scheduleCompositingLayerFlush):
        (WebKit::TiledCoreAnimationDrawingArea::scheduleCompositingLayerFlushImmediately):

        Track pending flushes with m_hasPendingFlush bit.
        Delay flush if the flush throttling timer is active. Start it if we throttling but it is not active yet.

        (WebKit::TiledCoreAnimationDrawingArea::flushLayers):

        Clear m_hasPendingFlush if the flush succeeded.
        Restart the throttling timer if we are still throttling.
        Manage runloop observer invalidation here instead of the caller (and stop returning value).

        (WebKit::TiledCoreAnimationDrawingArea::layerFlushRunLoopCallback):
        (WebKit::TiledCoreAnimationDrawingArea::adjustLayerFlushThrottling):

        Returning 'true' here disables WebCore side throttling code.

        Start or stop the throttling timer on state changes.

        (WebKit::TiledCoreAnimationDrawingArea::layerFlushThrottlingIsActive const):

        This is used to control style and layout timers on WebCore side. Return false on frozen
        state since unfreezing depends on style and layout.

        (WebKit::TiledCoreAnimationDrawingArea::startLayerFlushThrottlingTimer):
        (WebKit::TiledCoreAnimationDrawingArea::layerFlushThrottlingTimerFired):

2018-11-14  Chris Dumez  <cdumez@apple.com>

        WebKit.WKHTTPCookieStoreWithoutProcessPool API test is failing with process prewarming is enabled
        https://bugs.webkit.org/show_bug.cgi?id=191624

        Reviewed by Alex Christensen.

        Stop setting the WebProcessPool's primary data store (m_websiteDataStore) to the default one in
        WebProcessPool::prewarmProcess(). We did not really need to, we can pass the default data store
        to the new WebPageProxy without having to set m_websiteDataStore. m_websiteDataStore only gets
        set upon constructor if thr default data store already exists or later on when creating a WebPage
        that uses the default data store.

        In the case of the API test, the following was happening:
        1. Create an ephemeral data store EDS
        2. Create a WebView V1 using datastore EDS
        3. Do a load in V1
        4. Process prewarming would kick in and wrongly associated V1's process pool PP1 with the default data store
        5. Create/Get the default datastore and set a few cookies on it
        6. Create a WebView V2 using default datastore and a fresh new process pool PP2
        7. Do a load in V2 and expect the cookies to be there

        In HTTPCookieStore::setCookie() that is called at step 5, we call:
        m_owningDataStore->processPoolForCookieStorageOperations()

        In this case, m_owningDataStore is the default datastore and this call would previously return null because
        there is no WebProcessPool yet associated with the default datastore. However, with the process prewarming
        bug at step 4, the process pool PP1 would be returned since it was wrongly associated with the default
        data store. As a result, we would call setCookie() on PP1's WebCookieManagerProxy and this would fail
        because PP1's network process knows nothing about this session ID (it was only ever used with an ephemeral
        session).

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::prewarmProcess):

2018-11-13  Jiewen Tan  <jiewen_tan@apple.com>

        [WebAuthN] Support CTAP HID authenticators on macOS
        https://bugs.webkit.org/show_bug.cgi?id=188623
        <rdar://problem/43353777>

        Reviewed by Brent Fulgham and Chris Dumez.

        This patch introduces a primitive support of CTAP HID authenticators for WebAuthN in macOS.
        It involves low level HID device management&communication, high level CTAP HID authenticator
        management&communication, and mock testing. The above three aspects will be covered in details:
        1) Low level HID device management&communication: HidService&HidConnection
        It relies on IOHIDManager to discover appropriate hid devices by passing a matching dictionary:
        { PrimaryUsagePage: 0xf1d0, PrimaryUsage: 0x01}. For communication, it utilizes HID reports.
        To send a report, it calls IOHIDDeviceSetReport since the async version is not implemented.
        To recieve a report, it calls IOHIDDeviceRegisterInputReportCallback to asynchronously wait
        for incoming reports.
        Here is the corresponding reference:
        https://developer.apple.com/library/archive/documentation/DeviceDrivers/Conceptual/HID/new_api_10_5/tn2187.html#//apple_ref/doc/uid/TP40000970-CH214-SW2
        2) High level CTAP HID authenticator management&communication: HidService&CtapHidDriver
        Whenever an appropriate hid device is discovered by IOHIDManager, an AuthenticatorGetInfo command
        is sent to the device to determine properties of the authenticator, says, which version of protocol
        it supports, i.e. CTAP or U2F. So far, we only support CTAP authenticators. Once the authenticator
        is determined to support CTAP, we then instantiate CtapHidAuthenticator which will then take care
        of even higher level WebAuthN requests&responses.
        Binaries are constructed and packaged according to the CTAP HID porotocol. CtapHidDriver takes care
        of concurrency and channels, i.e. allocating channel and establishing the actual request/response
        transaction. At the meantime, CtapHidDriver::Worker is then responsible for each single transaction.
        Here is the corresponding reference:
        https://fidoalliance.org/specs/fido-v2.0-ps-20170927/fido-client-to-authenticator-protocol-v2.0-ps-20170927.html#usb.
        3) Mock Testing: MockHidService & MockHidConnection
        A CTAP hid authenticator is simulated within MockHidConnection with options of specifying specific
        error scenarios and of course could take care of successful cases. Four stages are presented in the
        simulated authenticator to reflect: a) allocating channel for AuthenticatorGetInfo, b) sending
        AuthenticatorGetInfo, c) allocating channel for actual request, and d) sending the actual request.

        Besides implementing the above, it also does a few other things:
        1) Make AuthenticatorManager::clearState asynchronous to avoid cyclic dependency:
        Authenticator::returnResponse => AuthenticatorManager::respondReceived => AuthenticatorManager::clearState
        => Authenticator::~Authenticator.
        2) Reorganize unified build sources to make it clear that which files are .mm and which are .cpp.
        3) Import LocalAuthentication.framework in LocalAuthenticationSoftLink instead of being scattered.

        * Sources.txt:
        * SourcesCocoa.txt:
        * Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.h:
        * UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
        (WKWebsiteDataStoreSetWebAuthenticationMockConfiguration):
        * UIProcess/WebAuthentication/AuthenticatorManager.cpp:
        (WebKit::AuthenticatorManagerInternal::collectTransports):
        (WebKit::AuthenticatorManager::clearStateAsync):
        (WebKit::AuthenticatorManager::respondReceived):
        (WebKit::AuthenticatorManager::initTimeOutTimer):
        * UIProcess/WebAuthentication/AuthenticatorManager.h:
        * UIProcess/WebAuthentication/AuthenticatorTransportService.cpp:
        (WebKit::AuthenticatorTransportService::create):
        (WebKit::AuthenticatorTransportService::createMock):
        (WebKit::AuthenticatorTransportService::startDiscovery):
        (WebKit::AuthenticatorTransportService::startDiscovery const): Deleted.
        * UIProcess/WebAuthentication/AuthenticatorTransportService.h:
        * UIProcess/WebAuthentication/Cocoa/HidConnection.h: Copied from Source/WebKit/UIProcess/WebAuthentication/AuthenticatorTransportService.h.
        * UIProcess/WebAuthentication/Cocoa/HidConnection.mm: Added.
        (WebKit::reportReceived):
        (WebKit::HidConnection::HidConnection):
        (WebKit::HidConnection::~HidConnection):
        (WebKit::HidConnection::initialize):
        (WebKit::HidConnection::terminate):
        (WebKit::HidConnection::send):
        (WebKit::HidConnection::registerDataReceivedCallback):
        (WebKit::HidConnection::unregisterDataReceivedCallback):
        (WebKit::HidConnection::receiveReport):
        (WebKit::HidConnection::consumeReports):
        (WebKit::HidConnection::registerDataReceivedCallbackInternal):
        * UIProcess/WebAuthentication/Cocoa/HidService.h: Copied from Source/WebKit/UIProcess/WebAuthentication/Cocoa/LocalService.h.
        * UIProcess/WebAuthentication/Cocoa/HidService.mm: Added.
        (WebKit::deviceAddedCallback):
        (WebKit::deviceRemovedCallback):
        (WebKit::HidService::HidService):
        (WebKit::HidService::~HidService):
        (WebKit::HidService::startDiscoveryInternal):
        (WebKit::HidService::platformStartDiscovery):
        (WebKit::HidService::createHidConnection const):
        (WebKit::HidService::deviceAdded):
        (WebKit::HidService::continueAddDeviceAfterGetInfo):
        * UIProcess/WebAuthentication/Cocoa/LocalAuthenticationSoftLink.h:
        * UIProcess/WebAuthentication/Cocoa/LocalConnection.mm:
        * UIProcess/WebAuthentication/Cocoa/LocalService.h:
        * UIProcess/WebAuthentication/Cocoa/LocalService.mm:
        (WebKit::LocalService::startDiscoveryInternal):
        (WebKit::LocalService::startDiscoveryInternal const): Deleted.
        * UIProcess/WebAuthentication/Mock/MockAuthenticatorManager.cpp:
        (WebKit::MockAuthenticatorManager::respondReceivedInternal):
        * UIProcess/WebAuthentication/Mock/MockHidConnection.cpp: Added.
        (WebKit::MockHidConnection::MockHidConnection):
        (WebKit::MockHidConnection::initialize):
        (WebKit::MockHidConnection::terminate):
        (WebKit::MockHidConnection::send):
        (WebKit::MockHidConnection::registerDataReceivedCallbackInternal):
        (WebKit::MockHidConnection::assembleRequest):
        (WebKit::MockHidConnection::parseRequest):
        (WebKit::MockHidConnection::feedReports):
        (WebKit::MockHidConnection::stagesMatch const):
        (WebKit::MockHidConnection::shouldContinueFeedReports):
        (WebKit::MockHidConnection::continueFeedReports):
        * UIProcess/WebAuthentication/Mock/MockHidConnection.h: Copied from Source/WebKit/UIProcess/WebAuthentication/Mock/MockLocalConnection.h.
        * UIProcess/WebAuthentication/Mock/MockHidService.cpp: Copied from Source/WebKit/UIProcess/WebAuthentication/Mock/MockLocalService.cpp.
        (WebKit::MockHidService::MockHidService):
        (WebKit::MockHidService::platformStartDiscovery):
        (WebKit::MockHidService::createHidConnection const):
        * UIProcess/WebAuthentication/Mock/MockHidService.h: Copied from Source/WebKit/UIProcess/WebAuthentication/Mock/MockLocalConnection.h.
        * UIProcess/WebAuthentication/Mock/MockLocalConnection.h:
        * UIProcess/WebAuthentication/Mock/MockLocalConnection.mm:
        * UIProcess/WebAuthentication/Mock/MockLocalService.mm: Renamed from Source/WebKit/UIProcess/WebAuthentication/Mock/MockLocalService.cpp.
        (WebKit::MockLocalService::MockLocalService):
        (WebKit::MockLocalService::platformStartDiscovery const):
        (WebKit::MockLocalService::createLocalConnection const):
        * UIProcess/WebAuthentication/Mock/MockWebAuthenticationConfiguration.h:
        * UIProcess/WebAuthentication/fido/CtapHidAuthenticator.cpp: Added.
        (WebKit::CtapHidAuthenticator::CtapHidAuthenticator):
        (WebKit::CtapHidAuthenticator::makeCredential):
        (WebKit::CtapHidAuthenticator::continueMakeCredentialAfterResponseReceived const):
        (WebKit::CtapHidAuthenticator::getAssertion):
        (WebKit::CtapHidAuthenticator::continueGetAssertionAfterResponseReceived const):
        * UIProcess/WebAuthentication/fido/CtapHidAuthenticator.h: Copied from Source/WebKit/UIProcess/WebAuthentication/Cocoa/LocalService.h.
        * UIProcess/WebAuthentication/fido/CtapHidDriver.cpp: Added.
        (WebKit::CtapHidDriver::Worker::Worker):
        (WebKit::CtapHidDriver::Worker::~Worker):
        (WebKit::CtapHidDriver::Worker::transact):
        (WebKit::CtapHidDriver::Worker::write):
        (WebKit::CtapHidDriver::Worker::read):
        (WebKit::CtapHidDriver::Worker::returnMessage):
        (WebKit::CtapHidDriver::CtapHidDriver):
        (WebKit::CtapHidDriver::transact):
        (WebKit::CtapHidDriver::continueAfterChannelAllocated):
        (WebKit::CtapHidDriver::continueAfterResponseReceived):
        (WebKit::CtapHidDriver::returnResponse):
        * UIProcess/WebAuthentication/fido/CtapHidDriver.h: Added.
        * UIProcess/mac/WebDataListSuggestionsDropdownMac.mm:
        * WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.h:
        * WebKit.xcodeproj/project.pbxproj:

2018-11-13  Ross Kirsling  <ross.kirsling@sony.com>

        Unreviewed correction to previous build fix to avoid any internal/downstream repercussions.

        * WebProcess/Network/webrtc/LibWebRTCProvider.h:

2018-11-13  Ross Kirsling  <ross.kirsling@sony.com>

        Unreviewed GTK/WPE build fix for r238159. 

        * WebProcess/Network/webrtc/LibWebRTCProvider.h:

2018-11-13  Timothy Hatcher  <timothy@apple.com>

        Use a light scrollbar for transparent web views in dark mode.
        https://bugs.webkit.org/show_bug.cgi?id=191559
        rdar://problem/46000489

        Reviewed by Dean Jackson.

        * WebProcess/InjectedBundle/DOM/InjectedBundleRangeHandle.cpp:
        (WebKit::InjectedBundleRangeHandle::renderedImage): Use FrameView's useDarkAppaearance().
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::drawRect): Ditto.

2018-11-13  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] Do not show selection UI for editable elements with opacity near zero
        https://bugs.webkit.org/show_bug.cgi?id=191442
        <rdar://problem/45958625>

        Reviewed by Simon Fraser.

        Add support for suppressing native selection UI (for instance, selection highlight views, selection handles, and
        selection-related gestures) when the selection is inside a transparent editable element. This helps maintain
        compatibility with text editors that work by capturing key events and input events hidden contenteditable
        elements, and reflect these changes in different document or different part of the document.

        Since selection UI is rendered in the UI process on iOS using element geometry propagated from the web process,
        selection rendering is entirely decoupled from the process of painting in the web process. This means that if
        the editable root has an opacity of 0, we would correctly hide the caret and selection on macOS, but draw over
        the transparent element on iOS. When these hidden editable elements are focused, this often results in unwanted
        behaviors, such as double caret painting, native and custom selection UI from the page being drawn on top of one
        another, and the ability to change selection via tap and loupe gestures within hidden text.

        To fix this, we compute whether the focused element is transparent when an element is focused, or when the
        selection changes, and send this information over to the UI process via `AssistedNodeInformation` and
        `EditorState`. In the UI process, we then respect this information by suppressing the selection assistant if the
        focused element is transparent; this disables showing and laying out selection views, as well as gestures
        associated with selection overlays. However, this still allows for contextual autocorrection and spell checking.

        * Shared/AssistedNodeInformation.cpp:
        (WebKit::AssistedNodeInformation::encode const):
        (WebKit::AssistedNodeInformation::decode):
        * Shared/AssistedNodeInformation.h:
        * Shared/EditorState.cpp:
        (WebKit::EditorState::PostLayoutData::encode const):
        (WebKit::EditorState::PostLayoutData::decode):
        * Shared/EditorState.h:

        Add `elementIsTransparent` flags, and also add boilerplate IPC code.

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _displayFormNodeInputView]):

        Prevent zooming to the focused element if the focused element is hidden.

        (-[WKContentView hasSelectablePositionAtPoint:]):
        (-[WKContentView pointIsNearMarkedText:]):
        (-[WKContentView textInteractionGesture:shouldBeginAtPoint:]):

        Don't allow these text interaction gestures to begin while suppressing the selection assistant.

        (-[WKContentView _startAssistingNode:userIsInteracting:blurPreviousNode:changingActivityState:userObject:]):

        When an element is focused, begin suppressing the selection assistant if the element is fully transparent.

        (-[WKContentView _stopAssistingNode]):

        When the focused element is blurred, reset state by ending selection assistant suppression (additionally
        reactivating the selection assistant if needed). This ensures that selection in non-editable text isn't broken
        after focusing a hidden editable element.

        (-[WKContentView _updateChangedSelection:]):

        If needed, suppress or un-suppress the selection assistant when the selection changes. On certain rich text
        editors, a combination of custom selection UI and native selection UI is used. For instance, on Microsoft Office
        365, caret selections are rendered using the native caret view, but as soon as the selection becomes ranged, the
        editable root becomes fully transparent, and Office's selection UI takes over.

        (-[WKContentView _shouldSuppressSelectionCommands]):

        Override this UIKit SPI hook to suppress selection commands (e.g. the callout bar) when suppressing the
        selection assistant.

        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::platformEditorState const):
        (WebKit::WebPage::getAssistedNodeInformation):

        Compute and set `elementIsTransparent` using the assisted node.

2018-11-13  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r238137.

        Introduced API test failures on macOS.

        Reverted changeset:

        "Enable process swap on cross-site navigation by default on
        macOS"
        https://bugs.webkit.org/show_bug.cgi?id=191572
        https://trac.webkit.org/changeset/238137

2018-11-13  Ryosuke Niwa  <rniwa@webkit.org>

        Enable process swap on cross-site navigation by default on macOS
        https://bugs.webkit.org/show_bug.cgi?id=191572

        Reviewed by Chris Dumez.

        Enabled the feature by default on macOS.

        * Shared/WebPreferences.yaml:
        * Shared/WebPreferencesDefaultValues.h:

2018-11-13  Daniel Bates  <dabates@apple.com>

        Consolidate WebKit UIKitSPI.h and UIKitTestSPI.h
        https://bugs.webkit.org/show_bug.cgi?id=173341
        <rdar://problem/32752890>

        Reviewed by Simon Fraser.

        * Platform/spi/ios/UIKitSPI.h:

2018-11-13  Alex Christensen  <achristensen@webkit.org>

        Fix internal builds after r238115
        https://bugs.webkit.org/show_bug.cgi?id=191441

        * UIProcess/Cocoa/WKSafeBrowsingWarning.mm:
        (-[WKSafeBrowsingTextView intrinsicContentSize]):
        Some iOS-like operating systems don't have safe browsing.  Don't use symbols that don't exist on those systems.

2018-11-13  Ali Juma  <ajuma@chromium.org>

        Turn Intersection Observer on by default
        https://bugs.webkit.org/show_bug.cgi?id=191569

        Reviewed by Simon Fraser.

        * Shared/WebPreferences.yaml:

2018-11-12  Darshan Kadu  <darsh7807@gmail.com>

        Implement Cache API support for WPE/GTK
        https://bugs.webkit.org/show_bug.cgi?id=178316

        Reviewed by Michael Catanzaro.

        Added a new API function WKWebsiteDataStoreSetCacheStoragePerOriginQuota which sets the
        cache limit per origin.

        * UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
        (WKWebsiteDataStoreSetCacheStoragePerOriginQuota):
        * UIProcess/API/C/WKWebsiteDataStoreRef.h:

2018-11-12  Alex Christensen  <achristensen@webkit.org>

        [iOS] Implement safe browsing in WebKit
        https://bugs.webkit.org/show_bug.cgi?id=191441

        Reviewed by Tim Horton.

        In r237863 I implemented this for Mac.  This refines the UI and implements it for iOS.

        * Shared/WebPreferences.yaml:
        * Shared/WebPreferencesDefaultValues.h:
        * UIProcess/API/C/mac/WKContextPrivateMac.mm:
        (WKContextHandlesSafeBrowsing):
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _showSafeBrowsingWarning:completionHandler:]):
        (-[WKWebView _clearSafeBrowsingWarning]):
        (-[WKWebView layoutSubviews]):
        (-[WKWebView setFrameSize:]):
        (+[WKWebView _handlesSafeBrowsing]):
        (-[WKWebView _safeBrowsingWarningForTesting]):
        * UIProcess/API/Cocoa/WKWebViewInternal.h:
        * UIProcess/Cocoa/PageClientImplCocoa.h:
        * UIProcess/Cocoa/PageClientImplCocoa.mm:
        (WebKit::PageClientImplCocoa::allocFileWrapperInstance const):
        (WebKit::PageClientImplCocoa::serializableFileWrapperClasses const):
        * UIProcess/Cocoa/WKSafeBrowsingWarning.h:
        * UIProcess/Cocoa/WKSafeBrowsingWarning.mm:
        (confirmMalwareSentinel):
        (visitUnsafeWebsiteSentinel):
        (colorForItem):
        (addLinkAndReplace):
        (-[WKSafeBrowsingExclamationPoint drawRect:]):
        (makeButton):
        (makeTitleLabel):
        (setBackground):
        (-[WKSafeBrowsingWarning initWithFrame:safeBrowsingResult:completionHandler:]):
        (-[WKSafeBrowsingWarning addContent]):
        (-[WKSafeBrowsingWarning showDetailsClicked]):
        (-[WKSafeBrowsingWarning layoutText]):
        (-[WKSafeBrowsingWarning textView:clickedOnLink:atIndex:]):
        (-[WKSafeBrowsingWarning layout]):
        (-[WKSafeBrowsingWarning layoutSubviews]):
        (-[WKSafeBrowsingWarning textView:shouldInteractWithURL:inRange:interaction:]):
        (-[WKSafeBrowsingWarning didMoveToWindow]):
        (-[WKSafeBrowsingWarning clickedOnLink:]):
        (-[WKSafeBrowsingTextView initWithAttributedString:forWarning:]):
        (-[WKSafeBrowsingTextView intrinsicContentSize]):
        (colorNamed): Deleted.
        (+[WKSafeBrowsingTextView viewWithAttributedString:linkTarget:]): Deleted.
        (+[WKSafeBrowsingTextView viewWithString:]): Deleted.
        (-[WKSafeBrowsingTextView clickedOnLink:atIndex:]): Deleted.
        * UIProcess/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::isViewWindowActive):
        (WebKit::PageClientImpl::isViewFocused):
        (WebKit::PageClientImpl::isViewVisible):
        (WebKit::PageClientImpl::isViewInWindow):
        (WebKit::PageClientImpl::decidePolicyForGeolocationPermissionRequest):
        (WebKit::PageClientImpl::enterAcceleratedCompositingMode):
        (WebKit::PageClientImpl::showSafeBrowsingWarning):
        (WebKit::PageClientImpl::clearSafeBrowsingWarning):
        (WebKit::PageClientImpl::mimeTypesWithCustomContentProviders):
        (WebKit::PageClientImpl::navigationGestureDidBegin):
        (WebKit::PageClientImpl::navigationGestureWillEnd):
        (WebKit::PageClientImpl::navigationGestureDidEnd):
        (WebKit::PageClientImpl::willRecordNavigationSnapshot):
        (WebKit::PageClientImpl::didRemoveNavigationGestureSnapshot):
        (WebKit::PageClientImpl::requestPasswordForQuickLookDocument):
        * UIProcess/mac/PageClientImplMac.mm:
        (WebKit::PageClientImpl::showShareSheet):
        (WebKit::PageClientImpl::navigationGestureDidBegin):
        (WebKit::PageClientImpl::navigationGestureWillEnd):
        (WebKit::PageClientImpl::navigationGestureDidEnd):
        (WebKit::PageClientImpl::willRecordNavigationSnapshot):
        (WebKit::PageClientImpl::didRemoveNavigationGestureSnapshot):

2018-11-12  Tim Horton  <timothy_horton@apple.com>

        Make it possible to edit images inline
        https://bugs.webkit.org/show_bug.cgi?id=191352
        <rdar://problem/30107985>

        Reviewed by Dean Jackson.

        * Platform/spi/ios/PencilKitSPI.h: Added.
        * Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:
        (WebKit::RemoteLayerBackingStore::drawInContext):
        * Shared/RemoteLayerTree/RemoteLayerTreeTransaction.h:
        * Shared/RemoteLayerTree/RemoteLayerTreeTransaction.mm:
        (WebKit::RemoteLayerTreeTransaction::LayerCreationProperties::LayerCreationProperties):
        (WebKit::RemoteLayerTreeTransaction::LayerCreationProperties::encode const):
        (WebKit::RemoteLayerTreeTransaction::LayerCreationProperties::decode):
        * WebProcess/WebPage/RemoteLayerTree/GraphicsLayerCARemote.cpp:
        (WebKit::GraphicsLayerCARemote::createPlatformCALayerForEmbeddedView):
        * WebProcess/WebPage/RemoteLayerTree/GraphicsLayerCARemote.h:
        * WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.cpp:
        (WebKit::PlatformCALayerRemote::createForEmbeddedView):
        (WebKit::PlatformCALayerRemote::PlatformCALayerRemote):
        (WebKit::PlatformCALayerRemote::embeddedViewID const):
        * WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.h:
        * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeContext.mm:
        (WebKit::RemoteLayerTreeContext::layerWasCreated):
        Propagate EmbeddedViewID through the PlatformCALayer constructor and
        through the layer creation parameters to the UI process.

        * Shared/WebPreferences.yaml:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _initializeWithConfiguration:]):
        * UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
        (-[WKWebViewConfiguration init]):
        (-[WKWebViewConfiguration copyWithZone:]):
        (-[WKWebViewConfiguration _setEditableImagesEnabled:]):
        (-[WKWebViewConfiguration _editableImagesEnabled]):
        * UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
        Add a preference to enable editable images.

        * UIProcess/RemoteLayerTree/RemoteLayerTreeHost.h:
        * UIProcess/RemoteLayerTree/RemoteLayerTreeHost.mm:
        (WebKit::RemoteLayerTreeHost::layerWillBeRemoved):
        (WebKit::RemoteLayerTreeHost::clearLayers):
        (WebKit::RemoteLayerTreeHost::createLayer):
        Keep track of "embedded views" in two maps: embeddedViewID->UIView,
        and layerID->embeddedViewID. Clean them up when layers go away.
        If a embedded view is reparented, currently it must be added to a new
        layer in the same commit as it is removed from the previous layer
        in order to persist the view's state (otherwise the view will be
        destroyed and recreated). This will be less of a problem after future
        patches introduce serialization of image data and whatnot.

        * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeHostIOS.mm:
        (WebKit::RemoteLayerTreeHost::createLayer):
        (WebKit::RemoteLayerTreeHost::createEmbeddedView):
        Move the various remote layer tree UIView subclasses out into a separate file.

        Add createEmbeddedView, which is used for LayerTypeEditableImageLayer,
        and creates a WKDrawingView and sticks it in the maps.

        * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeViews.h: Added.
        * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeViews.mm: Added.
        (-[UIView _web_recursiveFindDescendantInteractibleViewAtPoint:withEvent:]):
        (-[UIView _web_findDescendantViewAtPoint:withEvent:]):
        (-[WKCompositingView hitTest:withEvent:]):
        (-[WKCompositingView description]):
        (+[WKTransformView layerClass]):
        (+[WKSimpleBackdropView layerClass]):
        (+[WKShapeView layerClass]):
        (-[WKRemoteView initWithFrame:contextID:]):
        (+[WKRemoteView layerClass]):
        (-[WKBackdropView hitTest:withEvent:]):
        (-[WKBackdropView description]):
        (-[WKChildScrollView initWithFrame:]):
        Move various remote layer tree UIView subclasses here, to their own file.
        Make our UIView hit testing override test for views that conform to the
        protocol "WKNativelyInteractible", which switches to normal UIView hit
        testing. WKDrawingView will be the one such view.

        Add WKChildScrollView and pull the one thing we customize out into it,
        to make RemoteLayerTreeHost::createLayer less logic-ful.

        * UIProcess/ios/WKDrawingView.h: Added.
        * UIProcess/ios/WKDrawingView.mm: Added.
        (-[WKDrawingView init]):
        (-[WKDrawingView layoutSubviews]):
        Add a very simple WKDrawingView, which uses PKCanvasView to edit the image.

        * WebKit.xcodeproj/project.pbxproj:
        * SourcesCocoa.txt:
        Add the new files.

2018-11-12  Don Olmstead  <don.olmstead@sony.com>

        Shipped PNGs include bad profiles: iCCP: known incorrect sRGB profile
        https://bugs.webkit.org/show_bug.cgi?id=189230
        <rdar://problem/44050379>

        Reviewed by Joseph Pecoraro.

        Runs all png images through zopflipng. This results in a smaller file
        size and takes care of this issue as a byproduct.

        * Resources/ios/iOS.xcassets/StartPictureInPictureButton.imageset/StartPictureInPictureButton@1x.png:
        * Resources/ios/iOS.xcassets/StartPictureInPictureButton.imageset/StartPictureInPictureButton@2x.png:
        * Resources/ios/iOS.xcassets/StartPictureInPictureButton.imageset/StartPictureInPictureButton@3x.png:
        * Resources/ios/iOS.xcassets/StopPictureInPictureButton.imageset/StopPictureInPictureButton@1x.png:
        * Resources/ios/iOS.xcassets/StopPictureInPictureButton.imageset/StopPictureInPictureButton@2x.png:
        * Resources/ios/iOS.xcassets/StopPictureInPictureButton.imageset/StopPictureInPictureButton@3x.png:

2018-11-12  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] Screen capture should be an experimental feature on OSX only
        https://bugs.webkit.org/show_bug.cgi?id=191552
        <rdar://problem/45994142>

        Reviewed by Youenn Fablet.

        * Shared/WebPreferences.yaml: Make ScreenCaptureEnabled.condition ENABLE(MEDIA_STREAM) && PLATFORM(MAC).

2018-11-12  Takashi Komori  <Takashi.Komori@sony.com>

        Resurrect WebKitTestRunner for Windows port
        https://bugs.webkit.org/show_bug.cgi?id=189257

        Reviewed by Fujii Hironori.

        * PlatformWin.cmake:

2018-11-12  Antoine Quint  <graouts@apple.com>

        [Web Animations] Turn Web Animations experimental
        https://bugs.webkit.org/show_bug.cgi?id=191543

        Reviewed by Dean Jackson.

        * Shared/WebPreferences.yaml:

2018-11-11  Wenson Hsieh  <wenson_hsieh@apple.com>

        Implement a new edit command to change the enclosing list type
        https://bugs.webkit.org/show_bug.cgi?id=191487
        <rdar://problem/45955922>

        Reviewed by Ryosuke Niwa.

        * UIProcess/WebEditCommandProxy.cpp:
        (WebKit::WebEditCommandProxy::nameForEditAction):

        Add undo/redo edit action strings for ConvertToOrderedList and ConvertToUnorderedList.

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::increaseListLevel):
        (WebKit::WebPage::decreaseListLevel):
        (WebKit::WebPage::changeListType):

        Remove preflight checks for these list editing commands. These are not necessary because these commands fall
        back to being noops if these checks return false. This avoids an extraneous ancestor walk to determine the
        enclosing list element when changing list type.

2018-11-11  Daniel Bates  <dabates@apple.com>

        [iOS] Draw caps lock indicator in password fields
        https://bugs.webkit.org/show_bug.cgi?id=190565
        <rdar://problem/45262343>

        Reviewed by Dean Jackson.

        Notify the WebContent process with the current modifer state on window activation changes. Notify
        the WebContent process when hardware keyboard availability changes (e.g. a keyboard is attached).

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _initializeWithConfiguration:]): Register for hardware keyboard availability changed notifications.
        (-[WKWebView dealloc]): Unregister from hardware availability changed notifications.
        (hardwareKeyboardAvailabilityChangedCallback): Added.
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::updateCurrentModifierState): Compile this code when building for iOS.
        * UIProcess/WebPageProxy.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _handleKeyUIEvent:]): Update the current modifier state if this event is a hardware
        keyboard flags changed event.
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::hardwareKeyboardAvailabilityChanged): Added.

        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::hardwareKeyboardAvailabilityChanged):
        Added new message HardwareKeyboardAvailabilityChanged. Notify the focused HTML input element (if we have
        one) that the caps lock state may have changed when we receive message HardwareKeyboardAvailabilityChanged
        so that we toggle visibility of the caps lock indicator.

2018-11-11  Dan Bernstein  <mitz@apple.com>

        ProcessPoolConfiguration::copy() doesn’t copy m_customWebContentServiceBundleIdentifier
        https://bugs.webkit.org/show_bug.cgi?id=191514

        Reviewed by Geoffrey Garen.

        Test: WebKitCocoa/WKProcessPoolConfiguration.mm

        * UIProcess/API/APIProcessPoolConfiguration.cpp:
        (API::ProcessPoolConfiguration::copy): Copy m_customWebContentServiceBundleIdentifier.

2018-11-11  Benjamin Poulain  <benjamin@webkit.org>

        Fix a fixme: rename wtfObjcMsgSend to wtfObjCMsgSend
        https://bugs.webkit.org/show_bug.cgi?id=191492

        Reviewed by Alex Christensen.

        * Platform/mac/StringUtilities.mm:
        * UIProcess/ApplicationStateTracker.mm:
        * WebProcess/WebPage/mac/WKAccessibilityWebPageObjectBase.mm:
        * WebProcess/WebPage/mac/WKAccessibilityWebPageObjectMac.mm:

2018-11-10  Benjamin Poulain  <benjamin@webkit.org>

        Fix a fixme: rename wtfObjcMsgSend to wtfObjCMsgSend
        https://bugs.webkit.org/show_bug.cgi?id=191492

        Reviewed by Alex Christensen.

        * Platform/mac/StringUtilities.mm:
        * UIProcess/ApplicationStateTracker.mm:
        (WebKit::ApplicationStateTracker::applicationDidEnterBackground):
        (WebKit::ApplicationStateTracker::applicationDidFinishSnapshottingAfterEnteringBackground):
        (WebKit::ApplicationStateTracker::applicationWillEnterForeground):
        * WebProcess/WebPage/mac/WKAccessibilityWebPageObjectBase.mm:
        * WebProcess/WebPage/mac/WKAccessibilityWebPageObjectMac.mm:

2018-11-10  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r238065.

        Breaks internal builds.

        Reverted changeset:

        "Make it possible to edit images inline"
        https://bugs.webkit.org/show_bug.cgi?id=191352
        https://trac.webkit.org/changeset/238065

2018-11-10  Tim Horton  <timothy_horton@apple.com>

        Make it possible to edit images inline
        https://bugs.webkit.org/show_bug.cgi?id=191352
        <rdar://problem/30107985>

        Reviewed by Dean Jackson.

        * Platform/spi/ios/PencilKitSPI.h: Added.
        * Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:
        (WebKit::RemoteLayerBackingStore::drawInContext):
        * Shared/RemoteLayerTree/RemoteLayerTreeTransaction.h:
        * Shared/RemoteLayerTree/RemoteLayerTreeTransaction.mm:
        (WebKit::RemoteLayerTreeTransaction::LayerCreationProperties::LayerCreationProperties):
        (WebKit::RemoteLayerTreeTransaction::LayerCreationProperties::encode const):
        (WebKit::RemoteLayerTreeTransaction::LayerCreationProperties::decode):
        * WebProcess/WebPage/RemoteLayerTree/GraphicsLayerCARemote.cpp:
        (WebKit::GraphicsLayerCARemote::createPlatformCALayerForEmbeddedView):
        * WebProcess/WebPage/RemoteLayerTree/GraphicsLayerCARemote.h:
        * WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.cpp:
        (WebKit::PlatformCALayerRemote::createForEmbeddedView):
        (WebKit::PlatformCALayerRemote::PlatformCALayerRemote):
        (WebKit::PlatformCALayerRemote::embeddedViewID const):
        * WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.h:
        * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeContext.mm:
        (WebKit::RemoteLayerTreeContext::layerWasCreated):
        Propagate EmbeddedViewID through the PlatformCALayer constructor and
        through the layer creation parameters to the UI process.

        * Shared/WebPreferences.yaml:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _initializeWithConfiguration:]):
        * UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
        (-[WKWebViewConfiguration init]):
        (-[WKWebViewConfiguration copyWithZone:]):
        (-[WKWebViewConfiguration _setEditableImagesEnabled:]):
        (-[WKWebViewConfiguration _editableImagesEnabled]):
        * UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
        Add a preference to enable editable images.

        * UIProcess/RemoteLayerTree/RemoteLayerTreeHost.h:
        * UIProcess/RemoteLayerTree/RemoteLayerTreeHost.mm:
        (WebKit::RemoteLayerTreeHost::layerWillBeRemoved):
        (WebKit::RemoteLayerTreeHost::clearLayers):
        (WebKit::RemoteLayerTreeHost::createLayer):
        Keep track of "embedded views" in two maps: embeddedViewID->UIView,
        and layerID->embeddedViewID. Clean them up when layers go away.
        If a embedded view is reparented, currently it must be added to a new
        layer in the same commit as it is removed from the previous layer
        in order to persist the view's state (otherwise the view will be
        destroyed and recreated). This will be less of a problem after future
        patches introduce serialization of image data and whatnot.

        * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeHostIOS.mm:
        (WebKit::RemoteLayerTreeHost::createLayer):
        (WebKit::RemoteLayerTreeHost::createEmbeddedView):
        Move the various remote layer tree UIView subclasses out into a separate file.

        Add createEmbeddedView, which is used for LayerTypeEditableImageLayer,
        and creates a WKDrawingView and sticks it in the maps.

        * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeViews.h: Added.
        * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeViews.mm: Added.
        (-[UIView _web_recursiveFindDescendantInteractibleViewAtPoint:withEvent:]):
        (-[UIView _web_findDescendantViewAtPoint:withEvent:]):
        (-[WKCompositingView hitTest:withEvent:]):
        (-[WKCompositingView description]):
        (+[WKTransformView layerClass]):
        (+[WKSimpleBackdropView layerClass]):
        (+[WKShapeView layerClass]):
        (-[WKRemoteView initWithFrame:contextID:]):
        (+[WKRemoteView layerClass]):
        (-[WKBackdropView hitTest:withEvent:]):
        (-[WKBackdropView description]):
        (-[WKChildScrollView initWithFrame:]):
        Move various remote layer tree UIView subclasses here, to their own file.
        Make our UIView hit testing override test for views that conform to the
        protocol "WKNativelyInteractible", which switches to normal UIView hit
        testing. WKDrawingView will be the one such view.

        Add WKChildScrollView and pull the one thing we customize out into it,
        to make RemoteLayerTreeHost::createLayer less logic-ful.

        * UIProcess/ios/WKDrawingView.h: Added.
        * UIProcess/ios/WKDrawingView.mm: Added.
        (-[WKDrawingView init]):
        (-[WKDrawingView layoutSubviews]):
        Add a very simple WKDrawingView, which uses PKCanvasView to edit the image.

        * WebKit.xcodeproj/project.pbxproj:
        * SourcesCocoa.txt:
        Add the new files.

2018-11-09  Zalan Bujtas  <zalan@apple.com>

        [iOS] Issue initial paint soon after the visuallyNonEmpty milestone is fired.
        https://bugs.webkit.org/show_bug.cgi?id=191078
        <rdar://problem/45736178>

        Reviewed by Antti Koivisto.

        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::layerFlushThrottlingIsActive const):
        * WebProcess/WebCoreSupport/WebChromeClient.h:
        * WebProcess/WebPage/AcceleratedDrawingArea.cpp:
        (WebKit::AcceleratedDrawingArea::scheduleInitialDeferredPaint):
        * WebProcess/WebPage/AcceleratedDrawingArea.h:
        * WebProcess/WebPage/DrawingArea.h:
        (WebKit::DrawingArea::layerFlushThrottlingIsActive const):
        * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h:
        * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm:
        (WebKit::RemoteLayerTreeDrawingArea::RemoteLayerTreeDrawingArea):
        (WebKit::RemoteLayerTreeDrawingArea::setLayerTreeStateIsFrozen):
        (WebKit::RemoteLayerTreeDrawingArea::initialDeferredPaint):
        (WebKit::RemoteLayerTreeDrawingArea::scheduleInitialDeferredPaint):
        (WebKit::RemoteLayerTreeDrawingArea::scheduleCompositingLayerFlush):
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
        (WebKit::TiledCoreAnimationDrawingArea::scheduleInitialDeferredPaint):

2018-11-09  John Wilander  <wilander@apple.com>

        Add ability to configure document.cookie lifetime cap through user defaults
        https://bugs.webkit.org/show_bug.cgi?id=191480
        <rdar://problem/45240871>

        Reviewed by Chris Dumez.

        This change makes the capped lifetime in seconds configurable through
        user defaults.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::setAgeCapForClientSideCookies):
        (WebKit::NetworkProcess::setShouldCapLifetimeForClientSideCookies): Deleted.
            Renamed setAgeCapForClientSideCookies().
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:
        * UIProcess/Cocoa/ResourceLoadStatisticsMemoryStoreCocoa.mm:
        (WebKit::ResourceLoadStatisticsMemoryStore::registerUserDefaultsIfNeeded):
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::setAgeCapForClientSideCookies):
        (WebKit::NetworkProcessProxy::didSetAgeCapForClientSideCookies):
        (WebKit::NetworkProcessProxy::setShouldCapLifetimeForClientSideCookies): Deleted.
            Renamed setAgeCapForClientSideCookies().
        (WebKit::NetworkProcessProxy::didSetShouldCapLifetimeForClientSideCookies): Deleted.
            Renamed didSetAgeCapForClientSideCookies().
        * UIProcess/Network/NetworkProcessProxy.h:
        * UIProcess/Network/NetworkProcessProxy.messages.in:
        * UIProcess/ResourceLoadStatisticsMemoryStore.cpp:
        (WebKit::ResourceLoadStatisticsMemoryStore::setAgeCapForClientSideCookies):
        (WebKit::ResourceLoadStatisticsMemoryStore::updateClientSideCookiesAgeCap):
        (WebKit::ResourceLoadStatisticsMemoryStore::didCreateNetworkProcess):
            New function that handles all the things that need to be done when a network
            process has been created.
        * UIProcess/ResourceLoadStatisticsMemoryStore.h:
        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::didCreateNetworkProcess):
            Now just calls the corresponding function on its memory store where all the
            configuration parameters are available.
        * UIProcess/WebResourceLoadStatisticsStore.h:
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::setAgeCapForClientSideCookies):
        (WebKit::WebsiteDataStore::setShouldCapLifetimeForClientSideCookies): Deleted.
            Renamed setAgeCapForClientSideCookies().
        * UIProcess/WebsiteData/WebsiteDataStore.h:

2018-11-09  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r238047.

        Introduced layout test failures on iOS simulator.

        Reverted changeset:

        "[iOS] Draw caps lock indicator in password fields"
        https://bugs.webkit.org/show_bug.cgi?id=190565
        https://trac.webkit.org/changeset/238047

2018-11-09  Chris Dumez  <cdumez@apple.com>

        Suspended page persists even after back/forward list item is gone
        https://bugs.webkit.org/show_bug.cgi?id=191488
        <rdar://problem/45953006>

        Reviewed by Geoffrey Garen.

        Currently, the WebProcessPool owns the SuspendedPageProxy objects and makes sure we cap how
        many we can have. The WebBackForwardListItem merely has a WeakPtr to its associated
        SuspendedPageProxy. However, there is no point in having the WebProcessPool keeping a
        SuspendedPageProxy object alive if there is no longer any WebBackForwardListItem pointing
        to it.

        To address the issue, WebBackForwardListItem nows tells the WebProcessPool to destroy
        its SuspendedPageProxy when necessary. WebBackForwardList also takes care of nulling
        out the WebBackForwardListItem's SuspendedPageProxy after the item has been removed
        from the list (in case somebody keeps the item alive).

        * Shared/WebBackForwardListItem.cpp:
        (WebKit::WebBackForwardListItem::~WebBackForwardListItem):
        (WebKit::WebBackForwardListItem::setSuspendedPage):
        (WebKit::WebBackForwardListItem::suspendedPageIsNoLongerNeeded):
        * Shared/WebBackForwardListItem.h:
        * UIProcess/SuspendedPageProxy.cpp:
        (WebKit::SuspendedPageProxy::SuspendedPageProxy):
        * UIProcess/WebBackForwardList.cpp:
        (WebKit::WebBackForwardList::didRemoveItem):
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::removeSuspendedPageProxy):
        * UIProcess/WebProcessPool.h:

2018-11-09  Wenson Hsieh  <wenson_hsieh@apple.com>

        [Cocoa] Implement SPI on WKWebView to increase and decrease list levels
        https://bugs.webkit.org/show_bug.cgi?id=191471
        <rdar://problem/45952472>

        Reviewed by Tim Horton.

        Implement these method stubs by calling into Editor.

        Test: WKWebViewEditActions.ModifyListLevel

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::increaseListLevel):
        (WebKit::WebPage::decreaseListLevel):
        (WebKit::WebPage::changeListType):

2018-11-09  Keith Rollin  <krollin@apple.com>

        Unreviewed build fix after https://bugs.webkit.org/show_bug.cgi?id=191324

        Remove the use of .xcfilelists until their side-effects are better
        understood.

        * WebKit.xcodeproj/project.pbxproj:

2018-11-09  Basuke Suzuki  <basuke.suzuki@sony.com>

        [Curl][WebKit] Implement Proxy configuration API.
        https://bugs.webkit.org/show_bug.cgi?id=189053

        Reviewed by Youenn Fablet.

        Added proxy configuration API to WebsiteDataStore. Three API were added in WKWebsiteDataStoreRefCurl.h:
        - WKWebsiteDataStoreEnableDefaultNetworkProxySettings(WKWebsiteDataStoreRef)
        - WKWebsiteDataStoreEnableCustomNetworkProxySettings(WKWebsiteDataStoreRef, WKURLRef, WKStringRef ignoreHosts)
        - WKWebsiteDataStoreDisableNetworkProxySettings(WKWebsiteDataStoreRef)

        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:
        * NetworkProcess/NetworkSessionCreationParameters.h:
        (WebKit::NetworkSessionCreationParameters::encode const):
        (WebKit::NetworkSessionCreationParameters::decode):
        * NetworkProcess/curl/NetworkProcessCurl.cpp:
        (WebKit::NetworkProcess::setNetworkProxySettings):
        * NetworkProcess/curl/NetworkSessionCurl.cpp:
        (WebKit::NetworkSessionCurl::NetworkSessionCurl):
        * NetworkProcess/curl/RemoteNetworkingContextCurl.cpp:
        (WebKit::RemoteNetworkingContext::ensureWebsiteDataStoreSession):
        * PlatformWin.cmake:
        * Shared/WebCoreArgumentCoders.h:
        * Shared/curl/WebCoreArgumentCodersCurl.cpp:
        (IPC::ArgumentCoder<CurlProxySettings>::encode):
        (IPC::ArgumentCoder<CurlProxySettings>::decode):
        * UIProcess/API/C/curl/WKWebsiteDataStoreRefCurl.cpp:
          Copied from Source/WebKit/NetworkProcess/curl/NetworkSessionCurl.cpp.
        (WKWebsiteDataStoreEnableDefaultNetworkProxySettings):
        (WKWebsiteDataStoreEnableCustomNetworkProxySettings):
        (WKWebsiteDataStoreDisableNetworkProxySettings):
        * UIProcess/API/C/curl/WKWebsiteDataStoreRefCurl.h:
          Copied from Source/WebKit/NetworkProcess/curl/NetworkSessionCurl.cpp.
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::parameters):
        * UIProcess/WebsiteData/WebsiteDataStore.h:
        (WebKit::WebsiteDataStore::networkProxySettings const):
        * UIProcess/WebsiteData/curl/WebsiteDataStoreCurl.cpp:
          Copied from Source/WebKit/NetworkProcess/curl/NetworkSessionCurl.cpp.
        (WebKit::WebsiteDataStore::platformSetParameters):
        (WebKit::WebsiteDataStore::setNetworkProxySettings):

2018-11-09  Wenson Hsieh  <wenson_hsieh@apple.com>

        [Cocoa] Introduce WKWebView SPI to insert nested ordered and unordered lists
        https://bugs.webkit.org/show_bug.cgi?id=191410
        <rdar://problem/45898610>

        Reviewed by Dean Jackson.

        Prefixes a few iOS-only SPI methods declared on WKWebView in r236867 with underscores, and also exposes some
        more cross-platform Cocoa editing SPI. Once the unprefixed SPI methods are no longer used by internal clients,
        these will need to be removed (see followup bug: webkit.org/b/191450). See below for more details.

        Covered by new and existing API tests in WKWebViewEditActions.

        * UIProcess/API/Cocoa/WKWebView.mm:

        Hoist the definition (and undefinition) of `FORWARD_ACTION_TO_WKCONTENTVIEW` to encompass both the WKWebView
        implementation and the WKWebView (WKPrivate) implementation. This allows us to use this macro when implementing
        SPI methods in the WKPrivate category, as well as methods that are part of the main WKWebView implementation.

        (-[WKWebView canPerformAction:withSender:]):
        (-[WKWebView targetForAction:withSender:]):

        Add forwarding for the new editing commands in -canPerformAction: and -targetForAction:.

        (-[WKWebView _toggleStrikeThrough:]):
        (-[WKWebView _increaseListLevel:]):
        (-[WKWebView _decreaseListLevel:]):
        (-[WKWebView _changeListType:]):
        (-[WKWebView _setFont:sender:]):
        (-[WKWebView _setFontSize:sender:]):
        (-[WKWebView _setTextColor:sender:]):

        Add definitions for the new editing methods on WKWebView, using macros (`WEBCORE_PRIVATE_COMMAND` on macOS and
        `FORWARD_ACTION_TO_WKCONTENTVIEW` on iOS) to help reduce the code duplication.

        (-[WKWebView _pasteAsQuotation:]): Deleted.

        Remove this method definition, which is now replaced by macros on iOS and macOS.

        * UIProcess/API/Cocoa/WKWebViewPrivate.h:

        Introduce the new SPI to WKWebView (WKPrivate), and add FIXMEs to remove old, unprefixed variants of the SPI.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::increaseListLevel):
        (WebKit::WebPageProxy::decreaseListLevel):
        (WebKit::WebPageProxy::changeListType):

        Add plumbing for these list editing commands.

        * UIProcess/WebPageProxy.h:
        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _increaseListLevelForWebView:]):
        (-[WKContentView _decreaseListLevelForWebView:]):
        (-[WKContentView _changeListTypeForWebView:]):
        (-[WKContentView _toggleStrikeThroughForWebView:]):
        (-[WKContentView _setFontForWebView:sender:]):
        (-[WKContentView _setFontSizeForWebView:sender:]):
        (-[WKContentView _setTextColorForWebView:sender:]):
        (-[WKContentView toggleStrikeThroughForWebView:]):
        (-[WKContentView setFontForWebView:sender:]):
        (-[WKContentView setFontSizeForWebView:sender:]):
        (-[WKContentView setTextColorForWebView:sender:]):
        (-[WKContentView canPerformActionForWebView:withSender:]):

        Check for the new action selectors here, and additionally add validation for `_pasteAsQuotation:`. Let the
        unprefixed versions of these methods simply call the prefixed versions (these method implementations will be
        removed in a followup once doing so would not affect any clients of WebKit).

        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::increaseListLevel):
        (WebKit::WebPage::decreaseListLevel):
        (WebKit::WebPage::changeListType):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:

        Add stubs for several list editing commands that are yet to be hooked up to WebCore. These will be implemented
        in a future patch.

2018-11-09  Antti Koivisto  <antti@apple.com>

        Use OptionSet for layout milestones
        https://bugs.webkit.org/show_bug.cgi?id=191470

        Reviewed by Dean Jackson.

        * Shared/API/Cocoa/_WKRenderingProgressEventsInternal.h:
        (renderingProgressEvents):
        * Shared/API/c/WKSharedAPICast.h:
        (WebKit::toWKLayoutMilestones):
        (WebKit::toLayoutMilestones):
        * Shared/RemoteLayerTree/RemoteLayerTreeTransaction.h:
        (WebKit::RemoteLayerTreeTransaction::newlyReachedLayoutMilestones const):
        (WebKit::RemoteLayerTreeTransaction::setNewlyReachedLayoutMilestones):
        * Shared/WebPageCreationParameters.cpp:
        (WebKit::WebPageCreationParameters::encode const):
        (WebKit::WebPageCreationParameters::decode):
        * Shared/WebPageCreationParameters.h:
        * UIProcess/API/APILoaderClient.h:
        (API::LoaderClient::didReachLayoutMilestone):
        * UIProcess/API/APINavigationClient.h:
        (API::NavigationClient::renderingProgressDidChange):
        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetPageLoaderClient):
        (WKPageSetPageNavigationClient):
        * UIProcess/API/C/WKPageRenderingProgressEventsInternal.h:
        (pageRenderingProgressEvents):
        * UIProcess/API/Cocoa/WKWebView.mm:
        (layoutMilestones):
        * UIProcess/Cocoa/NavigationState.h:
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::NavigationClient::renderingProgressDidChange):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::listenForLayoutMilestones):
        (WebKit::WebPageProxy::didLayoutForCustomContentProvider):
        (WebKit::WebPageProxy::didReachLayoutMilestone):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::didCommitLayerTree):
        * WebProcess/InjectedBundle/API/APIInjectedBundlePageLoaderClient.h:
        (API::InjectedBundle::PageLoaderClient::didReachLayoutMilestone):
        (API::InjectedBundle::PageLoaderClient::layoutMilestones const):
        * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.cpp:
        (WebKit::InjectedBundlePageLoaderClient::didReachLayoutMilestone):
        (WebKit::InjectedBundlePageLoaderClient::layoutMilestones const):
        * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.h:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDidReachLayoutMilestone):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
        * WebProcess/WebPage/DrawingArea.h:
        (WebKit::DrawingArea::dispatchDidReachLayoutMilestone):
        * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h:
        * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm:
        (WebKit::RemoteLayerTreeDrawingArea::flushLayers):
        (WebKit::RemoteLayerTreeDrawingArea::dispatchDidReachLayoutMilestone):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::m_shouldAttachDrawingAreaOnPageTransition):
        (WebKit::WebPage::listenForLayoutMilestones):
        (WebKit::WebPage::dispatchDidReachLayoutMilestone):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
        (WebKit::TiledCoreAnimationDrawingArea::sendPendingNewlyReachedLayoutMilestones):
        (WebKit::TiledCoreAnimationDrawingArea::dispatchDidReachLayoutMilestone):

2018-11-09  Daniel Bates  <dabates@apple.com>

        [iOS] Draw caps lock indicator in password fields
        https://bugs.webkit.org/show_bug.cgi?id=190565
        <rdar://problem/45262343>

        Reviewed by Dean Jackson.

        Notify the WebContent process with the current modifer state on window activation changes. Notify
        the WebContent process when hardware keyboard availability changes (e.g. a keyboard is attached).

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _initializeWithConfiguration:]): Register for hardware keyboard availability changed notifications.
        (-[WKWebView dealloc]): Unregister from hardware availability changed notifications.
        (hardwareKeyboardAvailabilityChangedCallback): Added.
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::updateCurrentModifierState): Compile this code when building for iOS.
        * UIProcess/WebPageProxy.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _handleKeyUIEvent:]): Update the current modifier state if this event is a hardware
        keyboard flags changed event.
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::hardwareKeyboardAvailabilityChanged): Added.

        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::hardwareKeyboardAvailabilityChanged):
        Added new message HardwareKeyboardAvailabilityChanged. Notify the focused HTML input element (if we have
        one) that the caps lock state may have changed when we receive message HardwareKeyboardAvailabilityChanged
        so that we toggle visibility of the caps lock indicator.

2018-11-09  Tim Horton  <timothy_horton@apple.com>

        Make use of _UIRemoteView instead of CALayerHost if possible for WKRemoteView
        https://bugs.webkit.org/show_bug.cgi?id=191449
        <rdar://problem/45884977>

        Reviewed by Eric Carlson.

        UIRemoteView has some nice process assertion management that it would
        be nice to not duplicate. So, we can just use it instead of CALayerHost!

        * Platform/spi/ios/UIKitSPI.h:
        * UIProcess/DrawingAreaProxy.h:
        (WebKit::DrawingAreaProxy::page const):
        * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeHostIOS.mm:
        (-[WKUIRemoteView hitTest:withEvent:]):
        (-[WKUIRemoteView description]):
        (createRemoteView):
        (WebKit::RemoteLayerTreeHost::createLayer):

2018-11-09  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] Make screen capture an experimental feature
        https://bugs.webkit.org/show_bug.cgi?id=191472
        <rdar://problem/45946499>

        Reviewed by Jer Noble.

        * Shared/WebPreferences.yaml: Make ScreenCaptureEnabled an experimental feature.

2018-11-09  Daniel Bates  <dabates@apple.com>

        [iOS] Pressing forward delete key in text field does nothing and we should not invoke an editor
        action when forward delete is pressed outside a text field
        https://bugs.webkit.org/show_bug.cgi?id=190566
        <rdar://problem/45262367>

        Reviewed by Wenson Hsieh.

        Override -_deleteForwardAndNotify to perform a forward deletion and remove the dead code that
        expected UIKit to send us a character string with 0xF728 for the forward delete key. UIKit
        ceased doing this many years ago. We may revist this decision once <rdar://problem/45772078>
        is fixed.

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _interpretKeyEvent:isCharEvent:]):
        (-[WKContentView _deleteForwardAndNotify:]):

2018-11-08  Wenson Hsieh  <wenson_hsieh@apple.com>

        Unreviewed, try to fix the 32-bit macOS build

        * WebProcess/Plugins/PDF/PDFPlugin.mm:
        (WebKit::PDFPlugin::showDefinitionForAttributedString):

2018-11-08  Said Abou-Hallawa  <sabouhallawa@apple.com>

        Add an SPI to allow WebView clients to add additional supported image formats
        https://bugs.webkit.org/show_bug.cgi?id=190454

        Reviewed by Simon Fraser.

        * Platform/mac/StringUtilities.h:
        * Platform/mac/StringUtilities.mm:
        (WebKit::webCoreStringVectorFromNSStringArray):
        A helper function which converts an NSArray of NSStrings to a Vector of
        WTFString.

        * Shared/WebPageCreationParameters.cpp:
        (WebKit::WebPageCreationParameters::encode const):
        (WebKit::WebPageCreationParameters::decode):
        * Shared/WebPageCreationParameters.h:
        Handle encoding and decoding the AdditionalSupportedImageTypes which will
        allow transferring it from the UI process to the web process.

        * UIProcess/API/APIPageConfiguration.h:
        (API::PageConfiguration::additionalSupportedImageTypes const):
        (API::PageConfiguration::setAdditionalSupportedImageTypes):
        Store the AdditionalSupportedImageTypes in the APIPageConfiguration
        which is used when creating the WebPageProxy in the UIPorcess.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _initializeWithConfiguration:]):
        * UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
        (-[WKWebViewConfiguration copyWithZone:]):
        (-[WKWebViewConfiguration _additionalSupportedImageTypes]):
        (-[WKWebViewConfiguration _setAdditionalSupportedImageTypes:]):
        * UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
        Setter/Getter for the AdditionalSupportedImageTypes.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::creationParameters):
        Copy the AdditionalSupportedImageTypes from APIPageConfiguration to 
        WebPageCreationParameters.

        * UIProcess/WebPageProxy.h:
        Delete unimplemented function.

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::m_shouldAttachDrawingAreaOnPageTransition):
        Copy the AdditionalSupportedImageTypes from WebPageCreationParameters to
        WebCore.

2018-11-08  Megan Gardner  <megan_gardner@apple.com>

        Adopt Reveal Framework to replace Lookup
        https://bugs.webkit.org/show_bug.cgi?id=191097
        <rdar://problem/45924508>

        Reviewed by Tim Horton.

        Pass in what it needed to clear the textIndicators. This is better than
        the current notification structure.

        * UIProcess/Cocoa/WebViewImpl.mm:
        (-[WKWindowVisibilityObserver dealloc]):
        (-[WKWindowVisibilityObserver startObservingLookupDismissalIfNeeded]):
        * UIProcess/mac/PageClientImplMac.mm:
        (WebKit::PageClientImpl::didPerformDictionaryLookup):
        * UIProcess/mac/WKImmediateActionController.mm:
        (-[WKImmediateActionController _animationControllerForText]):
        * WebProcess/Plugins/PDF/PDFPlugin.mm:
        (WebKit::PDFPlugin::showDefinitionForAttributedString):

        Generate and pass in the text indicator information, as this is needed now.

        * WebProcess/WebPage/mac/WebPageMac.mm:
        (WebKit::WebPage::dictionaryPopupInfoForSelectionInPDFPlugin):

2018-11-08  Keith Rollin  <krollin@apple.com>

        Create .xcfilelist files
        https://bugs.webkit.org/show_bug.cgi?id=191324
        <rdar://problem/45852819>

        Reviewed by Alex Christensen.

        As part of preparing for enabling XCBuild, create and use .xcfilelist
        files. These files are using during Run Script build phases in an
        Xcode project. If a Run Script build phase produces new files that are
        used later as inputs to subsequent build phases, XCBuild needs to know
        about these files. These files can be either specified in an "output
        files" section of the Run Script phase editor, or in .xcfilelist files
        that are associated with the Run Script build phase.

        This patch takes the second approach. It consists of three sets of changes:

        - Modify the DerivedSources.make files to have a
          'print_all_generated_files" target that produces a list of the files
          they create.

        - Create a shell script that produces .xcfilelist files from the
          output of the previous step, as well as for the files created in the
          Generate Unified Sources build steps.

        - Add the new .xcfilelist files to the associated projects.

        Note that, with these changes, the Xcode workspace and projects can no
        longer be fully loaded into Xcode 9. Xcode will attempt to load the
        projects that have .xcfilelist files associated with them, but will
        fail and display a placeholder for those projects instead. It's
        expected that all developers are using Xcode 10 by now and that not
        being able to load into Xcode 9 is not a practical issue. Keep in mind
        that this is strictly an IDE issue, and that the projects can still be
        built with `xcodebuild`.

        Also note that the shell script that creates the .xcfilelist files can
        also be used to verify that the set of files that's currently checked
        in is up-to-date. This checking can be used as part of a check-in hook
        or part of check-webkit-style to sooner catch cases where the
        .xcfilelist files need to be regenerated.

        * DerivedSources.make:
        * DerivedSources.xcfilelist: Added.
        * UnifiedSources.xcfilelist: Added.
        * WebKit.xcodeproj/project.pbxproj:

2018-11-08  Timothy Hatcher  <timothy@apple.com>

        Add experimental support for a `supported-color-schemes` CSS property.
        https://bugs.webkit.org/show_bug.cgi?id=191319
        rdar://problem/45852261

        Reviewed by Dean Jackson.

        * WebProcess/InjectedBundle/DOM/InjectedBundleRangeHandle.cpp:
        (WebKit::InjectedBundleRangeHandle::renderedImage):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::drawRect):

2018-11-08  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] Use DeviceIdHashSaltStorage to generate device ID hash salt
        https://bugs.webkit.org/show_bug.cgi?id=190825
        <rdar://problem/45486085>

        Reviewed by Youenn Fablet.

        * UIProcess/API/C/WKUserMediaPermissionCheck.cpp:
        (WKUserMediaPermissionCheckSetUserMediaAccessInfo):
        * UIProcess/API/glib/WebKitDeviceInfoPermissionRequest.cpp:
        (webkitDeviceInfoPermissionRequestAllow):
        (webkitDeviceInfoPermissionRequestDeny):
        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::UIDelegate::UIClient::checkUserMediaPermissionForOrigin):
        * UIProcess/DeviceIdHashSaltStorage.cpp:
        (WebKit::DeviceIdHashSaltStorage::regenerateDeviceIdHashSaltForOrigin):
        (WebKit::DeviceIdHashSaltStorage::deleteDeviceIdHashSaltForOrigin):
        * UIProcess/DeviceIdHashSaltStorage.h:
        * UIProcess/UserMediaPermissionCheckProxy.cpp:
        (WebKit::UserMediaPermissionCheckProxy::setUserMediaAccessInfo):
        * UIProcess/UserMediaPermissionCheckProxy.h:
        * UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
        (WebKit::UserMediaPermissionRequestManagerProxy::createPermissionRequest):
        (WebKit::UserMediaPermissionRequestManagerProxy::userMediaAccessWasGranted):
        (WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame):
        (WebKit::UserMediaPermissionRequestManagerProxy::getUserMediaPermissionInfo):
        (WebKit::UserMediaPermissionRequestManagerProxy::updateDeviceIDHashSalt):
        (WebKit::UserMediaPermissionRequestManagerProxy::enumerateMediaDevicesForFrame):
        * UIProcess/UserMediaPermissionRequestManagerProxy.h:
        * UIProcess/UserMediaPermissionRequestProxy.cpp:
        (WebKit::UserMediaPermissionRequestProxy::UserMediaPermissionRequestProxy):
        * UIProcess/UserMediaPermissionRequestProxy.h:
        (WebKit::UserMediaPermissionRequestProxy::create):
        (WebKit::UserMediaPermissionRequestProxy::deviceIdentifierHashSalt const): Deleted.

2018-11-08  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Crash when running with sandbox enabled
        https://bugs.webkit.org/show_bug.cgi?id=191353

        Reviewed by Michael Catanzaro.

        g_key_file_set_string_list() expects a null-terminated array as parameter.

        * UIProcess/Launcher/glib/BubblewrapLauncher.cpp:
        (WebKit::createFlatpakInfo): Append nullptr to sharedPermissions array.

2018-11-07  Chris Dumez  <cdumez@apple.com>

        Unreviewed, fix iOS build with recent SDKs.

        * UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm:
        (-[WKFullScreenWindowController _EVOrganizationName]):

2018-11-07  John Wilander  <wilander@apple.com>

        Resource Load Statistics: Enable cap on partitioned cache max age
        https://bugs.webkit.org/show_bug.cgi?id=191395
        <rdar://problem/45885977>

        Reviewed by Chris Dumez.

        This change does not bump the network cache revision number.
        It's not needed since it was done just a week ago.

        * UIProcess/ResourceLoadStatisticsMemoryStore.cpp:
        (WebKit::ResourceLoadStatisticsMemoryStore::setCacheMaxAgeCap):
        (WebKit::ResourceLoadStatisticsMemoryStore::updateCacheMaxAgeCap):
        * UIProcess/ResourceLoadStatisticsMemoryStore.h:
        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::didCreateNetworkProcess):

2018-11-07  Daniel Bates  <dabates@apple.com>

        [iOS] Support deleting to the start of the line and to the end of the line
        https://bugs.webkit.org/show_bug.cgi?id=191389
        <rdar://problem/45883972>

        Reviewed by Wenson Hsieh.

        Add support for the key commands Command + Delete and Control + K to delete to the start
        of the line and to delete to the end of the line, respectively.

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _deleteToStartOfLine]): Added.
        (-[WKContentView _deleteToEndOfLine]): Added.

2018-11-07  Daniel Bates  <dabates@apple.com>

        [iOS] Option + Delete should delete previous word
        https://bugs.webkit.org/show_bug.cgi?id=191381
        <rdar://problem/23681351>

        Reviewed by Wenson Hsieh.

        Implement support for pressing Option + Delete to delete the previous word. This makes text editing
        in WebKit more closely match the platform conventions.

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _deleteByWord]):

2018-11-07  Daniel Bates  <dabates@apple.com>

        Override +[UIKeyboard isInHardwareKeyboardMode] in WebKitTestRunner and DumpRenderTree
        https://bugs.webkit.org/show_bug.cgi?id=190141

        Reviewed by Darin Adler.

        Directly use +[UIKeyboard isInHardwareKeyboardMode]. We will override this class method
        in DumpRenderTree and WebKitTestRunner to always return NO so as to make test runs
        deterministic regardless of whether a hardware keyboard is attached.

        * Shared/NativeWebKeyboardEvent.h:
        * Shared/ios/NativeWebKeyboardEventIOS.mm:
        (WebKit::isInHardwareKeyboardMode): Deleted.
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _startAssistingNode:userIsInteracting:blurPreviousNode:changingActivityState:userObject:]):
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::platformEditorState const):

2018-11-07  Zamiul Haque  <zhaque@apple.com>

        Force a gregorian calendar to show for credit card expiration date inputs
        (autocomplete='cc-exp'*) regardless of default system settings.
        https://bugs.webkit.org/show_bug.cgi?id=191096
        rdar://problem/42640256

        Reviewed by Tim Horton.

        Added some plumbing code to expose the calendar identifier of the calendar used by a
        presented date picker. Added shouldPresentGregorianCalendar:, to be used for
        determining what property values a date input control must present a Gregorian
        calendar for.

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView formInputPeripheral]):
        * UIProcess/ios/forms/WKFormInputControl.mm:

2018-11-07  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Fix GTK/WPE build when memfd is not available after r237922.

        * Platform/unix/SharedMemoryUnix.cpp:
        (WebKit::createSharedMemory):

2018-11-07  Carlos Garcia Campos  <cgarcia@igalia.com>

        [Linux] Use memfd_create when available in SharedMemory implementation
        https://bugs.webkit.org/show_bug.cgi?id=189741

        Reviewed by Michael Catanzaro.

        If memfd is available, use it instead of shm_open.

        * Platform/unix/SharedMemoryUnix.cpp:
        (WebKit::createSharedMemory): Helper to create the shared memory, trying first with memfd and falling back to
        shm if it's not available.
        (WebKit::SharedMemory::create): Use createSharedMemory() helper.

2018-11-06  Justin Fan  <justin_fan@apple.com>

        [WebGPU] Experimental prototype for WebGPURenderPipeline and WebGPUSwapChain
        https://bugs.webkit.org/show_bug.cgi?id=191291

        Reviewed by Myles Maxfield.

        Properly disable WEBGPU on all non-Metal platforms for now.

        * Configurations/FeatureDefines.xcconfig:

2018-11-06  Youenn Fablet  <youenn@apple.com>

        Make mDNS ICE Candidate an experimental flag again
        https://bugs.webkit.org/show_bug.cgi?id=191262

        Reviewed by Dean Jackson.

        * Shared/WebPreferences.yaml:
        * UIProcess/API/C/WKPreferences.cpp:
        (WKPreferencesSetWebRTCMDNSICECandidatesEnabled):
        (WKPreferencesGetWebRTCMDNSICECandidatesEnabled):
        * WebProcess/InjectedBundle/InjectedBundle.cpp:
        (WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner):

2018-11-06  Suresh Koppisetty  <skoppisetty@apple.com>

        Don’t use the main queue to create an XPC connection.
        https://bugs.webkit.org/show_bug.cgi?id=191160
        <rdar://problem/45736262>

        Reviewed by Geoffrey Garen.

        Don't use the main queue to create an XPC connection. xpc_connection_set_bootstrap does
        dispatch_mach_send_barrier_f on this queue which delays the sending of the subsequent
        bootstrap message (sent to launchd for launching a new target process) when the main queue is busy.

        Now that the XPC connection runs on the default concurrent queue, errorHandler could be invoked
        by any thread. The job of errorHandler is to dispatch errorHandlerImpl to the main thread,
        where errorHandlerImpl is responsible for the actual handling of errors if any.

        * UIProcess/Launcher/mac/ProcessLauncherMac.mm:
        (WebKit::ProcessLauncher::launchProcess):

2018-11-06  Brian Burg  <bburg@apple.com>

        Add missing iOS availability macro to _WKAutomationSessionConfiguration
        https://bugs.webkit.org/show_bug.cgi?id=191320

        Reviewed by Tim Horton.

        * UIProcess/API/Cocoa/_WKAutomationSessionConfiguration.h:

2018-11-06  John Wilander  <wilander@apple.com>

        Resource Load Statistics: Remove cap on partitioned cache max age if it matches a network reload (redirect-only)
        https://bugs.webkit.org/show_bug.cgi?id=189760
        <rdar://problem/44612242>

        Reviewed by Youenn Fablet and Antti Koivisto.

        When a redirect cache entry for a prevalent resource reaches its max
        age cap, it is loaded again from the network and the network response
        is compared with what's in the cache. If it's a match, the cache entry
        is fully accepted. If not, a new capped cache entry is created.

        This feature is still off by default.

        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::canUseCachedRedirect const):
            Now checks the new member m_cacheEntryForMaxAgeCapValidation.
        (WebKit::NetworkResourceLoader::retrieveCacheEntry):
            New case handled for entry->hasReachedPrevalentResourceAgeCap().
        (WebKit::NetworkResourceLoader::validateCacheEntryForMaxAgeCapValidation):
            This is where the new logic compares the incoming redirect with the
            cached one. If they match, an uncapped entry is allowed to be stored.
            If they don't match, a new capped entry will be stored.
        (WebKit::NetworkResourceLoader::willSendRedirectedRequest):
            Now calls the new
            NetworkResourceLoader::validateCacheEntryForMaxAgeCapValidation()
            function.
        * NetworkProcess/NetworkResourceLoader.h:
            Added the m_cacheEntryForMaxAgeCapValidation member.
        * NetworkProcess/cache/NetworkCache.cpp:
        (WebKit::NetworkCache::makeUseDecision):
            Restored to previous behavior which means
            UseDecision::NoDueToPrevalentResourceAgeCap was removed.
        (WebKit::NetworkCache::Cache::retrieve):
            Restored to previous behavior.
        (WebKit::NetworkCache::Cache::storeRedirect):
            Now takes the optional maxAgeCap and caps the entry's max age if it's set.
        (WebKit::NetworkCache::hasReachedPrevalentResourceAgeCap): Deleted.
        * NetworkProcess/cache/NetworkCache.h:
        * NetworkProcess/cache/NetworkCacheEntry.cpp:
        (WebKit::NetworkCache::Entry::encodeAsStorageRecord const):
            Now encodes m_maxAgeCap.
        (WebKit::NetworkCache::Entry::decodeStorageRecord):
            Now decodes m_maxAgeCap.
        (WebKit::NetworkCache::Entry::hasReachedPrevalentResourceAgeCap const):
            Added.
        (WebKit::NetworkCache::Entry::capMaxAge):
            Added.
        * NetworkProcess/cache/NetworkCacheEntry.h:
            Added the optional m_maxAgeCap.
        * NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp:
        (WebKit::NetworkCache::SpeculativeLoad::willSendRedirectedRequest):
            Now gets the optional max age cap from the NetworkStorageSession and sends it
            to Cache::storeRedirect().
        * NetworkProcess/cache/NetworkCacheStatistics.cpp:
        (WebKit::NetworkCache::cachedEntryReuseFailureToDiagnosticKey):
            Removed handling of UseDecision::NoDueToPrevalentResourceAgeCap.

2018-11-06  Per Arne Vollan  <pvollan@apple.com>

        REGRESSION (r230523): Caps lock indicator not shown in password field
        https://bugs.webkit.org/show_bug.cgi?id=190056

        Reviewed by Ryosuke Niwa.

        Update cached modifier state in the WebProcess when WebKit::WebPage::keyEvent is called, and
        when the window becomes active.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::dispatchActivityStateChange):
        (WebKit::WebPageProxy::updateCurrentModifierState):
        * UIProcess/WebPageProxy.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::keyEvent):
        (WebKit::WebPage::updateCurrentModifierState):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:

2018-11-06  Alex Christensen  <achristensen@webkit.org>

        Add ObjC SPI equivalent of WKContextHandlesSafeBrowsing
        https://bugs.webkit.org/show_bug.cgi?id=191329

        Reviewed by Tim Horton.

        Like WKContextHandlesSafeBrowsing, this is so I can make one change in WebKit and enable safe browsing
        in WKWebView and disable it in Safari at the same time without broken revisions between landing two changes
        in two repositories.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (+[WKWebView handlesSafeBrowsing]):
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:

2018-11-06  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] User should not be prompted again after denying getDisplayMedia request
        https://bugs.webkit.org/show_bug.cgi?id=191227
        <rdar://problem/45784512>

        Reviewed by Youenn Fablet.

        * UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
        (WebKit::UserMediaPermissionRequestManagerProxy::userMediaAccessWasDenied):
        (WebKit::UserMediaPermissionRequestManagerProxy::wasRequestDenied):
        (WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame):
        * UIProcess/UserMediaPermissionRequestManagerProxy.h:

2018-11-06  Fujii Hironori  <Hironori.Fujii@sony.com>

        [MediaStream] User should not be prompted again after denying getDisplayMedia request
        https://bugs.webkit.org/show_bug.cgi?id=191227
        <rdar://problem/45784512>

        Unreviewed build fix of ports not ENABLE(MEDIA_STREAM).

        * UIProcess/UserMediaPermissionRequestManagerProxy.cpp: Define getRequestAction only if ENABLE(MEDIA_STREAM).
        * UIProcess/UserMediaPermissionRequestManagerProxy.h: Ditto.

2018-11-03  Alex Christensen  <achristensen@webkit.org>

        [Mac] Implement safe browsing in WebKit
        https://bugs.webkit.org/show_bug.cgi?id=188871

        Reviewed by Tim Horton.

        * Platform/spi/Cocoa/SafeBrowsingSPI.h:
        * Resources/SafeBrowsing.xcassets: Added.
        * Resources/SafeBrowsing.xcassets/Contents.json: Added.
        * Resources/SafeBrowsing.xcassets/WKSafeBrowsingWarningBackground.colorset: Added.
        * Resources/SafeBrowsing.xcassets/WKSafeBrowsingWarningBackground.colorset/Contents.json: Added.
        * Resources/SafeBrowsing.xcassets/WKSafeBrowsingWarningText.colorset: Added.
        * Resources/SafeBrowsing.xcassets/WKSafeBrowsingWarningText.colorset/Contents.json: Added.
        * Resources/SafeBrowsing.xcassets/WKSafeBrowsingWarningTitle.colorset: Added.
        * Resources/SafeBrowsing.xcassets/WKSafeBrowsingWarningTitle.colorset/Contents.json: Added.
        * Shared/WebPreferences.yaml:
        * Shared/WebPreferencesDefaultValues.h:
        * UIProcess/API/C/mac/WKContextPrivateMac.mm:
        (WKContextHandlesSafeBrowsing):
        * UIProcess/Cocoa/SafeBrowsingResultCocoa.mm:
        (WebKit::malwareDetailsBase):
        (WebKit::learnMore):
        (WebKit::reportAnErrorBase):
        (WebKit::localizedProvider):
        (WebKit::SafeBrowsingResult::SafeBrowsingResult):
        * UIProcess/Cocoa/WKSafeBrowsingWarning.h: Added.
        * UIProcess/Cocoa/WKSafeBrowsingWarning.mm: Added.
        (confirmMalwareSentinel):
        (visitUnsafeWebsiteSentinel):
        (colorNamed):
        (replace):
        (addLinkAndReplace):
        (-[WKSafeBrowsingExclamationPoint drawRect:]):
        (-[WKSafeBrowsingExclamationPoint intrinsicContentSize]):
        (reportAnErrorURL):
        (malwareDetailsURL):
        (titleText):
        (warningText):
        (detailsText):
        (-[WKSafeBrowsingWarning initWithFrame:safeBrowsingResult:completionHandler:]):
        (-[WKSafeBrowsingWarning dealloc]):
        (-[WKSafeBrowsingWarning goBackClicked]):
        (-[WKSafeBrowsingWarning clickedOnLink:]):
        (-[WKSafeBrowsingWarning showDetailsClicked]):
        (+[WKSafeBrowsingTextView viewWithAttributedString:linkTarget:]):
        (+[WKSafeBrowsingTextView viewWithString:]):
        (-[WKSafeBrowsingTextView intrinsicContentSize]):
        (-[WKSafeBrowsingTextView clickedOnLink:atIndex:]):
        * UIProcess/Cocoa/WebViewImpl.h:
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::showSafeBrowsingWarning):
        (WebKit::WebViewImpl::clearSafeBrowsingWarning):
        (WebKit::WebViewImpl::setFrameSize):
        * UIProcess/PageClient.h:
        (WebKit::PageClient::showSafeBrowsingWarning):
        (WebKit::PageClient::clearSafeBrowsingWarning):
        * UIProcess/SafeBrowsingResult.h:
        (WebKit::SafeBrowsingResult::url const):
        (WebKit::SafeBrowsingResult::provider const):
        (WebKit::SafeBrowsingResult::localizedProviderName const):
        (WebKit::SafeBrowsingResult::malwareDetailsURLBase const):
        (WebKit::SafeBrowsingResult::reportAnErrorURLBase const):
        (WebKit::SafeBrowsingResult::learnMoreURL const):
        (WebKit::SafeBrowsingResult::needsSafeBrowsingWarning const):
        (WebKit::SafeBrowsingResult::isKnownToBeUnsafe const): Deleted.
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::decidePolicyForNavigationAction):
        * UIProcess/ios/PageClientImplIOS.h:
        * UIProcess/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::showSafeBrowsingWarning):
        (WebKit::PageClientImpl::clearSafeBrowsingWarning):
        * UIProcess/mac/PageClientImplMac.h:
        * UIProcess/mac/PageClientImplMac.mm:
        (WebKit::PageClientImpl::setImpl):
        (WebKit::PageClientImpl::showSafeBrowsingWarning):
        (WebKit::PageClientImpl::clearSafeBrowsingWarning):
        * WebKit.xcodeproj/project.pbxproj:

2018-11-05  Zan Dobersek  <zdobersek@igalia.com>

        [WPE] Remove BackingStore, BackingStoreCairo implementation files from build
        https://bugs.webkit.org/show_bug.cgi?id=191269

        Reviewed by Michael Catanzaro.

        * SourcesWPE.txt: Drop the BackingStore.cpp and BackingStoreCairo.cpp
        files from the WPE build. These are not used at all in WPE configuration
        as they are only used by the GTK+ port for non-AC functionality.

2018-11-05  Chris Dumez  <cdumez@apple.com>

        Use same limit for page cache and suspended pages
        https://bugs.webkit.org/show_bug.cgi?id=191266

        Reviewed by Geoffrey Garen.

        Use same limit for page cache and suspended pages as they serve the same purpose.

        * UIProcess/API/Cocoa/WKProcessPool.mm:
        (-[WKProcessPool _maximumSuspendedPageCount]):
        * UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::updateMaxSuspendedPageCount):
        (WebKit::WebProcessPool::setCacheModel):
        (WebKit::WebProcessPool::addSuspendedPageProxy):
        * UIProcess/WebProcessPool.h:

2018-11-05  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] Allow WKWebView clients to customize bar button item groups in the accessory view when editing
        https://bugs.webkit.org/show_bug.cgi?id=191240
        <rdar://problem/44872806>

        Reviewed by Tim Horton.

        Allow WKWebView clients to override WKContentView's default input assistant item by plumbing the call to
        `-inputAssistantItem` through `-[WKWebView inputAssistantItem]`, such that if a client asks WKWebView for its
        input assistant item and changes its leading or trailing bar button groups, the changes will be reflected by
        WKContentView; additionally, this allows clients to achieve the same effect by overriding `-inputAssistantItem`
        on WKWebView.

        Test:   KeyboardInputTests.ModifyInputAssistantItemBarButtonGroups
                KeyboardInputTests.OverrideInputAssistantItemBarButtonGroups

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView inputAssistantItem]):
        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView inputAssistantItem]):

        Route the call to `[super inputAssistantItem]` through `-[WKWebView inputAssistantItem]`, so that the input
        assistant item may be overridden via WKWebView.

        (-[WKContentView inputAssistantItemForWebView]):

2018-11-05  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r237785.

        Introduced layout test and API test failures on macOS and iOS.

        Reverted changeset:

        "[iOS] Issue initial paint soon after the visuallyNonEmpty
        milestone is fired."
        https://bugs.webkit.org/show_bug.cgi?id=191078
        https://trac.webkit.org/changeset/237785

2018-11-05  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r237784 and r237788.
        https://bugs.webkit.org/show_bug.cgi?id=191270

        Caused mediastream layout test failures (Requested by
        ryanhaddad on #webkit).

        Reverted changesets:

        "[MediaStream] User should not be prompted again after denying
        getDisplayMedia request"
        https://bugs.webkit.org/show_bug.cgi?id=191227
        https://trac.webkit.org/changeset/237784

        "[MediaStream] User should not be prompted again after denying
        getDisplayMedia request"
        https://bugs.webkit.org/show_bug.cgi?id=191227
        https://trac.webkit.org/changeset/237788

2018-11-04  Fujii Hironori  <Hironori.Fujii@sony.com>

        [MediaStream] User should not be prompted again after denying getDisplayMedia request
        https://bugs.webkit.org/show_bug.cgi?id=191227
        <rdar://problem/45784512>

        Unreviewed build fix of ports not ENABLE(MEDIA_STREAM).

        * UIProcess/UserMediaPermissionRequestManagerProxy.cpp: Define getRequestAction only if ENABLE(MEDIA_STREAM).
        * UIProcess/UserMediaPermissionRequestManagerProxy.h: Ditto.

2018-11-04  Zalan Bujtas  <zalan@apple.com>

        [iOS] Issue initial paint soon after the visuallyNonEmpty milestone is fired.
        https://bugs.webkit.org/show_bug.cgi?id=191078
        <rdar://problem/45736178>

        Reviewed by Antti Koivisto.

        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::layerFlushThrottlingIsActive const):
        * WebProcess/WebCoreSupport/WebChromeClient.h:
        * WebProcess/WebPage/AcceleratedDrawingArea.cpp:
        (WebKit::AcceleratedDrawingArea::scheduleInitialDeferredPaint):
        * WebProcess/WebPage/AcceleratedDrawingArea.h:
        * WebProcess/WebPage/DrawingArea.h:
        (WebKit::DrawingArea::layerFlushThrottlingIsActive const):
        * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h:
        * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm:
        (WebKit::RemoteLayerTreeDrawingArea::RemoteLayerTreeDrawingArea):
        (WebKit::RemoteLayerTreeDrawingArea::setLayerTreeStateIsFrozen):
        (WebKit::RemoteLayerTreeDrawingArea::initialDeferredPaint):
        (WebKit::RemoteLayerTreeDrawingArea::scheduleInitialDeferredPaint):
        (WebKit::RemoteLayerTreeDrawingArea::scheduleCompositingLayerFlush):
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
        (WebKit::TiledCoreAnimationDrawingArea::scheduleInitialDeferredPaint):

2018-11-04  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] User should not be prompted again after denying getDisplayMedia request
        https://bugs.webkit.org/show_bug.cgi?id=191227
        <rdar://problem/45784512>

        Reviewed by Youenn Fablet.

        * UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
        (WebKit::UserMediaPermissionRequestManagerProxy::userMediaAccessWasDenied):
        (WebKit::UserMediaPermissionRequestManagerProxy::wasRequestDenied):
        (WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame):
        * UIProcess/UserMediaPermissionRequestManagerProxy.h:

2018-11-03  Alex Christensen  <achristensen@webkit.org>

        Mac production builds should sign the network process xpc service with entitlements
        https://bugs.webkit.org/show_bug.cgi?id=191209
        <rdar://problem/45377609>

        Reviewed by Geoff Garen.

        * Configurations/Network-OSX.entitlements: Copied from Configurations/Network-OSX-sandbox.entitlements.
        * Configurations/NetworkService.xcconfig:
        Set CODE_SIGN_ENTITLEMENTS_COCOA_TOUCH_NO like we do for the web process,
        except with the corresponoding network process entitlements file.
        * UIProcess/API/Cocoa/WKProcessPool.mm:
        (-[WKProcessPool _networkProcessHasEntitlementForTesting:]):
        * UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        (WebKit::WebProcessPool::networkProcessHasEntitlementForTesting):
        * UIProcess/WebProcessPool.h:
        * WebKit.xcodeproj/project.pbxproj:
        Add infrastructure to test that the network process actually has an entitlement.

2018-11-03  Philippe Normand  <pnormand@igalia.com>

        [WPE] Add the WebKitVersion.h header
        https://bugs.webkit.org/show_bug.cgi?id=191015
        <rdar://problem/45647211>

        Reviewed by Michael Catanzaro.

        * PlatformWPE.cmake: Install the generated header as well.

2018-11-02  Alex Christensen  <achristensen@webkit.org>

        Unreviewed, rolling out r237761.

        Makes most API tests timeout and WK2 tests crash

        Reverted changeset:

        "Mac production builds should sign the network process xpc
        service with entitlements"
        https://bugs.webkit.org/show_bug.cgi?id=191209
        https://trac.webkit.org/changeset/237761

2018-11-02  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, attempt to fix the build with recent SDKs.

        * Shared/EntryPointUtilities/mac/XPCService/XPCServiceEntryPoint.mm:
        (WebKit::XPCServiceExit):

2018-11-02  Alex Christensen  <achristensen@webkit.org>

        Mac production builds should sign the network process xpc service with entitlements
        https://bugs.webkit.org/show_bug.cgi?id=191209
        <rdar://problem/45377609>

        Reviewed by Geoff Garen.

        * Configurations/NetworkService.xcconfig:
        Set CODE_SIGN_ENTITLEMENTS_COCOA_TOUCH_NO like we do for the web process,
        except with the corresponoding network process entitlements file.
        * UIProcess/API/Cocoa/WKProcessPool.mm:
        (-[WKProcessPool _networkProcessHasEntitlementForTesting:]):
        * UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        (WebKit::WebProcessPool::networkProcessHasEntitlementForTesting):
        * UIProcess/WebProcessPool.h:
        Add infrastructure to test that the network process actually has an entitlement.

2018-11-02  Daniel Bates  <dabates@apple.com>

        [iOS] WebKit should dispatch DOM events when a modifier key is pressed
        https://bugs.webkit.org/show_bug.cgi?id=190487

        Reviewed by Tim Horton.

        Add support for modifier flags change events dispatched by UIKit.

        * Shared/ios/WebIOSEventFactory.mm:
        (modifiersForEvent): Update for renamed enumerations.
        (WebIOSEventFactory::createWebKeyboardEvent): Modifier keys do not have an associated
        character and do not participate in key repeat.
        * UIProcess/Automation/ios/WebAutomationSessionIOS.mm:
        (WebKit::WebAutomationSession::platformSimulateKeyboardInteraction): Update for renamed enumerations.
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _interpretKeyEvent:isCharEvent:]): Return NO if the event represents a
        modifier flags change to allow the default handling.
        * UIProcess/ios/WKKeyboardScrollingAnimator.mm:
        (-[WKKeyboardScrollingAnimator keyboardScrollForEvent:]): Update for renamed enumerations.

2018-11-02  Chris Dumez  <cdumez@apple.com>

        [PSON] Reuse SuspendedPages' process when possible, for performance
        https://bugs.webkit.org/show_bug.cgi?id=191166

        Reviewed by Geoffrey Garen.

        When process-swapping check if there is an existing SuspendedPage for the domain we're going to.
        If there is, use this SuspendedPage's process for the navigation instead of a fresh new process.
        This change should be beneficial for performance as it:
        - Avoids spinning up a new process (CPU & memory cost)
        - Likely better leverages caches since this process already loaded this domain in the past

        Due to current limitations, using a SuspendedPage's proxy may consume the SuspendedPage, which
        means that it can no longer be used for PageCache on history navigations. We need to do this when
        the SuspendedPageProxy in question was created for the current WebPageProxy because:
        - This SuspendedPageProxy's process already has a suspended WebPage with this WebPageProxy's pageID
        and
        - We do not currently support having more than one WebPage with a given pageID within a single
          WebProcess.

        * UIProcess/SuspendedPageProxy.cpp:
        (WebKit::SuspendedPageProxy::SuspendedPageProxy):
        * UIProcess/SuspendedPageProxy.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::processForNavigationInternal):

2018-11-01  Fujii Hironori  <Hironori.Fujii@sony.com>

        Rename <wtf/unicode/UTF8.h> to <wtf/unicode/UTF8Conversion.h> in order to avoid conflicting with ICU's unicode/utf8.h
        https://bugs.webkit.org/show_bug.cgi?id=189693

        Reviewed by Yusuke Suzuki.

        * Shared/API/APIString.h: Replaced <wtf/unicode/UTF8.h> with <wtf/unicode/UTF8Conversion.h>.

2018-11-01  Daniel Bates  <dabates@apple.com>

        Cleanup: Extraneous platform guarding of -_setUpSQLiteDatabaseTrackerClient
        https://bugs.webkit.org/show_bug.cgi?id=191124

        Reviewed by Tim Horton.

        Remove the platform guard around the call to -_setUpSQLiteDatabaseTrackerClient as the
        implementation of that message is already guarded.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _initializeWithConfiguration:]):

2018-11-01  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, attempt to fix the build with recent SDKs.

        * Shared/EntryPointUtilities/mac/XPCService/XPCServiceEntryPoint.h:
        (WebKit::XPCServiceInitializer):

2018-11-01  Sihui Liu  <sihui_liu@apple.com>

        Add a storage limit for IndexedDB
        https://bugs.webkit.org/show_bug.cgi?id=190598
        <rdar://problem/44654715>

        Reviewed by Chris Dumez.

        Add SPI for testing.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::NetworkProcess):
        (WebKit::NetworkProcess::idbServer):
        (WebKit::NetworkProcess::setIDBPerOriginQuota):
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:
        * UIProcess/API/C/WKContext.cpp:
        (WKContextSetIDBPerOriginQuota):
        * UIProcess/API/C/WKContextPrivate.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::setIDBPerOriginQuota):
        * UIProcess/WebProcessPool.h:

2018-11-01  Chris Dumez  <cdumez@apple.com>

        [PSON] WebPageProxy::receivedNavigationPolicyDecision() should not schedule the new load asynchronously when process-swapping
        https://bugs.webkit.org/show_bug.cgi?id=191076

        Reviewed by Geoffrey Garen.

        WebPageProxy::receivedNavigationPolicyDecision() should not schedule the new load asynchronously when process-swapping.
        The client can request a new load synchronously after answering the policy decision, in which case we'd end up loading
        the wrong URL.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::receivedNavigationPolicyDecision):
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::processForNavigation):
        (WebKit::WebProcessPool::processForNavigationInternal):
        * UIProcess/WebProcessPool.h:

2018-11-01  Chris Dumez  <cdumez@apple.com>

        [PSON] Unable to submit a file in FormData cross-site
        https://bugs.webkit.org/show_bug.cgi?id=191138

        Reviewed by Alex Christensen.

        When PSON is enabled, we are unable to submit a file in FormData cross-site. Although we encode the
        request body over IPC since r237639, we're missing the right sandbox extensions for its to work for
        files.

        Update FormDataReference encoder to pass along the necessary sandbox extensions for files in the
        FormData, and have its decoder consume those extensions so that the recipient has access to those
        files. Also update LoadParameters's IPC encoder / decoder to encoder an IPC::FormDataReference
        (which encodes both FormData and sandbox extensions) instead of a FormData.

        * Platform/IPC/FormDataReference.h:
        (IPC::FormDataReference::encode const):
        (IPC::FormDataReference::decode):
        * Shared/LoadParameters.cpp:
        (WebKit::LoadParameters::encode const):
        (WebKit::LoadParameters::decode):

2018-11-01  Claudio Saavedra  <csaavedra@igalia.com>

        ERROR: ResourceLoadStatisticsPersistentStorage: Unable to delete statistics file
        https://bugs.webkit.org/show_bug.cgi?id=191152

        Reviewed by Chris Dumez.

        The statistics file is not created unconditionally, so
        make sure it exists before logging an error.

        * UIProcess/ResourceLoadStatisticsPersistentStorage.cpp:
        (WebKit::ResourceLoadStatisticsPersistentStorage::clear):
        Check that the file exists before logging an error.

2018-11-01  Claudio Saavedra  <csaavedra@igalia.com>

        [GLIB] Silent a build warning when not using Wayland

        Unreviewed.

        * UIProcess/Launcher/glib/BubblewrapLauncher.cpp:

2018-11-01  Frederic Wang  <fwang@igalia.com>

        [WebAuthN] Make AuthenticatorManager
        https://bugs.webkit.org/show_bug.cgi?id=189279

        Unreviewed build fix.

        * UIProcess/WebAuthentication/Cocoa/LocalConnection.h: Add missing headers.

2018-10-31  Wenson Hsieh  <wenson_hsieh@apple.com>

        API test WKAttachmentTests.CopyAndPasteBetweenWebViews fails on macOS 10.13
        https://bugs.webkit.org/show_bug.cgi?id=191114
        <rdar://problem/45700410>

        Reviewed by Dean Jackson.

        Followup to r237648: also make sure that we insecurely unarchive NSFileWrapper on platforms that don't support
        secure archiving of file wrappers.

        * UIProcess/API/Cocoa/APIAttachmentCocoa.mm:
        (API::Attachment::updateFromSerializedRepresentation):

2018-10-31  Dean Jackson  <dino@apple.com>

        Forward original fragment identifier into System Preview
        https://bugs.webkit.org/show_bug.cgi?id=191141
        <rdar://problem/45717542>

        Reviewed by Wenson Hsieh.

        If the URL used by the page includes a fragment identifier, use
        it when telling QuickLook to open a local file.

        * UIProcess/Cocoa/DownloadClient.mm:
        (WebKit::DownloadClient::didFinish): Append original fragment identifier
        to the destination URL.

2018-10-31  Zalan Bujtas  <zalan@apple.com>

        [iOS] Do not paint tap highlight unless it is above a certain threshold
        https://bugs.webkit.org/show_bug.cgi?id=191134
        <rdar://problem/43615142>

        Flashing a large portion of the screen on every tap looks unpleasant.
        This patch impoves the existing heuristic by adding area check and a % threshold.  

        Reviewed by Tim Horton.

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _showTapHighlight]):
        (highlightedQuadsAreSmallerThanRect): Deleted.

2018-10-31  Wenson Hsieh  <wenson_hsieh@apple.com>

        API test WKAttachmentTests.CopyAndPasteBetweenWebViews fails on macOS 10.13
        https://bugs.webkit.org/show_bug.cgi?id=191114
        <rdar://problem/45700410>

        Reviewed by Dean Jackson.

        On macOS 10.12, we don't attempt secure archival at all because SECURE_ARCHIVER_API is turned off, and on macOS
        10.14, NSFileWrapper supports secure coding. However, on macOS 10.13, SECURE_ARCHIVER_API is on despite
        NSFileWrapper not being securely codable, so we're unable to serialize attachment data.

        To fix this, we only use the secure archiver on ≥ macOS 10.14 and ≥ iOS 12.

        * UIProcess/API/Cocoa/APIAttachmentCocoa.mm:
        (API::Attachment::createSerializedRepresentation const):

2018-10-31  Zach Li  <zacharyli323@gmail.com>

        Add credit card autofill button
        https://bugs.webkit.org/show_bug.cgi?id=191051
        <rdar://problem/45657011>

        Reviewed by Wenson Hsieh.

        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandle.mm:
        (toAutoFillButtonType):
        (toWKAutoFillButtonType):
        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandlePrivate.h:
        Introduce a new button type for credit card autofill.
        * WebProcess/InjectedBundle/API/c/WKBundleNodeHandle.cpp:
        (toAutoFillButtonType):
        (toWKAutoFillButtonType):
        * WebProcess/InjectedBundle/API/c/WKBundleNodeHandlePrivate.h:

2018-10-31  Chris Dumez  <cdumez@apple.com>

        [PSON] When process-swapping for a POST request the HTTP body gets dropped
        https://bugs.webkit.org/show_bug.cgi?id=191046
        <rdar://problem/45229732>

        Reviewed by Alex Christensen.

        For performance reasons, the ResourceRequest IPC encoder does not encode the request's HTTP body (aka form data).
        When we decide to process-swap for a POST request in WebPageProxy::decidePolicyForNavigationAction(), the request
        we pass the new WebProcess thus no longer has a HTTP body and the load will likely fail in the new process.

        To address the issue, we now pass the request body along with the request when sending the DecidePolicyForNavigationActionAsync
        / DecidePolicyForNavigationActionSync IPC from the WebProcess to the UIProcess. No action is needed for the
        LoadRequest IPC to the new WebProcess since the LoadParameters' IPC encoder takes care of encoding the request's
        body already.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::decidePolicyForNavigationActionAsync):
        (WebKit::WebPageProxy::decidePolicyForNavigationActionSync):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):

2018-10-31  Antti Koivisto  <antti@apple.com>

        Stop using LayerFlushScheduler in WK2
        https://bugs.webkit.org/show_bug.cgi?id=191065

        Reviewed by Tim Horton.

        Code gets more understandable when TiledCoreAnimationDrawingArea simply uses RunLoopObserver
        directly for flush scheduling. LayerFlushScheduler can be later moved to WK1.

        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
        (WebKit::TiledCoreAnimationDrawingArea::TiledCoreAnimationDrawingArea):
        (WebKit::TiledCoreAnimationDrawingArea::~TiledCoreAnimationDrawingArea):
        (WebKit::TiledCoreAnimationDrawingArea::setLayerTreeStateIsFrozen):
        (WebKit::TiledCoreAnimationDrawingArea::scheduleCompositingLayerFlush):
        (WebKit::TiledCoreAnimationDrawingArea::dispatchAfterEnsuringUpdatedScrollPosition):
        (WebKit::TiledCoreAnimationDrawingArea::layerFlushRunLoopCallback):
        (WebKit::TiledCoreAnimationDrawingArea::invalidateLayerFlushRunLoopObserver):
        (WebKit::TiledCoreAnimationDrawingArea::scheduleLayerFlushRunLoopObserver):

2018-10-31  Claudio Saavedra  <csaavedra@igalia.com>

        [WPE][GTK] Certificates loaded from the cache don't include the certificate chain
        https://bugs.webkit.org/show_bug.cgi?id=190956

        Reviewed by Youenn Fablet.

        Similarly to what was done for the IPC coders, serialize
        the entire certificate chain in the cache coder. Bump
        the cache version due to the caching format changes.

        * NetworkProcess/cache/NetworkCacheCoders.h: Add GRefPtr<GByteArray> coders.
        * NetworkProcess/cache/NetworkCacheCodersSoup.cpp:
        (WTF::Persistence::certificatesDataListFromCertificateInfo):
        (WTF::Persistence::certificateFromCertificatesDataList): Helpers.
        (WTF::Persistence::Coder<WebCore::CertificateInfo>::encode):
        (WTF::Persistence::Coder<WebCore::CertificateInfo>::decode):
        (WTF::Persistence::Coder<GRefPtr<GByteArray>>::encode):
        (WTF::Persistence::Coder<GRefPtr<GByteArray>>::decode):
        * NetworkProcess/cache/NetworkCacheStorage.h: Bump the cache version.

2018-10-30  Wenson Hsieh  <wenson_hsieh@apple.com>

        [Cocoa] Attachment dropped from one web view to another is missing its file wrapper
        https://bugs.webkit.org/show_bug.cgi?id=190530
        <rdar://problem/45232149>

        Reviewed by Tim Horton.

        See WebCore ChangeLog for more details.

        * Shared/WebCoreArgumentCoders.cpp:
        (IPC::ArgumentCoder<SerializedAttachmentData>::encode):
        (IPC::ArgumentCoder<SerializedAttachmentData>::decode):
        * Shared/WebCoreArgumentCoders.h:

        Add IPC encoding/decoding support for SerializedAttachmentData.

        * UIProcess/API/APIAttachment.cpp:
        (API::Attachment::createSerializedRepresentation const):
        (API::Attachment::updateFromSerializedRepresentation):
        * UIProcess/API/APIAttachment.h:
        * UIProcess/API/Cocoa/APIAttachmentCocoa.mm:
        (API::Attachment::createSerializedRepresentation const):

        Add a method to serialize and return attachment info as a blob of data.

        (API::Attachment::updateFromSerializedRepresentation):

        Add a method to update the attachment, given a serialized blob of data. On Cocoa platforms, this fails
        gracefully if the serialized data cannot be decoded.

        * UIProcess/Cocoa/PageClientImplCocoa.h:
        * UIProcess/Cocoa/PageClientImplCocoa.mm:
        (WebKit::PageClientImplCocoa::allocFileWrapperInstance const):
        (WebKit::PageClientImplCocoa::serializableFileWrapperClasses const):
        (WebKit::PageClientImplCocoa::allocFileWrapperInstance): Deleted.

        Add an additional hook to return the list of NSFileWrapper subclasses suitable for deserialization. This
        array contains (at minimum) NSFileWrapper, but may additionally include a custom NSFileWrapper subclass, if
        configured.

        * UIProcess/PageClient.h:
        (WebKit::PageClient::allocFileWrapperInstance const):
        (WebKit::PageClient::serializableFileWrapperClasses const):
        (WebKit::PageClient::allocFileWrapperInstance): Deleted.
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::registerAttachmentsFromSerializedData):

        Registers the given serialized attachment data, creating new _WKAttachment instances if necessary. Currently,
        this does not update the file wrappers of existing _WKAttachments; we should revisit this in the future to see
        if we can additionally update file wrappers for existing attachments, without breaking the case where the user
        copies and pastes or drags and drops attachments within a single web view and the client expects _WKAttachment
        instances to be reused.

        (WebKit::WebPageProxy::serializedAttachmentDataForIdentifiers):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * WebProcess/WebCoreSupport/WebEditorClient.cpp:
        (WebKit::WebEditorClient::registerAttachments):
        (WebKit::WebEditorClient::serializedAttachmentDataForIdentifiers):

        Implement a new IPC hook to fetch an array of serialized attachment data blobs, given a list of attachment
        identifiers.

        * WebProcess/WebCoreSupport/WebEditorClient.h:

2018-10-30  Chris Dumez  <cdumez@apple.com>

        [PSON] View gesture snapshot gets taken down early when process-swapping
        https://bugs.webkit.org/show_bug.cgi?id=191083
        <rdar://problem/45058738>

        Reviewed by Alex Christensen.

        When process-swapping, we would call WebViewImpl::processDidExit(), which would destroy
        the ViewGestureController and thus take down the swipe navigation snapshot before it
        should. We now call WebViewImpl::processDidSwap() instead, which does the same thing,
        except for destroying the ViewGestureController. As a result, the view snapshot stays
        visible as long as it is needed, even in case of process swap.

        * UIProcess/Cocoa/WebViewImpl.h:
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::handleProcessSwapOrExit):
        (WebKit::WebViewImpl::processWillSwap):
        (WebKit::WebViewImpl::processDidExit):
        * UIProcess/mac/PageClientImplMac.mm:
        (WebKit::PageClientImpl::processWillSwap):

2018-10-30  Chris Dumez  <cdumez@apple.com>

        [PSON] WebView renders with incorrect dimensions after back or forward
        https://bugs.webkit.org/show_bug.cgi?id=191071
        <rdar://problem/45058950>

        Reviewed by Alex Christensen.

        Make sure WebPage::reinitializeWebPage() updates the page's dimensions if needed using the
        WebPageCreationParameters it is provided.

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::reinitializeWebPage):

2018-10-30  Dewei Zhu  <dewei_zhu@apple.com>

        Move 'ProcessSwapOnCrossSiteNavigationEnabled' to 'experimental' category.
        https://bugs.webkit.org/show_bug.cgi?id=191049

        Reviewed by Dean Jackson.

        Move the feature flag to experimental feature section.

        * Shared/WebPreferences.yaml:

2018-10-30  Alexey Proskuryakov  <ap@apple.com>

        Enable InstallAPI for iOS unconditionally
        https://bugs.webkit.org/show_bug.cgi?id=191043
        rdar://problem/32728423

        Reviewed by Dan Bernstein.

        * Configurations/Base.xcconfig: Enabled it. Added NSURLDownloadSPI.h as an
        excluded header - WebKit doesn't export NSURLDownload, so the definition
        shouldn't be processed by InstallAPI.

2018-10-30  Alexey Proskuryakov  <ap@apple.com>

        Clean up some obsolete MAX_ALLOWED macros
        https://bugs.webkit.org/show_bug.cgi?id=190916

        Reviewed by Tim Horton.

        * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
        (WebKit::NetworkDataTaskCocoa::applySniffingPoliciesAndBindRequestToInferfaceIfNeeded):
        * Platform/spi/Cocoa/DeviceIdentitySPI.h:
        * Platform/spi/ios/UIKitSPI.h:
        * Shared/WebPreferencesDefaultValues.cpp:
        (defaultCustomPasteboardDataEnabled):
        * UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
        (WebKit::toPKPaymentRequest):
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView changeSelectionWithTouchAt:withSelectionTouch:baseIsStart:]): Deleted.

2018-10-30  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r237600 and r237604.
        https://bugs.webkit.org/show_bug.cgi?id=191086

        Breaks internal iOS builds (Requested by ryanhadd_ on
        #webkit).

        Reverted changesets:

        "Enable InstallAPI for iOS unconditionally"
        https://bugs.webkit.org/show_bug.cgi?id=191043
        https://trac.webkit.org/changeset/237600

        "Build fix attempt after enabling InstallAPI for iOS."
        https://bugs.webkit.org/show_bug.cgi?id=191043
        https://trac.webkit.org/changeset/237604

2018-10-30  Alexey Proskuryakov  <ap@apple.com>

        Build fix attempt after enabling InstallAPI for iOS.
        https://bugs.webkit.org/show_bug.cgi?id=191043
        rdar://problem/32728423

        * Configurations/WebKit.xcconfig: Skip NSURLDownloadSPI.h here too.

2018-10-30  Alexey Proskuryakov  <ap@apple.com>

        Enable InstallAPI for iOS unconditionally
        https://bugs.webkit.org/show_bug.cgi?id=191043
        rdar://problem/32728423

        Reviewed by Dan Bernstein.

        * Configurations/Base.xcconfig: Enabled it.

2018-10-30  Zan Dobersek  <zdobersek@igalia.com>

        [CoordGraphics] CoordinatedLayerTreeHost::flushLayersAndForceRepaint() should schedule the flush
        https://bugs.webkit.org/show_bug.cgi?id=191066

        Reviewed by Michael Catanzaro.

        * WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp:
        (WebKit::CoordinatedLayerTreeHost::flushLayersAndForceRepaint):
        Only schedule the layer flush in this call, don't perform it on the
        spot. This avoids re-entry of the layer flushing process in cases when
        the associated display refresh monitor is requested a callback during
        the layout phase that's executed under the initial layer flush.

2018-10-29  Dewei Zhu  <dewei_zhu@apple.com>

        Move 'ProcessSwapOnCrossSiteNavigationEnabled' to 'experimental' category.
        https://bugs.webkit.org/show_bug.cgi?id=191049

        Reviewed by Chris Dumez.

        Move 'ProcessSwapOnCrossSiteNavigationEnabled' from 'internal' to 'experimental' category.

        * Shared/WebPreferences.yaml:

2018-10-29  Youenn Fablet  <youenn@apple.com>

        Handle MDNS resolution of candidates through libwebrtc directly
        https://bugs.webkit.org/show_bug.cgi?id=190681

        Reviewed by Eric Carlson.

        Add support for AsyncResolver to resolve MDNS.
        This basically reuse the code path used to resolve STUN server addresses.
        Removed MDNS specific resolution.
        Use existing CFHost resolution mechanism to do the actual resolution.

        Make sure that a resolver is kept alive while iterating through its clients when signaling done.
        Some of its clients may indeed call Destroy() on the resolver during that iteration.

        * NetworkProcess/webrtc/NetworkMDNSRegister.cpp:
        (WebKit::NetworkMDNSRegister::registerMDNSName):
        * NetworkProcess/webrtc/NetworkMDNSRegister.messages.in:
        * WebProcess/Network/webrtc/LibWebRTCProvider.cpp:
        (WebKit::LibWebRTCResolver::Destroy):
        (WebKit::LibWebRTCResolver::doDestroy):
        (WebKit::LibWebRTCResolver::setResolvedAddress):
        (WebKit::LibWebRTCResolver::setError):
        (WebKit::LibWebRTCProvider::createPeerConnection):
        * WebProcess/Network/webrtc/LibWebRTCProvider.h:
        * WebProcess/Network/webrtc/LibWebRTCSocketFactory.h:
        * WebProcess/Network/webrtc/WebMDNSRegister.cpp:
        * WebProcess/Network/webrtc/WebMDNSRegister.h:
        * WebProcess/Network/webrtc/WebMDNSRegister.messages.in:

2018-10-29  Tim Horton  <timothy_horton@apple.com>

        Modernize WebKit nibs and lprojs for localization's sake
        https://bugs.webkit.org/show_bug.cgi?id=190911
        <rdar://problem/45349466>

        Reviewed by Dan Bernstein.

        * Resources/WebContentProcess.xib:
        * WebKit.xcodeproj/project.pbxproj:
        * en.lproj/InfoPlist.strings: Renamed from Source/WebKit/English.lproj/InfoPlist.strings.
        English->en

2018-10-29  Tim Horton  <timothy_horton@apple.com>

        Make FindOptionsShowOverlay work on iOS
        https://bugs.webkit.org/show_bug.cgi?id=190551

        Reviewed by Andy Estes.

        * WebProcess/WebPage/FindController.cpp:
        (WebKit::FindController::updateFindUIAfterPageScroll):
        Update the find indicator after installing the page overlay for the find holes.
        This ensures that if the find indicator mechanism also uses page overlays,
        as it does on iOS, that they are installed in the correct order (because
        order of installation directly affects z-order).

        (WebKit::FindController::findIndicatorRadius const):
        (WebKit::FindController::shouldHideFindIndicatorOnScroll const):
        Add two getters for design differences between find-in-page on iOS vs. other platforms.

        (WebKit::FindController::rectsForTextMatchesInRect):
        Return FloatRects instead of IntRects for ease of use in the caller.
        Don't clip rects for matches that intersect the current tile. We still
        drop ones that don't intersect at all, but if they do intersect, we
        provide the full rect (which may overlap a different tile), so that
        e.g. border drawing will work correctly.

        (WebKit::FindController::drawRect):
        Adopt shrink-wrapping for find holes. This has minimal impact on macOS,
        where the holes don't have rounded corners, but on iOS this makes
        overlapping or adjacent holes look great. We already do this for the indicator,
        so it only makes sense to do the same for the holes.

        In order to support shrink-wrapping here, switch to using a Clear operator
        with a path-fill instead of clearRect to clear out the holes.

        Avoid hiding the find indicator on scroll if the platform says not to.

        * WebProcess/WebPage/FindController.h:
        * WebProcess/WebPage/ios/FindControllerIOS.mm:
        (WebKit::FindController::findIndicatorRadius const):
        (WebKit::FindController::shouldHideFindIndicatorOnScroll const):
        Slightly adjust the find indicator's parameters to be compatible with having holes.
        Reduce the horizontal margin by half a point so that it fits precisely in the hole.
        Drop the "TightlyFitContent" text indicator parameter, because we want 
        rects that match the holes, and they do not tightly fit the content's height.
        This matches macOS's behavior.

2018-10-29  Jer Noble  <jer.noble@apple.com>

        CRASH in CoreGraphics: ERROR_CGDataProvider_BufferIsNotBigEnough
        https://bugs.webkit.org/show_bug.cgi?id=190954

        Reviewed by Simon Fraser.

        * Shared/cg/ShareableBitmapCG.cpp:
        (WebKit::ShareableBitmap::makeCGImage):

2018-10-29  Youenn Fablet  <youenn@apple.com>

        Guard H264 simulcast with a runtime flag
        https://bugs.webkit.org/show_bug.cgi?id=191025

        Reviewed by Eric Carlson.

        * Shared/WebPreferences.yaml:

2018-10-29  Chris Dumez  <cdumez@apple.com>

        [PSON] When Safari restores session state after launching, going back and forward does not swap processes
        https://bugs.webkit.org/show_bug.cgi?id=190975
        <rdar://problem/45059256>

        Reviewed by Antti Koivisto.

        When deciding to process-swap or not on a history navigation, we normally check the BackForwardListItems'
        process identifiers do check if they come from different WebProcesses or not. However, the check was invalid
        in the case where the BackForwardListItems were restored by the client. After a session restore, the
        items' process identifier is the UIProcess one. Therefore, we need to disable the BackForwardListItems'
        process identifiers check if if the process identifier is the one of the UIProcess.

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::processForNavigationInternal):

2018-10-29  Youenn Fablet  <youenn@apple.com>

        [WebRTC] Enable VP8 by default
        https://bugs.webkit.org/show_bug.cgi?id=190672

        Reviewed by Eric Carlson.

        * Shared/WebPreferences.yaml:

2018-10-28  Zan Dobersek  <zdobersek@igalia.com>

        [WPE] Add the WebKitVersion.h header
        https://bugs.webkit.org/show_bug.cgi?id=191015

        Reviewed by Michael Catanzaro.

        Add the WebKitVersion.h API header for the WPE port. As with other
        headers providing the GLib API, we have to provide a WPE-specific
        version, but the implementation file can be shared with the GTK port,
        and is moved under the UIProcess/API/glib/ directory accordingly.

        * PlatformWPE.cmake:
        * SourcesWPE.txt:
        * UIProcess/API/glib/WebKitVersion.cpp: Renamed from Source/WebKit/UIProcess/API/gtk/WebKitVersion.cpp.
        * UIProcess/API/wpe/WebKitVersion.h.in: Added.
        * UIProcess/API/wpe/webkit.h:

2018-10-26  Megan Gardner  <megan_gardner@apple.com>

        Remove Unused WebSelectionAssistant
        https://bugs.webkit.org/show_bug.cgi?id=190939

        Reviewed by Tim Horton.

        We made webSelectionAssistant alwasys nil last year when we moved to using
        the textSelectionAssistant for all text selection on the web. This patch merely 
        goes through and cleans out all the references to this object that is always nil.
        No functionality should change.

        * UIProcess/ios/WKContentView.mm:
        (-[WKContentView _didExitStableState]):
        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView cleanupInteraction]):
        (-[WKContentView resignFirstResponderForWebView]):
        (-[WKContentView _scrollingNodeScrollingWillBegin]):
        (-[WKContentView _scrollingNodeScrollingDidEnd]):
        (-[WKContentView gestureRecognizer:canBePreventedByGestureRecognizer:]):
        (-[WKContentView gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:]):
        (-[WKContentView _uiTextSelectionRects]):
        (-[WKContentView _singleTapCommited:]):
        (-[WKContentView _willStartScrollingOrZooming]):
        (-[WKContentView _didEndScrollingOrZooming]):
        (-[WKContentView _lookupForWebView:]):
        (-[WKContentView _shareForWebView:]):
        (-[WKContentView _addShortcutForWebView:]):
        (-[WKContentView _showDictionary:]):
        (selectionChangedWithGesture):
        (selectionChangedWithTouch):
        (-[WKContentView selectionInteractionAssistant]):
        (-[WKContentView _stopAssistingNode]):
        (-[WKContentView _updateChangedSelection:]):
        (-[WKContentView actionSheetAssistant:shareElementWithURL:rect:]):
        (-[WKContentView _restoreCalloutBarIfNeeded]):
        (-[WKContentView dragInteraction:willAnimateLiftWithAnimator:session:]):
        (-[WKContentView webSelectionAssistant]): Deleted.

2018-10-26  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r237458.
        https://bugs.webkit.org/show_bug.cgi?id=190973

        broke internal iOS builds (Requested by zalan on #webkit).

        Reverted changeset:

        "Adopt -setOverrideRouteSharingPolicy:routingContextUID: SPI"
        https://bugs.webkit.org/show_bug.cgi?id=190951
        https://trac.webkit.org/changeset/237458

2018-10-26  Chris Dumez  <cdumez@apple.com>

        [PSON] Only delay attaching drawingArea in case of process swap and drop DidCompletePageTransition IPC handshake
        https://bugs.webkit.org/show_bug.cgi?id=190971

        Reviewed by Geoffrey Garen.

        Only delay attaching drawingArea in case of process swap and drop DidCompletePageTransition IPC handshake.

        Since r236257, the WebProcess would always delay attaching the drawing area when a new WebPage is created. The
        WebProcess would send a DidCompletePageTransition IPC to the UIProcess when the page transition is complete and
        the UIProcess would then send an IPC back to attach the drawing area.

        In the new design, WebPageCreationParameters contains a flag indicating if the WebPage should delay attaching
        the drawing area or not. We only delay attaching in case of process swap and we've successfuly suspended the
        previous page. Then when WebPage::didCompletePageTransition(), we stop sending the DidCompletePageTransition
        IPC to the UIProcess and instead have the WebProcess attach the drawing area right away if we've delayed
        attaching until then.

        * Shared/WebPageCreationParameters.cpp:
        (WebKit::WebPageCreationParameters::encode const):
        (WebKit::WebPageCreationParameters::decode):
        * Shared/WebPageCreationParameters.h:
        * UIProcess/DrawingAreaProxy.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::suspendCurrentPageIfPossible):
        (WebKit::WebPageProxy::swapToWebProcess):
        (WebKit::WebPageProxy::finishAttachingToWebProcess):
        (WebKit::WebPageProxy::initializeWebPage):
        (WebKit::WebPageProxy::receivedNavigationPolicyDecision):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.h:
        * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm:
        * WebProcess/WebPage/DrawingArea.messages.in:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::m_shouldAttachDrawingAreaOnPageTransition):
        (WebKit::WebPage::reinitializeWebPage):
        (WebKit::WebPage::didCompletePageTransition):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
        (WebKit::TiledCoreAnimationDrawingArea::TiledCoreAnimationDrawingArea):

2018-10-26  Chris Dumez  <cdumez@apple.com>

        [PSON] Avoid tearing down the drawing area when suspending a WebPage due to process-swap
        https://bugs.webkit.org/show_bug.cgi?id=190879

        Reviewed by Antti Koivisto.

        Avoid tearing down the drawing area when suspending a WebPage due to process-swap. We really only need to reset
        the drawing area upon resuming the WebPage. There is no strict need to destroy the drawing area on suspension
        and this has caused various crashes because code usually assumes we always have a drawing area.

        This patch also drops various drawing area null checks that were added to address PSON crashes.

        * UIProcess/SuspendedPageProxy.cpp:
        (WebKit::SuspendedPageProxy::tearDownDrawingAreaInWebProcess): Deleted.
        * UIProcess/SuspendedPageProxy.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::suspendCurrentPageIfPossible):
        (WebKit::WebPageProxy::receivedNavigationPolicyDecision):
        (WebKit::WebPageProxy::didCompletePageTransition):
        (WebKit::WebPageProxy::enterAcceleratedCompositingMode):
        * UIProcess/WebPageProxy.h:
        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::invalidateContentsAndRootView):
        (WebKit::WebChromeClient::invalidateContentsForSlowScroll):
        (WebKit::WebChromeClient::contentsSizeChanged const):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::transitionToCommittedForNewPage):
        * WebProcess/WebPage/RemoteLayerTree/RemoteScrollingCoordinator.mm:
        (WebKit::RemoteScrollingCoordinator::scheduleTreeStateCommit):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::reinitializeWebPage):
        (WebKit::WebPage::exitAcceleratedCompositingMode):
        (WebKit::WebPage::setIsSuspended):
        (WebKit::WebPage::tearDownDrawingAreaForSuspend): Deleted.
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:

2018-10-26  Antti Koivisto  <antti@apple.com>

        Use random() instead of begin() to limit cache sizes
        https://bugs.webkit.org/show_bug.cgi?id=190957

        Reviewed by Chris Dumez.

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::didCollectPrewarmInformation):

2018-10-26  Chris Dumez  <cdumez@apple.com>

        Modernize / Simplify IPC::Connection::sendOutgoingMessage()
        https://bugs.webkit.org/show_bug.cgi?id=190931

        Reviewed by Alex Christensen.

        * Platform/IPC/mac/ConnectionMac.mm:
        (IPC::Connection::sendOutgoingMessage):

2018-10-26  Jer Noble  <jer.noble@apple.com>

        Adopt -setOverrideRouteSharingPolicy:routingContextUID: SPI
        https://bugs.webkit.org/show_bug.cgi?id=190951
        <rdar://problem/45213065>

        Reviewed by Alex Christensen.

        Add an asyncronous reply request to VideoFullscreenManager.

        Drive-by fix: messages.py generates "WTFMove(*arg1, *arg2)" instead of "WTFMove(*arg1), WTFMove(*arg2)"
        in its reply handler generation.

        * Platform/IPC/MessageSender.h:
        (IPC::MessageSender::sendWithAsyncReply):
        * Scripts/webkit/messages.py:
        * UIProcess/Cocoa/VideoFullscreenManagerProxy.h:
        * UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:
        (WebKit::VideoFullscreenModelContext::requestRouteSharingPolicyAndContextUID):
        * WebProcess/cocoa/VideoFullscreenManager.h:
        * WebProcess/cocoa/VideoFullscreenManager.messages.in:
        * WebProcess/cocoa/VideoFullscreenManager.mm:
        (WebKit::VideoFullscreenManager::requestRouteSharingPolicyAndContextUID):

2018-10-25  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed, another try at fixing the GTK build with sandbox enabled

        * UIProcess/Launcher/glib/BubblewrapLauncher.cpp:
        (WebKit::memfd_create): Deleted.

2018-10-25  Antoine Quint  <graouts@apple.com>

        [Web Animations] Turn Web Animations CSS Integration off by default
        https://bugs.webkit.org/show_bug.cgi?id=190901

        Reviewed by Dean Jackson.

        * Shared/WebPreferences.yaml:

2018-10-25  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed, try to fix GTK build with sandbox enabled

        * UIProcess/Launcher/glib/BubblewrapLauncher.cpp:

2018-10-25  Claudio Saavedra  <csaavedra@igalia.com>

        [WPE][GTK] Follow-up fixes to the certificate coders
        https://bugs.webkit.org/show_bug.cgi?id=190900

        Reviewed by Michael Catanzaro.

        Cleanup the GRefPtr mess I created earlier. Also we now bail out
        if any certificate in the chain has no data instead of returning a
        cropped chain.

        * Shared/soup/WebCoreArgumentCodersSoup.cpp:
        (IPC::ArgumentCoder<CertificateInfo>::encode):
        (IPC::ArgumentCoder<CertificateInfo>::decode):

2018-10-25  Zan Dobersek  <zdobersek@igalia.com>

        [GTK][AC] Resizing the window doesn't always update the visible rect
        https://bugs.webkit.org/show_bug.cgi?id=189743

        Reviewed by Michael Catanzaro.

        Disassociate resizing that can be done on an AcceleratedSurface object
        between "host resizes" and "client resizes".

        The former is done from ThreadedCoordinatedLayerTreeHost directly, and
        is currently used only for GTK on X11, where a new pixmap object is
        created on each resize, which affects the context ID that is based on
        that pixmap object's address.

        The latter is done from the composition thread. It's used for GTK on
        Wayland and WPE. In both cases, the underlying window object does not
        change on each resize, but it's necessary to perform the actual resize
        on the composition thread.

        So far it hasn't been performed there, which ended up pushing sizes of
        the WebKit view and the underlying window object out of sync during
        resizing, leaving parts of window unrendered.

        * Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:
        (WebKit::ThreadedCompositor::renderLayerTree):
        * Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.h:
        * WebProcess/WebPage/AcceleratedSurface.cpp:
        (WebKit::AcceleratedSurface::hostResize):
        (WebKit::AcceleratedSurface::resize): Deleted.
        * WebProcess/WebPage/AcceleratedSurface.h:
        (WebKit::AcceleratedSurface::clientResize):
        * WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.cpp:
        (WebKit::ThreadedCoordinatedLayerTreeHost::deviceOrPageScaleFactorChanged):
        (WebKit::ThreadedCoordinatedLayerTreeHost::sizeDidChange):
        * WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.h:
        * WebProcess/WebPage/gtk/AcceleratedSurfaceWayland.cpp:
        (WebKit::AcceleratedSurfaceWayland::clientResize):
        (WebKit::AcceleratedSurfaceWayland::resize): Deleted.
        * WebProcess/WebPage/gtk/AcceleratedSurfaceWayland.h:
        * WebProcess/WebPage/gtk/AcceleratedSurfaceX11.cpp:
        (WebKit::AcceleratedSurfaceX11::hostResize):
        (WebKit::AcceleratedSurfaceX11::resize): Deleted.
        * WebProcess/WebPage/gtk/AcceleratedSurfaceX11.h:
        * WebProcess/WebPage/wpe/AcceleratedSurfaceWPE.cpp:
        (WebKit::AcceleratedSurfaceWPE::clientResize):
        (WebKit::AcceleratedSurfaceWPE::resize): Deleted.
        * WebProcess/WebPage/wpe/AcceleratedSurfaceWPE.h:

2018-10-24  Alexey Proskuryakov  <ap@apple.com>

        Clean up some obsolete macOS version guards
        https://bugs.webkit.org/show_bug.cgi?id=190887

        Reviewed by Dan Bernstein.

        * PluginProcess/mac/com.apple.WebKit.plugin-common.sb.in:
        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        (WebKit::WebProcessPool::platformInitializeWebProcess):

2018-10-24  Megan Gardner  <megan_gardner@apple.com>

        Turn on Conic Gradients
        https://bugs.webkit.org/show_bug.cgi?id=190810

        Reviewed by Tim Horton.

        Remove conic gradients from experimental features and turn it on always.

        * Configurations/FeatureDefines.xcconfig:
        * Shared/WebPreferences.yaml:

2018-10-24  Said Abou-Hallawa  <sabouhallawa@apple.com>

        Cleanup: MIMETypeRegistry functions
        https://bugs.webkit.org/show_bug.cgi?id=190838

        Reviewed by Simon Fraser.

        * UIProcess/Cocoa/WKWebViewContentProviderRegistry.mm:
        (-[WKWebViewContentProviderRegistry initWithConfiguration:]):

2018-10-24  Chris Dumez  <cdumez@apple.com>

        REGRESSION (r237257): [iOS] Crashes in com.apple.WebKit: WebKit::RemoteScrollingCoordinator::scheduleTreeStateCommit
        https://bugs.webkit.org/show_bug.cgi?id=190804

        Reviewed by Alex Christensen.

        Fix null-dereference of the drawing area in RemoteScrollingCoordinator::scheduleTreeStateCommit.
        With process-swap-on-navigation enabled, suspended pages' drawing area gets torn down.

        * WebProcess/WebPage/RemoteLayerTree/RemoteScrollingCoordinator.mm:
        (WebKit::RemoteScrollingCoordinator::scheduleTreeStateCommit):

2018-10-24  Claudio Saavedra  <csaavedra@igalia.com>

        [WPE][GTK] Cleanups to the certificate decoder
        https://bugs.webkit.org/show_bug.cgi?id=190867

        Reviewed by Žan Doberšek.

        * Shared/soup/WebCoreArgumentCodersSoup.cpp:
        (IPC::ArgumentCoder<CertificateInfo>::decode):

2018-10-24  Claudio Saavedra  <csaavedra@igalia.com>

        [WPE][GTK] Cleanups to the certificate encoder
        https://bugs.webkit.org/show_bug.cgi?id=190865

        Reviewed by Žan Doberšek.

        * Shared/soup/WebCoreArgumentCodersSoup.cpp:
        (IPC::ArgumentCoder<CertificateInfo>::encode):

2018-10-23  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r237261.

        The layout test for this change crashes under GuardMalloc.

        Reverted changeset:

        "Handle MDNS resolution of candidates through libwebrtc
        directly"
        https://bugs.webkit.org/show_bug.cgi?id=190681
        https://trac.webkit.org/changeset/237261

2018-10-23  David Kilzer  <ddkilzer@apple.com>

        Fix false positive leaks when using custom -init methods that don't start with -init
        <https://webkit.org/b/190818>
        <rdar://problem/45476042>

        Reviewed by Dan Bernstein.

        * UIProcess/Cocoa/WKWebViewContentProvider.h:
        (-[WKWebViewContentProvider web_initWithFrame:webView:mimeType:]):
        Add attribute to make this behave like an -init method.

2018-10-23  Chris Dumez  <cdumez@apple.com>

        [PSON] Add support for cross-site client-side redirects
        https://bugs.webkit.org/show_bug.cgi?id=190806
        <rdar://problem/45047344>

        Reviewed by Geoffrey Garen.

        * Shared/LoadParameters.cpp:
        (WebKit::LoadParameters::encode const):
        (WebKit::LoadParameters::decode):
        * Shared/LoadParameters.h:
        * Shared/NavigationActionData.cpp:
        (WebKit::NavigationActionData::encode const):
        (WebKit::NavigationActionData::decode):
        * Shared/NavigationActionData.h:
        * Shared/WebBackForwardListItem.cpp:
        (WebKit::WebBackForwardListItem::setSuspendedPage):
        * UIProcess/API/APINavigation.h:
        (API::Navigation::setLockHistory):
        (API::Navigation::lockHistory const):
        (API::Navigation::setLockBackForwardList):
        (API::Navigation::lockBackForwardList const):
        (API::Navigation::setClientRedirectSourceForHistory):
        (API::Navigation::clientRedirectSourceForHistory const):
        * UIProcess/API/APINavigationClient.h:
        (API::NavigationClient::willPerformClientRedirect):
        (API::NavigationClient::didPerformClientRedirect):
        * UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h:
        * UIProcess/Cocoa/NavigationState.h:
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::setNavigationDelegate):
        (WebKit::NavigationState::NavigationClient::didPerformClientRedirect):
        * UIProcess/FrameLoadState.h:
        (WebKit::FrameLoadState::setURL):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::loadRequestWithNavigation):
        (WebKit::WebPageProxy::continueNavigationInNewProcess):
        (WebKit::WebPageProxy::decidePolicyForNavigationAction):
        (WebKit::WebPageProxy::didPerformClientRedirect):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::loadRequest):
        (WebKit::WebPage::setCurrentHistoryItemForReattach):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:

2018-10-23  Claudio Saavedra  <csaavedra@igalia.com>

        [WPE][GTK] Pass full certificate chain in CertificateInfo coder
        https://bugs.webkit.org/show_bug.cgi?id=190789

        Reviewed by Michael Catanzaro.

        When the network process serializes certificate data to other
        processes through the argument coders, the certificate chain, if
        present, is lost. In practice this means that applications using
        the public API to process certificate info have no details on the
        certificate chain, other than the very basics included in the
        certificate. Serialize the entire chain if available in the
        certificate.

        * Shared/soup/WebCoreArgumentCodersSoup.cpp:
        (IPC::ArgumentCoder<CertificateInfo>::encode): Encode the
        certificate chain if present.
        (IPC::ArgumentCoder<CertificateInfo>::decode): Decode the
        entire certificate chain and rebuild it.

2018-10-22  Keith Rollin  <krollin@apple.com>

        Use Location = "Relative to Build Products" rather than "Relative to Group"
        https://bugs.webkit.org/show_bug.cgi?id=190781

        Reviewed by Alexey Proskuryakov.

        Almost all Derived Files are included in Xcode projects with the
        Location attribute set to "Relative to Group". While this currently
        works, the Derived Files can no longer be found when enabling XCBuild
        (which has stricter requirements). Fix this by setting the Location
        attribute to "Relative to Build Products".

        * WebKit.xcodeproj/project.pbxproj:

2018-10-22  Tim Horton  <timothy_horton@apple.com>

        Don't waste time under -setupInteraction under -initWithFrame for unparented WKWebViews
        https://bugs.webkit.org/show_bug.cgi?id=190801
        <rdar://problem/43674361>

        Reviewed by Megan Gardner.

        * UIProcess/ios/WKContentView.mm:
        (-[WKContentView _commonInitializationWithProcessPool:configuration:]):
        (-[WKContentView didMoveToWindow]):
        Defer the first call to WKContentViewInteraction's -setupInteraction
        until the view is parented. This avoids a few milliseconds of unnecessary
        work for views that are never parented.

        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView setupInteraction]):
        (-[WKContentView cleanupInteraction]):
        Keep track of the current state of WKContentViewInteraction's gestures.
        Use this to make it OK to call -setupInteraction multiple times.

2018-10-22  Chris Dumez  <cdumez@apple.com>

        Deque's contains() and findIf() should be const
        https://bugs.webkit.org/show_bug.cgi?id=190796

        Reviewed by Antti Koivisto.

        Mark method as const now that Deque's implementation allows it to be.

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::hasSuspendedPageProxyFor const):
        (WebKit::WebProcessPool::hasSuspendedPageProxyFor): Deleted.
        * UIProcess/WebProcessPool.h:

2018-10-19  Brent Fulgham  <bfulgham@apple.com>

        Allow WebContent process to check some file system features
        https://bugs.webkit.org/show_bug.cgi?id=190768
        <rdar://problem/45377609>

        Reviewed by Alexey Proskuryakov.

        This patch unblocks some IOKit properties that are needed by lower level frameworks to make decisions
        about how to efficiently use the file system.

        * WebProcess/com.apple.WebProcess.sb.in:

2018-10-19  Stephan Szabo  <stephan.szabo@sony.com>

        [WinCairo] Search terms are not saved for <input type="search">
        https://bugs.webkit.org/show_bug.cgi?id=188174

        Reviewed by Fujii Hironori.

        Add support for saving the search terms for <input
        type="search"> to a SQLite database, replacing the
        CF-based implementation for Windows and adding support
        for non-legacy WebKit.

        * UIProcess/win/WebPageProxyWin.cpp:
        (WebKit::WebPageProxy::saveRecentSearches): Use SQLite database
        implementation in WebCore::SearchPopupMenuDB to save search
        terms
        (WebKit::WebPageProxy::loadRecentSearches): Use SQLite database
        implementation in WebCore::SearchPopupMenuDB to load search
        terms

2018-10-19  Alex Christensen  <achristensen@webkit.org>

        WebDataListSuggestionsDropdown should use a WeakPtr
        https://bugs.webkit.org/show_bug.cgi?id=190763
        <rdar://problem/45417449>

        Reviewed by Tim Horton.

        Nothing suspicious here. It's just good practice to not keep raw pointers that aren't reset when the object they point to are destroyed.

        * UIProcess/WebDataListSuggestionsDropdown.cpp:
        (WebKit::WebDataListSuggestionsDropdown::WebDataListSuggestionsDropdown):
        (WebKit::WebDataListSuggestionsDropdown::close):
        * UIProcess/WebDataListSuggestionsDropdown.h:
        (WebKit::WebDataListSuggestionsDropdown::Client::~Client): Deleted.
        * UIProcess/WebPageProxy.h:
        * UIProcess/ios/WebDataListSuggestionsDropdownIOS.h:
        * UIProcess/ios/WebDataListSuggestionsDropdownIOS.mm:
        (WebKit::WebDataListSuggestionsDropdownIOS::create):
        (WebKit::WebDataListSuggestionsDropdownIOS::WebDataListSuggestionsDropdownIOS):
        (WebKit::WebDataListSuggestionsDropdownIOS::close):
        (WebKit::WebDataListSuggestionsDropdownIOS::didSelectOption):
        * UIProcess/mac/WebDataListSuggestionsDropdownMac.h:
        * UIProcess/mac/WebDataListSuggestionsDropdownMac.mm:
        (WebKit::WebDataListSuggestionsDropdownMac::create):
        (WebKit::WebDataListSuggestionsDropdownMac::WebDataListSuggestionsDropdownMac):
        (WebKit::WebDataListSuggestionsDropdownMac::didSelectOption):
        (WebKit::WebDataListSuggestionsDropdownMac::selectOption):

2018-10-19  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] [Datalist] Can't pick datalist suggestions in a stock WKWebView
        https://bugs.webkit.org/show_bug.cgi?id=190621
        <rdar://problem/45310649>

        Reviewed by Tim Horton.

        Fixes the bug by refactoring datalist suggestion information on iOS; currently, we override text suggestions on
        _WKFormInputSession. This only works for a few internal clients (including Safari) that set a _WKInputDelegate
        and also implement either -_webView:willStartInputSession: or -_webView:didStartInputSession:, which is
        necessary in order to ensure that WebKit creates and maintains a form input session.

        The two pieces of information that datalist code needs to vend to WKContentView are a list of UITextSuggestions
        and a custom input view, which are both currently properties of _WKFormInputSession. This patch lifts these out
        of the input session and makes them properties of WKContentView, which are used in
        WebDataListSuggestionsDropdownIOS.

        Test: fast/forms/datalist/datalist-textinput-suggestions-order.html

        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:

        Add new properties to WKContentView: an input view for datalist suggestions, and a list of text suggestions.

        (-[WKFormInputSession setSuggestions:]):
        (-[WKContentView setupInteraction]):
        (-[WKContentView cleanupInteraction]):
        (-[WKContentView _endEditing]):

        Pull out common logic when resigning first responder or tabbing to the next or previous text field into a new
        helper. This helper notifies `_inputPeripheral`, `_formInputSession`, and `_dataListTextSuggestionsInputView`
        when editing has ended; the input peripheral and suggestions input view use this chance to send the value of the
        form control to the web process.

        (-[WKContentView resignFirstResponderForWebView]):
        (-[WKContentView inputView]):

        If a custom input view is not set but we have an input view for a datalist's text suggestions, use the datalist
        input view.

        (-[WKContentView accessoryTab:]):
        (-[WKContentView _stopAssistingNode]):

        Clear datalist state on WKContentView.

        (-[WKContentView dataListTextSuggestionsInputView]):
        (-[WKContentView dataListTextSuggestions]):
        (-[WKContentView setDataListTextSuggestionsInputView:]):
        (-[WKContentView setDataListTextSuggestions:]):
        (-[WKContentView updateTextSuggestionsForInputDelegate]):

        Pull out logic for setting suggestions on UIKit's `inputDelegate` (i.e. UIKeyboardImpl). We now first consult
        internally-vended text suggestions from _WKFormInputSession; if an internal client has not overridden our text
        suggestions, then we simply use suggestions from the current datalist (if present).

        * UIProcess/ios/WebDataListSuggestionsDropdownIOS.mm:
        (-[WKDataListSuggestionsPicker updateWithInformation:]):
        (-[WKDataListSuggestionsPicker showSuggestionsDropdown:activationType:]):
        (-[WKDataListSuggestionsPicker invalidate]):
        (-[WKDataListSuggestionsPopover updateWithInformation:]):
        (-[WKDataListSuggestionsPopover showSuggestionsDropdown:activationType:]):
        (-[WKDataListSuggestionsPopover didSelectOptionAtIndex:]):

        Change all the places that currently manipulate WKContentView's form input session to directly set text
        suggestions and the text suggestion input view on the content view instead.

2018-10-19  John Wilander  <wilander@apple.com>

        Only cap lifetime of persistent cookies created client-side through document.cookie when resource load statistics is enabled
        https://bugs.webkit.org/show_bug.cgi?id=190687
        <rdar://problem/45349024>

        Reviewed by Alex Christensen.

        This patch adds the following:
        - The WebProcessPool now tells the WebsiteDataStore when a network process has
            been created.
        - The WebsiteDataStore in turn tells the WebResourceLoadStatisticsStore when
            a network process has been created.
        - The WebResourceLoadStatisticsStore makes sure to update the network processes
            with its cookie policy when it's notified that a network process has been
            created.

        In addition, this patch changes the following:
        - The ResourceLoadStatisticsMemoryStore no longer keeps track of which domains
            it has told the network process to block cookies for. The reason is that
            we cannot assume that there is only one network process so we should
            always send complete blocking data.
        - The ResourceLoadStatisticsMemoryStore's functions for communicating cookie
            blocking state to the network process no longer take and forward the
            "clear first" parameter. This is because complete data is sent every time
            and thus the network process' set is always cleared on an update.
        - Removes WebsiteDataStore::networkProcessDidCrash() and
            WebResourceLoadStatisticsStore::scheduleCookieBlockingStateReset() since
            the call site---WebProcessPool::ensureNetworkProcess()---now calls
            WebsiteDataStore::didCreateNetworkProcess() after a network process
            crash and the state sync for cookie blocking is triggered.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::updatePrevalentDomainsToBlockCookiesFor):
        (WebKit::NetworkProcess::setShouldCapLifetimeForClientSideCookies):
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::updatePrevalentDomainsToBlockCookiesFor):
        (WebKit::NetworkProcessProxy::setShouldCapLifetimeForClientSideCookies):
        (WebKit::NetworkProcessProxy::didSetShouldCapLifetimeForClientSideCookies):
        * UIProcess/Network/NetworkProcessProxy.h:
        * UIProcess/Network/NetworkProcessProxy.messages.in:
        * UIProcess/ResourceLoadStatisticsMemoryStore.cpp:
        (WebKit::ResourceLoadStatisticsMemoryStore::clear):
        (WebKit::ResourceLoadStatisticsMemoryStore::updateCookieBlocking):
        (WebKit::ResourceLoadStatisticsMemoryStore::updateCookieBlockingForDomains):
        (WebKit::ResourceLoadStatisticsMemoryStore::clearBlockingStateForDomains):
        (WebKit::ResourceLoadStatisticsMemoryStore::resetCookieBlockingState): Deleted.
        * UIProcess/ResourceLoadStatisticsMemoryStore.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::ensureNetworkProcess):
        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::didCreateNetworkProcess):
        (WebKit::WebResourceLoadStatisticsStore::scheduleCookieBlockingUpdateForDomains):
        (WebKit::WebResourceLoadStatisticsStore::scheduleClearInMemoryAndPersistent):
        (WebKit::WebResourceLoadStatisticsStore::callUpdatePrevalentDomainsToBlockCookiesForHandler):
        (WebKit::WebResourceLoadStatisticsStore::scheduleCookieBlockingStateReset): Deleted.
        * UIProcess/WebResourceLoadStatisticsStore.h:
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::updatePrevalentDomainsToBlockCookiesFor):
        (WebKit::WebsiteDataStore::setShouldCapLifetimeForClientSideCookies):
        (WebKit::WebsiteDataStore::didCreateNetworkProcess):
        (WebKit::WebsiteDataStore::networkProcessDidCrash): Deleted.
        * UIProcess/WebsiteData/WebsiteDataStore.h:

2018-10-19  Alex Christensen  <achristensen@webkit.org>

        Rebase python tests.

        * Scripts/webkit/messages_unittest.py:

2018-10-19  Alex Christensen  <achristensen@webkit.org>

        Rebase python tests.

        * Scripts/Makefile:
        * Scripts/webkit/MessageReceiver-expected.cpp:
        * Scripts/webkit/Messages-expected.h:

2018-10-19  Alex Christensen  <achristensen@webkit.org>

        Mark LegacySync IPC messages
        https://bugs.webkit.org/show_bug.cgi?id=190759

        Reviewed by Tim Horton.

        * NetworkProcess/NetworkConnectionToWebProcess.messages.in:
        * NetworkProcess/NetworkProcess.messages.in:
        * NetworkProcess/ServiceWorker/WebSWServerConnection.messages.in:
        * Platform/IPC/HandleMessage.h:
        (IPC::handleMessageLegacySync):
        * PluginProcess/PluginControllerProxy.messages.in:
        * Scripts/webkit/messages.py:
        * Shared/Plugins/NPObjectMessageReceiver.messages.in:
        * UIProcess/ApplePay/WebPaymentCoordinatorProxy.messages.in:
        * UIProcess/Cocoa/UserMediaCaptureManagerProxy.messages.in:
        * UIProcess/Plugins/PluginProcessProxy.messages.in:
        * UIProcess/WebFullScreenManagerProxy.messages.in:
        * UIProcess/WebPageProxy.messages.in:
        * UIProcess/WebPasteboardProxy.messages.in:
        * UIProcess/WebProcessPool.messages.in:
        * UIProcess/WebProcessProxy.messages.in:
        * UIProcess/WebStorage/StorageManager.messages.in:
        * UIProcess/mac/SecItemShimProxy.messages.in:
        * WebProcess/Plugins/PluginProcessConnection.messages.in:
        * WebProcess/Plugins/PluginProxy.messages.in:
        * WebProcess/WebPage/WebPage.messages.in:
        * WebProcess/WebProcess.messages.in:

2018-10-19  Alex Christensen  <achristensen@webkit.org>

        Update and add python tests after r237294
        https://bugs.webkit.org/show_bug.cgi?id=190746

        * Scripts/Makefile: Added to help updating expectations.
        * Scripts/webkit/LegacyMessageReceiver-expected.cpp:
        * Scripts/webkit/MessageReceiverSuperclass-expected.cpp:
        (Messages::WebPage::TestAsyncMessage::callReply):
        (Messages::WebPage::TestAsyncMessage::cancelReply):
        (Messages::WebPage::TestAsyncMessage::send):
        (WebKit::WebPage::didReceiveMessage):
        * Scripts/webkit/MessagesSuperclass-expected.h:
        (Messages::WebPage::TestAsyncMessage::receiverName):
        (Messages::WebPage::TestAsyncMessage::name):
        (Messages::WebPage::TestAsyncMessage::asyncMessageReplyName):
        (Messages::WebPage::TestAsyncMessage::TestAsyncMessage):
        (Messages::WebPage::TestAsyncMessage::arguments const):
        * Scripts/webkit/test-superclass-messages.in:
        Adding the extra newline made python tests fail.
        I also added more tests for the new functionality introduced in r237924.

2018-10-19  Alex Christensen  <achristensen@webkit.org>

        Introduce CompletionHandler-based Async IPC messages with replies
        https://bugs.webkit.org/show_bug.cgi?id=190746

        Reviewed by Tim Horton.

        Before this patch, to make an asynchronous IPC message with a reply you had to find two objects that
        can talk to each other, make two new message types, send a generated identifier, keep track of that
        identifier, make a HashMap somewhere to store the object waiting for the response, and hook it all up.
        What a mess.  No wonder people take shortcuts and make strange design decisions.

        Now, you can just use a CompletionHandler and mark the reply as Async in *.messages.in.
        I've adopted this with a message whose behavior is covered by the storage/indexeddb/modern/blob-cursor.html
        layout test and many others.  I intent to refine and further adopt this incrementally.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::getSandboxExtensionsForBlobFiles):
        (WebKit::NetworkProcess::didGetSandboxExtensionsForBlobFiles): Deleted.
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:
        This is representative of how code will be simplified with greater adoption. 
        * NetworkProcess/NetworkResourceLoadParameters.cpp:
        (WebKit::NetworkResourceLoadParameters::decode):
        Modernize HandleArray decoding.
        * Platform/IPC/Connection.cpp:
        (IPC::Connection::dispatchMessage):
        (IPC::nextAsyncReplyHandlerID):
        (IPC::asyncReplyHandlerMap):
        Handle async replies when looking at incoming messages from the sending process.
        * Platform/IPC/Connection.h:
        (IPC::Connection::sendWithAsyncReply):
        Send a message with an async reply and prepare the reply receiver.
        * Platform/IPC/Encoder.h:
        Make the uint64_t encoder public so we can use it when encoding the listenerID.
        * Platform/IPC/HandleMessage.h:
        (IPC::handleMessageAsync):
        Handle an asynchronous message with a reply from the receiving process.
        This is similar to how DelayedReply messages are handled, but the listenerID is automatically captured and sent back.
        * Scripts/webkit/messages.py:
        Generate code for async message replies.
        * Shared/Databases/IndexedDB/WebIDBResult.cpp:
        (WebKit::WebIDBResult::decode):
        * Shared/SandboxExtension.h:
        (WebKit::SandboxExtension::HandleArray::at):
        (WebKit::SandboxExtension::HandleArray::decode):
        * Shared/WebProcessCreationParameters.cpp:
        (WebKit::WebProcessCreationParameters::decode):
        * Shared/mac/SandboxExtensionMac.mm:
        (WebKit::SandboxExtension::HandleArray::decode):
        Modernize the decoding of HandleArray to work with generated decoding.
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::getSandboxExtensionsForBlobFiles):
        * UIProcess/Network/NetworkProcessProxy.h:
        * UIProcess/Network/NetworkProcessProxy.messages.in:
        This is also representative of how code will be simplified with greater adoption.
        * WebProcess/MediaStream/MediaDeviceSandboxExtensions.cpp:
        (WebKit::MediaDeviceSandboxExtensions::decode):
        Modernize HandleArray decoding.

2018-10-19  Chris Dumez  <cdumez@apple.com>

        [PSON] WebPageProxy::didCompletePageTransition() may interact with a SuspendedPageProxy from a previous navigation
        https://bugs.webkit.org/show_bug.cgi?id=190717

        Reviewed by Antti Koivisto.

        WebPageProxy::didCompletePageTransition() may interact with a SuspendedPageProxy from a previous navigation. We need
        to reset m_lastSuspendedPage whenever the page starts a new navigation as m_lastSuspendedPage is only updated when
        we process-swap otherwise.

        Also rename the data member to m_pageSuspendedDueToCurrentNavigation for clarity.

        In a follow-up, I will see if I can get rid of this data member entirely or maybe move it to the Navigation
        object.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::suspendCurrentPageIfPossible):
        (WebKit::WebPageProxy::receivedNavigationPolicyDecision):
        (WebKit::WebPageProxy::didCompletePageTransition):
        (WebKit::WebPageProxy::enterAcceleratedCompositingMode):

2018-10-18  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] Allow ports to optionally do screen capture in the UI process
        https://bugs.webkit.org/show_bug.cgi?id=190728
        <rdar://problem/45376824>

        Reviewed by Jer Noble and Tim Horton.

        * Shared/WebProcessCreationParameters.cpp:
        (WebKit::WebProcessCreationParameters::encode const): Encode shouldCaptureDisplayInUIProcess.
        (WebKit::WebProcessCreationParameters::decode): Decode shouldCaptureDisplayInUIProcess.
        * Shared/WebProcessCreationParameters.h:

        * UIProcess/API/APIProcessPoolConfiguration.cpp:
        (API::ProcessPoolConfiguration::copy): Copy shouldCaptureDisplayInUIProcess.
        * UIProcess/API/APIProcessPoolConfiguration.h:

        * UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
        (WebKit::UserMediaCaptureManagerProxy::SourceProxy::remoteVideoSampleAvailable):
        (WebKit::UserMediaCaptureManagerProxy::createMediaSourceForCaptureDeviceWithConstraints): Remove
        RealtimeMediaSource::Type parameter, CaptureDevice has the same information. Deal with display
        capture "devices".
        * UIProcess/Cocoa/UserMediaCaptureManagerProxy.h:
        * UIProcess/Cocoa/UserMediaCaptureManagerProxy.messages.in:

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::initializeNewWebProcess): Copy shouldCaptureDisplayInUIProcess.

        * WebProcess/cocoa/UserMediaCaptureManager.cpp:
        (WebKit::UserMediaCaptureManager::Source::Source): Only allocate a ring buffer for Audio sources.
        (WebKit::UserMediaCaptureManager::Source::~Source): Same for deallocate.
        (WebKit::UserMediaCaptureManager::Source::storage): m_ringBuffer is a pointer.
        (WebKit::UserMediaCaptureManager::Source::setStorage): Ditto.
        (WebKit::UserMediaCaptureManager::Source::setRingBufferFrameBounds): Ditto.
        (WebKit::UserMediaCaptureManager::Source::audioSamplesAvailable): Ditto.
        (WebKit::UserMediaCaptureManager::Source::remoteVideoSampleAvailable): Create a 
        PixelBuffer-backed media sample and call videoSampleAvailable.
        (WebKit::UserMediaCaptureManager::~UserMediaCaptureManager): Clear the audio and display capture
        factory overrides.
        (WebKit::UserMediaCaptureManager::initialize): Set the audio and display capture factory overrides.
        (WebKit::UserMediaCaptureManager::createCaptureSource):
        (WebKit::UserMediaCaptureManager::remoteVideoSampleAvailable):
        * WebProcess/cocoa/UserMediaCaptureManager.h:
        * WebProcess/cocoa/UserMediaCaptureManager.messages.in:

2018-10-18  Truitt Savell  <tsavell@apple.com>

        Unreviewed, rolling out r237272.

        Broke on device iOS builds and Windows builds

        Reverted changeset:

        "[MediaStream] Allow ports to optionally do screen capture in
        the UI process"
        https://bugs.webkit.org/show_bug.cgi?id=190728
        https://trac.webkit.org/changeset/237272

2018-10-18  Jer Noble  <jer.noble@apple.com>

        Enable WKPreferences._lowPowerVideoAudioBufferSizeEnabled by default
        https://bugs.webkit.org/show_bug.cgi?id=190315

        Reviewed by Eric Carlson.

        This preference is disabled for WebKitLegacy because it can interact poorly with clients' own use of audio.
        It can be enabled for WebKit since it will only affect the WebProcess and not the client process.

        * Shared/WebPreferences.yaml:

2018-10-18  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] Allow ports to optionally do screen capture in the UI process
        https://bugs.webkit.org/show_bug.cgi?id=190728
        <rdar://problem/45376824>

        Reviewed by Jer Noble and Tim Horton.

        * Shared/WebProcessCreationParameters.cpp:
        (WebKit::WebProcessCreationParameters::encode const): Encode shouldCaptureDisplayInUIProcess.
        (WebKit::WebProcessCreationParameters::decode): Decode shouldCaptureDisplayInUIProcess.
        * Shared/WebProcessCreationParameters.h:

        * UIProcess/API/APIProcessPoolConfiguration.cpp:
        (API::ProcessPoolConfiguration::copy): Copy shouldCaptureDisplayInUIProcess.
        * UIProcess/API/APIProcessPoolConfiguration.h:

        * UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
        (WebKit::UserMediaCaptureManagerProxy::SourceProxy::remoteVideoSampleAvailable):
        (WebKit::UserMediaCaptureManagerProxy::createMediaSourceForCaptureDeviceWithConstraints): Remove
        RealtimeMediaSource::Type parameter, CaptureDevice has the same information. Deal with display
        capture "devices".
        * UIProcess/Cocoa/UserMediaCaptureManagerProxy.h:
        * UIProcess/Cocoa/UserMediaCaptureManagerProxy.messages.in:

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::initializeNewWebProcess): Copy shouldCaptureDisplayInUIProcess.

        * WebProcess/cocoa/UserMediaCaptureManager.cpp:
        (WebKit::UserMediaCaptureManager::Source::Source): Only allocate a ring buffer for Audio sources.
        (WebKit::UserMediaCaptureManager::Source::~Source): Same for deallocate.
        (WebKit::UserMediaCaptureManager::Source::storage): m_ringBuffer is a pointer.
        (WebKit::UserMediaCaptureManager::Source::setStorage): Ditto.
        (WebKit::UserMediaCaptureManager::Source::setRingBufferFrameBounds): Ditto.
        (WebKit::UserMediaCaptureManager::Source::audioSamplesAvailable): Ditto.
        (WebKit::UserMediaCaptureManager::Source::remoteVideoSampleAvailable): Create a 
        PixelBuffer-backed media sample and call videoSampleAvailable.
        (WebKit::UserMediaCaptureManager::~UserMediaCaptureManager): Clear the audio and display capture
        factory overrides.
        (WebKit::UserMediaCaptureManager::initialize): Set the audio and display capture factory overrides.
        (WebKit::UserMediaCaptureManager::createCaptureSource):
        (WebKit::UserMediaCaptureManager::remoteVideoSampleAvailable):
        * WebProcess/cocoa/UserMediaCaptureManager.h:
        * WebProcess/cocoa/UserMediaCaptureManager.messages.in:

2018-10-18  Chris Dumez  <cdumez@apple.com>

        [PSON] SuspendedPages do not report meaningful domains in Activity Monitor
        https://bugs.webkit.org/show_bug.cgi?id=190721
        <rdar://problem/45059699>

        Reviewed by Alex Christensen.

        SuspendedPages do not report meaningful domains in Activity Monitor, which makes
        debugging harder.

        * WebProcess/cocoa/WebProcessCocoa.mm:
        (WebKit::origin):
        (WebKit::WebProcess::updateActivePages):

2018-10-18  Alexey Proskuryakov  <ap@apple.com>

        Switch from PLATFORM(IOS) to PLATFORM(IOS_FAMILY)
        https://bugs.webkit.org/show_bug.cgi?id=190729

        Reviewed by Tim Horton.

        * DerivedSources.make:
        * NetworkProcess/Downloads/cocoa/DownloadCocoa.mm:
        (WebKit::Download::resume):
        * NetworkProcess/NetworkActivityTracker.h:
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcessCreationParameters.cpp:
        (WebKit::NetworkProcessCreationParameters::encode const):
        (WebKit::NetworkProcessCreationParameters::decode):
        * NetworkProcess/NetworkProcessCreationParameters.h:
        * NetworkProcess/cache/NetworkCacheFileSystem.cpp:
        (WebKit::NetworkCache::isSafeToUseMemoryMapForPath):
        * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
        (WebKit::updateTaskWithFirstPartyForSameSiteCookies):
        * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
        (WebKit::NetworkProcess::platformInitializeNetworkProcessCocoa):
        (WebKit::NetworkProcess::sourceApplicationAuditData const):
        (WebKit::NetworkProcess::platformSyncAllCookies):
        * NetworkProcess/cocoa/NetworkSessionCocoa.h:
        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (-[WKNetworkSessionDelegate URLSession:task:didFinishCollectingMetrics:]):
        (WebKit::NetworkSessionCocoa::NetworkSessionCocoa):
        * NetworkProcess/ios/NetworkProcessIOS.mm:
        * Platform/IPC/mac/ConnectionMac.mm:
        (IPC::ConnectionTerminationWatchdog::ConnectionTerminationWatchdog):
        (IPC::Connection::receiveSourceEventHandler):
        (IPC::AccessibilityProcessSuspendedNotification):
        * Platform/ios/AccessibilityIOS.mm:
        * Platform/mac/LayerHostingContext.mm:
        (WebKit::LayerHostingContext::createForExternalHostingProcess):
        * Platform/spi/Cocoa/DeviceIdentitySPI.h:
        * Platform/spi/ios/CelestialSPI.h:
        * Platform/spi/ios/FrontBoardServicesSPI.h:
        * PluginProcess/mac/PluginProcessShim.mm:
        * Shared/API/Cocoa/WKDataDetectorTypesInternal.h:
        * Shared/API/Cocoa/WebKit.m:
        * Shared/AssistedNodeInformation.cpp:
        * Shared/AssistedNodeInformation.h:
        * Shared/CacheModel.cpp:
        (WebKit::calculateURLCacheSizes):
        * Shared/ChildProcess.cpp:
        * Shared/Cocoa/APIObject.mm:
        (API::Object::newObject):
        * Shared/Cocoa/WebKit2InitializeCocoa.mm:
        (WebKit::runInitializationCode):
        * Shared/DrawingAreaInfo.h:
        * Shared/EditorState.cpp:
        (WebKit::EditorState::encode const):
        (WebKit::EditorState::decode):
        (WebKit::EditorState::PostLayoutData::encode const):
        (WebKit::EditorState::PostLayoutData::decode):
        (WebKit::operator<<):
        * Shared/EditorState.h:
        * Shared/EntryPointUtilities/mac/XPCService/XPCServiceEntryPoint.mm:
        (WebKit::XPCServiceInitializerDelegate::checkEntitlements):
        * Shared/EntryPointUtilities/mac/XPCService/XPCServiceMain.mm:
        (WebKit::XPCServiceMain):
        * Shared/NativeWebKeyboardEvent.h:
        * Shared/NativeWebMouseEvent.h:
        * Shared/NativeWebTouchEvent.h:
        * Shared/PrintInfo.cpp:
        (WebKit::PrintInfo::encode const):
        (WebKit::PrintInfo::decode):
        * Shared/PrintInfo.h:
        * Shared/RemoteLayerTree/RemoteLayerTreePropertyApplier.h:
        * Shared/RemoteLayerTree/RemoteLayerTreePropertyApplier.mm:
        (WebKit::RemoteLayerTreePropertyApplier::applyProperties):
        * Shared/SessionState.cpp:
        (WebKit::FrameState::encode const):
        (WebKit::FrameState::decode):
        * Shared/SessionState.h:
        * Shared/WebCoreArgumentCoders.cpp:
        * Shared/WebCoreArgumentCoders.h:
        * Shared/WebEvent.h:
        * Shared/WebEventConversion.cpp:
        (WebKit::WebKit2PlatformTouchEvent::WebKit2PlatformTouchEvent):
        * Shared/WebKeyboardEvent.cpp:
        * Shared/WebPageCreationParameters.cpp:
        (WebKit::WebPageCreationParameters::encode const):
        (WebKit::WebPageCreationParameters::decode):
        * Shared/WebPageCreationParameters.h:
        * Shared/WebPlatformTouchPoint.cpp:
        * Shared/WebPreferences.yaml:
        * Shared/WebPreferencesDefaultValues.cpp:
        (defaultPassiveTouchListenersAsDefaultOnDocument):
        (defaultCustomPasteboardDataEnabled):
        * Shared/WebPreferencesDefaultValues.h:
        * Shared/WebProcessCreationParameters.cpp:
        (WebKit::WebProcessCreationParameters::encode const):
        (WebKit::WebProcessCreationParameters::decode):
        * Shared/WebProcessCreationParameters.h:
        * Shared/WebTouchEvent.cpp:
        * Shared/cf/ArgumentCodersCF.cpp:
        (IPC::encode):
        (IPC::decode):
        * Shared/cf/ArgumentCodersCF.h:
        * Shared/ios/ChildProcessIOS.mm:
        * Shared/ios/InteractionInformationAtPosition.h:
        * Shared/ios/InteractionInformationAtPosition.mm:
        * Shared/ios/InteractionInformationRequest.cpp:
        * Shared/ios/InteractionInformationRequest.h:
        * Shared/ios/NativeWebKeyboardEventIOS.mm:
        * Shared/ios/NativeWebMouseEventIOS.mm:
        * Shared/ios/NativeWebTouchEventIOS.mm:
        * Shared/ios/WebIOSEventFactory.h:
        * Shared/ios/WebIOSEventFactory.mm:
        * Shared/ios/WebIconUtilities.h:
        * Shared/ios/WebIconUtilities.mm:
        * Shared/mac/ArgumentCodersMac.h:
        * Shared/mac/ArgumentCodersMac.mm:
        * Shared/mac/SandboxExtensionMac.mm:
        * Shared/mac/SecItemShim.cpp:
        (WebKit::initializeSecItemShim):
        * UIProcess/API/APIPageConfiguration.cpp:
        (API::PageConfiguration::copy const):
        * UIProcess/API/APIPageConfiguration.h:
        * UIProcess/API/APIProcessPoolConfiguration.cpp:
        (API::ProcessPoolConfiguration::copy):
        * UIProcess/API/APIProcessPoolConfiguration.h:
        * UIProcess/API/APIUIClient.h:
        * UIProcess/API/C/WKInspector.cpp:
        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetIgnoresViewportScaleLimits):
        * UIProcess/API/C/mac/WKContextPrivateMac.mm:
        (WKContextIsPlugInUpdateAvailable):
        * UIProcess/API/Cocoa/APIAttachmentCocoa.mm:
        * UIProcess/API/Cocoa/APIWebsiteDataStoreCocoa.mm:
        (API::WebsiteDataStore::defaultApplicationCacheDirectory):
        (API::WebsiteDataStore::legacyDefaultApplicationCacheDirectory):
        (API::WebsiteDataStore::legacyDefaultJavaScriptConfigurationDirectory):
        * UIProcess/API/Cocoa/WKNavigationAction.mm:
        (-[WKNavigationAction description]):
        * UIProcess/API/Cocoa/WKPreviewActionItemIdentifiers.mm:
        * UIProcess/API/Cocoa/WKPreviewElementInfo.mm:
        * UIProcess/API/Cocoa/WKProcessGroup.mm:
        (IGNORE_WARNINGS_BEGIN):
        * UIProcess/API/Cocoa/WKProcessPool.mm:
        (-[WKProcessPool _pluginProcessCount]):
        * UIProcess/API/Cocoa/WKWebView.mm:
        (shouldRequireUserGestureToLoadVideo):
        (validate):
        (-[WKWebView _initializeWithConfiguration:]):
        (-[WKWebView _setUpSQLiteDatabaseTrackerClient]):
        (-[WKWebView dealloc]):
        (-[WKWebView allowsLinkPreview]):
        (-[WKWebView setAllowsLinkPreview:]):
        (-[WKWebView _countStringMatches:options:maxCount:]):
        (-[WKWebView _findString:options:maxCount:]):
        (-[WKWebView _hideFindUI]):
        (-[WKWebView _scrollPerformanceData]):
        (-[WKWebView _allowsMediaDocumentInlinePlayback]):
        (-[WKWebView _setAllowsMediaDocumentInlinePlayback:]):
        (-[WKWebView _contentsOfUserInterfaceItem:]):
        (-[WKWebView _internalDoAfterNextPresentationUpdate:withoutWaitingForPainting:withoutWaitingForAnimatedResize:]):
        (-[WKWebView _doAfterNextVisibleContentRectUpdate:]):
        * UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
        (-[WKWebViewConfiguration init]):
        (-[WKWebViewConfiguration encodeWithCoder:]):
        (-[WKWebViewConfiguration initWithCoder:]):
        (-[WKWebViewConfiguration copyWithZone:]):
        (defaultApplicationNameForUserAgent):
        * UIProcess/API/Cocoa/WKWebViewConfigurationInternal.h:
        * UIProcess/API/Cocoa/WKWebViewInternal.h:
        * UIProcess/API/Cocoa/_WKActivatedElementInfo.mm:
        (-[_WKActivatedElementInfo _initWithType:URL:location:title:ID:rect:image:userInfo:]):
        * UIProcess/API/Cocoa/_WKActivatedElementInfoInternal.h:
        * UIProcess/API/Cocoa/_WKAttachment.mm:
        * UIProcess/API/Cocoa/_WKContextMenuElementInfo.mm:
        * UIProcess/API/Cocoa/_WKElementAction.mm:
        * UIProcess/API/Cocoa/_WKElementActionInternal.h:
        * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm:
        * UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.h:
        * UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
        (-[WKPaymentAuthorizationViewControllerDelegate invalidate]):
        (-[WKPaymentAuthorizationViewControllerDelegate paymentAuthorizationViewController:didAuthorizePayment:handler:]):
        (-[WKPaymentAuthorizationViewControllerDelegate paymentAuthorizationViewController:didSelectPaymentMethod:handler:]):
        (-[WKPaymentAuthorizationViewControllerDelegate paymentAuthorizationViewController:didSelectShippingMethod:handler:]):
        (-[WKPaymentAuthorizationViewControllerDelegate paymentAuthorizationViewController:didSelectShippingContact:handler:]):
        (WebKit::WebPaymentCoordinatorProxy::platformCanMakePaymentsWithActiveCard):
        (WebKit::toPKPaymentRequest):
        (WebKit::WebPaymentCoordinatorProxy::platformCompletePaymentSession):
        (WebKit::WebPaymentCoordinatorProxy::platformCompleteShippingMethodSelection):
        (WebKit::WebPaymentCoordinatorProxy::platformCompleteShippingContactSelection):
        (WebKit::WebPaymentCoordinatorProxy::platformCompletePaymentMethodSelection):
        * UIProcess/ApplePay/ios/WebPaymentCoordinatorProxyIOS.mm:
        * UIProcess/ApplicationStateTracker.h:
        * UIProcess/ApplicationStateTracker.mm:
        * UIProcess/Automation/cocoa/WebAutomationSessionCocoa.mm:
        * UIProcess/Automation/ios/WebAutomationSessionIOS.mm:
        * UIProcess/BackgroundProcessResponsivenessTimer.cpp:
        (WebKit::BackgroundProcessResponsivenessTimer::shouldBeActive const):
        * UIProcess/ChildProcessProxy.cpp:
        (WebKit::ChildProcessProxy::shutDownProcess):
        * UIProcess/Cocoa/DownloadClient.h:
        * UIProcess/Cocoa/DownloadClient.mm:
        (WebKit::DownloadClient::takeActivityToken):
        (WebKit::DownloadClient::releaseActivityTokenIfNecessary):
        * UIProcess/Cocoa/LayerRepresentation.h:
        * UIProcess/Cocoa/NavigationState.h:
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::NavigationState):
        (WebKit::NavigationState::didChangeIsLoading):
        * UIProcess/Cocoa/PlaybackSessionManagerProxy.h:
        * UIProcess/Cocoa/PlaybackSessionManagerProxy.messages.in:
        * UIProcess/Cocoa/PlaybackSessionManagerProxy.mm:
        * UIProcess/Cocoa/UIDelegate.h:
        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::UIDelegate::setDelegate):
        (WebKit::UIDelegate::UIClient::decidePolicyForUserMediaPermissionRequest):
        * UIProcess/Cocoa/VersionChecks.h:
        * UIProcess/Cocoa/VersionChecks.mm:
        (WebKit::linkedOnOrAfter):
        * UIProcess/Cocoa/VideoFullscreenManagerProxy.h:
        * UIProcess/Cocoa/VideoFullscreenManagerProxy.messages.in:
        * UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:
        (WebKit::VideoFullscreenManagerProxy::setupFullscreenWithID):
        (WebKit::VideoFullscreenManagerProxy::exitFullscreen):
        (WebKit::VideoFullscreenManagerProxy::preparedToReturnToInline):
        (WebKit::VideoFullscreenManagerProxy::setVideoLayerFrame):
        * UIProcess/Cocoa/ViewGestureController.h:
        * UIProcess/Cocoa/WKShareSheet.mm:
        (-[WKShareSheet presentWithParameters:completionHandler:]):
        * UIProcess/Cocoa/WKWebViewContentProvider.h:
        * UIProcess/Cocoa/WKWebViewContentProviderRegistry.h:
        * UIProcess/Cocoa/WKWebViewContentProviderRegistry.mm:
        * UIProcess/Cocoa/WebPageProxyCocoa.mm:
        * UIProcess/Cocoa/WebPasteboardProxyCocoa.mm:
        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        (WebKit::WebProcessPool::platformResolvePathsForSandboxExtensions):
        (WebKit::WebProcessPool::platformInitializeWebProcess):
        (WebKit::WebProcessPool::platformInitializeNetworkProcess):
        (WebKit::WebProcessPool::registerNotificationObservers):
        (WebKit::WebProcessPool::unregisterNotificationObservers):
        * UIProcess/Gamepad/cocoa/UIGamepadProviderCocoa.mm:
        (WebKit::UIGamepadProvider::platformSetDefaultGamepadProvider):
        * UIProcess/Gamepad/ios/UIGamepadProviderIOS.mm:
        * UIProcess/Launcher/mac/ProcessLauncherMac.mm:
        (WebKit::shouldLeakBoost):
        (WebKit::systemDirectoryPath):
        (WebKit::ProcessLauncher::launchProcess):
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::didFinishLaunching):
        * UIProcess/PageClient.h:
        * UIProcess/ProcessAssertion.cpp:
        * UIProcess/ProcessAssertion.h:
        * UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.h:
        * UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm:
        (WebKit::RemoteLayerTreeDrawingAreaProxy::~RemoteLayerTreeDrawingAreaProxy):
        (WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTree):
        (WebKit::RemoteLayerTreeDrawingAreaProxy::indicatorLocation const):
        (WebKit::RemoteLayerTreeDrawingAreaProxy::updateDebugIndicator):
        (WebKit::RemoteLayerTreeDrawingAreaProxy::didRefreshDisplay):
        (WebKit::RemoteLayerTreeDrawingAreaProxy::waitForDidUpdateActivityState):
        * UIProcess/RemoteLayerTree/RemoteLayerTreeHost.mm:
        (WebKit::RemoteLayerTreeHost::clearLayers):
        (WebKit::RemoteLayerTreeHost::detachRootLayer):
        * UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.cpp:
        (WebKit::RemoteScrollingCoordinatorProxy::scrollingTreeNodeDidScroll):
        * UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.h:
        * UIProcess/RemoteLayerTree/RemoteScrollingTree.cpp:
        (WebKit::RemoteScrollingTree::createScrollingTreeNode):
        * UIProcess/RemoteLayerTree/RemoteScrollingTree.h:
        * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeHostIOS.mm:
        * UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.mm:
        * UIProcess/RemoteLayerTree/ios/ScrollingTreeOverflowScrollingNodeIOS.h:
        * UIProcess/RemoteLayerTree/ios/ScrollingTreeOverflowScrollingNodeIOS.mm:
        * UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.h:
        * UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.mm:
        * UIProcess/ResourceLoadStatisticsPersistentStorage.cpp:
        * UIProcess/WKImagePreviewViewController.h:
        * UIProcess/WKImagePreviewViewController.mm:
        * UIProcess/WKInspectorHighlightView.h:
        * UIProcess/WKInspectorHighlightView.mm:
        * UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm:
        (WebKit::LocalAuthenticatorInternal::buildAuthData):
        (WebKit::LocalAuthenticator::makeCredential):
        (WebKit::LocalAuthenticator::continueMakeCredentialAfterUserConsented):
        (WebKit::LocalAuthenticator::continueMakeCredentialAfterAttested):
        (WebKit::LocalAuthenticator::getAssertion):
        (WebKit::LocalAuthenticator::continueGetAssertionAfterUserConsented):
        * UIProcess/WebAuthentication/Cocoa/LocalConnection.mm:
        (WebKit::LocalConnection::getUserConsent const):
        (WebKit::LocalConnection::getAttestation const):
        * UIProcess/WebAuthentication/Cocoa/LocalService.mm:
        (WebKit::LocalService::isAvailable):
        * UIProcess/WebFullScreenManagerProxy.cpp:
        (WebKit::WebFullScreenManagerProxy::supportsFullScreen):
        * UIProcess/WebGeolocationManagerProxy.cpp:
        * UIProcess/WebGeolocationManagerProxy.h:
        * UIProcess/WebInspectorProxy.cpp:
        * UIProcess/WebOpenPanelResultListenerProxy.cpp:
        * UIProcess/WebOpenPanelResultListenerProxy.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::m_resetRecentCrashCountTimer):
        (WebKit::WebPageProxy::finishAttachingToWebProcess):
        (WebKit::WebPageProxy::initializeWebPage):
        (WebKit::WebPageProxy::close):
        (WebKit::WebPageProxy::viewDidLeaveWindow):
        (WebKit::WebPageProxy::updateThrottleState):
        (WebKit::WebPageProxy::waitForDidUpdateActivityState):
        (WebKit::WebPageProxy::didCommitLoadForFrame):
        (WebKit::WebPageProxy::exitFullscreenImmediately):
        (WebKit::WebPageProxy::runJavaScriptAlert):
        (WebKit::WebPageProxy::runJavaScriptConfirm):
        (WebKit::WebPageProxy::runJavaScriptPrompt):
        (WebKit::WebPageProxy::pageDidScroll):
        (WebKit::WebPageProxy::processDidTerminate):
        (WebKit::WebPageProxy::resetState):
        (WebKit::WebPageProxy::resetStateAfterProcessExited):
        (WebKit::WebPageProxy::creationParameters):
        (WebKit::WebPageProxy::requestGeolocationPermissionForFrame):
        (WebKit::WebPageProxy::hasActiveVideoForControlsManager const):
        (WebKit::WebPageProxy::requestControlledElementID const):
        (WebKit::WebPageProxy::isPlayingVideoInEnhancedFullscreen const):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * UIProcess/WebPasteboardProxy.h:
        * UIProcess/WebPasteboardProxy.messages.in:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::ensureNetworkProcess):
        (WebKit::WebProcessPool::initializeNewWebProcess):
        (WebKit::WebProcessPool::updateProcessAssertions):
        (WebKit::WebProcessPool::reinstateNetworkProcessAssertionState):
        * UIProcess/WebProcessPool.h:
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::isMainThreadOrCheckDisabled):
        (WebKit::WebProcessProxy::didFinishLaunching):
        (WebKit::WebProcessProxy::didSetAssertionState):
        * UIProcess/WebProcessProxy.h:
        * UIProcess/WebStorage/LocalStorageDatabaseTracker.cpp:
        (WebKit::LocalStorageDatabaseTracker::databasePath const):
        * UIProcess/WebStorage/LocalStorageDatabaseTracker.h:
        * UIProcess/WebStorage/ios/LocalStorageDatabaseTrackerIOS.mm:
        * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:
        * UIProcess/_WKWebViewPrintFormatter.mm:
        * UIProcess/_WKWebViewPrintFormatterInternal.h:
        * UIProcess/ios/DragDropInteractionState.h:
        * UIProcess/ios/DragDropInteractionState.mm:
        * UIProcess/ios/InputViewUpdateDeferrer.h:
        * UIProcess/ios/InputViewUpdateDeferrer.mm:
        * UIProcess/ios/LayerRepresentation.mm:
        * UIProcess/ios/PageClientImplIOS.h:
        * UIProcess/ios/PageClientImplIOS.mm:
        * UIProcess/ios/ProcessAssertionIOS.mm:
        * UIProcess/ios/ResourceLoadStatisticsPersistentStorageIOS.mm:
        * UIProcess/ios/SmartMagnificationController.h:
        * UIProcess/ios/SmartMagnificationController.messages.in:
        * UIProcess/ios/SmartMagnificationController.mm:
        * UIProcess/ios/TextCheckerIOS.mm:
        * UIProcess/ios/ViewGestureControllerIOS.mm:
        * UIProcess/ios/WKActionSheet.h:
        * UIProcess/ios/WKActionSheet.mm:
        * UIProcess/ios/WKActionSheetAssistant.h:
        * UIProcess/ios/WKActionSheetAssistant.mm:
        * UIProcess/ios/WKApplicationStateTrackingView.h:
        * UIProcess/ios/WKApplicationStateTrackingView.mm:
        * UIProcess/ios/WKContentView.mm:
        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        * UIProcess/ios/WKGeolocationProviderIOS.h:
        * UIProcess/ios/WKGeolocationProviderIOS.mm:
        * UIProcess/ios/WKGeolocationProviderIOSObjCSecurityOrigin.mm:
        * UIProcess/ios/WKInspectorNodeSearchGestureRecognizer.h:
        * UIProcess/ios/WKInspectorNodeSearchGestureRecognizer.mm:
        * UIProcess/ios/WKKeyboardScrollingAnimator.h:
        * UIProcess/ios/WKKeyboardScrollingAnimator.mm:
        * UIProcess/ios/WKPDFPageNumberIndicator.h:
        * UIProcess/ios/WKPDFPageNumberIndicator.mm:
        * UIProcess/ios/WKPasswordView.h:
        * UIProcess/ios/WKPasswordView.mm:
        * UIProcess/ios/WKScrollView.h:
        * UIProcess/ios/WKScrollView.mm:
        * UIProcess/ios/WKSyntheticClickTapGestureRecognizer.h:
        * UIProcess/ios/WKSyntheticClickTapGestureRecognizer.m:
        * UIProcess/ios/WKWebEvent.h:
        * UIProcess/ios/WKWebEvent.mm:
        * UIProcess/ios/WebDataListSuggestionsDropdownIOS.h:
        * UIProcess/ios/WebDataListSuggestionsDropdownIOS.mm:
        * UIProcess/ios/WebPageProxyIOS.mm:
        * UIProcess/ios/WebProcessProxyIOS.mm:
        * UIProcess/ios/forms/WKAirPlayRoutePicker.h:
        * UIProcess/ios/forms/WKAirPlayRoutePicker.mm:
        * UIProcess/ios/forms/WKFileUploadPanel.h:
        * UIProcess/ios/forms/WKFileUploadPanel.mm:
        * UIProcess/ios/forms/WKFormColorControl.h:
        * UIProcess/ios/forms/WKFormColorControl.mm:
        * UIProcess/ios/forms/WKFormColorPicker.h:
        * UIProcess/ios/forms/WKFormColorPicker.mm:
        * UIProcess/ios/forms/WKFormInputControl.h:
        * UIProcess/ios/forms/WKFormInputControl.mm:
        * UIProcess/ios/forms/WKFormPopover.h:
        * UIProcess/ios/forms/WKFormPopover.mm:
        * UIProcess/ios/forms/WKFormSelectControl.h:
        * UIProcess/ios/forms/WKFormSelectControl.mm:
        * UIProcess/ios/forms/WKFormSelectPicker.h:
        * UIProcess/ios/forms/WKFormSelectPicker.mm:
        * UIProcess/ios/forms/WKFormSelectPopover.h:
        * UIProcess/ios/forms/WKFormSelectPopover.mm:
        * UIProcess/ios/fullscreen/FullscreenTouchSecheuristic.cpp:
        * UIProcess/ios/fullscreen/FullscreenTouchSecheuristic.h:
        * UIProcess/ios/fullscreen/WKFullScreenViewController.h:
        * UIProcess/ios/fullscreen/WKFullScreenViewController.mm:
        * UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.h:
        * UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm:
        * UIProcess/ios/fullscreen/WKFullscreenStackView.h:
        * UIProcess/ios/fullscreen/WKFullscreenStackView.mm:
        * UIProcess/mac/LegacySessionStateCoding.cpp:
        (WebKit::encodeFrameStateNode):
        (WebKit::decodeBackForwardTreeNode):
        * UIProcess/mac/PageClientImplMac.h:
        * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.h:
        * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm:
        * UIProcess/mac/ViewSnapshotStore.mm:
        * UIProcess/mac/WKFullScreenWindowController.mm:
        * WebProcess/EntryPoint/mac/XPCService/WebContentServiceEntryPoint.mm:
        (WebContentServiceInitializer):
        * WebProcess/FullScreen/WebFullScreenManager.cpp:
        (WebKit::WebFullScreenManager::videoControlsManagerDidChange):
        (WebKit::WebFullScreenManager::willEnterFullScreen):
        (WebKit::WebFullScreenManager::didEnterFullScreen):
        (WebKit::WebFullScreenManager::willExitFullScreen):
        * WebProcess/Geolocation/WebGeolocationManager.cpp:
        * WebProcess/Geolocation/WebGeolocationManager.h:
        * WebProcess/Geolocation/WebGeolocationManager.messages.in:
        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandle.mm:
        * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
        * WebProcess/InjectedBundle/API/c/mac/WKBundlePageBannerMac.mm:
        * WebProcess/InjectedBundle/API/mac/WKDOMInternals.mm:
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:
        (-[WKWebProcessPlugInBrowserContextController _setEditingDelegate:]):
        * WebProcess/WebCoreSupport/SessionStateConversion.cpp:
        (WebKit::toFrameState):
        (WebKit::applyFrameState):
        * WebProcess/WebCoreSupport/WebAlternativeTextClient.h:
        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::windowRect):
        (WebKit::WebChromeClient::enterVideoFullscreenForVideoElement):
        * WebProcess/WebCoreSupport/WebChromeClient.h:
        * WebProcess/WebCoreSupport/WebEditorClient.cpp:
        * WebProcess/WebCoreSupport/WebEditorClient.h:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDidLayout):
        (WebKit::WebFrameLoaderClient::saveViewStateToItem):
        (WebKit::WebFrameLoaderClient::restoreViewState):
        (WebKit::WebFrameLoaderClient::transitionToCommittedForNewPage):
        (WebKit::WebFrameLoaderClient::objectContentType):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
        * WebProcess/WebCoreSupport/WebInspectorClient.cpp:
        (WebKit::WebInspectorClient::highlight):
        (WebKit::WebInspectorClient::hideHighlight):
        * WebProcess/WebCoreSupport/WebInspectorClient.h:
        * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
        * WebProcess/WebCoreSupport/WebPlatformStrategies.h:
        * WebProcess/WebCoreSupport/ios/WebChromeClientIOS.mm:
        * WebProcess/WebCoreSupport/ios/WebEditorClientIOS.mm:
        * WebProcess/WebCoreSupport/ios/WebFrameLoaderClientIOS.mm:
        * WebProcess/WebCoreSupport/mac/WebDragClientMac.mm:
        * WebProcess/WebPage/DrawingArea.cpp:
        (WebKit::DrawingArea::create):
        * WebProcess/WebPage/DrawingArea.h:
        * WebProcess/WebPage/FindController.cpp:
        (WebKit::FindController::findString):
        * WebProcess/WebPage/FindController.h:
        * WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemoteCustom.mm:
        (WebKit::PlatformCALayerRemoteCustom::PlatformCALayerRemoteCustom):
        * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h:
        * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm:
        (WebKit::RemoteLayerTreeDrawingArea::RemoteLayerTreeDrawingArea):
        (WebKit::RemoteLayerTreeDrawingArea::updateScrolledExposedRect):
        * WebProcess/WebPage/ViewGestureGeometryCollector.cpp:
        (WebKit::ViewGestureGeometryCollector::dispatchDidCollectGeometryForSmartMagnificationGesture):
        (WebKit::ViewGestureGeometryCollector::collectGeometryForSmartMagnificationGesture):
        (WebKit::ViewGestureGeometryCollector::mainFrameDidLayout):
        * WebProcess/WebPage/ViewGestureGeometryCollector.h:
        * WebProcess/WebPage/ViewGestureGeometryCollector.messages.in:
        * WebProcess/WebPage/ViewUpdateDispatcher.cpp:
        * WebProcess/WebPage/WKAccessibilityWebPageObjectIOS.h:
        * WebProcess/WebPage/WKAccessibilityWebPageObjectIOS.mm:
        * WebProcess/WebPage/WebFrame.h:
        * WebProcess/WebPage/WebOpenPanelResultListener.cpp:
        * WebProcess/WebPage/WebOpenPanelResultListener.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::m_cpuLimit):
        (WebKit::WebPage::~WebPage):
        (WebKit::WebPage::scalePage):
        (WebKit::WebPage::setUseFixedLayout):
        (WebKit::WebPage::disabledAdaptationsDidChange):
        (WebKit::WebPage::viewportPropertiesDidChange):
        (WebKit::WebPage::pageDidScroll):
        (WebKit::WebPage::mouseEvent):
        (WebKit::WebPage::updatePreferences):
        (WebKit::WebPage::willCommitLayerTree):
        (WebKit::WebPage::didFlushLayerTreeAtTime):
        (WebKit::WebPage::mainFrameDidLayout):
        (WebKit::WebPage::resetAssistedNodeForFrame):
        (WebKit::WebPage::elementDidFocus):
        (WebKit::WebPage::elementDidBlur):
        (WebKit::WebPage::willReplaceMultipartContent):
        (WebKit::WebPage::didReplaceMultipartContent):
        (WebKit::WebPage::didCommitLoad):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:
        * WebProcess/WebPage/ios/FindControllerIOS.mm:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
        (WebKit::TiledCoreAnimationDrawingArea::updateScrolledExposedRect):
        * WebProcess/WebPage/mac/WebPageMac.mm:
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::WebProcess):
        (WebKit::WebProcess::initializeConnection):
        (WebKit::WebProcess::initializeWebProcess):
        (WebKit::WebProcess::actualPrepareToSuspend):
        (WebKit::WebProcess::cancelPrepareToSuspend):
        (WebKit::WebProcess::processDidResume):
        * WebProcess/WebProcess.h:
        * WebProcess/cocoa/PlaybackSessionManager.h:
        * WebProcess/cocoa/PlaybackSessionManager.messages.in:
        * WebProcess/cocoa/PlaybackSessionManager.mm:
        * WebProcess/cocoa/VideoFullscreenManager.h:
        * WebProcess/cocoa/VideoFullscreenManager.messages.in:
        * WebProcess/cocoa/VideoFullscreenManager.mm:
        (WebKit::VideoFullscreenManager::supportsVideoFullscreen const):
        (WebKit::VideoFullscreenManager::supportsVideoFullscreenStandby const):
        (WebKit::VideoFullscreenManager::didSetupFullscreen):
        (WebKit::VideoFullscreenManager::didExitFullscreen):
        * WebProcess/cocoa/WebProcessCocoa.mm:
        (WebKit::WebProcess::platformInitializeWebProcess):
        (WebKit::WebProcess::initializeProcessName):
        (WebKit::registerWithAccessibility):
        (WebKit::WebProcess::sourceApplicationAuditData const):
        (WebKit::WebProcess::initializeSandbox):
        * WebProcess/mac/SecItemShimLibrary.mm:
        * config.h:

2018-10-18  Alex Christensen  <achristensen@webkit.org>

        Clean up FrameLoader two-state enums
        https://bugs.webkit.org/show_bug.cgi?id=190731

        Reviewed by Chris Dumez.

        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:
        * Shared/WebCoreArgumentCoders.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::willPerformClientRedirectForFrame):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchWillPerformClientRedirect):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.h:

2018-10-18  Youenn Fablet  <youenn@apple.com>

        Handle MDNS resolution of candidates through libwebrtc directly
        https://bugs.webkit.org/show_bug.cgi?id=190681

        Reviewed by Eric Carlson.

        Add support for AsyncResolver to resolve MDNS.
        This basically reuse the code path used to resolve STUN server addresses.
        Removed MDNS specific resolution.
        Use existing CFHost resolution mechanism to do the actual resolution.

        * NetworkProcess/webrtc/NetworkMDNSRegister.cpp:
        (WebKit::NetworkMDNSRegister::registerMDNSName):
        * NetworkProcess/webrtc/NetworkMDNSRegister.messages.in:
        * WebProcess/Network/webrtc/LibWebRTCProvider.cpp:
        (WebKit::LibWebRTCProvider::createPeerConnection):
        * WebProcess/Network/webrtc/LibWebRTCProvider.h:
        * WebProcess/Network/webrtc/LibWebRTCSocketFactory.h:
        * WebProcess/Network/webrtc/WebMDNSRegister.cpp:
        * WebProcess/Network/webrtc/WebMDNSRegister.h:
        * WebProcess/Network/webrtc/WebMDNSRegister.messages.in:

2018-10-18  Chris Dumez  <cdumez@apple.com>

        [PSON] Cap number of SuspendedPageProxy objects and allow a WebPageProxy to have more than one
        https://bugs.webkit.org/show_bug.cgi?id=190688
        <rdar://problem/45354095>

        Reviewed by Antti Koivisto.

        Cap number of SuspendedPageProxy objects to 3 to avoid accumulating too many "suspended" processes.

        Also allow a WebPageProxy to have more than one SuspendedPageProxy so that PageCache now works for
        more than 1 history navigation (up to 3 with the suspended page limit in this patch).

        The following cleanup / refactoring was made to support this:
        - The SuspendedPageProxy objects are now owned by the WebProcessPool instead of the WebPageProxy.
          The WebProcessPool is in charge of limiting the number of SuspendedPageProxy objects by dropping
          the oldest one whenever a WebPageProxy tries to add a new one and we've already reached the limit.
        - WebProcessProxy no longer needs to know anything about suspended pages, which simplifies the
          code quite a bit. Instead, the SuspendedPageProxy objects now register themselves as
          IPC::MessageReceivers with their WebProcessProxy. The SuspendedPageProxy also take care of
          calling maybeShutdown() on their WebProcessProxy when they get destroyed.

        * UIProcess/SuspendedPageProxy.cpp:
        (WebKit::SuspendedPageProxy::~SuspendedPageProxy):
        (WebKit::SuspendedPageProxy::tearDownDrawingAreaInWebProcess):
        (WebKit::SuspendedPageProxy::unsuspend):
        (WebKit::SuspendedPageProxy::didFinishLoad):
        (WebKit::SuspendedPageProxy::didReceiveSyncMessage):
        * UIProcess/SuspendedPageProxy.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::suspendCurrentPageIfPossible):
        (WebKit::WebPageProxy::swapToWebProcess):
        (WebKit::WebPageProxy::close):
        (WebKit::WebPageProxy::continueNavigationInNewProcess):
        (WebKit::WebPageProxy::didCompletePageTransition):
        (WebKit::WebPageProxy::enterAcceleratedCompositingMode):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::disconnectProcess):
        (WebKit::WebProcessPool::processForNavigationInternal):
        (WebKit::WebProcessPool::addSuspendedPageProxy):
        (WebKit::WebProcessPool::removeAllSuspendedPageProxiesForPage):
        (WebKit::WebProcessPool::takeSuspendedPageProxy):
        (WebKit::WebProcessPool::hasSuspendedPageProxyFor):
        * UIProcess/WebProcessPool.h:
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::didReceiveMessage):
        (WebKit::WebProcessProxy::processDidTerminateOrFailedToLaunch):
        (WebKit::WebProcessProxy::canTerminateChildProcess):
        (WebKit::WebProcessProxy::requestTermination):
        * UIProcess/WebProcessProxy.h:

2018-10-17  Wenson Hsieh  <wenson_hsieh@apple.com>

        Enable the datalist element by default on iOS and macOS
        https://bugs.webkit.org/show_bug.cgi?id=190594
        <rdar://problem/45281159>

        Reviewed by Ryosuke Niwa and Tim Horton.

        * Configurations/FeatureDefines.xcconfig:
        * Platform/spi/ios/UIKitSPI.h:

        Add SPI to UITextSuggestion.

        * Shared/WebPreferences.yaml:
        * Shared/WebPreferencesDefaultValues.h:
        * UIProcess/mac/WebDataListSuggestionsDropdownMac.mm:
        (-[WKDataListSuggestionCell setText:]):
        (-[WKDataListSuggestionTable initWithElementRect:]):

        Fix the 32-bit macOS build with ENABLE(DATALIST_ELEMENT).

2018-10-17  Andy Estes  <aestes@apple.com>

        [Apple Pay] Increment the API version to 5
        https://bugs.webkit.org/show_bug.cgi?id=190686
        <rdar://problem/45348523>

        Reviewed by Simon Fraser.

        * WebProcess/ApplePay/WebPaymentCoordinator.cpp:
        (WebKit::WebPaymentCoordinator::supportsVersion):

2018-10-17  Alex Christensen  <achristensen@webkit.org>

        BackForwardClient needs to be able to support UIProcess-only back/forward lists
        https://bugs.webkit.org/show_bug.cgi?id=190675

        Reviewed by Chris Dumez.

        * UIProcess/WebBackForwardList.cpp:
        (WebKit::WebBackForwardList::itemAtIndex const):
        (WebKit::WebBackForwardList::backListCount const):
        (WebKit::WebBackForwardList::forwardListCount const):
        * UIProcess/WebBackForwardList.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::backForwardBackListCount):
        (WebKit::WebPageProxy::backForwardForwardListCount):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * WebProcess/WebPage/WebBackForwardListProxy.cpp:
        (WebKit::WebBackForwardListProxy::itemAtIndex):
        (WebKit::WebBackForwardListProxy::backListCount const):
        (WebKit::WebBackForwardListProxy::forwardListCount const):
        * WebProcess/WebPage/WebBackForwardListProxy.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::dumpHistoryForTesting):

2018-10-17  Ali Juma  <ajuma@chromium.org>

        Flaky IntersectionObserver web platform tests involving style updates
        https://bugs.webkit.org/show_bug.cgi?id=189091

        Reviewed by Simon Fraser.

        Add a WebPage::willDisplayPage bottleneck that gets called when flushing layers
        or, in the non-composited case, when rendering the page into a bitmap.

        * WebProcess/WebPage/AcceleratedDrawingArea.cpp:
        (WebKit::AcceleratedDrawingArea::updateBackingStoreState):
        * WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp:
        (WebKit::CoordinatedLayerTreeHost::layerFlushTimerFired):
        * WebProcess/WebPage/DrawingAreaImpl.cpp:
        (WebKit::DrawingAreaImpl::display):
        * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm:
        (WebKit::RemoteLayerTreeDrawingArea::flushLayers):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::willDisplayPage):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
        (WebKit::TiledCoreAnimationDrawingArea::flushLayers):

2018-10-16  Patrick Griffis  <pgriffis@igalia.com>

        [GTK][WPE] Fix xdg-desktop-portal permissions from a sandbox
        https://bugs.webkit.org/show_bug.cgi?id=190619

        Reviewed by Michael Catanzaro.

        We have to generate a /.flatpak-info file for xdg-desktop-portal
        to properly treat us as a sandboxed application.

        * UIProcess/Launcher/glib/BubblewrapLauncher.cpp:
        (WebKit::createSealedMemFdWithData):
        (WebKit::argsToFd):
        (WebKit::XDGDBusProxyLauncher::setPermissions):
        (WebKit::createFlatpakInfo):
        (WebKit::bubblewrapSpawn):

2018-10-16  Sihui Liu  <sihui_liu@apple.com>

        Add a switch for Web SQL
        https://bugs.webkit.org/show_bug.cgi?id=190271

        Reviewed by Ryosuke Niwa.

        * Shared/WebPreferences.yaml:
        * UIProcess/API/C/WKPreferences.cpp:
        (WKPreferencesSetWebSQLDisabled):
        (WKPreferencesGetWebSQLDisabled):
        * UIProcess/API/C/WKPreferencesRef.h:

2018-10-16  Alex Christensen  <achristensen@webkit.org>

        Remove InjectedBundleBackForwardList
        https://bugs.webkit.org/show_bug.cgi?id=190640

        Reviewed by Chris Dumez.

        These objects are only used in testing now, so I made a replacement to be used for testing,
        WKBundlePageDumpHistoryForTesting and WKBundleClearHistoryForTesting.
        The existence of these objects is problematic with process swapping and the true back/forward list being in the UIProcess.

        * Sources.txt:
        * WebProcess/InjectedBundle/API/c/WKBundleBackForwardList.cpp:
        (WKBundleBackForwardListGetTypeID):
        (WKBundleBackForwardListCopyItemAtIndex):
        (WKBundleBackForwardListGetBackListCount):
        (WKBundleBackForwardListGetForwardListCount):
        (WKBundleBackForwardListClear):
        * WebProcess/InjectedBundle/API/c/WKBundleBackForwardList.h:
        * WebProcess/InjectedBundle/API/c/WKBundleBackForwardListItem.cpp:
        (WKBundleBackForwardListItemGetTypeID):
        (WKBundleBackForwardListItemIsSame):
        (WKBundleBackForwardListItemCopyURL):
        (WKBundleBackForwardListItemCopyTarget):
        (WKBundleBackForwardListItemIsTargetItem):
        (WKBundleBackForwardListItemCopyChildren):
        * WebProcess/InjectedBundle/API/c/WKBundleBackForwardListItem.h:
        * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
        (WKBundlePageDumpHistoryForTesting):
        (WKBundleClearHistoryForTesting):
        (WKBundlePageGetBackForwardList):
        * WebProcess/InjectedBundle/API/c/WKBundlePage.h:
        * WebProcess/InjectedBundle/InjectedBundleBackForwardList.cpp: Removed.
        * WebProcess/InjectedBundle/InjectedBundleBackForwardList.h: Removed.
        * WebProcess/InjectedBundle/InjectedBundleBackForwardListItem.cpp: Removed.
        * WebProcess/InjectedBundle/InjectedBundleBackForwardListItem.h: Removed.
        * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.cpp:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::~WebPage):
        (WebKit::dumpHistoryItem):
        (WebKit::WebPage::dumpHistoryForTesting):
        (WebKit::WebPage::clearHistory):
        (WebKit::WebPage::didReceiveSyncMessage):
        (WebKit::WebPage::backForwardList): Deleted.
        * WebProcess/WebPage/WebPage.h:

2018-10-16  Timothy Hatcher  <timothy@apple.com>

        Add <meta name="supported-color-schemes"> to control what color schemes the page supports
        https://bugs.webkit.org/show_bug.cgi?id=190526
        rdar://problem/45230140

        Reviewed by Dean Jackson.

        * UIProcess/mac/WKPrintingView.mm:
        (-[WKPrintingView drawRect:]): Update use of LocalDefaultSystemAppearance.
        * WebProcess/InjectedBundle/DOM/InjectedBundleRangeHandle.cpp:
        (WebKit::InjectedBundleRangeHandle::renderedImage): Ditto.
        * WebProcess/Plugins/PDF/PDFPlugin.mm:
        (WebKit::PDFPlugin::paintControlForLayerInContext): Ditto.
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::drawRect): Ditto.

2018-10-16  Justin Michaud  <justin_michaud@apple.com>

        Implement feature flag and bindings for CSS Painting API
        https://bugs.webkit.org/show_bug.cgi?id=190237

        Reviewed by Ryosuke Niwa.

        * Configurations/FeatureDefines.xcconfig:
        * Shared/WebPreferences.yaml:
        * WebProcess/InjectedBundle/InjectedBundle.cpp:
        (WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner):

2018-10-16  Philippe Normand  <pnormand@igalia.com>

        [GLib] Build error with RemoteInspector disabled
        https://bugs.webkit.org/show_bug.cgi?id=190623

        Reviewed by Michael Catanzaro.

        Compilation guards added to ensure the build still works when the
        Remote WebInspector has been disabled.

        * UIProcess/API/glib/WebKitAutomationSession.cpp:
        * UIProcess/API/glib/WebKitAutomationSessionPrivate.h:
        * UIProcess/RemoteWebInspectorProxy.cpp:

2018-10-16  Patrick Griffis  <pgriffis@igalia.com>

        [GTK][WPE] Fix sandbox on distros with suid bubblewrap
        https://bugs.webkit.org/show_bug.cgi?id=190616

        Reviewed by Michael Catanzaro.

        * UIProcess/Launcher/glib/BubblewrapLauncher.cpp:
        (WebKit::bubblewrapSpawn):

2018-10-16  Alex Christensen  <achristensen@webkit.org>

        Replace HistoryItem* with HistoryItem& where possible
        https://bugs.webkit.org/show_bug.cgi?id=190617

        Reviewed by Chris Dumez.

        * WebProcess/WebCoreSupport/SessionStateConversion.h:
        * WebProcess/WebPage/WebBackForwardListProxy.cpp:
        (WebKit::WK2NotifyHistoryItemChanged):
        (WebKit::WebBackForwardListProxy::goToItem):
        * WebProcess/WebPage/WebBackForwardListProxy.h:

2018-10-16  Philippe Normand  <pnormand@igalia.com>

        Unreviewed, another GTK build fix after r237146

        * UIProcess/gtk/RemoteWebInspectorProxyGtk.cpp:
        (WebKit::RemoteWebInspectorProxy::platformCreateFrontendPageAndWindow):

2018-10-15  Justin Fan  <justin_fan@apple.com>

        Add WebGPU 2018 feature flag and experimental feature flag
        https://bugs.webkit.org/show_bug.cgi?id=190509

        Reviewed by Dean Jackson.

        Re-add ENABLE_WEBGPU, an experimental feature flag, and a RuntimeEnabledFeature
        for the 2018 WebGPU prototype.

        * Configurations/FeatureDefines.xcconfig:
        * Shared/WebPreferences.yaml:
        * WebProcess/InjectedBundle/InjectedBundle.cpp:
        (WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner):

2018-10-15  Alex Christensen  <achristensen@webkit.org>

        Fix API tests after r237146

        * Shared/WebPageGroupData.cpp:
        (WebKit::WebPageGroupData::decode):
        I accidentally changed the decoder.

2018-10-15  Sihui Liu  <sihui_liu@apple.com>

        HSTS cache entries cannot be removed by origin
        https://bugs.webkit.org/show_bug.cgi?id=190455
        <rdar://problem/45181322>

        Reviewed by Chris Dumez.

        The SPI _CFNetworkResetHSTS does not recognize url without protocol, so we need to add protocol manually.

        * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
        (WebKit::NetworkProcess::deleteHSTSCacheForHostNames):

2018-10-15  Alex Christensen  <achristensen@webkit.org>

        Fix GTK build, even though bots are not working right now.

        * UIProcess/gtk/WebInspectorProxyGtk.cpp:
        (WebKit::WebInspectorProxy::platformCreateFrontendPage):

2018-10-15  Alex Christensen  <achristensen@webkit.org>

        Fix WinCairo build after r237146

        * UIProcess/win/WebInspectorProxyWin.cpp:
        (WebKit::WebInspectorProxy::platformCreateFrontendPage):

2018-10-15  Chris Dumez  <cdumez@apple.com>

        REGRESSION (r236512): [ Mac WK2 ] Layout Test editing/undo/undo-smart-delete-word.html is flaky
        https://bugs.webkit.org/show_bug.cgi?id=190375
        <rdar://problem/45177807>

        Reviewed by Ryosuke Niwa.

        The test is doing the following:
        > document.execCommand("Delete"); document.execCommand("Undo");

        Both operation are synchronous and rely on synchronous IPC from the WebProcess to the UIProcess.
        However, for the undo operation to succeed, the first command need to have been registered with
        with the UIProcess via the WebPageProxy::RegisterEditCommandForUndo IPC to the UIProcess, which
        is asynchronous.

        After r236512, the UIProcess no longer processes incoming sync / async IPC in order and thus,
        it is possible for the WebPageProxy::ExecuteUndoRedo synchronous IPC to get processed by the
        UIProcess *before* the WebPageProxy::RegisterEditCommandForUndo asynchronous IPC for the
        previous "Delete" command. As a result, canUndo would return false and we would fail to undo.

        To address the issue, use SendOption::DispatchMessageEvenWhenWaitingForSyncReply flag when sending
        the WebPageProxy::RegisterEditCommandForUndo IPC, so that it gets processed in order with regards
        to surrounding synchronous IPC.

        * WebProcess/WebCoreSupport/WebEditorClient.cpp:
        (WebKit::WebEditorClient::registerUndoStep):

2018-10-15  Alex Christensen  <achristensen@webkit.org>

        Modernize BackForwardClient.h
        https://bugs.webkit.org/show_bug.cgi?id=190610

        Reviewed by Chris Dumez.

        * WebProcess/InjectedBundle/InjectedBundleBackForwardList.cpp:
        (WebKit::InjectedBundleBackForwardList::clear):
        * WebProcess/Storage/WebSWContextManagerConnection.cpp:
        (WebKit::WebSWContextManagerConnection::installServiceWorker):
        * WebProcess/WebPage/WebBackForwardListProxy.cpp:
        (WebKit::WebBackForwardListProxy::WebBackForwardListProxy):
        (WebKit::WebBackForwardListProxy::backListCount const):
        (WebKit::WebBackForwardListProxy::forwardListCount const):
        (WebKit::WebBackForwardListProxy::backListCount): Deleted.
        (WebKit::WebBackForwardListProxy::forwardListCount): Deleted.
        * WebProcess/WebPage/WebBackForwardListProxy.h:
        (WebKit::WebBackForwardListProxy::create):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::m_cpuLimit):
        (WebKit::WebPage::restoreSessionInternal):

2018-10-15  Timothy Hatcher  <timothy@apple.com>

        Add support for prefers-color-scheme media query
        https://bugs.webkit.org/show_bug.cgi?id=190499
        rdar://problem/45212025

        Reviewed by Dean Jackson.

        * Configurations/FeatureDefines.xcconfig: Added ENABLE_DARK_MODE_CSS.
        * Shared/WebPreferences.yaml: Added DarkModeCSSEnabled as experimental.

2018-10-15  Patrick Griffis  <pgriffis@igalia.com>

        Remove StorageProcess leftover
        https://bugs.webkit.org/show_bug.cgi?id=190591

        Reviewed by Michael Catanzaro.

        The process was deleted.

        * Shared/ChildProcess.h:
        * Shared/mac/ChildProcessMac.mm:
        (WebKit::processStorageClass):
        (WebKit::sandboxDirectory):
        * UIProcess/ChildProcessProxy.cpp:
        (WebKit::ChildProcessProxy::getLaunchOptions):
        * UIProcess/Launcher/ProcessLauncher.h:
        * UIProcess/Launcher/mac/ProcessLauncherMac.mm:
        (WebKit::serviceName):

2018-10-15  Alex Christensen  <achristensen@webkit.org>

        Remove unused parameters of WebPageGroupData
        https://bugs.webkit.org/show_bug.cgi?id=190600

        Reviewed by Chris Dumez.

        visibleToInjectedBundle and visibleToHistoryClient are both always true.
        This removes a mysterious check in the history code.

        * Shared/WebPageGroupData.cpp:
        (WebKit::WebPageGroupData::encode const):
        (WebKit::WebPageGroupData::decode):
        * Shared/WebPageGroupData.h:
        * UIProcess/WebPageGroup.cpp:
        (WebKit::WebPageGroup::create):
        (WebKit::pageGroupData):
        (WebKit::WebPageGroup::WebPageGroup):
        * UIProcess/WebPageGroup.h:
        (WebKit::WebPageGroup::WebPageGroup):
        (WebKit::WebPageGroup::create):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::updateGlobalHistory):
        (WebKit::WebFrameLoaderClient::updateGlobalHistoryRedirectLinks):
        (WebKit::WebFrameLoaderClient::setTitle):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::create):
        (WebKit::WebPage::close):
        * WebProcess/WebPage/WebPageGroupProxy.cpp:
        (WebKit::WebPageGroupProxy::create):
        * WebProcess/WebPage/WebPageGroupProxy.h:
        (WebKit::WebPageGroupProxy::pageGroupID const):
        (WebKit::WebPageGroupProxy::isVisibleToInjectedBundle const): Deleted.
        (WebKit::WebPageGroupProxy::isVisibleToHistoryClient const): Deleted.

2018-10-15  Chris Dumez  <cdumez@apple.com>

        Experiment: target=_blank on anchors should imply rel=noopener
        https://bugs.webkit.org/show_bug.cgi?id=190481

        Reviewed by Alex Christensen.

        * Shared/WebPreferences.yaml:

2018-10-15  Alex Christensen  <achristensen@webkit.org>

        Remove unused parameters from FrameLoaderClient::createFrame
        https://bugs.webkit.org/show_bug.cgi?id=190587

        Reviewed by Chris Dumez.

        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::createFrame):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.h:

2018-10-15  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] Can't select text after dismissing the keyboard when changing focus
        https://bugs.webkit.org/show_bug.cgi?id=190563
        <rdar://problem/44613559>

        Reviewed by Tim Horton.

        In r230686, we switched from using UIWKSelectionAssistant to UIWKTextInteractionAssistant for handling selection
        in non-editable content on iOS; as such, when an editable element loses focus, instead of switching from the
        text interaction assistant to the web selection assistant as we've previously done, we now reset our text
        interaction assistant by calling `-[UIWKTextInteractionAssistant setGestureRecognizers]`, which removes all of
        the current text selection gesture recognizers from WKContentView and regenerates them by building up a tree of
        `UITextInteraction`s and adding them to the assistant (see `-[UITextInteractionAssistant
        addGestureRecognizersToView:]`). In particular, `_UITextSelectionForceGesture` is the gesture recognizer used to
        trigger text selection when long pressing.

        After dismissing the keyboard by tapping the "Done" button, the UITextInteractions and gesture recognizers on
        the interaction assistant include:

            <UITextInteraction>
                …
                <UITextIndirectNonEditableInteraction>
                    <_UIKeyboardBasedNonEditableTextSelectionInteraction>
                      ↳ "_UIKeyboardTextSelectionGestureForcePress" → <_UITextSelectionForceGesture>

        However, after the keyboard dismisses due to an editable element losing focus, the UITextInteractions on the
        interaction assistant look like this:

            <UITextInteraction>
                …
                <UITextIndirectNonEditableInteraction>

        Subsequently, the lack of a `_UIKeyboardBasedNonEditableTextSelectionInteraction` makes text selection by long
        pressing impossible, since the `_UITextSelectionForceGesture` is never introduced to `WKContentView`. In UIKit,
        `UITextIndirectNonEditableInteraction` only adds `_UIKeyboardBasedNonEditableTextSelectionInteraction` as a
        child if the text input view — in our case, WKContentView — is missing an input delegate (see `-initWithView:`).
        In the case where the Done button is used to dismiss the keyboard, WKContentView loses first responder, and the
        input delegate of WKContentView is cleared out early on, before we call `-stopAssistingKeyboard`:

            -[WKContentView(WKInteraction) setInputDelegate:]
            -[UIKeyboardImpl setDelegate:force:]
            -[UIPeripheralHost(UIKitInternal) _reloadInputViewsForResponder:]
            -[UIResponder _finishResignFirstResponder]
            -[UIResponder resignFirstResponder]
            -[WKContentView(WKInteraction) resignFirstResponderForWebView]
            -[UIKeyboardImpl dismissKeyboard]

        However, in the case where the focused element is blurred, we end up clearing out the delegate in
        `-_stopAssistingNode`, *after* we've already called `-setGestureRecognizers` on the interaction assistant. This
        means UIKit will skip adding `_UIKeyboardBasedNonEditableTextSelectionInteraction` to the text interaction
        assistant.

            -[WKContentView(WKInteraction) setInputDelegate:]
            -[UIKeyboardImpl setDelegate:force:]
            -[UIPeripheralHost(UIKitInternal) _reloadInputViewsForResponder:]
            -[UIResponder(UIResponderInputViewAdditions) reloadInputViews]
            -[WKContentView(WKInteraction) _stopAssistingNode]

        To fix this, we simply reset our `inputDelegate` earlier in `_stopAssistingKeyboard` instead of waiting until
        we reload input views. This ensures that UIKit sets up the text interaction assistant's gestures when changing
        focus in the same way as we would when the keyboard is dismissed via `-resignFirstResponder` (e.g. when pressing
        the Done button).

        Test: editing/selection/ios/select-text-after-changing-focus.html

        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView setupInteraction]):
        (-[WKContentView setUpTextSelectionAssistant]):
        (-[WKContentView _startAssistingKeyboard]):
        (-[WKContentView _stopAssistingKeyboard]):
        (-[WKContentView useSelectionAssistantWithGranularity:]): Deleted.

        Additionally rename this to -setUpTextSelectionAssistant and remove the selection granularity argument. This was
        previously used to switch between web and text interaction assistants.

2018-10-15  Remy Demarest  <rdemarest@apple.com>

        Web Inspector: RDM: Toolbar hidden in when Inspector is docked to side.
        https://bugs.webkit.org/show_bug.cgi?id=190545
        rdar://problem/44674500

        Reviewed by Brian Burg.

        When the inspector is placed next to the web view it uses its _topContentInset and _totalHeightOfBanners
        to lay out the inspector so it does not underlap the window toolbar, but this technique does not work when
        in responsive design mode because of the different attachment view. This patch fixes the issue by using
        -[NSWindow contentLayoutRect] to figure out the height of the inspector instead of relying on the content
        insets of the web view. This requires observing -contentLayoutRect and ensure we only observe its changes
        when the view is actually on the screen.

        * UIProcess/WebInspectorProxy.h:
        Declare helpers to add/remove observer on the attached inspector window.

        * UIProcess/mac/WKInspectorViewController.h:
        * UIProcess/mac/WKInspectorViewController.mm:
        (-[WKInspectorViewController inspectorWKWebView:willMoveToWindow:]):
        (-[WKInspectorViewController inspectorWKWebViewDidMoveToWindow:]):

        * UIProcess/mac/WKInspectorWKWebView.h:
        * UIProcess/mac/WKInspectorWKWebView.mm:
        (-[WKInspectorWKWebView viewWillMoveToWindow:]):
        (-[WKInspectorWKWebView viewDidMoveToWindow]):

        * UIProcess/mac/WebInspectorProxyMac.mm:
        (-[WKWebInspectorProxyObjCAdapter observeValueForKeyPath:ofObject:change:context:]): Update inspector layout
        whenever the contentLayoutRect changes. Except when live resizing since the attachment view also sends
        notifications at the same time.
        (-[WKWebInspectorProxyObjCAdapter inspectorViewController:willMoveToWindow:]):
        (-[WKWebInspectorProxyObjCAdapter inspectorViewControllerDidMoveToWindow:]):
        (WebKit::WebInspectorProxy::attachmentWillMoveFromWindow): Remove the observer only if we set it up before.
        (WebKit::WebInspectorProxy::attachmentDidMoveToWindow): Set up the observer and immediately update the frame
        of the inspector since it just moved to its final destination.
        (WebKit::WebInspectorProxy::inspectedViewFrameDidChange): Adjust the frame of the attached inspector based
        on the contentLayoutRect of the window rather than the topContentInset of the web view.

2018-10-15  Wenson Hsieh  <wenson_hsieh@apple.com>

        Changing view scale should zoom to initial scale if the page is already at initial scale
        https://bugs.webkit.org/show_bug.cgi?id=190570
        <rdar://problem/45261877>

        Reviewed by Tim Horton.

        r237087 added support for changing the view scale on iOS, by making it possible to let the minimum layout size
        be a factor of the view size; this allows internal clients to change page zoom levels on iOS. Currently,
        changing the page zoom level automatically zooms to the new initial scale only if the user has not manually
        scaled the page before, even if the page is already at initial scale (e.g. after the user double taps to zoom on
        a small element, and double taps again to zoom back out to initial scale).

        This patch makes some minor adjustments to automatically zoom to the new initial scale after changing the view
        scale, as long as the page was at initial scale when changing zoom levels.

        Test: fast/viewport/ios/initial-scale-after-changing-view-scale.html

        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::areEssentiallyEqualAsFloat):

        Move this function further up in the file, so that we can use it in `setViewportConfigurationViewLayoutSize`.

        (WebKit::WebPage::setViewportConfigurationViewLayoutSize):

        If the page is near initial scale and the zoom level changes, zoom to the new initial scale.

        (WebKit::WebPage::viewportConfigurationChanged):

        Make this take a new enum argument that determines whether we want to zoom to initial scale as a result of the
        viewport configuration change (`No` by default).

2018-10-15  Chris Dumez  <cdumez@apple.com>

        Restrict browsing context lookup by name to frames that are related to one another
        https://bugs.webkit.org/show_bug.cgi?id=190475

        Reviewed by Alex Christensen.

        * WebProcess/Plugins/PluginView.cpp:
        (WebKit::PluginView::performJavaScriptURLRequest):

2018-10-15  Alex Christensen  <achristensen@webkit.org>

        Fix assertion after r237102
        https://bugs.webkit.org/show_bug.cgi?id=190459

        * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.cpp:
        (WebKit::InjectedBundlePageLoaderClient::InjectedBundlePageLoaderClient):
        Shipping Safari still uses shouldGoToBackForwardListItem, so only assert on
        newer platforms like we do in WKPageSetPageLoaderClient.

2018-10-15  Alex Christensen  <achristensen@webkit.org>

        Shrink more enum classes
        https://bugs.webkit.org/show_bug.cgi?id=190540

        Reviewed by Chris Dumez.

        * NetworkProcess/NetworkConnectionToWebProcess.h:
        * NetworkProcess/NetworkConnectionToWebProcess.messages.in:
        * NetworkProcess/NetworkDataTask.h:
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:
        * Shared/Authentication/AuthenticationChallengeDisposition.h:
        * Shared/Authentication/AuthenticationManager.h:
        * Shared/Authentication/AuthenticationManager.messages.in:
        * Shared/DragControllerAction.h:
        * Shared/LayerTreeContext.h:
        * Shared/UndoOrRedo.h:
        * UIProcess/Authentication/AuthenticationDecisionListener.h:
        * UIProcess/Cocoa/WebViewImpl.h:
        * UIProcess/Network/NetworkProcessProxy.h:
        * UIProcess/Network/NetworkProcessProxy.messages.in:
        * UIProcess/Notifications/WebNotification.h:
        * UIProcess/Notifications/WebNotificationManagerProxy.h:
        * UIProcess/PageClient.h:
        * UIProcess/UserContent/WebUserContentControllerProxy.h:
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * UIProcess/ios/PageClientImplIOS.h:
        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/forms/WKAirPlayRoutePicker.h:
        * WebProcess/Automation/WebAutomationSessionProxy.messages.in:
        * WebProcess/MediaStream/UserMediaPermissionRequestManager.h:
        * WebProcess/Storage/WebSWClientConnection.messages.in:
        * WebProcess/UserContent/InjectUserScriptImmediately.h:
        * WebProcess/UserContent/WebUserContentController.h:
        * WebProcess/UserContent/WebUserContentController.messages.in:
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:

2018-10-15  Michael Catanzaro  <mcatanzaro@igalia.com>

        Add new files missing from previous commit.

        * Source/cmake/FindLibseccomp.cmake: Added.

2018-10-15  Patrick Griffis  <pgriffis@igalia.com>

        [GTK][WPE] Implement subprocess sandboxing
        https://bugs.webkit.org/show_bug.cgi?id=188568

        Reviewed by Michael Catanzaro.

        This implements sandboxing of WebKitWebProcesses.

        The sandbox is opt-in at runtime as it is a behavior change.
        See webkit_web_context_set_sandbox_enabled() and the
        WEBKIT_FORCE_SANDBOX env var for developers.

        This is Linux specific using Namespaces, Seccomp, and a DBus proxy service.
        This introduces three new dependencies:

        - bwrap executable
        - libseccomp library
        - xdg-dbus-proxy executable

        The use of xdg-dbus-proxy will ideally be replaced once upstream DBus
        gains the same filtering abilities which is a work in progress.

        Currently the sandbox is not completed and there are a few large holes:

        - Pulseaudio: The Pipewire project will solve this.
        - DRI device access: No immediate solutions planned.
        - Webcam device access: Pipewire will also solve this.
        - Webprocess network access: Will require GStreamer changes.
        - DConf access: Custom proxy planned.
        - X11 access: Wayland solves this.

        That is not an exhaustive list but are the noteworthy ones. Filesystem access
        is still an evolving list as problems are found as is specific DBus name access.

        * PlatformGTK.cmake:
        * PlatformWPE.cmake:
        * SourcesGTK.txt:
        * SourcesWPE.txt:
        * UIProcess/API/glib/WebKitWebContext.cpp:
        (webkit_web_context_set_sandbox_enabled):
        (webkit_web_context_get_sandbox_enabled):
        * UIProcess/API/gtk/WebKitWebContext.h:
        * UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt:
        * UIProcess/API/wpe/WebKitWebContext.h:
        * UIProcess/ChildProcessProxy.cpp:
        (WebKit::ChildProcessProxy::getLaunchOptions):
        * UIProcess/ChildProcessProxy.h:
        (WebKit::ChildProcessProxy::platformGetLaunchOptions):
        * UIProcess/Launcher/ProcessLauncher.h:
        * UIProcess/Launcher/glib/BubblewrapLauncher.cpp: Added.
        (WebKit::memfd_create):
        (WebKit::argsToFd):
        (WebKit::XDGDBusProxyLauncher::setAddress):
        (WebKit::XDGDBusProxyLauncher::isRunning const):
        (WebKit::XDGDBusProxyLauncher::path const):
        (WebKit::XDGDBusProxyLauncher::proxyPath const):
        (WebKit::XDGDBusProxyLauncher::setPermissions):
        (WebKit::XDGDBusProxyLauncher::launch):
        (WebKit::XDGDBusProxyLauncher::childSetupFunc):
        (WebKit::XDGDBusProxyLauncher::makeProxyPath):
        (WebKit::XDGDBusProxyLauncher::dbusAddressToPath):
        (WebKit::bindIfExists):
        (WebKit::bindDBusSession):
        (WebKit::bindX11):
        (WebKit::bindDconf):
        (WebKit::bindWayland):
        (WebKit::bindPulse):
        (WebKit::bindFonts):
        (WebKit::bindGtkData):
        (WebKit::bindA11y):
        (WebKit::bindPathVar):
        (WebKit::bindGStreamerData):
        (WebKit::bindOpenGL):
        (WebKit::bindV4l):
        (WebKit::bindSymlinksRealPath):
        (WebKit::setupSeccomp):
        (WebKit::bubblewrapSpawn):
        * UIProcess/Launcher/glib/BubblewrapLauncher.h: Added.
        * UIProcess/Launcher/glib/FlatpakLauncher.cpp: Added.
        (WebKit::flatpakSpawn):
        * UIProcess/Launcher/glib/FlatpakLauncher.h: Added.
        * UIProcess/Launcher/glib/ProcessLauncherGLib.cpp:
        (WebKit::isInsideFlatpak):
        (WebKit::ProcessLauncher::launchProcess):
        * UIProcess/Plugins/PluginProcessProxy.cpp:
        (WebKit::PluginProcessProxy::getLaunchOptions):
        * UIProcess/Plugins/PluginProcessProxy.h:
        * UIProcess/Plugins/mac/PluginProcessProxyMac.mm:
        (WebKit::PluginProcessProxy::platformGetLaunchOptionsWithAttributes):
        * UIProcess/Plugins/unix/PluginProcessProxyUnix.cpp:
        (WebKit::PluginProcessProxy::platformGetLaunchOptionsWithAttributes):
        * UIProcess/WebProcessPool.h:
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::platformGetLaunchOptions):
        * UIProcess/WebProcessProxy.h:
        * UIProcess/glib/WebProcessProxyGLib.cpp: Added.
        (WebKit::WebProcessProxy::platformGetLaunchOptions):

2018-10-15  Alex Christensen  <achristensen@webkit.org>

        Add a temporarily off by default preference for doing safe browsing checks
        https://bugs.webkit.org/show_bug.cgi?id=190522

        Reviewed by Chris Dumez.

        Safe browsing development has taken longer than anticipated.
        To prevent the unused possible contacting the safe browsing provider for no benefit, make this off by default for now.
        I'll make it on by default when it's actually used.

        * Shared/WebPreferences.yaml:
        * UIProcess/API/Cocoa/WKPreferences.mm:
        (-[WKPreferences _setSafeBrowsingEnabled:]):
        (-[WKPreferences _safeBrowsingEnabled]):
        * UIProcess/API/Cocoa/WKPreferencesPrivate.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::decidePolicyForNavigationAction):

2018-10-15  Alex Christensen  <achristensen@webkit.org>

        Include EnumTraits.h less
        https://bugs.webkit.org/show_bug.cgi?id=190535

        Reviewed by Chris Dumez.

        * NetworkProcess/NetworkSessionCreationParameters.h:
        * Shared/Authentication/AuthenticationChallengeDisposition.h:
        * Shared/CoordinateSystem.h:
        * Shared/LayerTreeContext.h:
        * Shared/UndoOrRedo.h:
        * Shared/WebsiteAutoplayPolicy.h:
        * Shared/WebsitePopUpPolicy.h:
        * UIProcess/API/APIWebsitePolicies.h:
        * WebProcess/UserContent/InjectUserScriptImmediately.h:

2018-10-15  Alex Christensen  <achristensen@webkit.org>

        Remove InjectedBundle processing of back/forward lists
        https://bugs.webkit.org/show_bug.cgi?id=190459

        Reviewed by Chris Dumez.

        * Shared/API/c/WKDeprecated.h:
        * UIProcess/API/APINavigationClient.h:
        (API::NavigationClient::willGoToBackForwardListItem):
        * UIProcess/Cocoa/NavigationState.h:
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::NavigationClient::willGoToBackForwardListItem):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::willGoToBackForwardListItem):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * WebProcess/InjectedBundle/API/APIInjectedBundlePageLoaderClient.h:
        (API::InjectedBundle::PageLoaderClient::shouldGoToBackForwardListItem): Deleted.
        * WebProcess/InjectedBundle/API/c/WKBundleBackForwardListItem.cpp:
        (WKBundleBackForwardListItemCopyOriginalURL):
        (WKBundleBackForwardListItemCopyTitle):
        (WKBundleBackForwardListItemIsTargetItem):
        (WKBundleBackForwardListItemIsInPageCache):
        (WKBundleBackForwardListItemHasCachedPageExpired):
        * WebProcess/InjectedBundle/API/c/WKBundleBackForwardListItem.h:
        * WebProcess/InjectedBundle/API/c/WKBundleFileHandleRef.h:
        * WebProcess/InjectedBundle/API/c/WKBundleFrame.h:
        * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.cpp:
        (WebKit::InjectedBundlePageLoaderClient::InjectedBundlePageLoaderClient):
        (WebKit::InjectedBundlePageLoaderClient::shouldGoToBackForwardListItem): Deleted.
        * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.h:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::shouldGoToHistoryItem const):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.h:

2018-10-15  Alex Christensen  <achristensen@webkit.org>

        WebPageProxy should always have a HistoryClient
        https://bugs.webkit.org/show_bug.cgi?id=190450

        Reviewed by Chris Dumez.

        This will make it so we don't forget to null check it.
        No change in behavior because the default HistoryClient does nothing.

        * UIProcess/API/APIHistoryClient.h:
        * UIProcess/Cocoa/NavigationState.h:
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::createHistoryClient):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::WebPageProxy):
        (WebKit::WebPageProxy::setHistoryClient):
        (WebKit::WebPageProxy::didNavigateWithNavigationData):
        (WebKit::WebPageProxy::didPerformClientRedirect):
        (WebKit::WebPageProxy::didPerformServerRedirect):
        (WebKit::WebPageProxy::didUpdateHistoryTitle):
        * UIProcess/WebPageProxy.h:

2018-10-15  Alex Christensen  <achristensen@webkit.org>

        Use std::optional<size_t> for a WebBackForwardList's current index
        https://bugs.webkit.org/show_bug.cgi?id=190448

        Reviewed by Chris Dumez.

        Also remove m_capacity, which was immutable.

        * UIProcess/WebBackForwardList.cpp:
        (WebKit::WebBackForwardList::WebBackForwardList):
        (WebKit::WebBackForwardList::~WebBackForwardList):
        (WebKit::WebBackForwardList::pageClosed):
        (WebKit::WebBackForwardList::addItem):
        (WebKit::WebBackForwardList::goToItem):
        (WebKit::WebBackForwardList::currentItem const):
        (WebKit::WebBackForwardList::backItem const):
        (WebKit::WebBackForwardList::forwardItem const):
        (WebKit::WebBackForwardList::itemAtIndex const):
        (WebKit::WebBackForwardList::backListCount const):
        (WebKit::WebBackForwardList::forwardListCount const):
        (WebKit::WebBackForwardList::backListAsAPIArrayWithLimit const):
        (WebKit::WebBackForwardList::forwardListAsAPIArrayWithLimit const):
        (WebKit::WebBackForwardList::removeAllItems):
        (WebKit::WebBackForwardList::clear):
        (WebKit::WebBackForwardList::backForwardListState const):
        (WebKit::WebBackForwardList::restoreFromState):
        (WebKit::WebBackForwardList::loggingString):
        * UIProcess/WebBackForwardList.h:
        (WebKit::WebBackForwardList::currentIndex const): Deleted.

2018-10-14  Yusuke Suzuki  <yusukesuzuki@slowstart.org>

        [JSC] Remove Option::useAsyncIterator
        https://bugs.webkit.org/show_bug.cgi?id=190567

        Reviewed by Saam Barati.

        * Configurations/FeatureDefines.xcconfig:

2018-10-12  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] Allow SPI clients to lay out at arbitrarily scaled sizes and scale to fit the view
        https://bugs.webkit.org/show_bug.cgi?id=190504
        <rdar://problem/45117760>

        Reviewed by Tim Horton.

        Add support for _setViewScale: and _viewScale on iOS. While similar in concept to macOS, changing this property
        on iOS uses viewport configurations to change the minimum layout size of the document and apply view scaling.
        Setting the view scale on iOS to a value `s` multiplies the minimium layout size by a factor `1 / s`, but also
        multiplies the initial, minimum and maximum scales by a factor of `s`. The net effect of applying this scale
        causes the page to lay out at a larger width and shrink (or a smaller width and expand) to fit the viewport.

        * Shared/WebPageCreationParameters.cpp:
        (WebKit::WebPageCreationParameters::encode const):
        (WebKit::WebPageCreationParameters::decode):
        * Shared/WebPageCreationParameters.h:

        Send `viewportConfigurationLayoutSizeScaleFactor` alongside `viewportConfigurationViewLayoutSize`.

        (-[WKWebView _dispatchSetViewLayoutSize:]):
        (-[WKWebView _viewScale]):
        (-[WKWebView _setViewScale:]):

        Provide a different implementation of `_setViewScale:` on iOS, by scaling the effective minimum layout size.
        (See above for more detail).

        * UIProcess/API/Cocoa/WKWebViewPrivate.h:

        Add missing API availability annotations for the _viewScale property.

        * UIProcess/API/mac/WKView.mm:
        (-[WKView _setViewScale:]):
        * UIProcess/Cocoa/WebViewImpl.mm:

        Both -[WKView _setViewScale:] and -[WKWebView _setViewScale:] throw Objective C exceptions upon receiving a bad
        argument (e.g. scale <= 0). However, logic for throwing this exception is specific to iOS in WKWebView, and
        handled in WebViewImpl on macOS. To make this less confusing, move the exception throwing code out of
        !PLATFORM(MAC) in WKWebView, and move the path for raising this exception in WKView on macOS from WebViewImpl to
        WKView.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::creationParameters):
        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::layoutSizeScaleFactor const):

        Tie the notion of "view scale" on iOS to `layoutSizeScaleFactor`. As its name suggests, this is a scale factor
        by which we transform the layout size.

        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::setViewportConfigurationViewLayoutSize):
        * WebProcess/WebPage/WebPage.cpp:
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:

        Plumb the layout size scale factor over to the web process, along with the layout size.

        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::setViewportConfigurationViewLayoutSize):

2018-10-12  Alex Christensen  <achristensen@webkit.org>

        Allow encoding of small enum classes
        https://bugs.webkit.org/show_bug.cgi?id=190531

        Reviewed by Tim Horton.

        * NetworkProcess/NetworkLoadClient.h:
        * Scripts/webkit/messages.py:
        * Scripts/webkit/parser.py:
        (parse_parameters_string):
        * UIProcess/API/APINavigation.h:
        * UIProcess/WebFramePolicyListenerProxy.h:
        * UIProcess/WebNavigationState.h:
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * WebProcess/WebPage/WebPage.messages.in:

2018-10-12  Rob Buis  <rbuis@igalia.com>

        Solve the confusion around blankURL() and isBlankURL() in URL
        https://bugs.webkit.org/show_bug.cgi?id=158988

        Reviewed by Alex Christensen.

        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::continueWillSendRequest):
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::processForNavigationInternal):
        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::logUserInteraction):
        (WebKit::WebResourceLoadStatisticsStore::clearUserInteraction):
        (WebKit::WebResourceLoadStatisticsStore::hasHadUserInteraction):
        (WebKit::WebResourceLoadStatisticsStore::setLastSeen):
        (WebKit::WebResourceLoadStatisticsStore::setPrevalentResource):
        (WebKit::WebResourceLoadStatisticsStore::setVeryPrevalentResource):
        (WebKit::WebResourceLoadStatisticsStore::isPrevalentResource):
        (WebKit::WebResourceLoadStatisticsStore::isVeryPrevalentResource):
        (WebKit::WebResourceLoadStatisticsStore::clearPrevalentResource):
        (WebKit::WebResourceLoadStatisticsStore::setGrandfathered):
        (WebKit::WebResourceLoadStatisticsStore::isGrandfathered):
        (WebKit::WebResourceLoadStatisticsStore::setSubframeUnderTopFrameOrigin):
        (WebKit::WebResourceLoadStatisticsStore::setSubresourceUnderTopFrameOrigin):
        (WebKit::WebResourceLoadStatisticsStore::setSubresourceUniqueRedirectTo):
        (WebKit::WebResourceLoadStatisticsStore::setSubresourceUniqueRedirectFrom):
        (WebKit::WebResourceLoadStatisticsStore::setTopFrameUniqueRedirectTo):
        (WebKit::WebResourceLoadStatisticsStore::setTopFrameUniqueRedirectFrom):

2018-10-12  Youenn Fablet  <youenn@apple.com>

        Cache API tests are flaky due to file writing failing from time to time
        https://bugs.webkit.org/show_bug.cgi?id=190321

        Reviewed by Chris Dumez.

        Make NetworkCache::Storage::store callback return an error in case of writing failure.
        Use this to surface this error at Cache API level.

        Minor clean-up to make Storage::clear take a completion handler.

        Make also sure to create the folder before writing the file in CacheStorageEngine.
        As can be seen from some logging, it does happen that writing the 'origin' file sometimes fail with Posix error 9,
        which might mean the folder is not present.

        Changes are covered by current tests, flaky tests like http/wpt/cache-storage/cache-put-keys.https.any.worker.html
        will show a "failed writing data to the file system" error message.

        * NetworkProcess/cache/CacheStorageEngine.cpp:
        (WebKit::CacheStorage::Engine::writeFile):
        * NetworkProcess/cache/CacheStorageEngine.h:
        * NetworkProcess/cache/CacheStorageEngineCaches.cpp:
        (WebKit::CacheStorage::Caches::storeOrigin):
        (WebKit::CacheStorage::Caches::writeCachesToDisk):
        (WebKit::CacheStorage::Caches::writeRecord):
        * NetworkProcess/cache/NetworkCacheStorage.cpp:
        (WebKit::NetworkCache::Storage::WriteOperation::WriteOperation):
        (WebKit::NetworkCache::Storage::dispatchWriteOperation):
        (WebKit::NetworkCache::Storage::finishWriteOperation):
        (WebKit::NetworkCache::Storage::store):
        (WebKit::NetworkCache::Storage::clear):
        * NetworkProcess/cache/NetworkCacheStorage.h:
        (WebKit::NetworkCache::Storage::store):

2018-10-11  Youenn Fablet  <youenn@apple.com>

        IOS 12 - Service worker cache not shared when added to homescreen
        https://bugs.webkit.org/show_bug.cgi?id=190269
        <rdar://problem/45009961>

        Reviewed by Alex Christensen.

        NetworkProcessProxy does not always have all its stores in its hash map.
        Make sure to check for the default web process pool store when grabbing cache storage parameters from a given session ID.

        Add a way to remove the default website data for testing.
        This is used in the new API test.

        * UIProcess/API/APIWebsiteDataStore.cpp:
        (API::WebsiteDataStore::deleteDefaultDataStoreForTesting):
        * UIProcess/API/APIWebsiteDataStore.h:
        * UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
        (+[WKWebsiteDataStore _deleteDefaultDataStoreForTesting]):
        * UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::retrieveCacheStorageParameters):

2018-10-10  Simon Fraser  <simon.fraser@apple.com>

        Hide RenderLayer z-order and normal flow lists behind iterators
        https://bugs.webkit.org/show_bug.cgi?id=190457

        Reviewed by Zalan Bujtas.

        Expose the positive z-order, negative z-order and normal flow lists
        from RenderLayer as iterators rather than vectors of raw pointers.
        
        Use a lambda function to get access to the private constructor, while not having
        to refer to the nested RenderLayer::LayerIterator class in the header.

        * Shared/WebRenderLayer.cpp:
        (WebKit::WebRenderLayer::WebRenderLayer):
        (WebKit::WebRenderLayer::createArrayFromLayerList): Deleted.
        * Shared/WebRenderLayer.h:

2018-10-11  Tim Horton  <timothy_horton@apple.com>

        iOS: Scrolling using the arrow keys doesn't show the scroll indicator like it does on macOS
        https://bugs.webkit.org/show_bug.cgi?id=190478
        <rdar://problem/22194031>

        Reviewed by Megan Gardner.

        * Platform/spi/ios/UIKitSPI.h:
        Add some SPI.

        * UIProcess/ios/WKKeyboardScrollingAnimator.mm:
        (-[WKKeyboardScrollViewAnimator scrollToContentOffset:animated:]):
        Do a persistent flash when scrolling continuously.

        (-[WKKeyboardScrollViewAnimator scrollWithScrollToExtentAnimationTo:]):
        Do a single flash when doing a scroll-to-top/bottom.

2018-10-11  Tim Horton  <timothy_horton@apple.com>

        Clicking on bookmarklet crashes at NavigationState::willRecordNavigationSnapshot
        https://bugs.webkit.org/show_bug.cgi?id=190476
        <rdar://problem/32757191>

        Reviewed by Megan Gardner.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _saveBackForwardSnapshotForItem:]):
        The WKBackForwardListItem can be nil. Then we retrieve a reference from it.
        An Objective-C method that returns a reference is a great way to get
        a null reference. Other code then assumes it's not null and crashes.
        Add a nil check.

2018-10-11  Tim Horton  <timothy_horton@apple.com>

        Hardware keyboard arrow keys/spacebar don't scroll PDFs (works for web content)
        https://bugs.webkit.org/show_bug.cgi?id=190495
        <rdar://problem/22734616>

        Reviewed by Andy Estes.

        Hook up WKKeyboardScrollViewAnimator to the scroll view when
        WKPDFView is installed.

        * Platform/spi/ios/UIKitSPI.h:
        Move _inputFlags to the IPI section so we can remove it
        from WKContentViewInteraction.

        * SourcesCocoa.txt:
        * UIProcess/ios/WKWebEvent.h:
        * UIProcess/ios/WKWebEvent.mm:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView handleKeyEvent:]):
        (-[WKWebEvent dealloc]): Deleted.
        * WebKit.xcodeproj/project.pbxproj:
        Move WKWebEvent out of WKContentViewInteraction.
        We tend to prefer one file per class.
        Also, move the code to make a WKWebEvent from a UIEvent into
        -initWithEvent:, instead of being ad-hoc in WKContentViewInteraction.
        Adopt RetainPtr for the WKWebEvent's uiEvent property.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _handleKeyUIEvent:]):
        * UIProcess/Cocoa/WKWebViewContentProvider.h:
        Plumb hardware keyboard events to custom content views, if they want them.

        * UIProcess/ios/WKPDFView.mm:
        (-[WKPDFView dealloc]):
        (-[WKPDFView web_handleKeyEvent:]):
        (-[WKPDFView web_initWithFrame:webView:mimeType:]):
        Install a WKKeyboardScrollViewAnimator and plumb key events to it.

2018-10-11  Antoine Quint  <graouts@apple.com>

        [Web Animations] Allow iOS to also control toggling Web Animations CSS Integration
        https://bugs.webkit.org/show_bug.cgi?id=190489

        Reviewed by Tim Horton.

        * UIProcess/API/Cocoa/WKPreferences.mm:
        (-[WKPreferences _setWebAnimationsCSSIntegrationEnabled:]):
        (-[WKPreferences _webAnimationsCSSIntegrationEnabled]):
        * UIProcess/API/Cocoa/WKPreferencesPrivate.h:

2018-10-11  Keith Rollin  <krollin@apple.com>

        CURRENT_ARCH should not be used in Run Script phase.
        https://bugs.webkit.org/show_bug.cgi?id=190407
        <rdar://problem/45133556>

        Reviewed by Alexey Proskuryakov.

        CURRENT_ARCH is used in a number of Xcode Run Script phases. However,
        CURRENT_ARCH is not well-defined during this phase (and may even have
        the value "undefined") since this phase is run just once per build
        rather than once per supported architecture. Migrate away from
        CURRENT_ARCH in favor of ARCHS, either by iterating over ARCHS and
        performing an operation for each value, or by picking the first entry
        in ARCHS and using that as a representative value.

        * DerivedSources.make: When forming TARGET_TRIPLE_FLAGS, grab the
        first entry in ARCHS rather than use CURRENT_ARCH.

2018-10-11  Chris Dumez  <cdumez@apple.com>

        Regression(PSON): Deal with the drawing area potentially being null under WebChromeClient::contentsSizeChanged()
        https://bugs.webkit.org/show_bug.cgi?id=190474

        Reviewed by Geoffrey Garen.

        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        (WebKit::WebChromeClient::contentsSizeChanged const):

2018-10-11  Alejandro G. Castro  <alex@igalia.com>

        [GTK][WPE] Add mediaDevices.enumerateDevices support
        https://bugs.webkit.org/show_bug.cgi?id=185761

        Reviewed by Youenn Fablet.

        Implemented the enumerateDevices API using a new WebKit class
        (DeviceIdHashSaltStorage) that generates and stores the device ids
        hash salts per origin, used to avoid fingerprinting in the
        webpages.

        The patch also adds a new type of data for the WebsiteDataStore.
        That way the users can call the WebsiteDataStore to show what
        origins have hash salt generated and remove them at some point.

        For the moment just GTK+ and WPE ports are using this class to
        generate the hash salts. The patch adds code to the
        checkUserMediaPermissionForOrigin API implementation, it was empty
        until now for these ports. In this function we create an instance
        of a new class WebKitDeviceInfoPermissionRequest that implements
        the WebKitPermissionRequestIface interface, that allows the ports
        to use the current permission managers implemented in the
        embedders to handle this new kind of request the way they like
        it. The default implementation is deny.

        The class WebKitDeviceInfoPermissionRequest takes care of
        contacting the DeviceIdHashSaltStorage and request/regenerate the
        hash salts accordingly.

        Persistency is still not implemented, we will add it in a
        future patch.

        * Shared/WebsiteData/WebsiteDataType.h: Added the new type of
        webside data: DeviceIdHashSalt.
        * Sources.txt: Added new files to compilation.
        * SourcesGTK.txt: Ditto.
        * SourcesWPE.txt: Ditto.
        * UIProcess/API/glib/WebKitDeviceInfoPermissionRequest.cpp: Added
        this class to represent a request of permission to access the
        devices information. This is specific for glib ports and implements
        the policies regarding the hash salts when the embedder allows or
        denies the access using the DeviceIdHashSaltStorage class.
        (webkitDeviceInfoPermissionRequestAllow): Get the device hash salt
        when the origin is allowed and set it in the original request.
        (webkitDeviceInfoPermissionRequestDeny): Regenerate the device id
        hash salt when the user does not allow to access the device information.
        (webkit_permission_request_interface_init):
        (webkitDeviceInfoPermissionRequestDispose):
        (webkit_device_info_permission_request_class_init):
        (webkitDeviceInfoPermissionRequestCreate): Create the class using
        the proxy request from the webprocess and a reference to the
        DeviceIdHashSaltStorage.
        * UIProcess/API/glib/WebKitDeviceInfoPermissionRequestPrivate.h:
        Ditto.
        * UIProcess/API/glib/WebKitUIClient.cpp: Added the implementation
        for the checkUserMediaPermissionForOrigin API for the glib ports,
        it creates the device info request and calls the permission
        request API.
        * UIProcess/API/glib/WebKitWebsiteData.cpp:
        (recordContainsSupportedDataTypes): Added the DeviceIdHashSalt
        type.
        (toWebKitWebsiteDataTypes): Added the conversion from the WebKit
        types to the glib types for the WebsiteDataType::DeviceIdHashSalt.
        * UIProcess/API/glib/WebKitWebsiteDataManager.cpp:
        (toWebsiteDataTypes): Added the conversion from the glib type
        WEBKIT_WEBSITE_DATA_DEVICE_ID_HASH_SALT to the WebKit type.
        (webkit_website_data_manager_remove): Make sure we remote the
        DeviceIdHashSalt if the Cookies are selected.
        * UIProcess/API/gtk/WebKitDeviceInfoPermissionRequest.h: Added
        this new class that represents a permission request for the device
        information in the GTK+ port.
        * UIProcess/API/gtk/WebKitWebsiteData.h: Added the new type of
        website that in the GTK+ port:
        WEBKIT_WEBSITE_DATA_DEVICE_ID_HASH_SALT.
        * UIProcess/API/wpe/WebKitDeviceInfoPermissionRequest.h: Added
        this new class that represents a permission request for the device
        information in the WPE port.
        * UIProcess/API/wpe/WebKitWebsiteData.h: Added the new type of
        website that in the WPE port:
        WEBKIT_WEBSITE_DATA_DEVICE_ID_HASH_SALT.
        * UIProcess/DeviceIdHashSaltStorage.cpp: Added this new class that
        handles how to generate and store the hash salts inside
        WebKit. Persistency is still not implemented, we will add it in a
        future patch.
        (WebKit::DeviceIdHashSaltStorage::create):
        (WebKit::DeviceIdHashSaltStorage::deviceIdentifierHashSaltForOrigin):
        Check the map to get the hash salt for an origin, if there is none
        create a new random one.
        (WebKit::DeviceIdHashSaltStorage::regenerateDeviceIdentifierHashSaltForOrigin):
        Delete the hash salt of an origin if it already exists and create a new one.
        (WebKit::DeviceIdHashSaltStorage::getDeviceIdHashSaltOrigins):
        Returns the list of origins that have a hash salt generated for
        them. It is used in the WebsiteDataStore.
        (WebKit::DeviceIdHashSaltStorage::deleteDeviceIdHashSaltForOrigins):
        Deletes the hash salts in the map for an origin.
        (WebKit::DeviceIdHashSaltStorage::deleteDeviceIdHashSaltOriginsModifiedSince):
        Delete the origins that have not been modified since a time.
        * UIProcess/DeviceIdHashSaltStorage.h: Ditto.
        * UIProcess/UserMediaPermissionCheckProxy.h: Remove uneeded class
        definition.
        * UIProcess/WebsiteData/WebsiteDataStore.cpp: Added support to
        return and remove the origins with a generate hash salt used to
        generate the device ids.
        (WebKit::WebsiteDataStore::WebsiteDataStore): Added the new
        reference to the DeviceIdHashSaltStorage class, used to handle the
        hash salts.
        (WebKit::WebsiteDataStore::fetchDataAndApply): Get the list of
        origins with a hash salts in the DeviceIdHashSaltStorage.
        (WebKit::WebsiteDataStore::removeData): Remove the hash salts in
        DeviceIdHashSaltStorage for an origin.
        * UIProcess/WebsiteData/WebsiteDataStore.h: Ditto.
        (WebKit::WebsiteDataStore::deviceIdHashSaltStorage):
        * WebKit.xcodeproj/project.pbxproj: Added the
        DeviceIdHashSaltStorage to the compilation.

2018-10-10  Tim Horton  <timothy_horton@apple.com>

        Safari crashes when attempting to share a YouTube video while in full-screen
        https://bugs.webkit.org/show_bug.cgi?id=190456
        <rdar://problem/45130748>

        Reviewed by Wenson Hsieh.

        * Platform/spi/ios/UIKitSPI.h:
        * UIProcess/Cocoa/WKShareSheet.mm:
        (-[WKShareSheet presentWithParameters:completionHandler:]):
        Allow the share sheet to present centered, since we don't have enough
        context to put it in a more sensible place.

2018-10-10  Tim Horton  <timothy_horton@apple.com>

        REGRESSION (r236935): Layout test fast/events/ios/keyboard-scrolling-distance.html is timing out
        https://bugs.webkit.org/show_bug.cgi?id=190444
        <rdar://problem/45110698>

        Reviewed by Simon Fraser.

        There's a race in WKKeyboardScrollingAnimator that's exacerbated by HIDEventGenerator
        being much faster than a human finger. We get our "begin" events from interpretKeyEvent,
        after the Web Content process has had its way with it, but currently the
        back-channel "handle" events (e.g. for key up, which doesn't go to interpretKeyEvent)
        are retrieved from handleKeyWebEvent in the UI process, which is *before*
        the Web Content process has had a swing at it.

        If you lose the race (an insanely short tap like you get from HIDEventGenerator,
        or with a very busy Web Content process), we see handle(keyDown), handle(keyUp), begin(keyDown),
        and get stuck scrolling!

        Instead, retrieve the out-of-band "handle" events from _didHandleKeyEvent,
        so that they're sensibly and strictly ordered with respect to the timing of interpretKeyEvent/"begin".

        Also, hook up didFinishScrolling, so that UIScriptController's callbacks work correctly.

        * UIProcess/API/Cocoa/WKWebViewInternal.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView handleKeyWebEvent:]):
        (-[WKContentView _didHandleKeyEvent:eventWasHandled:]):
        (-[WKContentView keyboardScrollViewAnimatorDidFinishScrolling:]):
        * UIProcess/ios/WKKeyboardScrollingAnimator.h:
        * UIProcess/ios/WKKeyboardScrollingAnimator.mm:
        (-[WKKeyboardScrollingAnimator handleKeyEvent:]):
        (-[WKKeyboardScrollingAnimator displayLinkFired:]):
        (-[WKKeyboardScrollViewAnimator setDelegate:]):
        (-[WKKeyboardScrollViewAnimator handleKeyEvent:]):
        (-[WKKeyboardScrollViewAnimator didFinishScrolling]):

2018-10-10  Tim Horton  <timothy_horton@apple.com>

        Share more WKShareSheet code between macOS and iOS, and fix a few bugs
        https://bugs.webkit.org/show_bug.cgi?id=190420

        Reviewed by Simon Fraser.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _resolutionForShareSheetImmediateCompletionForTesting]):
        (-[WKWebView _setShareSheetCompletesImmediatelyWithResolutionForTesting:]):
        (-[WKWebView _invokeShareSheetWithResolution:]): Deleted.
        Add a new mechanism to tell the share sheet up-front that it should
        immediately dismiss with a particular resolution, for testing.
        See the Tools ChangeLog for justification.
        We keep the bit on WKWebView instead of WKShareSheet so that it can be
        called prior to invoking the share sheet.

        * UIProcess/API/Cocoa/WKWebViewInternal.h:
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        * UIProcess/Cocoa/WKShareSheet.h:
        * UIProcess/Cocoa/WKShareSheet.mm:
        (-[WKShareSheet initWithView:]):
        (-[WKShareSheet presentWithParameters:completionHandler:]):
        (-[WKShareSheet sharingServicePicker:didChooseSharingService:]):
        (-[WKShareSheet _didCompleteWithSuccess:]):
        (-[WKShareSheet dismiss]):
        (-[WKShareSheet dispatchDidDismiss]):
        (-[WKShareSheet initWithView:initWithView:]): Deleted.
        (-[WKShareSheet _dispatchDidDismiss]): Deleted.
        (-[WKShareSheet _cancel]): Deleted.
        (-[WKShareSheet _dismissDisplayAnimated:]): Deleted.
        (-[WKShareSheet _presentFullscreenViewController:animated:]): Deleted.
        (-[WKShareSheet invokeShareSheetWithResolution:]): Deleted.
        Reduce the number of extraneous members, methods, and #ifdefs.
        Try to share as much of WKShareSheet between the platforms as makes sense.
        The interface is now totally identical on the two platforms.

        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::showShareSheet):
        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _showShareSheet:completionHandler:]):
        (-[WKContentView invokeShareSheetWithResolution:]): Deleted.
        Instead of silently failing (without even calling the completion handler!)
        if we try to present one share sheet on top of another, dismiss the first
        and present the new one. This is important because there are (separately
        filed) bugs on both platforms where the completion handler is not called;
        now, instead of a tab getting stuck forever, we'll reject the promise
        when another share takes place.

2018-10-10  Tim Horton  <timothy_horton@apple.com>

        REGRESSION (r236678): Keyboard scrolling with arrow keys doesn't work on iOS
        https://bugs.webkit.org/show_bug.cgi?id=190433
        <rdar://problem/45111986>

        Reviewed by Simon Fraser.

        * UIProcess/ios/WKKeyboardScrollingAnimator.mm:
        (-[WKKeyboardScrollingAnimator keyboardScrollForEvent:]):
        (-[WKKeyboardScrollingAnimator beginWithEvent:]): Deleted.
        (-[WKKeyboardScrollViewAnimator beginWithEvent:]): Deleted.
        r236678 changes the characters in charactersIgnoringModifiers to match AppKit.
        We similarly need to update WKKeyboardScrollingAnimator's comparison.

2018-10-10  Yusuke Suzuki  <yusukesuzuki@slowstart.org>

        [JSC] Rename createXXX to tryCreateXXX if it can return RefPtr
        https://bugs.webkit.org/show_bug.cgi?id=190429

        Reviewed by Saam Barati.

        Use `tryCreate` or new `create`. If we use new `create`, we can use Ref<> and remove null check.

        * Shared/API/c/WKString.cpp:
        (WKStringCopyJSString):
        * WebProcess/Automation/WebAutomationSessionProxy.cpp:
        (WebKit::toJSValue):
        (WebKit::callPropertyFunction):
        (WebKit::WebAutomationSessionProxy::scriptObjectForFrame):
        (WebKit::WebAutomationSessionProxy::evaluateJavaScriptFunction):
        * WebProcess/Plugins/PDF/PDFPlugin.mm:
        (WebKit::PDFPlugin::runScriptsInPDFDocument):

2018-10-10  Chris Dumez  <cdumez@apple.com>

        Regression(PSON): Assertion hit under WebPageProxy::didNavigateWithNavigationData()
        https://bugs.webkit.org/show_bug.cgi?id=190418
        <rdar://problem/45059769>

        Reviewed by Geoffrey Garen.

        When process swapping and "suspending" the previous WebProcess in a SuspendedPageProxy,
        we need to keep around the main frame's ID that still exists on in this process. This
        is needed so that we can re-create a UI-side WebFrameProxy for the WebFrame that exists
        in the WebProcess, if we ever swap back to this suspended process (see login in
        WebPageProxy::swapToWebProcess()).

        The bug was that the main frame ID was stored on the WebPageProxy via m_mainFrameID instead of the
        SuspendedPageProxy. This means that m_mainFrameID would get overriden when navigating in the new
        WebProcess with the value 1 (because WebFrame identifiers start at 1 and are per-WebProcess).
        This would lead to us constructing a WebFrameProxy with the wrong frame identifier in
        WebPageProxy::swapToWebProcess(), which would override an existing unrelated WebFrame in the
        WebProcessProxy's HashMap of frames. This would lead to crashes later on as the WebFrame
        would not be associated to the WebPageProxy we expect.

        * UIProcess/SuspendedPageProxy.cpp:
        (WebKit::SuspendedPageProxy::SuspendedPageProxy):
        * UIProcess/SuspendedPageProxy.h:
        (WebKit::SuspendedPageProxy::mainFrameID const):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::maybeCreateSuspendedPage):
        (WebKit::WebPageProxy::swapToWebProcess):
        (WebKit::WebPageProxy::continueNavigationInNewProcess):
        (WebKit::WebPageProxy::didCreateMainFrame):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::suspendWebPageProxy):
        * UIProcess/WebProcessProxy.h:

2018-10-10  Antti Koivisto  <antti@apple.com>

        Do domain prewarming for processes for new tabs
        https://bugs.webkit.org/show_bug.cgi?id=190425

        Reviewed by Chris Dumez.

        We currently only do domain prewarming for navigation process swaps.

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::processForNavigationInternal):

        Do domain prewarming when using an existing but so far unused process.

        (WebKit::WebProcessPool::tryPrewarmWithDomainInformation):

        Factor into a function.

        * UIProcess/WebProcessPool.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::close):

        This didn't usually get invoked.

        (WebKit::WebPage::didReceivePolicyDecision):
        (WebKit::WebPage::didFinishLoad):

        Update prewarm information when a top level load finishes.

        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::sendPrewarmInformation):
        * WebProcess/WebProcess.h:

2018-10-09  Antoine Quint  <graouts@apple.com>

        Remove the frames() timing function
        https://bugs.webkit.org/show_bug.cgi?id=190034
        <rdar://problem/44827544>

        Reviewed by Dean Jackson.

        * Shared/WebCoreArgumentCoders.cpp:
        (IPC::ArgumentCoder<FramesTimingFunction>::encode): Deleted.
        (IPC::ArgumentCoder<FramesTimingFunction>::decode): Deleted.
        * Shared/WebCoreArgumentCoders.h:
        * WebProcess/WebPage/RemoteLayerTree/PlatformCAAnimationRemote.mm:
        (WebKit::PlatformCAAnimationRemote::Properties::encode const):
        (WebKit::PlatformCAAnimationRemote::Properties::decode):

2018-10-09  Youenn Fablet  <youenn@apple.com>

        ASSERTION FAILED: m_cachesLocks.contains(sessionID) in WebKit::CacheStorageEngineConnection::dereference(PAL::SessionID, unsigned long long)
        https://bugs.webkit.org/show_bug.cgi?id=190373
        <rdar://problem/45106402>

        Reviewed by Alex Christensen.

        This assertion can be hit if:
        - WebProcess has a DOMCache
        - NetworkProcess crashes
        - WebProcess navigates and dereference DOMCache.
        Remove this assertion as it is hit when a test is using testRunner.terminateNetworkProcess().

        * NetworkProcess/cache/CacheStorageEngineConnection.cpp:
        (WebKit::CacheStorageEngineConnection::dereference):

2018-10-09  Jer Noble  <jer.noble@apple.com>

        Crash when closing WKWebView during enter fullscreen animation
        https://bugs.webkit.org/show_bug.cgi?id=190412

        Reviewed by Brian Burg.

        We need a valid _webView if, during -[NSWindow close], we catch a notification saying we failed to enter
        fullscreen and try to replace the placeholder with the actual _webView.

        * UIProcess/mac/WKFullScreenWindowController.mm:
        (-[WKFullScreenWindowController close]):

2018-10-09  Alex Christensen  <achristensen@webkit.org>

        REGRESSION(r231663) loading in hidden WKWebViews stalls because WebProcess is suspended
        https://bugs.webkit.org/show_bug.cgi?id=190417
        <rdar://problem/43391014>

        Reviewed by Chris Dumez.

        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::didChangeIsLoading):
        Revert r321663, but keep the change to TestWKWebView.mm because that made the tests more reliable.

2018-10-09  Chris Dumez  <cdumez@apple.com>

        Allow behavior when the parent process IPC::Connection closes to be overridden by ChildProcess subclasses
        https://bugs.webkit.org/show_bug.cgi?id=190294

        Reviewed by Geoffrey Garen.

        Allow behavior when the parent process IPC::Connection closes to be overridden by ChildProcess subclasses.
        This will be useful to allow the NetworkProcess to not exit if it still has pending downloads.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::callExitSoon):
        (WebKit::NetworkProcess::initializeConnection):
        * NetworkProcess/NetworkProcess.h:
        * PluginProcess/PluginProcess.cpp:
        (WebKit::callExit):
        (WebKit::PluginProcess::initializeConnection):
        * PluginProcess/PluginProcess.h:
        * Shared/ChildProcess.cpp:
        (WebKit::ChildProcess::didClose):
        (WebKit::ChildProcess::initialize):
        (WebKit::callExitNow): Deleted.
        (WebKit::callExitSoon): Deleted.
        * Shared/ChildProcess.h:
        (WebKit::ChildProcess::shouldCallExitWhenConnectionIsClosed const): Deleted.
        * WebProcess/WebProcess.cpp:
        (WebKit::callExit):
        (WebKit::WebProcess::initializeConnection):

2018-10-09  Jer Noble  <jer.noble@apple.com>

        WebDriver: thrown ObjC exception under -[WKFullScreenWindowController windowDidFailToEnterFullScreen:] when session is terminated
        https://bugs.webkit.org/show_bug.cgi?id=190098
        <rdar://problem/42822671>

        Reviewed by Brian Burg.

        Forcibly exit fullscreen in resetState(), while the VideoFullscreenManagerProxy is still valid.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::resetState):

2018-10-09  Daniel Bates  <dabates@apple.com>

        [iOS] Ignore some deprecated declarations
        https://bugs.webkit.org/show_bug.cgi?id=190371

        Reviewed by Dan Bernstein.

        * UIProcess/ios/WKActionSheet.mm:
        (-[WKActionSheet init]):
        (-[WKActionSheet presentSheet:]):
        * UIProcess/ios/WKActionSheetAssistant.mm:
        (-[WKActionSheetAssistant presentSheet]):
        * UIProcess/ios/WKContentViewInteraction.mm:
        * UIProcess/ios/forms/WKFormSelectPicker.mm:
        (-[WKMultipleSelectPicker initWithView:]):
        * UIProcess/ios/forms/WKFormSelectPopover.mm:
        (-[WKSelectTableViewController initWithView:hasGroups:]):

2018-10-09  Claudio Saavedra  <csaavedra@igalia.com>

        [WPE] Explicitly link against gmodule where used
        https://bugs.webkit.org/show_bug.cgi?id=190398

        Reviewed by Michael Catanzaro.

        * PlatformWPE.cmake:

2018-10-09  Chris Dumez  <cdumez@apple.com>

        PSON: Doing a cross-site navigation via the URL bar does not swap process on iOS
        https://bugs.webkit.org/show_bug.cgi?id=190378
        <rdar://problem/45059466>

        Reviewed by Geoffrey Garen.

        Process swapping was sometimes not happening via URL bar navigation on iOS due to top-hit preloading,
        which would use a new WKWebView for the speculative load and rely on the _relatedWebView SPI to use
        the same WebContent process as the view currently on screen.

        To address the issue, if the source URL is empty and the page has a related page, use the related
        page's URL as source URL when doing the process-swap decision.

        * UIProcess/API/APIPageConfiguration.cpp:
        (API::PageConfiguration::relatedPage const):
        (API::PageConfiguration::relatedPage): Deleted.
        * UIProcess/API/APIPageConfiguration.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::processForNavigationInternal):

2018-10-09  Andy Estes  <aestes@apple.com>

        [iOS] Replace @"UIPreviewDataAttachmentListIsContentManaged" with a UIKit constant
        https://bugs.webkit.org/show_bug.cgi?id=190400
        <rdar://problem/35442879>

        Reviewed by Wenson Hsieh.

        Also fixed the iOS version check in WKContentViewInteraction.mm.

        * Platform/spi/ios/UIKitSPI.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _dataForPreviewItemController:atPosition:type:]):

2018-10-09  Tim Horton  <timothy_horton@apple.com>

        REGRESSION (r232416): Can not scroll after swiping back on quoteunquoteapps.com
        https://bugs.webkit.org/show_bug.cgi?id=190377
        <rdar://problem/45108222>

        Reviewed by Andy Estes.

        Introduce the notion of 'pausing' to SnapshotRemovalTracker.
        Reimplement r232416 in terms of this: the SnapshotRemovalTracker
        starts out paused (not accepting events), and un-pauses when
        we get a provisional load or same-document navigation.
        This way, we don't lose the watchdog timer in cases where we get
        no provisional load, same-document navigation, or main frame load
        (which is the separate root cause for this bug -- this just papers
        over it with a timeout).

        * UIProcess/Cocoa/ViewGestureController.cpp:
        (WebKit::ViewGestureController::didStartProvisionalLoadForMainFrame):
        (WebKit::ViewGestureController::didSameDocumentNavigationForMainFrame):
        Resume the snapshot removal tracker.

        (WebKit::ViewGestureController::didReachMainFrameLoadTerminalState):
        If we didn't see a provisional load or same document navigation,
        but somehow got to the terminal load state, immediately remove the snapshot.
        
        (WebKit::ViewGestureController::SnapshotRemovalTracker::resume):
        (WebKit::ViewGestureController::SnapshotRemovalTracker::start):
        Start the SnapshotRemovalTracker out in the paused state; it will be
        resumed in the same places we previously would call the
        provisionalOrSameDocumentLoadCallback.

        (WebKit::ViewGestureController::SnapshotRemovalTracker::stopWaitingForEvent):
        Ignore (but debug log) incoming events while paused.

        * UIProcess/Cocoa/ViewGestureController.h:
        (WebKit::ViewGestureController::SnapshotRemovalTracker::pause):
        (WebKit::ViewGestureController::SnapshotRemovalTracker::isPaused const):
        Add the pausing bit.

        * UIProcess/ios/ViewGestureControllerIOS.mm:
        (WebKit::ViewGestureController::endSwipeGesture):
        * UIProcess/mac/ViewGestureControllerMac.mm:
        (WebKit::ViewGestureController::endSwipeGesture):
        Remove m_provisionalOrSameDocumentLoadCallback.

2018-10-09  Antti Koivisto  <antti@apple.com>

        Prewarm FontDatabase on process swap
        https://bugs.webkit.org/show_bug.cgi?id=190312

        Reviewed by Chris Dumez.

        Add mechanism for caching prewarm information per domain on UI process side. This information
        is then passed to newly initialized web processes that are being used for the same domain.

        * UIProcess/WebPageProxy.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::processForNavigationInternal):

        Pass prewarm information on process swap to the new process.

        (WebKit::WebProcessPool::didCollectPrewarmInformation):

        UI process side cache.

        * UIProcess/WebProcessPool.h:
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::didCollectPrewarmInformation):
        * UIProcess/WebProcessProxy.h:
        * UIProcess/WebProcessProxy.messages.in:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::close):
        (WebKit::WebPage::didReceivePolicyDecision):

        Collect and cache prewarm information for the previous process on process swap.

        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::prewarmGlobally):

        Renamed for clarity.

        (WebKit::WebProcess::prewarmWithDomainInformation):
        (WebKit::WebProcess::sendPrewarmInformation):
        * WebProcess/WebProcess.h:
        * WebProcess/WebProcess.messages.in:

2018-10-08  Wenson Hsieh  <wenson_hsieh@apple.com>

        [Cocoa] [WK2] Add support for text alignment and text lists in font attributes
        https://bugs.webkit.org/show_bug.cgi?id=190342
        <rdar://problem/44767118>

        Reviewed by Tim Horton.

        Add encoding and decoding for text alignment and text lists in FontAttributes.

        * Shared/WebCoreArgumentCoders.cpp:
        (IPC::ArgumentCoder<FontAttributes>::encode):
        (IPC::ArgumentCoder<FontAttributes>::decode):

2018-10-08  Justin Fan  <justin_fan@apple.com>

        WebGPU: Rename old WebGPU prototype to WebMetal
        https://bugs.webkit.org/show_bug.cgi?id=190325
        <rdar://problem/44990443>

        Reviewed by Dean Jackson.

        Rename WebGPU prototype files to WebMetal in preparation for implementing the new (Oct 2018) WebGPU interface.

        * Configurations/FeatureDefines.xcconfig:
        * Shared/WebPreferences.yaml:
        * WebProcess/InjectedBundle/InjectedBundle.cpp:
        (WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner):

2018-10-08  Wenson Hsieh  <wenson_hsieh@apple.com>

        Followup to r236942: Make input type=color an internal feature
        https://bugs.webkit.org/show_bug.cgi?id=189162

        Rubber-stamped by Dean Jackson.

        I've learned from Dean that an internal feature is more suitable than an experimental feature in this scenario.

        * Shared/WebPreferences.yaml:

2018-10-08  Aditya Keerthi  <akeerthi@apple.com>

        Make <input type=color> a runtime enabled (on-by-default) feature
        https://bugs.webkit.org/show_bug.cgi?id=189162

        Reviewed by Wenson Hsieh and Tim Horton.

        * Configurations/FeatureDefines.xcconfig:
        * Shared/WebPreferences.yaml:

        Add an experimental feature flag for input type=color.

        * UIProcess/mac/WebColorPickerMac.mm:
        (-[WKPopoverColorWell webDelegate]):
        (-[WKPopoverColorWell setWebDelegate:]):

2018-10-08  Tim Horton  <timothy_horton@apple.com>

        Try to fix the build

        * UIProcess/ios/WKKeyboardScrollingAnimator.mm:

2018-10-08  Brian Burg  <bburg@apple.com>

        [Mac] Web Automation: some keyboard interactions don't generate events, causing event simulation to stall
        https://bugs.webkit.org/show_bug.cgi?id=190316
        <rdar://problem/42833290>

        Reviewed by Tim Horton.

        Some users have reported that Cmd-A for Select All no longer works in safaridriver.
        Instead, this hangs the session. This happens because the WebAutomationSession class
        assumes that each call to simulateKeyboardInteraction causes keyboard events to be processed,
        but in corner cases like Cmd-A, some events that we simulate are swallowed by AppKit and
        never make it back to WebKit. Because the session never gets the "keyboard events flushed"
        callback, it assumes the interaction is still ongoing, and never returns, causing a hang.

        This patch consists of two parts:
         - Add logging of important state changes and events when simulating user input.
         - Make code more robust when simulating key actions that generate no events on macOS.

        This change progresses WPT test key_shortcuts.py::test_mod_a_and_backspace_deletes_all_text on Mac.

        * Platform/Logging.h: Add a logging channel.
        * UIProcess/Automation/SimulatedInputDispatcher.cpp:
        (WebKit::SimulatedInputDispatcher::keyFrameTransitionDurationTimerFired):
        (WebKit::SimulatedInputDispatcher::transitionBetweenKeyFrames):
        (WebKit::SimulatedInputDispatcher::transitionInputSourceToState):
        (WebKit::SimulatedInputDispatcher::run):
        (WebKit::SimulatedInputDispatcher::finishDispatching):
        Add a bunch of logging so its easier to figure out where things get stuck.

        * UIProcess/Automation/WebAutomationSession.cpp:
        (WebKit::WebAutomationSession::simulateKeyboardInteraction):
        In some cases, no keyboard events need to be processed for the simulated interaction.
        When that happens, early exit rather than waiting for keyboard events to be flushed.

        * UIProcess/Automation/mac/WebAutomationSessionMac.mm:
        (WebKit::WebAutomationSession::sendSynthesizedEventsToPage): Logging.
        (WebKit::WebAutomationSession::platformSimulateKeyboardInteraction):
        On Mac, if you tap a character key while Command is held down, only a KeyDown event
        is forwarded to the first responder by AppKit, even if you send a KeyUp event too.
        In this case don't send an NSEvent since it won't ever be delivered back to WebKit.

        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::isProcessingKeyboardEvents const): Expose this state for keyboard
        events too.

2018-10-08  Youenn Fablet  <youenn@apple.com>

        NetworkCache::Storage should be WTF::DestructionThread::Main
        https://bugs.webkit.org/show_bug.cgi?id=190324

        Reviewed by Alex Christensen.

        Use WTF::DestructionThread::Main to make sure that Storage is destroyed in the main thread.
        Remove the code that was making sure that any ref was destroyed in the main thread.

        * NetworkProcess/cache/CacheStorageEngineCaches.cpp: Make sure the completion handler is not null.
        * NetworkProcess/cache/NetworkCacheStorage.cpp:
        (WebKit::NetworkCache::Storage::TraverseOperation::TraverseOperation): Make it clear that a ref is taken.
        (WebKit::NetworkCache::Storage::Storage):
        (WebKit::NetworkCache::Storage::synchronize): Protect 'this' when dispatching back to the main thread.
        Move the code that was after dispatch before dispatch to allow moving protectedThis in the dispatch lambda.
        (WebKit::NetworkCache::Storage::remove):
        (WebKit::NetworkCache::Storage::traverse):
        (WebKit::NetworkCache::Storage::clear):
        (WebKit::NetworkCache::Storage::deleteOldVersions):
        * NetworkProcess/cache/NetworkCacheStorage.h:

2018-10-08  Tim Horton  <timothy_horton@apple.com>

        Adjust keyboard scrolling animator to springy and semiphysical
        https://bugs.webkit.org/show_bug.cgi?id=190345
        <rdar://problem/43494393>

        Reviewed by Simon Fraser.

        Introduce WKKeyboardScrollViewAnimator, which wraps WKKeyboardScrollingAnimator
        and provides a reasonable set of default behaviors for UIScrollView.
        This is the first step on the way to WKKeyboardScrollingAnimator
        being platform- and toolkit-agnostic, and helps avoid adding a whole
        bunch of code to WKContentView.

        Adopt UIKit's scroll-to-top animation curve for whole-document scrolls.

        Adjust WKKeyboardScrollingAnimator's physics; it now simulates a spring
        attached to the page when decelerating. When a key is pressed, it applies
        a constant force to the page (up to some maximum velocity). When released,
        the spring causes the page to decelerate smoothly.

        Add rubber-banding to keyboard scrolling, based on the same spring that
        decelerates the page.

        Remove the initial bounce on keydown before starting the smooth scroll.

        Remove arrow key commands from WKContentView; this avoids double-processing
        incoming arrow key events, makes the event stream make more sense, and was
        entirely unnecessary.

        * Platform/spi/ios/UIKitSPI.h:
        Add a wide variety of useful SPI.

        * UIProcess/API/Cocoa/WKWebView.mm:
        * UIProcess/API/Cocoa/WKWebViewInternal.h:
        Remove _scrollByContentOffset:animated: because it's only used by
        the keyboard scrolling mechanism.

        Remove _arrowKey because we're removing the arrow key commands.

        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView setupInteraction]):
        Create a WKKeyboardScrollViewAnimator (which knows how to directly
        manipulate a UIScrollView) instead of a WKKeyboardScrollingAnimator
        (which requires its clients to implement everything in terms of an
        abstract interface.

        (-[WKContentView scrollViewWillStartPanOrPinchGesture]):
        Inform the keyboard scrolling animator that the user is going to start
        an interactive gesture that needs control of the scroll view, so it
        can stop its current animated scroll.

        (-[WKContentView canPerformActionForWebView:withSender:]):
        (-[WKContentView keyCommands]):
        (-[WKContentView _arrowKeyForWebView:]): Deleted.
        Remove arrow key commands.

        (-[WKContentView keyboardScrollViewAnimator:distanceForIncrement:]):
        Scale from content to WKWebView coordinate space; the keyboard scrolling
        animator operates in WKWebView coordinates. This was broken before.

        (-[WKContentView keyboardScrollViewAnimatorWillScroll:]):
        (-[WKContentView isScrollableForKeyboardScrollViewAnimator:]):
        (-[WKContentView isKeyboardScrollable]): Deleted.
        (-[WKContentView distanceForScrollingIncrement:]): Deleted.
        (-[WKContentView scrollByContentOffset:animated:]): Deleted.
        Reimplement these as keyboardScrollViewAnimator delegate methods.

        * UIProcess/ios/WKKeyboardScrollingAnimator.h:
        Add WKKeyboardScrollViewAnimator, hide the interface for
        WKKeyboardScrollingAnimator itself in the implementation file.

        * UIProcess/ios/WKKeyboardScrollingAnimator.mm:
        (-[WKKeyboardScrollingAnimator initWithScrollable:]):
        (-[WKKeyboardScrollingAnimator parameters]):
        (-[WKKeyboardScrollingAnimator invalidate]):
        (unitVector):
        Return a unit vector in the given direction.

        (perpendicularAbsoluteUnitVector):
        Return a positive unit vector perpendicular to the axis of the given direction.
        Useful for multiplying with another vector to remove the component in the
        axis of the given direction.

        (boxSide):
        Convert ScrollingDirection to WebCore::PhysicalBoxSide, for use with RectEdges.

        (-[WKKeyboardScrollingAnimator keyboardScrollForEvent:]):
        Instead of just returning the desired increment, compute everything we'll need
        for the lifetime of the scroll (including the force applied, maximum
        velocity, etc.) and return them together.

        (-[WKKeyboardScrollingAnimator beginWithEvent:]):
        Use the scrollable's native scroll-to-extent animation (e.g. UIScrollView's
        scroll-to-top curve) for whole-document scrolls.

        Remove the first discrete scroll; start the smooth scroll immediately.

        (-[WKKeyboardScrollingAnimator handleKeyEvent:]):
        (farthestPointInDirection):
        (-[WKKeyboardScrollingAnimator stopAnimatedScroll]):
        Stop the current scroll. Let the spring coast to its natural stopping
        point given the system's current energy, unless that stopping point is
        less than one increment from the starting point. In that case, we attach
        the spring to /that/ point and let it run.

        (-[WKKeyboardScrollingAnimator startDisplayLinkIfNeeded]):
        (-[WKKeyboardScrollingAnimator stopDisplayLink]):
        (-[WKKeyboardScrollingAnimator willStartInteractiveScroll]):
        Immediately stop all motion if the user touches the screen to scroll
        or zoom with fingers.

        (-[WKKeyboardScrollingAnimator displayLinkFired:]):
        Update the position of the scrollable based on the applied force and spring.
        See the comments in this function for more details.

        (-[WKKeyboardScrollViewAnimator init]):
        (-[WKKeyboardScrollViewAnimator initWithScrollView:]):
        (-[WKKeyboardScrollViewAnimator dealloc]):
        (-[WKKeyboardScrollViewAnimator invalidate]):
        (-[WKKeyboardScrollViewAnimator setDelegate:]):
        (-[WKKeyboardScrollViewAnimator willStartInteractiveScroll]):
        (-[WKKeyboardScrollViewAnimator beginWithEvent:]):
        (-[WKKeyboardScrollViewAnimator handleKeyEvent:]):
        (-[WKKeyboardScrollViewAnimator isKeyboardScrollable]):
        (-[WKKeyboardScrollViewAnimator distanceForIncrement:]):
        (-[WKKeyboardScrollViewAnimator scrollToContentOffset:animated:]):
        (-[WKKeyboardScrollViewAnimator scrollWithScrollToExtentAnimationTo:]):
        (-[WKKeyboardScrollViewAnimator contentOffset]):
        (-[WKKeyboardScrollViewAnimator boundedContentOffset:]):
        (-[WKKeyboardScrollViewAnimator interactiveScrollVelocity]):
        (-[WKKeyboardScrollViewAnimator scrollableDirectionsFromOffset:]):
        (-[WKKeyboardScrollViewAnimator rubberbandableDirections]):
        Add WKKeyboardScrollViewAnimator, which wraps WKKeyboardScrollingAnimator
        and provides animated keyboard scrolling for a UIScrollView without much
        additional plumbing work. It contains reasonable default behaviors,
        with a few optional delegate methods for customization.

        (-[WKKeyboardScrollingAnimator _scrollOffsetForEvent:]): Deleted.
        (-[WKKeyboardScrollingAnimator startAnimatedScroll]): Deleted.

2018-10-08  Jeremy Jones  <jeremyj@apple.com>

        Remove dead code: VideoFullscreenModel::isVisible()
        https://bugs.webkit.org/show_bug.cgi?id=190356

        Reviewed by Jon Lee.

        Remove isVisible since it is no longer used.

        * UIProcess/Cocoa/VideoFullscreenManagerProxy.h:
        * UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:
        (WebKit::VideoFullscreenModelContext::isVisible const): Deleted.
        (WebKit::VideoFullscreenManagerProxy::isVisible const): Deleted.

2018-10-08  Jeremy Jones  <jeremyj@apple.com>

        Remove dead code: resetMediaState.
        https://bugs.webkit.org/show_bug.cgi?id=190355

        Reviewed by Jon Lee.

        Remove resetMediaState since it is no longer used.

        * UIProcess/Cocoa/PlaybackSessionManagerProxy.h:
        * UIProcess/Cocoa/PlaybackSessionManagerProxy.messages.in:
        * UIProcess/Cocoa/PlaybackSessionManagerProxy.mm:
        (WebKit::PlaybackSessionManagerProxy::resetMediaState): Deleted.
        * WebProcess/cocoa/PlaybackSessionManager.h:
        * WebProcess/cocoa/PlaybackSessionManager.mm:
        (WebKit::PlaybackSessionInterfaceContext::resetMediaState): Deleted.

2018-10-08  Jeremy Jones  <jeremyj@apple.com>

        Use MediaPlayerEnums::VideoGravity in VideoFullscreenModel.
        https://bugs.webkit.org/show_bug.cgi?id=190357

        Reviewed by Jon Lee.

        Use MediaPlayerEnums::VideoGravity instead of creating another identical enum in VideoFullscreenModel.

        * UIProcess/Cocoa/VideoFullscreenManagerProxy.h:
        * UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:
        (WebKit::VideoFullscreenModelContext::setVideoLayerGravity):
        (WebKit::VideoFullscreenManagerProxy::setVideoLayerGravity):
        * WebProcess/cocoa/VideoFullscreenManager.mm:
        (WebKit::VideoFullscreenManager::setVideoLayerGravityEnum):

2018-10-08  Alex Christensen  <achristensen@webkit.org>

        Remove WKBundleFileHandleRef
        https://bugs.webkit.org/show_bug.cgi?id=190360

        Reviewed by Tim Horton.

        WKBundleFrameGetJavaScriptWrapperForFileForWorld and WKBundleFileHandleCreateWithPath were only used in Mail
        and were removed in rdar://problem/44955158
        I need to remove them for rdar://problem/24576194

        * Shared/API/APIObject.h:
        * Shared/API/c/WKDeprecated.h:
        * Shared/API/c/WKDeprecatedFunctions.cpp:
        (WKBundleFrameGetJavaScriptWrapperForFileForWorld):
        (WKBundleFileHandleCreateWithPath):
        * Sources.txt:
        * SourcesCocoa.txt:
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/InjectedBundle/API/c/WKBundleAPICast.h:
        * WebProcess/InjectedBundle/API/c/WKBundleFileHandleRef.cpp: Removed.
        * WebProcess/InjectedBundle/API/c/WKBundleFileHandleRef.h:
        * WebProcess/InjectedBundle/API/c/WKBundleFrame.cpp:
        (WKBundleFrameGetJavaScriptWrapperForFileForWorld): Deleted.
        * WebProcess/InjectedBundle/API/c/WKBundleFrame.h:
        * WebProcess/InjectedBundle/DOM/InjectedBundleFileHandle.cpp: Removed.
        * WebProcess/InjectedBundle/DOM/InjectedBundleFileHandle.h: Removed.
        * WebProcess/WebPage/WebFrame.cpp:
        * WebProcess/WebPage/WebFrame.h:

2018-10-08  Konstantin Tokarev  <annulen@yandex.ru>

        Validation in Connection::readBytesFromSocket() is too aggressive
        https://bugs.webkit.org/show_bug.cgi?id=190281

        Reviewed by Michael Catanzaro.

        Since r217206 Connection::readBytesFromSocket() validates size of
        control message. However, it compares cmsg_len with attachmentMaxAmount,
        while Connection::sendOutgoingMessage() computes it as
        CMSG_LEN(sizeof(int) * attachmentFDBufferLength) where
        attachmentFDBufferLength <= attachmentMaxAmount. This mismatch between
        sender and receiver leads to possibility of assertion failure with large
        number of attachments, e.g. here 62 attachments have cmsg_length == 264.

        * Platform/IPC/unix/ConnectionUnix.cpp:
        (IPC::readBytesFromSocket):

2018-10-08  Chris Dumez  <cdumez@apple.com>

        Have DOMWindowProperty get is frame from its associated DOMWindow
        https://bugs.webkit.org/show_bug.cgi?id=190341

        Reviewed by Alex Christensen.

        * WebProcess/InjectedBundle/InjectedBundleDOMWindowExtension.cpp:
        (WebKit::InjectedBundleDOMWindowExtension::InjectedBundleDOMWindowExtension):

2018-10-07  Dan Bernstein  <mitz@apple.com>

        Tried to fix HAVE(LINK_PREVIEW) iOS builds.

        * UIProcess/WKImagePreviewViewController.mm:
        (-[WKImagePreviewViewController previewActions]):

2018-10-06  Dan Bernstein  <mitz@apple.com>

        Tried to fix the macOS Mojave build.

        * UIProcess/API/Cocoa/LegacyBundleForClass.mm:

2018-10-06  Dan Bernstein  <mitz@apple.com>

        WebKit part of [Xcode] Update some build settings as recommended by Xcode 10
        https://bugs.webkit.org/show_bug.cgi?id=190250

        Reviewed by Andy Estes.

        * Configurations/Base.xcconfig: Enabled CLANG_WARN_COMMA,
          CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS, CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF, and
          CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED.

        * WebKit.xcodeproj/project.pbxproj: Let Xcode update LastUpgradeCheck.

        * UIProcess/API/Cocoa/WKBrowsingContextController.mm:
        * UIProcess/API/Cocoa/WKBrowsingContextGroup.mm:
        * UIProcess/API/Cocoa/WKConnection.mm:
        * UIProcess/API/Cocoa/WKNavigationData.mm:
        * UIProcess/API/Cocoa/WKProcessGroup.mm:
        * UIProcess/API/Cocoa/WKTypeRefWrapper.mm:
        * UIProcess/API/Cocoa/WKWebView.mm:
        * UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
        * UIProcess/API/Cocoa/_WKWebsiteDataStore.mm:
        * UIProcess/API/mac/WKView.mm:
        * WebProcess/Plugins/PDF/PDFPlugin.mm:
        * WebProcess/WebPage/mac/WKAccessibilityWebPageObjectMac.mm:

          Suppressed -Wdeprecated-implementations around some class, category and method
          implementations the above files.

2018-10-05  Alex Christensen  <achristensen@webkit.org>

        REGRESSION(r236154) Page loads are not drawn when loaded in shipped Safari11/12
        https://bugs.webkit.org/show_bug.cgi?id=190202

        Reviewed by Youenn Fablet.

        Safari11/12 had a WKPageLoaderClient and a WKPageNavigationClient.
        It did not actually draw the page until its WKPageNavigationClient.renderingProgressDidChange was called.
        r236154 made it so we only call WKPageLoaderClient.didLayout if an application has both clients.
        This fixes open source WebKit running with shipped Safari.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didReachLayoutMilestone):

2018-10-05  Chris Dumez  <cdumez@apple.com>

        [PSON] Drop snapshotting workaround introduced in r235898
        https://bugs.webkit.org/show_bug.cgi?id=190314

        Reviewed by Geoffrey Garen.

        Drop snapshotting workaround introduced in r235898 as it is no longer needed now
        that the flashing bug has been fixed.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::continueNavigationInNewProcess):

2018-10-05  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] RealtimeMediaSource should be able to vend hashed IDs
        https://bugs.webkit.org/show_bug.cgi?id=190142
        <rdar://problem/44911109>

        Reviewed by Youenn Fablet.

        * Shared/WebCoreArgumentCoders.cpp:
        (IPC::ArgumentCoder<MediaConstraints>::encode):
        (IPC::ArgumentCoder<MediaConstraints>::decode):
        * UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
        (WebKit::UserMediaCaptureManagerProxy::createMediaSourceForCaptureDeviceWithConstraints):
        * UIProcess/Cocoa/UserMediaCaptureManagerProxy.h:
        * UIProcess/Cocoa/UserMediaCaptureManagerProxy.messages.in:
        * UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
        (WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame):
        * WebProcess/cocoa/UserMediaCaptureManager.cpp:
        (WebKit::UserMediaCaptureManager::Source::Source):
        (WebKit::UserMediaCaptureManager::createCaptureSource):
        * WebProcess/cocoa/UserMediaCaptureManager.h:

2018-10-03  Jer Noble  <jer.noble@apple.com>

        Add support for reporting "display composited video frames" through the VideoPlaybackQuality object.
        https://bugs.webkit.org/show_bug.cgi?id=190266

        Reviewed by Eric Carlson.

        Add a new preference to control the visibility of displayCompositedVideoFrames in the VideoPlaybackQualityObject.

        * Shared/WebPreferences.yaml:
        * UIProcess/API/Cocoa/WKPreferences.mm:
        (-[WKPreferences _setVideoQualityIncludesDisplayCompositingEnabled:]):
        (-[WKPreferences _videoQualityIncludesDisplayCompositingEnabled]):
        * UIProcess/API/Cocoa/WKPreferencesPrivate.h:

2018-10-05  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r236866.

        Breaks internal builds.

        Reverted changeset:

        "Add support for reporting "display composited video frames"
        through the VideoPlaybackQuality object."
        https://bugs.webkit.org/show_bug.cgi?id=190266
        https://trac.webkit.org/changeset/236866

2018-10-05  Zach Li  <zachli@apple.com>

        Expose whether WKWebProcessPlugInNodeHandle is a select element to clients
        https://bugs.webkit.org/show_bug.cgi?id=190302
        <rdar://problem/45031469>

        Reviewed by Tim Horton.

        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandle.h:
        Introduce a new property `isSelectElement`.
        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandle.mm:
        (-[WKWebProcessPlugInNodeHandle isSelectElement]):
        * WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.cpp:
        (WebKit::InjectedBundleNodeHandle::isSelectElement const):
        Check whether the node is a select element.
        * WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.h:

2018-10-04  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] [WK2] Expose some more editing SPI on WKWebView
        https://bugs.webkit.org/show_bug.cgi?id=190232
        <rdar://problem/44963368>

        Reviewed by Tim Horton.

        Exposes a few additional editing commands as SPI on WKWebView, by defining a new extension on WKWebView that
        also conforms to <UIResponderStandardEditActions>. This patch implements nearly all of the remaining
        unimplemented methods on UIResponderStandardEditActions, and the new extension augments this set of editing
        methods by adding additional editing helpers that don't currently exist on iOS (e.g. toggleStrikeThrough and
        insertUnorderedList). The names of these new methods have been largely been borrowed from their counterparts on
        macOS (see: `NSResponder.h`).

        The new edit actions are added in this patch on iOS are:

        ```
        - (void)alignCenter:(id)sender;
        - (void)alignJustified:(id)sender;
        - (void)alignLeft:(id)sender;
        - (void)alignRight:(id)sender;
        - (void)indent:(id)sender;
        - (void)insertOrderedList:(id)sender;
        - (void)insertUnorderedList:(id)sender;
        - (void)outdent:(id)sender;
        - (void)toggleStrikeThrough:(id)sender;
        - (void)setFont:(UIFont *)font sender:(id)sender;
        - (void)setFontSize:(CGFloat)fontSize sender:(id)sender;
        - (void)setTextColor:(UIColor *)color sender:(id)sender;
        ```

        Tests:  WKWebViewEditActions.ListInsertion
                WKWebViewEditActions.ChangeIndentation
                WKWebViewEditActions.SetAlignment
                WKWebViewEditActions.ToggleStrikeThrough
                WKWebViewEditActions.ChangeFontSize
                WKWebViewEditActions.SetTextColor
                WKWebViewEditActions.SetFontFamily

        * Platform/spi/ios/UIKitSPI.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView canPerformAction:withSender:]):

        Update this to handle the new editing actions. For now, we simply treat all of the new edit actions in the same
        way as we currently treat bold, italic and underline: that is, they are enabled only when the user is in a
        richly contenteditable element.

        (-[WKWebView setFont:sender:]):
        (-[WKWebView setFontSize:sender:]):

        Construct and send a set of FontChanges.

        (-[WKWebView setTextColor:sender:]):

        Invoke "ForeColor" with the serialized color representation. This allows us to handle `rgba()` color values,
        which hex format would not permit.

        * UIProcess/API/Cocoa/WKWebViewPrivate.h:

        Add the new SPI.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::changeFontAttributes):
        (WebKit::WebPageProxy::changeFont):

        Pull logic for applying font and font attribute style changes out of macOS-specific code, and into
        platform-agnostic code in WebPage and WebPageProxy.

        * UIProcess/WebPageProxy.h:
        * UIProcess/ios/WKContentViewInteraction.h:

        Add the new supported editing commands as supported actions in WKWebView. The only new editing commands that
        aren't present in this list are -setFont:sender:, -setColor:sender:, and -setFontSize:sender: which are manually
        handled in places where the `FOR_EACH_WKCONTENTVIEW_ACTION` macro is otherwise used. In a followup, we could
        consider augmenting `FOR_EACH_WKCONTENTVIEW_ACTION` to handle actions with multiple arguments.

        * UIProcess/ios/WKContentViewInteraction.mm:

        Define a new helper macro here to define boilerplate implementations of the -…ForWebView edit command
        implementations that turn around and invoke `_page->executeEditCommand` with no additional arguments, and an
        edit command name matching that of the WebCore edit command.

        (-[WKContentView toggleStrikeThroughForWebView:]):
        (-[WKContentView increaseSizeForWebView:]):
        (-[WKContentView decreaseSizeForWebView:]):
        (-[WKContentView setFontForWebView:sender:]):
        (-[WKContentView setFontSizeForWebView:sender:]):
        (-[WKContentView setTextColorForWebView:sender:]):
        (-[WKContentView canPerformActionForWebView:sender:]):

        Add …ForWebView plumbing for the new editing actions, so they turn around and call into WKContentView by
        default, but behavior may be overridden in WKWebView.

        * UIProcess/mac/WebPageProxyMac.mm:
        (WebKit::WebPageProxy::changeFontAttributes): Deleted.
        (WebKit::WebPageProxy::changeFont): Deleted.
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::changeFontAttributes):
        (WebKit::WebPage::changeFont):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:
        * WebProcess/WebPage/mac/WebPageMac.mm:
        (WebKit::WebPage::changeFontAttributes): Deleted.
        (WebKit::WebPage::changeFont): Deleted.

2018-10-04  Jer Noble  <jer.noble@apple.com>

        Add support for reporting "display composited video frames" through the VideoPlaybackQuality object.
        https://bugs.webkit.org/show_bug.cgi?id=190266

        Reviewed by Eric Carlson.

        Add a new preference to control the visibility of displayCompositedVideoFrames in the VideoPlaybackQualityObject.

        * Shared/WebPreferences.yaml:
        * UIProcess/API/Cocoa/WKPreferences.mm:
        (-[WKPreferences _setVideoQualityIncludesDisplayCompositingEnabled:]):
        (-[WKPreferences _videoQualityIncludesDisplayCompositingEnabled]):
        * UIProcess/API/Cocoa/WKPreferencesPrivate.h:

2018-10-04  Wenson Hsieh  <wenson_hsieh@apple.com>

        [Cocoa] Add SPI to expose typing attributes at the current selection on WKWebView
        https://bugs.webkit.org/show_bug.cgi?id=190119
        <rdar://problem/44767062>

        Reviewed by Tim Horton.

        Add support for new WebKit2 SPI to notify the UI delegate about font attributes when the editor state changes
        (e.g. due to selection changes, or executing an edit command). See below for more detail.

        Test: FontAttributes.FontAttributesAfterChangingSelection

        * Shared/EditorState.cpp:
        (WebKit::EditorState::PostLayoutData::encode const):
        (WebKit::EditorState::PostLayoutData::decode):
        * Shared/EditorState.h:

        Add a new optional `FontAttributes` member to EditorState's post-layout data. FontAttributes are computed and
        sent over IPC only if the UI delegate implements the new delegate hook which requires information about font
        attributes.

        * Shared/WebPageCreationParameters.cpp:
        (WebKit::WebPageCreationParameters::encode const):
        (WebKit::WebPageCreationParameters::decode):
        * Shared/WebPageCreationParameters.h:

        Add a new flag for the UI process to let a new web page know whether it should additionally compute font
        attributes when computing editor state.

        * UIProcess/API/APIUIClient.h:
        (API::UIClient::needsFontAttributes const):
        (API::UIClient::didChangeFontAttributes):
        * UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _didChangeEditorState]):
        * UIProcess/Cocoa/UIDelegate.h:
        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::UIDelegate::setDelegate):
        (WebKit::UIDelegate::UIClient::didChangeFontAttributes):

        Call out to the UI delegate with a font attribute dictionary, created via FontAttributes on EditorState's
        post-layout data.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::setUIClient):

        Update whether or not the UI process needs to know about font attributes. The UI process only requires font
        attribute information if the UI delegate implements `-_webView:didChangeFontAttributes:`.

        (WebKit::WebPageProxy::setNeedsFontAttributes):
        (WebKit::WebPageProxy::creationParameters):
        * UIProcess/WebPageProxy.h:
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::editorStateChanged):
        * UIProcess/mac/WebPageProxyMac.mm:
        (WebKit::WebPageProxy::editorStateChanged):

        Update the cached font attributes in the UI process when receiving a new editor state update.

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::m_cpuLimit):
        (WebKit::WebPage::editorState const):
        (WebKit::WebPage::setNeedsFontAttributes):

        Add a new IPC hook to update whether or not the page should additionally compute font attributes. In the case
        where the UI delegate changes from something that does not require font attributes to one that does, we
        additionally schedule an editor state update.

        (WebKit::WebPage::updateFontAttributesAfterEditorStateChange):

        Private helper function to plumb FontAttributes to the UI client after an editor state change.

        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:

2018-10-04  Jeremy Jones  <jeremyj@apple.com>

        Unify implementation in VideoFullscreenInterfaceAVKit
        https://bugs.webkit.org/show_bug.cgi?id=190091
        rdar://problem/44734523

        Reviewed by Jer Noble.

        Unified code in VideoFullscreenInterfaceAVKit now that new code path is proven and include
        any changes that had been made in the old path.

        * UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:
        * WebProcess/cocoa/VideoFullscreenManager.mm:
        (WebKit::VideoFullscreenManager::supportsVideoFullscreenStandby const):
        (WebKit::VideoFullscreenManager::didSetupFullscreen):
        (WebKit::VideoFullscreenManager::didExitFullscreen):

2018-10-04  Matt Lewis  <jlewis3@apple.com>

        Unreviewed, rolling out r236730.

        This caused a consistent crash in test http/tests/media/media-
        stream/get-display-media-prompt.html.

        Reverted changeset:

        "[MediaStream] RealtimeMediaSource should be able to vend
        hashed IDs"
        https://bugs.webkit.org/show_bug.cgi?id=190142
        https://trac.webkit.org/changeset/236730

2018-10-04  Brian Burg  <bburg@apple.com>

        Web Automation: clear pending callbacks when the session terminates
        https://bugs.webkit.org/show_bug.cgi?id=190259
        <rdar://problem/44958352>

        Reviewed by Joseph Pecoraro.

        WebAutomationSession::terminate() can be called at any time to nuke the session.
        However, it's possible that the session is in the midst of simulating keyboard/mouse
        events. While in that state, there are some CompletionHandler objects waiting
        for key/mouse events to be flushed. We need to empty out callback maps with
        CompletionHandler instances so that they do not assert because they were never called.

        I was able to test this manually by running a test that erroneously hangs
        while waiting for keyboard input. While the test was hung, I killed the NetworkProcess
        manually to trigger WebAutomationSession::terminate(). From there, I saw that the
        Perform Actions REST API call gets cancelled with the appropriate error code.

        * UIProcess/Automation/WebAutomationSession.cpp:
        (WebKit::WebAutomationSession::terminate):

2018-10-04  Jiewen Tan  <jiewen_tan@apple.com>

        [WebAuthN] Move time out control from WebProcess to UIProcess
        https://bugs.webkit.org/show_bug.cgi?id=189642
        <rdar://problem/44476765>

        Reviewed by Chris Dumez.

        Besides adding a time out timer in the AuthenticatorManager, this patch also adds a new
        option in MockWebAuthenticationConfiguration to turn on silent failure which is the
        default policy of treating authenticators' error as suggested by spec.

        * UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
        (WKWebsiteDataStoreSetWebAuthenticationMockConfiguration):
        * UIProcess/WebAuthentication/AuthenticatorManager.cpp:
        (WebKit::AuthenticatorManagerInternal::collectTransports):
        (WebKit::AuthenticatorManager::makeCredential):
        (WebKit::AuthenticatorManager::getAssertion):
        (WebKit::AuthenticatorManager::respondReceived):
        (WebKit::AuthenticatorManager::initTimeOutTimer):
        * UIProcess/WebAuthentication/AuthenticatorManager.h:
        (WebKit::AuthenticatorManager::requestTimeOutTimer):
        * UIProcess/WebAuthentication/Mock/MockAuthenticatorManager.cpp:
        (WebKit::MockAuthenticatorManager::respondReceivedInternal):
        * UIProcess/WebAuthentication/Mock/MockWebAuthenticationConfiguration.h:

2018-10-04  Yuhan Wu  <yuhan_wu@apple.com>

        runtime flag and IDL for MediaRecorder
        https://bugs.webkit.org/show_bug.cgi?id=190018

        Reviewed by Youenn Fablet and Chris Dumez.

        * Shared/WebPreferences.yaml:

2018-10-03  Dan Bernstein  <mitz@apple.com>

        Tried to fix non-Cocoa, ENABLE(ATTACHMENT_ELEMENT) builds after r236822.

        * UIProcess/PageClient.h:

2018-10-03  Dan Bernstein  <mitz@apple.com>

        [Cocoa] Let clients specify an NSFileWrapper subclassed to be used for _WKAttachment
        https://bugs.webkit.org/show_bug.cgi?id=190270

        Reviewed by Wenson Hsieh.

        * UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
        (-[WKWebViewConfiguration copyWithZone:]): Copy new _attachmentFileWrapperClass ivar.
        (-[WKWebViewConfiguration _attachmentFileWrapperClass]): Added this getter.
        (-[WKWebViewConfiguration _setAttachmentFileWrapperClass:]): Added this setter, which raises
          an exception if the argument is not an NSFileWrapper subclass.

        * UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h: Declared new property.

        * UIProcess/Cocoa/PageClientImplCocoa.h:
        * UIProcess/Cocoa/PageClientImplCocoa.mm:
        (WebKit::PageClientImplCocoa::allocFileWrapperInstance): Added. Allocates an instance of
          the class specified in the configuration, or NSFileWrapper if no custom class is specified.

        * UIProcess/Cocoa/WebPageProxyCocoa.mm:
        (WebKit::WebPageProxy::platformRegisterAttachment): Use PageClient::allocFileWrapperInstance
          instead of allocating an NSFileWrapper instance.

        * UIProcess/PageClient.h:
        (WebKit::PageClient::allocFileWrapperInstance): Defined new function. The default
          implementation returns nil.

2018-10-03  Youenn Fablet  <youenn@apple.com>

        Add VP8 support to WebRTC
        https://bugs.webkit.org/show_bug.cgi?id=189976

        Reviewed by Eric Carlson.

        * Shared/WebPreferences.yaml:

2018-10-03  Zamiul Haque  <zhaque@apple.com>

        Search does not cancel after number of matching terms exceed set max limit
        https://bugs.webkit.org/show_bug.cgi?id=190020
        <rdar://problem/39585214>

        Reviewed by Andy Estes.

        When searching a PDF document on MobileSafari, the maximum number of matching
        terms are limited to a set constant. Beyond this limit, a PDF document should not
        be searched, since the UI will not be updated correspondingly. To this effect,
        a new SPI was made to cancel a search when the maximum limit of matching terms
        is reached. This is done without clearing the highlighting for the all the terms
        that were found under the limit. This bug was a result of not having implemented 
        the new SPI in WKPDFView.

        This will be tested in a follow-up patch, after re-enabling WKPDFView tests
        on iOS 12.

        * UIProcess/ios/WKPDFView.mm:
        (-[WKPDFView pdfHostViewController:findStringUpdate:done:]):

2018-10-03  Brian Burg  <bburg@apple.com>

        [Cocoa] REGRESSION: web content process paused in debugger is considered to be unresponsive if WebKit client is sandboxed
        https://bugs.webkit.org/show_bug.cgi?id=190256
        <rdar://problem/44957921>

        Reviewed by Alexey Proskuryakov.

        Instead of giving up when the client is sandboxed, check whether it has the
        exception that's necessary to get process information. If it is possible,
        proceed to check whether the web content process has a debugger attached.

        * UIProcess/Cocoa/WebProcessProxyCocoa.mm:
        (WebKit::WebProcessProxy::platformIsBeingDebugged const):
        Check 'process-info-pidinfo' to see if the sysctl call would be allowed.

2018-10-03  Michael Catanzaro  <mcatanzaro@igalia.com>

        [WPE][GTK] Enable MSE by default
        https://bugs.webkit.org/show_bug.cgi?id=190243

        Reviewed by Xabier Rodriguez-Calvar.

        * UIProcess/API/glib/WebKitSettings.cpp:
        (webkit_settings_class_init):

2018-10-02  Alex Christensen  <achristensen@webkit.org>

        Deprecate WKConnection
        https://bugs.webkit.org/show_bug.cgi?id=190147

        Reviewed by Andy Estes.

        * Shared/Cocoa/APIObject.mm:
        (API::Object::newObject):
        * UIProcess/API/Cocoa/WKConnection.h:
        * UIProcess/API/Cocoa/WKConnection.mm:
        (didReceiveMessage):
        (didClose):
        * UIProcess/API/Cocoa/WKConnectionInternal.h:
        * UIProcess/API/Cocoa/WKProcessGroup.h:
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugIn.h:
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugIn.mm:

2018-10-01  Dean Jackson  <dino@apple.com>

        [macOS] Switching to discrete GPU should be done in the UI process
        https://bugs.webkit.org/show_bug.cgi?id=189361
        <rdar://problem/43949622>

        Reviewed by Simon Fraser.

        Implement the UI-side process for triggering a GPU mux.

        * Platform/Logging.h: Add a WebGL logging channel.

        * SourcesCocoa.txt: Add the new files: WebSwitchingGPUClient and HighPerformanceGPUManager.

        * UIProcess/Cocoa/WebProcessProxyCocoa.mm: UI process calls that use HighPerformanceGPUManager
        to keep track of whether or not this process needs the high-performance GPU.
        (WebKit::WebProcessProxy::requestHighPerformanceGPU):
        (WebKit::WebProcessProxy::releaseHighPerformanceGPU):

        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::~WebProcessProxy): Make sure to unregister with the HighPerformanceGPUManager
        as the process disappears without manually removing itself (e.g. crashes).
        * UIProcess/WebProcessProxy.h:
        * UIProcess/WebProcessProxy.messages.in: New messages.

        * UIProcess/mac/HighPerformanceGPUManager.cpp: New class that copies most of what used
        to live in GraphicsContext3DManager. It creates a CGLPixelFormat object when it sees
        that at least one process needs the high-performance GPU.
        (WebKit::HighPerformanceGPUManager::singleton):
        (WebKit::HighPerformanceGPUManager::addProcessRequiringHighPerformance):
        (WebKit::HighPerformanceGPUManager::removeProcessRequiringHighPerformance):
        (WebKit::HighPerformanceGPUManager::updateState):
        * UIProcess/mac/HighPerformanceGPUManager.h: Added.

        * WebKit.xcodeproj/project.pbxproj: Add new files.

        * WebProcess/WebCoreSupport/mac/WebSwitchingGPUClient.cpp: Implementation of the SwitchingGPUClient for
        WebCore, which sends messages to the UI process.
        (WebKit::WebSwitchingGPUClient::singleton):
        (WebKit::WebSwitchingGPUClient::requestHighPerformanceGPU):
        (WebKit::WebSwitchingGPUClient::releaseHighPerformanceGPU):
        * WebProcess/WebCoreSupport/mac/WebSwitchingGPUClient.h: Added.

        * WebProcess/cocoa/WebProcessCocoa.mm: Register the GPUClient.
        (WebKit::WebProcess::platformInitializeProcess):

2018-10-02  Sihui Liu  <sihui_liu@apple.com>

        Fix a potential crash in NetworkProcess::deleteWebsiteDataForOrigins
        https://bugs.webkit.org/show_bug.cgi?id=190220

        Reviewed by Chris Dumez.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::deleteWebsiteDataForOrigins):

2018-10-02  Wenson Hsieh  <wenson_hsieh@apple.com>

        [WebKit2] Format > Bold and Format > Italic don't toggle between bold and italic style
        https://bugs.webkit.org/show_bug.cgi?id=179787
        <rdar://problem/35593389>

        Reviewed by Tim Horton.

        Fixes the bug by relaxing our policy in WebViewImpl::updateFontManagerIfNeeded. Instead of updating only when
        the font panel is visible, update when either the font panel is visible, or the selection is in a richly
        editable area. In the latter case, an up-to-date NSFontManager state is needed in order for certain font
        formatting menu items, such as bold and italic, to correctly toggle state.

        Test: FontManagerTests.ToggleBoldAndItalicWithMenuItems

        * UIProcess/Cocoa/WebViewImpl.h:
        * UIProcess/Cocoa/WebViewImpl.mm:
        (-[WKWindowVisibilityObserver observeValueForKeyPath:ofObject:change:context:]):
        (WebKit::WebViewImpl::selectionDidChange):
        (WebKit::WebViewImpl::updateFontManagerIfNeeded):

        Rename updateFontPanelIfNeeded to updateFontManagerIfNeeded, to reflect the new behavior.

        (WebKit::WebViewImpl::changeFontAttributesFromSender):
        (WebKit::WebViewImpl::changeFontFromFontManager):
        (WebKit::WebViewImpl::updateFontPanelIfNeeded): Deleted.

2018-10-02  Alex Christensen  <achristensen@webkit.org>

        Remove ParsedURLString
        https://bugs.webkit.org/show_bug.cgi?id=190154

        Reviewed by Chris Dumez.

        * NetworkProcess/FileAPI/NetworkBlobRegistry.cpp:
        (WebKit::NetworkBlobRegistry::writeBlobToFilePath):
        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::writeBlobsToTemporaryFiles):
        * PluginProcess/PluginControllerProxy.cpp:
        (WebKit::PluginControllerProxy::streamWillSendRequest):
        (WebKit::PluginControllerProxy::streamDidReceiveResponse):
        (WebKit::PluginControllerProxy::manualStreamDidReceiveResponse):
        * Shared/API/APIUserContentURLPattern.h:
        (API::UserContentURLPattern::matchesURL const):
        * Shared/WebBackForwardListItem.cpp:
        (WebKit::WebBackForwardListItem::itemIsInSameDocument const):
        * UIProcess/API/gtk/WebKitRemoteInspectorProtocolHandler.cpp:
        (WebKit::RemoteInspectorProtocolHandler::handleRequest):
        (WebKit::RemoteInspectorProtocolHandler::targetListChanged):
        * UIProcess/Plugins/mac/PluginProcessProxyMac.mm:
        (WebKit::PluginProcessProxy::openURL):
        * UIProcess/SuspendedPageProxy.cpp:
        (WebKit::SuspendedPageProxy::SuspendedPageProxy):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::loadFile):
        (WebKit::WebPageProxy::decidePolicyForNavigationAction):
        (WebKit::WebPageProxy::decidePolicyForNewWindowAction):
        (WebKit::WebPageProxy::createNewPage):
        (WebKit::WebPageProxy::processDidTerminate):
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::addProcessToOriginCacheSet):
        (WebKit::WebProcessPool::processForNavigationInternal):
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::processDidTerminateOrFailedToLaunch):
        * UIProcess/mac/WebContextMenuProxyMac.mm:
        (WebKit::WebContextMenuProxyMac::createShareMenuItem):
        * WebProcess/InjectedBundle/InjectedBundle.cpp:
        (WebKit::InjectedBundle::addUserScript):
        (WebKit::InjectedBundle::addUserStyleSheet):
        (WebKit::InjectedBundle::removeUserScript):
        (WebKit::InjectedBundle::removeUserStyleSheet):
        * WebProcess/Plugins/Plugin.cpp:
        (WebKit::Plugin::Parameters::decode):
        * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
        (WebKit::WebPlatformStrategies::url):
        (WebKit::WebPlatformStrategies::readURLFromPasteboard):

2018-10-01  Dean Jackson  <dino@apple.com>

        Remove CSS Animation Triggers
        https://bugs.webkit.org/show_bug.cgi?id=190175
        <rdar://problem/44925626>

        Reviewed by Simon Fraser.

        * Configurations/FeatureDefines.xcconfig:

2018-10-02  Michael Catanzaro  <mcatanzaro@igalia.com>

        REGRESSION(r236662): Fix -Wformat warnings in CacheStorageEngineCaches.cpp
        https://bugs.webkit.org/show_bug.cgi?id=190205

        Reviewed by Chris Dumez.

        Passing enums to %d is not kosher, at least not according to GCC's -Wformat. Avoid it.

        * NetworkProcess/cache/CacheStorageEngineCaches.cpp:
        (WebKit::CacheStorage::Caches::initialize):
        (WebKit::CacheStorage::Caches::readCachesFromDisk):
        (WebKit::CacheStorage::Caches::writeCachesToDisk):

2018-10-02  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r236624 and r236671.
        https://bugs.webkit.org/show_bug.cgi?id=190207

        The change in r236624 introduced crashes on the bots
        (Requested by ryanhaddad on #webkit).

        Reverted changesets:

        "Refactoring: eliminate raw pointer usage in Fullscreen code"
        https://bugs.webkit.org/show_bug.cgi?id=188747
        https://trac.webkit.org/changeset/236624

        "Unify implementation in VideoFullscreenInterfaceAVKit"
        https://bugs.webkit.org/show_bug.cgi?id=190091
        https://trac.webkit.org/changeset/236671

2018-10-02  Antti Koivisto  <antti@apple.com>

        WebPageProxy::reattachToWebProcess cleanups
        https://bugs.webkit.org/show_bug.cgi?id=189881

        Reviewed by Chris Dumez.

        Change the factoring to separate swap and crash code paths into different functions.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::reattachToWebProcess):
        (WebKit::WebPageProxy::swapToWebProcess):

        Separate function for the swap case.

        (WebKit::WebPageProxy::finishAttachingToWebProcess):

        Factor the common parts here.

        (WebKit::WebPageProxy::continueNavigationInNewProcess):
        * UIProcess/WebPageProxy.h:

2018-10-02  Adrian Perez de Castro  <aperez@igalia.com>

        [GTK] Theming of authentication dialog breaks with themes other than Adwaita
        https://bugs.webkit.org/show_bug.cgi?id=190117

        Reviewed by Michael Catanzaro.

        Adds the missing GTK_STYLE_CLASS_BACKGROUND to the WebKitWebViewDialog
        widget, which was missing for GTK+ 3.20 or newer, and set the widget
        as app-paintable to avoid the base class paint method to add an opaque
        background.

        Thanks to Benjamin Otte for the guidance to debug the theming issues.

        * UIProcess/API/gtk/WebKitWebViewDialog.cpp:
        (webkitWebViewDialogDraw): Remove the style context save/restore, it
        is unneeded because the style classes are set at widget construction
        time and not changed ever after.
        (webkitWebViewDialogConstructed): Mark the widget as app-paintable to
        avoid the base widget paint operation to fill the whole background,
        because the dialog widget paints the translucent overlay itself; and
        also add the missing GTK_STYLE_CLASS_BACKGROUND class at construction
        when building against GTK+ 3.20 or newer.

2018-10-02  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] RealtimeMediaSource should be able to vend hashed IDs
        https://bugs.webkit.org/show_bug.cgi?id=190142
        <rdar://problem/44911109>

        Reviewed by Youenn Fablet.

        * Shared/WebCoreArgumentCoders.cpp:
        (IPC::ArgumentCoder<MediaConstraints>::encode):
        (IPC::ArgumentCoder<MediaConstraints>::decode):
        * UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
        (WebKit::UserMediaCaptureManagerProxy::createMediaSourceForCaptureDeviceWithConstraints):
        * UIProcess/Cocoa/UserMediaCaptureManagerProxy.h:
        * UIProcess/Cocoa/UserMediaCaptureManagerProxy.messages.in:
        * UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
        (WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame):
        * WebProcess/cocoa/UserMediaCaptureManager.cpp:
        (WebKit::UserMediaCaptureManager::Source::Source):
        (WebKit::UserMediaCaptureManager::createCaptureSource):
        * WebProcess/cocoa/UserMediaCaptureManager.h:

2018-10-02  Wenson Hsieh  <wenson_hsieh@apple.com>

        [macOS] Implement a way for the UI process to request typing attributes at the current selection
        https://bugs.webkit.org/show_bug.cgi?id=189983
        <rdar://problem/44648705>

        Reviewed by Ryosuke Niwa.

        Implements `-[WKWebView typingAttributesWithCompletionHandler:]`, which asynchronously retrieves an NSDictionary
        containing the typing attributes at the start of the current selection. This is a new asynchronous text input
        client hook on macOS that is needed in order to support NSInspectorBar on WKWebView.

        At a high level, this patch builds on top of refactoring done in r236445 to make it possible to send typing
        attributes from the web process to the UI process, and then adds plumbing in the WebKit2 client layer to surface
        typing attributes to WKWebView on macOS.

        Tests:  FontManagerTests.TypingAttributesAfterSubscriptAndSuperscript
                FontManagerTests.ChangeTypingAttributesWithInspectorBar
                FontManagerTests.ChangeAttributesWithFontEffectsBox

        * Platform/spi/mac/AppKitSPI.h:
        * Shared/WebCoreArgumentCoders.cpp:
        (IPC::ArgumentCoder<FontAttributes>::encode):
        (IPC::ArgumentCoder<FontAttributes>::decode):

        Implement IPC coding support for FontAttributes.

        * Shared/WebCoreArgumentCoders.h:
        * Shared/mac/ArgumentCodersMac.h:
        * Shared/mac/ArgumentCodersMac.mm:
        (IPC::encode):
        (IPC::decode):

        Add the ability to encode and decode UIFont. This allows Cocoa platforms to send `FontAttributes.font` over IPC
        with a single call to IPC::encode/IPC::decode.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView typingAttributesWithCompletionHandler:]):

        Add plumbing to WebViewImpl.

        * UIProcess/Cocoa/WebViewImpl.h:
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::selectionDidChange):

        Update the NSInspectorBar on selection change, but only if it is present and visible, and WKWebView is currently
        first responder.

        (WebKit::WebViewImpl::typingAttributesWithCompletionHandler):

        Call into WebPageProxy to retrieve FontAttributes from the web process, and invoke the callback with an
        NSDictionary constructed from the retrieved FontAttributes.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::requestFontAttributesAtSelectionStart):
        (WebKit::WebPageProxy::fontAttributesCallback):

        Add plumbing to retrieve FontAttributes from the web process at the current selection. Additionally, cache the
        font attributes to avoid doing extra work during subsequent requests.

        (WebKit::WebPageProxy::resetStateAfterProcessExited):
        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::cachedFontAttributesAtSelectionStart const):
        * UIProcess/WebPageProxy.messages.in:
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::editorStateChanged):
        * UIProcess/mac/WebPageProxyMac.mm:
        (WebKit::WebPageProxy::editorStateChanged):

        Invalidate cached font attributes.

        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::requestFontAttributesAtSelectionStart):

        Use the currently focused frame's Editor to compute FontAttributes at the current selection, and send the
        computed FontAttributes back to the UI process.

        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:

2018-10-01  Devin Rousso  <drousso@apple.com>

        Web Inspector: remove analyzer manager
        https://bugs.webkit.org/show_bug.cgi?id=190162

        Reviewed by Joseph Pecoraro.

        * InspectorGResources.cmake:
        Remove eslint.

2018-09-30  Ryosuke Niwa  <rniwa@webkit.org>

        Add a new variant of serializePreservingVisualAppearance which takes VisibleSelection
        https://bugs.webkit.org/show_bug.cgi?id=190108

        Reviewed by Wenson Hsieh.

        Adopt the new variant which directly takes VisibleSelection.

        * WebProcess/WebCoreSupport/gtk/WebEditorClientGtk.cpp:
        (WebKit::WebEditorClient::updateGlobalSelection):

2018-10-01  Andy Estes  <aestes@apple.com>

        [watchOS] Adopt NSURLSessionCompanionProxyPreference
        https://bugs.webkit.org/show_bug.cgi?id=190177
        <rdar://problem/43402114>

        Reviewed by Wenson Hsieh.

        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (WebKit::NetworkSessionCocoa::NetworkSessionCocoa):

2018-10-01  Chris Dumez  <cdumez@apple.com>

        [Mac] The UIProcess should listen to memory pressure signals
        https://bugs.webkit.org/show_bug.cgi?id=190166

        Reviewed by Simon Fraser.

        The UIProcess should listen to memory pressure signals on Mac in order to free memory, similarly to what we already
        do on iOS. The memory pressure handler currently discards view snapshots and prewarmed processes.

        * SourcesCocoa.txt:
        * UIProcess/Cocoa/WebMemoryPressureHandlerCocoa.h: Renamed from Source/WebKit/UIProcess/ios/WebMemoryPressureHandlerIOS.h.
        * UIProcess/Cocoa/WebMemoryPressureHandlerCocoa.mm: Renamed from Source/WebKit/UIProcess/ios/WebMemoryPressureHandlerIOS.mm.
        (WebKit::installMemoryPressureHandler):
        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        (WebKit::WebProcessPool::platformInitialize):
        * WebKit.xcodeproj/project.pbxproj:

2018-10-01  Sihui Liu  <sihui_liu@apple.com>

        Fix Internal iOS Build after r236690
        https://bugs.webkit.org/show_bug.cgi?id=190171

        Reviewed by Alex Christensen.

        * Platform/ExtraPrivateSymbolsForTAPI.h:

2018-10-01  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] Add SPI to customize the input accessory view when focusing an element
        https://bugs.webkit.org/show_bug.cgi?id=190152
        <rdar://problem/42754975>

        Reviewed by Dan Bernstein.

        Adds SPI on WKFormInputSession to customize the input accessory view, alongside the input view. See below for
        more details.

        Test: KeyboardInputTests.CustomInputViewAndInputAccessoryView

        * UIProcess/API/Cocoa/_WKFormInputSession.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKFormInputSession customInputAccessoryView]):
        (-[WKFormInputSession setCustomInputAccessoryView:]):

        Reload input views when the custom input accessory view changes.

        (-[WKContentView requiresAccessoryView]):

        If a custom input accessory view is specified, return YES.

        (-[WKContentView inputAccessoryView]):

        Return the custom input accessory view if present, and fall back to the default web form accessory view.

2018-10-01  Sihui Liu  <sihui_liu@apple.com>

        Remove StorageProcess
        https://bugs.webkit.org/show_bug.cgi?id=189975

        Reviewed by Geoffrey Garen.

        * CMakeLists.txt:
        * Configurations/Storage-OSX-sandbox.entitlements: Removed.
        * Configurations/StorageService.xcconfig: Removed.
        * Configurations/WebKit.xcconfig:
        * DerivedSources.make:
        * NetworkProcess/IndexedDB/WebIDBConnectionToClient.cpp:
        (WebKit::WebIDBConnectionToClient::putOrAdd):
        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::establishIDBConnectionToServer):
        * PlatformGTK.cmake:
        * PlatformMac.cmake:
        * PlatformWPE.cmake:
        * PlatformWin.cmake:
        * Shared/ProcessExecutablePath.h:
        * Shared/Storage/StorageProcessCreationParameters.cpp: Removed.
        * Shared/Storage/StorageProcessCreationParameters.h: Removed.
        * Shared/glib/ProcessExecutablePathGLib.cpp:
        (WebKit::executablePathOfStorageProcess): Deleted.
        * Sources.txt:
        * SourcesCocoa.txt:
        * SourcesGTK.txt:
        * SourcesWPE.txt:
        * StorageProcess/EntryPoint/mac/XPCService/StorageService/Info.plist: Removed.
        * StorageProcess/EntryPoint/mac/XPCService/StorageServiceEntryPoint.mm: Removed.
        * StorageProcess/EntryPoint/unix/StorageProcessMain.cpp: Removed.
        * StorageProcess/EntryPoint/win/StorageProcessMain.cpp: Removed.
        * StorageProcess/StorageProcess.cpp: Removed.
        * StorageProcess/StorageProcess.h: Removed.
        * StorageProcess/StorageProcess.messages.in: Removed.
        * StorageProcess/StorageToWebProcessConnection.cpp: Removed.
        * StorageProcess/StorageToWebProcessConnection.h: Removed.
        * StorageProcess/StorageToWebProcessConnection.messages.in: Removed.
        * StorageProcess/glib/StorageProcessMainGLib.cpp: Removed.
        * StorageProcess/ios/StorageProcessIOS.mm: Removed.
        * StorageProcess/mac/StorageProcessMac.mm: Removed.
        * StorageProcess/mac/com.apple.WebKit.Storage.sb.in: Removed.
        * StorageProcess/unix/StorageProcessMainUnix.h: Removed.
        * StorageProcess/win/StorageProcessMainWin.cpp: Removed.
        * StorageProcess/win/StorageProcessMainWin.h: Removed.
        * UIProcess/API/C/WKContext.cpp:
        (WKContextTerminateStorageProcess): Deleted.
        (WKContextGetDatabaseProcessIdentifier): Deleted.
        * UIProcess/API/C/WKContext.h:
        * UIProcess/API/C/WKContextPrivate.h:
        * UIProcess/API/Cocoa/WKProcessPool.mm:
        (-[WKProcessPool _terminateStorageProcess]): Deleted.
        (-[WKProcessPool _storageProcessIdentifier]): Deleted.
        * UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
        * UIProcess/Launcher/glib/ProcessLauncherGLib.cpp:
        (WebKit::ProcessLauncher::launchProcess):
        * UIProcess/Launcher/win/ProcessLauncherWin.cpp:
        (WebKit::processName):
        * UIProcess/Storage/StorageProcessProxy.cpp: Removed.
        * UIProcess/Storage/StorageProcessProxy.h: Removed.
        * UIProcess/Storage/StorageProcessProxy.messages.in: Removed.
        * UIProcess/WebContextClient.cpp:
        (WebKit::WebContextClient::storageProcessDidCrash): Deleted.
        * UIProcess/WebContextClient.h:
        * UIProcess/WebContextSupplement.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::sendMemoryPressureEvent):
        (WebKit::WebProcessPool::setAnyPageGroupMightHavePrivateBrowsingEnabled):
        (WebKit::WebProcessPool::ensureStorageProcessAndWebsiteDataStore): Deleted.
        (WebKit::WebProcessPool::getStorageProcessConnection): Deleted.
        (WebKit::WebProcessPool::storageProcessCrashed): Deleted.
        (WebKit::WebProcessPool::storageProcessIdentifier): Deleted.
        (WebKit::WebProcessPool::terminateStorageProcessForTesting): Deleted.
        * UIProcess/WebProcessPool.h:
        (WebKit::WebProcessPool::sendToStorageProcess): Deleted.
        (WebKit::WebProcessPool::sendToStorageProcessRelaunchingIfNecessary): Deleted.
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::getStorageProcessConnection): Deleted.
        * UIProcess/WebProcessProxy.h:
        * UIProcess/WebProcessProxy.messages.in:
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::~WebsiteDataStore):
        (WebKit::WebsiteDataStore::storageProcessParameters): Deleted.
        * UIProcess/WebsiteData/WebsiteDataStore.h:
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.h:
        * WebProcess/Storage/WebServiceWorkerProvider.cpp:
        * WebProcess/Storage/WebToStorageProcessConnection.cpp: Removed.
        * WebProcess/Storage/WebToStorageProcessConnection.h: Removed.
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::establishWorkerContextConnectionToNetworkProcess):
        (WebKit::WebProcess::webToStorageProcessConnectionClosed): Deleted.
        (WebKit::WebProcess::ensureWebToStorageProcessConnection): Deleted.
        * WebProcess/WebProcess.h:
        * webkitglib-symbols.map:

2018-10-01  David Quesada  <david_quesada@apple.com>

        Add missing Objective-C versions of downloads SPI
        https://bugs.webkit.org/show_bug.cgi?id=190149
        rdar://problem/44915592

        Reviewed by Alex Christensen.

        * UIProcess/API/Cocoa/WKProcessPool.mm:
        (-[WKProcessPool _downloadURLRequest:]):
        (-[WKProcessPool _resumeDownloadFromData:path:]):
        * UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
        * UIProcess/API/Cocoa/_WKDownload.h:
        * UIProcess/API/Cocoa/_WKDownload.mm:
        (-[_WKDownload resumeData]):
        * UIProcess/API/Cocoa/_WKDownloadInternal.h:
        * UIProcess/Cocoa/DownloadClient.mm:
            Move the DownloadProxy's WrapperTraits out of DownloadClient, and into the internal
            header so it can be used from other classes (i.e. WKProcessPool here).

2018-10-01  Alex Christensen  <achristensen@webkit.org>

        Fix internal build after r236665
        https://bugs.webkit.org/show_bug.cgi?id=189850

        * UIProcess/API/Cocoa/WKNSURLAuthenticationChallenge.h:
        * WebKit.xcodeproj/project.pbxproj:

2018-10-01  Jiewen Tan  <jiewen_tan@apple.com>

        [WebAuthN] Import a JS CBOR coder
        https://bugs.webkit.org/show_bug.cgi?id=189877
        <rdar://problem/44701124>

        Reviewed by Chris Dumez.

        Update MockWebAuthenticationConfiguration to have userCertificateBase64 and intermediateCACertificateBase64
        as Local's memeber such that tests can pass those certificates to MockLocalConnection instead of letting it
        holds some static ones.

        * UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
        (WKWebsiteDataStoreSetWebAuthenticationMockConfiguration):
        * UIProcess/WebAuthentication/Mock/MockLocalConnection.mm:
        (WebKit::MockLocalConnection::getAttestation const):
        * UIProcess/WebAuthentication/Mock/MockWebAuthenticationConfiguration.h:

2018-10-01  Chris Dumez  <cdumez@apple.com>

        Regression(r236512): http/tests/navigation/keyboard-events-during-provisional-navigation.html is flaky
        https://bugs.webkit.org/show_bug.cgi?id=190052

        Reviewed by Ryosuke Niwa.

        * Platform/IPC/Connection.cpp:
        (IPC::Connection::sendMessage):
        * Platform/IPC/Connection.h:
        * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
        (WKBundlePagePostMessageIgnoringFullySynchronousMode):
        * WebProcess/InjectedBundle/API/c/WKBundlePage.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::postMessageIgnoringFullySynchronousMode):
        * WebProcess/WebPage/WebPage.h:

2018-10-01  Daniel Bates  <dabates@apple.com>

        [iOS] Special keys are misidentified in DOM keyboard events
        https://bugs.webkit.org/show_bug.cgi?id=189974

        Reviewed by Wenson Hsieh.

        Take the key code of WebEvent to be the key code for the new WebKeyboardEvent verbatim
        now that we normalize the character strings of the WebEvent to account for the special
        UIKit input strings.

        * Shared/ios/WebIOSEventFactory.mm:
        (WebIOSEventFactory::createWebKeyboardEvent):

2018-10-01  Alex Christensen  <achristensen@webkit.org>

        Fix an internal build after r236665
        https://bugs.webkit.org/show_bug.cgi?id=189850

        * WebKit.xcodeproj/project.pbxproj:
        Make WKNSURLAuthenticationChallenge.h a private header.

2018-10-01  Alex Christensen  <achristensen@webkit.org>

        URL should not use TextEncoding internally
        https://bugs.webkit.org/show_bug.cgi?id=190111

        Reviewed by Andy Estes.

        * UIProcess/WebInspectorProxy.cpp:

2018-10-01  Jeremy Jones  <jeremyj@apple.com>

        Unify implementation in VideoFullscreenInterfaceAVKit
        https://bugs.webkit.org/show_bug.cgi?id=190091
        rdar://problem/44734523

        Reviewed by Jer Noble.

        Unified code in VideoFullscreenInterfaceAVKit now that new code path is proven and include
        any changes that had been made in the old path.

        * UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:
        * WebProcess/cocoa/VideoFullscreenManager.mm:
        (WebKit::VideoFullscreenManager::supportsVideoFullscreenStandby const):
        (WebKit::VideoFullscreenManager::didSetupFullscreen):
        (WebKit::VideoFullscreenManager::didExitFullscreen):

2018-10-01  Daniel Bates  <dabates@apple.com>

        [iOS] Wrong key event may be sent to UIKit
        https://bugs.webkit.org/show_bug.cgi?id=189992

        Reviewed by Simon Fraser.

        Retain a clone of a received UIEvent if it is for a hardware key event so as to ensure that we
        notify the UIKit keyboard code of the correct keyboard event.

        Currently the UIProcess retains the UIEvent associated with a keyboard event so as to defer
        notifying the UIKit keyboard code (via -_handleKeyUIEvent) about a received keyboard event until
        after the WebProcess has processed the raw key event. If this UIEvent is for a hardware keyboard
        event then it is not sufficient to retain it to preserve its value because UIKit uses a singleton
        UIEvent for all hardware keyboard events ;=> its value will be clobbered as each hardware keyboard
        event is received. Instead we need to explicitly clone a UIEvent for a hardware key event before
        retaining it.

        * Platform/spi/ios/UIKitSPI.h: Forward declare SPI.
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView handleKeyEvent:]): Clone the UIEvent if it is for a hardware key event.

2018-10-01  Alex Christensen  <achristensen@webkit.org>

        Deprecate ObjC SPI in Deprecated Xcode group
        https://bugs.webkit.org/show_bug.cgi?id=189850

        Reviewed by Andy Estes.

        * Shared/Cocoa/APIObject.mm:
        (API::Object::newObject):
        * Shared/mac/ObjCObjectGraph.mm:
        (WebKit::typeFromObject):
        (WebKit::ObjCObjectGraph::encode):
        (WebKit::ObjCObjectGraph::decode):
        * UIProcess/API/Cocoa/WKBrowsingContextController.h:
        * UIProcess/API/Cocoa/WKBrowsingContextController.mm:
        (didStartProvisionalNavigation):
        (didReceiveServerRedirectForProvisionalNavigation):
        (didFailProvisionalNavigation):
        (didCommitNavigation):
        (didFinishNavigation):
        (didFailNavigation):
        (canAuthenticateAgainstProtectionSpace):
        (didReceiveAuthenticationChallenge):
        (processDidCrash):
        (setUpPagePolicyClient):
        * UIProcess/API/Cocoa/WKBrowsingContextGroup.h:
        * UIProcess/API/Cocoa/WKBrowsingContextGroupInternal.h:
        * UIProcess/API/Cocoa/WKBrowsingContextHistoryDelegate.h:
        * UIProcess/API/Cocoa/WKBrowsingContextLoadDelegate.h:
        * UIProcess/API/Cocoa/WKBrowsingContextLoadDelegatePrivate.h:
        * UIProcess/API/Cocoa/WKBrowsingContextPolicyDelegate.h:
        * UIProcess/API/Cocoa/WKNSURLAuthenticationChallenge.h:
        * UIProcess/API/Cocoa/WKNSURLAuthenticationChallenge.mm:
        (-[WKNSURLAuthenticationChallengeSender cancelAuthenticationChallenge:]):
        (-[WKNSURLAuthenticationChallengeSender continueWithoutCredentialForAuthenticationChallenge:]):
        (-[WKNSURLAuthenticationChallengeSender useCredential:forAuthenticationChallenge:]):
        (-[WKNSURLAuthenticationChallengeSender performDefaultHandlingForAuthenticationChallenge:]):
        (-[WKNSURLAuthenticationChallengeSender rejectProtectionSpaceAndContinueWithChallenge:]):
        * UIProcess/API/Cocoa/WKNavigationData.h:
        * UIProcess/API/Cocoa/WKNavigationDataInternal.h:
        * UIProcess/API/Cocoa/WKProcessGroup.h:
        * UIProcess/API/Cocoa/WKProcessGroup.mm:
        (didCreateConnection):
        (getInjectedBundleInitializationUserData):
        (didNavigateWithNavigationData):
        (didPerformClientRedirect):
        (didPerformServerRedirect):
        (didUpdateHistoryTitle):
        * UIProcess/API/Cocoa/WKTypeRefWrapper.h:
        * UIProcess/API/Cocoa/WKView.h:
        (WK_CLASS_DEPRECATED_WITH_REPLACEMENT):
        * UIProcess/API/Cocoa/_WKThumbnailView.h:
        * UIProcess/API/Cocoa/_WKThumbnailView.mm:
        * UIProcess/Cocoa/WebProcessProxyCocoa.mm:
        (WebKit::WebProcessProxy::transformHandlesToObjects):
        (WebKit::WebProcessProxy::transformObjectsToHandles):
        * UIProcess/Cocoa/WebViewImpl.h:
        * UIProcess/Cocoa/WebViewImpl.mm:
        * UIProcess/Gamepad/mac/UIGamepadProviderMac.mm:
        (WebKit::UIGamepadProvider::platformWebPageProxyForGamepadInput):
        * UIProcess/ios/WKContentView.h:
        * UIProcess/mac/WebInspectorProxyMac.mm:
        (WebKit::WebInspectorProxy::inspectedViewFrameDidChange):
        * WebProcess/cocoa/WebProcessCocoa.mm:
        (WebKit::WebProcess::transformHandlesToObjects):
        (WebKit::WebProcess::transformObjectsToHandles):

2018-10-01  Youenn Fablet  <youenn@apple.com>

        [macOS Sierra] Layout Test http/wpt/cache-storage/cache-put-keys.https.any.worker.html is a flaky failure
        https://bugs.webkit.org/show_bug.cgi?id=184204

        Reviewed by Chris Dumez.

        NetworkCache::Storage by default limits the length to read to 1500 milliseconds.
        This is good for the HTTP cache since networking might be faster.
        It does not work for DOM cache which needs to get these resources even if it takes a long time.

        Since this is disabled by a Mode::Testing option, use it for DOMCache after renaming it to Mode::AvoidRandomness.

        Add a bunch of release logging to help debugging error cases.

        * NetworkProcess/cache/CacheStorageEngineCaches.cpp:
        (WebKit::CacheStorage::Caches::retrieveOriginFromDirectory):
        (WebKit::CacheStorage::Caches::initialize):
        (WebKit::CacheStorage::Caches::writeCachesToDisk):
        (WebKit::CacheStorage::Caches::readRecord):
        * NetworkProcess/cache/NetworkCache.cpp:
        (WebKit::NetworkCache::Cache::open):
        * NetworkProcess/cache/NetworkCacheStorage.cpp:
        (WebKit::NetworkCache::Storage::dispatchReadOperation):
        (WebKit::NetworkCache::Storage::shrinkIfNeeded):
        * NetworkProcess/cache/NetworkCacheStorage.h:

2018-10-01  Olivier Blin  <olivier.blin@softathome.com>

        [WPE] Remove WebKit2InspectorGResourceBundle.xml
        https://bugs.webkit.org/show_bug.cgi?id=190132

        Reviewed by Michael Catanzaro.

        * UIProcess/API/wpe/WebKit2InspectorGResourceBundle.xml: Removed.
        This is unused since legacy INSPECTOR_SERVER implementation has
        been removed in r217924.

2018-09-30  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] Clean up RealtimeMediaSource settings change handling
        https://bugs.webkit.org/show_bug.cgi?id=189998
        <rdar://problem/44797884>

        Reviewed by Youenn Fablet.

        * WebProcess/cocoa/UserMediaCaptureManager.cpp:
        (WebKit::UserMediaCaptureManager::Source::setSettings):

2018-09-30  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] Use display-specific capture factories
        https://bugs.webkit.org/show_bug.cgi?id=190043
        <rdar://problem/44834412>

        Reviewed by Youenn Fablet.

        * WebProcess/cocoa/UserMediaCaptureManager.h:

2018-09-29  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r236631.
        https://bugs.webkit.org/show_bug.cgi?id=190112

        Caused various eventSender tests, including fast/css/pseudo-
        active-style-sharing*, to fail (Requested by smfr on #webkit).

        Reverted changeset:

        "Regression(r236512): http/tests/navigation/keyboard-events-
        during-provisional-navigation.html is flaky"
        https://bugs.webkit.org/show_bug.cgi?id=190052
        https://trac.webkit.org/changeset/236631

2018-09-29  Chris Dumez  <cdumez@apple.com>

        [PSON] Deal with the drawing area potentially being null in WebFrameLoaderClient::transitionToCommittedForNewPage()
        https://bugs.webkit.org/show_bug.cgi?id=190084
        <rdar://problem/44844561>

        Reviewed by Antti Koivisto.

        Deal with the drawing area potentially being null in WebFrameLoaderClient::transitionToCommittedForNewPage(), as a
        result of calling WebPage::tearDownDrawingAreaForSuspend().

        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::transitionToCommittedForNewPage):

2018-09-28  Wenson Hsieh  <wenson_hsieh@apple.com>

        No DOM API to instantiate an attachment for an img element
        https://bugs.webkit.org/show_bug.cgi?id=189934
        <rdar://problem/44743222>

        Reviewed by Ryosuke Niwa.

        Makes some adjustments to support using _WKAttachment's file wrapper to change the contents of any image element
        hosting the attachment in its shadow root. To do this, we add some plumbing to allow the UI process to update an
        attachment element's enclosing image with data from its file wrapper.

        * UIProcess/API/APIAttachment.cpp:
        (API::Attachment::isEmpty const):
        (API::Attachment::enclosingImageData const):

        Helper method that creates a SharedBuffer representing image data for the attachment. Only returns a non-null
        value for attachment elements that are enclosed within an image.

        * UIProcess/API/APIAttachment.h:
        * UIProcess/API/Cocoa/APIAttachmentCocoa.mm:
        (API::Attachment::enclosingImageData const):
        (API::Attachment::isEmpty const):
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _attachmentForIdentifier:]):

        Add new SPI to request a _WKAttachment for a given unique identifier. Currently, this is only used for testing.

        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        * UIProcess/Cocoa/WebPageProxyCocoa.mm:
        (WebKit::WebPageProxy::platformRegisterAttachment):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::updateAttachmentAttributes):
        (WebKit::WebPageProxy::registerAttachmentIdentifier):
        (WebKit::WebPageProxy::didInsertAttachmentWithIdentifier):

        Plumb whether or not the attachment is enclosed by an image from the web process to the UI process.

        (WebKit::WebPageProxy::didRemoveAttachmentWithIdentifier):
        (WebKit::WebPageProxy::didInsertAttachment): Deleted.
        (WebKit::WebPageProxy::didRemoveAttachment):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * WebProcess/WebCoreSupport/WebEditorClient.cpp:
        (WebKit::WebEditorClient::registerAttachmentIdentifier):
        (WebKit::WebEditorClient::didInsertAttachmentWithIdentifier):

        Update attachment attributes after inserting an attachment. This ensures that an attachment that was created and
        later inserted via script into the document will be synced with state in the UI process, if the client has
        changed the contents of the attachment.

        * WebProcess/WebCoreSupport/WebEditorClient.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::updateAttachmentAttributes):

        Plumb attachment data from the UI process to the web process.

        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:

2018-09-28  Chris Dumez  <cdumez@apple.com>

        Regression(r236512): http/tests/navigation/keyboard-events-during-provisional-navigation.html is flaky
        https://bugs.webkit.org/show_bug.cgi?id=190052

        Reviewed by Ryosuke Niwa.

        Introduce a new IPC::SendOption indicating that the IPC should always be sent asynchronously,
        even if the connection is in fully synchronous mode. This is used by WebKitTestRunner for
        all text outputting (e.g. console.log) is asynchronous, and thus in order.

        * Platform/IPC/Connection.cpp:
        (IPC::Connection::sendMessage):
        * Platform/IPC/Connection.h:
        * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
        (WKBundlePagePostMessageIgnoringFullySynchronousMode):
        * WebProcess/InjectedBundle/API/c/WKBundlePage.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::postMessageIgnoringFullySynchronousMode):
        * WebProcess/WebPage/WebPage.h:

2018-09-28  John Wilander  <wilander@apple.com>

        Skip debug assertion in ResourceLoadStatisticsMemoryStore::recursivelyGetAllDomainsThatHaveRedirectedToThisDomain()
        https://bugs.webkit.org/show_bug.cgi?id=190097
        <rdar://problem/44877080>

        Reviewed by Chris Dumez.

        The change in https://bugs.webkit.org/show_bug.cgi?id=190055 causes a
        re-classification that may trigger a debug assertion in
        ResourceLoadStatisticsMemoryStore::recursivelyGetAllDomainsThatHaveRedirectedToThisDomain().
        We should skip the assertion for statistics model version 14 to avoid
        this.

        * UIProcess/ResourceLoadStatisticsMemoryStore.cpp:
        (WebKit::ResourceLoadStatisticsMemoryStore::recursivelyGetAllDomainsThatHaveRedirectedToThisDomain const):

2018-09-28  Devin Rousso  <drousso@apple.com>

        Web Inspector: crash in InspectorNetworkAgent::didReceiveResponse when loading denied x-frame resources
        https://bugs.webkit.org/show_bug.cgi?id=190046

        Reviewed by Joseph Pecoraro.

        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::didReceiveResponse):
        (WebKit::NetworkResourceLoader::didRetrieveCacheEntry):
        Send the sanitized `ResourceResponse` with the message so WebInspector is able to access it.

        * WebProcess/Network/WebResourceLoader.h:
        * WebProcess/Network/WebResourceLoader.cpp:
        * WebProcess/Network/WebResourceLoader.messages.in:
        (WebKit::WebResourceLoader::stopLoadingAfterXFrameOptionsOrContentSecurityPolicyDenied):

2018-09-28  Jiewen Tan  <jiewen_tan@apple.com>

        [WebAuthN] Polish WebAuthN auto-test environment
        https://bugs.webkit.org/show_bug.cgi?id=189283
        <rdar://problem/44117828>

        Reviewed by Chris Dumez.

        This patch changes MockWebAuthenticationConfiguration.local to optional such that tests can express
        absence of local authenticators.

        * UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
        (WKWebsiteDataStoreSetWebAuthenticationMockConfiguration):
        * UIProcess/WebAuthentication/Mock/MockLocalConnection.mm:
        (WebKit::MockLocalConnection::getUserConsent const):
        (WebKit::MockLocalConnection::getAttestation const):
        * UIProcess/WebAuthentication/Mock/MockLocalService.cpp:
        (WebKit::MockLocalService::platformStartDiscovery const):
        * UIProcess/WebAuthentication/Mock/MockWebAuthenticationConfiguration.h:

2018-09-28  Jer Noble  <jer.noble@apple.com>

        Refactoring: eliminate raw pointer usage in Fullscreen code
        https://bugs.webkit.org/show_bug.cgi?id=188747
        <rdar://problem/43541164>

        Reviewed by Alex Christensen.

        Adopt those Ref and WeakPtr changes made in WebCore.

        * UIProcess/Cocoa/PlaybackSessionManagerProxy.h:
        * UIProcess/Cocoa/PlaybackSessionManagerProxy.mm:
        (WebKit::PlaybackSessionModelContext::addClient):
        (WebKit::PlaybackSessionModelContext::removeClient):
        (WebKit::PlaybackSessionModelContext::durationChanged):
        (WebKit::PlaybackSessionModelContext::currentTimeChanged):
        (WebKit::PlaybackSessionModelContext::bufferedTimeChanged):
        (WebKit::PlaybackSessionModelContext::rateChanged):
        (WebKit::PlaybackSessionModelContext::seekableRangesChanged):
        (WebKit::PlaybackSessionModelContext::canPlayFastReverseChanged):
        (WebKit::PlaybackSessionModelContext::audioMediaSelectionOptionsChanged):
        (WebKit::PlaybackSessionModelContext::legibleMediaSelectionOptionsChanged):
        (WebKit::PlaybackSessionModelContext::audioMediaSelectionIndexChanged):
        (WebKit::PlaybackSessionModelContext::legibleMediaSelectionIndexChanged):
        (WebKit::PlaybackSessionModelContext::externalPlaybackChanged):
        (WebKit::PlaybackSessionModelContext::wirelessVideoPlaybackDisabledChanged):
        (WebKit::PlaybackSessionModelContext::mutedChanged):
        (WebKit::PlaybackSessionModelContext::volumeChanged):
        (WebKit::PlaybackSessionModelContext::pictureInPictureActiveChanged):
        (WebKit::PlaybackSessionManagerProxy::invalidate):
        (WebKit::PlaybackSessionManagerProxy::createModelAndInterface):
        (WebKit::PlaybackSessionManagerProxy::removeClientForContext):
        * UIProcess/Cocoa/VideoFullscreenManagerProxy.h:
        * UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:
        (WebKit::VideoFullscreenModelContext::create):
        (WebKit::VideoFullscreenModelContext::VideoFullscreenModelContext):
        (WebKit::VideoFullscreenModelContext::addClient):
        (WebKit::VideoFullscreenModelContext::removeClient):
        (WebKit::VideoFullscreenModelContext::willEnterPictureInPicture):
        (WebKit::VideoFullscreenModelContext::didEnterPictureInPicture):
        (WebKit::VideoFullscreenModelContext::failedToEnterPictureInPicture):
        (WebKit::VideoFullscreenModelContext::willExitPictureInPicture):
        (WebKit::VideoFullscreenModelContext::didExitPictureInPicture):
        (WebKit::VideoFullscreenManagerProxy::invalidate):
        (WebKit::VideoFullscreenManagerProxy::createModelAndInterface):
        (WebKit::VideoFullscreenManagerProxy::removeClientForContext):
        (WebKit::VideoFullscreenModelContext::~VideoFullscreenModelContext): Deleted.
        * UIProcess/ios/fullscreen/WKFullScreenViewController.mm:
        (WKFullScreenViewControllerPlaybackSessionModelClient::setInterface):
        (WKFullScreenViewControllerVideoFullscreenModelClient::setInterface):
        (-[WKFullScreenViewController videoControlsManagerDidChange]):
        (-[WKFullScreenViewController _togglePiPAction:]):
        * UIProcess/mac/WKFullScreenWindowController.mm:
        (WebKit::WKFullScreenWindowControllerVideoFullscreenModelClient::setInterface):
        * WebProcess/cocoa/PlaybackSessionManager.h:
        * WebProcess/cocoa/PlaybackSessionManager.mm:
        (WebKit::PlaybackSessionInterfaceContext::PlaybackSessionInterfaceContext):
        (WebKit::PlaybackSessionManager::~PlaybackSessionManager):
        (WebKit::PlaybackSessionManager::createModelAndInterface):
        (WebKit::PlaybackSessionManager::removeContext):
        (WebKit::PlaybackSessionInterfaceContext::~PlaybackSessionInterfaceContext): Deleted.
        * WebProcess/cocoa/VideoFullscreenManager.h:
        (WebKit::VideoFullscreenInterfaceContext::create):
        (WebKit::VideoFullscreenInterfaceContext::createWeakPtr):
        * WebProcess/cocoa/VideoFullscreenManager.mm:
        (WebKit::VideoFullscreenInterfaceContext::VideoFullscreenInterfaceContext):
        (WebKit::VideoFullscreenManager::~VideoFullscreenManager):
        (WebKit::VideoFullscreenManager::createModelAndInterface):
        (WebKit::VideoFullscreenManager::removeContext):

2018-09-28  Chris Dumez  <cdumez@apple.com>

        Drop support for cross-origin-window-policy header
        https://bugs.webkit.org/show_bug.cgi?id=190081

        Reviewed by Ryosuke Niwa.

        * Shared/WebPreferences.yaml:
        * UIProcess/API/C/WKPreferences.cpp:
        * UIProcess/API/C/WKPreferencesRef.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::frameBecameRemote):

2018-09-28  Chris Dumez  <cdumez@apple.com>

        Do not do automatic process prewarming while under memory pressure
        https://bugs.webkit.org/show_bug.cgi?id=190082
        <rdar://problem/39771424>

        Reviewed by Geoffrey Garen.

        Do not do automatic process prewarming while under memory pressure and
        also terminate any prewarmed process when receiving a memory warning.

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::prewarmProcess):
        (WebKit::WebProcessPool::didReachGoodTimeToPrewarm):
        (WebKit::WebProcessPool::handleMemoryPressureWarning):
        * UIProcess/WebProcessPool.h:
        * UIProcess/ios/WebMemoryPressureHandlerIOS.mm:
        (WebKit::installMemoryPressureHandler):

2018-09-28  Daniel Bates  <dabates@apple.com>

        [iOS] Allow programmatic focus when hardware keyboard is attached
        https://bugs.webkit.org/show_bug.cgi?id=190017
        <rdar://problem/42270463>

        Reviewed by Wenson Hsieh.

        Make the experience of using iOS with a hardware keyboard more desktop-like by allowing
        programmatic focusing of editable elements.

        * Platform/spi/ios/UIKitSPI.h: Forward declare SPI.
        * Shared/NativeWebKeyboardEvent.h:
        * Shared/ios/NativeWebKeyboardEventIOS.mm:
        (WebKit::isInHardwareKeyboardMode): Returns whether we are in hardware keyboard mode. In DumpRenderTree
        and WebKitTestRunner this function always returns false to keep test results deterministic.
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _startAssistingNode:userIsInteracting:blurPreviousNode:changingActivityState:userObject:]):
        Allow starting an input session if we are in hardware keyboard mode.
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::platformEditorState const): Send the full editor state if we are in hardware
        keyboard mode regardless of whether layout has been performed so that UIProcess can update UI,
        including the position of the caret, immediately.

2018-09-28  Ryosuke Niwa  <rniwa@webkit.org>

        Rename createMarkup to serializePreservingVisualAppearance
        https://bugs.webkit.org/show_bug.cgi?id=190086

        Reviewed by Wenson Hsieh.

        * WebProcess/WebCoreSupport/gtk/WebEditorClientGtk.cpp:
        (WebKit::WebEditorClient::updateGlobalSelection):

2018-09-28  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r236605.
        https://bugs.webkit.org/show_bug.cgi?id=190087

        caused three API test timeouts (Requested by jernoble on
        #webkit).

        Reverted changeset:

        "Refactoring: eliminate raw pointer usage in Fullscreen code"
        https://bugs.webkit.org/show_bug.cgi?id=188747
        https://trac.webkit.org/changeset/236605

2018-09-28  Jer Noble  <jer.noble@apple.com>

        Refactoring: eliminate raw pointer usage in Fullscreen code
        https://bugs.webkit.org/show_bug.cgi?id=188747
        <rdar://problem/43541164>

        Reviewed by Alex Christensen.

        Adopt those Ref and WeakPtr changes made in WebCore.

        * UIProcess/Cocoa/PlaybackSessionManagerProxy.h:
        * UIProcess/Cocoa/PlaybackSessionManagerProxy.mm:
        (WebKit::PlaybackSessionModelContext::addClient):
        (WebKit::PlaybackSessionModelContext::removeClient):
        (WebKit::PlaybackSessionModelContext::durationChanged):
        (WebKit::PlaybackSessionModelContext::currentTimeChanged):
        (WebKit::PlaybackSessionModelContext::bufferedTimeChanged):
        (WebKit::PlaybackSessionModelContext::rateChanged):
        (WebKit::PlaybackSessionModelContext::seekableRangesChanged):
        (WebKit::PlaybackSessionModelContext::canPlayFastReverseChanged):
        (WebKit::PlaybackSessionModelContext::audioMediaSelectionOptionsChanged):
        (WebKit::PlaybackSessionModelContext::legibleMediaSelectionOptionsChanged):
        (WebKit::PlaybackSessionModelContext::audioMediaSelectionIndexChanged):
        (WebKit::PlaybackSessionModelContext::legibleMediaSelectionIndexChanged):
        (WebKit::PlaybackSessionModelContext::externalPlaybackChanged):
        (WebKit::PlaybackSessionModelContext::wirelessVideoPlaybackDisabledChanged):
        (WebKit::PlaybackSessionModelContext::mutedChanged):
        (WebKit::PlaybackSessionModelContext::volumeChanged):
        (WebKit::PlaybackSessionModelContext::pictureInPictureActiveChanged):
        (WebKit::PlaybackSessionManagerProxy::invalidate):
        (WebKit::PlaybackSessionManagerProxy::createModelAndInterface):
        (WebKit::PlaybackSessionManagerProxy::removeClientForContext):
        * UIProcess/Cocoa/VideoFullscreenManagerProxy.h:
        * UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:
        (WebKit::VideoFullscreenModelContext::create):
        (WebKit::VideoFullscreenModelContext::VideoFullscreenModelContext):
        (WebKit::VideoFullscreenModelContext::addClient):
        (WebKit::VideoFullscreenModelContext::removeClient):
        (WebKit::VideoFullscreenModelContext::willEnterPictureInPicture):
        (WebKit::VideoFullscreenModelContext::didEnterPictureInPicture):
        (WebKit::VideoFullscreenModelContext::failedToEnterPictureInPicture):
        (WebKit::VideoFullscreenModelContext::willExitPictureInPicture):
        (WebKit::VideoFullscreenModelContext::didExitPictureInPicture):
        (WebKit::VideoFullscreenManagerProxy::invalidate):
        (WebKit::VideoFullscreenManagerProxy::createModelAndInterface):
        (WebKit::VideoFullscreenManagerProxy::removeClientForContext):
        (WebKit::VideoFullscreenModelContext::~VideoFullscreenModelContext): Deleted.
        * UIProcess/ios/fullscreen/WKFullScreenViewController.mm:
        (WKFullScreenViewControllerPlaybackSessionModelClient::setInterface):
        (WKFullScreenViewControllerVideoFullscreenModelClient::setInterface):
        (-[WKFullScreenViewController videoControlsManagerDidChange]):
        (-[WKFullScreenViewController _togglePiPAction:]):
        * UIProcess/mac/WKFullScreenWindowController.mm:
        (WebKit::WKFullScreenWindowControllerVideoFullscreenModelClient::setInterface):
        * WebProcess/cocoa/PlaybackSessionManager.h:
        * WebProcess/cocoa/PlaybackSessionManager.mm:
        (WebKit::PlaybackSessionInterfaceContext::PlaybackSessionInterfaceContext):
        (WebKit::PlaybackSessionManager::~PlaybackSessionManager):
        (WebKit::PlaybackSessionManager::createModelAndInterface):
        (WebKit::PlaybackSessionManager::removeContext):
        (WebKit::PlaybackSessionInterfaceContext::~PlaybackSessionInterfaceContext): Deleted.
        * WebProcess/cocoa/VideoFullscreenManager.h:
        (WebKit::VideoFullscreenInterfaceContext::create):
        (WebKit::VideoFullscreenInterfaceContext::createWeakPtr):
        * WebProcess/cocoa/VideoFullscreenManager.mm:
        (WebKit::VideoFullscreenInterfaceContext::VideoFullscreenInterfaceContext):
        (WebKit::VideoFullscreenManager::~VideoFullscreenManager):
        (WebKit::VideoFullscreenManager::createModelAndInterface):
        (WebKit::VideoFullscreenManager::removeContext):

2018-09-28  Fujii Hironori  <Hironori.Fujii@sony.com>

        [WinCairo] error C2027: use of undefined type 'WTF::EnumTraits<E>' while compiling AuthenticationChallengeProxy.cpp
        https://bugs.webkit.org/show_bug.cgi?id=190071

        Unreviewed build fix for WinCairo port.

        AuthenticationChallengeDisposition was not defined in this file.

        * UIProcess/Authentication/AuthenticationChallengeProxy.cpp: Include "AuthenticationChallengeDisposition.h".

2018-09-26  Ryosuke Niwa  <rniwa@webkit.org>

        Use enum class in createMarkup arguments
        https://bugs.webkit.org/show_bug.cgi?id=190028

        Reviewed by Wenson Hsieh.

        * WebProcess/WebCoreSupport/gtk/WebEditorClientGtk.cpp:
        (WebKit::WebEditorClient::updateGlobalSelection):

2018-09-27  John Wilander  <wilander@apple.com>

        Resource Load Statistics: Non-redirected top frame navigation should not get captured in statistics
        https://bugs.webkit.org/show_bug.cgi?id=190055
        <rdar://problem/44843460>

        Reviewed by Chris Dumez.

        * UIProcess/ResourceLoadStatisticsMemoryStore.cpp:
            Bumped the statisticsModelVersion to 14 to be able to
            correct legacy statistics.
        (WebKit::ResourceLoadStatisticsMemoryStore::logFrameNavigation):
            Now skips capture if it's the main frame.

2018-09-27  Brent Fulgham  <bfulgham@apple.com>

        [iOS] Allow access to VoiceServices features needed for accessibility
        https://bugs.webkit.org/show_bug.cgi?id=190019
        <rdar://problem/43621111>

        Reviewed by Chris Fleizach.

        Revise the sandbox to allow access to relevant WebSpeech features.

        * Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:

2018-09-27  Sihui Liu  <sihui_liu@apple.com>

        Fix IOSMAC build
        https://bugs.webkit.org/show_bug.cgi?id=190021

        Reviewed by Alex Christensen.

        * NetworkProcess/mac/NetworkProcessMac.mm:
        (WebKit::NetworkProcess::parentProcessHasServiceWorkerEntitlement const):

2018-09-27  John Wilander  <wilander@apple.com>

        Resource Load Statistics: Remove temporary compatibility fix for auto-dismiss popups
        https://bugs.webkit.org/show_bug.cgi?id=189980
        <rdar://problem/44780645>

        Reviewed by Alex Christensen.

        The change in https://bugs.webkit.org/show_bug.cgi?id=183620 was a temporary
        compatibility fix as explained in:
        https://webkit.org/blog/8311/intelligent-tracking-prevention-2-0/. We should
        remove it.

        These changes remove the parameter isTriggeredByUserGesture since it's no longer needed.

        * UIProcess/ResourceLoadStatisticsMemoryStore.cpp:
        (WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccessUnderOpener):
        * UIProcess/ResourceLoadStatisticsMemoryStore.h:
        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::requestStorageAccessUnderOpener):
        * UIProcess/WebResourceLoadStatisticsStore.h:
        * UIProcess/WebResourceLoadStatisticsStore.messages.in:
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::WebProcess):

2018-09-27  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r236557.

        Really roll out r236557 this time because it breaks internal
        builds.

        Reverted changeset:

        "Add VP8 support to WebRTC"
        https://bugs.webkit.org/show_bug.cgi?id=189976
        https://trac.webkit.org/changeset/236557

2018-09-27  Youenn Fablet  <youenn@apple.com>

        Add VP8 support to WebRTC
        https://bugs.webkit.org/show_bug.cgi?id=189976

        Reviewed by Eric Carlson.

        * Shared/WebPreferences.yaml:

2018-09-27  Chris Dumez  <cdumez@apple.com>

        The WebContent process should not process incoming IPC while waiting for a sync IPC reply
        https://bugs.webkit.org/show_bug.cgi?id=184183
        <rdar://problem/36800576>

        Reviewed by Ryosuke Niwa.

        In recent years, we have experienced re-entrancy bugs/crashes in WebCore due to the WebContent process
        processing unrelated incoming synchronous IPC when waiting for a reply to one of its synchronous IPC
        to another process. In order to deal with this, we introduced a DoNotProcessIncomingMessagesWhenWaitingForSyncReply
        IPC::SendOption which we used on sendSync() calls where we knew re-entering would be unsafe. However,
        it turns out to be needed for a lot of the WebProcess's sync IPC and it is error-prone. In order to
        address the issue, we've decided to update the WebContent process behavior so that it processes all its
        IPC in order (not matter if synchronous or not) and thus so that we never dispatch unrelated synchronous
        IPC while waiting for a synchronous IPC reply, expect in cases where it would cause a deadlock.

        As a result, this patch also drops support for the DoNotProcessIncomingMessagesWhenWaitingForSyncReply
        IPC::SendOption which is no longer needed and has some code complexity.

        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::NetworkConnectionToWebProcess):
        * Platform/IPC/Connection.cpp:
        (IPC::Connection::sendSyncMessage):
        (IPC::Connection::waitForSyncReply):
        * Platform/IPC/Connection.h:
        (IPC::Connection::sendSync):
        * PluginProcess/WebProcessConnection.cpp:
        (WebKit::WebProcessConnection::WebProcessConnection):
        * StorageProcess/StorageToWebProcessConnection.cpp:
        (WebKit::StorageToWebProcessConnection::StorageToWebProcessConnection):
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::connectionWillOpen):
        * UIProcess/WebProcessProxy.h:
        * UIProcess/WebProcessProxy.messages.in:
        * WebProcess/InjectedBundle/InjectedBundle.cpp:
        (WebKit::InjectedBundle::postSynchronousMessage):
        * WebProcess/Network/WebLoaderStrategy.cpp:
        (WebKit::WebLoaderStrategy::loadResourceSynchronously):
        (WebKit::WebLoaderStrategy::responseFromResourceLoadIdentifier):
        (WebKit::WebLoaderStrategy::intermediateLoadInformationFromResourceLoadIdentifier):
        (WebKit::WebLoaderStrategy::networkMetricsFromResourceLoadIdentifier):
        * WebProcess/Plugins/PluginProxy.cpp:
        (WebKit::PluginProxy::destroy):
        (WebKit::PluginProxy::supportsSnapshotting const):
        * WebProcess/Plugins/WebPluginInfoProvider.cpp:
        (WebKit::WebPluginInfoProvider::populatePluginCache):
        * WebProcess/Storage/WebSWClientConnection.cpp:
        (WebKit::WebSWClientConnection::WebSWClientConnection):
        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        * WebProcess/WebCoreSupport/WebChromeClient.h:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::savePlatformDataToCachedFrame):
        * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
        (WebKit::WebPlatformStrategies::cookieRequestHeaderFieldValue):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::rootViewToScreen):
        * WebProcess/WebProcess.cpp:
        (WebKit::getNetworkProcessConnection):
        * WebProcess/WebProcess.h:
        * WebProcess/WebProcess.messages.in:

2018-09-27  Antoine Quint  <graouts@apple.com>

        [Web Animations] Turn Web Animations with CSS integration on
        https://bugs.webkit.org/show_bug.cgi?id=184819
        <rdar://problem/39597337>

        Reviewed by Dean Jackson.

        * Shared/WebPreferences.yaml:

2018-09-26  James Savage  <james.savage@apple.com>

        Allow override of viewport configuration.
        https://bugs.webkit.org/show_bug.cgi?id=188772.
        <rdar://problem/43538892>.

        Reviewed by Simon Fraser.

        * Shared/WebPreferences.yaml:
        * UIProcess/API/Cocoa/WKPreferences.mm:
        (-[WKPreferences _setShouldIgnoreMetaViewport:]):
        (-[WKPreferences _shouldIgnoreMetaViewport]):
        * UIProcess/API/Cocoa/WKPreferencesPrivate.h:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::viewportPropertiesDidChange): If we are ignoring the
        <meta> viewport, short circuit calling setViewportArguments() and do not
        do any updates.
        (WebKit::WebPage::didCommitLoad): Ditto.
        * WebProcess/WebPage/ios/WebPageIOS.mm:
        (WebKit::WebPage::resetViewportDefaultConfiguration): Select the default
        configuration based on UIProcess setting.

2018-09-26  Chris Dumez  <cdumez@apple.com>

        Regression(r236512): WKWebViewCandidateTests.SoftSpaceReplacementAfterCandidateInsertionWithoutReplacement API test is failing
        https://bugs.webkit.org/show_bug.cgi?id=190007

        Reviewed by Alex Christensen.

        Drop DispatchMessageEvenWhenWaitingForSyncReply SendOption from EditorStateChanged IPC calls to restore
        pre-r236512 behavior. Before r236512, this option had no effect on IPC from the WebContent to the UIProcess
        because the m_onlySendMessagesAsDispatchWhenWaitingForSyncReplyWhenProcessingSuchAMessage flag was set
        on that IPC::Connection. However, after r236512, m_onlySendMessagesAsDispatchWhenWaitingForSyncReplyWhenProcessingSuchAMessage
        is no longer set on the connection, and the DispatchMessageEvenWhenWaitingForSyncReply SendOption was
        causing this message to get processed out of order with regards to other async IPC, thus causing the
        API test failure.

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::sendEditorStateUpdate):
        (WebKit::WebPage::sendPartialEditorStateAndSchedulePostLayoutUpdate):

2018-09-26  Alex Christensen  <achristensen@webkit.org>

        Fix UAF after r236463
        https://bugs.webkit.org/show_bug.cgi?id=190011

        Reviewed by Chris Dumez.

        I had removed an early return in NetworkResourceLoader::continueDidReceiveResponse.
        Reading the (probably) null m_responseCompletionHandler was reading after the object had been destroyed.

        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::continueDidReceiveResponse):

2018-09-26  Ryosuke Niwa  <rniwa@webkit.org>

        Selection should work across shadow boundary when initiated by a mouse drag
        https://bugs.webkit.org/show_bug.cgi?id=151380
        <rdar://problem/24363872>

        Reviewed by Antti Koivisto.

        Added SelectionAcrossShadowBoundariesEnabled as an internal debug feature,
        and moved CSSCustomPropertiesAndValuesEnabled to where other experimental features are located.

        * Shared/WebPreferences.yaml:

2018-09-26  Chris Dumez  <cdumez@apple.com>

        Unreviewed, apply post-landing review comments after r236512.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didCreateMainFrame):
        (WebKit::WebPageProxy::didCreateSubframe):

2018-09-26  Chris Dumez  <cdumez@apple.com>

        UIProcess should process incoming sync IPC from WebProcess when waiting for a sync IPC reply from it
        https://bugs.webkit.org/show_bug.cgi?id=189927

        Reviewed by Geoffrey Garen.

        UIProcess should process incoming sync IPC from WebProcess when waiting for a sync IPC reply from it
        in order to avoid deadlocks. This is not an issue currently because the WebProcess does process
        incoming sync IPC when waiting for a sync IPC reply. However, we plan to change this in the future
        in order to avoid bugs caused by re-entering WebCore at unsafe times.

        The reason the UIProcess previously did not do out of order sync IPC process was to avoid processing
        a synchronous policy decision IPC for a frameID it did not know about yet, due to the DidCreateMainFrame /
        DidCreateSubframe IPC messages being asynchronous. To address this issue, the decidePolicyForNavigationActionSync
        IPC handler now calls didCreateMainFrame() / didCreateSubframe() as needed if it does not know about
        the frame yet. Note that synchronous policy decisions are rare and are currently only needed by initial
        about:blank and fragment navigations.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didCreateMainFrame):
        (WebKit::WebPageProxy::didCreateSubframe):
        (WebKit::WebPageProxy::decidePolicyForNavigationActionAsync):
        (WebKit::WebPageProxy::decidePolicyForNavigationAction):
        (WebKit::WebPageProxy::decidePolicyForNavigationActionSync):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):

        * WebProcess/WebPage/WebFrame.cpp:
        (WebKit::WebFrame::createWithCoreMainFrame):
        (WebKit::WebFrame::createSubframe):
        Drop DispatchMessageEvenWhenWaitingForSyncReply SendOption when sending the
        DidCreateMainFrame / DidCreateSubframe IPC. Previously, this SendOption has
        no effect because the IPC::Connection would have the
        m_onlySendMessagesAsDispatchWhenWaitingForSyncReplyWhenProcessingSuchAMessage
        flag set to true. However, now that we stop setting this flag on the IPC
        connection from the WebProcess to the UIProcess, it would lead to those
        IPC messages getting processed out of order with regards to the
        DecidePolicyForNavigationAsync asynchronous IPC. DidCreateMainFrame would
        sometimes get processed *after* the DecidePolicyForNavigationAsync IPC
        and we would not know about the frameID yet.

        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::initializeConnection):

2018-09-26  Antti Koivisto  <antti@apple.com>

        REGRESSION (PSON): White or Black flash occurs when process swapping on navigation on iOS
        https://bugs.webkit.org/show_bug.cgi?id=189695
        <rdar://problem/44551146>

        Reviewed by Simon Fraser.

        Freeze the layers on UI process side during process swap.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _processWillChange]):

        Shared work of _processWillSwap and _processDidExit.

        (-[WKWebView _processWillSwap]):
        (-[WKWebView _processDidExit]):

        Split into two functions. Don't reset scroll position and similar when doing navigation swap.

        * UIProcess/API/Cocoa/WKWebViewInternal.h:
        * UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.h:
        * UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm:
        (WebKit::RemoteLayerTreeDrawingAreaProxy::RemoteLayerTreeDrawingAreaProxy):
        (WebKit::RemoteLayerTreeDrawingAreaProxy::detachRemoteLayerTreeHost):

        Add to way to detach RemoteLayerTreeHost from the drawing area. Inert RemoteLayerTreeHost will host
        the frozen layers.

        (WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTree):
        (WebKit::RemoteLayerTreeDrawingAreaProxy::updateDebugIndicator):
        (WebKit::RemoteLayerTreeDrawingAreaProxy::hideContentUntilPendingUpdate):
        (WebKit::RemoteLayerTreeDrawingAreaProxy::hideContentUntilAnyUpdate):
        (WebKit::RemoteLayerTreeDrawingAreaProxy::prepareForAppSuspension):
        (WebKit::RemoteLayerTreeDrawingAreaProxy::hasVisibleContent const):
        (WebKit::RemoteLayerTreeDrawingAreaProxy::layerWithIDForTesting const):
        * UIProcess/RemoteLayerTree/RemoteLayerTreeHost.h:
        * UIProcess/RemoteLayerTree/RemoteLayerTreeHost.mm:
        (WebKit::RemoteLayerTreeHost::RemoteLayerTreeHost):
        (WebKit::RemoteLayerTreeHost::updateLayerTree):
        (WebKit::RemoteLayerTreeHost::animationDidStart):
        (WebKit::RemoteLayerTreeHost::animationDidEnd):
        (WebKit::RemoteLayerTreeHost::detachFromDrawingArea):

        Clear the DrawingArea backpointer.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::continueNavigationInNewProcess):
        (WebKit::WebPageProxy::resetState):

        Detach and save the current RemoteLayerTreeHost on navigation swap.

        * UIProcess/WebPageProxy.h:
        * UIProcess/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::processWillSwap):

        Avoid reseting the scroll position.

        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::setAcceleratedCompositingRootLayer):

        Drop the frozen layers after setting the new root layer.

        * UIProcess/mac/WebPageProxyMac.mm:
        (WebKit::WebPageProxy::setAcceleratedCompositingRootLayer):

        For completeness do this also on Mac (where remote layers are currently not used).

2018-09-25  Ryosuke Niwa  <rniwa@webkit.org>

        Make frame flattening an internal debug feature
        https://bugs.webkit.org/show_bug.cgi?id=189984

        Reviewed by Simon Fraser.

        Made frame flattening a runtime switchable from internal debug menu.

        To avoid having to enumerate three distinct values in the settings, made it a boolean flag in WKPreference.
        That's what's exposd as an API anyway.

        * Shared/WebPreferences.yaml:
        * Shared/WebPreferencesDefaultValues.h:
        * UIProcess/API/C/WKPreferences.cpp:
        (WKPreferencesSetFrameFlatteningEnabled):
        (WKPreferencesGetFrameFlatteningEnabled):
        * UIProcess/API/glib/WebKitSettings.cpp:
        (webkit_settings_get_enable_frame_flattening):
        (webkit_settings_set_enable_frame_flattening):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::updatePreferences):

2018-09-25  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] Add Mac window capture source
        https://bugs.webkit.org/show_bug.cgi?id=189958
        <rdar://problem/44767616>

        Reviewed by Youenn Fablet.

        * UIProcess/UserMediaPermissionRequestManagerProxy.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::beginMonitoringCaptureDevices): Sync with webcore prefs before listening
        to device changes so we listen on the correct devices.

2018-09-25  Chris Dumez  <cdumez@apple.com>

        Unreviewed, rolling out r236471 and r236480.

        Seems to be causing some flaky crashes

        Reverted changesets:

        "UIProcess should process incoming sync IPC from WebProcess
        when waiting for a sync IPC reply from it"
        https://bugs.webkit.org/show_bug.cgi?id=189927
        https://trac.webkit.org/changeset/236471

        "Revert some of the changes in r236471"
        https://bugs.webkit.org/show_bug.cgi?id=189973
        https://trac.webkit.org/changeset/236480

2018-09-25  Conrad Shultz  <conrad_shultz@apple.com>

        Enable customization of the file upload panel
        https://bugs.webkit.org/show_bug.cgi?id=189970

        Reviewed by Wenson Hsieh.

        With this change, platform implementations can override, or implement in a category,
        +[WKContentView _fileUploadPanelClass] as needed.

        * UIProcess/ios/WKContentViewInteraction.h:
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView _showRunOpenPanel:resultListener:]):

2018-09-25  Chris Dumez  <cdumez@apple.com>

        Unreviewed, rolling out r236420 and r236458.

        This change is not fully correct

        Reverted changesets:

        "Do not do early processing of incoming sync IPC unless we're
        waiting for a sync IPC reply"
        https://bugs.webkit.org/show_bug.cgi?id=186941
        https://trac.webkit.org/changeset/236420

        "Unreviewed, update bug number of http/tests/misc/blob-
        size.html crash on Windows"
        https://trac.webkit.org/changeset/236458

2018-09-25  Jiewen Tan  <jiewen_tan@apple.com>

        Unreviewed, a quick fix after r236481.

        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::setMockWebAuthenticationConfiguration):
        Add an early return, so we don't end up with setting MockWebAuthenticationConfiguration twice.

2018-09-25  John Wilander  <wilander@apple.com>

        Change from HAVE(CFNETWORK_STORAGE_PARTITIONING) to ENABLE(RESOURCE_LOAD_STATISTICS)
        https://bugs.webkit.org/show_bug.cgi?id=189959
        <rdar://problem/44767642>

        Reviewed by Chris Dumez.

        We no longer make use of CFNetwork's cookie partitioning so we should
        change the compile-time flag to something that makes sense. This should
        also make it easier/cleaner for other ports.

        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::cookiesForDOM):
        (WebKit::NetworkConnectionToWebProcess::setCookiesFromDOM):
        (WebKit::NetworkConnectionToWebProcess::removeStorageAccessForFrame):
        (WebKit::NetworkConnectionToWebProcess::removeStorageAccessForAllFramesOnPage):
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::initializeNetworkProcess):
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:
        * NetworkProcess/NetworkProcessCreationParameters.cpp:
        (WebKit::NetworkProcessCreationParameters::encode const):
        (WebKit::NetworkProcessCreationParameters::decode):
        * NetworkProcess/NetworkProcessCreationParameters.h:
        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::didFinishLoading):
        (WebKit::NetworkResourceLoader::sendResultForCacheEntry):
        * NetworkProcess/NetworkResourceLoader.h:
        * NetworkProcess/cache/NetworkCache.cpp:
        (WebKit::NetworkCache::Cache::retrieve):
        * NetworkProcess/cocoa/NetworkDataTaskCocoa.h:
        * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
        (WebKit::NetworkDataTaskCocoa::applyCookieBlockingPolicy):
        (WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa):
        (WebKit::NetworkDataTaskCocoa::willPerformHTTPRedirection):
        * Shared/WebProcessCreationParameters.cpp:
        (WebKit::WebProcessCreationParameters::encode const):
        (WebKit::WebProcessCreationParameters::decode):
        * Shared/WebProcessCreationParameters.h:
        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        (WebKit::WebProcessPool::platformInitializeWebProcess):
        (WebKit::WebProcessPool::platformInitializeNetworkProcess):
        * UIProcess/Network/NetworkProcessProxy.cpp:
        * UIProcess/Network/NetworkProcessProxy.h:
        * UIProcess/Network/NetworkProcessProxy.messages.in:
        * UIProcess/WebPageProxy.cpp:
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::callHasStorageAccessForFrameHandler):
        (WebKit::WebResourceLoadStatisticsStore::callGrantStorageAccessHandler):
        (WebKit::WebResourceLoadStatisticsStore::removeAllStorageAccess):
        (WebKit::WebResourceLoadStatisticsStore::setCacheMaxAgeCap):
        (WebKit::WebResourceLoadStatisticsStore::callUpdatePrevalentDomainsToBlockCookiesForHandler):
        (WebKit::WebResourceLoadStatisticsStore::callRemoveDomainsHandler):
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::setCacheMaxAgeCapForPrevalentResources):
        (WebKit::WebsiteDataStore::resetCacheMaxAgeCapForPrevalentResources):
        (WebKit::WebsiteDataStore::networkProcessDidCrash):
        * UIProcess/WebsiteData/WebsiteDataStore.h:
        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
        * WebProcess/WebCoreSupport/WebChromeClient.h:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::detachedFromParent2):
        (WebKit::WebFrameLoaderClient::dispatchWillChangeDocument):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
        * WebProcess/WebPage/WebPage.cpp:
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::initializeWebProcess):

2018-09-25  Philippe Normand  <pnormand@igalia.com>

        [WPE] Export jsc_ symbols
        https://bugs.webkit.org/show_bug.cgi?id=189964

        Reviewed by Michael Catanzaro.

        * webkitglib-symbols.map: Keep jsc_* symbols as visible so they
        can be used by applications depending on WPE.

2018-09-25  Jiewen Tan  <jiewen_tan@apple.com>

        [WebAuthN] Make AuthenticatorManager
        https://bugs.webkit.org/show_bug.cgi?id=189279
        <rdar://problem/44116792>

        Reviewed by Chris Dumez.

        This patch introduces AuthenticatorManager which is the central of WebAuthentication that 1) handles
        web requests, 2) discovers authenticators, 3) manages authetnicators and 4) in the future interacts with UI.
        The lifetime of the AuthenticatorManager is managed by WebsiteDataStore such that it is almost a singleton
        per UI Process.

        1) Requests come from WebAuthenticatorCoordinatorProxy and then cached in AuthenticatorManager which will
        then distribute requests whenever a new authenticator is discovered.

        2) An ABC AuthenticatorTransportService is provided as an interface for AuthenticatorManager to invoke
        startDiscovery. Actual work will be done in corresponding derived classes, say, LocalService. LocalService
        is the one that discover attached platform authenticators, for example, TouchID or FaceID.

        Eache service is unique per AuthetnicatorManager, which means we will have at most 4 services, Local, USB,
        NFC, and BLE. The latter three will be implemented soon. Also, AuthenticatorManager serves as an observer to
        *Service, so the latter can inform the former whenever an authenticator is added or removed.

        When a new authenticator is discovered, the corresponding service will create an Authetnicator object that
        binds to the physical authenticator device through a *Connection object. There is no ABC for connection for
        now as I forsee every *Connection will be quite different. The *Connection object is the one that send/receive
        messages from the physicla device. So far, a LocalConnection is provided even though normally local authenticators
        are attached. This class is provided solely for separating UI and network traffic from LocalAuthenticator's
        request handling process. So we can override them in a mock test environment. I will talk about this in the
        next section.

        3) An ABC Authenticator is provided as an interface for AuthenticatorManager to distribute requests on. Requests
        will then be handled by the derived classes, say, LocalAuthenticator. Each authenticator object is a FSM that
        works asynchronously.

        For LocalAuthenticator, it has 4 states for MakeCredential: Init => RequestReceived => UserConsented => Attested => End,
        and 3 states for GetAssertion: Init => RequestReceived => UserConsented => End. In the transit from RequestReceived to
        UserConsented, it will invoke LocalConnection to talk to LocalAuthentication.framework that prompt users for TouchID
        or FaceID. And then the transit from UserConsented => Attested, it will invoke LocalConnection to talk to
        DeviceIdentity.framework that does Apple attestation. Most of the work are from the original LocalAuthenticator
        implementation, and this patch converts it to a FSM and simplify the callback and threading model.

        When a respond is ready, each authenticator will notify their observer which is the AuthenticatorManager.
        AuthenticatorManager will only reply to Web Process whenever there is a valid respond or a terminating error. Otherwise,
        the request will time out. I will explore the time out mechanism in a more detailed manner in Bug 189642.

        The above is a briefing of the AuthetnicatorManager architecture in functional. The asynchronous model is explained here:
        1) Since most discovery and request handling processes are asynchronous, I enforced them to be executed asyncrhonous in
        the interface of the ABC.
        2) There is no dedicated secondary threads here. However, underlying framework might decide to perform works on a dedicated
        thread and then execute the provided callback. Whenever such situation happens, the policy here is to wrap the actual callback
        into a callback that will post the actual callback back to the main thread and pass the wrapping callback to the APIs. Hence,
        weak pointers in the actual callback are guaranteed to work.
        3) Callbacks are used only if it is one way, and they are CompletionHandlers.
        4) Potential multi ways asynchronous operations are encapsulated in regarding Observer interfaces.

        Finally, let me explain how the mock test works:
        1) Mock testing is done in WebKitTestRunner instead of Internals because a considerable large portion of work is in UIProcess
        instead of WebProcess, says, the AuthenticatorManager.
        2) The basic idea is to override functionality of *Connection classes and then make them thin such that we can get the best
        possible coverage in auto tests.
        3) In order to enable layout tests to configure the Mock*Connection classes, a MockWebAuthenticationConfiguration struct is
        provided. A corresponding JS dictionary will be created by each test and passed from the TestRunner to the connection object.
        4) To bridge the above tunnel, a MockAuthenticatorManager is constructed. It is instrumented to return every error.
        5) Also, Mock*Service classes are made to mock the discovery process as well.
        6) Noted, every mock overrided methods are made thin.

        * CMakeLists.txt:
        * Configurations/WebKit.xcconfig:
        * Platform/spi/Cocoa/DeviceIdentitySPI.h: Copied from Source/WebCore/PAL/pal/spi/cocoa/DeviceIdentitySPI.h.
        * SourcesCocoa.txt:
        * UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
        (WKWebsiteDataStoreSetWebAuthenticationMockConfiguration):
        * UIProcess/API/C/WKWebsiteDataStoreRef.h:
        * UIProcess/WebAuthentication/Authenticator.cpp: Copied from Source/WebCore/platform/cocoa/LocalAuthenticationSoftLink.h.
        (WebKit::Authenticator::handleRequest):
        (WebKit::Authenticator::receiveRespond const):
        * UIProcess/WebAuthentication/Authenticator.h: Renamed from Source/WebCore/Modules/webauthn/cocoa/LocalAuthenticator.h.
        (WebKit::Authenticator::setObserver):
        (WebKit::Authenticator::observer const):
        (WebKit::Authenticator::requestData const):
        * UIProcess/WebAuthentication/AuthenticatorManager.cpp: Added.
        (WebKit::AuthenticatorManagerInternal::collectTransports):
        (WebKit::AuthenticatorManager::makeCredential):
        (WebKit::AuthenticatorManager::getAssertion):
        (WebKit::AuthenticatorManager::clearState):
        (WebKit::AuthenticatorManager::authenticatorAdded):
        (WebKit::AuthenticatorManager::respondReceived):
        (WebKit::AuthenticatorManager::createService const):
        (WebKit::AuthenticatorManager::respondReceivedInternal):
        (WebKit::AuthenticatorManager::startDiscovery):
        * UIProcess/WebAuthentication/AuthenticatorManager.h: Added.
        (WebKit::AuthenticatorManager::pendingCompletionHandler):
        * UIProcess/WebAuthentication/AuthenticatorTransportService.cpp: Copied from Source/WebCore/PAL/pal/spi/cocoa/DeviceIdentitySPI.h.
        (WebKit::AuthenticatorTransportService::create):
        (WebKit::AuthenticatorTransportService::createMock):
        (WebKit::AuthenticatorTransportService::AuthenticatorTransportService):
        (WebKit::AuthenticatorTransportService::startDiscovery const):
        * UIProcess/WebAuthentication/AuthenticatorTransportService.h: Copied from Source/WebCore/PAL/pal/spi/cocoa/DeviceIdentitySPI.h.
        (WebKit::AuthenticatorTransportService::observer const):
        * UIProcess/WebAuthentication/Cocoa/LocalAuthenticationSoftLink.h: Copied from Source/WebCore/platform/cocoa/LocalAuthenticationSoftLink.h.
        * UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.h: Copied from Source/WebCore/PAL/pal/spi/cocoa/DeviceIdentitySPI.h.
        * UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm: Added.
        (WebKit::LocalAuthenticatorInternal::buildAuthData):
        (WebKit::LocalAuthenticatorInternal::transportsContain):
        (WebKit::LocalAuthenticatorInternal::produceHashSet):
        (WebKit::LocalAuthenticatorInternal::toVector):
        (WebKit::LocalAuthenticator::LocalAuthenticator):
        (WebKit::LocalAuthenticator::makeCredential):
        (WebKit::LocalAuthenticator::continueMakeCredentialAfterUserConsented):
        (WebKit::LocalAuthenticator::continueMakeCredentialAfterAttested):
        (WebKit::LocalAuthenticator::getAssertion):
        (WebKit::LocalAuthenticator::continueGetAssertionAfterUserConsented):
        * UIProcess/WebAuthentication/Cocoa/LocalConnection.h: Copied from Source/WebCore/PAL/pal/spi/cocoa/DeviceIdentitySPI.h.
        * UIProcess/WebAuthentication/Cocoa/LocalConnection.mm: Added.
        (WebKit::LocalConnection::getUserConsent const):
        (WebKit::LocalConnection::getAttestation const):
        * UIProcess/WebAuthentication/Cocoa/LocalService.h: Copied from Source/WebCore/platform/cocoa/LocalAuthenticationSoftLink.h.
        * UIProcess/WebAuthentication/Cocoa/LocalService.mm: Renamed from Source/WebCore/PAL/pal/spi/cocoa/DeviceIdentitySPI.h.
        (WebKit::LocalService::LocalService):
        (WebKit::LocalService::isAvailable):
        (WebKit::LocalService::startDiscoveryInternal const):
        (WebKit::LocalService::platformStartDiscovery const):
        (WebKit::LocalService::createLocalConnection const):
        * UIProcess/WebAuthentication/Mock/MockAuthenticatorManager.cpp: Copied from Source/WebCore/platform/cocoa/LocalAuthenticationSoftLink.h.
        (WebKit::MockAuthenticatorManager::MockAuthenticatorManager):
        (WebKit::MockAuthenticatorManager::createService const):
        (WebKit::MockAuthenticatorManager::respondReceivedInternal):
        * UIProcess/WebAuthentication/Mock/MockAuthenticatorManager.h: Copied from Source/WebCore/platform/cocoa/LocalAuthenticationSoftLink.h.
        * UIProcess/WebAuthentication/Mock/MockLocalConnection.h: Copied from Source/WebCore/platform/cocoa/LocalAuthenticationSoftLink.h.
        * UIProcess/WebAuthentication/Mock/MockLocalConnection.mm: Added.
        (WebKit::MockLocalConnection::MockLocalConnection):
        (WebKit::MockLocalConnection::getUserConsent const):
        (WebKit::MockLocalConnection::getAttestation const):
        * UIProcess/WebAuthentication/Mock/MockLocalService.cpp: Copied from Source/WebCore/platform/cocoa/LocalAuthenticationSoftLink.h.
        (WebKit::MockLocalService::MockLocalService):
        (WebKit::MockLocalService::platformStartDiscovery const):
        (WebKit::MockLocalService::createLocalConnection const):
        * UIProcess/WebAuthentication/Mock/MockLocalService.h: Copied from Source/WebCore/platform/cocoa/LocalAuthenticationSoftLink.h.
        * UIProcess/WebAuthentication/Mock/MockWebAuthenticationConfiguration.h: Copied from Source/WebCore/platform/cocoa/LocalAuthenticationSoftLink.h.
        * UIProcess/WebAuthentication/WebAuthenticationRequestData.h: Renamed from Source/WebCore/platform/cocoa/LocalAuthenticationSoftLink.h.
        * UIProcess/WebAuthentication/WebAuthenticatorCoordinatorProxy.cpp:
        (WebKit::WebAuthenticatorCoordinatorProxy::WebAuthenticatorCoordinatorProxy):
        (WebKit::WebAuthenticatorCoordinatorProxy::makeCredential):
        (WebKit::WebAuthenticatorCoordinatorProxy::getAssertion):
        (WebKit::WebAuthenticatorCoordinatorProxy::isUserVerifyingPlatformAuthenticatorAvailable):
        (WebKit::WebAuthenticatorCoordinatorProxy::isUserVerifyingPlatformAuthenticatorAvailableReply): Deleted.
        * UIProcess/WebAuthentication/WebAuthenticatorCoordinatorProxy.h:
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::WebsiteDataStore):
        (WebKit::WebsiteDataStore::setMockWebAuthenticationConfiguration):
        * UIProcess/WebsiteData/WebsiteDataStore.h:
        (WebKit::WebsiteDataStore::authenticatorManager):
        * WebKit.xcodeproj/project.pbxproj:

2018-09-25  Chris Dumez  <cdumez@apple.com>

        Revert some of the changes in r236471
        https://bugs.webkit.org/show_bug.cgi?id=189973

        Reviewed by Alex Christensen.

        Revert some of the changes in r236471 as they should not be needed. In particular,
        it should not be possible for the DecidePolicyForNavigationActionSync IPC to get
        processed *before* the DidCreateMainFrame / DidCreateSubframe ones because those
        use IPC::SendOption::DispatchMessageEvenWhenWaitingForSyncReply. They are thus
        processed early when necessary, the same way as synchronous IPC messages.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didCreateMainFrame):
        (WebKit::WebPageProxy::didCreateSubframe):
        (WebKit::WebPageProxy::decidePolicyForNavigationActionAsync):
        (WebKit::WebPageProxy::decidePolicyForNavigationAction):
        (WebKit::WebPageProxy::decidePolicyForNavigationActionSync):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
        * WebProcess/WebPage/WebFrame.cpp:
        (WebKit::WebFrame::createWithCoreMainFrame):
        (WebKit::WebFrame::createSubframe):

2018-09-25  Sihui Liu  <sihui_liu@apple.com>

        Move Service Worker Management from Storage Process to Network Process
        https://bugs.webkit.org/show_bug.cgi?id=189422

        Reviewed by Youenn Fablet.

        After r236035, this is another piece to move functionality of storage process to network process. When 
        we enable Service Workers, network process instead of storage process will be launched. 
        This patch will not change the behavior of Service Worker.

        * CMakeLists.txt:
        * DerivedSources.make:
        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::~NetworkConnectionToWebProcess):
        (WebKit::NetworkConnectionToWebProcess::didReceiveMessage):
        (WebKit::NetworkConnectionToWebProcess::didReceiveSyncMessage):
        (WebKit::NetworkConnectionToWebProcess::didClose):
        (WebKit::NetworkConnectionToWebProcess::unregisterSWConnections):
        (WebKit::NetworkConnectionToWebProcess::establishSWServerConnection):
        * NetworkProcess/NetworkConnectionToWebProcess.h:
        * NetworkProcess/NetworkConnectionToWebProcess.messages.in:
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::didReceiveMessage):
        (WebKit::NetworkProcess::initializeNetworkProcess):
        (WebKit::NetworkProcess::createNetworkConnectionToWebProcess):
        (WebKit::NetworkProcess::addWebsiteDataStore):
        (WebKit::NetworkProcess::destroySession):
        (WebKit::NetworkProcess::fetchWebsiteData):
        (WebKit::NetworkProcess::deleteWebsiteData):
        (WebKit::NetworkProcess::deleteWebsiteDataForOrigins):
        (WebKit::NetworkProcess::connectionToContextProcessFromIPCConnection):
        (WebKit::NetworkProcess::connectionToContextProcessWasClosed):
        (WebKit::NetworkProcess::needsServerToContextConnectionForOrigin const):
        (WebKit::NetworkProcess::swServerForSession):
        (WebKit::NetworkProcess::swOriginStoreForSession):
        (WebKit::NetworkProcess::existingSWOriginStoreForSession const):
        (WebKit::NetworkProcess::serverToContextConnectionForOrigin):
        (WebKit::NetworkProcess::createServerToContextConnection):
        (WebKit::NetworkProcess::didFailFetch):
        (WebKit::NetworkProcess::didNotHandleFetch):
        (WebKit::NetworkProcess::didReceiveFetchResponse):
        (WebKit::NetworkProcess::didReceiveFetchData):
        (WebKit::NetworkProcess::didReceiveFetchFormData):
        (WebKit::NetworkProcess::didFinishFetch):
        (WebKit::NetworkProcess::postMessageToServiceWorkerClient):
        (WebKit::NetworkProcess::postMessageToServiceWorker):
        (WebKit::NetworkProcess::registerSWServerConnection):
        (WebKit::NetworkProcess::unregisterSWServerConnection):
        (WebKit::NetworkProcess::swContextConnectionMayNoLongerBeNeeded):
        (WebKit::NetworkProcess::disableServiceWorkerProcessTerminationDelay):
        (WebKit::NetworkProcess::addServiceWorkerSession):
        * NetworkProcess/NetworkProcess.h:
        (WebKit::NetworkProcess::parentProcessHasServiceWorkerEntitlement const):
        * NetworkProcess/NetworkProcess.messages.in:
        * NetworkProcess/NetworkProcessCreationParameters.cpp:
        (WebKit::NetworkProcessCreationParameters::encode const):
        (WebKit::NetworkProcessCreationParameters::decode):
        * NetworkProcess/NetworkProcessCreationParameters.h:
        * NetworkProcess/ServiceWorker/WebSWOriginStore.cpp: Renamed from Source/WebKit/StorageProcess/ServiceWorker/WebSWOriginStore.cpp.
        (WebKit::WebSWOriginStore::WebSWOriginStore):
        (WebKit::WebSWOriginStore::addToStore):
        (WebKit::WebSWOriginStore::removeFromStore):
        (WebKit::WebSWOriginStore::clearStore):
        (WebKit::WebSWOriginStore::importComplete):
        (WebKit::WebSWOriginStore::registerSWServerConnection):
        (WebKit::WebSWOriginStore::unregisterSWServerConnection):
        (WebKit::WebSWOriginStore::sendStoreHandle):
        (WebKit::WebSWOriginStore::didInvalidateSharedMemory):
        * NetworkProcess/ServiceWorker/WebSWOriginStore.h: Renamed from Source/WebKit/StorageProcess/ServiceWorker/WebSWOriginStore.h.
        * NetworkProcess/ServiceWorker/WebSWServerConnection.cpp: Renamed from Source/WebKit/StorageProcess/ServiceWorker/WebSWServerConnection.cpp.
        (WebKit::WebSWServerConnection::WebSWServerConnection):
        (WebKit::WebSWServerConnection::~WebSWServerConnection):
        (WebKit::WebSWServerConnection::rejectJobInClient):
        (WebKit::WebSWServerConnection::resolveRegistrationJobInClient):
        (WebKit::WebSWServerConnection::resolveUnregistrationJobInClient):
        (WebKit::WebSWServerConnection::startScriptFetchInClient):
        (WebKit::WebSWServerConnection::updateRegistrationStateInClient):
        (WebKit::WebSWServerConnection::fireUpdateFoundEvent):
        (WebKit::WebSWServerConnection::setRegistrationLastUpdateTime):
        (WebKit::WebSWServerConnection::setRegistrationUpdateViaCache):
        (WebKit::WebSWServerConnection::notifyClientsOfControllerChange):
        (WebKit::WebSWServerConnection::updateWorkerStateInClient):
        (WebKit::WebSWServerConnection::cancelFetch):
        (WebKit::WebSWServerConnection::startFetch):
        (WebKit::WebSWServerConnection::postMessageToServiceWorker):
        (WebKit::WebSWServerConnection::scheduleJobInServer):
        (WebKit::WebSWServerConnection::didReceiveFetchResponse):
        (WebKit::WebSWServerConnection::didReceiveFetchData):
        (WebKit::WebSWServerConnection::didReceiveFetchFormData):
        (WebKit::WebSWServerConnection::didFinishFetch):
        (WebKit::WebSWServerConnection::didFailFetch):
        (WebKit::WebSWServerConnection::didNotHandleFetch):
        (WebKit::WebSWServerConnection::postMessageToServiceWorkerClient):
        (WebKit::WebSWServerConnection::matchRegistration):
        (WebKit::WebSWServerConnection::registrationReady):
        (WebKit::WebSWServerConnection::getRegistrations):
        (WebKit::WebSWServerConnection::registerServiceWorkerClient):
        (WebKit::WebSWServerConnection::unregisterServiceWorkerClient):
        (WebKit::WebSWServerConnection::sendToContextProcess):
        * NetworkProcess/ServiceWorker/WebSWServerConnection.h: Renamed from Source/WebKit/StorageProcess/ServiceWorker/WebSWServerConnection.h.
        (WebKit::WebSWServerConnection::ipcConnection const):
        (WebKit::WebSWServerConnection::sessionID const):
        * NetworkProcess/ServiceWorker/WebSWServerConnection.messages.in: Renamed from Source/WebKit/StorageProcess/ServiceWorker/WebSWServerConnection.messages.in.
        * NetworkProcess/ServiceWorker/WebSWServerToContextConnection.cpp: Renamed from Source/WebKit/StorageProcess/ServiceWorker/WebSWServerToContextConnection.cpp.
        (WebKit::WebSWServerToContextConnection::WebSWServerToContextConnection):
        (WebKit::WebSWServerToContextConnection::messageSenderConnection):
        (WebKit::WebSWServerToContextConnection::messageSenderDestinationID):
        (WebKit::WebSWServerToContextConnection::connectionClosed):
        (WebKit::WebSWServerToContextConnection::installServiceWorkerContext):
        (WebKit::WebSWServerToContextConnection::fireInstallEvent):
        (WebKit::WebSWServerToContextConnection::fireActivateEvent):
        (WebKit::WebSWServerToContextConnection::terminateWorker):
        (WebKit::WebSWServerToContextConnection::syncTerminateWorker):
        (WebKit::WebSWServerToContextConnection::findClientByIdentifierCompleted):
        (WebKit::WebSWServerToContextConnection::matchAllCompleted):
        (WebKit::WebSWServerToContextConnection::claimCompleted):
        (WebKit::WebSWServerToContextConnection::didFinishSkipWaiting):
        (WebKit::WebSWServerToContextConnection::connectionMayNoLongerBeNeeded):
        (WebKit::WebSWServerToContextConnection::terminate):
        * NetworkProcess/ServiceWorker/WebSWServerToContextConnection.h: Renamed from Source/WebKit/StorageProcess/ServiceWorker/WebSWServerToContextConnection.h.
        (WebKit::WebSWServerToContextConnection::create):
        (WebKit::WebSWServerToContextConnection::ipcConnection const):
        * NetworkProcess/ServiceWorker/WebSWServerToContextConnection.messages.in: Renamed from Source/WebKit/StorageProcess/ServiceWorker/WebSWServerToContextConnection.messages.in.
        * NetworkProcess/ios/NetworkProcessIOS.mm:
        (WebKit::NetworkProcess::parentProcessHasServiceWorkerEntitlement const):
        * Shared/Storage/StorageProcessCreationParameters.cpp:
        (WebKit::StorageProcessCreationParameters::encode const):
        (WebKit::StorageProcessCreationParameters::decode):
        * Shared/Storage/StorageProcessCreationParameters.h:
        (): Deleted.
        * Shared/WebsiteDataStoreParameters.cpp:
        (WebKit::WebsiteDataStoreParameters::encode const):
        (WebKit::WebsiteDataStoreParameters::decode):
        (WebKit::WebsiteDataStoreParameters::privateSessionParameters):
        * Shared/WebsiteDataStoreParameters.h:
        * Sources.txt:
        * StorageProcess/StorageProcess.cpp:
        (WebKit::StorageProcess::didReceiveMessage):
        (WebKit::StorageProcess::initializeWebsiteDataStore):
        (WebKit::StorageProcess::createStorageToWebProcessConnection):
        (WebKit::StorageProcess::destroySession):
        (WebKit::StorageProcess::fetchWebsiteData):
        (WebKit::StorageProcess::deleteWebsiteData):
        (WebKit::StorageProcess::deleteWebsiteDataForOrigins):
        (WebKit::StorageProcess::connectionToContextProcessFromIPCConnection): Deleted.
        (WebKit::StorageProcess::connectionToContextProcessWasClosed): Deleted.
        (WebKit::StorageProcess::needsServerToContextConnectionForOrigin const): Deleted.
        (WebKit::StorageProcess::swServerForSession): Deleted.
        (WebKit::StorageProcess::swOriginStoreForSession): Deleted.
        (WebKit::StorageProcess::existingSWOriginStoreForSession const): Deleted.
        (WebKit::StorageProcess::serverToContextConnectionForOrigin): Deleted.
        (WebKit::StorageProcess::createServerToContextConnection): Deleted.
        (WebKit::StorageProcess::didFailFetch): Deleted.
        (WebKit::StorageProcess::didNotHandleFetch): Deleted.
        (WebKit::StorageProcess::didReceiveFetchResponse): Deleted.
        (WebKit::StorageProcess::didReceiveFetchData): Deleted.
        (WebKit::StorageProcess::didReceiveFetchFormData): Deleted.
        (WebKit::StorageProcess::didFinishFetch): Deleted.
        (WebKit::StorageProcess::postMessageToServiceWorkerClient): Deleted.
        (WebKit::StorageProcess::postMessageToServiceWorker): Deleted.
        (WebKit::StorageProcess::registerSWServerConnection): Deleted.
        (WebKit::StorageProcess::unregisterSWServerConnection): Deleted.
        (WebKit::StorageProcess::swContextConnectionMayNoLongerBeNeeded): Deleted.
        (WebKit::StorageProcess::disableServiceWorkerProcessTerminationDelay): Deleted.
        * StorageProcess/StorageProcess.h:
        (WebKit::StorageProcess::parentProcessHasServiceWorkerEntitlement const): Deleted.
        (): Deleted.
        * StorageProcess/StorageProcess.messages.in:
        * StorageProcess/StorageToWebProcessConnection.cpp:
        (WebKit::StorageToWebProcessConnection::~StorageToWebProcessConnection):
        (WebKit::StorageToWebProcessConnection::didReceiveMessage):
        (WebKit::StorageToWebProcessConnection::didReceiveSyncMessage):
        (WebKit::StorageToWebProcessConnection::didClose):
        (WebKit::StorageToWebProcessConnection::unregisterSWConnections): Deleted.
        (WebKit::StorageToWebProcessConnection::establishSWServerConnection): Deleted.
        * StorageProcess/StorageToWebProcessConnection.h:
        * StorageProcess/StorageToWebProcessConnection.messages.in:
        * StorageProcess/ios/StorageProcessIOS.mm:
        (WebKit::StorageProcess::parentProcessHasServiceWorkerEntitlement const): Deleted.
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::getNetworkProcessConnection):
        (WebKit::NetworkProcessProxy::networkProcessCrashed):
        (WebKit::NetworkProcessProxy::didCreateNetworkConnectionToWebProcess):
        (WebKit::NetworkProcessProxy::didFinishLaunching):
        (WebKit::NetworkProcessProxy::establishWorkerContextConnectionToNetworkProcess):
        (WebKit::NetworkProcessProxy::establishWorkerContextConnectionToNetworkProcessForExplicitSession):
        * UIProcess/Network/NetworkProcessProxy.h:
        * UIProcess/Network/NetworkProcessProxy.messages.in:
        * UIProcess/ServiceWorkerProcessProxy.cpp:
        (WebKit::ServiceWorkerProcessProxy::start):
        * UIProcess/Storage/StorageProcessProxy.cpp:
        (WebKit::StorageProcessProxy::getStorageProcessConnection):
        (WebKit::StorageProcessProxy::establishWorkerContextConnectionToStorageProcess): Deleted.
        (WebKit::StorageProcessProxy::establishWorkerContextConnectionToStorageProcessForExplicitSession): Deleted.
        * UIProcess/Storage/StorageProcessProxy.h:
        * UIProcess/Storage/StorageProcessProxy.messages.in:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::ensureNetworkProcess):
        (WebKit::WebProcessPool::networkProcessCrashed):
        (WebKit::WebProcessPool::getNetworkProcessConnection):
        (WebKit::WebProcessPool::ensureStorageProcessAndWebsiteDataStore):
        (WebKit::WebProcessPool::establishWorkerContextConnectionToNetworkProcess):
        (WebKit::WebProcessPool::disableServiceWorkerProcessTerminationDelay):
        (WebKit::WebProcessPool::pageBeginUsingWebsiteDataStore):
        (WebKit::WebProcessPool::registerURLSchemeServiceWorkersCanHandle):
        (WebKit::WebProcessPool::postMessageToServiceWorkerClient):
        (WebKit::WebProcessPool::postMessageToServiceWorker):
        (WebKit::WebProcessPool::establishWorkerContextConnectionToStorageProcess): Deleted.
        * UIProcess/WebProcessPool.h:
        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::getNetworkProcessConnection):
        * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:
        (WebKit::WebsiteDataStore::parameters):
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::computeNetworkProcessAccessTypeForDataFetch):
        (WebKit::WebsiteDataStore::fetchDataAndApply):
        (WebKit::computeNetworkProcessAccessTypeForDataRemoval):
        (WebKit::WebsiteDataStore::removeData):
        (WebKit::WebsiteDataStore::storageProcessParameters):
        (WebKit::WebsiteDataStore::parameters):
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/Network/NetworkProcessConnection.cpp:
        (WebKit::NetworkProcessConnection::didReceiveMessage):
        (WebKit::NetworkProcessConnection::didReceiveSyncMessage):
        (WebKit::NetworkProcessConnection::didClose):
        (WebKit::NetworkProcessConnection::serviceWorkerConnectionForSession):
        * WebProcess/Network/NetworkProcessConnection.h:
        (WebKit::NetworkProcessConnection::existingServiceWorkerConnectionForSession):
        * WebProcess/Storage/WebSWClientConnection.cpp:
        (WebKit::WebSWClientConnection::WebSWClientConnection):
        * WebProcess/Storage/WebSWContextManagerConnection.cpp:
        (WebKit::WebSWContextManagerConnection::WebSWContextManagerConnection):
        (WebKit::WebSWContextManagerConnection::serviceWorkerStartedWithMessage):
        (WebKit::WebSWContextManagerConnection::startFetch):
        (WebKit::WebSWContextManagerConnection::didFinishInstall):
        (WebKit::WebSWContextManagerConnection::didFinishActivation):
        (WebKit::WebSWContextManagerConnection::setServiceWorkerHasPendingEvents):
        (WebKit::WebSWContextManagerConnection::skipWaiting):
        (WebKit::WebSWContextManagerConnection::setScriptResource):
        (WebKit::WebSWContextManagerConnection::workerTerminated):
        (WebKit::WebSWContextManagerConnection::findClientByIdentifier):
        (WebKit::WebSWContextManagerConnection::matchAll):
        (WebKit::WebSWContextManagerConnection::claim):
        * WebProcess/Storage/WebSWContextManagerConnection.h:
        * WebProcess/Storage/WebServiceWorkerFetchTaskClient.cpp:
        (WebKit::WebServiceWorkerFetchTaskClient::didReceiveResponse):
        (WebKit::WebServiceWorkerFetchTaskClient::didReceiveData):
        (WebKit::WebServiceWorkerFetchTaskClient::didReceiveFormDataAndFinish):
        (WebKit::WebServiceWorkerFetchTaskClient::didReceiveBlobChunk):
        (WebKit::WebServiceWorkerFetchTaskClient::didFail):
        (WebKit::WebServiceWorkerFetchTaskClient::didFinish):
        (WebKit::WebServiceWorkerFetchTaskClient::didNotHandle):
        * WebProcess/Storage/WebServiceWorkerProvider.cpp:
        (WebKit::WebServiceWorkerProvider::serviceWorkerConnectionForSession):
        (WebKit::WebServiceWorkerProvider::existingServiceWorkerConnectionForSession):
        (WebKit::WebServiceWorkerProvider::handleFetch):
        * WebProcess/Storage/WebToStorageProcessConnection.cpp:
        (WebKit::WebToStorageProcessConnection::didReceiveMessage):
        (WebKit::WebToStorageProcessConnection::didReceiveSyncMessage):
        (WebKit::WebToStorageProcessConnection::didClose):
        (WebKit::WebToStorageProcessConnection::serviceWorkerConnectionForSession): Deleted.
        * WebProcess/Storage/WebToStorageProcessConnection.h:
        (WebKit::WebToStorageProcessConnection::existingServiceWorkerConnectionForSession): Deleted.
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::networkProcessConnectionClosed):
        (WebKit::WebProcess::webToStorageProcessConnectionClosed):
        (WebKit::WebProcess::establishWorkerContextConnectionToNetworkProcess):
        (WebKit::WebProcess::establishWorkerContextConnectionToStorageProcess): Deleted.
        * WebProcess/WebProcess.h:
        (WebKit::WebProcess::existingNetworkProcessConnection):
        (WebKit::WebProcess::existingWebToStorageProcessConnection): Deleted.
        * WebProcess/WebProcess.messages.in:

2018-09-25  Chris Dumez  <cdumez@apple.com>

        UIProcess should process incoming sync IPC from WebProcess when waiting for a sync IPC reply from it
        https://bugs.webkit.org/show_bug.cgi?id=189927

        Reviewed by Alex Christensen.

        UIProcess should process incoming sync IPC from WebProcess when waiting for a sync IPC reply from it
        in order to avoid deadlocks. This is not an issue currently because the WebProcess does process
        incoming sync IPC when waiting for a sync IPC reply. However, we plan to change this in the future
        in order to avoid bugs caused by re-entering WebCore at unsafe times.

        The reason the UIProcess previously did not do out of order sync IPC process was to avoid processing
        a synchronous policy decision IPC for a frameID it did not know about yet, due to the DidCreateMainFrame /
        DidCreateSubframe IPC messages being asynchronous. To address this issue, the decidePolicyForNavigationActionSync
        IPC handler now calls didCreateMainFrame() / didCreateSubframe() as needed if it does not know about
        the frame yet. Note that synchronous policy decisions are rare and are currently only needed by initial
        about:blank and fragment navigations.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didCreateMainFrame):
        (WebKit::WebPageProxy::didCreateSubframe):
        (WebKit::WebPageProxy::decidePolicyForNavigationActionAsync):
        (WebKit::WebPageProxy::decidePolicyForNavigationAction):
        (WebKit::WebPageProxy::decidePolicyForNavigationActionSync):
        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::initializeConnection):

2018-09-25  Chris Dumez  <cdumez@apple.com>

        Extending the lifetime of a NetworkProcessProxy / StorageProcessProxy may cause it to have a stale WebProcessPool pointer
        https://bugs.webkit.org/show_bug.cgi?id=189851
        <rdar://problem/44696263>

        Reviewed by Alex Christensen.

        Extending the lifetime of a NetworkProcessProxy / StorageProcessProxy may cause it to have a stale WebProcessPool pointer:
        - NetworkProcessProxy::m_processPool
        - StorageProcessProxy::m_processPool

        Those data members are C++ references because it is expected that the WebProcessPool owns the NetworkProcessProxy and
        StorageProcessProxy. However, since NetworkProcessProxy / StorageProcessProxy are refcounted, it has happened that code
        extends the lifetime of those past their process pool, leading to stale prrocess pool usage. The fix for these crashes
        so far as been to ref the WebProcessPool instead of the NetworkProcessProxy / StorageProcessProxy. However, it is very
        tempting for people to simply ref the NetworkProcessProxy / StorageProcessProxy given that they are refcounted.
        For this reason, this patch updates NetworkProcessProxy / StorageProcessProxy so that they are no longer RefCounted
        and so that the WebProcessPool truly owns them via std::unique_ptr<>.

        * UIProcess/ChildProcessProxy.h:
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::networkProcessCrashed):
        (WebKit::NetworkProcessProxy::didClose):
        (WebKit::NetworkProcessProxy::create): Deleted.
        * UIProcess/Network/NetworkProcessProxy.h:
        (WebKit::NetworkProcessProxy::throttler): Deleted.
        (WebKit::NetworkProcessProxy::processPool): Deleted.
        * UIProcess/Plugins/PluginProcessProxy.h:
        (WebKit::PluginProcessProxy::pluginProcessAttributes const): Deleted.
        (WebKit::PluginProcessProxy::pluginProcessToken const): Deleted.
        (WebKit::PluginProcessProxy::isValid const): Deleted.
        * UIProcess/Storage/StorageProcessProxy.cpp:
        (WebKit::StorageProcessProxy::create): Deleted.
        * UIProcess/Storage/StorageProcessProxy.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::ensureNetworkProcess):
        (WebKit::WebProcessPool::ensureStorageProcessAndWebsiteDataStore):
        (WebKit::WebProcessPool::establishWorkerContextConnectionToStorageProcess):
        * UIProcess/WebProcessPool.h:
        * UIProcess/WebProcessProxy.h:

2018-09-25  Alex Christensen  <achristensen@webkit.org>

        NetworkLoad::didReceiveResponse should pass its completion handler to its client
        https://bugs.webkit.org/show_bug.cgi?id=188701

        Reviewed by Michael Catanzaro.

        Right now we have a confusing enum ShouldContinueDidReceiveResponse and a complicated flow
        that involves many objects and implicitly using NetworkLoad's destructor as part of the
        loading flow.  This makes the responsibilities of the objects clear.

        * NetworkProcess/Downloads/PendingDownload.cpp:
        (WebKit::PendingDownload::didReceiveResponse):
        * NetworkProcess/Downloads/PendingDownload.h:
        * NetworkProcess/NetworkCORSPreflightChecker.cpp:
        (WebKit::NetworkCORSPreflightChecker::didReceiveResponse):
        (WebKit::NetworkCORSPreflightChecker::didReceiveResponseNetworkSession): Deleted.
        * NetworkProcess/NetworkCORSPreflightChecker.h:
        * NetworkProcess/NetworkDataTask.cpp:
        (WebKit::NetworkDataTask::didReceiveResponse):
        * NetworkProcess/NetworkDataTask.h:
        * NetworkProcess/NetworkLoad.cpp:
        (WebKit::NetworkLoad::~NetworkLoad):
        (WebKit::NetworkLoad::convertTaskToDownload):
        (WebKit::NetworkLoad::didReceiveResponse):
        (WebKit::NetworkLoad::notifyDidReceiveResponse):
        (WebKit::NetworkLoad::continueDidReceiveResponse): Deleted.
        (WebKit::NetworkLoad::didReceiveResponseNetworkSession): Deleted.
        * NetworkProcess/NetworkLoad.h:
        * NetworkProcess/NetworkLoadClient.h:
        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::~NetworkResourceLoader):
        (WebKit::NetworkResourceLoader::didReceiveResponse):
        (WebKit::NetworkResourceLoader::didFinishWithRedirectResponse):
        (WebKit::NetworkResourceLoader::continueDidReceiveResponse):
        * NetworkProcess/NetworkResourceLoader.h:
        * NetworkProcess/PingLoad.cpp:
        (WebKit::PingLoad::didReceiveResponse):
        (WebKit::PingLoad::didReceiveResponseNetworkSession): Deleted.
        * NetworkProcess/PingLoad.h:
        * NetworkProcess/PreconnectTask.cpp:
        (WebKit::PreconnectTask::didReceiveResponse):
        * NetworkProcess/PreconnectTask.h:
        * NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp:
        (WebKit::NetworkCache::SpeculativeLoad::didReceiveResponse):
        * NetworkProcess/cache/NetworkCacheSpeculativeLoad.h:
        * NetworkProcess/capture/NetworkDataTaskReplay.cpp:
        (WebKit::NetworkCapture::NetworkDataTaskReplay::didReceiveResponse):

2018-09-24  Alex Christensen  <achristensen@webkit.org>

        Build fix.
        https://bugs.webkit.org/show_bug.cgi?id=189929

        * WebProcess/InjectedBundle/API/c/WKBundleFileHandleRef.h:

2018-09-24  Alex Christensen  <achristensen@webkit.org>

        Prepare to replace WKBundleFileHandleCreateWithPath with a version that takes a WKBundlePageRef
        https://bugs.webkit.org/show_bug.cgi?id=189929

        Reviewed by Andy Estes.

        This will be needed for rdar://problem/24576194

        * WebProcess/InjectedBundle/API/c/WKBundleFileHandleRef.cpp:
        (WKBundleFileHandleCreateWithPathForPage):
        * WebProcess/InjectedBundle/API/c/WKBundleFileHandleRef.h:

2018-09-24  Alex Christensen  <achristensen@webkit.org>

        Begin deprecating C API
        https://bugs.webkit.org/show_bug.cgi?id=189810

        Reviewed by Andy Estes.

        * Shared/API/c/WKDeprecated.h: Added.
        * UIProcess/API/C/WKPage.h:
        * UIProcess/API/Cocoa/WKBrowsingContextController.mm:
        (setUpPagePolicyClient):
        (-[WKBrowsingContextController setPolicyDelegate:]):
        * WebKit.xcodeproj/project.pbxproj:

2018-09-24  Chris Dumez  <cdumez@apple.com>

        Unreviewed, rolling out r236368.

        Caused WebKit.NetworkProcessCrashWithPendingConnection API
        test to crash (Bug 189926)

        Reverted changeset:

        "Extending the lifetime of a NetworkProcessProxy /
        StorageProcessProxy may cause it to have a stale
        WebProcessPool pointer"
        https://bugs.webkit.org/show_bug.cgi?id=189851
        https://trac.webkit.org/changeset/236368

2018-09-21  Simon Fraser  <simon.fraser@apple.com>

        Remove the old "AcceleratedCompositingForOverflowScroll" code
        https://bugs.webkit.org/show_bug.cgi?id=189870

        Reviewed by Zalan Bujtas.

        The "AcceleratedCompositingForOverflowScroll" code was added to allow overflow:scroll to use
        composited scrolling if an overflow:scroll could be made a stacking context without affecting
        z-order. We need overflow:scroll to be accelerated always, so a different approach is needed.
        Remove this old code (unused by any platform?) to make working on new code easier.

        * Shared/WebPreferences.yaml:
        * UIProcess/API/C/WKPreferences.cpp:
        (WKPreferencesSetAcceleratedCompositingForOverflowScrollEnabled): Deleted.
        (WKPreferencesGetAcceleratedCompositingForOverflowScrollEnabled): Deleted.
        * UIProcess/API/C/WKPreferencesRefPrivate.h:

2018-09-24  Chris Dumez  <cdumez@apple.com>

        Do not do early processing of incoming sync IPC unless we're waiting for a sync IPC reply
        https://bugs.webkit.org/show_bug.cgi?id=186941

        Reviewed by Alex Christensen.

        The comment was claiming we were processing incoming sync messages while waiting for a
        sync IPC reply to prevent deadlocks. However, the code was failing to check if we were
        waiting for a sync IPC reply. As a result, incoming sync IPC messages would get processed
        early no matter what, jumping the line. This was the source of the flakiness in the blob
        tests since the IPC to register the blob in the network process was async and the follow-up
        IPC to ask the network process for the blob size was sync. The sync message to get the blob
        size would jump the line and get processed before the async message to register the blob.
        As a result, the network process would not know about the blob yet and return size 0. Of
        course, this could happen if the network process was sending sync IPC at the time. However,
        the network process never sends any sync IPC and therefore, should never process incoming
        IPC messages out of order.

        * Platform/IPC/Connection.cpp:
        (IPC::Connection::processIncomingMessage):

2018-09-24  Daniel Bates  <dabates@apple.com>

        [iOS] Key code is 0 for many hardware keyboard keys
        https://bugs.webkit.org/show_bug.cgi?id=189604

        Reviewed by Wenson Hsieh.

        For a hardware keyboard-generated event (an event with a non-nill event._hidEvent) pass
        the key code for the event. Otherwise, do what we do now and pass 0 as the event is likely
        a software keyboard-generated event.

        * Platform/spi/ios/UIKitSPI.h: Add some more SPI.
        * UIProcess/ios/WKContentViewInteraction.mm:
        (-[WKContentView handleKeyEvent:]):

2018-09-24  Brian Burg  <bburg@apple.com>

        Web Inspector: topContentInset is not accounted for when inspecting a WKWebView and docked to side
        https://bugs.webkit.org/show_bug.cgi?id=189859

        Reviewed by Joseph Pecoraro.

        * UIProcess/mac/WebInspectorProxyMac.mm:
        (WebKit::WebInspectorProxy::inspectedViewFrameDidChange):
        Add special cases for inspecting a WKWebView. We already special-case for WKView.

2018-09-24  Miguel Gomez  <magomez@igalia.com>

        [GTK][WPE] Compositing indicators are not working
        https://bugs.webkit.org/show_bug.cgi?id=189915

        Reviewed by Žan Doberšek.

        Pass the debugBorder and repaintCount parameters to the TextureMapperLayer when required.

        * Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:
        (WebKit::CoordinatedGraphicsScene::updateSceneState):

2018-09-21  Dean Jackson  <dino@apple.com>

        Add PointerEvent, plus feature flag, plus Web Platform Tests
        https://bugs.webkit.org/show_bug.cgi?id=189867
        <rdar://problem/44697384>

        Reviewed by Simon Fraser.

        Add PointerEvents as an experimental feature.

        * Shared/WebPreferences.yaml:

2018-09-21  Brian Burg  <bburg@apple.com>

        Web Inspector: dock buttons disappear if Web Inspector goes fullscreen
        https://bugs.webkit.org/show_bug.cgi?id=189865
        <rdar://problem/42600534>

        Reviewed by Matt Baker.

        When a fullscreen Safari tab has a docked Inspector, and the "detach" button
        is clicked, Inspector goes into its own fullscreen window. In that window,
        there are no buttons for docking to side or bottom.

        It turns out that we always send setDockingUnavailable(true) if the inspector
        window is fullscreen. This eventually causes the inspector to reflect that
        by hiding the docking-related buttons.

        * UIProcess/mac/WebInspectorProxyMac.mm:
        (WebKit::WebInspectorProxy::platformCanAttach):
        This early exit does not seem to serve any purpose, so remove it.

2018-09-21  Chris Dumez  <cdumez@apple.com>

        Extending the lifetime of a NetworkProcessProxy / StorageProcessProxy may cause it to have a stale WebProcessPool pointer
        https://bugs.webkit.org/show_bug.cgi?id=189851

        Reviewed by Alex Christensen.

        Extending the lifetime of a NetworkProcessProxy / StorageProcessProxy may cause it to have a stale WebProcessPool pointer:
        - NetworkProcessProxy::m_processPool
        - StorageProcessProxy::m_processPool

        Those data members are C++ references because it is expected that the WebProcessPool owns the NetworkProcessProxy and
        StorageProcessProxy. However, since NetworkProcessProxy / StorageProcessProxy are refcounted, it has happened that code
        extends the lifetime of those past their process pool, leading to stale prrocess pool usage. The fix for these crashes
        so far as been to ref the WebProcessPool instead of the NetworkProcessProxy / StorageProcessProxy. However, given how
        error-prone this is, this patch updates NetworkProcessProxy / StorageProcessProxy so that they forward their refcounting
        to the WebProcessPool.

        * UIProcess/ChildProcessProxy.h:
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::ref):
        (WebKit::NetworkProcessProxy::deref):
        (WebKit::NetworkProcessProxy::didClose):
        (WebKit::NetworkProcessProxy::updatePrevalentDomainsToBlockCookiesFor):
        (WebKit::NetworkProcessProxy::create): Deleted.
        * UIProcess/Network/NetworkProcessProxy.h:
        * UIProcess/Plugins/PluginProcessProxy.h:
        * UIProcess/Storage/StorageProcessProxy.cpp:
        (WebKit::StorageProcessProxy::ref):
        (WebKit::StorageProcessProxy::deref):
        (WebKit::StorageProcessProxy::create): Deleted.
        * UIProcess/Storage/StorageProcessProxy.h:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::ensureNetworkProcess):
        (WebKit::WebProcessPool::ensureStorageProcessAndWebsiteDataStore):
        * UIProcess/WebProcessPool.h:
        * UIProcess/WebProcessProxy.h:

2018-09-21  Alex Christensen  <achristensen@webkit.org>

        Use a Variant for FormDataElement
        https://bugs.webkit.org/show_bug.cgi?id=189777

        Reviewed by Chris Dumez.

        * NetworkProcess/NetworkResourceLoadParameters.cpp:
        (WebKit::NetworkResourceLoadParameters::encode const):
        * NetworkProcess/NetworkResourceLoader.cpp:
        * Shared/SessionState.h:
        * WebProcess/WebCoreSupport/SessionStateConversion.cpp:
        (WebKit::toHTTPBody):

2018-09-21  Alex Christensen  <achristensen@webkit.org>

        Simply authentication code even more!
        https://bugs.webkit.org/show_bug.cgi?id=189719

        Reviewed by Andy Estes.

        Just when you thought it couldn't get simpler and more elegant, it can!

        * NetworkProcess/Downloads/Download.cpp:
        * NetworkProcess/NetworkCORSPreflightChecker.cpp:
        * NetworkProcess/NetworkLoad.cpp:
        * NetworkProcess/PingLoad.cpp:
        * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        * Shared/Authentication/AuthenticationChallengeDisposition.h: Added.
        * Shared/Authentication/AuthenticationManager.cpp:
        (WebKit::AuthenticationManager::completeAuthenticationChallenge):
        (WebKit::AuthenticationManager::useCredentialForChallenge): Deleted.
        (WebKit::AuthenticationManager::useCredentialForSingleChallenge): Deleted.
        (WebKit::AuthenticationManager::continueWithoutCredentialForChallenge): Deleted.
        (WebKit::AuthenticationManager::continueWithoutCredentialForSingleChallenge): Deleted.
        (WebKit::AuthenticationManager::cancelChallenge): Deleted.
        (WebKit::AuthenticationManager::cancelSingleChallenge): Deleted.
        (WebKit::AuthenticationManager::performDefaultHandling): Deleted.
        (WebKit::AuthenticationManager::performDefaultHandlingForSingleChallenge): Deleted.
        (WebKit::AuthenticationManager::rejectProtectionSpaceAndContinue): Deleted.
        (WebKit::AuthenticationManager::rejectProtectionSpaceAndContinueForSingleChallenge): Deleted.
        * Shared/Authentication/AuthenticationManager.h:
        * Shared/Authentication/AuthenticationManager.messages.in:
        * Shared/Authentication/cocoa/AuthenticationManagerCocoa.mm:
        (WebKit::AuthenticationManager::initializeConnection):
        * UIProcess/API/C/WKAuthenticationDecisionListener.cpp:
        (WKAuthenticationDecisionListenerUseCredential):
        * UIProcess/API/Cocoa/WKNSURLAuthenticationChallenge.mm:
        (-[WKNSURLAuthenticationChallengeSender continueWithoutCredentialForAuthenticationChallenge:]):
        * UIProcess/API/glib/WebKitAuthenticationRequest.cpp:
        (webkit_authentication_request_authenticate):
        * UIProcess/Authentication/AuthenticationChallengeProxy.cpp:
        (WebKit::AuthenticationChallengeProxy::AuthenticationChallengeProxy):
        * UIProcess/Authentication/AuthenticationDecisionListener.cpp:
        (WebKit::AuthenticationDecisionListener::AuthenticationDecisionListener):
        (WebKit::AuthenticationDecisionListener::~AuthenticationDecisionListener):
        (WebKit::AuthenticationDecisionListener::useCredential):
        (WebKit::AuthenticationDecisionListener::cancel):
        (WebKit::AuthenticationDecisionListener::performDefaultHandling):
        (WebKit::AuthenticationDecisionListener::rejectProtectionSpaceAndContinue):
        * UIProcess/Authentication/AuthenticationDecisionListener.h:
        (WebKit::AuthenticationDecisionListener::create):
        * UIProcess/Cocoa/DownloadClient.mm:
        (WebKit::DownloadClient::didReceiveAuthenticationChallenge):
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::NavigationClient::didReceiveAuthenticationChallenge):
        * WebKit.xcodeproj/project.pbxproj:

2018-09-21  Chris Dumez  <cdumez@apple.com>

        Regression(Mojave): Resuming a WK2 download crashes
        https://bugs.webkit.org/show_bug.cgi?id=189838
        <rdar://problem/44618538>

        Reviewed by Alex Christensen.

        Update our workaround to tweak the download resume data to include the actual download path so that
        it works on macOS Mojave and up. Unfortunately, the resume data internal representation has changed,
        causing our previous workaround to fail.

        * NetworkProcess/Downloads/cocoa/DownloadCocoa.mm:
        (WebKit::Download::resume):

2018-09-21  Youenn Fablet  <youenn@apple.com>

        Whitelist two additional plugins
        https://bugs.webkit.org/show_bug.cgi?id=189832
        <rdar://problem/44628127>

        Reviewed by Brent Fulgham.

        * UIProcess/Plugins/mac/PluginInfoStoreMac.mm:
        (WebKit::PluginInfoStore::shouldAllowPluginToRunUnsandboxed):

2018-09-21  Woodrow Wang  <woodrow_wang@apple.com>

        Clear persistent storage between tests for resourceLoadStatistics
        https://bugs.webkit.org/show_bug.cgi?id=189684
        <rdar://problem/44540099>

        Reviewed by Chris Dumez.

        * UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
        (WKWebsiteDataStoreStatisticsResetToConsistentState):
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::didClose):
        (WebKit::NetworkProcessProxy::updatePrevalentDomainsToBlockCookiesFor):
        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::scheduleClearInMemoryAndPersistent):

        Remove function only called in testing for resetting statistics to consistent
        state. 

        (WebKit::WebResourceLoadStatisticsStore::scheduleClearInMemory): Deleted.

        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::updatePrevalentDomainsToBlockCookiesFor):
        (WebKit::WebsiteDataStore::removeAllStorageAccessHandler):

2018-09-20  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r236289.

        Caused 8 TestWebKitAPI.ContentFiltering test failures.

        Reverted changeset:

        "InjectedBundle parameters often need initialization function
        called before unarchiving"
        https://bugs.webkit.org/show_bug.cgi?id=189709
        https://trac.webkit.org/changeset/236289

2018-09-20  Youenn Fablet  <youenn@apple.com>

        Allow additional plug-ins to run unsandboxed
        https://bugs.webkit.org/show_bug.cgi?id=189791
        <rdar://problem/44628127>

        Reviewed by Brent Fulgham.

        * UIProcess/Plugins/mac/PluginInfoStoreMac.mm:
        (WebKit::PluginInfoStore::shouldAllowPluginToRunUnsandboxed):

2018-09-20  Brent Fulgham  <bfulgham@apple.com>

        InjectedBundle parameters often need initialization function called before unarchiving
        https://bugs.webkit.org/show_bug.cgi?id=189709
        <rdar://problem/44573653>

        Reviewed by Chris Dumez.

        Handle the case where the InjectedBundle parameters do not successfully decode because they contain
        an unexpected class from the embedding program. If this happens, try decoding the bundle parameters
        after the bundle initialiation function runs, which gives the embedding program the opportunity to
        register additional classes that are safe for serialization.
        
        Create a new 'decodeBundleParameters' method that contains the logic that used to live in 'initialize'.
        This new method returns 'true' if the serialization was successful, otherwise it returns false.

        Revise 'initialize' to call this new method and check the return value. If it fails, try decoding the
        bundle parameters after the bundle's initialization function is called.

        * WebProcess/InjectedBundle/InjectedBundle.h:
        * WebProcess/InjectedBundle/mac/InjectedBundleMac.mm:
        (WebKit::InjectedBundle::initialize): Use the new method.
        (WebKit::InjectedBundle::decodeBundleParameters): Added.
        (WebKit::InjectedBundle::setBundleParameters): Use 'decodeObjectOfClasses' with the more complete
        'classesForCoder' method to unarchive the passed bundle parameters, rather than the
        NSDictionary-specific method, since InjectedBundles often encode other types of objects, and the
        NSDictionary object may itself hold other kinds of objects.

2018-09-20  Jer Noble  <jer.noble@apple.com>

        Enable Modern EME by default
        https://bugs.webkit.org/show_bug.cgi?id=189794

        Reviewed by Jon Lee.

        * Shared/WebPreferences.yaml:

2018-09-20  Thibault Saunier  <tsaunier@igalia.com>

        [GTK][WPE] Make sure MediaDeviceEnabled and PeerConnectionEnabled are always synced with enable-media-stream
        https://bugs.webkit.org/show_bug.cgi?id=188704

        By default m_isMediaDevicesEnabled and m_isScreenCaptureEnabled are false but
        m_isMediaStreamEnabled is true meaning that in the WPE minibrowser getUserMedia
        was disabled even if we explicitly set `"enable-media-stream", TRUE`.

        Reviewed by Michael Catanzaro.

        * UIProcess/API/glib/WebKitSettings.cpp:
        (webKitSettingsConstructed):

2018-09-20  Justin Michaud  <justin_michaud@apple.com>

        Implement CSS Custom Properties and Values Skeleton
        https://bugs.webkit.org/show_bug.cgi?id=189694

        Reviewed by Simon Fraser.

        Add feature flag for CSS custom properties and values api

        * Shared/WebPreferences.yaml:
        * WebProcess/InjectedBundle/InjectedBundle.cpp:
        (WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner):

2018-09-19  Dean Jackson  <dino@apple.com>

        Temporarily move fullscreen back to experimental features
        https://bugs.webkit.org/show_bug.cgi?id=189770
        <rdar://problem/44619282>

        Revert this change now that there is a commit to cherry-pick.

        * Shared/WebPreferences.yaml:

2018-09-20  Chris Dumez  <cdumez@apple.com>

        Unreviewed crash fix after r236226.

        We need to protect |this| in WebProcessProxy::requestTermination().

        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::requestTermination):

2018-09-20  Antti Koivisto  <antti@apple.com>

        REGRESSION (PSON): White or Black flash occurs when process swapping on navigation on Mac
        https://bugs.webkit.org/show_bug.cgi?id=189663
        <rdar://problem/44184955>

        Reviewed by Geoff Garen and Chris Dumez.

        We need to keep the layer tree of the previous page alive and visible until we have something
        to render on the new page. With PSON on Mac this means that we should keep displaying the
        layer tree from the previus process.

        This patch moves the management of 'attaching' the drawing area (Mac only concept) from web process
        to UI process. This is when we parent the layer tree to the view root layer. It also ensures that
        the layer tree is not deleted too early on process swap and that it still eventually gets deleted.

        * UIProcess/DrawingAreaProxy.h:
        (WebKit::DrawingAreaProxy::attachInWebProcess):
        * UIProcess/SuspendedPageProxy.cpp:
        (WebKit::messageNamesToIgnoreWhileSuspended):
        (WebKit::SuspendedPageProxy::tearDownDrawingAreaInWebProcess):

        We no longer tear down drawing area (layer tree) for suspended pages automatically. Send an explicit
        message for it.

        * UIProcess/SuspendedPageProxy.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didCompletePageTransition):

        Attach the drawing area if appropriate.

        (WebKit::WebPageProxy::resetStateAfterProcessExited):

        Call PageClien::processWillSwap instead of processDidExit when appropriate.

        (WebKit::WebPageProxy::enterAcceleratedCompositingMode):

        This is called when we have switched to the new layer tree.
        Tear down the drawing area in the previus process.

        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * UIProcess/ios/PageClientImplIOS.h:
        * UIProcess/ios/PageClientImplIOS.mm:
        (WebKit::PageClientImpl::processWillSwap):

        On iOS this just call processDidExit for now.

        * UIProcess/mac/PageClientImplMac.h:
        * UIProcess/mac/PageClientImplMac.mm:
        (WebKit::PageClientImpl::processWillSwap):
        (WebKit::PageClientImpl::processDidExit):

        Add processWillSwap separately from processDidExit. They are currently the same
        except processWillSwap doesn't clear the root layer.

        * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.h:
        * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm:
        (WebKit::TiledCoreAnimationDrawingAreaProxy::attachInWebProcess):

        Send a message to the web process to attach the drawing area.

        * WebProcess/WebPage/DrawingArea.h:
        (WebKit::DrawingArea::attach):
        (WebKit::DrawingArea::attachDrawingArea): Deleted.

        Rename to be less redundant.

        * WebProcess/WebPage/DrawingArea.messages.in:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::reinitializeWebPage):

        Don't attach drawing area automatically. It will be done by a message from UI process.

        (WebKit::WebPage::setLayerTreeStateIsFrozen):

        Layer tree is always frozen in a suspended process (if it exists).

        (WebKit::WebPage::didReceivePolicyDecision):

        Suspend immediately when receiving policy decision to avoid flash on 'about:blank' loading.

        (WebKit::WebPage::didStartPageTransition):
        (WebKit::WebPage::didCompletePageTransition):

        Notify UI process of transition completion.

        (WebKit::WebPage::setIsSuspended):
        (WebKit::WebPage::tearDownDrawingAreaForSuspend):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
        (WebKit::TiledCoreAnimationDrawingArea::TiledCoreAnimationDrawingArea):

        Don't attach drawing area automatically. It will be done by a message from UI process.

        (WebKit::TiledCoreAnimationDrawingArea::attach):
        (WebKit::TiledCoreAnimationDrawingArea::attachDrawingArea): Deleted.

2018-09-20  Tomas Popela  <tpopela@redhat.com>

        [GTK] Always prints in portrait when landscape is requested
        https://bugs.webkit.org/show_bug.cgi?id=189543

        Reviewed by Michael Catanzaro.

        We have to change the surface size based on the requested orientation.
        Otherwise only portrait will be printed as it's hardcoded.

        * WebProcess/WebPage/gtk/WebPrintOperationGtk.cpp:

2018-09-19  Dean Jackson  <dino@grorg.org>

        Temporarily move fullscreen back to experimental features
        https://bugs.webkit.org/show_bug.cgi?id=189770
        <rdar://problem/44619282>

        Reviewed by Simon Fraser.

        Make fullscreen an experimental feature again.

        * Shared/WebPreferences.yaml:

2018-09-19  Dawei Fenton  <realdawei@apple.com>

        Unreviewed, rolling out r236229.

        caused API timouts on mac and ios

        Reverted changeset:

        "Clear persistent storage between tests for
        resourceLoadStatistics"
        https://bugs.webkit.org/show_bug.cgi?id=189684
        https://trac.webkit.org/changeset/236229

2018-09-19  Alex Christensen  <achristensen@webkit.org>

        REGRESSION(236154) C API clients not using WKPageSetPageNavigationClient couldn't complete HTTPS requests
        https://bugs.webkit.org/show_bug.cgi?id=189771

        Reviewed by Tim Horton.

        * UIProcess/API/APINavigationClient.h:
        (API::NavigationClient::didReceiveAuthenticationChallenge):
        Perform default behavior if there's an authentication challenge but we're using the default navigation client.
        I wish we had infrastructure to test this but WebKitTestRunner uses WKPageSetNavigationClient
        and we don't have the ability to do networking from API tests.  This is a growing problem I intend to solve.

2018-09-19  Woodrow Wang  <woodrow_wang@apple.com>

        Clear persistent storage between tests for resourceLoadStatistics
        https://bugs.webkit.org/show_bug.cgi?id=189684
        <rdar://problem/44540099>

        Reviewed by Chris Dumez.

        * UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
        (WKWebsiteDataStoreStatisticsResetToConsistentState):
        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::scheduleClearInMemoryAndPersistent):

        Remove function only called in testing for resetting statistics to consistent
        state. 
        
        (WebKit::WebResourceLoadStatisticsStore::scheduleClearInMemory): Deleted.

2018-09-19  Chris Dumez  <cdumez@apple.com>

        Crash under WebPageProxy::decidePolicyForNavigationAction()
        https://bugs.webkit.org/show_bug.cgi?id=189763
        <rdar://problem/44597111>

        Reviewed by Alex Christensen.

        Update WebNavigationState::navigation() / WebNavigationState::takeNavigation()
        to return a pointer instead of a reference as we have evidence that they can
        return null. I kept the debug assertions to try and catch the cases where we
        return null but at least we stop crashing in release builds.

        * UIProcess/WebNavigationState.cpp:
        (WebKit::WebNavigationState::navigation):
        (WebKit::WebNavigationState::takeNavigation):
        * UIProcess/WebNavigationState.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didStartProvisionalLoadForFrame):
        (WebKit::WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrame):
        (WebKit::WebPageProxy::didCommitLoadForFrame):
        (WebKit::WebPageProxy::didFinishDocumentLoadForFrame):
        (WebKit::WebPageProxy::didFinishLoadForFrame):
        (WebKit::WebPageProxy::didFailLoadForFrame):
        (WebKit::WebPageProxy::didSameDocumentNavigationForFrame):
        (WebKit::WebPageProxy::decidePolicyForNavigationAction):
        (WebKit::WebPageProxy::decidePolicyForResponse):

2018-09-19  Chris Dumez  <cdumez@apple.com>

        Crash under WebProcessProxy::suspendedPageWasDestroyed(WebKit::SuspendedPageProxy&)
        https://bugs.webkit.org/show_bug.cgi?id=189721
        <rdar://problem/44359788>

        Reviewed by Geoffrey Garen.

        Fix crash when destroying a SuspendedPageProxy whose WebProcessProxy was already
        destroyed.

        * UIProcess/SuspendedPageProxy.cpp:
        (WebKit::SuspendedPageProxy::SuspendedPageProxy):
        (WebKit::SuspendedPageProxy::~SuspendedPageProxy):
        * UIProcess/SuspendedPageProxy.h:
        (WebKit::SuspendedPageProxy::process const):
        Update SuspendedPageProxy::m_process to be a RefPtr<> instead of a raw pointer, similarly
        to what we do in WebPageProxy. Relying on the WebProcessProxy to not get destroyed is
        risky as this crash demonstrates.

        * UIProcess/WebProcessProxy.cpp:
        (WebKit::WebProcessProxy::requestTermination):
        When a WebProcessProxy is terminated (by client or WebKit due to memory / cpu usage), call
        webProcessDidClose() on all SuspendedPages, similarly to what we do in case of a crash in
        processDidTerminateOrFailedToLaunch(). Failing to do so means that the SuspendedPageProxy
        may still have a pointer to this WebProcessProxy, even though WebProcessProxy::shutDown()
        has been called (which may destroy the WebProcessProxy).

2018-09-19  John Wilander  <wilander@apple.com>

        Resource Load Statistics: Add optional cap on partitioned cache max age
        https://bugs.webkit.org/show_bug.cgi?id=189711
        <rdar://problem/39246837>

        Reviewed by Antti Koivisto and Chris Dumez.

        These changes add the capability to set a max age cap for prevalent resources
        and consults it when retrieving cache entries. If an entry is capped and found
        to be too old, it will not be used but instead removed from the cache.

        This functionality is off by default because no cap is set by default.

        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::setCacheMaxAgeCapForPrevalentResources):
        (WebKit::NetworkProcess::resetCacheMaxAgeCapForPrevalentResources):
            Infrastructure for testing.
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:
        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::retrieveCacheEntry):
            Now sends in the session ID in the retrieve call.
        * NetworkProcess/cache/NetworkCache.cpp:
        (WebKit::NetworkCache::hasReachedPrevalentResourceAgeCap):
            Static convenience function.
        (WebKit::NetworkCache::makeUseDecision):
            Now receives an optional maxAge parameter and checks
            hasReachedPrevalentResourceAgeCap() first.
        (WebKit::NetworkCache::Cache::retrieve):
            Now takes a session ID.
        * NetworkProcess/cache/NetworkCache.h:
        * NetworkProcess/cache/NetworkCacheStatistics.cpp:
        (WebKit::NetworkCache::cachedEntryReuseFailureToDiagnosticKey):
            Added UseDecision::NoDueToPrevalentResourceAgeCap which causes a
            return of WebCore::DiagnosticLoggingKeys::otherKey().
        * UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
        (WKWebsiteDataStoreSetStatisticsCacheMaxAgeCap):
        (WKWebsiteDataStoreStatisticsResetToConsistentState):
            Infrastructure for testing.
        * UIProcess/API/C/WKWebsiteDataStoreRef.h:
        * UIProcess/Cocoa/ResourceLoadStatisticsMemoryStoreCocoa.mm:
        (WebKit::ResourceLoadStatisticsMemoryStore::registerUserDefaultsIfNeeded):
            Now supports a user default ResourceLoadStatisticsCacheMaxAgeCap.
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::hasStorageAccessForFrame):
        (WebKit::NetworkProcessProxy::grantStorageAccess):
        (WebKit::NetworkProcessProxy::removeAllStorageAccess):
        (WebKit::NetworkProcessProxy::getAllStorageAccessEntries):
        (WebKit::NetworkProcessProxy::setCacheMaxAgeCapForPrevalentResources):
        (WebKit::NetworkProcessProxy::didSetCacheMaxAgeCapForPrevalentResources):
        (WebKit::NetworkProcessProxy::resetCacheMaxAgeCapForPrevalentResources):
        (WebKit::NetworkProcessProxy::didResetCacheMaxAgeCapForPrevalentResources):
        (WebKit::nextRequestStorageAccessContextId): Deleted.
            Deleted this to make all code use the generic generateCallbackID().
        * UIProcess/Network/NetworkProcessProxy.h:
        * UIProcess/Network/NetworkProcessProxy.messages.in:
            Used to transfer the setting from the UI process to the network process. 
        * UIProcess/ResourceLoadStatisticsMemoryStore.cpp:
        (WebKit::ResourceLoadStatisticsMemoryStore::setCacheMaxAgeCap):
        * UIProcess/ResourceLoadStatisticsMemoryStore.h:
        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::setCacheMaxAgeCap):
        * UIProcess/WebResourceLoadStatisticsStore.h:
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::WebsiteDataStore::setCacheMaxAgeCapForPrevalentResources):
        (WebKit::WebsiteDataStore::resetCacheMaxAgeCapForPrevalentResources):
        * UIProcess/WebsiteData/WebsiteDataStore.h:

2018-09-18  Brent Fulgham  <bfulgham@apple.com>

        [iOS] Allow WebContent process to check the "Protocol Characteristics" of files to which it has access
        https://bugs.webkit.org/show_bug.cgi?id=189712
        <rdar://problem/44386429>

        Reviewed by Alex Christensen.

        * Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:

2018-09-18  Chris Dumez  <cdumez@apple.com>

        [iOS] Crash under WebPageProxy::navigationGestureSnapshotWasRemoved()
        https://bugs.webkit.org/show_bug.cgi?id=189714
        <rdar://problem/32839498>

        Reviewed by Tim Horton.

        The ViewGestureController::removeSwipeSnapshot() implementation for iOS calls
        navigationGestureSnapshotWasRemoved() on m_webPageProxyForBackForwardListForCurrentSwipe.
        m_webPageProxyForBackForwardListForCurrentSwipe can differ from m_webPageProxy, and
        is a RefPtr<>. This means that this WebPageProxy's WKWebView might have been deallocated,
        in which case we'll crash when trying to use the pageClient in
        WebPageProxy::navigationGestureSnapshotWasRemoved(). To address the issue, we now return
        early in WebPageProxy::navigationGestureSnapshotWasRemoved() if m_isClosed is true,
        after resetting m_isShowingNavigationGestureSnapshot to false but *before* trying to use
        the pageClient. When a WKWebView is deallocated, it calls WebPageProxy::close(), which
        sets m_isClosed to true.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::navigationGestureSnapshotWasRemoved):

2018-09-18  Basuke Suzuki  <Basuke.Suzuki@sony.com>

        [Curl] Limit capturing extra metrics for Web Inspector when not required.
        https://bugs.webkit.org/show_bug.cgi?id=189520

        Reviewed by Alex Christensen.

        Respect the value of NetworkDataTask::shouldCaptureExtraNetworkLoadMetrics() to reduce the process
        time when they are not needed.

        * NetworkProcess/curl/NetworkDataTaskCurl.cpp:
        (WebKit::NetworkDataTaskCurl::createCurlRequest):

2018-09-18  Alex Christensen  <achristensen@webkit.org>

        Make WebPageProxy always have a API::NavigationClient instead of always having a API::LoaderClient and API::PolicyClient
        https://bugs.webkit.org/show_bug.cgi?id=189012

        Reviewed by Andy Estes.

        When WebKit2 was being developed, we initially made the C API WKPageSetPagePolicyClient and WKPageSetPageLoaderClient.
        When we released WKWebView, it was using WKNavigationDelegate, equivalent to WKPageSetPageNavigationClient.
        To support one or the other, we would use the navigation client if it was present, but if not we would fall back to the
        loader or policy client.  Since the loader and policy clients are now being minimally supported only until legacy
        software migrates to the navigation client, we are adding new functionality to the navigation client.
        Making the navigation client the default and using the loader or policy client only if they are present supports
        the legacy software and makes us have fewer forgotten null checks when adding new functionality to the navigation client.

        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetPageNavigationClient):
        * UIProcess/Cocoa/NavigationState.h:
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::createNavigationClient):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::WebPageProxy):
        (WebKit::WebPageProxy::setNavigationClient):
        (WebKit::WebPageProxy::setLoaderClient):
        (WebKit::WebPageProxy::setPolicyClient):
        (WebKit::WebPageProxy::close):
        (WebKit::WebPageProxy::didChangeBackForwardList):
        (WebKit::WebPageProxy::willGoToBackForwardListItem):
        (WebKit::WebPageProxy::findPlugin):
        (WebKit::WebPageProxy::didStartProvisionalLoadForFrame):
        (WebKit::WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrame):
        (WebKit::WebPageProxy::willPerformClientRedirectForFrame):
        (WebKit::WebPageProxy::didCancelClientRedirectForFrame):
        (WebKit::WebPageProxy::didFailProvisionalLoadForFrame):
        (WebKit::WebPageProxy::didCommitLoadForFrame):
        (WebKit::WebPageProxy::didFinishDocumentLoadForFrame):
        (WebKit::WebPageProxy::didFinishLoadForFrame):
        (WebKit::WebPageProxy::didFailLoadForFrame):
        (WebKit::WebPageProxy::didSameDocumentNavigationForFrame):
        (WebKit::WebPageProxy::didReachLayoutMilestone):
        (WebKit::WebPageProxy::didDisplayInsecureContentForFrame):
        (WebKit::WebPageProxy::didRunInsecureContentForFrame):
        (WebKit::WebPageProxy::decidePolicyForNavigationAction):
        (WebKit::WebPageProxy::decidePolicyForNewWindowAction):
        (WebKit::WebPageProxy::decidePolicyForResponse):
        (WebKit::WebPageProxy::contentRuleListNotification):
        (WebKit::WebPageProxy::webGLPolicyForURL):
        (WebKit::WebPageProxy::resolveWebGLPolicyForURL):
        (WebKit::WebPageProxy::processDidBecomeUnresponsive):
        (WebKit::WebPageProxy::processDidBecomeResponsive):
        (WebKit::WebPageProxy::dispatchProcessDidTerminate):
        (WebKit::WebPageProxy::didReceiveAuthenticationChallengeProxy):
        (WebKit::WebPageProxy::wrapCryptoKey):
        (WebKit::WebPageProxy::unwrapCryptoKey):
        (WebKit::WebPageProxy::signedPublicKeyAndChallengeString):
        (WebKit::WebPageProxy::navigationGestureDidBegin):
        (WebKit::WebPageProxy::navigationGestureWillEnd):
        (WebKit::WebPageProxy::navigationGestureDidEnd):
        (WebKit::WebPageProxy::navigationGestureSnapshotWasRemoved):
        * UIProcess/WebPageProxy.h:

2018-09-18  Alex Christensen  <achristensen@webkit.org>

        Clean up AuthenticationChallengeProxy
        https://bugs.webkit.org/show_bug.cgi?id=189668

        Reviewed by Youenn Fablet.

        At its core, it's a CompletionHandler with some information.
        Make it more elegant and simple with no change in behavior and reduce the complexity of this security-sensitive object.

        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
        (toNSURLSessionAuthChallengeDisposition):
        * Shared/Authentication/AuthenticationManager.cpp:
        (WebKit::AuthenticationManager::rejectProtectionSpaceAndContinueForSingleChallenge):
        * Shared/Authentication/AuthenticationManager.h:
        * UIProcess/API/C/WKAuthenticationChallenge.cpp:
        (WKAuthenticationChallengeGetDecisionListener):
        (WKAuthenticationChallengeGetProtectionSpace):
        (WKAuthenticationChallengeGetProposedCredential):
        (WKAuthenticationChallengeGetPreviousFailureCount):
        * UIProcess/API/C/WKPage.cpp:
        (WKPageSetPageNavigationClient):
        * UIProcess/API/Cocoa/WKNSURLAuthenticationChallenge.mm:
        (-[WKNSURLAuthenticationChallengeSender cancelAuthenticationChallenge:]):
        (-[WKNSURLAuthenticationChallengeSender continueWithoutCredentialForAuthenticationChallenge:]):
        (-[WKNSURLAuthenticationChallengeSender useCredential:forAuthenticationChallenge:]):
        (-[WKNSURLAuthenticationChallengeSender performDefaultHandlingForAuthenticationChallenge:]):
        (-[WKNSURLAuthenticationChallengeSender rejectProtectionSpaceAndContinueWithChallenge:]):
        * UIProcess/Authentication/AuthenticationChallengeProxy.cpp:
        (WebKit::AuthenticationChallengeProxy::AuthenticationChallengeProxy):
        (WebKit::AuthenticationChallengeProxy::~AuthenticationChallengeProxy): Deleted.
        (WebKit::AuthenticationChallengeProxy::useCredential): Deleted.
        (WebKit::AuthenticationChallengeProxy::cancel): Deleted.
        (WebKit::AuthenticationChallengeProxy::performDefaultHandling): Deleted.
        (WebKit::AuthenticationChallengeProxy::rejectProtectionSpaceAndContinue): Deleted.
        (WebKit::AuthenticationChallengeProxy::proposedCredential const): Deleted.
        (WebKit::AuthenticationChallengeProxy::protectionSpace const): Deleted.
        (WebKit::AuthenticationChallengeProxy::setSecKeyProxyStore): Deleted.
        * UIProcess/Authentication/AuthenticationChallengeProxy.h:
        (WebKit::AuthenticationChallengeProxy::create):
        (WebKit::AuthenticationChallengeProxy::listener const):
        (WebKit::AuthenticationChallengeProxy::previousFailureCount const): Deleted.
        * UIProcess/Authentication/AuthenticationDecisionListener.cpp:
        (WebKit::AuthenticationDecisionListener::AuthenticationDecisionListener):
        (WebKit::AuthenticationDecisionListener::~AuthenticationDecisionListener):
        (WebKit::AuthenticationDecisionListener::useCredential):
        (WebKit::AuthenticationDecisionListener::cancel):
        (WebKit::AuthenticationDecisionListener::performDefaultHandling):
        (WebKit::AuthenticationDecisionListener::rejectProtectionSpaceAndContinue):
        (WebKit::AuthenticationDecisionListener::detachChallenge): Deleted.
        * UIProcess/Authentication/AuthenticationDecisionListener.h:
        (WebKit::AuthenticationDecisionListener::create):
        * UIProcess/Authentication/cocoa/AuthenticationChallengeProxyCocoa.mm:
        (WebKit::AuthenticationChallengeProxy::sendClientCertificateCredentialOverXpc):
        (WebKit::AuthenticationChallengeProxy::sendClientCertificateCredentialOverXpc const): Deleted.
        * UIProcess/Cocoa/DownloadClient.mm:
        (WebKit::DownloadClient::didReceiveAuthenticationChallenge):
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::NavigationClient::didReceiveAuthenticationChallenge):
        * UIProcess/Downloads/DownloadProxy.cpp:
        (WebKit::DownloadProxy::didReceiveAuthenticationChallenge):
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::didReceiveAuthenticationChallenge):
        * UIProcess/ServiceWorkerProcessProxy.cpp:
        (WebKit::ServiceWorkerProcessProxy::didReceiveAuthenticationChallenge):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::secKeyProxyStore):
        (WebKit::WebPageProxy::didReceiveAuthenticationChallengeProxy):
        * UIProcess/WebPageProxy.h:

2018-09-18  Ben Richards  <benton_richards@apple.com>

        Add script to generate WebContent service resource files and change XPC service main SPI to have it's own header
        https://bugs.webkit.org/show_bug.cgi?id=188601

        Reviewed by Dan Bernstein.

        Added a script to the process entitlements build phase of the WebContent service that copies resource
        files to WebKit.framework/PrivateHeaders/CustomWebContentResources. These resource files are to
        be used by clients who would like to make a custom WebContent service.

        * Scripts/copy-webcontent-resources-to-private-headers.sh: Added.
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/API/Cocoa/WKWebProcess.h: Drive-by fix to make this header compileable alone.

2018-09-18  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r236138.

        Caused API test and layout test failures on iOS.

        Reverted changeset:

        "REGRESSION (PSON): White or Black flash occurs when process
        swapping on navigation on Mac"
        https://bugs.webkit.org/show_bug.cgi?id=189663
        https://trac.webkit.org/changeset/236138

2018-09-18  Eric Carlson  <eric.carlson@apple.com>

        Always log when granting/revoking capture sandbox extensions
        https://bugs.webkit.org/show_bug.cgi?id=189701
        <rdar://problem/44564029>

        Reviewed by Youenn Fablet.

        * UIProcess/UserMediaProcessManager.cpp:
        (WebKit::UserMediaProcessManager::willCreateMediaStream): Always log.
        (WebKit::UserMediaProcessManager::endedCaptureSession): Ditto.

        * WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp:
        (WebKit::UserMediaPermissionRequestManager::grantUserMediaDeviceSandboxExtensions): Ditto.
        (WebKit::UserMediaPermissionRequestManager::revokeUserMediaDeviceSandboxExtensions): Ditto.

2018-09-18  Youenn Fablet  <youenn@apple.com>

        Enable Unified Plan by default
        https://bugs.webkit.org/show_bug.cgi?id=189675

        Reviewed by Eric Carlson.

        * Shared/WebPreferences.yaml:

2018-09-18  Antti Koivisto  <antti@apple.com>

        REGRESSION (PSON): White or Black flash occurs when process swapping on navigation on Mac
        https://bugs.webkit.org/show_bug.cgi?id=189663
        <rdar://problem/44184955>

        Reviewed by Geoff Garen.

        We need to keep the layer tree of the previous page alive and visible until we have something
        to render on the new page. With PSON on Mac this means that we should keep displaying the
        layer tree from the previus process.

        This patch moves the management of 'attaching' the drawing area (Mac only concept) from web process
        to UI process. This is when we parent the layer tree to the view root layer. It also ensures that
        the layer tree is not deleted too early on process swap and that it still eventually gets deleted.

        * UIProcess/DrawingAreaProxy.h:
        (WebKit::DrawingAreaProxy::attachInWebProcess):
        * UIProcess/SuspendedPageProxy.cpp:
        (WebKit::messageNamesToIgnoreWhileSuspended):
        (WebKit::SuspendedPageProxy::tearDownDrawingAreaInWebProcess):

        We no longer tear down drawing area (layer tree) for suspended pages automatically. Send an explicit
        message for it.

        * UIProcess/SuspendedPageProxy.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::reattachToWebProcess):

        Only call didRelaunchProcess when process actually relaunched (not navigation process launch) to
        match not calling processDidExit in resetStateAfterProcessExited.

        (WebKit::WebPageProxy::didCompletePageTransition):

        Attach the drawing area if appropriate.

        (WebKit::WebPageProxy::decidePolicyForNavigationAction):

        Send suspend message to WebPage immediately instead waiting for the runloop callback. This is needed so we
        can avoid flashing the initial empty document load when the new Page object is created.

        (WebKit::WebPageProxy::resetStateAfterProcessExited):

        Don't call processDidExit when suspending, not exiting the process (this function needs a new name or rafactoring).
        This avoids clearing the drawing area and flashing to black.

        (WebKit::WebPageProxy::enterAcceleratedCompositingMode):

        This is called when we have switched to the new layer tree.
        Tear down the drawing area in the previus process.

        * UIProcess/WebPageProxy.h:
        * UIProcess/WebPageProxy.messages.in:
        * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.h:
        * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm:
        (WebKit::TiledCoreAnimationDrawingAreaProxy::attachInWebProcess):

        Send a message to the web process to attach the drawing area.

        * WebProcess/WebPage/DrawingArea.h:
        (WebKit::DrawingArea::attach):
        (WebKit::DrawingArea::attachDrawingArea): Deleted.

        Rename to be less redundant.

        * WebProcess/WebPage/DrawingArea.messages.in:
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::reinitializeWebPage):

        Don't attach drawing area automatically. It will be done by a message from UI process.

        (WebKit::WebPage::setLayerTreeStateIsFrozen):

        Layer tree is always frozen in a suspended process (if it exists).

        (WebKit::WebPage::didStartPageTransition):
        (WebKit::WebPage::didCompletePageTransition):

        Notify UI process of transition completion.

        (WebKit::WebPage::setIsSuspended):
        (WebKit::WebPage::tearDownDrawingAreaForSuspend):
        * WebProcess/WebPage/WebPage.h:
        * WebProcess/WebPage/WebPage.messages.in:
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
        (WebKit::TiledCoreAnimationDrawingArea::TiledCoreAnimationDrawingArea):

        Don't attach drawing area automatically. It will be done by a message from UI process.

        (WebKit::TiledCoreAnimationDrawingArea::attach):
        (WebKit::TiledCoreAnimationDrawingArea::attachDrawingArea): Deleted.

2018-09-18  Claudio Saavedra  <csaavedra@igalia.com>

        [WPE] Implement mouse event modifiers
        https://bugs.webkit.org/show_bug.cgi?id=189697

        Reviewed by Carlos Garcia Campos.

        Only "CapsLocks" is missing, as WPE doesn't support that modifier.
        * Shared/wpe/WebEventFactory.cpp:
        (WebKit::modifiersForEventModifiers):
        (WebKit::WebEventFactory::createWebKeyboardEvent):
        (WebKit::WebEventFactory::createWebMouseEvent):
        (WebKit::modifiersForEvent): Deleted.

2018-09-17  Zan Dobersek  <zdobersek@igalia.com>

        Unreviewed build fix after r236101.

        * UIProcess/WebResourceLoadStatisticsStore.cpp:
        (WebKit::WebResourceLoadStatisticsStore::flushAndDestroyPersistentStore):
        Correct a BinarySemaphore::wait() call which now accepts no arguments.

2018-09-17  Yusuke Suzuki  <utatane.tea@gmail.com>

        [WTF] Use Semaphore and BinarySemaphore instead of dispatch_semaphore_t
        https://bugs.webkit.org/show_bug.cgi?id=185339

        Reviewed by Mark Lam.

        * Platform/IPC/Connection.cpp:
        (IPC::Connection::SyncMessageState::wait):
        * Shared/mac/SecItemShim.cpp:
        (WebKit::sendSecItemRequest):
        Use BinarySemaphore.

        * UIProcess/ResourceLoadStatisticsPersistentStorage.cpp:
        (WebKit::ResourceLoadStatisticsPersistentStorage::finishAllPendingWorkSynchronously):
        * UIProcess/WebStorage/StorageManager.cpp:
        (WebKit::StorageManager::applicationWillTerminate):
        * UIProcess/ios/WKActionSheetAssistant.mm:
        (appLinkForURL):
        Use BinarySemaphore to wait for async completion handler. We also fix memory leak
        since the old code does not call dispatch_release for the used semaphore.

2018-09-17  Simon Fraser  <simon.fraser@apple.com>

        Many modern media control tests leak documents in testing
        https://bugs.webkit.org/show_bug.cgi?id=189437

        Reviewed by Darin Adler.

        In order to accurately detect leaks in media controls tests which use lots of
        SVGImages, we have to:
        - Fire a zero-delay timer after the postTask, in order for ImagesLoader's m_derefElementTimer
          to clear references to elements.
        - Have releaseCriticalMemory() call CachedResourceLoader's garbageCollectDocumentResources()
          to drop the last handle to the CachedResource for an SVGImage.
        - Call WKBundleReleaseMemory() after the GC and timer, since we need garbageCollectDocumentResources()
          to run again after that timer has fired.
        
        This should fix most of the spurious leak reports involving SVGImage documents.

        * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
        (WKBundlePageCallAfterTasksAndTimers):
        (WKBundlePagePostTask): Deleted.
        * WebProcess/InjectedBundle/API/c/WKBundlePage.h:

2018-09-17  Dan Bernstein  <mitz@apple.com>

        Try to fix Apple internal builds with the iOS 12.0 SDK.

        * Configurations/WebKit.xcconfig: Disable framework header postprocessing for iOS 12.0.

2018-09-17  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r236092 because it breaks internal builds. Also,  remove stray '+' character from ChangeLog file.

        * Scripts/copy-webcontent-resources-to-private-headers.sh: Removed.
        * WebKit.xcodeproj/project.pbxproj:

2018-08-17  Ben Richards  <benton_richards@apple.com>

        Add script to generate WebContent service resource files and change XPC service main SPI to have it's own header
        https://bugs.webkit.org/show_bug.cgi?id=188601

        Reviewed by Dan Bernstein.

        Added a script to the process entitlements build phase of the WebContent service that copies resource
        files to WebKit.framework/PrivateHeaders/CustomWebContentResources. These resource files are to
        be used by clients who would like to make a custom WebContent service.

        * Scripts/copy-webcontent-resources-to-private-headers.sh: Added.
        * WebKit.xcodeproj/project.pbxproj:


2018-09-17  Simon Fraser  <simon.fraser@apple.com>

        Add more Fullscreen logging
        https://bugs.webkit.org/show_bug.cgi?id=189656

        Reviewed by Jer Noble.

        Add some fullscreen logging so I can tell whether WebFullScreenManager ever releases
        the fullscreen element.

        * WebProcess/FullScreen/WebFullScreenManager.cpp:
        (WebKit::WebFullScreenManager::WebFullScreenManager):
        (WebKit::WebFullScreenManager::videoControlsManagerDidChange):
        (WebKit::WebFullScreenManager::setPIPStandbyElement):
        (WebKit::WebFullScreenManager::enterFullScreenForElement):
        (WebKit::WebFullScreenManager::exitFullScreenForElement):
        (WebKit::WebFullScreenManager::willEnterFullScreen):
        (WebKit::WebFullScreenManager::didEnterFullScreen):
        (WebKit::WebFullScreenManager::willExitFullScreen):
        (WebKit::WebFullScreenManager::didExitFullScreen):
        (WebKit::WebFullScreenManager::close):
        * WebProcess/FullScreen/WebFullScreenManager.h:

2018-09-17  Tim Horton  <timothy_horton@apple.com>

        Swipe snapshot can get stuck if swiping is disabled while it is visible
        https://bugs.webkit.org/show_bug.cgi?id=189667
        <rdar://problem/40367780>

        Reviewed by Simon Fraser.

        If navigation gestures are disabled while a swipe snapshot is visible,
        WKWebView will tear down the ViewGestureController, which means that
        the SnapshotRemovalTracker will no longer be around to ever remove
        the snapshot.

        It's currently very hard to write a test for this because we have
        yet to come up with a good mechanism for testing swiping on iOS.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView setAllowsBackForwardNavigationGestures:]):
        Instead of tearing down the ViewGestureController when navigation
        gestures are disabled, just set a bit on it that disables gestures.

        * UIProcess/Cocoa/ViewGestureController.cpp:
        (WebKit::ViewGestureController::canSwipeInDirection const):
        * UIProcess/Cocoa/ViewGestureController.h:
        (WebKit::ViewGestureController::setSwipeGestureEnabled):
        (WebKit::ViewGestureController::isSwipeGestureEnabled):
        Add a bit to ViewGestureController that makes starting new gestures
        always fail, but allows e.g. snapshots from existing swipes to continue
        their usual behavior.

2018-09-17  Alex Christensen  <achristensen@webkit.org>

        Expose WKWebProcess.h as a private header
        https://bugs.webkit.org/show_bug.cgi?id=189636

        * WebKit.xcodeproj/project.pbxproj:

2018-09-17  Alex Christensen  <achristensen@webkit.org>

        Expose XPCServiceMain in a WebProcess header rather than WKProcessPool
        https://bugs.webkit.org/show_bug.cgi?id=189636

        Reviewed by Dan Bernstein.

        Fix a few build failures along the way.

        * PluginProcess/mac/PluginControllerProxyMac.mm:
        (WebKit::PluginControllerProxy::windowAndViewFramesChanged):
        (WebKit::PluginControllerProxy::updateLayerHostingContext):
        * PluginProcess/mac/PluginProcessMac.mm:
        (WebKit::replacedNSWorkspace_launchApplicationAtURL_options_configuration_error):
        (WebKit::PluginProcess::platformInitializeProcess):
        * Shared/EntryPointUtilities/mac/XPCService/XPCServiceEntryPoint.h:
        * Shared/EntryPointUtilities/mac/XPCService/XPCServiceMain.mm:
        (WebKit::XPCServiceMain):
        (main):
        * SourcesCocoa.txt:
        * UIProcess/API/Cocoa/WKProcessPool.mm:
        (+[WKProcessPool _webContentProcessXPCMain]): Deleted.
        * UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/API: Added.
        * WebProcess/API/Cocoa: Added.
        * WebProcess/API/Cocoa/WKWebProcess.cpp: Added.
        (WKWebProcessMain):
        * WebProcess/API/Cocoa/WKWebProcess.h: Added.
        * WebProcess/WebPage/mac/WKAccessibilityWebPageObjectMac.mm:
        (-[WKAccessibilityWebPageObject convertScreenPointToRootView:]):
        (-[WKAccessibilityWebPageObject accessibilityAttributeValue:]):
        (-[WKAccessibilityWebPageObject accessibilityHitTest:]):

2018-09-17  Basuke Suzuki  <Basuke.Suzuki@sony.com>

        [Curl] Respond with requested authentication scheme for authentication challenge.
        https://bugs.webkit.org/show_bug.cgi?id=189318

        Reviewed by Alex Christensen.

        Curl port depends on libcurl's authentication handling by enabling CURLAUTH_ANY. With this
        mode, the round-trip communication between the client and the server is handled by libcurl
        internally. That's okay for many cases. But when initial request has a credentials
        (i.e. XMLHttpRequest), there's no valid chance to store credential to the storage because
        the returned response is not 401.

        * NetworkProcess/curl/NetworkDataTaskCurl.cpp:
        (WebKit::NetworkDataTaskCurl::NetworkDataTaskCurl):
        (WebKit::NetworkDataTaskCurl::willPerformHTTPRedirection):
        (WebKit::NetworkDataTaskCurl::tryHttpAuthentication):
        (WebKit::NetworkDataTaskCurl::tryProxyAuthentication):
        (WebKit::NetworkDataTaskCurl::restartWithCredential):
        * NetworkProcess/curl/NetworkDataTaskCurl.h:

2018-09-17  Woodrow Wang  <woodrow_wang@apple.com>

        Clear pending resource load statistics' writes after tests
        https://bugs.webkit.org/show_bug.cgi?id=189632
        <rdar://problem/44469275>

        Reviewed by Chris Dumez.

        * UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
        (WKWebsiteDataStoreStatisticsResetToConsistentState):

2018-09-17  Chris Dumez  <cdumez@apple.com>

        PSON: window.open() with 'noopener' should only process-swap cross-site, not cross-origin
        https://bugs.webkit.org/show_bug.cgi?id=189602
        <rdar://problem/44430549>

        Reviewed by Geoff Garen.

        The following fixes were made to our process swap on navigation logic:
        - Browsing contexts opened via window.open() with 'noopener' option now only same if
          they are cross-site, instead of doing a stricter cross-origin check.
        - Support process swapping when opening a new window via <a target="_blank" rel="noopener">
          that is cross-site.

        In order to support this, the following changes were made:
        - Stop passing a 'isCrossOriginWindowOpenNavigation' flag to the UIProcess when navigating because:
          - This is specific to window.open() and does not apply to other windows opened by DOM
          - This forces the origin check to happens on WebContent process side instead of relying on the
            one in WebProcessPool in the UIProcess
        - Pass the origin of the requester to the UIProcess when navigating, so that the WebProcessPool
          can use the requester's host for the cross-site check for the initial navigation in a new window
          created by DOM.
        - Add 2 flags to WebPageProxy which indicate if the page was created by the DOM and if any provisional
          loads have been committed. The WebProcessPool uses theses flags to recognize initial loads in
          new windows created by the DOM, so that it uses the requester's origin for the cross-site check.

        * Shared/NavigationActionData.cpp:
        (WebKit::NavigationActionData::encode const):
        (WebKit::NavigationActionData::decode):
        * Shared/NavigationActionData.h:
        * UIProcess/API/APINavigation.h:
        (API::Navigation::setRequesterOrigin):
        (API::Navigation::requesterOrigin const):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::continueNavigationInNewProcess):
        (WebKit::WebPageProxy::didCommitLoadForFrame):
        (WebKit::WebPageProxy::decidePolicyForNavigationAction):
        (WebKit::WebPageProxy::createNewPage):
        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::setOpenedByDOM):
        (WebKit::WebPageProxy::openedByDOM const):
        (WebKit::WebPageProxy::hasCommittedAnyProvisionalLoads const):
        * UIProcess/WebProcessPool.cpp:
        (WebKit::shouldUseSameProcessBasedOnURLs):
        (WebKit::WebProcessPool::processForNavigationInternal):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):

2018-09-17  Alexey Proskuryakov  <ap@apple.com>

        Revert https://trac.webkit.org/r235910, because the new test times out.
        Crash under PlatformPopupMenuData::encode when interacting with a select menu that has variable fonts
        https://bugs.webkit.org/show_bug.cgi?id=188008

        * Shared/cf/ArgumentCodersCF.cpp:
        (IPC::encode):
        (IPC::decode):

2018-09-17  Alex Christensen  <achristensen@webkit.org>

        Refactoring related to Safe Browsing
        https://bugs.webkit.org/show_bug.cgi?id=189631

        Reviewed by Tim Horton.

        Make SafeBrowsingResult RefCounted.
        Move logic from an unnamed lambda to WebPageProxy::receivedNavigationPolicyDecision.

        * UIProcess/Cocoa/WebPageProxyCocoa.mm:
        (WebKit::WebPageProxy::beginSafeBrowsingCheck):
        (WebKit::WebPageProxy::contentFilterDidBlockLoadForFrame): Deleted.
        (WebKit::WebPageProxy::addPlatformLoadParameters): Deleted.
        (WebKit::WebPageProxy::createSandboxExtensionsIfNeeded): Deleted.
        (WebKit::WebPageProxy::startDrag): Deleted.
        (WebKit::WebPageProxy::setPromisedDataForImage): Deleted.
        (WebKit::WebPageProxy::setDragCaretRect): Deleted.
        (WebKit::WebPageProxy::platformRegisterAttachment): Deleted.
        (WebKit::WebPageProxy::platformCloneAttachment): Deleted.
        * UIProcess/SafeBrowsingResult.h:
        (WebKit::SafeBrowsingResult::create):
        * UIProcess/WebFramePolicyListenerProxy.cpp:
        (WebKit::WebFramePolicyListenerProxy::didReceiveSafeBrowsingResults):
        * UIProcess/WebFramePolicyListenerProxy.h:
        * UIProcess/WebFrameProxy.cpp:
        (WebKit::WebFrameProxy::setUpPolicyListenerProxy):
        * UIProcess/WebFrameProxy.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::receivedNavigationPolicyDecision):
        (WebKit::WebPageProxy::decidePolicyForNavigationAction):
        (WebKit::WebPageProxy::decidePolicyForNewWindowAction):
        (WebKit::WebPageProxy::decidePolicyForResponse):
        * UIProcess/WebPageProxy.h:

2018-09-17  Darin Adler  <darin@apple.com>

        Use OpaqueJSString rather than JSRetainPtr inside WebKit
        https://bugs.webkit.org/show_bug.cgi?id=189652

        Reviewed by Saam Barati.

        * Shared/API/c/WKString.cpp: Removed unneeded include of JSStringRef.h.

        * WebProcess/Automation/WebAutomationSessionProxy.cpp: Removed unneeded
        include of JSRetainPtr.
        (WebKit::toJSString): Deleted.
        (WebKit::toJSValue): Use OpaqueJSString::create.
        (WebKit::callPropertyFunction): Ditto.
        (WebKit::evaluate): Use adoptRef.
        (WebKit::evaluateJavaScriptCallback): Ditto.
        (WebKit::WebAutomationSessionProxy::scriptObjectForFrame):
        Use OpaqueJSString::create.
        (WebKit::WebAutomationSessionProxy::evaluateJavaScriptFunction): Use
        String rather than JSStringRef.

        * WebProcess/Plugins/PDF/PDFPlugin.mm: Removed unneeded includes.
        (WebKit::PDFPlugin::runScriptsInPDFDocument): Use OpaqueJSString::create.

2018-09-17  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed, fix incorrect WPE build fix made in r236009

        This isn't the right place to add the typedef. I failed to notice that the WebKitWebView
        type is not actually used anywhere in this header. Actually, the problematic function is no
        longer declared or used anywhere and was just missed when WebKitScriptDialog was refactored,
        so remove it.

        * UIProcess/API/wpe/WebKitScriptDialog.h:
        * UIProcess/API/wpe/WebKitScriptDialogWPE.cpp:
        (webkitScriptDialogRun): Deleted.

2018-09-17  Sihui Liu  <sihui_liu@apple.com>

        Move IndexedDB to Network Process
        https://bugs.webkit.org/show_bug.cgi?id=189415
        <rdar://problem/44396973>

        Reviewed by Chris Dumez.

        We are going to eliminate storage process and move its functionality to network process. 
        The reasons why we want to do this:
        1. Lower resource usage of having an additional process for storage operations, especially
        memory. Single storage process takes about 5MB memory on macOS.
        2. Reduce latency of Service Workers. After enabling Service Workers, we've seen
        regression in app launch. The launch time of storage process is partly attributed to this:
        Service Workers delay page loading until receiving response from storage process.
        3. We choose network process because UI process may have broader access in file system
        that we don't want the storage operations to have.

        This patch is the first piece towards the goal. It mainly moves indexedDB from storage process
        to corresponding components of network process. Moving of Service Worker and stopping to 
        launch storage process will be done in following patches.

        We expect to see the higher cpu and memory usage of network process as it is taking more work,
        but the overall gain in memory and latency after we completely remove storage process should be 
        positive.

        * CMakeLists.txt:
        * DerivedSources.make:
        * NetworkProcess/IndexedDB/WebIDBConnectionToClient.cpp: Renamed from Source/WebKit/StorageProcess/IndexedDB/WebIDBConnectionToClient.cpp.
        (WebKit::WebIDBConnectionToClient::create):
        (WebKit::WebIDBConnectionToClient::WebIDBConnectionToClient):
        (WebKit::WebIDBConnectionToClient::~WebIDBConnectionToClient):
        (WebKit::WebIDBConnectionToClient::disconnectedFromWebProcess):
        (WebKit::WebIDBConnectionToClient::messageSenderConnection):
        (WebKit::WebIDBConnectionToClient::connectionToClient):
        (WebKit::WebIDBConnectionToClient::didDeleteDatabase):
        (WebKit::WebIDBConnectionToClient::didOpenDatabase):
        (WebKit::WebIDBConnectionToClient::didAbortTransaction):
        (WebKit::WebIDBConnectionToClient::didCommitTransaction):
        (WebKit::WebIDBConnectionToClient::didCreateObjectStore):
        (WebKit::WebIDBConnectionToClient::didDeleteObjectStore):
        (WebKit::WebIDBConnectionToClient::didRenameObjectStore):
        (WebKit::WebIDBConnectionToClient::didClearObjectStore):
        (WebKit::WebIDBConnectionToClient::didCreateIndex):
        (WebKit::WebIDBConnectionToClient::didDeleteIndex):
        (WebKit::WebIDBConnectionToClient::didRenameIndex):
        (WebKit::WebIDBConnectionToClient::didPutOrAdd):
        (WebKit::WebIDBConnectionToClient::handleGetResult):
        (WebKit::WebIDBConnectionToClient::didGetRecord):
        (WebKit::WebIDBConnectionToClient::didGetAllRecords):
        (WebKit::WebIDBConnectionToClient::didGetCount):
        (WebKit::WebIDBConnectionToClient::didDeleteRecord):
        (WebKit::WebIDBConnectionToClient::didOpenCursor):
        (WebKit::WebIDBConnectionToClient::didIterateCursor):
        (WebKit::WebIDBConnectionToClient::fireVersionChangeEvent):
        (WebKit::WebIDBConnectionToClient::didStartTransaction):
        (WebKit::WebIDBConnectionToClient::didCloseFromServer):
        (WebKit::WebIDBConnectionToClient::notifyOpenDBRequestBlocked):
        (WebKit::WebIDBConnectionToClient::didGetAllDatabaseNames):
        (WebKit::WebIDBConnectionToClient::deleteDatabase):
        (WebKit::WebIDBConnectionToClient::openDatabase):
        (WebKit::WebIDBConnectionToClient::abortTransaction):
        (WebKit::WebIDBConnectionToClient::commitTransaction):
        (WebKit::WebIDBConnectionToClient::didFinishHandlingVersionChangeTransaction):
        (WebKit::WebIDBConnectionToClient::createObjectStore):
        (WebKit::WebIDBConnectionToClient::deleteObjectStore):
        (WebKit::WebIDBConnectionToClient::renameObjectStore):
        (WebKit::WebIDBConnectionToClient::clearObjectStore):
        (WebKit::WebIDBConnectionToClient::createIndex):
        (WebKit::WebIDBConnectionToClient::deleteIndex):
        (WebKit::WebIDBConnectionToClient::renameIndex):
        (WebKit::WebIDBConnectionToClient::putOrAdd):
        (WebKit::WebIDBConnectionToClient::getRecord):
        (WebKit::WebIDBConnectionToClient::getAllRecords):
        (WebKit::WebIDBConnectionToClient::getCount):
        (WebKit::WebIDBConnectionToClient::deleteRecord):
        (WebKit::WebIDBConnectionToClient::openCursor):
        (WebKit::WebIDBConnectionToClient::iterateCursor):
        (WebKit::WebIDBConnectionToClient::establishTransaction):
        (WebKit::WebIDBConnectionToClient::databaseConnectionPendingClose):
        (WebKit::WebIDBConnectionToClient::databaseConnectionClosed):
        (WebKit::WebIDBConnectionToClient::abortOpenAndUpgradeNeeded):
        (WebKit::WebIDBConnectionToClient::didFireVersionChangeEvent):
        (WebKit::WebIDBConnectionToClient::openDBRequestCancelled):
        (WebKit::WebIDBConnectionToClient::confirmDidCloseFromServer):
        (WebKit::WebIDBConnectionToClient::getAllDatabaseNames):
        * NetworkProcess/IndexedDB/WebIDBConnectionToClient.h: Renamed from Source/WebKit/StorageProcess/IndexedDB/WebIDBConnectionToClient.h.
        * NetworkProcess/IndexedDB/WebIDBConnectionToClient.messages.in: Renamed from Source/WebKit/StorageProcess/IndexedDB/WebIDBConnectionToClient.messages.in.
        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::didReceiveMessage):

        Code moved from StorageToWebProcessConnection::didReceiveMessage.

        (WebKit::NetworkConnectionToWebProcess::didClose):
        (WebKit::NetworkConnectionToWebProcess::writeBlobsToTemporaryFiles):

        Network process receives and stores sandbox extension of temporary files for later indexedDB
        use.

        (WebKit::NetworkConnectionToWebProcess::didClose):
        (WebKit::NetworkConnectionToWebProcess::writeBlobsToTemporaryFiles):
        (WebKit::generateIDBConnectionToServerIdentifier):
        (WebKit::NetworkConnectionToWebProcess::establishIDBConnectionToServer):
        (WebKit::NetworkConnectionToWebProcess::removeIDBConnectionToServer):
        * NetworkProcess/NetworkConnectionToWebProcess.h:
        * NetworkProcess/NetworkConnectionToWebProcess.messages.in:
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::NetworkProcess):
        (WebKit::NetworkProcess::initializeNetworkProcess):
        (WebKit::NetworkProcess::addWebsiteDataStore):
        (WebKit::NetworkProcess::fetchWebsiteData):
        (WebKit::NetworkProcess::deleteWebsiteData):
        (WebKit::NetworkProcess::deleteWebsiteDataForOrigins):
        (WebKit::NetworkProcess::idbServer):
        (WebKit::NetworkProcess::ensurePathExists):
        (WebKit::NetworkProcess::postStorageTask):
        (WebKit::NetworkProcess::performNextStorageTask):
        (WebKit::NetworkProcess::prepareForAccessToTemporaryFile):
        (WebKit::NetworkProcess::accessToTemporaryFileComplete):
        (WebKit::NetworkProcess::indexedDatabaseOrigins):
        (WebKit::NetworkProcess::addIndexedDatabaseSession):
        (WebKit::NetworkProcess::getSandboxExtensionsForBlobFiles):

        Instead of asking UI process to grant sandbox extension to storage process, now network 
        process just asks for sandbox extension fot itself.

        (WebKit::NetworkProcess::didGetSandboxExtensionsForBlobFiles):
        (WebKit::NetworkProcess::updateTemporaryFileSandboxExtensions):
        (WebKit::NetworkProcess::grantSandboxExtensionsToStorageProcessForBlobs): Deleted.
        (WebKit::NetworkProcess::didGrantSandboxExtensionsToStorageProcessForBlobs): Deleted.
        * NetworkProcess/NetworkProcess.h:
        * NetworkProcess/NetworkProcess.messages.in:
        * NetworkProcess/NetworkProcessCreationParameters.cpp:
        (WebKit::NetworkProcessCreationParameters::encode const):
        (WebKit::NetworkProcessCreationParameters::decode):
        * NetworkProcess/NetworkProcessCreationParameters.h:
        * Shared/Storage/StorageProcessCreationParameters.cpp:
        (WebKit::StorageProcessCreationParameters::encode const):
        (WebKit::StorageProcessCreationParameters::decode):
        * Shared/Storage/StorageProcessCreationParameters.h:
        * Shared/WebsiteDataStoreParameters.cpp:
        (WebKit::WebsiteDataStoreParameters::encode const):
        (WebKit::WebsiteDataStoreParameters::decode):
        (WebKit::WebsiteDataStoreParameters::privateSessionParameters):
        * Shared/WebsiteDataStoreParameters.h:
        * Sources.txt:
        * StorageProcess/StorageProcess.cpp:
        (WebKit::StorageProcess::initializeWebsiteDataStore):
        (WebKit::StorageProcess::fetchWebsiteData):
        (WebKit::StorageProcess::deleteWebsiteData):
        (WebKit::StorageProcess::deleteWebsiteDataForOrigins):
        (WebKit::StorageProcess::idbServer): Deleted.
        (WebKit::StorageProcess::grantSandboxExtensionsForBlobs): Deleted.
        (WebKit::StorageProcess::prepareForAccessToTemporaryFile): Deleted.
        (WebKit::StorageProcess::accessToTemporaryFileComplete): Deleted.
        (WebKit::StorageProcess::indexedDatabaseOrigins): Deleted.
        (WebKit::StorageProcess::getSandboxExtensionsForBlobFiles): Deleted.
        (WebKit::StorageProcess::didGetSandboxExtensionsForBlobFiles): Deleted.
        * StorageProcess/StorageProcess.h:
        (WebKit::StorageProcess::queue): Deleted.
        * StorageProcess/StorageProcess.messages.in:
        * StorageProcess/StorageToWebProcessConnection.cpp:
        (WebKit::StorageToWebProcessConnection::didReceiveMessage):
        (WebKit::StorageToWebProcessConnection::didClose):
        (WebKit::generateIDBConnectionToServerIdentifier): Deleted.
        (WebKit::StorageToWebProcessConnection::establishIDBConnectionToServer): Deleted.
        (WebKit::StorageToWebProcessConnection::removeIDBConnectionToServer): Deleted.
        * StorageProcess/StorageToWebProcessConnection.h:
        * StorageProcess/StorageToWebProcessConnection.messages.in:
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::getSandboxExtensionsForBlobFiles):
        (WebKit::NetworkProcessProxy::grantSandboxExtensionsToStorageProcessForBlobs): Deleted.
        * UIProcess/Network/NetworkProcessProxy.h:
        * UIProcess/Network/NetworkProcessProxy.messages.in:
        * UIProcess/Storage/StorageProcessProxy.cpp:
        (WebKit::StorageProcessProxy::getSandboxExtensionsForBlobFiles): Deleted.
        * UIProcess/Storage/StorageProcessProxy.h:
        * UIProcess/Storage/StorageProcessProxy.messages.in:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::ensureNetworkProcess):
        (WebKit::WebProcessPool::ensureStorageProcessAndWebsiteDataStore):
        (WebKit::WebProcessPool::pageBeginUsingWebsiteDataStore):
        * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:
        (WebKit::WebsiteDataStore::parameters):
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::computeNetworkProcessAccessTypeForDataFetch):
        (WebKit::WebsiteDataStore::fetchDataAndApply):
        (WebKit::computeNetworkProcessAccessTypeForDataRemoval):
        (WebKit::WebsiteDataStore::removeData):
        (WebKit::WebsiteDataStore::storageProcessParameters):
        (WebKit::WebsiteDataStore::parameters):
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp:
        (WebKit::WebIDBConnectionToServer::WebIDBConnectionToServer):
        (WebKit::WebIDBConnectionToServer::~WebIDBConnectionToServer):
        (WebKit::WebIDBConnectionToServer::messageSenderConnection):
        * WebProcess/Databases/WebDatabaseProvider.cpp:
        (WebKit::WebDatabaseProvider::idbConnectionToServerForSession):
        * WebProcess/Network/NetworkProcessConnection.cpp:
        (WebKit::NetworkProcessConnection::didReceiveMessage):
        (WebKit::NetworkProcessConnection::didClose):
        (WebKit::NetworkProcessConnection::idbConnectionToServerForSession):
        * WebProcess/Network/NetworkProcessConnection.h:
        (WebKit::NetworkProcessConnection::existingIDBConnectionToServerForIdentifier const):
        * WebProcess/Storage/WebToStorageProcessConnection.cpp:
        (WebKit::WebToStorageProcessConnection::didReceiveMessage):
        (WebKit::WebToStorageProcessConnection::didClose):
        (WebKit::WebToStorageProcessConnection::idbConnectionToServerForSession): Deleted.
        * WebProcess/Storage/WebToStorageProcessConnection.h:
        (WebKit::WebToStorageProcessConnection::existingIDBConnectionToServerForIdentifier): Deleted.
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::networkProcessConnectionClosed):
        (WebKit::WebProcess::webToStorageProcessConnectionClosed):

2018-09-08  Darin Adler  <darin@apple.com>

        Streamline JSRetainPtr, fix leaks of JSString and JSGlobalContext
        https://bugs.webkit.org/show_bug.cgi?id=189455

        Reviewed by Keith Miller.

        * WebProcess/Automation/WebAutomationSessionProxy.cpp:
        (WebKit::toJSString): Use adopt function instead of adopt construuctor.
        (WebKit::evaluate): Ditto.
        (WebKit::evaluateJavaScriptCallback): Ditto.
        (WebKit::WebAutomationSessionProxy::evaluateJavaScriptFunction): Ditto.

2018-09-14  Matt Lewis  <jlewis3@apple.com>

        Unreviewed, rolling out r236020.

        This caused an api failure on High Sierra

        Reverted changeset:

        "Refactoring related to Safe Browsing"
        https://bugs.webkit.org/show_bug.cgi?id=189631
        https://trac.webkit.org/changeset/236020

2018-09-14  Basuke Suzuki  <Basuke.Suzuki@sony.com>

        [Curl] Bug fix on some inaccurate values in NetworkLoadMetrics.
        https://bugs.webkit.org/show_bug.cgi?id=189530

        Reviewed by Alex Christensen.

        Curl port uses the start time libcurl provided. But there's a lug between main thread and Curl thread.
        Record the start time of request instead of libcurl's start timing and use it to measure the metrics.

        * NetworkProcess/curl/NetworkDataTaskCurl.cpp:
        (WebKit::NetworkDataTaskCurl::NetworkDataTaskCurl):
        (WebKit::NetworkDataTaskCurl::willPerformHTTPRedirection):
        (WebKit::NetworkDataTaskCurl::restartWithCredential):
        * NetworkProcess/curl/NetworkDataTaskCurl.h:

2018-09-14  Alex Christensen  <achristensen@webkit.org>

        Refactoring related to Safe Browsing
        https://bugs.webkit.org/show_bug.cgi?id=189631

        Reviewed by Tim Horton.

        Make SafeBrowsingResult RefCounted.
        Move logic from an unnamed lambda to WebPageProxy::receivedNavigationPolicyDecision.

        * UIProcess/Cocoa/WebPageProxyCocoa.mm:
        (WebKit::WebPageProxy::beginSafeBrowsingCheck):
        (WebKit::WebPageProxy::contentFilterDidBlockLoadForFrame): Deleted.
        (WebKit::WebPageProxy::addPlatformLoadParameters): Deleted.
        (WebKit::WebPageProxy::createSandboxExtensionsIfNeeded): Deleted.
        (WebKit::WebPageProxy::startDrag): Deleted.
        (WebKit::WebPageProxy::setPromisedDataForImage): Deleted.
        (WebKit::WebPageProxy::setDragCaretRect): Deleted.
        (WebKit::WebPageProxy::platformRegisterAttachment): Deleted.
        (WebKit::WebPageProxy::platformCloneAttachment): Deleted.
        * UIProcess/SafeBrowsingResult.h:
        (WebKit::SafeBrowsingResult::create):
        * UIProcess/WebFramePolicyListenerProxy.cpp:
        (WebKit::WebFramePolicyListenerProxy::didReceiveSafeBrowsingResults):
        * UIProcess/WebFramePolicyListenerProxy.h:
        * UIProcess/WebFrameProxy.cpp:
        (WebKit::WebFrameProxy::setUpPolicyListenerProxy):
        * UIProcess/WebFrameProxy.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::receivedNavigationPolicyDecision):
        (WebKit::WebPageProxy::decidePolicyForNavigationAction):
        (WebKit::WebPageProxy::decidePolicyForNewWindowAction):
        (WebKit::WebPageProxy::decidePolicyForResponse):
        * UIProcess/WebPageProxy.h:

2018-09-14  Geoffrey Garen  <ggaren@apple.com>

        Clarify the configuration used by WKUIDelegate's createWebViewWithConfiguration
        https://bugs.webkit.org/show_bug.cgi?id=189634

        Reviewed by Tim Horton.

        * UIProcess/API/Cocoa/WKUIDelegate.h:

2018-09-11  Simon Fraser  <simon.fraser@apple.com>

        Make GraphicsLayers ref-counted, so their tree can persist when disconnected from RenderLayerBackings
        https://bugs.webkit.org/show_bug.cgi?id=189521

        Reviewed by Tim Horton.

        Make GraphicsLayer be RefCounted<GraphicsLayer>. GraphicsLayers own their children, via a Vector<Ref<GraphicsLayer>>.
        
        RenderLayerBacking and other holders of GraphicsLayers use RefPtr<GraphicsLayer>.
        
        Added some helper functions to null out a RefPtr<GraphicsLayer> after removing from the tree,
        clearing the client. GraphicsLayer.m_client becomes a pointer, so it can be set to point to a singleton
        empty client when a GraphicsLayer gets detached from its owner. More explicit layer unparenting,
        and removed some unnecessary parent checks, and redundant unparenting.
        
        Other changes are just to adapt to the new ownership patterns.
        
        I verified that no GraphicsLayers were leaked or abandoned after this change.

        * WebProcess/WebCoreSupport/WebInspectorClient.cpp:
        (WebKit::WebInspectorClient::~WebInspectorClient):
        (WebKit::WebInspectorClient::showPaintRect):
        (WebKit::WebInspectorClient::animationEndedForLayer):
        * WebProcess/WebCoreSupport/WebInspectorClient.h:
        * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeContext.h:
        * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeContext.mm:
        (WebKit::RemoteLayerTreeContext::createGraphicsLayer):
        * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h:
        * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm:
        (WebKit::RemoteLayerTreeDrawingArea::updateRootLayers):
        (WebKit::RemoteLayerTreeDrawingArea::flushLayers):

2018-09-14  Eric Carlson  <eric.carlson@apple.com>

        Support arbitrary video resolution in getUserMedia API
        https://bugs.webkit.org/show_bug.cgi?id=178109
        <rdar://problem/35083128>

        Reviewed by Youenn Fablet.

        * WebProcess/cocoa/UserMediaCaptureManager.cpp:

2018-09-14  Basuke Suzuki  <Basuke.Suzuki@sony.com>

        [Curl][WebKit] Bug fix for continuously retrying with empty credentials.
        https://bugs.webkit.org/show_bug.cgi?id=189601

        Reviewed by Alex Christensen.

        Added stop condition for empty credentials passed by client.

        * NetworkProcess/curl/NetworkDataTaskCurl.cpp:
        (WebKit::NetworkDataTaskCurl::curlDidReceiveResponse):
        (WebKit::NetworkDataTaskCurl::invokeDidReceiveResponse):
        (WebKit::NetworkDataTaskCurl::tryHttpAuthentication):
        (WebKit::NetworkDataTaskCurl::tryProxyAuthentication):
        * NetworkProcess/curl/NetworkDataTaskCurl.h:

2018-09-14  Jer Noble  <jer.noble@apple.com>

        Turn SourceBufferChangeTypeEnabled on by default
        https://bugs.webkit.org/show_bug.cgi?id=189527

        Reviewed by Eric Carlson.

        * Shared/WebPreferences.yaml:
        * UIProcess/API/C/WKPreferencesRefPrivate.h:

2018-09-14  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed, speculative WPE build fix after r236004
        https://bugs.webkit.org/show_bug.cgi?id=189545

        * UIProcess/API/wpe/WebKitScriptDialog.h:

2018-09-14  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Make script dialogs modal to the current web view only
        https://bugs.webkit.org/show_bug.cgi?id=189545

        Reviewed by Michael Catanzaro.

        Change the default implementation of script dialogs to use an embedded window, like the HTTP auth dialog,
        instead of a GtkMessageDialog. This patch adds a base class WebKitWebViewDialog shared by
        WebKitAuthenticationDialog and the new WebKitScriptDialogImpl.

        * SourcesGTK.txt: Add new files to compilation.
        * UIProcess/API/glib/WebKitScriptDialogPrivate.h:
        * UIProcess/API/gtk/WebKitAuthenticationDialog.cpp:
        (webkitAuthenticationDialogInitialize): Do not use a frame and use a better styled title.
        (webkit_authentication_dialog_class_init): Remove implementation of vfuncs that are now implemented by the
        parent.
        * UIProcess/API/gtk/WebKitAuthenticationDialog.h:
        * UIProcess/API/gtk/WebKitScriptDialogGtk.cpp:
        (webkitScriptDialogAccept): Use WebKitScriptDialogImpl API.
        (webkitScriptDialogDismiss): Ditto.
        (webkitScriptDialogSetUserInput): Ditto.
        * UIProcess/API/gtk/WebKitScriptDialogImpl.cpp: Added.
        (webkitScriptDialogImplClose):
        (webkitScriptDialogImplKeyPressEvent):
        (webkitScriptDialogImplMap):
        (webkitScriptDialogImplConstructed):
        (webkitScriptDialogImplDispose):
        (webkit_script_dialog_impl_class_init):
        (webkitScriptDialogImplAddButton):
        (webkitScriptDialogImplNew):
        (webkitScriptDialogImplCancel):
        (webkitScriptDialogImplConfirm):
        (webkitScriptDialogImplSetEntryText):
        * UIProcess/API/gtk/WebKitScriptDialogImpl.h: Added.
        * UIProcess/API/gtk/WebKitWebViewBase.cpp:
        (webkitWebViewChildIsInternalWidget): Rename authenticationDialog as just dialog.
        (webkitWebViewBaseAddDialog): Ditto.
        (webkitWebViewBaseContainerRemove): Ditto.
        (webkitWebViewBaseContainerForall): Ditto.
        (webkitWebViewBaseConstructed): Ditto.
        (webkitWebViewBaseSizeAllocate): Ditto.
        (webkitWebViewBaseKeyPressEvent): Ditto.
        (webkitWebViewBaseHandleMouseEvent): Ditto.
        (webkitWebViewBaseButtonPressEvent): Ditto.
        (webkitWebViewBaseButtonReleaseEvent): Ditto.
        (webkitWebViewBaseHandleWheelEvent): Ditto.
        (webkitWebViewBaseScrollEvent): Ditto.
        (webkitWebViewBaseMotionNotifyEvent): Ditto.
        (webkitWebViewBaseCrossingNotifyEvent): Ditto.
        (webkitWebViewBaseTouchEvent): Ditto.
        (webkitWebViewBaseFocus): Ditto.
        (webkitWebViewBaseDestroy): Ditto.
        * UIProcess/API/gtk/WebKitWebViewBasePrivate.h:
        * UIProcess/API/gtk/WebKitWebViewDialog.cpp: Added.
        (webkitWebViewDialogDraw):
        (webkitWebViewDialogSizeAllocate):
        (webkitWebViewDialogConstructed):
        (webkit_web_view_dialog_class_init):
        * UIProcess/API/gtk/WebKitWebViewDialog.h: Added.
        * UIProcess/API/gtk/WebKitWebViewGtk.cpp:
        (webkitWebViewAuthenticate):
        (webkitWebViewScriptDialog):

2018-09-13  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r235954.

        Breaks the watchOS build.

        Reverted changeset:

        "Move IndexedDB to Network Process"
        https://bugs.webkit.org/show_bug.cgi?id=189415
        https://trac.webkit.org/changeset/235954

2018-09-13  Chris Dumez  <cdumez@apple.com>

        Regression(PSON): setting window.opener to null allows process swapping in cases that are not web-compatible
        https://bugs.webkit.org/show_bug.cgi?id=189590
        <rdar://problem/44422725>

        Reviewed by Geoffrey Garen.

        If script calls window.open() without 'noopener' and the newly navigated window gets navigated cross-site,
        we are currently unable to process-swap because the opener has a WindowProxy handle to this new Window and
        may interact with it (which we currently do not support cross-process). We were dealing with this by not
        process-swapping if window.opener is not null. This works most of the time but is not sufficient because the
        opener may get nulled out, while the opener still has a valid WindowProxy handle to its openee.

        Therefore, we now also check for a flag indicating if the frame was opened via window.open() without
        'nooopener'. We still need to check if the browsing context has an opener for browsing context created
        via <a target="_blank"> for example (the opener does not have a handle to the new window but the openee
        has access to its opener).

        * Shared/NavigationActionData.cpp:
        (WebKit::NavigationActionData::encode const):
        (WebKit::NavigationActionData::decode):
        * Shared/NavigationActionData.h:
        * UIProcess/API/APINavigation.h:
        (API::Navigation::openedViaWindowOpenWithOpener const):
        (API::Navigation::setOpenedViaWindowOpenWithOpener):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::decidePolicyForNavigationAction):
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::processForNavigationInternal):
        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):

2018-09-13  Dean Jackson  <dino@grorg.org>

        Generate warnings for Preferences files
        https://bugs.webkit.org/show_bug.cgi?id=189573

        Reviewed by Sam Weinig.

        Generate the "DO NOT EDIT" warnings, rather than have
        them in the template (which was confusing).

        While here, simplify some of the templating generation code
        to avoid duplication.

        * Scripts/GeneratePreferences.rb:
        * Scripts/PreferencesTemplates/WebPageUpdatePreferences.cpp.erb:
        * Scripts/PreferencesTemplates/WebPreferencesDefinitions.h.erb:
        * Scripts/PreferencesTemplates/WebPreferencesExperimentalFeatures.cpp.erb:
        * Scripts/PreferencesTemplates/WebPreferencesInternalDebugFeatures.cpp.erb:
        * Scripts/PreferencesTemplates/WebPreferencesKeys.cpp.erb:
        * Scripts/PreferencesTemplates/WebPreferencesKeys.h.erb:
        * Scripts/PreferencesTemplates/WebPreferencesStoreDefaultsMap.cpp.erb:

2018-09-13  Keith Rollin  <krollin@apple.com>

        WebPageProxy::reportPageLoadResult can crash on some code paths
        https://bugs.webkit.org/show_bug.cgi?id=189568

        Reviewed by Chris Dumez.

        WebPageProxy::reportPageLoadResult (which is called from
        WebPageProxy::didFinishLoadForFrame) can sometimes crash when
        accessing m_pageLoadStart (a std::optional) in its unloaded state.
        Normally, m_pageLoadStart is initialized in
        WebPageProxy::didStartProvisionalLoadForFrame, which one would expect
        would be called before WebPageProxy::didFinishLoadForFrame. But that
        turns out to not always be the case. It's not apparent under what
        conditions didStartProvisionalLoadForFrame will not be called, but
        it's happening in the wild, leading to crashes now that std::optional
        asserts in release builds on bad accesses (see
        https://bugs.webkit.org/show_bug.cgi?id=189568).

        Fix this by checking m_pageLoadState on entry to reportPageLoadResult.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::didFailProvisionalLoadForFrame):
        (WebKit::WebPageProxy::didFinishLoadForFrame):
        (WebKit::WebPageProxy::didFailLoadForFrame):
        (WebKit::WebPageProxy::reportPageLoadResult):

2018-09-13  Chris Dumez  <cdumez@apple.com>

        ProcessSwap.BackWithoutSuspendedPage API test hits assertion under WebPageProxy::didCreateMainFrame()
        https://bugs.webkit.org/show_bug.cgi?id=189599

        Reviewed by Geoffrey Garen.

        The code in WebPageProxy::reattachToWebProcess() was re-initializing m_mainFrame unconditionally in case
        of a HistoryNavigation. The reason we need to initialize m_mainFrame in reattachToWebProcess() is if the
        process we're reattaching to already has a WebPage (with a main frame), in which case
        WebPageProxy::didCreateMainFrame() would not get called to initialize WebPageProxy::m_mainFrame.

        The process we're reattaching to can be in such a state only if it comes from a SuspendedPageProxy (we
        detached the WebProcessProxy from the WebPageProxy but kept the WebPage in the "suspended" WebProcess).
        It is true that we're only reattaching to a SuspendedPageProxy's process in the event of history
        navigations. However, it is not true that all history navigations will use a SuspendedPageProxy's process.
        For example, no SuspendedPageProxy may be available for the history navigation because the history
        was restored to a new view from disk, or because the WebBackForwardListItem no longer has a
        SuspendedPageProxy (we currently only keep a single SuspendedPageProxy for the last HistoryItem).

        Therefore, unconditionally initializating m_mainFrame in reattachToWebProcess() for history navigations
        is incorrect and we should instead check if we're reattaching to a SuspendedPage's process.

        Change is covered by ProcessSwap.BackWithoutSuspendedPage API test which is no longer crashes and
        existing Back/Forward PSON API tests which are still passing.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::reattachToWebProcess):
        (WebKit::WebPageProxy::continueNavigationInNewProcess):
        * UIProcess/WebPageProxy.h:

2018-09-13  Chris Dumez  <cdumez@apple.com>

        Add release logging to help debug PSON issues
        https://bugs.webkit.org/show_bug.cgi?id=189562

        Reviewed by Ryosuke Niwa.

        Add release logging to help debug issues related to process swap on navigation.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::decidePolicyForNavigationAction):
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::processForNavigation):
        (WebKit::WebProcessPool::processForNavigationInternal):
        * UIProcess/WebProcessPool.h:

2018-09-13  Chris Dumez  <cdumez@apple.com>

        Add null check for drawing area in WebPage::didCompletePageTransition() after r235867
        https://bugs.webkit.org/show_bug.cgi?id=189587

        Reviewed by Geoffrey Garen.

        Add null check for drawing area in WebPage::didCompletePageTransition() after r235867
        as this is causing crashes on the bots.

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::didCompletePageTransition):

2018-09-13  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r235953.

        Caused layout test crashes under GuardMalloc.

        Reverted changeset:

        "Make GraphicsLayers ref-counted, so their tree can persist
        when disconnected from RenderLayerBackings"
        https://bugs.webkit.org/show_bug.cgi?id=189521
        https://trac.webkit.org/changeset/235953

2018-09-13  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK][WPE] Allow to run script dialogs asynchronously in the UI process
        https://bugs.webkit.org/show_bug.cgi?id=189544

        Reviewed by Michael Catanzaro.

        Script dialogs are sync in the WebProcess, but we don't need to block the UI process while they are running. Our
        current API doesn't allow it, because it always expects the dialog to be closed in the signal handler. API
        changes are backwards compatible.

        * UIProcess/API/glib/WebKitScriptDialog.cpp:
        (webkitScriptDialogCreate): Added to heap allocate a WebKitScriptDialog.
        (webkitScriptDialogIsRunning): Common implementation here, a script dialog is considered to be running if it has
        a competion handler pending.
        (webkit_script_dialog_ref): WebKitScriptDialog is now refcounted.
        (webkit_script_dialog_unref): Ditto.
        (webkit_script_dialog_close): New method to notify that we are done with the dialog.
        * UIProcess/API/glib/WebKitScriptDialogPrivate.h:
        (_WebKitScriptDialog::_WebKitScriptDialog): Use a single constructor and keep the completion handler.
        * UIProcess/API/glib/WebKitUIClient.cpp: Do not call the completion handler, pass it to the web view.
        * UIProcess/API/glib/WebKitWebView.cpp:
        (webkitWebViewDispose): Close the current script dialog if there's any.
        (webkit_web_view_class_init): Document how to handle dialogs asynchronously.
        (webkitWebViewRunJavaScriptAlert): Do not stack allocate the WebKitScriptDialog, create it with
        webkitScriptDialogCreate() passing the completion handler.
        (webkitWebViewRunJavaScriptConfirm): Ditto.
        (webkitWebViewRunJavaScriptPrompt): Ditto.
        (webkitWebViewRunJavaScriptBeforeUnloadConfirm): Ditto.
        * UIProcess/API/glib/WebKitWebViewPrivate.h:
        * UIProcess/API/gtk/WebKitScriptDialog.h:
        * UIProcess/API/gtk/WebKitScriptDialogGtk.cpp:
        (scriptDialogResponseCallback): Hnadle the response callback.
        (webkitScriptDialogRun): Do not use gtk_dialog_run(), connect to response signal and show the dialogs instead.
        * UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt:
        * UIProcess/API/gtk/docs/webkit2gtk-docs.sgml:
        * UIProcess/API/wpe/WebKitScriptDialogWPE.cpp:

2018-09-12  Dan Bernstein  <mitz@apple.com>

        Update availability annotations to match the macOS and iOS SDKs in the Xcode 10 GM seed
        https://bugs.webkit.org/show_bug.cgi?id=189561

        Reviewed by Tim Horton.

        Changed WK_MAC_TBA and WK_IOS_TBA to 10.14 and 12.0, respectively, in all declarations that
        appear in the GM seed SDKs.

        * Shared/API/Cocoa/_WKRenderingProgressEvents.h:
        * UIProcess/API/Cocoa/WKMenuItemIdentifiersPrivate.h:
        * UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h:
        * UIProcess/API/Cocoa/WKPreferencesPrivate.h:
        * UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
        * UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
        * UIProcess/API/Cocoa/WKUserContentControllerPrivate.h:
        * UIProcess/API/Cocoa/WKViewPrivate.h:
        * UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        * UIProcess/API/Cocoa/WKWebsiteDataRecordPrivate.h:
        * UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
        * UIProcess/API/Cocoa/_WKAttachment.h:
        * UIProcess/API/Cocoa/_WKAutomationDelegate.h:
        * UIProcess/API/Cocoa/_WKAutomationSession.h:
        * UIProcess/API/Cocoa/_WKAutomationSessionDelegate.h:
        * UIProcess/API/Cocoa/_WKFormInputSession.h:
        * UIProcess/API/Cocoa/_WKInputDelegate.h:
        * UIProcess/API/Cocoa/_WKLinkIconParameters.h:
        * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h:
        * UIProcess/API/Cocoa/_WKWebsitePolicies.h:
        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInEditingDelegate.h:
        * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInScriptWorld.h:
        * WebProcess/InjectedBundle/API/mac/WKDOMDocument.h:
        * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugIn.h:

2018-09-12  Dan Bernstein  <mitz@apple.com>

        [Cocoa] Complete support for Paste as Quotation
        https://bugs.webkit.org/show_bug.cgi?id=189504

        Reviewed by Wenson Hsieh.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView canPerformAction:withSender:]): Handle _pasteAsQuotation:. It’s not included
          in FOR_EACH_WKCONTENTVIEW_ACTION, because it’s declared and implemented in the WKPrivate
          category. If we add more actions in the category, it could make sense to fold them into
          a new FOR_EACH_PRIVATE_WKCONTENTVIEW_ACTION.
        (-[WKWebView targetForAction:withSender:]): Handle _pasteAsQuotation:.
        (-[WKWebView _pasteAsQuotation:]): Send to the WebViewImpl or the WKContentView.
        * UIProcess/API/Cocoa/WKWebViewPrivate.h: Declared a new _pasteAsQuotation: action.

        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::selectorExceptionMap): Added a custom mapping from the new selector to the
          PasteAsQuotation command.

        * UIProcess/ios/WKContentViewInteraction.h: Declare methods for the new action.
        * UIProcess/ios/WKContentViewInteraction.mm:
          Forward _pasteAsQuotation: to the WKWebView so that clients get a chance to override its
          behavior.
        (-[WKContentView _pasteAsQuotationForWebView:]): Send the command to the page.

2018-09-12  Sihui Liu  <sihui_liu@apple.com>

        Move IndexedDB to Network Process
        https://bugs.webkit.org/show_bug.cgi?id=189415

        Reviewed by Geoffrey Garen.

        We are going to eliminate storage process and move its functionality to network process. 
        The reasons why we want to do this:
        1. Lower resource usage of having an additional process for storage operations, especially
        memory. Single storage process takes about 5MB memory on macOS.
        2. Reduce latency of Service Workers. After enabling Service Workers, we've seen
        regression in app launch. The launch time of storage process is partly attributed to this:
        Service Workers delay page loading until receiving response from storage process.
        3. We choose network process because UI process may have broader access in file system
        that we don't want the storage operations to have.

        This patch is the first piece towards the goal. It mainly moves indexedDB from storage process
        to corresponding components of network process. Moving of Service Worker and stopping to 
        launch storage process will be done in following patches.

        We expect to see the higher cpu and memory usage of network process as it is taking more work,
        but the overall gain in memory and latency after we completely remove storage process should be 
        positive.


        * CMakeLists.txt:
        * DerivedSources.make:

        * NetworkProcess/IndexedDB/WebIDBConnectionToClient.cpp: Renamed from Source/WebKit/StorageProcess/IndexedDB/WebIDBConnectionToClient.cpp.
        (WebKit::WebIDBConnectionToClient::create):
        (WebKit::WebIDBConnectionToClient::WebIDBConnectionToClient):
        (WebKit::WebIDBConnectionToClient::~WebIDBConnectionToClient):
        (WebKit::WebIDBConnectionToClient::disconnectedFromWebProcess):
        (WebKit::WebIDBConnectionToClient::messageSenderConnection):
        (WebKit::WebIDBConnectionToClient::connectionToClient):
        (WebKit::WebIDBConnectionToClient::didDeleteDatabase):
        (WebKit::WebIDBConnectionToClient::didOpenDatabase):
        (WebKit::WebIDBConnectionToClient::didAbortTransaction):
        (WebKit::WebIDBConnectionToClient::didCommitTransaction):
        (WebKit::WebIDBConnectionToClient::didCreateObjectStore):
        (WebKit::WebIDBConnectionToClient::didDeleteObjectStore):
        (WebKit::WebIDBConnectionToClient::didRenameObjectStore):
        (WebKit::WebIDBConnectionToClient::didClearObjectStore):
        (WebKit::WebIDBConnectionToClient::didCreateIndex):
        (WebKit::WebIDBConnectionToClient::didDeleteIndex):
        (WebKit::WebIDBConnectionToClient::didRenameIndex):
        (WebKit::WebIDBConnectionToClient::didPutOrAdd):
        (WebKit::WebIDBConnectionToClient::handleGetResult):
        (WebKit::WebIDBConnectionToClient::didGetRecord):
        (WebKit::WebIDBConnectionToClient::didGetAllRecords):
        (WebKit::WebIDBConnectionToClient::didGetCount):
        (WebKit::WebIDBConnectionToClient::didDeleteRecord):
        (WebKit::WebIDBConnectionToClient::didOpenCursor):
        (WebKit::WebIDBConnectionToClient::didIterateCursor):
        (WebKit::WebIDBConnectionToClient::fireVersionChangeEvent):
        (WebKit::WebIDBConnectionToClient::didStartTransaction):
        (WebKit::WebIDBConnectionToClient::didCloseFromServer):
        (WebKit::WebIDBConnectionToClient::notifyOpenDBRequestBlocked):
        (WebKit::WebIDBConnectionToClient::didGetAllDatabaseNames):
        (WebKit::WebIDBConnectionToClient::deleteDatabase):
        (WebKit::WebIDBConnectionToClient::openDatabase):
        (WebKit::WebIDBConnectionToClient::abortTransaction):
        (WebKit::WebIDBConnectionToClient::commitTransaction):
        (WebKit::WebIDBConnectionToClient::didFinishHandlingVersionChangeTransaction):
        (WebKit::WebIDBConnectionToClient::createObjectStore):
        (WebKit::WebIDBConnectionToClient::deleteObjectStore):
        (WebKit::WebIDBConnectionToClient::renameObjectStore):
        (WebKit::WebIDBConnectionToClient::clearObjectStore):
        (WebKit::WebIDBConnectionToClient::createIndex):
        (WebKit::WebIDBConnectionToClient::deleteIndex):
        (WebKit::WebIDBConnectionToClient::renameIndex):
        (WebKit::WebIDBConnectionToClient::putOrAdd):
        (WebKit::WebIDBConnectionToClient::getRecord):
        (WebKit::WebIDBConnectionToClient::getAllRecords):
        (WebKit::WebIDBConnectionToClient::getCount):
        (WebKit::WebIDBConnectionToClient::deleteRecord):
        (WebKit::WebIDBConnectionToClient::openCursor):
        (WebKit::WebIDBConnectionToClient::iterateCursor):
        (WebKit::WebIDBConnectionToClient::establishTransaction):
        (WebKit::WebIDBConnectionToClient::databaseConnectionPendingClose):
        (WebKit::WebIDBConnectionToClient::databaseConnectionClosed):
        (WebKit::WebIDBConnectionToClient::abortOpenAndUpgradeNeeded):
        (WebKit::WebIDBConnectionToClient::didFireVersionChangeEvent):
        (WebKit::WebIDBConnectionToClient::openDBRequestCancelled):
        (WebKit::WebIDBConnectionToClient::confirmDidCloseFromServer):
        (WebKit::WebIDBConnectionToClient::getAllDatabaseNames):
        * NetworkProcess/IndexedDB/WebIDBConnectionToClient.h: Renamed from Source/WebKit/StorageProcess/IndexedDB/WebIDBConnectionToClient.h.
        * NetworkProcess/IndexedDB/WebIDBConnectionToClient.messages.in: Renamed from Source/WebKit/StorageProcess/IndexedDB/WebIDBConnectionToClient.messages.in.
        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
        (WebKit::NetworkConnectionToWebProcess::didReceiveMessage):

        Code moved from StorageToWebProcessConnection::didReceiveMessage.

        (WebKit::NetworkConnectionToWebProcess::didClose):
        (WebKit::NetworkConnectionToWebProcess::writeBlobsToTemporaryFiles):

        Network process receives and stores sandbox extension of temporary files for later indexedDB
        use.

        (WebKit::generateIDBConnectionToServerIdentifier):
        (WebKit::NetworkConnectionToWebProcess::establishIDBConnectionToServer):
        (WebKit::NetworkConnectionToWebProcess::removeIDBConnectionToServer):
        * NetworkProcess/NetworkConnectionToWebProcess.h:
        * NetworkProcess/NetworkConnectionToWebProcess.messages.in:
        * NetworkProcess/NetworkProcess.cpp:
        (WebKit::NetworkProcess::NetworkProcess):
        (WebKit::NetworkProcess::initializeNetworkProcess):
        (WebKit::NetworkProcess::addWebsiteDataStore):
        (WebKit::NetworkProcess::fetchWebsiteData):
        (WebKit::NetworkProcess::deleteWebsiteData):
        (WebKit::NetworkProcess::deleteWebsiteDataForOrigins):
        (WebKit::NetworkProcess::idbServer):
        (WebKit::NetworkProcess::ensurePathExists):
        (WebKit::NetworkProcess::postStorageTask):
        (WebKit::NetworkProcess::performNextStorageTask):
        (WebKit::NetworkProcess::prepareForAccessToTemporaryFile):
        (WebKit::NetworkProcess::accessToTemporaryFileComplete):
        (WebKit::NetworkProcess::indexedDatabaseOrigins):
        (WebKit::NetworkProcess::addIndexedDatabaseSession):
        (WebKit::NetworkProcess::getSandboxExtensionsForBlobFiles):

        Instead of asking UI process to grant sandbox extension to storage process, now network 
        process just asks for sandbox extension fot itself.

        (WebKit::NetworkProcess::didGetSandboxExtensionsForBlobFiles):
        (WebKit::NetworkProcess::updateTemporaryFileSandboxExtensions):
        (WebKit::NetworkProcess::grantSandboxExtensionsToStorageProcessForBlobs): Deleted.
        (WebKit::NetworkProcess::didGrantSandboxExtensionsToStorageProcessForBlobs): Deleted.
        * NetworkProcess/NetworkProcess.h:
        (WebKit::NetworkProcess::queue):
        * NetworkProcess/NetworkProcess.messages.in:
        * NetworkProcess/NetworkProcessCreationParameters.cpp:
        (WebKit::NetworkProcessCreationParameters::encode const):
        (WebKit::NetworkProcessCreationParameters::decode):
        * NetworkProcess/NetworkProcessCreationParameters.h:
        * Shared/Storage/StorageProcessCreationParameters.cpp:
        (WebKit::StorageProcessCreationParameters::encode const):
        (WebKit::StorageProcessCreationParameters::decode):
        * Shared/Storage/StorageProcessCreationParameters.h:
        * Shared/WebsiteDataStoreParameters.cpp:
        (WebKit::WebsiteDataStoreParameters::encode const):
        (WebKit::WebsiteDataStoreParameters::decode):
        (WebKit::WebsiteDataStoreParameters::privateSessionParameters):
        * Shared/WebsiteDataStoreParameters.h:
        * Sources.txt:
        * StorageProcess/StorageProcess.cpp:
        (WebKit::StorageProcess::initializeWebsiteDataStore):
        (WebKit::StorageProcess::fetchWebsiteData):
        (WebKit::StorageProcess::deleteWebsiteData):
        (WebKit::StorageProcess::deleteWebsiteDataForOrigins):
        (WebKit::StorageProcess::idbServer): Deleted.
        (WebKit::StorageProcess::grantSandboxExtensionsForBlobs): Deleted.
        (WebKit::StorageProcess::prepareForAccessToTemporaryFile): Deleted.
        (WebKit::StorageProcess::accessToTemporaryFileComplete): Deleted.
        (WebKit::StorageProcess::indexedDatabaseOrigins): Deleted.
        (WebKit::StorageProcess::getSandboxExtensionsForBlobFiles): Deleted.
        (WebKit::StorageProcess::didGetSandboxExtensionsForBlobFiles): Deleted.
        * StorageProcess/StorageProcess.h:
        (WebKit::StorageProcess::queue): Deleted.
        * StorageProcess/StorageProcess.messages.in:
        * StorageProcess/StorageToWebProcessConnection.cpp:
        (WebKit::StorageToWebProcessConnection::didReceiveMessage):
        (WebKit::StorageToWebProcessConnection::didClose):
        (WebKit::generateIDBConnectionToServerIdentifier): Deleted.
        (WebKit::StorageToWebProcessConnection::establishIDBConnectionToServer): Deleted.
        (WebKit::StorageToWebProcessConnection::removeIDBConnectionToServer): Deleted.
        * StorageProcess/StorageToWebProcessConnection.h:
        * StorageProcess/StorageToWebProcessConnection.messages.in:
        * UIProcess/Network/NetworkProcessProxy.cpp:
        (WebKit::NetworkProcessProxy::getSandboxExtensionsForBlobFiles):
        (WebKit::NetworkProcessProxy::grantSandboxExtensionsToStorageProcessForBlobs): Deleted.
        * UIProcess/Network/NetworkProcessProxy.h:
        * UIProcess/Network/NetworkProcessProxy.messages.in:
        * UIProcess/Storage/StorageProcessProxy.cpp:
        (WebKit::StorageProcessProxy::getSandboxExtensionsForBlobFiles): Deleted.
        * UIProcess/Storage/StorageProcessProxy.h:
        * UIProcess/Storage/StorageProcessProxy.messages.in:
        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::ensureNetworkProcess):
        (WebKit::WebProcessPool::ensureStorageProcessAndWebsiteDataStore):
        (WebKit::WebProcessPool::pageBeginUsingWebsiteDataStore):
        * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:
        (WebKit::WebsiteDataStore::parameters):
        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
        (WebKit::computeNetworkProcessAccessTypeForDataFetch):
        (WebKit::WebsiteDataStore::fetchDataAndApply):
        (WebKit::computeNetworkProcessAccessTypeForDataRemoval):
        (WebKit::WebsiteDataStore::removeData):
        (WebKit::WebsiteDataStore::storageProcessParameters):
        (WebKit::WebsiteDataStore::parameters):
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp:
        (WebKit::WebIDBConnectionToServer::WebIDBConnectionToServer):
        (WebKit::WebIDBConnectionToServer::~WebIDBConnectionToServer):
        (WebKit::WebIDBConnectionToServer::messageSenderConnection):
        * WebProcess/Databases/WebDatabaseProvider.cpp:
        (WebKit::WebDatabaseProvider::idbConnectionToServerForSession):
        * WebProcess/Network/NetworkProcessConnection.cpp:
        (WebKit::NetworkProcessConnection::didReceiveMessage):
        (WebKit::NetworkProcessConnection::didClose):
        (WebKit::NetworkProcessConnection::idbConnectionToServerForSession):
        * WebProcess/Network/NetworkProcessConnection.h:
        (WebKit::NetworkProcessConnection::existingIDBConnectionToServerForIdentifier):
        * WebProcess/Storage/WebToStorageProcessConnection.cpp:
        (WebKit::WebToStorageProcessConnection::didReceiveMessage):

        Code moved from WebToStorageProcessConnection::didReceiveMessage.

        (WebKit::WebToStorageProcessConnection::didClose):
        (WebKit::WebToStorageProcessConnection::idbConnectionToServerForSession): Deleted.
        * WebProcess/Storage/WebToStorageProcessConnection.h:
        (WebKit::WebToStorageProcessConnection::existingIDBConnectionToServerForIdentifier): Deleted.
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::networkProcessConnectionClosed):
        (WebKit::WebProcess::webToStorageProcessConnectionClosed):

2018-09-11  Simon Fraser  <simon.fraser@apple.com>

        Make GraphicsLayers ref-counted, so their tree can persist when disconnected from RenderLayerBackings
        https://bugs.webkit.org/show_bug.cgi?id=189521

        Reviewed by Tim Horton.

        Make GraphicsLayer be RefCounted<GraphicsLayer>. GraphicsLayers own their children, via a Vector<Ref<GraphicsLayer>>.
        
        RenderLayerBacking and other holders of GraphicsLayers use RefPtr<GraphicsLayer>.
        
        All the other changes are just to adapt to the new ownership patterns.
        
        I verified that no GraphicsLayers were leaked or abandoned after this change.

        * WebProcess/WebCoreSupport/WebInspectorClient.cpp:
        (WebKit::WebInspectorClient::~WebInspectorClient):
        (WebKit::WebInspectorClient::showPaintRect):
        (WebKit::WebInspectorClient::animationEndedForLayer):
        * WebProcess/WebCoreSupport/WebInspectorClient.h:
        * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeContext.h:
        * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeContext.mm:
        (WebKit::RemoteLayerTreeContext::createGraphicsLayer):
        * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h:
        * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm:
        (WebKit::RemoteLayerTreeDrawingArea::updateRootLayers):
        (WebKit::RemoteLayerTreeDrawingArea::flushLayers):

2018-09-12  Chris Dumez  <cdumez@apple.com>

        PSON: No process swap on back navigation after URL bar navigation
        https://bugs.webkit.org/show_bug.cgi?id=189557
        <rdar://problem/44353108>

        Reviewed by Alex Christensen.

        Our logic in WebProcessPool::processForNavigationInternal() was wrongly using
        WebBackForwardList::currentItem() as source item of the navigation, instead of
        using Navigation::fromItem(). In case of back navigation, by the time
        processForNavigation() is called, the WebBackForwardList's currentItem has already
        been updated to be the target item, via a Sync IPC from the WebProcess. As a result,
        the source and target items would be the same in the following check:
        ` if (currentItem->itemID().processIdentifier == backForwardListItem->itemID().processIdentifier)`

        This would cause us to reuse the same process incorrectly. Our existing API test coverage
        did not catch this because our target HistoryItem usually has a SuspendedPage and we decide
        to use the SuspendedPage's process a few lines above in WebProcessPool::processForNavigationInternal().

        * UIProcess/WebProcessPool.cpp:
        (WebKit::WebProcessPool::processForNavigationInternal):

2018-09-12  Alex Christensen  <achristensen@webkit.org>

        Make IPC::SharedBufferDataReference a type that decodes into but does not inherit from IPC::DataReference
        https://bugs.webkit.org/show_bug.cgi?id=189519

        Reviewed by Chris Dumez.

        * NetworkProcess/NetworkConnectionToWebProcess.messages.in:
        * NetworkProcess/NetworkResourceLoader.cpp:
        (WebKit::NetworkResourceLoader::bufferingTimerFired):
        (WebKit::NetworkResourceLoader::sendBuffer):
        * Platform/IPC/DataReference.cpp:
        (IPC::SharedBufferDataReference::encode const): Deleted.
        * Platform/IPC/DataReference.h:
        (IPC::SharedBufferDataReference::SharedBufferDataReference): Deleted.
        * Platform/IPC/HandleMessage.h:
        * Platform/IPC/SharedBufferDataReference.h: Added.
        (IPC::SharedBufferDataReference::SharedBufferDataReference):
        (IPC::SharedBufferDataReference::encode const):
        * Scripts/webkit/messages.py:
        * Shared/API/APIData.h:
        * StorageProcess/StorageProcess.messages.in:
        * UIProcess/WebPageProxy.messages.in:
        * UIProcess/WebURLSchemeTask.cpp:
        (WebKit::WebURLSchemeTask::didReceiveData):
        * WebKit.xcodeproj/project.pbxproj:
        * WebProcess/Network/WebLoaderStrategy.cpp:
        (WebKit::WebLoaderStrategy::storeDerivedDataToCache):
        * WebProcess/Network/WebResourceLoader.messages.in:
        * WebProcess/Storage/WebServiceWorkerFetchTaskClient.cpp:
        (WebKit::WebServiceWorkerFetchTaskClient::didReceiveData):
        (WebKit::WebServiceWorkerFetchTaskClient::didReceiveBlobChunk):
        * WebProcess/WebCoreSupport/WebEditorClient.cpp:
        (WebKit::WebEditorClient::registerAttachmentIdentifier):
        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::getContentsAsMHTMLData):
        (WebKit::WebPage::getSelectionAsWebArchiveData):
        (WebKit::WebPage::getMainResourceDataOfFrame):
        (WebKit::WebPage::getResourceDataFromFrame):
        (WebKit::WebPage::getWebArchiveOfFrame):
        (WebKit::WebPage::drawPagesToPDF):
        * WebProcess/WebPage/WebPage.messages.in:

2018-09-11  Dean Jackson  <dino@apple.com>

        Header parsing for experimental and internal debug features
        https://bugs.webkit.org/show_bug.cgi?id=189486
        <rdar://problem/44320618>

        Reviewed by Tim Horton.

        Provide key-based (string) access to experimental and internal features.

        * Scripts/PreferencesTemplates/WebPreferencesExperimentalFeatures.cpp.erb:
        * Scripts/PreferencesTemplates/WebPreferencesInternalDebugFeatures.cpp.erb:
        * UIProcess/API/C/WKPreferences.cpp:
        (WKPreferencesSetExperimentalFeatureForKey):
        (WKPreferencesResetAllInternalDebugFeatures):
        (WKPreferencesSetInternalDebugFeatureForKey):
        * UIProcess/API/C/WKPreferencesRefPrivate.h:
        * UIProcess/WebPreferences.h:

2018-09-10  Matt Rajca  <mrajca@apple.com>

        Expose a few WebPlaybackControlsManager-driven PIP APIs to clients
        https://bugs.webkit.org/show_bug.cgi?id=189478
        <rdar://problem/44312650>

        Reviewed by Eric Carlson.

        This patch exposes APIs necessary to toggle PIP and query its status from clients of WKWebView.
        The existing PIP test has been updated to use the new APIs instead of simulating mouse clicks.
        I also increased the size of the video element in the test page so it gets picked up by the
        main content heuristics.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _updateMediaPlaybackControlsManager]): Create a media playback controls manager if necessary.
        (-[WKWebView _isPictureInPictureActive]): Return true if the "active" media element is in PIP.
        (-[WKWebView _togglePictureInPicture]): Toggle PIP on the "active" media element.
        (-[WKWebView _canTogglePictureInPicture]): Renamed from...
        (-[WKWebView _canTogglePictureInPictureForTesting]):
        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
        * UIProcess/Cocoa/WebViewImpl.h:
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::isPictureInPictureActive): Return true if the "active" media element is in PIP.
        (WebKit::WebViewImpl::togglePictureInPicture): Toggle PIP on the "active" media element.
        (WebKit::WebViewImpl::updateMediaPlaybackControlsManager): Let clients create a playback
         controls manager even when there is no Touch Bar present.
        (WebKit::WebViewImpl::updateMediaTouchBar): Extract some code into a helper method.
        (WebKit::WebViewImpl::canTogglePictureInPicture): Renamed from...
        (WebKit::WebViewImpl::canTogglePictureInPictureForTesting):

2018-09-12  Fujii Hironori  <Hironori.Fujii@sony.com>

        [Win][Clang] error: non-constant-expression cannot be narrowed from type 'int' to 'SHORT'
        https://bugs.webkit.org/show_bug.cgi?id=189542

        Reviewed by Alex Christensen.

        * UIProcess/win/WebInspectorProxyWin.cpp:
        (WebKit::WebInspectorProxy::platformCreateFrontendPage): Narrowed initialWindowWidth and initialWindowHeight by using static_cast.

2018-09-12  Chris Dumez  <cdumez@apple.com>

        Clean up SuspendedPageProxy
        https://bugs.webkit.org/show_bug.cgi?id=189517

        Reviewed by Alex Christensen.

        Clean up SuspendedPageProxy:
        1. SuspendedPageProxy does not need to be RefCounted. It is even dangerous given that WebPageProxy
           owns the SuspendedPageProxy and SuspendedPageProxy has a WebPageProxy& data member. We definitely
           do not want it to outlive its WebPageProxy.
        2. The SuspendedPageProxy destructor does not need to be virtual.
        3. Have WebBackForwardListItem keep a WeakPtr<SuspendedPageProxy> instead of a SuspendedPageProxy*.
           This is safer and avoid having to explicitly clear the pointer.
        4. m_finishedSuspending data member does not need a getter and is only needed if !LOG_DISABLED.

        * Shared/WebBackForwardListItem.cpp:
        (WebKit::WebBackForwardListItem::setSuspendedPage):
        * Shared/WebBackForwardListItem.h:
        (WebKit::WebBackForwardListItem::suspendedPage const):
        * UIProcess/SuspendedPageProxy.cpp:
        (WebKit::SuspendedPageProxy::SuspendedPageProxy):
        (WebKit::SuspendedPageProxy::~SuspendedPageProxy):
        (WebKit::SuspendedPageProxy::webProcessDidClose):
        (WebKit::SuspendedPageProxy::didFinishLoad):
        * UIProcess/SuspendedPageProxy.h:
        (WebKit::SuspendedPageProxy::process const):
        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::maybeCreateSuspendedPage):
        (WebKit::WebPageProxy::reattachToWebProcess):
        * UIProcess/WebPageProxy.h:

2018-09-12  Guillaume Emont  <guijemont@igalia.com>

        Add IGNORE_WARNING_.* macros
        https://bugs.webkit.org/show_bug.cgi?id=188996

        Reviewed by Michael Catanzaro.

        * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
        (WebKit::NetworkDataTaskCocoa::statelessCookieStorage):
        * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
        (WebKit::NetworkProcess::platformSyncAllCookies):
        * PluginProcess/mac/PluginProcessMac.mm:
        (WebKit::beginModal):
        * PluginProcess/mac/PluginProcessShim.mm:
        * Shared/Plugins/Netscape/NetscapePluginModule.cpp:
        (WebKit::NetscapePluginModule::tryLoad):
        * Shared/ios/ChildProcessIOS.mm:
        (WebKit::ChildProcess::initializeSandbox):
        * Shared/mac/ChildProcessMac.mm:
        (WebKit::compileAndApplySandboxSlowCase):
        * Shared/mac/ColorSpaceData.mm:
        (WebKit::ColorSpaceData::decode):
        * Shared/mac/SandboxExtensionMac.mm:
        (WebKit::SandboxExtensionImpl::sandboxExtensionForType):
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView _web_superAccessibilityAttributeValue:]):
        * UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
        * UIProcess/API/Cocoa/_WKWebsiteDataStore.mm:
        * UIProcess/API/glib/WebKitWebView.cpp:
        (webkitWebViewRunAsModal):
        * UIProcess/API/mac/WKView.mm:
        (-[WKView _web_superAccessibilityAttributeValue:]):
        * UIProcess/Cocoa/DownloadClient.mm:
        (WebKit::DownloadClient::decideDestinationWithSuggestedFilename):
        * UIProcess/Cocoa/LegacyCustomProtocolManagerClient.mm:
        (-[WKCustomProtocolLoader initWithLegacyCustomProtocolManagerProxy:customProtocolID:request:]):
        * UIProcess/Cocoa/NavigationState.mm:
        (WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction):
        * UIProcess/Cocoa/UIDelegate.mm:
        (WebKit::UIDelegate::ContextMenuClient::menuFromProposedMenu):
        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
        (WebKit::WebProcessPool::platformInitializeWebProcess):
        * UIProcess/Cocoa/WebViewImpl.mm:
        (-[WKTextListTouchBarViewController initWithWebViewImpl:]):
        (WebKit::WebViewImpl::updateWindowAndViewFrames):
        (WebKit::WebViewImpl::sendDragEndToPage):
        (WebKit::WebViewImpl::startDrag):
        (WebKit::WebViewImpl::characterIndexForPoint):
        * UIProcess/Plugins/mac/PluginProcessProxyMac.mm:
        (WebKit::PluginProcessProxy::getPluginProcessSerialNumber):
        (WebKit::PluginProcessProxy::makePluginProcessTheFrontProcess):
        (WebKit::PluginProcessProxy::makeUIProcessTheFrontProcess):
        (WebKit::PluginProcessProxy::exitFullscreen):
        * UIProcess/ios/SmartMagnificationController.mm:
        * UIProcess/ios/WKGeolocationProviderIOS.mm:
        * UIProcess/ios/WKLegacyPDFView.mm:
        * UIProcess/ios/WKPDFPageNumberIndicator.mm:
        (-[WKPDFPageNumberIndicator _makeRoundedCorners]):
        * UIProcess/ios/forms/WKAirPlayRoutePicker.mm:
        * UIProcess/ios/forms/WKFileUploadPanel.mm:
        (-[WKFileUploadPanel _presentPopoverWithContentViewController:animated:]):
        * UIProcess/ios/forms/WKFormColorControl.mm:
        (-[WKColorPopover initWithView:]):
        * UIProcess/ios/forms/WKFormInputControl.mm:
        (-[WKDateTimePopover initWithView:datePickerMode:]):
        * UIProcess/ios/forms/WKFormPopover.h:
        * UIProcess/ios/forms/WKFormPopover.mm:
        * UIProcess/ios/forms/WKFormSelectPopover.mm:
        (-[WKSelectPopover initWithView:hasGroups:]):
        * UIProcess/mac/PageClientImplMac.mm:
        (WebKit::PageClientImpl::screenToRootView):
        (WebKit::PageClientImpl::rootViewToScreen):
        * UIProcess/mac/WKFullScreenWindowController.mm:
        (-[WKFullScreenWindowController enterFullScreen:]):
        (-[WKFullScreenWindowController finishedEnterFullScreenAnimation:]):
        (-[WKFullScreenWindowController exitFullScreen]):
        (-[WKFullScreenWindowController beganExitFullScreenWithInitialFrame:finalFrame:]):
        (-[WKFullScreenWindowController finishedExitFullScreenAnimation:]):
        (-[WKFullScreenWindowController completeFinishExitFullScreenAnimationAfterRepaint]):
        (-[WKFullScreenWindowController _startEnterFullScreenAnimationWithDuration:]):
        (-[WKFullScreenWindowController _startExitFullScreenAnimationWithDuration:]):
        * UIProcess/mac/WKPrintingView.mm:
        (-[WKPrintingView _setAutodisplay:]):
        (-[WKPrintingView _drawPDFDocument:page:atPoint:]):
        (-[WKPrintingView _drawPreview:]):
        (-[WKPrintingView drawRect:]):
        * UIProcess/mac/WKTextInputWindowController.mm:
        (-[WKTextInputPanel _interpretKeyEvent:usingLegacyCocoaTextInput:string:]):
        (-[WKTextInputPanel _hasMarkedText]):
        * UIProcess/mac/WebPopupMenuProxyMac.mm:
        (WebKit::WebPopupMenuProxyMac::showPopupMenu):
        * WebProcess/Plugins/Netscape/mac/NetscapePluginMac.mm:
        (WebKit::initializeEventRecord):
        (WebKit::NetscapePlugin::sendComplexTextInput):
        (WebKit::makeCGLPresentLayerOpaque):
        (WebKit::NetscapePlugin::nullEventTimerFired):
        * WebProcess/Plugins/PDF/PDFPlugin.mm:
        (-[WKPDFPluginAccessibilityObject accessibilityFocusedUIElement]):
        (-[WKPDFLayerControllerDelegate writeItemsToPasteboard:withTypes:]):
        (WebKit::PDFPlugin::handleEditingCommand):
        (WebKit::PDFPlugin::setActiveAnnotation):
        (WebKit:: const):
        * WebProcess/Plugins/PDF/PDFPluginChoiceAnnotation.h:
        * WebProcess/Plugins/PDF/PDFPluginChoiceAnnotation.mm:
        (WebKit::PDFPluginChoiceAnnotation::createAnnotationElement):
        * WebProcess/Plugins/PDF/PDFPluginTextAnnotation.h:
        * WebProcess/Plugins/PDF/PDFPluginTextAnnotation.mm:
        (WebKit::PDFPluginTextAnnotation::createAnnotationElement):
        * WebProcess/WebCoreSupport/WebAlternativeTextClient.h:
        * WebProcess/WebCoreSupport/mac/WebDragClientMac.mm:
        (WebKit::convertImageToBitmap):
        (WebKit::WebDragClient::declareAndWriteDragImage):
        * WebProcess/WebPage/mac/WKAccessibilityWebPageObjectMac.mm:
        * WebProcess/WebPage/mac/WebPageMac.mm:
        (WebKit::drawPDFPage):

2018-09-11  Olivia Barnett  <obarnett@apple.com>

        Implement the Web Share API for mac
        https://bugs.webkit.org/show_bug.cgi?id=189443

        Reviewed by Tim Horton.

        * Shared/WebPreferencesDefaultValues.h:
        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView shareSheetDidDismiss:]):
        * UIProcess/API/Cocoa/WKWebViewInternal.h:
        * UIProcess/API/mac/WKView.mm:
        (-[WKView shareSheetDidDismiss:]):
        * UIProcess/Cocoa/WebViewImpl.h:
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::showShareSheet):
        (WebKit::WebViewImpl::shareSheetDidDismiss):
        Implemented function for WKShareSheetDelegate.

        * UIProcess/Cocoa/WKShareSheet.h:
        * UIProcess/Cocoa/WKShareSheet.mm:
        (-[WKShareSheet initWithView:initWithView:]):
        (-[WKShareSheet presentWithParameters:completionHandler:]):
        (-[WKShareSheet sharingServicePicker:didChooseSharingService:]):
        (-[WKShareSheet _cancel]):
        (-[WKShareSheet dismiss]):
        (-[WKShareSheet _dismissDisplayAnimated:]):
        (-[WKShareSheet invokeShareSheetWithResolution:]):
        (-[WKShareSheet initWithView:]): Deleted.
        Added mac platform checks and share sheet functionality.

        * UIProcess/mac/PageClientImplMac.h:
        * UIProcess/mac/PageClientImplMac.mm:
        (WebKit::PageClientImpl::showShareSheet):
        Allows macos to invoke the system share sheet.

2018-09-07  Dean Jackson  <dino@apple.com>

        Add and expose Internal features from WebKit
        https://bugs.webkit.org/show_bug.cgi?id=189442
        <rdar://problem/44243404>

        Reviewed by Simon Fraser.

        Experimental features have become a mess. People are using them for
        anything that they want to be easily toggled from a host app (e.g.
        Safari), which means the user-facing menu has become large and
        confusing.

        Introduce the idea of Internal features, that will be exposed in a way
        that end-users are not expected to ever see (unless they really want
        to).

        * CMakeLists.txt: Add new files.
        * Sources.txt:
        * SourcesCocoa.txt:
        * WebKit.xcodeproj/project.pbxproj:

        * DerivedSources.make: Add new generated files.
        * Scripts/GeneratePreferences.rb: Generate the preferences stuff for Internal Debug features.
        * Scripts/PreferencesTemplates/WebPreferencesDefinitions.h.erb:
        * Scripts/PreferencesTemplates/WebPreferencesInternalDebugFeatures.cpp.erb: Added.

        * Shared/API/APIObject.h: New API object for InternalDebugFeature.
        * Shared/Cocoa/APIObject.mm:
        (API::Object::newObject):

        * Shared/WebPreferences.yaml: Change some of the existing experimental features to "internal".

        * UIProcess/API/APIInternalDebugFeature.cpp: New API type - just like APIExperimentalFeature.
        (API::InternalDebugFeature::create):
        (API::InternalDebugFeature::InternalDebugFeature):
        (API::InternalDebugFeature::~InternalDebugFeature):
        * UIProcess/API/APIInternalDebugFeature.h:
        * UIProcess/API/C/WKAPICast.h:

        * UIProcess/API/Cocoa/WKPreferences.mm: Change the naming of the experimental feature API so that it
        won't clash with internal debug features. We can remove the old API once Safari has adopted.
        (+[WKPreferences _internalDebugFeatures]):
        (-[WKPreferences _isEnabledForInternalDebugFeature:]):
        (-[WKPreferences _setEnabled:forInternalDebugFeature:]):
        (-[WKPreferences _isEnabledForFeature:]):
        (-[WKPreferences _setEnabled:forFeature:]):
        (-[WKPreferences _isEnabledForExperimentalFeature:]):
        (-[WKPreferences _setEnabled:forExperimentalFeature:]):
        * UIProcess/API/Cocoa/WKPreferencesPrivate.h:

        * UIProcess/API/Cocoa/_WKInternalDebugFeature.h: New object - same as _WKExperimentalFeature.
        * UIProcess/API/Cocoa/_WKInternalDebugFeature.mm:
        (-[_WKInternalDebugFeature dealloc]):
        (-[_WKInternalDebugFeature description]):
        (-[_WKInternalDebugFeature name]):
        (-[_WKInternalDebugFeature key]):
        (-[_WKInternalDebugFeature details]):
        (-[_WKInternalDebugFeature defaultValue]):
        (-[_WKInternalDebugFeature isHidden]):
        (-[_WKInternalDebugFeature _apiObject]):
        * UIProcess/API/Cocoa/_WKInternalDebugFeatureInternal.h:

        * UIProcess/WebPreferences.cpp: Add support for Internal Debug features.
        (WebKit::WebPreferences::updateBoolValueForInternalDebugFeatureKey):
        (WebKit::WebPreferences::updateBoolValueForExperimentalFeatureKey):
        * UIProcess/WebPreferences.h:

        * UIProcess/WebProcessPool.cpp: Change a comment now that it is an internal feature.
        (WebKit::WebProcessPool::createWebPage):

2018-09-11  Eric Carlson  <eric.carlson@apple.com>

        WebPage::close should clear UserMediaPermissionRequestManager
        https://bugs.webkit.org/show_bug.cgi?id=189369
        <rdar://problem/44196724>

        Reviewed by Youenn Fablet.

        * WebProcess/WebPage/WebPage.cpp:
        (WebKit::WebPage::close): Clear m_userMediaPermissionRequestManager.

2018-09-11  Wenson Hsieh  <wenson_hsieh@apple.com>

        [macOS] [WK2] Support changing foreground colors via color panel
        https://bugs.webkit.org/show_bug.cgi?id=189382
        <rdar://problem/44227311>

        Reviewed by Ryosuke Niwa.

        Adds support for changing font color in a richly editable element in WebKit2 via NSColorPanel. See below for
        more detail, as well as the WebCore ChangeLog.

        * UIProcess/API/Cocoa/WKWebView.mm:
        (-[WKWebView changeColor:]):

        Implement this selector; AppKit calls into this when changing font color using NSColorPanel.

        * UIProcess/Cocoa/WebViewImpl.h:
        * UIProcess/Cocoa/WebViewImpl.mm:
        (WebKit::WebViewImpl::changeFontColorFromSender):

        Creates and populates new FontAttributeChanges, with only the foreground color determined by asking the sender
        object for its -color.

        * WebProcess/WebPage/mac/WebPageMac.mm:

        Use the relevant EditAction for the incoming FontAttributeChanges, instead of always specifying
        EditAction::ChangeAttributes.

        (WebKit::WebPage::changeFontAttributes):

2018-09-11  Myles C. Maxfield  <mmaxfield@apple.com>

        Crash under PlatformPopupMenuData::encode when interacting with a select menu that has variable fonts
        https://bugs.webkit.org/show_bug.cgi?id=188008

        Reviewed by Alex Christensen.

        This patch is a follow-up to https://bugs.webkit.org/show_bug.cgi?id=180307.
        Variable fonts have CFDictionaries with non-string keys. We need to support that in our IPC code.

        * Shared/cf/ArgumentCodersCF.cpp:
        (IPC::encode):
        (IPC::decode):

2018-09-11  Adrian Perez de Castro  <aperez@igalia.com>

        [WPE][GTK] API documentation is unclear about how to modify requests before sending them
        https://bugs.webkit.org/show_bug.cgi?id=189505

        Reviewed by Michael Catanzaro.

        Add notes to the API documentation to make explicit where modification
        of WebKitURIRequest instances affects the request data sent over the
        network.

        * UIProcess/API/glib/WebKitNavigationAction.cpp: Clarify that
        modifications to the associated WebKitURIRequest do not affect the
        actual request. Point to WebKitPage::send-request instead.
        * UIProcess/API/glib/WebKitResponsePolicyDecision.cpp: Ditto.
        * UIProcess/API/glib/WebKitWebView.cpp:
        (webkit_web_view_class_init): Ditto for the description of the
        WebKitWebView::decide-policy signal. Also fix the syntax of example.
        * WebProcess/InjectedBundle/API/glib/WebKitWebPage.cpp:
        (webkit_web_page_class_init): Indicate that modifications to the
        WebKitURIRequest will change the actual network request data.

2018-09-11  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed, attempt to fix Apple builds after r235903
        https://bugs.webkit.org/show_bug.cgi?id=188872

        If it really needs to be inlined, it will need to move to the header....

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::pageClient const):

2018-09-11  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed, fix build after r235903
        https://bugs.webkit.org/show_bug.cgi?id=188872

        This broke all ports except GTK. Need to add a missing header.

        * UIProcess/PageClient.h:

2018-09-11  Pablo Saavedra  <psaavedra@igalia.com>

        Add missing #if ENABLE(VIDEO) WebProcess/FullScreen/WebFullScreenManager.cpp
        https://bugs.webkit.org/show_bug.cgi?id=189506

        Reviewed by Tim Horton.

        m_pipStandbyElement is only defined in
        WebKit/WebProcess/FullScreen/WebFullScreenManager.h
        only when ENABLE(VIDEO) (see
        https://bugs.webkit.org/show_bug.cgi?id=181338)

        * WebProcess/FullScreen/WebFullScreenManager.cpp:
        (WebKit::WebFullScreenManager::setPIPStandbyElement):

2018-09-11  Michael Catanzaro  <mcatanzaro@igalia.com>

        WebPageProxy should hold a WeakPtr to its PageClient
        https://bugs.webkit.org/show_bug.cgi?id=188872

        Reviewed by Ryosuke Niwa.

        This ensures the PageClient reference is always valid when used.

        * UIProcess/Cocoa/WebPageProxyCocoa.mm:
        (WebKit::WebPageProxy::startDrag):
        (WebKit::WebPageProxy::setDragCaretRect):
        * UIProcess/PageClient.h:
        * UIProcess/WebPageProxy.cpp:
        (WebKit::PageClientProtector::PageClientProtector):
        (WebKit::PageClientProtector::~PageClientProtector):
        (WebKit::WebPageProxy::WebPageProxy):
        (WebKit::m_resetRecentCrashCountTimer):
        (WebKit::WebPageProxy::pageClient const):
        (WebKit::WebPageProxy::reattachToWebProcess):
        (WebKit::WebPageProxy::initializeWebPage):
        (WebKit::WebPageProxy::close):
        (WebKit::WebPageProxy::didChangeBackForwardList):
        (WebKit::WebPageProxy::willGoToBackForwardListItem):
        (WebKit::WebPageProxy::shouldKeepCurrentBackForwardListItemInList):
        (WebKit::WebPageProxy::setViewNeedsDisplay):
        (WebKit::WebPageProxy::requestScroll):
        (WebKit::WebPageProxy::viewScrollPosition const):
        (WebKit::WebPageProxy::updateActivityState):
        (WebKit::WebPageProxy::activityStateDidChange):
        (WebKit::WebPageProxy::viewDidEnterWindow):
        (WebKit::WebPageProxy::dispatchActivityStateChange):
        (WebKit::WebPageProxy::layerHostingModeDidChange):
        (WebKit::WebPageProxy::viewSize const):
        (WebKit::WebPageProxy::startDrag):
        (WebKit::WebPageProxy::didPerformDragOperation):
        (WebKit::WebPageProxy::processNextQueuedMouseEvent):
        (WebKit::WebPageProxy::findPlugin):
        (WebKit::WebPageProxy::handleTouchEventSynchronously):
        (WebKit::WebPageProxy::handleTouchEvent):
        (WebKit::WebPageProxy::preferencesDidChange):
        (WebKit::WebPageProxy::didCreateMainFrame):
        (WebKit::WebPageProxy::didCreateSubframe):
        (WebKit::WebPageProxy::didStartProgress):
        (WebKit::WebPageProxy::didChangeProgress):
        (WebKit::WebPageProxy::didFinishProgress):
        (WebKit::WebPageProxy::didDestroyNavigation):
        (WebKit::WebPageProxy::didStartProvisionalLoadForFrame):
        (WebKit::WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrame):
        (WebKit::WebPageProxy::willPerformClientRedirectForFrame):
        (WebKit::WebPageProxy::didCancelClientRedirectForFrame):
        (WebKit::WebPageProxy::didChangeProvisionalURLForFrame):
        (WebKit::WebPageProxy::didFailProvisionalLoadForFrame):
        (WebKit::WebPageProxy::didCommitLoadForFrame):
        (WebKit::WebPageProxy::didFinishDocumentLoadForFrame):
        (WebKit::WebPageProxy::didFinishLoadForFrame):
        (WebKit::WebPageProxy::didFailLoadForFrame):
        (WebKit::WebPageProxy::didSameDocumentNavigationForFrame):
        (WebKit::WebPageProxy::didReceiveTitleForFrame):
        (WebKit::WebPageProxy::didFirstVisuallyNonEmptyLayoutForFrame):
        (WebKit::WebPageProxy::didReachLayoutMilestone):
        (WebKit::WebPageProxy::didDisplayInsecureContentForFrame):
        (WebKit::WebPageProxy::didRunInsecureContentForFrame):
        (WebKit::WebPageProxy::frameDidBecomeFrameSet):
        (WebKit::WebPageProxy::decidePolicyForNavigationAction):
        (WebKit::WebPageProxy::decidePolicyForNewWindowAction):
        (WebKit::WebPageProxy::decidePolicyForResponse):
        (WebKit::WebPageProxy::unableToImplementPolicy):
        (WebKit::WebPageProxy::didNavigateWithNavigationData):
        (WebKit::WebPageProxy::didPerformClientRedirect):
        (WebKit::WebPageProxy::didPerformServerRedirect):
        (WebKit::WebPageProxy::didUpdateHistoryTitle):
        (WebKit::WebPageProxy::closePage):
        (WebKit::WebPageProxy::setWindowFrame):
        (WebKit::WebPageProxy::getWindowFrame):
        (WebKit::WebPageProxy::getWindowFrameWithCallback):
        (WebKit::WebPageProxy::screenToRootView):
        (WebKit::WebPageProxy::rootViewToScreen):
        (WebKit::WebPageProxy::syncRootViewToScreen):
        (WebKit::WebPageProxy::accessibilityScreenToRootView):
        (WebKit::WebPageProxy::rootViewToAccessibilityScreen):
        (WebKit::WebPageProxy::didChangeViewportProperties):
        (WebKit::WebPageProxy::runOpenPanel):
        (WebKit::WebPageProxy::showShareSheet):
        (WebKit::WebPageProxy::handleDownloadRequest):
        (WebKit::WebPageProxy::didChangeContentSize):
        (WebKit::WebPageProxy::showColorPicker):
        (WebKit::WebPageProxy::showDataListSuggestions):
        (WebKit::WebPageProxy::compositionWasCanceled):
        (WebKit::WebPageProxy::registerInsertionUndoGrouping):
        (WebKit::WebPageProxy::canUndoRedo):
        (WebKit::WebPageProxy::executeUndoRedo):
        (WebKit::WebPageProxy::clearAllEditCommands):
        (WebKit::WebPageProxy::setTextIndicator):
        (WebKit::WebPageProxy::clearTextIndicator):
        (WebKit::WebPageProxy::setTextIndicatorAnimationProgress):
        (WebKit::WebPageProxy::showPopupMenu):
        (WebKit::WebPageProxy::showContextMenu):
        (WebKit::WebPageProxy::registerEditCommand):
        (WebKit::WebPageProxy::canUndo):
        (WebKit::WebPageProxy::canRedo):
        (WebKit::WebPageProxy::setToolTip):
        (WebKit::WebPageProxy::setCursor):
        (WebKit::WebPageProxy::setCursorHiddenUntilMouseMoves):
        (WebKit::WebPageProxy::didReceiveEvent):
        (WebKit::WebPageProxy::resetState):
        (WebKit::WebPageProxy::resetStateAfterProcessExited):
        (WebKit::WebPageProxy::creationParameters):
        (WebKit::WebPageProxy::enterAcceleratedCompositingMode):
        (WebKit::WebPageProxy::exitAcceleratedCompositingMode):
        (WebKit::WebPageProxy::updateAcceleratedCompositingMode):
        (WebKit::WebPageProxy::requestGeolocationPermissionForFrame):
        (WebKit::WebPageProxy::recommendedScrollbarStyleDidChange):
        (WebKit::WebPageProxy::didChangeScrollOffsetPinningForMainFrame):
        (WebKit::WebPageProxy::didFinishLoadingDataForCustomContentProvider):
        (WebKit::WebPageProxy::updateBackingStoreDiscardableState):
        (WebKit::WebPageProxy::showCorrectionPanel):
        (WebKit::WebPageProxy::dismissCorrectionPanel):
        (WebKit::WebPageProxy::dismissCorrectionPanelSoon):
        (WebKit::WebPageProxy::recordAutocorrectionResponse):
        (WebKit::WebPageProxy::useDarkAppearance const):
        (WebKit::WebPageProxy::showDictationAlternativeUI):
        (WebKit::WebPageProxy::removeDictationAlternatives):
        (WebKit::WebPageProxy::dictationAlternatives):
        (WebKit::WebPageProxy::setEditableElementIsFocused):
        (WebKit::WebPageProxy::takeViewSnapshot):
        (WebKit::WebPageProxy::wrapCryptoKey):
        (WebKit::WebPageProxy::unwrapCryptoKey):
        (WebKit::WebPageProxy::signedPublicKeyAndChallengeString):
        (WebKit::WebPageProxy::navigationGestureDidBegin):
        (WebKit::WebPageProxy::navigationGestureWillEnd):
        (WebKit::WebPageProxy::navigationGestureDidEnd):
        (WebKit::WebPageProxy::willRecordNavigationSnapshot):
        (WebKit::WebPageProxy::navigationGestureSnapshotWasRemoved):
        (WebKit::WebPageProxy::isPlayingMediaDidChange):
        (WebKit::WebPageProxy::videoControlsManagerDidChange):
        (WebKit::WebPageProxy::handleControlledElementIDResponse const):
        (WebKit::WebPageProxy::didPerformImmediateActionHitTest):
        (WebKit::WebPageProxy::immediateActionAnimationControllerForHitTestResult):
        (WebKit::WebPageProxy::didHandleAcceptedCandidate):
        (WebKit::WebPageProxy::addPlaybackTargetPickerClient):
        (WebKit::WebPageProxy::removePlaybackTargetPickerClient):
        (WebKit::WebPageProxy::showPlaybackTargetPicker):
        (WebKit::WebPageProxy::playbackTargetPickerClientStateDidChange):
        (WebKit::WebPageProxy::setMockMediaPlaybackTargetPickerEnabled):
        (WebKit::WebPageProxy::setMockMediaPlaybackTargetPickerState):
        (WebKit::WebPageProxy::didChangeBackgroundColor):
        (WebKit::WebPageProxy::didRestoreScrollPosition):
        (WebKit::WebPageProxy::userInterfaceLayoutDirection):
        (WebKit::WebPageProxy::didInsertAttachment):
        (WebKit::WebPageProxy::didRemoveAttachment):
        * UIProcess/WebPageProxy.h:
        * UIProcess/gstreamer/WebPageProxyGStreamer.cpp:
        (WebKit::WebPageProxy::requestInstallMissingMediaPlugins):
        * UIProcess/gtk/WebPageProxyGtk.cpp:
        (WebKit::WebPageProxy::viewWidget):
        (WebKit::WebPageProxy::editorStateChanged):
        * UIProcess/ios/WebPageProxyIOS.mm:
        (WebKit::WebPageProxy::computeCustomFixedPositionRect const):
        (WebKit::WebPageProxy::overflowScrollViewWillStartPanGesture):
        (WebKit::WebPageProxy::overflowScrollViewDidScroll):
        (WebKit::WebPageProxy::overflowScrollWillStartScroll):
        (WebKit::WebPageProxy::overflowScrollDidEndScroll):
        (WebKit::WebPageProxy::didCommitLayerTree):
        (WebKit::WebPageProxy::layerTreeCommitComplete):
        (WebKit::WebPageProxy::didReceivePositionInformation):
        (WebKit::WebPageProxy::saveImageToLibrary):
        (WebKit::WebPageProxy::interpretKeyEvent):
        (WebKit::WebPageProxy::registerWebProcessAccessibilityToken):
        (WebKit::WebPageProxy::couldNotRestorePageState):
        (WebKit::WebPageProxy::restorePageState):
        (WebKit::WebPageProxy::restorePageCenterAndScale):
        (WebKit::WebPageProxy::didGetTapHighlightGeometries):
        (WebKit::WebPageProxy::startAssistingNode):
        (WebKit::WebPageProxy::stopAssistingNode):
        (WebKit::WebPageProxy::showInspectorHighlight):
        (WebKit::WebPageProxy::hideInspectorHighlight):
        (WebKit::WebPageProxy::showInspectorIndication):
        (WebKit::WebPageProxy::hideInspectorIndication):
        (WebKit::WebPageProxy::enableInspectorNodeSearch):
        (WebKit::WebPageProxy::disableInspectorNodeSearch):
        (WebKit::WebPageProxy::setAcceleratedCompositingRootLayer):
        (WebKit::WebPageProxy::showPlaybackTargetPicker):
        (WebKit::WebPageProxy::commitPotentialTapFailed):
        (WebKit::WebPageProxy::didNotHandleTapAsClick):
        (WebKit::WebPageProxy::didCompleteSyntheticClick):
        (WebKit::WebPageProxy::disableDoubleTapGesturesDuringTapIfNecessary):
        (WebKit::WebPageProxy::editorStateChanged):
        (WebKit::WebPageProxy::showValidationMessage):
        (WebKit::WebPageProxy::didHandleStartDataInteractionRequest):
        (WebKit::WebPageProxy::didHandleAdditionalDragItemsRequest):
        (WebKit::WebPageProxy::didConcludeEditDataInteraction):
        (WebKit::WebPageProxy::didRequestPasswordForQuickLookDocumentInMainFrame):
        * UIProcess/mac/WebPageProxyMac.mm:
        (WebKit::WebPageProxy::windowAndViewFramesChanged):
        (WebKit::WebPageProxy::insertDictatedTextAsync):
        (WebKit::WebPageProxy::setPromisedDataForImage):
        (WebKit::WebPageProxy::didPerformDictionaryLookup):
        (WebKit::WebPageProxy::registerWebProcessAccessibilityToken):
        (WebKit::WebPageProxy::makeFirstResponder):
        (WebKit::WebPageProxy::assistiveTechnologyMakeFirstResponder):
        (WebKit::WebPageProxy::colorSpace):
        (WebKit::WebPageProxy::pluginFocusOrWindowFocusChanged):
        (WebKit::WebPageProxy::setPluginComplexTextInputState):
        (WebKit::WebPageProxy::executeSavedCommandBySelector):
        (WebKit::WebPageProxy::intrinsicContentSizeDidChange):
        (WebKit::WebPageProxy::setAcceleratedCompositingRootLayer):
        (WebKit::WebPageProxy::acceleratedCompositingRootLayer const):
        (WebKit::WebPageProxy::showPDFContextMenu):
        (WebKit::WebPageProxy::showTelephoneNumberMenu):
        (WebKit::WebPageProxy::boundsOfLayerInLayerBackedWindowCoordinates const):
        (WebKit::WebPageProxy::editorStateChanged):
        (WebKit::WebPageProxy::startWindowDrag):
        (WebKit::WebPageProxy::platformWindow):
        (WebKit::WebPageProxy::rootViewToWindow):
        (WebKit::WebPageProxy::showValidationMessage):
        (WebKit::WebPageProxy::inspectorAttachmentView):
        (WebKit::WebPageProxy::remoteObjectRegistry):
        * UIProcess/win/WebPageProxyWin.cpp:
        (WebKit::WebPageProxy::viewWidget):
        * UIProcess/wpe/WebPageProxyWPE.cpp:
        (WebKit::WebPageProxy::viewBackend):

2018-09-11  Chris Dumez  <cdumez@apple.com>

        Regression(PSON): "Swipe back" snapshot is missing when navigating back cross-process
        https://bugs.webkit.org/show_bug.cgi?id=189482
        <rdar://problem/44317222>

        Reviewed by Geoffrey Garen.

        The issue was that when we swap process on navigation, we:
        1. Call processDidTerminate() which calls resetState() and clears the displayed content
        2. Reattach the WebPageProxy to a new WebProcess
        3. Trigger the navigation
        4. Take the navigation snapshot

        When the navigation snapshot occurs at step 4, the view is already blank in the case of
        process swap. To avoid the issue, we take the navigation snapshot earlier, before calling
        processDidTerminate() and we suppress the next navigation snapshot as it would be blank.

        At some point, we will likely want to display the previous' WebProcess content longer,
        until the new WebProcess has something interesting to display. Once this is implemented,
        we'll likely be able to drop the early snapshotting logic.

        * UIProcess/WebPageProxy.cpp:
        (WebKit::WebPageProxy::recordAutomaticNavigationSnapshot):
        (WebKit::WebPageProxy::continueNavigationInNewProcess):
        (WebKit::WebPageProxy::restoreFromSessionState):
        (WebKit::WebPageProxy::didCommitLoadForFrame):
        * UIProcess/WebPageProxy.h:
        (WebKit::WebPageProxy::suppressNextAutomaticNavigationSnapshot):

2018-09-11  Woodrow Wang  <woodrow_wang@apple.com>

        Add Web API Statistics Collection
        https://bugs.webkit.org/show_bug.cgi?id=187773
        <rdar://problem/44155162>

        Reviewed by Brent Fulgham.

        * Shared/WebCoreArgumentCoders.cpp:
        (IPC::ArgumentCoder<ResourceLoadStatistics>::encode):
        (IPC::ArgumentCoder<ResourceLoadStatistics>::decode):
        * UIProcess/ResourceLoadStatisticsMemoryStore.cpp:

== Rolled over to ChangeLog-2018-09-11 ==