2020-06-28  Geoffrey Garen  <ggaren@apple.com>

        Rename initializeThreading to initialize
        https://bugs.webkit.org/show_bug.cgi?id=213674

        Reviewed by Mark Lam.

        * History/WebBackForwardList.mm:
        (+[WebBackForwardList initialize]):
        * History/WebHistoryItem.mm:
        (+[WebHistoryItem initialize]):
        * Misc/WebCache.mm:
        (+[WebCache initialize]):
        * Misc/WebElementDictionary.mm:
        (+[WebElementDictionary initialize]):
        * Misc/WebIconDatabase.mm:
        * Misc/WebStringTruncator.mm:
        (+[WebStringTruncator initialize]):
        * Plugins/Hosted/WebHostedNetscapePluginView.mm:
        (+[WebHostedNetscapePluginView initialize]):
        * Plugins/WebBaseNetscapePluginView.mm:
        * Plugins/WebBasePluginPackage.mm:
        (+[WebBasePluginPackage initialize]):
        * Plugins/WebNetscapePluginView.mm:
        (+[WebNetscapePluginView initialize]):
        * WebCoreSupport/WebEditorClient.mm:
        (+[WebUndoStep initialize]):
        * WebCoreSupport/WebFrameLoaderClient.mm:
        (+[WebFramePolicyListener initialize]):
        * WebView/WebArchive.mm:
        (+[WebArchivePrivate initialize]):
        * WebView/WebDataSource.mm:
        (+[WebDataSource initialize]):
        * WebView/WebHTMLView.mm:
        (+[WebHTMLViewPrivate initialize]):
        (+[WebHTMLView initialize]):
        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):
        * WebView/WebResource.mm:
        (+[WebResourcePrivate initialize]):
        * WebView/WebTextIterator.mm:
        (+[WebTextIteratorPrivate initialize]):
        * WebView/WebView.mm:
        (+[WebView initialize]):
        * WebView/WebViewData.mm:
        (+[WebViewPrivate initialize]):

2020-06-26  Geoffrey Garen  <ggaren@apple.com>

        WebSecurityOrigin needs to initialize the main thread
        https://bugs.webkit.org/show_bug.cgi?id=213675

        Reviewed by Tim Horton.

        Safari uses WebSecurityOrigin stand-alone in unit tests.

        (And any client can use WebSecurityOrigin without first using other
        WebKit data types.)

        * WebCoreSupport/WebSecurityOrigin.mm:
        (-[WebSecurityOrigin initWithURL:]):

2020-06-26  Geoffrey Garen  <ggaren@apple.com>

        Initializing the main thread should initialize the main run loop
        https://bugs.webkit.org/show_bug.cgi?id=213637

        Reviewed by Anders Carlsson.

        * History/WebBackForwardList.mm:
        (+[WebBackForwardList initialize]):
        * History/WebHistoryItem.mm:
        (+[WebHistoryItem initialize]):
        * Misc/WebCache.mm:
        (+[WebCache initialize]):
        * Misc/WebElementDictionary.mm:
        (+[WebElementDictionary initialize]):
        * Misc/WebIconDatabase.mm:
        * Plugins/Hosted/WebHostedNetscapePluginView.mm:
        (+[WebHostedNetscapePluginView initialize]):
        * Plugins/WebBaseNetscapePluginView.mm:
        * Plugins/WebBasePluginPackage.mm:
        (+[WebBasePluginPackage initialize]):
        * Plugins/WebNetscapePluginView.mm:
        (+[WebNetscapePluginView initialize]):
        * WebCoreSupport/WebEditorClient.mm:
        (+[WebUndoStep initialize]):
        * WebCoreSupport/WebFrameLoaderClient.mm:
        (+[WebFramePolicyListener initialize]):
        * WebView/WebArchive.mm:
        (+[WebArchivePrivate initialize]):
        * WebView/WebDataSource.mm:
        (+[WebDataSource initialize]):
        * WebView/WebHTMLView.mm:
        (+[WebHTMLViewPrivate initialize]):
        (+[WebHTMLView initialize]):
        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):
        * WebView/WebResource.mm:
        (+[WebResourcePrivate initialize]):
        * WebView/WebTextIterator.mm:
        (+[WebTextIteratorPrivate initialize]):
        * WebView/WebView.mm:
        (+[WebView initialize]):
        * WebView/WebViewData.mm:
        (+[WebViewPrivate initialize]):

2020-06-26  Wenson Hsieh  <wenson_hsieh@apple.com>

        Add a test to verify that async clipboard API write access is granted when copying in subframes
        https://bugs.webkit.org/show_bug.cgi?id=213581

        Reviewed by Darin Adler.

        * WebView/WebView.mm:
        (-[WebView _executeCoreCommandByName:value:]):

        Adjust the behavior of this SPI to trigger the editing command in the focused frame, rather than always the
        mainframe. This matches the behavior of `WKBundlePageExecuteEditingCommand`, and is also consistent with
        user-triggered editing commands.

2020-06-24  David Kilzer  <ddkilzer@apple.com>

        Use ObjectIdentifier<>instead of WebCore::nextPlaybackTargetClientContextId() in Document.cpp
        <https://webkit.org/b/213546>
        <rdar://problem/61803576>

        Reviewed by Youenn Fablet.

        Switch from uint64_t to WebCore::PlaybackTargetClientContextIdentifier
        for contextId values.

        * WebCoreSupport/WebChromeClient.h:
        * WebCoreSupport/WebChromeClient.mm:
        (WebChromeClient::addPlaybackTargetPickerClient):
        (WebChromeClient::removePlaybackTargetPickerClient):
        (WebChromeClient::showPlaybackTargetPicker):
        (WebChromeClient::playbackTargetPickerClientStateDidChange):
        * WebView/WebMediaPlaybackTargetPicker.h:
        * WebView/WebMediaPlaybackTargetPicker.mm:
        (WebMediaPlaybackTargetPicker::addPlaybackTargetPickerClient):
        (WebMediaPlaybackTargetPicker::removePlaybackTargetPickerClient):
        (WebMediaPlaybackTargetPicker::showPlaybackTargetPicker):
        (WebMediaPlaybackTargetPicker::playbackTargetPickerClientStateDidChange):
        (WebMediaPlaybackTargetPicker::setPlaybackTarget):
        (WebMediaPlaybackTargetPicker::externalOutputDeviceAvailableDidChange):
        (WebMediaPlaybackTargetPicker::setShouldPlayToPlaybackTarget):
        (WebMediaPlaybackTargetPicker::playbackTargetPickerWasDismissed):
        * WebView/WebView.mm:
        (-[WebView _addPlaybackTargetPickerClient:]):
        (-[WebView _removePlaybackTargetPickerClient:]):
        (-[WebView _showPlaybackTargetPicker:location:hasVideo:]):
        (-[WebView _playbackTargetPickerClientStateDidChange:state:]):
        * WebView/WebViewInternal.h:

2020-06-24  Umar Iqbal  <uiqbal@apple.com>

        We should resurrect the older patch that collects some statistics of web API calls
        https://bugs.webkit.org/show_bug.cgi?id=213319

        Reviewed by Brent Fulgham.

        + Enabled ENABLE_WEB_API_STATISTICS flag
        
        * Configurations/FeatureDefines.xcconfig:

2020-06-22  Tim Horton  <timothy_horton@apple.com>

        Update macOS version macros
        https://bugs.webkit.org/show_bug.cgi?id=213484

        Reviewed by Alexey Proskuryakov.

        * Configurations/Base.xcconfig:
        * Configurations/DebugRelease.xcconfig:
        * Configurations/Version.xcconfig:
        * Configurations/WebKitTargetConditionals.xcconfig:

2020-06-19  Chris Dumez  <cdumez@apple.com>

        Move Prefixed WebAudio interfaces behind their own feature flag
        https://bugs.webkit.org/show_bug.cgi?id=213356

        Reviewed by Darin Adler.

        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]):

2020-06-15  Alex Christensen  <achristensen@webkit.org>

        Provide alternatively-named SPI for user style sheets and scripts
        https://bugs.webkit.org/show_bug.cgi?id=213206

        Reviewed by Brady Eidson.

        * WebView/WebView.mm:
        (+[WebView _addOriginAccessAllowListEntryWithSourceOrigin:destinationProtocol:destinationHost:allowDestinationSubdomains:]):
        (+[WebView _removeOriginAccessAllowListEntryWithSourceOrigin:destinationProtocol:destinationHost:allowDestinationSubdomains:]):
        (+[WebView _resetOriginAccessAllowLists]):
        (+[WebView _addUserScriptToGroup:world:source:url:whitelist:blacklist:injectionTime:injectedFrames:]):
        (+[WebView _addUserScriptToGroup:world:source:url:includeMatchPatternStrings:excludeMatchPatternStrings:injectionTime:injectedFrames:]):
        (+[WebView _addUserStyleSheetToGroup:world:source:url:whitelist:blacklist:injectedFrames:]):
        (+[WebView _addUserStyleSheetToGroup:world:source:url:includeMatchPatternStrings:excludeMatchPatternStrings:injectedFrames:]):
        (+[WebView _setFontAllowList:]):
        (+[WebView _addOriginAccessWhitelistEntryWithSourceOrigin:destinationProtocol:destinationHost:allowDestinationSubdomains:]): Deleted.
        (+[WebView _removeOriginAccessWhitelistEntryWithSourceOrigin:destinationProtocol:destinationHost:allowDestinationSubdomains:]): Deleted.
        (+[WebView _resetOriginAccessWhitelists]): Deleted.
        (+[WebView _setFontWhitelist:]): Deleted.
        * WebView/WebViewPrivate.h:

2020-06-11  Sam Weinig  <weinig@apple.com>

        Document.currentScript does not work for SVGScriptElements
        https://bugs.webkit.org/show_bug.cgi?id=213104

        Reviewed by Yusuke Suzuki.

        * DOM/DOMDocument.mm:
        (-[DOMDocument currentScript]):
        Update to account for change in Document::currentScript() now returning an
        Element* that can be either an HTMLScriptElement or an SVGScriptElement. To
        keep API compatibility, only return non-null for HTMLScriptElements.

2020-06-12  Keith Rollin  <krollin@apple.com>

        Add dependencies for Migrate Headers and Generate Export Files build phases
        https://bugs.webkit.org/show_bug.cgi?id=213072
        <rdar://problem/64249345>

        Reviewed by Tim Horton.

        These build phases have incomplete specifications for the files they
        consume and produce, which can lead to incorrect builds. Address this
        by:

        - Adding the WebCore/PrivateHeaders directory (which contains the
          headers being migrated) as input to the Migrate Headers build phase
        - Touching a timestamp file when re-exporting any headers in the
          Migrate Headers build phase
        - Adding the timestamp file as an output of the Migrate Headers build
          phase
        - Adding the timestamp file as an input of the Generate Export Files
          build phase
        - Adding other files that Generate Export Files consumes to the list
          of input files

        In this way, if any exported headers are changed, both Migrate Headers
        and Generate Export Files will be run.

        * MigrateHeaders.make:

2020-06-11  Beth Dakin  <bdakin@apple.com>

        Replace instances of whitelist in WebCore with allowlist
        https://bugs.webkit.org/show_bug.cgi?id=213068

        Reviewed by Tim Horton.

        * WebView/WebView.mm:
        (+[WebView _addOriginAccessWhitelistEntryWithSourceOrigin:destinationProtocol:destinationHost:allowDestinationSubdomains:]):
        (+[WebView _removeOriginAccessWhitelistEntryWithSourceOrigin:destinationProtocol:destinationHost:allowDestinationSubdomains:]):
        (+[WebView _resetOriginAccessWhitelists]):
        (+[WebView _setFontWhitelist:]):

2020-06-11  David Kilzer  <ddkilzer@apple.com>

        [IPC] Adopt enum class for DragSourceAction
        <https://webkit.org/b/212885>
        <rdar://problem/64094134>

        Reviewed by Darin Adler.

        Summary:
        - Add and use conversion functions between
          OptionSet<WebCore::DragSourceAction> and WebDragSourceAction.
        - Update method signatures.

        * WebCoreSupport/WebDragClient.h:
        * WebCoreSupport/WebDragClient.mm:
        (coreDragSourceActionMask): Add.
        (WebDragClient::dragSourceActionMaskForPoint):
        (WebDragClient::willPerformDragSourceAction):
        (WebDragClient::startDrag):
        * WebView/WebView.mm:
        (kit): Add.
        - Convert from Optional<WebCore::DragSourceAction> to
          WebDragSourceAction.
        (-[WebView _startDrag:]):
        * WebView/WebViewInternal.h:
        (kit): Add declaration to reuse function in WebDragClient.mm.

2020-06-10  Geoffrey Garen  <ggaren@apple.com>

        Some style improvements to main thread code
        https://bugs.webkit.org/show_bug.cgi?id=213051

        Reviewed by Darin Adler.

        Updated for rename.

        * History/WebBackForwardList.mm:
        (+[WebBackForwardList initialize]):
        * History/WebHistoryItem.mm:
        (+[WebHistoryItem initialize]):
        * Misc/WebCache.mm:
        (+[WebCache initialize]):
        * Misc/WebElementDictionary.mm:
        (+[WebElementDictionary initialize]):
        * Misc/WebIconDatabase.mm:
        * Plugins/Hosted/WebHostedNetscapePluginView.mm:
        (+[WebHostedNetscapePluginView initialize]):
        * Plugins/WebBaseNetscapePluginView.mm:
        * Plugins/WebBasePluginPackage.mm:
        (+[WebBasePluginPackage initialize]):
        * Plugins/WebNetscapePluginView.mm:
        (+[WebNetscapePluginView initialize]):
        * WebCoreSupport/WebEditorClient.mm:
        (+[WebUndoStep initialize]):
        * WebCoreSupport/WebFrameLoaderClient.mm:
        (+[WebFramePolicyListener initialize]):
        * WebView/WebArchive.mm:
        (+[WebArchivePrivate initialize]):
        * WebView/WebDataSource.mm:
        (+[WebDataSource initialize]):
        * WebView/WebHTMLView.mm:
        (+[WebHTMLViewPrivate initialize]):
        (+[WebHTMLView initialize]):
        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):
        * WebView/WebResource.mm:
        (+[WebResourcePrivate initialize]):
        * WebView/WebTextIterator.mm:
        (+[WebTextIteratorPrivate initialize]):
        * WebView/WebView.mm:
        (+[WebView initialize]):
        * WebView/WebViewData.mm:
        (+[WebViewPrivate initialize]):

2020-06-09  Dean Jackson  <dino@apple.com>

        Stop using discriminatory names for WebGL and Plugin blocking
        https://bugs.webkit.org/show_bug.cgi?id=213000

        Reviewed by Simon Fraser.

        * WebCoreSupport/WebFrameLoaderClient.mm:
        (shouldBlockPlugin):
        (shouldBlockWebGL):

2020-06-08  Jonathan Bedard  <jbedard@apple.com>

        WebKitLegacy: Exclude NSURLConnectionSPI.h from watchOS
        https://bugs.webkit.org/show_bug.cgi?id=212942
        <rdar://problem/64141877>

        Reviewed by Alexey Proskuryakov.

        * Misc/WebDownload.h: Exclude NSURLConnectionSPI.h from watchOS, replace
        CFNSURLConnection.h with NSURLConnectionSPI.h.

2020-06-08  David Kilzer  <ddkilzer@apple.com>

        [IPC] Adopt enum class for DragOperation
        <https://webkit.org/b/212870>
        <rdar://problem/64069940>

        Reviewed by Darin Adler.

        * WebView/WebHTMLView.mm:
        (kit):
        * WebView/WebView.mm:
        (coreDragOperationMask):
        (kit):

2020-06-07  Philippe Normand  <pnormand@igalia.com>

        Remove ENABLE_VIDEO_TRACK ifdef guards
        https://bugs.webkit.org/show_bug.cgi?id=212568

        Reviewed by Youenn Fablet.

        * Configurations/FeatureDefines.xcconfig:
        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):
        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]):

2020-06-06  David Kilzer  <ddkilzer@apple.com>

        Use OptionSet<DragOperation> for mask values
        <https://webkit.org/b/212605>

        Reviewed by Darin Adler.

        In broad strokes:
        - Replace use of DragOperation with OptionSet<DragOperation> or
          Optional<DragOperation>.
        - Rename function parameters and local variables to denote use
          of mask values.
        - Remove DragOperationNone enum value.
        - Replace DragOperationEvery enum value with anyDragOperation().

        * WebView/WebFrame.mm:
        (-[WebFrame _dragSourceEndedAt:operation:]):
        * WebView/WebHTMLView.mm:
        (kit): Add conversion function.
        (-[WebHTMLView draggingSourceOperationMaskForLocal:]):
        (-[WebHTMLView draggingSession:sourceOperationMaskForDraggingContext:]):
        * WebView/WebView.mm:
        (coreDragOperationMask): Add conversion function.
        (kit): Ditto.
        - Map WebCore::DragOperationGeneric to _UIDragOperationMove
          based on logic in WebCore.  All other WebCore::DragOperation
          enum values map to _UIDragOperationNone.
        (-[WebView dragDataForSession:client:global:operation:]):
        (-[WebView _enteredDataInteraction:client:global:operation:]):
        (-[WebView _updatedDataInteraction:client:global:operation:]):
        (-[WebView draggingEntered:]):
        (-[WebView draggingUpdated:]):
        (-[WebView draggingExited:]):
        (-[WebView performDragOperation:]):
        * WebView/WebViewInternal.h:
        (CocoaDragOperation):
        - Add typedef so coreDragOperationMask() may be shared across
          platforms.
        (coreDragOperationMask): Add declaration.
        (coreOptions):
        - Remove redundant parameter name.

2020-06-06  Jonathan Bedard  <jbedard@apple.com>

        WebKitLegacy: Link to framework stubs for watchOS and tvOS
        https://bugs.webkit.org/show_bug.cgi?id=212855
        <rdar://problem/64049486>

        Reviewed by Tim Horton.

        * Configurations/Base.xcconfig: Define tvOS and watchOS major version macros.
        * Configurations/WebKitLegacy.xcconfig: Link to framework stubs for watchOS and tvOS.

2020-06-05  Jonathan Bedard  <jbedard@apple.com>

        WebKitLegacy: Feature guard WebChromeClient declarations
        https://bugs.webkit.org/show_bug.cgi?id=212857
        <rdar://problem/64050523>

        Unreviewed build fix.

        * WebCoreSupport/WebChromeClient.h: m_mockVideoPresentationModeEnabled declaration
        should be guarded on ENABLE(VIDEO_PRESENTATION_MODE).

2020-06-05  David Kilzer  <ddkilzer@apple.com>

        [IPC] Adopt enum class for AutocapitalizeType
        <https://webkit.org/b/212846>
        <rdar://problem/64042825>

        Reviewed by Darin Adler.

        Summary:
        - Move AutocapitalizeType into WebCore namespace.
        - Convert AutocapitalizeType to an enum class.
        - Add WTF::EnumTraits<AutocapitalizeType> for IPC.

        * DOM/DOMHTML.mm:
        (webAutocapitalizeType):

2020-06-05  David Kilzer  <ddkilzer@apple.com>

        [IPC] Adopt enum class for PluginLoadClientPolicy
        <https://webkit.org/b/212827>
        <rdar://problem/64030431>

        Reviewed by Alex Christensen.

        * Plugins/WebBasePluginPackage.mm:
        (-[WebBasePluginPackage getPluginInfoFromPLists]):
        - Update for renamed PluginLoadClientPolicy enum.

2020-06-05  Andy Estes  <aestes@apple.com>

        [Apple Pay] Remove conditionals for ENABLE_APPLE_PAY_SESSION_V(3|4)
        https://bugs.webkit.org/show_bug.cgi?id=212541
        <rdar://problem/63781452>

        Reviewed by Darin Adler.

        APPLE_PAY_SESSION_V(3|4) is now enabled whenever APPLE_PAY itself is enabled.

        * Configurations/FeatureDefines.xcconfig:

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

        Work around broken system version macro
        https://bugs.webkit.org/show_bug.cgi?id=212726

        Reviewed by Dan Bernstein.

        * Configurations/DebugRelease.xcconfig:

2020-06-04  Andy Estes  <aestes@apple.com>

        [watchOS] Re-enable content filtering in the simulator build
        https://bugs.webkit.org/show_bug.cgi?id=212711
        <rdar://problem/63938350>

        Reviewed by Wenson Hsieh.

        * Configurations/FeatureDefines.xcconfig:

2020-06-02  Keith Rollin  <krollin@apple.com>

        Revert FEATURES_DEFINES related changes
        https://bugs.webkit.org/show_bug.cgi?id=212664
        <rdar://problem/63893033>

        Reviewed by Andy Estes.

        Bug 262310, Bug 262311, Bug 262318, and Bug 262331 involve changes to
        FEATURE_DEFINES and how the values there relate to those found in the
        Platform*.h files. Those changes break XCBuild (by removing the
        .xcfilelist related to UnifiedSources and the process for generating
        them), and so are being reverted.

        * Configurations/FeatureDefines.xcconfig:

2020-06-02  Peng Liu  <peng.liu6@apple.com>

        Stressing webkitSetPresentationMode leads to wrong inline video dimensions
        https://bugs.webkit.org/show_bug.cgi?id=202425

        Reviewed by Eric Carlson.

        Move DumpRenderTree's implementation of the mock video presentation mode from WebView
        to WebChromeClient and call videoElement.didStopBeingFullscreenElement() when a video
        element exits fullscreen.

        * WebCoreSupport/WebChromeClient.h:
        * WebCoreSupport/WebChromeClient.mm:
        (WebChromeClient::setMockVideoPresentationModeEnabled):
        (WebChromeClient::enterVideoFullscreenForVideoElement):
        (WebChromeClient::exitVideoFullscreenForVideoElement):
        (WebChromeClient::exitVideoFullscreenToModeWithoutAnimation):
        * WebView/WebView.mm:
        (-[WebView _enterVideoFullscreenForVideoElement:mode:]):
        (-[WebView _exitVideoFullscreen]):
        (-[WebView _setMockVideoPresentationModeEnabled:]): Deleted.
        * WebView/WebViewData.h:
        * WebView/WebViewInternal.h:

2020-06-01  David Kilzer  <ddkilzer@apple.com>

        Don't use casts to convert between WebCore::DragDestinationAction and {Web,WK}DragDestinationAction types
        <https://webkit.org/b/212507>

        Reviewed by Darin Adler.

        * WebCoreSupport/WebDragClient.mm:
        (kit):
        - Add conversion function to avoid casting.
        (WebDragClient::willPerformDragDestinationAction):
        - Make use of kit() conversion function.
        * WebView/WebView.mm:
        (coreDragDestinationActionMask):
        - Add conversion function to avoid casting.
        (-[WebView dragDataForSession:client:global:operation:]):
        (-[WebView actionMaskForDraggingInfo:]):
        - Make use of coreDragDestinationActionMask() conversion
          function.

2020-06-01  Sam Weinig  <weinig@apple.com>

        Extended Color: Replace Color constructors taking numeric values with type specific factory functions
        https://bugs.webkit.org/show_bug.cgi?id=212576

        Reviewed by Tim Horton.

        Replaces all remaining implicit and explicit uses of the Color constructors taking numeric
        values with explicit calls to makeSimpleColor/makeSimpleColorFromFloats/makeExtendedColor,
        giving us a consistent way to create colors. Also addes use constexpr SimpleColors where possible.

        * WebView/WebIndicateLayer.mm:

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

        [Apple Pay] Remove conditionals for ENABLE_APPLE_PAY_SESSION_V(3|4)
        https://bugs.webkit.org/show_bug.cgi?id=212541

        Reviewed by Darin Adler.

        APPLE_PAY_SESSION_V(3|4) is now enabled whenever APPLE_PAY itself is enabled.

        * Configurations/FeatureDefines.xcconfig:

2020-05-29  David Kilzer  <ddkilzer@apple.com>

        REGRESSION (r260306): Compatibility issue leading to crash on macOS games
        <https://webkit.org/b/212546>
        <rdar://problem/62624078>

        Reviewed by Brent Fulgham.

        * WebView/WebView.mm:
        (_WebSafeForwarder._target):
        (_WebSafeForwarder._defaultTarget):
        - Change __weak attribute to __unsafe_unretained to fix the
          crash.

2020-05-29  Darin Adler  <darin@apple.com>

        Remove things from FeatureDefines.xcconfig that are covered by PlatformEnableCocoa.h
        https://bugs.webkit.org/show_bug.cgi?id=212418

        Rubber-stamped by Simon Fraser.

        * Configurations/FeatureDefines.xcconfig: Add back ENABLE_CSS_CONIC_GRADIENTS, removed
        by accident.

2020-05-27  Darin Adler  <darin@apple.com>

        Remove things from FeatureDefines.xcconfig that are covered by PlatformEnableCocoa.h
        https://bugs.webkit.org/show_bug.cgi?id=212418

        Reviewed by Andy Estes.

        * Configurations/FeatureDefines.xcconfig: Removed 83 of the 119 things defined in
        this file. There are 36 more that are slightly more complex that we can remove
        carefully later.

2020-05-29  Darin Adler  <darin@apple.com>

        [Cocoa] Pass all defines from Platform.h to various scripts, not just the ones from .xcconfig
        https://bugs.webkit.org/show_bug.cgi?id=212451

        Reviewed by Sam Weinig.

        * MigrateHeaders.make: Run the preprocessor on Platform.h and parse the output into
        FEATURE_AND_PLATFORM_DEFINES. Use that and FEATURE_AND_PLATFORM_DEFINE_DEPENDENCIES
        whenever we need a list of defines. Also took out some Windows-specific stuff since
        this is now only used on Mac platforms. Use ":=" when calling $(shell) to make sure
        the same shell command is not invoked over and over again.

2020-05-29  Keith Rollin  <krollin@apple.com>

        Revert switch to XCBuild
        https://bugs.webkit.org/show_bug.cgi?id=212530
        <rdar://problem/63764632>

        Unreviewed build fix.

        Bug 209890 enabled the use of XCBuild by default. Since then, some
        build issues have shown up. While addressing them, temporarily turn
        off the use of XCBuild by default.

        * Configurations/WebKitLegacy.xcconfig:

2020-05-29  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, reverting r262245.
        https://bugs.webkit.org/show_bug.cgi?id=212531

        "Caused WebCore's 'Check .xcfilelists' build phase to be ~100x
        slower"

        Reverted changeset:

        "[Cocoa] Pass all defines from Platform.h to various scripts,
        not just the ones from .xcconfig"
        https://bugs.webkit.org/show_bug.cgi?id=212451
        https://trac.webkit.org/changeset/262245

2020-05-28  Megan Gardner  <megan_gardner@apple.com>

        Responding to post commit review comments for https://bugs.webkit.org/show_bug.cgi?id=212060

        * WebView/WebView.mm:
        (-[WebView _commonInitializationWithFrameName:groupName:]):
        * WebView/WebViewData.h:

2020-05-28  David Kilzer  <ddkilzer@apple.com>

        Follow-up build fix: [Cocoa] Pass all defines from Platform.h to various scripts, not just the ones from .xcconfig
        https://bugs.webkit.org/show_bug.cgi?id=212451

        Fixes the following build error:

            PhaseScriptExecution Migrate\ Headers BUILD_DIR/WebKitLegacy.build/Debug/WebKitLegacy.build/Script-1C6CB0510AA63EB000D23BFD.sh
                cd SOURCE_DIR/Source/WebKitLegacy
                /bin/sh -c BUILD_DIR/WebKitLegacy.build/Debug/WebKitLegacy.build/Script-1C6CB0510AA63EB000D23BFD.sh
            clang: warning: no such sysroot directory: 'macosx.internal' [-Wmissing-sysroot]
            In file included from <built-in>:1:
            In file included from BUILD_DIR/Debug/usr/local/include/wtf/Platform.h:44:
            BUILD_DIR/Debug/usr/local/include/wtf/PlatformOS.h:36:10: fatal error: 'Availability.h' file not found
            #include <Availability.h>
                     ^~~~~~~~~~~~~~~~
            1 error generated.
            sed -E -e 's/<WebCore\//<WebKitLegacy\//' -e "s/(^ *)WEBCORE_EXPORT /\1/" BUILD_DIR/Debug/DerivedSources/WebKitLegacy/WebCorePrivateHeaders/WebKitAvailability.h > BUILD_DIR/Debug/WebKitLegacy.framework/Versions/A/PrivateHeaders/WebKitAvailability.h; touch BUILD_DIR/Debug/WebKitLegacy.framework/Versions/A/PrivateHeaders
            sed -E -e 's/<WebCore\//<WebKitLegacy\//' -e "s/(^ *)WEBCORE_EXPORT /\1/" BUILD_DIR/Debug/DerivedSources/WebKitLegacy/WebCorePrivateHeaders/WebScriptObject.h > BUILD_DIR/Debug/WebKitLegacy.framework/Versions/A/PrivateHeaders/WebScriptObject.h; touch BUILD_DIR/Debug/WebKitLegacy.framework/Versions/A/PrivateHeaders
            sed -E -e 's/<WebCore\//<WebKitLegacy\//' -e "s/(^ *)WEBCORE_EXPORT /\1/" BUILD_DIR/Debug/DerivedSources/WebKitLegacy/WebCorePrivateHeaders/npapi.h > BUILD_DIR/Debug/WebKitLegacy.framework/Versions/A/PrivateHeaders/npapi.h; touch BUILD_DIR/Debug/WebKitLegacy.framework/Versions/A/PrivateHeaders
            sed -E -e 's/<WebCore\//<WebKitLegacy\//' -e "s/(^ *)WEBCORE_EXPORT /\1/" BUILD_DIR/Debug/DerivedSources/WebKitLegacy/WebCorePrivateHeaders/npfunctions.h > BUILD_DIR/Debug/WebKitLegacy.framework/Versions/A/PrivateHeaders/npfunctions.h; touch BUILD_DIR/Debug/WebKitLegacy.framework/Versions/A/PrivateHeaders
            sed -E -e 's/<WebCore\//<WebKitLegacy\//' -e "s/(^ *)WEBCORE_EXPORT /\1/" BUILD_DIR/Debug/DerivedSources/WebKitLegacy/WebCorePrivateHeaders/npruntime.h > BUILD_DIR/Debug/WebKitLegacy.framework/Versions/A/PrivateHeaders/npruntime.h; touch BUILD_DIR/Debug/WebKitLegacy.framework/Versions/A/PrivateHeaders
            sed -E -e 's/<WebCore\//<WebKitLegacy\//' -e "s/(^ *)WEBCORE_EXPORT /\1/" BUILD_DIR/Debug/DerivedSources/WebKitLegacy/WebCorePrivateHeaders/nptypes.h > BUILD_DIR/Debug/WebKitLegacy.framework/Versions/A/PrivateHeaders/nptypes.h; touch BUILD_DIR/Debug/WebKitLegacy.framework/Versions/A/PrivateHeaders
            clang: warning: no such sysroot directory: 'macosx.internal' [-Wmissing-sysroot]
            In file included from <built-in>:1:
            In file included from BUILD_DIR/Debug/usr/local/include/wtf/Platform.h:44:
            BUILD_DIR/Debug/usr/local/include/wtf/PlatformOS.h:36:10: fatal error: 'Availability.h' file not found
            #include <Availability.h>
                     ^~~~~~~~~~~~~~~~
            1 error generated.
            make[4]: Nothing to be done for `reexport_headers'.
            Command /bin/sh emitted errors but did not return a nonzero exit code to indicate failure

        * migrate-headers.sh: Pass SDKROOT environment variable on the
        command-line `make` invocations after r262245 added code to
        MigrateHeaders.make to set -isysroot based on the SDKROOT value.

2020-05-27  Darin Adler  <darin@apple.com>

        [Cocoa] Pass all defines from Platform.h to various scripts, not just the ones from .xcconfig
        https://bugs.webkit.org/show_bug.cgi?id=212451

        Reviewed by Sam Weinig.

        * MigrateHeaders.make: Run the preprocessor on Platform.h and parse the output into
        FEATURE_AND_PLATFORM_DEFINES. Use that and FEATURE_AND_PLATFORM_DEFINE_DEPENDENCIES
        whenever we need a list of defines. Also took out some Windows-specific stuff since
        this is now only used on Mac platforms.

2020-05-27  Devin Rousso  <drousso@apple.com>

        Web Inspector: replace `featureGuard` and `availability` with a combined `condition` that accepts any macro
        https://bugs.webkit.org/show_bug.cgi?id=210014

        Reviewed by Brian Burg.

        Previously, the generated InspectorBackendCommands.js would include code for things that the
        backend doesn't actually support. By using actual macros and preprocessing that file, we can
        ensure that the frontend doesn't incorrectly think that something is supported by the page
        being inspected:
         - the `Canvas` commands and events related to shader programs/pipelines should only exist
           when the corresponding context type exists, namely `ENABLE(WEBGL)` and `ENABLE(WEBGPU)`.
         - iOS doesn't support showing rulers, so create a variant of `DOM.setInspectModeEnabled`
           that only exists for `PLATFORM(IOS_FAMILY)` that doesn't have the `showRulers` optional
           parameter, as well as removing `Page.setShowRulers` entirely.
         - setting the forced appearance should only be possible if dark mode is supported.
         - web archives only exist if CF is used.

        * Configurations/FeatureDefines.xcconfig:
        Add `ENABLE_WEB_ARCHIVE` since it's always enabled in wtf/PlatformEnableCocoa.h.

2020-05-27  David Kilzer  <ddkilzer@apple.com>

        Use OptionSet<DragDestinationAction> for mask values
        <https://webkit.org/b/212115>
        <rdar://problem/63423380>

        Reviewed by Alex Christensen.

        * WebCoreSupport/WebDragClient.mm:
        (WebDragClient::willPerformDragDestinationAction):
        * WebView/WebView.mm:
        (-[WebView dragDataForSession:client:global:operation:]):
        (-[WebView actionMaskForDraggingInfo:]):

2020-05-26  Keith Rollin  <krollin@apple.com>

        Enable the use of XCBuild by default in Apple builds
        https://bugs.webkit.org/show_bug.cgi?id=209890
        <rdar://problem/44182078>

        Reviewed by Darin Adler.

        Switch from the "legacy" Xcode build system to the "new" build system
        (also known as "XCBuild"). Switching to the new system speeds up
        builds by a small percentage, better validates projects for
        build-related issues (such as dependency cycles), lets WebKit benefit
        from future improvements in XCBuild such as those coming from the
        underlying llbuild open source project, and prepares us for any other
        tools built for this new ecosystem.

        Specific changes:

        - Remove Xcode project and workspace settings that selected the Build
          system, allowing the default to take hold (which is currently the
          New build system).
        - Updated webkitdirs.pm with a terser check for Xcode version.
        - Update build-webkit and Makefile.shared to be explicit when using
          the old build system (no longer treat it as a default or fall-back
          configuration).
        - Update various xcconfig files similarly to treat the default as
          using the new build system.
        - Update various post-processing build steps to check for Xcode 11.4
          and to no longer treat the default as using the old build system.

        * Configurations/WebKitLegacy.xcconfig:

2020-05-21  Pinki Gyanchandani  <pgyanchandani@apple.com>

        Null Ptr Deref @ WebCore::ResourceResponse::platformLazyInit
        https://bugs.webkit.org/show_bug.cgi?id=212224

        Reviewed by Geoffrey Garen.

        Its possible that client can cancel the load implicitly or explicitly after its informed that load is committed, but code continues to assume that
        loading is still in progress. This was cause of crash.
        Added nullptr check before dereferencing the documentLoader, after client calls the commit load.

        * WebView/WebHTMLRepresentation.mm:
        (-[WebHTMLRepresentation receivedData:withDataSource:]):

2020-05-20  Darin Adler  <darin@apple.com>

        Dictation context should be an object identifier, not a type-punned pointer
        https://bugs.webkit.org/show_bug.cgi?id=212174

        Reviewed by Anders Carlsson.

        * WebCoreSupport/WebAlternativeTextClient.h: Use DictationContext instead of uint64_t.
        * WebCoreSupport/WebAlternativeTextClient.mm:
        (WebAlternativeTextClient::removeDictationAlternatives): Ditto.
        (WebAlternativeTextClient::showDictationAlternativeUI): Ditto.
        (WebAlternativeTextClient::dictationAlternatives): Ditto.

        * WebView/WebHTMLView.mm: Added include of DictationAlternative.h, now needed because
        it's forward declared in Editor.h.
        * WebView/WebView.mm: Ditto.
        (-[WebView _getWebCoreDictationAlternatives:fromTextAlternatives:]): Updated for change
        to DictationAlternative.
        (-[WebView _showDictationAlternativeUI:forDictationContext:]): Use DictationContext
        instead of uint64_t.
        (-[WebView _removeDictationAlternatives:]): Ditto.
        (-[WebView _dictationAlternatives:]): Ditto.
        * WebView/WebViewInternal.h: Updated for the above.

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

        Remove implicit URL->String conversion operators
        https://bugs.webkit.org/show_bug.cgi?id=211033

        Reviewed by Darin Adler.

        * DOM/DOMHTMLBaseElement.mm:
        (-[DOMHTMLBaseElement href]):

2020-05-20  Simon Fraser  <simon.fraser@apple.com>

        Plumb the display's nominal refresh rate down to ScrollingTree for use in scroll synchronization
        https://bugs.webkit.org/show_bug.cgi?id=212159

        Reviewed by Tim Horton.

        Plumb an Optional<unsigned> down windowScreenDidChange, which contains the nominal
        display refresh rate (as frames per second) if available. On macOS, we get this
        from CVDisplayLinkGetNominalOutputVideoRefreshPeriod().

        To read it, WebProcessPool::nominalFramesPerSecondForDisplay() makes a DisplayLink
        that doesn't get any observers, but that DisplayLink will very likely get used
        as soon as we schedule a rendering update.

        * WebView/WebView.mm:
        (-[WebView doWindowDidChangeScreen]):

2020-05-18  David Kilzer  <ddkilzer@apple.com>

        Replace TextIndicatorOptions with OptionSet<TextIndicatorOption>
        <https://webkit.org/b/212051>
        <rdar://problem/63368556>

        Reviewed by Simon Fraser.

        Use OptionSet<TextIndicatorOption> everywhere
        TextIndicatorOptions was previously used, plus:
        - Make TextIndicatorOption an enum class.  Remove
          "TextIndicatorOption" prefix so TextIndicatorOptionBar becomes
          TextIndicatorOption::Bar.
        - Remove TextIndicatorOptionDefault because OptionSet<>
          initializes to zero.
        - Replace static variables (including two globals in WebCore)
          with constexpr variables.

        * DOM/DOM.mm:
        (-[DOMNode getPreviewSnapshotImage:andRects:]):
        * WebView/WebHTMLView.mm:
        (-[WebHTMLView _lookUpInDictionaryFromMenu:]):
        * WebView/WebImmediateActionController.h:
        * WebView/WebImmediateActionController.mm:
        (-[WebImmediateActionController _defaultAnimationController]):
        (-[WebImmediateActionController _animationControllerForDataDetectedText]):
        (-[WebImmediateActionController _animationControllerForDataDetectedLink]):
        (+[WebImmediateActionController _dictionaryPopupInfoForRange:inFrame:withLookupOptions:indicatorOptions:transition:]):
        (-[WebImmediateActionController _animationControllerForText]):
        * WebView/WebView.mm:
        (-[WebUITextIndicatorData initWithImage:textIndicatorData:scale:]):
        (-[WebView _didConcludeEditDrag]):

2020-05-18  Peng Liu  <peng.liu6@apple.com>

        ASSERTION FAILED: media/modern-media-controls/media-controller/media-controller-resize.html crashes under stress tests
        https://bugs.webkit.org/show_bug.cgi?id=212052

        Reviewed by Jer Noble.

        Not able to reproduce the crash locally. But it does happen under stress tests
        on bots.

        * WebView/WebVideoFullscreenController.mm:
        (-[WebVideoFullscreenController windowDidExitFullScreen:]):
        Only call HTMLMediaElement::exitFullscreen() when the element is in fullscreen.

2020-05-18  Andy Estes  <aestes@apple.com>

        http/tests/ssl/applepay/ApplePayInstallmentConfiguration.https.html fails in public SDK builds
        https://bugs.webkit.org/show_bug.cgi?id=212000
        <rdar://problem/63323082>

        Reviewed by Youenn Fablet.

        * Configurations/FeatureDefines.xcconfig:

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

        Use enum serialization instead of casting to/from uint32_t
        https://bugs.webkit.org/show_bug.cgi?id=211885

        Reviewed by Geoffrey Garen.

        * DOM/DOMUIKitExtensions.mm:
        (-[DOMRange move:inDirection:]):
        (-[DOMRange extend:inDirection:]):
        * WebCoreSupport/WebFrameLoaderClient.mm:
        (WebFrameLoaderClient::webGLPolicyForURL const):
        (WebFrameLoaderClient::resolveWebGLPolicyForURL const):
        * WebView/WebHTMLView.mm:
        (-[WebHTMLView _canSmartCopyOrDelete]):
        * WebView/WebTextCompletionController.mm:
        (-[WebTextCompletionController doCompletion]):

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

        Regression(r254856) Family Health iOS app is broken due to lack for WebSQL support
        https://bugs.webkit.org/show_bug.cgi?id=211896
        <rdar://problem/63025045>

        Reviewed by Maciej Stachowiak.

        Re-enable WebSQL support for Family Health iOS app with a linked-on-after check.

        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):

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

        [WK2] Neuter WKFrameIsFrameSet() / WKPageGetFrameSetLargestFrame() C API
        https://bugs.webkit.org/show_bug.cgi?id=211808

        Reviewed by Darin Adler.

        * WebCoreSupport/WebFrameLoaderClient.h:
        * WebCoreSupport/WebFrameLoaderClient.mm:
        (WebFrameLoaderClient::dispatchDidBecomeFrameset): Deleted.

2020-05-11  Peng Liu  <peng.liu6@apple.com>

        Enable the mock video presentation mode in related layout tests and fix test failures
        https://bugs.webkit.org/show_bug.cgi?id=211645

        Reviewed by Darin Adler.

        Call HTMLVideoElement::didBecomeFullscreenElement() after a video element enters
        fullscreen (to be consistent with WK2).

        * WebView/WebVideoFullscreenController.mm:
        (-[WebVideoFullscreenController windowDidEnterFullScreen:]):
        * WebView/WebView.mm:
        (-[WebView _enterVideoFullscreenForVideoElement:mode:]):

2020-05-07  Darin Adler  <darin@apple.com>

        Remove USE(INSERTION_UNDO_GROUPING) checks in macOS platform code
        https://bugs.webkit.org/show_bug.cgi?id=211525

        Reviewed by Anders Carlsson.

        * WebView/WebHTMLView.mm: Use NSTextInputContextSPI.h.
        (-[WebHTMLView validAttributesForMarkedText]): Removed USE(INSERTION_UNDO_GROUPING).
        (-[WebHTMLView insertText:]): Ditto.

2020-05-06  Darin Adler  <darin@apple.com>

        Eliminate checks of USE(DICTATION_ALTERNATIVES) in Cocoa-specific code
        https://bugs.webkit.org/show_bug.cgi?id=211460

        Reviewed by Anders Carlsson.

        * WebCoreSupport/WebAlternativeTextClient.h: Removed USE(DICTATION_ALTERNATIVES).
        * WebCoreSupport/WebAlternativeTextClient.mm:
        (WebAlternativeTextClient::dictationAlternatives): Ditto.
        * WebView/WebHTMLView.mm: Ditto.
        * WebView/WebView.mm: Ditto. Also use modern for loop.
        * WebView/WebViewData.h: Ditto.
        * WebView/WebViewData.mm: Ditto.
        * WebView/WebViewInternal.h: Ditto.

2020-05-05  David Kilzer  <ddkilzer@apple.com>

        Fix deprecated NSGraphicsContext methods using 'graphicsPort'
        <https://webkit.org/b/211481>

        Reviewed by Darin Adler.

        - Replace uses of -graphicsPort with -CGContext.
        - Replace uses of -graphicsContextWithGraphicsPort:flipped: with
          -graphicsContextWithCGContext:flipped:.
        - Remove ALLOW_DEPRECATED_DECLARATIONS_{BEGIN,END} if possible.

        * Misc/WebKitNSStringExtras.mm:
        (-[NSString _web_drawAtPoint:font:textColor:]):
        * Plugins/Hosted/WebHostedNetscapePluginView.mm:
        (-[WebHostedNetscapePluginView drawRect:]):
        * Plugins/WebNetscapePluginView.mm:
        (-[WebNetscapePluginView saveAndSetNewPortStateForUpdate:]):
        (-[WebNetscapePluginView sendDrawRectEvent:]):
        * WebInspector/WebNodeHighlightView.mm:
        (-[WebNodeHighlightView drawRect:]):
        * WebView/WebFrame.mm:
        (-[WebFrame _drawRect:contentsOnly:]):
        * WebView/WebPDFView.mm:
        (-[WebPDFView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:]):
        (-[WebPDFView _recursiveDisplayAllDirtyWithLockFocus:visRect:]):
        (-[WebPDFView _recursive:displayRectIgnoringOpacity:inContext:topView:]):

2020-05-05  Peng Liu  <peng.liu6@apple.com>

        Update WebKitTestRunner to support running multiple video fullscreen and Picture-in-Picture tests simultaneously
        https://bugs.webkit.org/show_bug.cgi?id=203723

        Reviewed by Jer Noble.

        When the flag MockVideoPresentationModeEnabled is true, WebView will ignore the requests to
        WebVideoFullscreenController, so that the DumpRenderTree can run multiple video fullscreen
        and picture-in-picture tests in parallel.

        * WebCoreSupport/WebChromeClient.h:
        * WebCoreSupport/WebChromeClient.mm:
        (WebChromeClient::setMockVideoPresentationModeEnabled):
        * WebView/WebView.mm:
        * WebView/WebViewData.h:
        * WebView/WebViewInternal.h:

2020-05-05  Darin Adler  <darin@apple.com>

        Remove now-uneeded HAVE macros related to PDF
        https://bugs.webkit.org/show_bug.cgi?id=211435

        Reviewed by Anders Carlsson.

        * WebView/WebFrameView.mm:
        (+[WebFrameView _viewTypesAllowImageTypeOmission:]): Removed HAVE(LEGACY_PDF_SUPPORT).
        * WebView/WebView.mm:
        (+[WebView _viewClass:andRepresentationClass:forMIMEType:allowingPlugins:]): Ditto.

2020-05-04  Darin Adler  <darin@apple.com>

        [Mac] Remove __MAC_OS_X_VERSION_MIN_REQUIRED checks for versions older than 10.14
        https://bugs.webkit.org/show_bug.cgi?id=211420

        Reviewed by Alex Christensen.

        * WebView/WebHTMLView.mm: Remove __MAC_OS_X_VERSION_MIN_REQUIRED >= 101400.
        (-[WebHTMLView _recursive:displayRectIgnoringOpacity:inContext:stopAtLayerBackedViews:_recursive:displayRectIgnoringOpacity:inContext:shouldChangeFontReferenceColor:stopAtLayerBackedViews:]): Ditto.
        (-[WebHTMLView _recursive:displayRectIgnoringOpacity:inContext:stopAtLayerBackedViews:_recursive:displayRectIgnoringOpacity:inContext:shouldChangeFontReferenceColor:stopAtLayerBackedViews:_recursive:displayRectIgnoringOpacity:inContext:shouldChangeFontReferenceColor:]): Deleted.
        (-[WebHTMLView _recursive:displayRectIgnoringOpacity:inGraphicsContext:shouldChangeFontReferenceColor:]): Deleted.

        * WebView/WebTextCompletionController.mm:
        (-[WebTextCompletionController _buildUI]): Remove some code only compiled with
        __MAC_OS_X_VERSION_MIN_REQUIRED < 101400.

2020-05-04  Darin Adler  <darin@apple.com>

        Make __IPHONE_OS_VERSION_MIN_REQUIRED checks against old versions explicit about watchOS and tvOS
        https://bugs.webkit.org/show_bug.cgi?id=211402

        Reviewed by Alexey Proskuryakov.

        * WebCoreSupport/WebEditorClient.mm:
        (attributesForAttributedStringConversion): Move from __IPHONE_OS_VERSION_MIN_REQUIRED
        to PLATFORM(WATCHOS) || PLATFORM(APPLETV).

        * WebView/WebUIDelegatePrivate.h: Move from __IPHONE_OS_VERSION_MIN_REQUIRED to
        TARGET_OS_IOS for a method that is based on dragging concepts not present in
        watchOS and tvOS.

        * WebView/WebView.mm: Move from __IPHONE_OS_VERSION_MIN_REQUIRED
        to PLATFORM(IOS).

        * WebView/WebViewPrivate.h: Move from __IPHONE_OS_VERSION_MIN_REQUIRED to
        TARGET_OS_IOS.

2020-05-04  Emilio Cobos Álvarez  <emilio@crisal.io>

        Put lh / rlh units behind a flag until bug 211351 is sorted out.
        https://bugs.webkit.org/show_bug.cgi?id=211356

        Reviewed by Antti Koivisto.

        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):
        (-[WebPreferences lineHeightUnitsEnabled]):
        (-[WebPreferences setLineHeightUnitsEnabled:]):
        * WebView/WebView.mm:

2020-04-30  Ross Kirsling  <ross.kirsling@sony.com>

        TriState should be an enum class and use "Indeterminate" instead of "Mixed"
        https://bugs.webkit.org/show_bug.cgi?id=211268

        Reviewed by Mark Lam.

        * WebView/WebHTMLView.mm:
        (kit):
        (-[WebHTMLView validateUserInterfaceItemWithoutDelegate:]):

2020-04-30  Antoine Quint  <graouts@apple.com>

        Remove -[WebView setCSSAnimationsSuspended:]
        https://bugs.webkit.org/show_bug.cgi?id=211227
        <rdar://problem/62439454>

        Reviewed by Antti Koivisto.

        This SPI has no user and it has no equivalent for the new animation engine.

        * WebView/WebView.mm:
        * WebView/WebViewPrivate.h:

2020-04-28  Daniel Bates  <dabates@apple.com>

        [WebKitLegacy] Implement -hidePlaceholder and -showPlaceholderIfNecessary in terms of setCanShowPlaceholder()
        https://bugs.webkit.org/show_bug.cgi?id=211139

        Reviewed by Simon Fraser.

        Implement -hidePlaceholder and -showPlaceholderIfNecessary in terms of setCanShowPlaceholder()
        because:

            1. Unlike -hidePlaceholder and -showPlaceholderIfNecessary, setCanShowPlaceholder() does NOT of
               reach into the guts of the control and mutate its CSS.

            2. Because of (1), it works correctly should future code be written that modifies the structure
               of the guts or the CSS of the placeholder element (which is inside the guts of the control).

            3. Unlike -hidePlaceholder and -showPlaceholderIfNecessary, there is test coverage for setCanShowPlaceholder()
               to ensure (2).

        * DOM/WebDOMOperations.mm:
        (-[DOMNode hidePlaceholder]):
        (-[DOMNode showPlaceholderIfNecessary]):

2020-04-27  Antoine Quint  <graouts@apple.com>

        Clean up some useless includes of CSSAnimationController.h
        https://bugs.webkit.org/show_bug.cgi?id=211066

        Reviewed by Antti Koivisto.

        This file doesn't actually use any of the CSSAnimationController APIs.

        * WebView/WebFrame.mm:

2020-04-27  Antoine Quint  <graouts@apple.com>

        Remove allowsNewCSSAnimationsWhileSuspended and setAllowsNewCSSAnimationsWhileSuspended WebView SPIs
        https://bugs.webkit.org/show_bug.cgi?id=211067

        Reviewed by Tim Horton.

        There are no known clients for these SPIs.

        * WebView/WebView.mm:
        * WebView/WebViewPrivate.h:

2020-04-27  Antoine Quint  <graouts@apple.com>

        Rename CSSAnimationController accessors from animation() to legacyAnimation()
        https://bugs.webkit.org/show_bug.cgi?id=211082

        Reviewed by Simon Fraser.

        * WebView/WebView.mm:

2020-04-26  Darin Adler  <darin@apple.com>

        Replace more uses of live ranges with SimpleRange
        https://bugs.webkit.org/show_bug.cgi?id=211058

        Reviewed by Antti Koivisto.

        * DOM/DOM.mm:
        (-[DOMNode getPreviewSnapshotImage:andRects:]): Use SimpleRange.
        * WebCoreSupport/WebContextMenuClient.mm:
        (WebContextMenuClient::imageForCurrentSharingServicePickerItem): Ditto.

        * WebView/WebImmediateActionController.mm:
        (-[WebImmediateActionController _animationControllerForDataDetectedText]):
        Updated to use DetectedItem and SimpleRange.
        (+[WebImmediateActionController _dictionaryPopupInfoForRange:inFrame:withLookupOptions:indicatorOptions:transition:]):
        Ditto.

2020-04-27  Rob Buis  <rbuis@igalia.com>

        Make loadURLIntoChildFrame private and non-exported
        https://bugs.webkit.org/show_bug.cgi?id=211051

        Reviewed by Darin Adler.

        Adapt createFrame to strictly create a subframe and
        not load anything.

        * WebCoreSupport/WebFrameLoaderClient.h:
        * WebCoreSupport/WebFrameLoaderClient.mm:
        (WebFrameLoaderClient::createFrame):

2020-04-27  Ross Kirsling  <ross.kirsling@sony.com>

        [JSC] CallData/ConstructData should include CallType/ConstructType
        https://bugs.webkit.org/show_bug.cgi?id=211059

        Reviewed by Darin Adler.

        * Plugins/Hosted/NetscapePluginInstanceProxy.mm:
        (WebKit::NetscapePluginInstanceProxy::invoke):
        (WebKit::NetscapePluginInstanceProxy::invokeDefault):
        (WebKit::NetscapePluginInstanceProxy::construct):

2020-04-26  Darin Adler  <darin@apple.com>

        [Cocoa] stop using out arguments for document attributes when converting to attributed strings
        https://bugs.webkit.org/show_bug.cgi?id=211048

        Reviewed by Sam Weinig.

        * WebCoreSupport/WebSelectionServiceController.mm:
        (WebSelectionServiceController::handleSelectionServiceClick): Updated since
        attributedString returns a struct.
        * WebView/WebHTMLRepresentation.mm:
        (-[WebHTMLRepresentation attributedStringFrom:startOffset:to:endOffset:]): Ditto.
        Also use init instead of initWithString:@"".
        * WebView/WebHTMLView.mm:
        (-[WebHTMLView textStorage]): DItto.
        (-[WebHTMLView attributedSubstringFromRange:]): Ditto.
        (-[WebHTMLView _attributedStringFromDOMRange:]): Ditto.
        (-[WebHTMLView _legacyAttributedStringFrom:offset:to:offset:]): Ditto.
        (-[WebHTMLView attributedString]): Ditto.
        (-[WebHTMLView selectedAttributedString]): Ditto.
        * WebView/WebImmediateActionController.mm:
        (+[WebImmediateActionController _dictionaryPopupInfoForRange:inFrame:withLookupOptions:indicatorOptions:transition:]):
        Updated.

2020-04-11  Darin Adler  <darin@apple.com>

        Stop using live ranges in functions that return range of the selection
        https://bugs.webkit.org/show_bug.cgi?id=210396

        Reviewed by Sam Weinig.

        * WebCoreSupport/WebEditorClient.mm:
        (WebEditorClient::handleRequestedCandidates): Remove use of live range.
        * WebCoreSupport/WebSelectionServiceController.mm:
        (WebSelectionServiceController::handleSelectionServiceClick): Ditto.

        * WebView/WebFrame.mm:
        (-[WebFrame _rangeByAlteringCurrentSelection:direction:granularity:]):
        Use createLiveRange.
        (-[WebFrame _convertToNSRange:]): Changed to take SimpleRange.
        (-[WebFrame _convertDOMRangeToNSRange:]): Updated for the above.
        (-[WebFrame _markDOMRange]): Use createLiveRange.
        (-[WebFrame _selectionRangeForFirstPoint:secondPoint:]): Ditto.
        (-[WebFrame _selectionRangeForPoint:]): Ditto.
        (-[WebFrame _selectedNSRange]): Remove use of live range.
        (-[WebFrame selectedDOMRange]): Use crateLiveRange.
        (-[WebFrame elementRangeContainingCaretSelection]): Ditto.
        (-[WebFrame expandSelectionToWordContainingCaretSelection]): Tweaked
        coding style a little.
        (-[WebFrame expandSelectionToStartOfWordContainingCaretSelection]): Ditto.
        (-[WebFrame wordRangeContainingCaretSelection]): Use createLiveRange.
        (-[WebFrame rangeByMovingCurrentSelection:]): Ditto.
        (-[WebFrame rangeByExtendingCurrentSelection:]): Ditto.
        (-[WebFrame _replaceSelectionWithText:selectReplacement:smartReplace:matchStyle:]):
        Use createLiveRange.
        (-[WebFrame _replaceSelectionWithText:selectReplacement:smartReplace:]): Ditto.
        (-[WebFrame _documentFragmentForText:]): Ditto.
        * WebView/WebFrameInternal.h: Updated for changes above.

        * WebView/WebHTMLRepresentation.mm:
        (-[WebHTMLRepresentation attributedStringFrom:startOffset:to:endOffset:]):
        Remove use of live range.

        * WebView/WebHTMLView.mm:
        (-[WebHTMLView _selectedRange]): Use createLiveRange.
        (-[WebHTMLView _lookUpInDictionaryFromMenu:]): Remove use of live range.
        (-[WebHTMLView markedRange]): Updated for change to _convertToNSRange.
        (-[WebHTMLView attributedSubstringFromRange:]): Ditto.
        (-[WebHTMLView _attributedStringFromDOMRange:]): Updated for changes to
        HTMLConverter.
        (-[WebHTMLView _legacyAttributedStringFrom:offset:to:offset:]): Remove
        use of live range.
        (-[WebHTMLView attributedString]): Ditto.
        (-[WebHTMLView selectedAttributedString]): Ditto.

        * WebView/WebImmediateActionController.h: Updated method to take a
        SimpleRange instead of a live range.
        * WebView/WebImmediateActionController.mm:
        (+[WebImmediateActionController _dictionaryPopupInfoForRange:inFrame:withLookupOptions:indicatorOptions:transition:]):
        Remove use of live range.

        * WebView/WebTextCompletionController.mm:
        (-[WebTextCompletionController doCompletion]): Use createLiveRange.
        * WebView/WebView.mm:
        (-[WebView _didConcludeEditDrag]): Ditto.

2020-04-25  Alex Christensen  <achristensen@webkit.org>

        Prepare to remove automatic URL->String conversion operators
        https://bugs.webkit.org/show_bug.cgi?id=211007

        Reviewed by Darin Adler.

        * DOM/DOMDocument.mm:
        (-[DOMDocument URL]):
        * DOM/DOMHTMLAnchorElement.mm:
        (-[DOMHTMLAnchorElement href]):
        * DOM/DOMHTMLAreaElement.mm:
        (-[DOMHTMLAreaElement href]):
        * DOM/DOMHTMLEmbedElement.mm:
        (-[DOMHTMLEmbedElement src]):
        * DOM/DOMHTMLFormElement.mm:
        (-[DOMHTMLFormElement action]):
        * DOM/DOMHTMLFrameElement.mm:
        (-[DOMHTMLFrameElement src]):
        (-[DOMHTMLFrameElement location]):
        * DOM/DOMHTMLHtmlElement.mm:
        (-[DOMHTMLHtmlElement manifest]):
        * DOM/DOMHTMLIFrameElement.mm:
        (-[DOMHTMLIFrameElement src]):
        * DOM/DOMHTMLImageElement.mm:
        (-[DOMHTMLImageElement longDesc]):
        (-[DOMHTMLImageElement src]):
        (-[DOMHTMLImageElement currentSrc]):
        (-[DOMHTMLImageElement lowsrc]):
        * DOM/DOMHTMLInputElement.mm:
        (-[DOMHTMLInputElement src]):
        * DOM/DOMHTMLLinkElement.mm:
        (-[DOMHTMLLinkElement href]):
        * DOM/DOMHTMLMediaElement.mm:
        (-[DOMHTMLMediaElement src]):
        (-[DOMHTMLMediaElement currentSrc]):
        * DOM/DOMHTMLModElement.mm:
        (-[DOMHTMLModElement cite]):
        * DOM/DOMHTMLObjectElement.mm:
        (-[DOMHTMLObjectElement data]):
        * DOM/DOMHTMLQuoteElement.mm:
        (-[DOMHTMLQuoteElement cite]):
        * DOM/DOMHTMLScriptElement.mm:
        (-[DOMHTMLScriptElement src]):
        * DOM/DOMHTMLVideoElement.mm:
        (-[DOMHTMLVideoElement poster]):
        * DOM/DOMNode.mm:
        (-[DOMNode baseURI]):
        * WebCoreSupport/WebFrameLoaderClient.mm:
        (WebFrameLoaderClient::updateGlobalHistory):
        (WebFrameLoaderClient::setTitle):
        * WebView/WebImmediateActionController.mm:
        (-[WebImmediateActionController _animationControllerForDataDetectedLink]):
        * WebView/WebNotification.mm:
        (-[WebNotification iconURL]):
        * WebView/WebScriptDebugger.mm:
        (WebScriptDebugger::sourceParsed):
        (toNSURL): Deleted.

2020-04-25  Darin Adler  <darin@apple.com>

        Move URL to use StringView when returning substrings of the URL
        https://bugs.webkit.org/show_bug.cgi?id=210431

        Reviewed by Anders Carlsson.

        * WebCoreSupport/WebFrameLoaderClient.mm:
        (shouldTryAppLink): Compare hosts with == rather than using hostsAreEqual.

        * WebView/WebFrame.mm:
        (-[WebFrame _documentFragmentForImageData:withRelativeURLPart:andMIMEType:]):
        Updated since fakeURLWithRelativePart takes a StringView. Also use RetainPtr
        instead of an explicit call to release.

        * WebView/WebHTMLView.mm:
        (-[WebHTMLView _web_documentFragmentFromPasteboard:pasteboardType:imageMIMEType:]):
        Updated since fakeURLWithRelativePart takes a StringView. No conversion
        directly from NSString to StringView, so we have to explicitly use a String.

        * WebView/WebImmediateActionController.mm:
        (-[WebImmediateActionController _defaultAnimationController]): Update
        since protocolIs takes a StringView. No conversion directly from
        NSString to StringView, so we have to explicitly use a String.

2020-04-24  Megan Gardner  <megan_gardner@apple.com>

        Make LEGACY_PDF_SUPPORT feature flag.
        https://bugs.webkit.org/show_bug.cgi?id=210868
        <rdar://problem/62199847>

        Reviewed by Tim Horton.

        * WebView/WebFrameView.mm:
        (+[WebFrameView _viewTypesAllowImageTypeOmission:]):
        * WebView/WebView.mm:

2020-04-24  Antoine Quint  <graouts@apple.com>

        Update the css/css-animations WPT tests
        https://bugs.webkit.org/show_bug.cgi?id=210964

        Reviewed by Dean Jackson.

        Expose the CSSCustomPropertiesAndValues experimental feature such that it may be set in DumpRenderTree.

        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (-[WebPreferences CSSCustomPropertiesAndValuesEnabled]):
        (-[WebPreferences setCSSCustomPropertiesAndValuesEnabled:]):
        * WebView/WebPreferencesPrivate.h:
        * WebView/WebView.mm:

2020-04-23  Alex Christensen  <achristensen@webkit.org>

        Jesus Calling app needs more WebSQL
        https://bugs.webkit.org/show_bug.cgi?id=210889
        <rdar://problem/61795507>

        Reviewed by Chris Dumez.

        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):

2020-04-22  Darin Adler  <darin@apple.com>

        [Cocoa] Build with UChar as char16_t even in builds that use Apple's internal SDK
        https://bugs.webkit.org/show_bug.cgi?id=210845

        Reviewed by Anders Carlsson.

        * Configurations/WebKitLegacy.xcconfig: Move ICU-configuring macros to Platform.h.

2020-04-22  Darin Adler  <darin@apple.com>

        [Cocoa] REGRESSION (r260485): Crash in Legacy WebKit createMenu item function (reproducible under Asan)
        https://bugs.webkit.org/show_bug.cgi?id=210888

        Reviewed by Alex Christensen.

        * WebView/WebHTMLView.mm:
        (createMenuItem): Speculative fix: Go back to using a local variable. Apparently
        the Objective-C for loop doesn't extend the lifetime of its argument the way the
        C++ range-based for loop does, so the local variable is needed.

2020-04-21  Peng Liu  <peng.liu6@apple.com>

        Fix MACCATALYST build failures
        https://bugs.webkit.org/show_bug.cgi?id=210815

        Reviewed by Tim Horton.

        * Configurations/FeatureDefines.xcconfig:

2020-04-19  Darin Adler  <darin@apple.com>

        [Cocoa] Use createNSArray in many more places that build NSArray objects from C++ collections
        https://bugs.webkit.org/show_bug.cgi?id=210702

        Reviewed by Alex Christensen.

        * DOM/DOM.mm:
        (kit): Use createNSArray.
        (-[DOMNode getPreviewSnapshotImage:andRects:]): Ditto. Also use makeNSArrayElement
        to convert FloatRect to an NSValue containing a CGRect, avoiding use of
        +[NSValue value:withObjCType:], while working on macOS where +[NSValue valueWithCGRect:]
        is not part of API.

        * History/WebBackForwardList.mm:
        (-[WebBackForwardList dictionaryRepresentation]): Use createNSArray, fewer local
        variables, and use constexpr instead of #define.
        (-[WebBackForwardList setToMatchDictionaryRepresentation:]): Use adoptNS instead
        of explicit release and reference instead of pointer.
        (vectorToNSArray): Deleted.
        (-[WebBackForwardList backListWithLimit:]): Use createNSArray. Also use RetainPtr for
        the "hack" here rather than explicit retain/release calls.
        (-[WebBackForwardList forwardListWithLimit:]): Ditto.

        * History/WebHistoryItem.mm:
        (kit): Added a retain/autorelease pair that is important to have predictable lifetime.
        (-[WebHistoryItem initWithURLString:title:displayTitle:lastVisitedTimeInterval:]):
        Added a missing null check.
        (-[WebHistoryItem initWithWebCoreHistoryItem:]): Added a FIXME about something I
        noticed that is not related to the rest of this patch.
        (-[WebHistoryItem children]): Use createNSArray.
        (-[WebHistoryItem _redirectURLs]): Ditto.

        * Misc/WebCoreStatistics.mm:
        (createNSCountedSet): Added. More efficient than the old code because it doesn't
        create many NSString objects for each key, but also shared between functions.
        (+[WebCoreStatistics javaScriptProtectedObjectTypeCounts]): Use createNSCountedSet.
        (+[WebCoreStatistics javaScriptObjectTypeCounts]): Ditto.

        * Misc/WebNSPasteboardExtras.mm:
        (-[NSPasteboard _web_declareAndWriteDragImageForElement:URL:title:archive:source:]):
        Use @[] instead of NSMutableArray

        * Storage/WebDatabaseManager.mm:
        (-[WebDatabaseManager origins]): Use createNSArray.
        * Storage/WebStorageManager.mm:
        (-[WebStorageManager origins]): Ditto.
        * WebCoreSupport/WebApplicationCache.mm:
        (+[WebApplicationCache originsWithCache]): Ditto.
        * WebCoreSupport/WebEditorClient.mm:
        (WebEditorClient::updateSpellingUIWithGrammarString): Ditto.
        * WebCoreSupport/WebNotificationClient.mm:
        (WebNotificationClient::clearNotifications): Ditto.
        * WebView/WebArchive.mm:
        (-[WebArchive subresources]): Ditto.
        (-[WebArchive subframeArchives]): Ditto.
        * WebView/WebDataSource.mm:
        (-[WebDataSource subresources]): Ditto.

        * WebView/WebFrame.mm:
        (-[WebFrame _nodesFromList:]): Deleted. This was not declared in any header and
        was also unused.

        * WebView/WebFrameView.mm:
        (-[WebFrameView initWithFrame:]): Added a FIXME about something I noticed that is
        not related to the rest of this patch.

        * WebView/WebHTMLRepresentation.mm:
        (-[WebHTMLRepresentation controlsInForm:]): Use createNSArray.

        * WebView/WebHTMLView.mm:
        (createMenuItems): Use createNSArray. Also moved up in the file.
        (createMenuItem): Removed unneeded local variable.

        * WebView/WebView.mm:
        (-[WebUITextIndicatorData initWithImage:textIndicatorData:scale:]):
        Use createNSArray.

2020-04-20  Peng Liu  <peng.liu6@apple.com>

        Fix build failures when video fullscreen and picture-in-picture is disabled
        https://bugs.webkit.org/show_bug.cgi?id=210777

        Reviewed by Eric Carlson.

        * Configurations/FeatureDefines.xcconfig:

2020-04-20  Darin Adler  <darin@apple.com>

        Use #import instead of #include in Objective-C and don't use #pragma once
        https://bugs.webkit.org/show_bug.cgi?id=210724

        Reviewed by David Kilzer.

        * Configurations/WebKitLegacy.xcconfig: Removed MemoryMeasure.h from
        EXCLUDED_SOURCE_FILE_NAMES.

        * Misc/WebCache.mm:
        (+[WebCache emptyInMemoryResources]): Removed invocation of MemoryMeasure.
        This is no longer used for anything.

        * History/BackForwardList.mm:
        * Plugins/Hosted/ProxyRuntimeObject.mm:
        * Plugins/Hosted/WebHostedNetscapePluginView.mm:
        * WebCoreSupport/SearchPopupMenuMac.mm:
        * WebCoreSupport/WebAlternativeTextClient.mm:
        * WebCoreSupport/WebSecurityOriginInternal.h:
        * WebInspector/WebInspector.mm:
        * WebView/WebFramePrivate.h:
        * WebView/WebScriptWorld.h:
        * WebView/WebView.mm:
        More #import, less #pragma once.

2020-04-18  Rob Buis  <rbuis@igalia.com>

        Reduce parameter list of the FrameLoadRequest constructor
        https://bugs.webkit.org/show_bug.cgi?id=210668

        Reviewed by Darin Adler.

        Adapt to API change.

        * Plugins/WebPluginController.mm:
        (-[WebPluginController webPlugInContainerLoadRequest:inFrame:]):
        * WebView/WebFrame.mm:
        (-[WebFrame loadRequest:]):
        (-[WebFrame _loadData:MIMEType:textEncodingName:baseURL:unreachableURL:]):
        * WebView/WebPDFView.mm:
        (-[WebPDFView PDFViewWillClickOnLink:withURL:]):

2020-04-18  David Kilzer  <ddkilzer@apple.com>

        -[WebPreferences initWithCoder:] should use -[NSCoder decodeValueOfObjCType:at:size:]
        <https://webkit.org/b/210621>
        <rdar://problem/61906458>

        Reviewed by Anders Carlsson.

        * WebView/WebPreferences.mm:
        (-[WebPreferences initWithCoder:]):
        - Switch to -[NSCoder decodeValueOfObjCType:at:size:].

2020-04-17  David Kilzer  <ddkilzer@apple.com>

        [iOS WK1] -[_WebSafeForwarder asyncForwarder] uses non-static dispatch_once_t predicate
        <https://webkit.org/b/210625>

        Reviewed by Daniel Bates.

        Remove use of dispatch_once to initialize
        _WebSafeForwarder._asyncForwarder, and modernize both
        _WebSafeForwarder and _WebSafeAsyncForwarder classes.

        * WebView/WebView.mm:
        (@interface _WebSafeAsyncForwarder):
        - Make `_forwarder` weak.  It can't be strong or a retain cycle
          would be created between this object and _WebSafeForwarder.
        - Change return type from `id` to `instancetype` for
          -[_WebSafeAsyncForwarder initWithForwarder:].
        (@interface _WebSafeForwarder):
        - Make `_target` weak and rename from `target`.
        - Make `_defaultTarget` weak and rename from `defaultTarget`.
        - Rename `_asyncForwarder` from `asyncForwarder`.
        - Delete unused `asyncForwarderPred`.
        - Replace -asyncForwarder method declaration with a @property
          definition.
        (-[_WebSafeForwarder initWithTarget:defaultTarget:]):
        - Update for instance variable renames.
        - Iniitalize `_asyncForwarder` here.  There are (at most) eight
          _WebSafeForwarder objects created per WebView, so creating
          this object in the constructor seems reasonable.
        (-[_WebSafeForwarder asyncForwarder:]):
        - Delete this method (and use of dispatch_once, fixing the bug).
          Replace with @synthesize statement.
        (-[_WebSafeForwarder dealloc:]):
        - Update for instance variable renames, and assign nil to all
          instance variables.
        (-[_WebSafeForwarder forwardInvocation:]):
        (-[_WebSafeForwarder respondsToSelector:]):
        (-[_WebSafeForwarder methodSignatureForSelector:]):
        - Update for instance variable renames.
        (-[_WebSafeForwarder initWithForwarder:]):
        - Change return type from `id` to `instancetype`.

2020-04-17  Rob Buis  <rbuis@igalia.com>

        Move allowPlugins to FrameLoader
        https://bugs.webkit.org/show_bug.cgi?id=205876

        Reviewed by Darin Adler.

        Adapt to API change.

        * WebCoreSupport/WebPluginInfoProvider.mm:
        (WebPluginInfoProvider::pluginInfo):
        * WebView/WebFrame.mm:
        (-[WebFrame _canProvideDocumentSource]):

2020-04-13  Tim Horton  <timothy_horton@apple.com>

        REGRESSION (r259843): "Missing Plug-In" when dragging an image into Mail Compose
        https://bugs.webkit.org/show_bug.cgi?id=210458
        <rdar://problem/61735361>

        Reviewed by Wenson Hsieh.

        * WebCoreSupport/WebFrameLoaderClient.mm:
        (WebFrameLoaderClient::createPlugin):
        r259843 changed this code from making a dictionary with a set of key->object mappings
        to making a dictionary with an array of keys as its only key and an array of objects
        as that key's value. Not quite the same thing.

        Go back to dictionaryWithObjects:forKeys:.

2020-04-13  David Kilzer  <ddkilzer@apple.com>

        Fix clang static analyzer warnings about unused instance variables in WebIconDatabase, WKView
        <https://webkit.org/b/210427>

        Reviewed by Alex Christensen.

        * Misc/WebIconDatabase.h:
        (WebIconDatabase._private):
        - Use WK_UNUSED_INSTANCE_VARIABLE to ignore unused instance
          variable.

2020-04-11  Wenson Hsieh  <wenson_hsieh@apple.com>

        [macOS] [WK1] Touch Bar flashes when typing in Vietnamese in Mail
        https://bugs.webkit.org/show_bug.cgi?id=210394
        <rdar://problem/60099560>

        Reviewed by Tim Horton.

        In recent versions of macOS, changes to the animation of the candidate list touch bar item when it is expanded
        or collapsed using -updateWithInsertionPointVisibility: mean that back-to-back calls to hide and show the
        candidate list during the same runloop now result in a visible flicker, whereas it would remain still in prior
        releases.

        Combined with how `-[WebHTMLView insertText:]` in WebKitLegacy causes multiple selection change updates if the
        argument is an attributed string with the text replacement attribute, this means that there is now a visible
        flicker in the touch bar when using input methods that rely on the `NSTextInputReplacementRangeAttributeName`
        attribute. One such input method is Simple Telex (Vietnamese), when typing causes characters in other parts of
        the word to gain diacritics.

        To fix this, we make two small adjustments in WebKitLegacy (see below).

        * WebView/WebHTMLView.mm:
        (-[WebHTMLView insertText:]):

        While inserting text (which may be an NSAttibutedString or NSString), we may come across an attribute indicating
        which part of the document to replace. In this case, we will select this range in the document before inserting
        the given text.

        This selection change is propagated to the client layer, which makes us briefly think that we have a ranged
        selection, causing the flicker described above. Address this by suppressing selection change notifications while
        we're selecting the range to replace, using the new `IgnoreSelectionChangeForScope` RAII object (see WebCore
        changes for more detail).

        * WebView/WebView.mm:
        (-[WebView updateTextTouchBar]):

        When updating the text touch bar (which contains the candidate list item) after a selection change, we currently
        handle the case where selection changes are ignored by hiding the candidate list; this doesn't seem right, since
        selection changes that are ignored should simply be ignored by the client. To fix this, push the
        `ignoreSelectionChanges()` check into the if statement.

2020-04-10  Darin Adler  <darin@apple.com>

        Move more from live range to SimpleRange: callers of absoluteTextRects
        https://bugs.webkit.org/show_bug.cgi?id=210369

        Reviewed by Anders Carlsson.

        * DOM/DOM.mm:
        (-[DOMNode textRects]): Moved implementation here. There's no reason for Node
        to have a textRects function, since it's a layout/rendering operation and a
        single node is also an unusual special case, but for now we will keep this
        legacy method for compatibility with old clients.
        (-[DOMRange textRects]): Changed to call RenderObject::absoluteTextRects
        instead of Range::absoluteTextRects.

        * WebView/WebFrame.mm:
        (-[WebFrame _rectsForRange:]): Changed to call -[DOMRange textRects] instead
        of Range::absoluteTextRects. Don't really need two identical methods but
        probably need to keep this around for compatiblitiy.

2020-04-08  Darin Adler  <darin@apple.com>

        [Cocoa] Simplify NSArray, NSDictionary, and NSNumber idioms throughout WebKit
        https://bugs.webkit.org/show_bug.cgi?id=210138

        Reviewed by Alex Christensen.

        * DOM/DOM.mm:
        (kit): Deleted overload that takes Vector<IntRect>.
        (-[DOMNode textRects]): Use createNSArray.
        (-[DOMRange textRects]): Ditto.

        * DOM/ExceptionHandlers.mm:
        (raiseDOMErrorException): Use @().

        * History/WebBackForwardList.mm:
        (-[WebBackForwardList dictionaryRepresentation]): Use @{}.

        * History/WebHistory.mm:
        (+[WebHistoryPrivate initialize]): Use @{}.
        (-[WebHistory _sendNotification:entries:]): Use @{}.

        * History/WebHistoryItem.mm:
        (-[WebHistoryItem initFromDictionaryRepresentation:]): Use makeVector<String>.
        (-[WebHistoryItem dictionaryRepresentation:]): Use createNSArray and @().

        * History/WebURLsWithTitles.m:
        (+[WebURLsWithTitles arrayWithIFURLsWithTitlesPboardType]): Use @[].
        (+[WebURLsWithTitles writeURLs:andTitles:toPasteboard:]): Use @[].

        * Misc/WebCache.mm:
        (+[WebCache statistics]): Use @[], @{}, and @().
        * Misc/WebCoreStatistics.mm:
        (+[WebCoreStatistics memoryStatistics]): Ditto.

        * Misc/WebKitErrors.m:
        (-[NSError _webkit_initWithDomain:code:URL:]): Use @().
        (+[NSError _registerWebKitErrors]): Use @().
        (-[NSError _initWithPluginErrorCode:contentURL:pluginPageURL:pluginName:MIMEType:]): Use @().

        * Misc/WebKitNSStringExtras.mm:
        (-[NSString _web_drawAtPoint:font:textColor:]): Use @{}.
        (-[NSString _web_widthWithFont:]): Use @{}.

        * Misc/WebNSFileManagerExtras.mm: Removed unneeded include.

        * Misc/WebNSPasteboardExtras.mm:
        (+[NSPasteboard _web_dragTypesForURL]): Use @[].
        (-[NSPasteboard _web_writeURL:andTitle:types:]): Use @[].
        (+[NSPasteboard _web_setFindPasteboardString:withOwner:]): Use @[].

        * Misc/WebNSURLExtras.mm: Removed unneeded include.

        * Plugins/Hosted/NetscapePluginHostManager.mm:
        (WebKit::NetscapePluginHostManager::spawnPluginHost): Use @{}.

        * Plugins/Hosted/NetscapePluginHostProxy.mm:
        (WKPCIdentifierInfo): Use @().

        * Plugins/Hosted/NetscapePluginInstanceProxy.mm:
        (WebKit::NetscapePluginInstanceProxy::addValueToArray): Use @().

        * Plugins/Hosted/WebHostedNetscapePluginView.mm: Removed unneeded include.
        * Plugins/WebBasePluginPackage.mm: Ditto.

        * Plugins/WebPluginContainerCheck.mm:
        (-[WebPluginContainerCheck _actionInformationWithURL:]): Use @{}.

        * Plugins/WebPluginDatabase.mm:
        (+[WebPluginDatabase _defaultPlugInPaths]): Use @[].

        * Storage/WebDatabaseManager.mm:
        (-[WebDatabaseManager databasesWithOrigin:]): Use createNSArray.

        * WebCoreSupport/CorrectionPanel.mm:
        (CorrectionPanel::show): Use createNSArray.

        * WebCoreSupport/WebChromeClient.mm:
        (WebChromeClient::addMessageToConsole): Use @().

        * WebCoreSupport/WebEditorClient.mm:
        (attributesForAttributedStringConversion): Use @().
        (WebEditorClient::getGuessesForWord): Use makeVector<String>.

        * WebCoreSupport/WebFrameLoaderClient.mm:
        (WebFrameLoaderClient::actionDictionary const): Use @().
        (kit): Deleted overload that takes Vector<String>.
        (pluginView): Use @{}.
        (WebFrameLoaderClient::createPlugin): Use createNSArray, @{}, and @().
        (WebFrameLoaderClient::createJavaAppletWidget): Use createNSArray.

        * WebCoreSupport/WebOpenPanelResultListener.mm:
        (-[WebOpenPanelResultListener chooseFilenames:]): Use makeVector<String>.
        (-[WebOpenPanelResultListener chooseFilename:displayString:iconImage:]): Use @[].
        (-[WebOpenPanelResultListener chooseFilenames:displayString:iconImage:]): Use makeVector<String>.

        * WebCoreSupport/WebSelectionServiceController.mm:
        (WebSelectionServiceController::handleSelectionServiceClick):
        Comment out an unused argument.

        * WebView/WebFrame.mm:
        (-[WebFrame _rectsForRange:]): Use createNSArrray.
        (-[WebFrame _computePageRectsWithPrintScaleFactor:pageSize:]): Use createNSArray and @[].
        (-[WebFrame childFrames]): Use @[].

        * WebView/WebHTMLView.mm:
        (+[WebHTMLView _selectionPasteboardTypes]): Use @[].
        (-[WebHTMLView namesOfPromisedFilesDroppedAtDestination:]): Use @[].
        (-[WebHTMLView knowsPageRange:]): Use @[].
        (-[WebHTMLView accessibilityAttributeValue:]): Use @[].
        (-[WebHTMLView copyFont:]): Use @[].
        (-[WebHTMLView _interpretKeyEvent:savingCommands:]): Use @[].
        (-[WebHTMLView selectionTextRects]): Use createNSArray.
        (-[WebHTMLView rectsForTextMatches]): Use createNSArray and @[].

        * WebView/WebPDFRepresentation.mm: Removed unneeded include.
        (+[WebPDFRepresentation postScriptMIMETypes]): Use @[].
        (+[WebPDFRepresentation supportedMIMETypes]): Use @[].

        * WebView/WebPDFView.mm:
        (-[WebPDFView elementAtPoint:]): Use @{} and @().
        (-[WebPDFView viewState]): Use @().
        (-[WebPDFView selectionTextRects]): Use @[].
        (-[WebPDFView pasteboardTypesForSelection]): Use @[].
        (-[WebPDFView _menuItemsFromPDFKitForEvent:]): Use @().
        (-[WebPDFView _openWithFinder:]): Use @{} and @().

        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]): Use @().
        (-[WebPreferences _setUnsignedIntValue:forKey:]): Use @().
        (+[WebPreferences _setInitialDefaultTextEncodingToSystemEncoding]): Use @().
        (-[WebPreferences setStorageBlockingPolicy:]): Use @{} and @().

        * WebView/WebScriptDebugger.mm:
        (WebScriptDebugger::sourceParsed): Use @().

        * WebView/WebTextCompletionController.mm:
        (-[WebTextCompletionController _placePopupWindow:]): Use @{}.

        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]): Use makeVector<String>.
        (-[WebView _contentsOfUserInterfaceItem:]): Use @().
        (toStringVector): Deleted.
        (+[WebView _addUserScriptToGroup:world:source:url:whitelist:blacklist:injectionTime:injectedFrames:]):
        Use makeVector<String>.
        (+[WebView _addUserStyleSheetToGroup:world:source:url:whitelist:blacklist:injectedFrames:]):
        Use makeVector<String>.
        (-[WebView _elementAtWindowPoint:]): Use @{}.
        (-[WebView pasteboardTypesForSelection]): Use @[].
        (-[WebView pasteboardTypesForElement:]): Use @[].
        (-[WebView rectsForTextMatches]): Use @[].
        (-[WebView _searchWithGoogleFromMenu:]): Use @[].
        (-[WebView _setFontWhitelist:]): Use makeVector<String>.

2020-04-08  Daniel Bates  <dabates@apple.com>

        Track editable elements on screen
        https://bugs.webkit.org/show_bug.cgi?id=209888
        <rdar://problem/61196886>

        Reviewed by Simon Fraser.

        Add feature define to track editable elements on screen (enabled by default on iOS and iOS Simulator).

        * Configurations/FeatureDefines.xcconfig:

2020-04-08  Truitt Savell  <tsavell@apple.com>

        Unreviewed, reverting r259708.

        Broke the iOS device Build

        Reverted changeset:

        "Enable the use of XCBuild by default in Apple builds"
        https://bugs.webkit.org/show_bug.cgi?id=209890
        https://trac.webkit.org/changeset/259708

2020-04-08  Keith Rollin  <krollin@apple.com>

        Enable the use of XCBuild by default in Apple builds
        https://bugs.webkit.org/show_bug.cgi?id=209890
        <rdar://problem/44182078>

        Reviewed by Darin Adler.

        Switch from the "legacy" Xcode build system to the "new" build system
        (also known as "XCBuild"). Switching to the new system speeds up
        builds by a small percentage, better validates projects for
        build-related issues (such as dependency cycles), lets WebKit benefit
        from future improvements in XCBuild such as those coming from the
        underlying llbuild open source project, and prepares us for any other
        tools built for this new ecosystem.

        Specific changes:

        - Remove Xcode project and workspace settings that selected the Build
          system, allowing the default to take hold (which is currently the
          New build system).
        - Updated webkitdirs.pm with a terser check for Xcode version.
        - Update build-webkit and Makefile.shared to be explicit when using
          the old build system (no longer treat it as a default or fall-back
          configuration).
        - Update various xcconfig files similarly to treat the default as
          using the new build system.
        - Update various post-processing build steps to check for Xcode 11.4
          and to no longer treat the default as using the old build system.

        * Configurations/WebKitLegacy.xcconfig:

2020-04-06  Ross Kirsling  <ross.kirsling@sony.com>

        Update minimum ICU version to 60.2
        https://bugs.webkit.org/show_bug.cgi?id=209694

        Reviewed by Darin Adler.

        * Misc/WebKitNSStringExtras.mm:
        (-[NSString _web_drawAtPoint:font:textColor:]):
        (-[NSString _web_widthWithFont:]):
        * WebCoreSupport/WebVisitedLinkStore.mm:
        (WebVisitedLinkStore::addVisitedLink):
        * WebView/WebTextIterator.mm:
        (-[WebTextIterator currentTextPointer]):
        Manually convert between UChar and UniChar/unichar where needed.

2020-04-04  Darin Adler  <darin@apple.com>

        Stop using live ranges in DocumentMarkerController
        https://bugs.webkit.org/show_bug.cgi?id=209985

        Reviewed by Antti Koivisto.

        * DOM/DOM.mm:
        (-[DOMNode absoluteQuadAndInsideFixedPosition:]): Use unitedBoundingBoxes.
        * WebCoreSupport/WebEditorClient.mm:
        (WebEditorClient::handleRequestedCandidates): Use RenderObject::absoluteTextQuads.
        * WebView/WebFrame.mm:
        (-[WebFrame getDictationResultRanges:andMetadatas:]): Updated since DocumentMarker no
        longer has a dedicated metadata member function.
        (-[WebFrame dictationResultMetadataForRange:]):
        * WebView/WebImmediateActionController.mm:
        (+[WebImmediateActionController _dictionaryPopupInfoForRange:inFrame:withLookupOptions:indicatorOptions:transition:]):
        Use RenderObject::absoluteTextQuads.

2020-04-04  Peng Liu  <peng.liu6@apple.com>

        REGRESSION (r259095): ASSERTION FAILED: m_videoFullscreenMode != VideoFullscreenModeNone seen with TestWebKitAPI.WebKitLegacy.AudioSessionCategoryIOS
        https://bugs.webkit.org/show_bug.cgi?id=209680

        Reviewed by Jer Noble.

        With this patch, the WebKit-Legacy can support multiple video elements request
        to enter video fullscreen almost at the same time, and only the last one will succeed.
        Also, this patch fixes webkit.org/b/209610 for WebKit-Legacy.

        * WebView/WebView.mm:
        * WebView/WebViewData.h:

2020-04-03  Alex Christensen  <achristensen@webkit.org>

        Add SPI to make WKUserScripts wait for a notification
        https://bugs.webkit.org/show_bug.cgi?id=209845
        <rdar://problem/60342299>

        Reviewed by Chris Dumez.

        * WebView/WebView.mm:
        (-[WebView _injectOutlookQuirksScript]):

2020-04-03  Tim Horton  <timothy_horton@apple.com>

        Add a visual debug indicator for locating and identifying all kinds of WebViews
        https://bugs.webkit.org/show_bug.cgi?id=209982
        <rdar://problem/60339870>

        Reviewed by Simon Fraser.

        * WebView/WebView.mm:
        (-[WebView _commonInitializationWithFrameName:groupName:]):
        Adopt for WebView on macOS (UIWebView will install it itself on iOS).

        * WebView/WebViewPrivate.h:
        Expose _installVisualIdentificationOverlayForViewIfNeeded:kind: for UIWebView's use.
        It is slightly unfortunate to expose SPI that uses UIView from a framework
        underneath UIKit, but there is no other single place where this code can live
        and not be a minor layering problem. Since it's debug UI, it seems passable.

2020-04-03  David Kilzer  <ddkilzer@apple.com>

        [Xcode] Replace ASAN_OTHER_CFLAGS and ASAN_OTHER_CPLUSPLUSFLAGS with $(inherited)
        <https://webkit.org/b/209963>
        <rdar://problem/61257504>

        Reviewed by Alexey Proskuryakov.

        * Configurations/Base.xcconfig:
        - Remove ASAN_OTHER_CFLAGS, ASAN_OTHER_CPLUSPLUSFLAGS and
          ASAN_OTHER_LDFLAGS.

2020-04-01  Darin Adler  <darin@apple.com>

        Remove all uses of live ranges from TextIterator
        https://bugs.webkit.org/show_bug.cgi?id=209723

        Reviewed by Antti Koivisto.

        * WebCoreSupport/WebEditorClient.mm:
        (WebEditorClient::updateSpellingUIWithGrammarString): Remove some unnecessary
        use of local variabels for NSString.
        (WebEditorClient::requestCandidatesForSelection): Pass a reference to a live
        range to plainText.
        * WebView/WebFrame.mm:
        (-[WebFrame _stringForRange:]): Ditto.
        (-[WebFrame _convertToNSRange:]): Use characterRange instead of
        TextIterator::getLocationAndLengthFromRange.

2020-04-01  Ryosuke Niwa  <rniwa@webkit.org>

        HTMLFormElement should use WeakPtr to keep track of its associated elements
        https://bugs.webkit.org/show_bug.cgi?id=209894

        Reviewed by Wenson Hsieh.

        * WebView/WebHTMLRepresentation.mm:
        (-[WebHTMLRepresentation elementWithName:inForm:]):
        (-[WebHTMLRepresentation controlsInForm:]):

2020-03-31  Wenson Hsieh  <wenson_hsieh@apple.com>

        Datalist option's label not used
        https://bugs.webkit.org/show_bug.cgi?id=201768
        <rdar://problem/55361186>

        Reviewed by Darin Adler.

        See WebCore/ChangeLog and WebKit/ChangeLog for more details.

        * WebCoreSupport/WebChromeClient.h:

2020-03-30  Devin Rousso  <drousso@apple.com>

        Web Inspector: provide a way to log messages from the network process
        https://bugs.webkit.org/show_bug.cgi?id=204775

        Reviewed by Brian Burg.

        ITP can be influenced by multiple pages simultaneously, meaning that sending a console
        message to the Web Inspector that's connected to the page that caused a change may not be
        useful as developers often don't test in complete isolation. As such, having a way to
        broadcast a console message to all Web Inspectors ensures that any changes caused by any
        page are always able to be seen, no matter which page is being actively inspected.

        * WebCoreSupport/WebChromeClient.mm:
        (stringForMessageSource):
        Add `ITPDebug` and `AdClickAttribution` message sources.

2020-03-29  Darin Adler  <darin@apple.com>

        Move TextIterator::rangeFromLocationAndLength off of live ranges
        https://bugs.webkit.org/show_bug.cgi?id=209408

        Reviewed by Antti Koivisto.

        * WebCoreSupport/WebEditorClient.mm:
        (WebEditorClient::checkTextOfParagraph): Use CharacterRange,
        resolveCharacterLocation/Range.
        (WebEditorClient::checkGrammarOfString): Ditto.
        (core): Ditto.
        (WebEditorClient::updateSpellingUIWithGrammarString): Ditto.
        (WebEditorClient::handleAcceptedCandidateWithSoftSpaces): Ditto.
        * WebView/WebFrame.mm:
        (-[WebFrame _convertToDOMRange:rangeIsRelativeTo:]): Ditto.
        * WebView/WebView.mm:
        (textCheckingResultFromNSTextCheckingResult): Ditto.

2020-03-27  Wenson Hsieh  <wenson_hsieh@apple.com>

        DragData::containsURL() should avoid reading URL strings from the pasteboard
        https://bugs.webkit.org/show_bug.cgi?id=209642
        Work towards <rdar://problem/59611585>

        Reviewed by Tim Horton.

        See WebCore/ChangeLog for more details.

        * WebCoreSupport/WebPlatformStrategies.h:
        * WebCoreSupport/WebPlatformStrategies.mm:
        (WebPlatformStrategies::containsURLStringSuitableForLoading):
        (WebPlatformStrategies::urlStringSuitableForLoading):

2020-03-25  Wenson Hsieh  <wenson_hsieh@apple.com>

        Avoid querying pasteboard strings while dragging content over a potential drop target
        https://bugs.webkit.org/show_bug.cgi?id=209531

        Reviewed by Tim Horton and Ryosuke Niwa.

        Add PasteboardStrategy plumbing; see WebCore for more details.

        * WebCoreSupport/WebPlatformStrategies.h:
        * WebCoreSupport/WebPlatformStrategies.mm:
        (WebPlatformStrategies::containsStringSafeForDOMToReadForType):

2020-03-23  Wenson Hsieh  <wenson_hsieh@apple.com>

        Remove the unused method PasteboardStrategy::uniqueName()
        https://bugs.webkit.org/show_bug.cgi?id=209452

        Reviewed by Tim Horton.

        See WebCore/ChangeLog for more detail.

        * WebCoreSupport/WebPlatformStrategies.h:
        * WebCoreSupport/WebPlatformStrategies.mm:
        (WebPlatformStrategies::uniqueName): Deleted.

2020-03-23  Darin Adler  <darin@apple.com>

        Change TextIterator::rangeLength to not require a live range
        https://bugs.webkit.org/show_bug.cgi?id=209207

        Reviewed by Antti Koivisto.

        * WebCoreSupport/WebEditorClient.mm:
        (insertionPointFromCurrentSelection): Use characterCount.
        (WebEditorClient::requestCandidatesForSelection): Ditto.
        * WebView/WebFrame.mm:
        (-[WebFrame _convertToDOMRange:rangeIsRelativeTo:]): Ditto.

2020-03-23  youenn fablet  <youenn@apple.com>

        Rename blankURL to aboutBlankURL
        https://bugs.webkit.org/show_bug.cgi?id=209344

        Reviewed by Darin Adler.

        * WebCoreSupport/WebFrameLoaderClient.mm:
        (WebFrameLoaderClient::updateGlobalHistory):
        * WebView/WebFrame.mm:
        (-[WebFrame _loadData:MIMEType:textEncodingName:baseURL:unreachableURL:]):

2020-03-20  Jer Noble  <jer.noble@apple.com>

        Ensure media cache directory is created before passing to AVURLAsset.
        https://bugs.webkit.org/show_bug.cgi?id=209341

        Reviewed by Eric Carlson.

        MediaPlayerPrivateAVFoundaionObjC will no longer create an asset cache in a temporary
        directory by default; ensure that it's media cache directory is set during initialization.

        * WebView/WebView.mm:
        (-[WebView _commonInitializationWithFrameName:groupName:]):

2020-03-20  Timothy Horton  <timothy_horton@apple.com>

        Improve the previous build fix.

        * WebCoreSupport/WebFrameLoaderClient.mm:
        Darin points out that we have USE(WEB_THREAD), so might as well use it!

2020-03-20  Timothy Horton  <timothy_horton@apple.com>

        Fix the build.

        * WebCoreSupport/WebFrameLoaderClient.mm:

2020-03-20  Tim Horton  <timothy_horton@apple.com>

        Upstream a variety of Cocoa-platform HAVE and ENABLE macros
        https://bugs.webkit.org/show_bug.cgi?id=209307

        Reviewed by Andy Estes.

        * Configurations/FeatureDefines.xcconfig:

2020-03-20  Jacob Uphoff  <jacob_uphoff@apple.com>

        Unreviewed, reverting r258748.

        This commit broke the Catalina build

        Reverted changeset:

        "Upstream a variety of Cocoa-platform HAVE and ENABLE macros"
        https://bugs.webkit.org/show_bug.cgi?id=209307
        https://trac.webkit.org/changeset/258748

2020-03-19  Tim Horton  <timothy_horton@apple.com>

        Upstream a variety of Cocoa-platform HAVE and ENABLE macros
        https://bugs.webkit.org/show_bug.cgi?id=209307

        Reviewed by Andy Estes.

        * Configurations/FeatureDefines.xcconfig:

2020-03-19  youenn fablet  <youenn@apple.com>

        Make URL::path() return a StringView
        https://bugs.webkit.org/show_bug.cgi?id=209173

        Reviewed by Alex Christensen.

        * Misc/WebNSURLExtras.mm:
        (-[NSString _webkit_stringByReplacingValidPercentEscapes]):

2020-03-18  youenn fablet  <youenn@apple.com>

        FrameLoader should own its FrameLoaderClient
        https://bugs.webkit.org/show_bug.cgi?id=208918

        Reviewed by Geoff Garen.

        Update according new Frame/FrameLoader constructors and FrameLoaderClient interface.

        * WebCoreSupport/WebFrameLoaderClient.h:
        (WebFrameLoaderClient::setWebFrame):
        * WebCoreSupport/WebFrameLoaderClient.mm:
        (WebFrameLoaderClient::~WebFrameLoaderClient):
        (WebFrameLoaderClient::cancelledError const):
        (WebFrameLoaderClient::blockedError const):
        (WebFrameLoaderClient::blockedByContentBlockerError const):
        (WebFrameLoaderClient::cannotShowURLError const):
        (WebFrameLoaderClient::interruptedForPolicyChangeError const):
        (WebFrameLoaderClient::blockedByContentFilterError const):
        (WebFrameLoaderClient::cannotShowMIMETypeError const):
        (WebFrameLoaderClient::fileDoesNotExistError const):
        (WebFrameLoaderClient::pluginWillHandleLoadError const):
        (WebFrameLoaderClient::shouldFallBack const):
        (WebFrameLoaderClient::userAgent const):
        * WebView/WebFrame.mm:
        (+[WebFrame _createFrameWithPage:frameName:frameView:ownerElement:]):
        (+[WebFrame _createMainFrameWithPage:frameName:frameView:]):
        (+[WebFrame _createMainFrameWithSimpleHTMLDocumentWithPage:frameView:style:]):
        * WebView/WebView.mm:
        (-[WebView _commonInitializationWithFrameName:groupName:]):
        (-[WebView initSimpleHTMLDocumentWithStyle:frame:preferences:groupName:]):

2020-03-17  Chris Dumez  <cdumez@apple.com>

        REGRESSION: [ macOS wk1 ] ASSERTION FAILED: _notifications.contains(notificationID) imported/w3c/web-platform-tests/notifications/constructor-basic.html is flaky crashing
        https://bugs.webkit.org/show_bug.cgi?id=207307
        <rdar://problem/59206964>

        Reviewed by Alex Christensen.

        * WebView/WebNotification.h:
        * WebView/WebNotification.mm:
        (-[WebNotification finalize]):

2020-03-17  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, reverting r258339.
        https://bugs.webkit.org/show_bug.cgi?id=209179

        "Is it sometimes breaking rendering" (Requested by youenn on
        #webkit).

        Reverted changeset:

        "FrameLoader should own its FrameLoaderClient"
        https://bugs.webkit.org/show_bug.cgi?id=208918
        https://trac.webkit.org/changeset/258339

2020-03-15  Darin Adler  <darin@apple.com>

        Move most of TextIterator off of live ranges
        https://bugs.webkit.org/show_bug.cgi?id=209129

        Reviewed by Antti Koivisto.

        * WebView/WebFrame.mm: Removed an include.

        * WebView/WebHTMLView.mm:
        (-[WebHTMLView _legacyAttributedStringFrom:offset:to:offset:]):
        Add casts to unsigned.

        * WebView/WebTextIterator.mm:
        (-[WebTextIterator initWithRange:]): Leave _private->_textIterator
        as a nullptr if the passed-in range is nil since we no longer offer
        a way to create an empty TextIterator; other clients don't seem to
        need one.
        (-[WebTextIterator advance]): Check _private->_textIterator for null.
        (-[WebTextIterator atEnd]): Ditto.
        (-[WebTextIterator currentRange]): Ditto.
        (-[WebTextIterator currentTextPointer]): Ditto.
        (-[WebTextIterator currentTextLength]): Ditto.
        (-[WebTextIterator currentNode]): Ditto.
        (-[WebTextIterator currentText]): Ditto.

2020-03-16  Timothy Horton  <timothy_horton@apple.com>

        Always include System.framework in WebKitLegacy's CPLUSPLUSFLAGS
        https://bugs.webkit.org/show_bug.cgi?id=209147

        Reviewed by Darin Adler.

        * Configurations/Base.xcconfig:
        * Configurations/WebKitLegacy.xcconfig:
        Bring WebKitLegacy's xcconfigs in line with all the other projects,
        adding System.framework globally, and in Base.xcconfig.

2020-03-16  Simon Fraser  <simon.fraser@apple.com>

        Remove FrameView::scheduleRenderingUpdate()
        https://bugs.webkit.org/show_bug.cgi?id=209109

        Reviewed by Antti Koivisto.

        FrameView::scheduleRenderingUpdate() called through to compositor(), but that just
        turned around to call scheduleRenderingUpdate() via Page. So Remove it and change
        callers to call Page::scheduleRenderingUpdate() directly.

        * WebView/WebView.mm:

2020-03-13  Sergio Villar Senin  <svillar@igalia.com>

        [WebXR] IDLs, stubs and build configuration for WPE
        https://bugs.webkit.org/show_bug.cgi?id=208702

        Reviewed by Dean Jackson.

        * Configurations/FeatureDefines.xcconfig: Added ENABLE_WEBXR, off by default.

2020-03-15  Yusuke Suzuki  <ysuzuki@apple.com>

        Should not use variable-length-array (VLA)
        https://bugs.webkit.org/show_bug.cgi?id=209043

        Reviewed by Mark Lam.

        * Configurations/Base.xcconfig:

2020-03-12  Brent Fulgham  <bfulgham@apple.com>

        Correct preference handling and naming conventions in AppBound browsing preferences
        https://bugs.webkit.org/show_bug.cgi?id=209031
        <rdar://problem/60396298>

        Reviewed by John Wilander.

        This patch consistently uses the correct naming scheme for WebKit Internal Debug flags.
        They should be 'WebKitDebug', not 'WebKitInternal' or 'WebKitInternalDebug'.

        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):
        (-[WebPreferences isInAppBrowserPrivacyEnabled]):
        (-[WebPreferences setInAppBrowserPrivacyEnabled:]):
        (-[WebPreferences needsInAppBrowserPrivacyQuirks]):
        (-[WebPreferences setNeedsInAppBrowserPrivacyQuirks:]):

2020-03-12  youenn fablet  <youenn@apple.com>

        FrameLoader should own its FrameLoaderClient
        https://bugs.webkit.org/show_bug.cgi?id=208918

        Reviewed by Geoffrey Garen.

        Update according new Frame/FrameLoader constructors and FrameLoaderClient interface.

        * WebCoreSupport/WebFrameLoaderClient.h:
        (WebFrameLoaderClient::setWebFrame):
        * WebCoreSupport/WebFrameLoaderClient.mm:
        (WebFrameLoaderClient::~WebFrameLoaderClient):
        (WebFrameLoaderClient::cancelledError const):
        (WebFrameLoaderClient::blockedError const):
        (WebFrameLoaderClient::blockedByContentBlockerError const):
        (WebFrameLoaderClient::cannotShowURLError const):
        (WebFrameLoaderClient::interruptedForPolicyChangeError const):
        (WebFrameLoaderClient::blockedByContentFilterError const):
        (WebFrameLoaderClient::cannotShowMIMETypeError const):
        (WebFrameLoaderClient::fileDoesNotExistError const):
        (WebFrameLoaderClient::pluginWillHandleLoadError const):
        (WebFrameLoaderClient::shouldFallBack const):
        (WebFrameLoaderClient::userAgent const):
        * WebView/WebFrame.mm:
        (+[WebFrame _createFrameWithPage:frameName:frameView:ownerElement:]):
        (+[WebFrame _createMainFrameWithPage:frameName:frameView:]):
        (+[WebFrame _createMainFrameWithSimpleHTMLDocumentWithPage:frameView:style:]):
        * WebView/WebView.mm:
        (-[WebView _commonInitializationWithFrameName:groupName:]):
        (-[WebView initSimpleHTMLDocumentWithStyle:frame:preferences:groupName:]):

2020-03-08  Darin Adler  <darin@apple.com>

        Make TextIterator::range return a SimpleRange
        https://bugs.webkit.org/show_bug.cgi?id=208797

        Reviewed by Don Olmstead.

        * WebView/WebTextIterator.mm:
        (-[WebTextIterator currentRange]): Use createLiveRange.

2020-03-09  Simon Fraser  <simon.fraser@apple.com>

        ASSERT(!m_textCheckingRequest) on editing/spelling/spellcheck-async-remove-frame.html
        https://bugs.webkit.org/show_bug.cgi?id=126606

        Reviewed by Wenson Hsieh.

        SpellChecker's sequence numbers need to be unique between frames, because they are sent out
        to EditorClient which may be one per web view, so use a static to hold the current
        sequence number.

        Also convert from int to TextCheckingSequence to make them easier to find, and use
        Markable and Optional in TextCheckingRequestData to represent the unset state.

        * WebCoreSupport/WebEditorClient.h:
        * WebCoreSupport/WebEditorClient.mm:
        (-[WebEditorSpellCheckResponder initWithClient:identifier:results:]):
        (-[WebEditorSpellCheckResponder perform]):
        (WebEditorClient::didCheckSucceed):
        (WebEditorClient::requestCheckingOfString):
        (-[WebEditorSpellCheckResponder initWithClient:sequence:results:]): Deleted.

2020-03-09  Don Olmstead  <don.olmstead@sony.com>

        Remove obsolete feature flags
        https://bugs.webkit.org/show_bug.cgi?id=208830

        Reviewed by Alex Christensen.

        Remove ENABLE_CUSTOM_SCHEME_HANDLER and ENABLE_MAC_VIDEO_TOOLBOX since they
        are no longer used.

        * Configurations/FeatureDefines.xcconfig:
        * WebView/WebPreferences.mm: ENABLE(WIRELESS_TARGET_PLAYBACK) -> ENABLE(WIRELESS_PLAYBACK_TARGET)
        (+[WebPreferences initialize]):
        (-[WebPreferences allowsAirPlayForMediaPlayback]):
        (-[WebPreferences setAllowsAirPlayForMediaPlayback:]):

2020-03-09  Antoine Quint  <graouts@apple.com>

        Remove the compile-time flag for Pointer Events
        https://bugs.webkit.org/show_bug.cgi?id=208821
        <rdar://problem/60223471>

        Reviewed by Dean Jackson.

        * Configurations/FeatureDefines.xcconfig:

2020-03-07  Darin Adler  <darin@apple.com>

        Begin moving off of live ranges for WebKit internals
        https://bugs.webkit.org/show_bug.cgi?id=208432

        Reviewed by Daniel Bates.

        * WebCoreSupport/WebContextMenuClient.mm: Added include.
        * WebView/WebFrame.mm: Ditto.
        (-[WebFrame _convertToNSRange:]): Initialized out arguments.

2020-03-07  Brent Fulgham  <bfulgham@apple.com>

        Create a flag to disable in-app browser quirks
        https://bugs.webkit.org/show_bug.cgi?id=208777
        <rdar://problem/60062197>

        Reviewed by Simon Fraser.

        This patch makes the following changes:

        1. Adds a new flag 'NeedsInAppBrowserPrivacyQuirks' to allow quirks to be toggled
           during testing.
        2. Reclassify this new flag, and the existing 'InAppBrowserPrivacyEnabled' flag from 
           'settings' to Internal Debug settings

        The renamed flags are covered by existing tests.

        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]): Add new flag.
        (-[WebPreferences needsInAppBrowserPrivacyQuirks]): Ditto.
        (-[WebPreferences setNeedsInAppBrowserPrivacyQuirks:]): Ditto.
        * WebView/WebPreferencesPrivate.h:
        * WebView/WebView.mm:

2020-03-07  Daniel Bates  <dabates@apple.com>

        [iOS] Implement support for dictation alternatives
        https://bugs.webkit.org/show_bug.cgi?id=208720
        <rdar://problem/58540114>

        Reviewed by Brent Fulgham.

        Part 3

        Guard code that requires USE(AUTOCORRECTION_PANEL) to be enabled. Specifically, -_showDictationAlternativeUI
        calls -handleAcceptedAlternativeText, but the latter is only compiled in when USE(AUTOCORRECTION_PANEL)
        is enabled.

        Note that I haven't enable USE_DICTATION_ALTERNATIVES on iOS. So, this code isn't being
        compiled for iOS. I will do that in a subsequent change once after all the code is in place
        to do so.

        * WebView/WebView.mm:

2020-03-05  Sam Weinig  <weinig@apple.com>

        Move JavaScriptCore related feature defines from FeatureDefines.xcconfig to PlatformEnableCocoa.h
        https://bugs.webkit.org/show_bug.cgi?id=207436
        <rdar://problem/59296762>

        Reviewed by Darin Adler.

        * Configurations/FeatureDefines.xcconfig:
        Remove JSC related defines.

2020-03-06  Simon Fraser  <simon.fraser@apple.com>

        Flaky Test: editing/spelling/spellcheck-async.html
        https://bugs.webkit.org/show_bug.cgi?id=160571

        Reviewed by Ryosuke Niwa.
        
        Second try to fix this crash; the WebEditorClient can go away before all the NSSpellChecker
        callbacks are done (which happens off the main thread), so store a WeakPtr<WebEditorClient>.
        We have to create the WeakPtr on the main thread, and it gets copied into the first block.

        * WebCoreSupport/WebEditorClient.mm:
        (-[WebEditorSpellCheckResponder initWithClient:sequence:results:]):
        (-[WebEditorSpellCheckResponder perform]):
        (WebEditorClient::requestCheckingOfString):

2020-03-06  Simon Fraser  <simon.fraser@apple.com>

        Flaky Test: editing/spelling/spellcheck-async.html
        https://bugs.webkit.org/show_bug.cgi?id=160571

        Reviewed by Tim Horton.
        
        The old code called -performSelector:target:... with an autoreleased target,
        and nothing keeps the target alive until the call to -perform on the main thread.

        Change this to a block which copies in a RetainPtr<> to make ownership clearer
        and fix the crash.

        * WebCoreSupport/WebEditorClient.mm:
        (WebEditorClient::requestCheckingOfString):

2020-03-06  Jer Noble  <jer.noble@apple.com>

        [GPUP] Convert CDMFactory away from platformStrategies() and use WebProcess settings instead
        https://bugs.webkit.org/show_bug.cgi?id=208699

        Reviewed by Youenn Fablet.

        Remove Legacy CDM support from WebPlatformStrategies.

        * WebCoreSupport/WebPlatformStrategies.mm:

2020-03-06  Antoine Quint  <graouts@webkit.org>

        Remove the experimental flag for Pointer Events
        https://bugs.webkit.org/show_bug.cgi?id=208655
        <rdar://problem/60090545>

        Reviewed by Dean Jackson.

        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):
        (-[WebPreferences syntheticEditingCommandsEnabled]):
        (-[WebPreferences setSyntheticEditingCommandsEnabled:]):
        (-[WebPreferences pointerEventsEnabled]): Deleted.
        (-[WebPreferences setPointerEventsEnabled:]): Deleted.
        * WebView/WebPreferencesPrivate.h:
        * WebView/WebView.mm:

2020-03-05  youenn fablet  <youenn@apple.com>

        Export NowPlaying commands to GPUProcess when media playing in GPUProcess is enabled
        https://bugs.webkit.org/show_bug.cgi?id=208568

        Reviewed by Eric Carlson.

        Use in-process now playing implementation.

        * WebCoreSupport/WebPlatformStrategies.mm:

2020-03-04  Ben Nham  <nham@apple.com>

        Remove initial layout throttler
        https://bugs.webkit.org/show_bug.cgi?id=208285

        Reviewed by Antti Koivisto.

        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):
        (-[WebPreferences _setLayoutInterval:]): Deleted.
        (-[WebPreferences _layoutInterval]): Deleted.
        * WebView/WebPreferencesPrivate.h:
        * WebView/WebView.mm:

2020-03-03  Devin Rousso  <drousso@apple.com>

        Web Inspector: re-add `InspectorFrontendHost` support for moving the inspected window
        https://bugs.webkit.org/show_bug.cgi?id=208555

        Reviewed by Timothy Hatcher.

        Partially revert r257759, as the design changed enough such that this code is still useful.

        Allow the Web Inspector frontend to ask the containing app (via `InspectorFrontendClient`)
        whether it supports the given docking configuration.

        * WebCoreSupport/WebInspectorClient.h:
        * WebCoreSupport/WebInspectorClient.mm:
        (WebInspectorFrontendClient::startWindowDrag): Added.
        (WebInspectorFrontendClient::supportsDockSide): Added.

2020-03-03  Devin Rousso  <drousso@apple.com>

        Web Inspector: setting the frontend appearance doesn't update the window when undocked
        https://bugs.webkit.org/show_bug.cgi?id=208503

        Reviewed by Timothy Hatcher.

        Notify the UIProcess when setting the forced appearance so platforms that support dark mode
        are able to run native code to adjust the appearance of the undocked window.

        * WebCoreSupport/WebInspectorClient.h:
        * WebCoreSupport/WebInspectorClient.mm:
        (WebInspectorFrontendClient::setForcedAppearance): Added.

2020-03-02  Devin Rousso  <drousso@apple.com>

        Web Inspector: Items in the toolbar take up to much vertical space
        https://bugs.webkit.org/show_bug.cgi?id=204627
        <rdar://problem/59091905>

        Reviewed by Timothy Hatcher.

        Now that there is no toolbar area, there is nothing obstructing the ability for the window
        to be moved around when dragging via the title bar area. As such, we can remove the unused
        `InspectorFrontendHost` APIs.

        * WebCoreSupport/WebInspectorClient.h:
        * WebCoreSupport/WebInspectorClient.mm:
        (WebInspectorFrontendClient::startWindowDrag): Deleted.

2020-03-02  Alan Coon  <alancoon@apple.com>

        Add new Mac target numbers
        https://bugs.webkit.org/show_bug.cgi?id=208398

        Reviewed by Alexey Proskuryakov.

        * Configurations/Base.xcconfig:
        * Configurations/DebugRelease.xcconfig:
        * Configurations/Version.xcconfig:
        * Configurations/WebKitTargetConditionals.xcconfig:

2020-03-02  Rob Buis  <rbuis@igalia.com>

        Add referrerpolicy attribute support for anchors
        https://bugs.webkit.org/show_bug.cgi?id=208424

        Reviewed by Darin Adler.

        Adjust to FrameLoadRequest API change.

        * WebView/WebPDFView.mm:
        (-[WebPDFView PDFViewWillClickOnLink:withURL:]):

2020-02-29  Yusuke Suzuki  <ysuzuki@apple.com>

        Remove std::lock_guard
        https://bugs.webkit.org/show_bug.cgi?id=206451

        Reviewed by Anders Carlsson.

        * DOM/DOMInternal.mm:
        (getDOMWrapper):
        (addDOMWrapper):
        (removeDOMWrapper):

2020-02-28  Jer Noble  <jer.noble@apple.com>

        [GPUP] Implement Modern EME API in the GPU Process
        https://bugs.webkit.org/show_bug.cgi?id=208090

        Reviewed by Eric Carlson.

        Adopt changes to PlatformStrategies.

        * GPUProcess/media/RemoteMediaPlayerProxy.cpp:
        (WebKit::RemoteMediaPlayerProxy::mediaPlayerKeyNeeded):
        * GPUProcess/media/RemoteMediaPlayerProxy.h:
        * WebCoreSupport/WebPlatformStrategies.mm:

2020-02-27  Daniel Bates  <dabates@apple.com>

        Change HitTestRequestType to an OptionSet
        https://bugs.webkit.org/show_bug.cgi?id=208334

        Reviewed by Wenson Hsieh.

        * WebCoreSupport/WebFrameLoaderClient.mm:
        (WebFrameLoaderClient::actionDictionary const):
        * WebView/WebFrame.mm:
        (-[WebFrame elementAtPoint:]):
        * WebView/WebHTMLView.mm:
        (-[WebHTMLView elementAtPoint:allowShadowContent:]):
        * WebView/WebImmediateActionController.mm:
        (-[WebImmediateActionController performHitTestAtPoint:]):

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

        Create AudioDestination in the GPU process
        https://bugs.webkit.org/show_bug.cgi?id=208179

        Reviewed by Jer Noble.

        Added WebMediaStrategy which is a wrapper around AudioDestination::create.

        * WebCoreSupport/WebPlatformStrategies.h:
        * WebCoreSupport/WebPlatformStrategies.mm:
        (WebMediaStrategy): Added.
        (WebPlatformStrategies::createMediaStrategy):

2020-02-25  Megan Gardner  <megan_gardner@apple.com>

        Build Fix
        https://bugs.webkit.org/show_bug.cgi?id=208224
        <rdar://problem/58879500>

        Fix Build.

        Reviewed by Tim Horton.

        * WebView/WebFrameView.mm:
        (+[WebFrameView _viewTypesAllowImageTypeOmission:]):
        * WebView/WebView.mm:
        (+[WebView _viewClass:andRepresentationClass:forMIMEType:allowingPlugins:]): 

2020-02-25  Justin Michaud  <justin_michaud@apple.com>

        Inline Cache delete by id/val
        https://bugs.webkit.org/show_bug.cgi?id=207522

        Reviewed by Keith Miller and Filip Pizlo.

        * Plugins/Hosted/NetscapePluginInstanceProxy.mm:
        (WebKit::NetscapePluginInstanceProxy::removeProperty):

2020-02-25  Antti Koivisto  <antti@apple.com>

        Remove throttling code from RenderLayerCompositor
        https://bugs.webkit.org/show_bug.cgi?id=208135

        Reviewed by Zalan Bujtas.

        * WebView/WebView.mm:
        (-[WebView _scheduleRenderingUpdateForPendingTileCacheRepaint]):
        (-[WebView _scheduleLayerFlushForPendingTileCacheRepaint]): Deleted.

2020-02-24  Simon Fraser  <simon.fraser@apple.com>

        Rename the clashing WebOverlayLayer classes
        https://bugs.webkit.org/show_bug.cgi?id=208156
        rdar://problem/59739250

        Reviewed by Tim Horton.

        The name WebOverlayLayer was used in two places. Rename them both to more specific names.

        * WebView/WebVideoFullscreenController.mm:
        (-[WebVideoFullscreenController init]):
        (-[WebOverlayLayer layoutSublayers]): Deleted.

2020-02-22  Darin Adler  <darin@apple.com>

        Fix some include mistakes and make some coding style tweaks to WebKit and WebKitTestRunner
        https://bugs.webkit.org/show_bug.cgi?id=208099

        Reviewed by Antti Koivisto.

        * DOM/DOMDocument.mm: Removed unneeded includes and re-sorted.
        * DOM/DOMDocumentFragment.mm: Ditto.
        * DOM/DOMHTMLFieldSetElement.mm: Ditto.

2020-02-22  Jer Noble  <jer.noble@apple.com>

        Stop using QTKit for rendering WK1 video fullscreen controls
        https://bugs.webkit.org/show_bug.cgi?id=207795
        <rdar://problem/48894915>

        Reviewed by Jon Lee.

        Switch to using AVPlayerView instead of QTHUD to render our fullscreen controls.

        In addition, switch to a modern NSWindow fullscreen API, with custom, smooth animations which 
        move the fullscreen window to a separate space. This requires subclassing AVPlayerView so that
        fullscreen toggling will signal to the controller, so that our fullscreen button and the inline
        version of same don't get out of sync. Because AVPlayerView requires an AVPlayer in order to
        display the video layer, and we won't necessarily have an AVPlayer for MSE-backed videos, instead
        install a custom overlay view inside the AVPlayerView in which to host the fullscreen video layer.

        * WebView/WebVideoFullscreenController.h:
        * WebView/WebVideoFullscreenController.mm:
        (-[WebOverlayLayer layoutSublayers]):
        (WebAVPlayerView_delegate):
        (WebAVPlayerView_setDelegate):
        (WebAVPlayerView_isFullScreen):
        (WebAVPlayerView_enterFullScreen):
        (WebAVPlayerView_exitFullScreen):
        (allocWebAVPlayerViewInstance):
        (-[WebVideoFullscreenController init]):
        (-[WebVideoFullscreenController dealloc]):
        (-[WebVideoFullscreenController fullscreenWindow]):
        (-[WebVideoFullscreenController windowDidLoad]):
        (-[WebVideoFullscreenController setVideoElement:]):
        (-[WebVideoFullscreenController enterFullscreen:]):
        (-[WebVideoFullscreenController exitFullscreen]):
        (-[WebVideoFullscreenController applicationDidResignActive:]):
        (-[WebVideoFullscreenController _requestExit]):
        (-[WebVideoFullscreenController _requestEnter]):
        (-[WebVideoFullscreenController cancelOperation:]):
        (-[WebVideoFullscreenController playerViewIsFullScreen:]):
        (-[WebVideoFullscreenController playerViewRequestEnterFullscreen:]):
        (-[WebVideoFullscreenController playerViewRequestExitFullscreen:]):
        (-[WebVideoFullscreenController customWindowsToEnterFullScreenForWindow:]):
        (-[WebVideoFullscreenController window:startCustomAnimationToEnterFullScreenWithDuration:]):
        (-[WebVideoFullscreenController customWindowsToExitFullScreenForWindow:]):
        (-[WebVideoFullscreenController window:startCustomAnimationToExitFullScreenWithDuration:]):
        (-[WebVideoFullscreenController windowDidEnterFullScreen:]):
        (-[WebVideoFullscreenController windowWillExitFullScreen:]):
        (-[WebVideoFullscreenController windowDidExitFullScreen:]):
        (-[WebVideoFullscreenController clearFadeAnimation]): Deleted.
        (-[WebVideoFullscreenController windowDidExitFullscreen]): Deleted.
        (-[WebVideoFullscreenController windowDidEnterFullscreen]): Deleted.
        (frameExpandedToRatioOfFrame): Deleted.
        (createBackgroundFullscreenWindow): Deleted.
        (-[WebVideoFullscreenController setupFadeAnimationIfNeededAndFadeIn:]): Deleted.
        (-[WebVideoFullscreenController applicationDidChangeScreenParameters:]): Deleted.
        (-[WebVideoFullscreenController updateMenuAndDockForFullscreen]): Deleted.
        (-[WebVideoFullscreenController requestExitFullscreenWithAnimation:]): Deleted.
        (-[WebVideoFullscreenController requestExitFullscreen]): Deleted.
        (-[WebVideoFullscreenController fadeHUDIn]): Deleted.
        (-[WebVideoFullscreenController observeValueForKeyPath:ofObject:change:context:]): Deleted.
        (-[WebVideoFullscreenController rateChanged:]): Deleted.
        (-[WebVideoFullscreenWindow initWithContentRect:styleMask:backing:defer:]): Deleted.
        (-[WebVideoFullscreenWindow dealloc]): Deleted.
        (-[WebVideoFullscreenWindow resignFirstResponder]): Deleted.
        (-[WebVideoFullscreenWindow canBecomeKeyWindow]): Deleted.
        (-[WebVideoFullscreenWindow mouseDown:]): Deleted.
        (-[WebVideoFullscreenWindow cancelOperation:]): Deleted.
        (-[WebVideoFullscreenWindow animatedResizeDidEnd]): Deleted.
        (-[WebVideoFullscreenWindow animateFromRect:toRect:withSubAnimation:controllerAction:]): Deleted.
        (-[WebVideoFullscreenWindow animationDidEnd:]): Deleted.
        (-[WebVideoFullscreenWindow mouseMoved:]): Deleted.
        * WebView/WebVideoFullscreenHUDWindowController.h: Removed.
        * WebView/WebVideoFullscreenHUDWindowController.mm: Removed.

2020-02-21  Wenson Hsieh  <wenson_hsieh@apple.com>

        [macOS] Large form controls are rendered at the wrong NSControlSize
        https://bugs.webkit.org/show_bug.cgi?id=208043
        <rdar://problem/59659134>

        Reviewed by Tim Horton.

        See WebCore ChangeLog for more details.

        * WebCoreSupport/PopupMenuMac.mm:
        (PopupMenuMac::show):

2020-02-21  Daniel Bates  <dabates@apple.com>

        [iOS][Legacy WebKit] Expose SPI for Page::revealCurrentSelection()
        https://bugs.webkit.org/show_bug.cgi?id=207960
        <rdar://problem/59604163>

        Reviewed by Wenson Hsieh.

        Together with <https://bugs.webkit.org/show_bug.cgi?id=207955> this allows a client to reveal
        the current selection when it's ready to do so.

        * WebView/WebView.mm:
        (-[WebView revealCurrentSelection]): Added.
        * WebView/WebViewPrivate.h:

2020-02-20  Megan Gardner  <megan_gardner@apple.com>

        Expose caret color for clients
        https://bugs.webkit.org/show_bug.cgi?id=207963
        <rdar://problem/57383170>

        Reviewed by Daniel Bates.

        Expose caret color for clients to use.

        * WebView/WebFrame.mm:
        (-[WebFrame textInsertionColor]):
        * WebView/WebFramePrivate.h:

2020-02-19  Daniel Bates  <dabates@apple.com>

        [iOS][LegacyWebKit] Override EditorClient::shouldRevealCurrentSelectionAfterInsertion()
        https://bugs.webkit.org/show_bug.cgi?id=207955
        <rdar://problem/59602916>

        Reviewed by Wenson Hsieh.

        Wire up EditorClient::shouldRevealCurrentSelectionAfterInsertion() in Legacy WebKit. This
        allows Legacy WebKit clients to toggle whether the current selection is revealed after
        an insertion, which they may want to do to achieve a desired UI effect.

        * WebCoreSupport/WebEditorClient.h:
        * WebCoreSupport/WebEditorClient.mm:
        (WebEditorClient::shouldRevealCurrentSelectionAfterInsertion const): Added. Ask the _UIKitDelegateForwarder
        if it responds to -shouldRevealCurrentSelectionAfterInsertion. If it does then return its
        response. Otherwise, return true to do what we do now: reveal the current selection after
        an insertion.

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

        Move from "layer flush" terminology to "rendering update"
        https://bugs.webkit.org/show_bug.cgi?id=207870

        Reviewed by Tim Horton.

        Rename various functions and member variables to move away from the legacy "layer flush"
        terminology and instead use "rendering update", matching Page::updateRendering(). The fact
        that we have layers is an implementation detail.
        
        Change LayerFlushThrottlingState to be an OptionSet<>.

        * WebCoreSupport/WebChromeClient.h:
        * WebCoreSupport/WebChromeClient.mm:
        (WebChromeClient::scheduleRenderingUpdate):
        (WebChromeClient::scheduleCompositingLayerFlush): Deleted.
        * WebView/WebView.mm:
        (-[WebView _scheduleUpdateRendering]):
        (-[WebView _scheduleCompositingLayerFlush]): Deleted.
        * WebView/WebViewData.h:
        * WebView/WebViewInternal.h:

2020-02-14  Jon Lee  <jonlee@apple.com>

        Mask WebGL strings
        https://bugs.webkit.org/show_bug.cgi?id=207608

        Reviewed by Dean Jackson.

        Test: platform/mac/webgl/fingerprinting-strings.html

        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        * WebView/WebPreferencesPrivate.h:
        * WebView/WebView.mm:

2020-02-13  Said Abou-Hallawa  <said@apple.com>

        Unreviewed, rolling out r255158, 255405 and r255486

        Caused test flakiness and PLT regression.

        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):
        (-[WebPreferences renderingUpdateThrottlingEnabled]): Deleted.
        (-[WebPreferences setRenderingUpdateThrottlingEnabled:]): Deleted.
        * WebView/WebPreferencesPrivate.h:
        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]):

2020-02-12  Truitt Savell  <tsavell@apple.com>

        Unreviewed, rolling out r256463.

        Caused major flakiness on Mac wk2

        Reverted changeset:

        "REGRESSION (r255158): http/tests/frame-throttling/raf-
        throttle-in-cross-origin-subframe.html is a flaky failure"
        https://bugs.webkit.org/show_bug.cgi?id=206839
        https://trac.webkit.org/changeset/256463

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

        Remove CSS_DEVICE_ADAPTATION
        https://bugs.webkit.org/show_bug.cgi?id=203479

        Reviewed by Tim Horton.

        CSS Working Group resolved to remove @viewport <https://github.com/w3c/csswg-drafts/issues/4766>,
        so remove the code.

        * Configurations/FeatureDefines.xcconfig:
        * DOM/DOMCSS.mm:
        (kitClass):

2020-02-12  Said Abou-Hallawa  <said@apple.com>

        REGRESSION (r255158): http/tests/frame-throttling/raf-throttle-in-cross-origin-subframe.html is a flaky failure
        https://bugs.webkit.org/show_bug.cgi?id=206839

        Reviewed by Simon Fraser.

        Remove the WKPreference key 'RenderingUpdateThrottlingEnabled'.

        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):
        (-[WebPreferences renderingUpdateThrottlingEnabled]): Deleted.
        (-[WebPreferences setRenderingUpdateThrottlingEnabled:]): Deleted.
        * WebView/WebPreferencesPrivate.h:
        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]):

2020-02-10  Daniel Bates  <dabates@apple.com>

        Disallow setting base URL to a data or JavaScript URL
        https://bugs.webkit.org/show_bug.cgi?id=207136

        Reviewed by Brent Fulgham.

        Apply base URL restrictions to apps linked to a future WebKit to avoid breaking existing apps.

        * Misc/WebKitVersionChecks.h:
        * WebView/WebView.mm:
        (shouldRestrictBaseURLSchemes): Added.
        (-[WebView _commonInitializationWithFrameName:groupName:]): Update settings.

2020-02-10  Truitt Savell  <tsavell@apple.com>

        Unreviewed, rolling out r256091.

        Broke internal builds

        Reverted changeset:

        "Move trivial definitions from FeatureDefines.xcconfig to
        PlatformEnableCocoa.h"
        https://bugs.webkit.org/show_bug.cgi?id=207155
        https://trac.webkit.org/changeset/256091

2020-02-10  Truitt Savell  <tsavell@apple.com>

        Unreviewed, rolling out r256103.

        This patch is blocking the rollout of r256091

        Reverted changeset:

        "Move JavaScriptCore related feature defines from
        FeatureDefines.xcconfig to PlatformEnableCocoa.h"
        https://bugs.webkit.org/show_bug.cgi?id=207436
        https://trac.webkit.org/changeset/256103

2020-02-09  Keith Rollin  <krollin@apple.com>

        Re-enable LTO for ARM builds
        https://bugs.webkit.org/show_bug.cgi?id=207402
        <rdar://problem/49190767>

        Reviewed by Sam Weinig.

        Bug 190758 re-enabled LTO for Production builds for x86-family CPUs.
        Enabling it for ARM was left out due to a compiler issue. That issue
        has been fixed, and so now we can re-enable LTO for ARM.

        * Configurations/Base.xcconfig:

2020-02-08  Sam Weinig  <weinig@apple.com>

        Move JavaScriptCore related feature defines from FeatureDefines.xcconfig to PlatformEnableCocoa.h
        https://bugs.webkit.org/show_bug.cgi?id=207436

        Reviewed by Tim Horton.

        * Configurations/FeatureDefines.xcconfig:
        Remove ENABLE_FAST_JIT_PERMISSIONS and ENABLE_FTL_JIT.

2020-02-08  Sam Weinig  <weinig@apple.com>

        Move trivial definitions from FeatureDefines.xcconfig to PlatformEnableCocoa.h
        https://bugs.webkit.org/show_bug.cgi?id=207155

        Reviewed by Tim Horton.

        Move all trivial definitions (just ENABLE_FOO = ENABLE_FOO; or ENABLE_BAR = ;)
        from the FeatureDefines.xcconfigs to PlatformEnableCocoa.h, ensuring each one
        also has a default value in PlatformEnable.h

        To support the move, DerivedSources.make has been updated to generate the list 
        of ENABLE_* features by directly from preprocessing  Platform.h, rather than 
        just getting the partial list from the xcconfig file.

        * Configurations/FeatureDefines.xcconfig:
        * MigrateHeaders.make:

2020-02-07  Jon Lee  <jonlee@apple.com>

        Web Inspector: Revert slim toolbar
        https://bugs.webkit.org/show_bug.cgi?id=207422

        Reviewed by Timothy Hatcher.

        The slim toolbar needs a little more work before landing.

        This patch reverts r255547, r255557, r255890, r255892, r255893, r255901, r255980.

        * WebCoreSupport/WebInspectorClient.h:
        * WebCoreSupport/WebInspectorClient.mm:

2020-02-07  Chris Dumez  <cdumez@apple.com>

        [Hardening] Validate Geolocation access permission on UIProcess side
        https://bugs.webkit.org/show_bug.cgi?id=207393
        <rdar://problem/56816051>

        Reviewed by Brent Fulgham.

        * WebCoreSupport/WebGeolocationClient.h:
        * WebCoreSupport/WebGeolocationClient.mm:
        (WebGeolocationClient::startUpdating):
        (WebGeolocationClient::requestPermission):
        (-[WebGeolocationPolicyListener allow]):
        (-[WebGeolocationPolicyListener deny]):

2020-02-07  Alex Christensen  <achristensen@apple.com>

        Remember if we used legacy TLS in the back/forward cache like we remember if we have only secure content
        https://bugs.webkit.org/show_bug.cgi?id=207409
        rdar://problem/59275641

        Reviewed by Chris Dumez.

        * WebCoreSupport/WebFrameLoaderClient.h:
        * WebCoreSupport/WebFrameLoaderClient.mm:
        (WebFrameLoaderClient::dispatchDidCommitLoad):

2020-02-07  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r256051.

        Broke internal builds.

        Reverted changeset:

        "Move trivial definitions from FeatureDefines.xcconfig to
        PlatformEnableCocoa.h"
        https://bugs.webkit.org/show_bug.cgi?id=207155
        https://trac.webkit.org/changeset/256051

2020-02-07  Daniel Bates  <dabates@apple.com>

        Legacy WebKit: Have linkedOnOrAfter() respect the NSDefault WebKitLinkedOnOrAfterEverything and opt DumpRenderTree in
        https://bugs.webkit.org/show_bug.cgi?id=207366

        Reviewed by Brent Fulgham.

        If the user default WebKitLinkedOnOrAfterEverything is enabled then have linkedOnOrAfter()
        always return true.

        * Misc/WebKitVersionChecks.mm:
        (linkedOnOrAfter): Read the user default WebKitLinkedOnOrAfterEverything once and cache it.
        If the default is enabled then early return true. Outside of tooling this default is unlikely
        to be set.

2020-02-07  Sam Weinig  <weinig@apple.com>

        Move trivial definitions from FeatureDefines.xcconfig to PlatformEnableCocoa.h
        https://bugs.webkit.org/show_bug.cgi?id=207155

        Reviewed by Tim Horton.

        Move all trivial definitions (just ENABLE_FOO = ENABLE_FOO; or ENABLE_BAR = ;)
        from the FeatureDefines.xcconfigs to PlatformEnableCocoa.h, ensuring each one
        also has a default value in PlatformEnable.h

        To support the move, DerivedSources.make has been updated to generate the list 
        of ENABLE_* features by directly from preprocessing  Platform.h, rather than 
        just getting the partial list from the xcconfig file.

        * Configurations/FeatureDefines.xcconfig:
        * MigrateHeaders.make:

2020-02-06  Brent Fulgham  <bfulgham@apple.com>

        Prevent navigating top level frames to Data URLs
        https://bugs.webkit.org/show_bug.cgi?id=206962
        <rdar://problem/56770676>

        Reviewed by Youenn Fablet.

        Expose a new off-by-default preference to allow top-level navigation to Data URIs.

        Tests:  fast/loader/data-url-frame-allowed.html, fast/loader/data-url-load-denied.html

        * WebCoreSupport/WebInspectorClient.mm:
        (-[WebInspectorWindowController init]):
        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):
        (-[WebPreferences allowTopNavigationToDataURLs]):
        (-[WebPreferences setAllowTopNavigationToDataURLs:]):
        * WebView/WebPreferencesPrivate.h:
        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]):

2020-02-01  Devin Rousso  <drousso@apple.com>

        Web Inspector: move the items in the toolbar into the tab bar to save vertical space
        https://bugs.webkit.org/show_bug.cgi?id=204627

        Reviewed by Timothy Hatcher.

        Now that there is no toolbar area, there is nothing obstructing the ability for the window
        to be moved around when dragging via the title bar area. As such, we can remove the unused
        `InspectorFrontendHost` APIs.

        * WebCoreSupport/WebInspectorClient.h:
        * WebCoreSupport/WebInspectorClient.mm:
        (WebInspectorFrontendClient::startWindowDrag): Deleted.

2020-01-31  Wenson Hsieh  <wenson_hsieh@apple.com>

        Add support for specifying background colors when setting marked text
        https://bugs.webkit.org/show_bug.cgi?id=207065
        <rdar://problem/57876140>

        Reviewed by Tim Horton.

        Adjust some call sites of Editor::setComposition().

        * WebView/WebFrame.mm:
        (-[WebFrame setMarkedText:selectedRange:]):
        (-[WebFrame setMarkedText:forCandidates:]):
        * WebView/WebHTMLView.mm:
        (-[WebHTMLView setMarkedText:selectedRange:]):

2020-01-31  Antoine Quint  <graouts@apple.com>

        [WK1] hiddenPageCSSAnimationSuspensionEnabled should be enabled by default for Cocoa platforms
        https://bugs.webkit.org/show_bug.cgi?id=207042
        <rdar://problem/58934778>

        Reviewed by Zalan Bujtas.

        While HiddenPageCSSAnimationSuspensionEnabled is specified in WebPreferences.yaml to default to DEFAULT_HIDDEN_PAGE_CSS_ANIMATION_SUSPENSION_ENABLED,
        which is defined to be true on Cocoa platforms in WebPreferencesDefaultValues.h, it is hard-coded to @NO in WK1 although clearly the intent is for
        this preference to be enabled. So we switch that default value in WK1 as well.

        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):

2020-01-30  Alex Christensen  <achristensen@webkit.org>

        Add WKNavigationDelegate SPI to disable TLS 1.0 and 1.1
        https://bugs.webkit.org/show_bug.cgi?id=206979

        Reviewed by Brady Eidson.

        * WebView/WebView.mm:
        (-[WebView _commonInitializationWithFrameName:groupName:]):

2020-01-29  Tim Horton  <timothy_horton@apple.com>

        Null deref under -[WebFrame isTelephoneNumberParsingAllowed]
        https://bugs.webkit.org/show_bug.cgi?id=206921

        Reviewed by Anders Carlsson.

        * WebView/WebFrame.mm:
        (-[WebFrame isTelephoneNumberParsingAllowed]):
        (-[WebFrame isTelephoneNumberParsingEnabled]):
        DataDetectors can hold on to a WebFrame on an operation queue before
        calling into these methods. In the meantime, it is possible for the
        WebView to be closed, resulting in a null core Frame.
        This is not reproducible in a test app, but a speculative fix seems fine.

2020-01-27  Antoine Quint  <graouts@apple.com>

        [Web Animations] Make Animation.timeline read-write only if a runtime flag is enabled
        https://bugs.webkit.org/show_bug.cgi?id=206173
        <rdar://problem/58527432>

        Reviewed by Dean Jackson.

        Add a new WebAnimationsMutableTimelines runtime flag.

        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (-[WebPreferences webAnimationsMutableTimelinesEnabled]):
        (-[WebPreferences setWebAnimationsMutableTimelinesEnabled:]):
        * WebView/WebPreferencesPrivate.h:
        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]):

2020-01-27  Simon Fraser  <simon.fraser@apple.com>

        REGRESSION (r253634): cricbuzz.com media controls vanish depending on page scale
        https://bugs.webkit.org/show_bug.cgi?id=206788
        rdar://problem/58780584

        Reviewed by Tim Horton.

        r253634 changed "delegatesPageScaling"'" to a flag on ScrollView. However, this changed behavior
        for subframes; Settings are propagated down, but only the main ScrollView had delegatesPageScaling
        set on it.
        
        "delegatesPageScaling" is a page-level thing (subframes don't independently zoom), so it
        should live on Page. Move it there.
        
        The bug was triggered by incorrectly taking page scale into account for rects in the compositing
        overlap map (see RenderLayerCompositor::addToOverlapMap()) in subframes, and those rects
        changing on zoom.

        * WebCoreSupport/WebFrameLoaderClient.mm:
        (WebFrameLoaderClient::transitionToCommittedForNewPage):

2020-01-27  Devin Rousso  <drousso@apple.com>

        Web Inspector: unable to evaluate in the isolated world of content scripts injected by safari app extensions
        https://bugs.webkit.org/show_bug.cgi?id=206110
        <rdar://problem/16945643>

        Reviewed by Timothy Hatcher, Joseph Pecoraro, and Brian Burg.

        In addition to evaluating in subframe execution contexts, add the ability for Web Inspector
        to evaluate in non-normal isolated worlds.

        * WebView/WebScriptWorld.mm:
        (-[WebScriptWorld init]):
        Treat isolated worlds created by API calls as `User` worlds.

2020-01-27  Said Abou-Hallawa  <sabouhallawa@apple.com>

        Throttling requestAnimationFrame should be controlled by RenderingUpdateScheduler
        https://bugs.webkit.org/show_bug.cgi?id=204713

        Reviewed by Simon Fraser.

        Add a WKPreference key for RenderingUpdateThrottling.

        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):
        (-[WebPreferences renderingUpdateThrottlingEnabled]):
        (-[WebPreferences setRenderingUpdateThrottlingEnabled:]):
        * WebView/WebPreferencesPrivate.h:
        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]):

2020-01-27  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r255131.

        Caused assertion failures on iOS debug bots.

        Reverted changeset:

        "Throttling requestAnimationFrame should be controlled by
        RenderingUpdateScheduler"
        https://bugs.webkit.org/show_bug.cgi?id=204713
        https://trac.webkit.org/changeset/255131

2020-01-27  Cathie Chen  <cathiechen@igalia.com>

        The value of AspectRatioOfImgFromWidthAndHeight for legacy mac isn't correct
        https://bugs.webkit.org/show_bug.cgi?id=206822

        Reviewed by Frédéric Wang.

        The value should be WebKitAspectRatioOfImgFromWidthAndHeightEnabled

        * WebView/WebPreferenceKeysPrivate.h:

2020-01-26  Said Abou-Hallawa  <said@apple.com>

        Throttling requestAnimationFrame should be controlled by RenderingUpdateScheduler
        https://bugs.webkit.org/show_bug.cgi?id=204713

        Reviewed by Simon Fraser.

        Add a WKPreference key for RenderingUpdateThrottling.

        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):
        (-[WebPreferences renderingUpdateThrottlingEnabled]):
        (-[WebPreferences setRenderingUpdateThrottlingEnabled:]):
        * WebView/WebPreferencesPrivate.h:
        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]):

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

        [LFC][Integration] Re-enable line layout integration
        https://bugs.webkit.org/show_bug.cgi?id=206795
        <rdar://problem/58853907>

        Reviewed by Zalan Bujtas.

        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):

2020-01-22  Daniel Bates  <dabates@apple.com>

        Legacy WebKit: Add SPI variant of -setSelectedDOMRange that can perform the selection as if triggered by the user
        https://bugs.webkit.org/show_bug.cgi?id=206622

        Reviewed by Wenson Hsieh.

        Add a new -setSelectedDOMRange SPI variant that takes a boolean to indicate whether the selection
        was triggered by the user.

        While I am here, I simplified and modernized the code. This includes moving the null check of
        Frame::page() to the top of the function. This let me eliminate the null check for Frame::view()
        because every frame that has a page must have a non-null view. I imported WebEditorClient.h
        to get WebKit::core(NSSelectionAffinity) and remove a C-style cast to WebCore::EAffinity.
        I also used more "auto".

        * WebView/WebFrame.mm:
        (-[WebFrame setSelectedDOMRange:affinity:closeTyping:]): Modified to call the newly added variant,
        passing "userTriggered:NO" to keep the current behavior.
        (-[WebFrame setSelectedDOMRange:affinity:closeTyping:userTriggered:]): Added.
        * WebView/WebFramePrivate.h:

2020-01-22  Zalan Bujtas  <zalan@apple.com>

        REGRESSION (r254923): [mac-wk1] http/tests/inspector/network/har/har-page.html crashing in WebCore::Display::Box::contentBox()
        https://bugs.webkit.org/show_bug.cgi?id=206600

        Unreviewed.

        r254923 missed this one place to turn off LFC integration.

        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):

2020-01-21  Said Abou-Hallawa  <sabouhallawa@apple.com>

        Make RenderingMode and AlphaPremultiplication enum classes and move them to separate headers
        https://bugs.webkit.org/show_bug.cgi?id=206516

        Reviewed by Tim Horton.

        * WebCoreSupport/WebContextMenuClient.mm:
        (WebContextMenuClient::imageForCurrentSharingServicePickerItem):

2020-01-21  Daniel Bates  <dabates@apple.com>

        Add Legacy WebKit SPI and WebKit IPI to show and hide placeholder
        https://bugs.webkit.org/show_bug.cgi?id=206459
        <rdar://problem/58700534>

        Reviewed by Wenson Hsieh.

        Add Legacy WebKit SPI to allow a client to control whether the placeholder can be shown or
        not when a form control is empty. This is for aesthetics.

        * DOM/DOMHTMLInputElement.mm:
        (-[DOMHTMLInputElement canShowPlaceholder]): Added.
        (-[DOMHTMLInputElement setCanShowPlaceholder:]): Added.
        * DOM/DOMHTMLInputElementPrivate.h:
        * DOM/DOMHTMLTextAreaElement.mm:
        (-[DOMHTMLTextAreaElement canShowPlaceholder]): Added.
        (-[DOMHTMLTextAreaElement setCanShowPlaceholder:]): Added.
        * DOM/DOMHTMLTextAreaElementPrivate.h:

2020-01-21  Rob Buis  <rbuis@igalia.com>

        Add build flag for stale-while-revalidate
        https://bugs.webkit.org/show_bug.cgi?id=204169

        Reviewed by Youenn Fablet.

        * Configurations/FeatureDefines.xcconfig:

2020-01-21  Sihui Liu  <sihui_liu@apple.com>

        Disable WebSQL everywhere by default except in tests
        https://bugs.webkit.org/show_bug.cgi?id=204907

        Reviewed by Ryosuke Niwa.

        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):
        (-[WebPreferences webSQLEnabled]):
        (-[WebPreferences setWebSQLEnabled:]):
        * WebView/WebPreferencesPrivate.h:
        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]):

2020-01-20  David Kilzer  <ddkilzer@apple.com>

        Fix missing header guards and clean up empty files in WebCore, WebKitLegacy, WebKit, Tools
        <https://webkit.org/b/206505>

        Reviewed by Eric Carlson.

        * Misc/WebKitStatisticsPrivate.h:
        * Misc/WebLocalizableStrings.h: Modernize __OBJC__ and
         __cplusplus checks.
        * Misc/WebTypesInternal.h:
        * WebView/WebMediaPlaybackTargetPicker.h:
        - Add #pragma once statement.

2020-01-17  Cathie Chen  <cathiechen@igalia.com>

        Add support for scroll behavior parsing
        https://bugs.webkit.org/show_bug.cgi?id=205009

        Reviewed by Frédéric Wang.

        Based on the patch by Frédéric Wang.

        Add run time flag for CSSOMViewSmoothScrolling.

        * WebView/WebPreferenceKeysPrivate.h: Handle CSSOMViewSmoothScrolling by.
        * WebView/WebPreferences.mm:
        ([WebPreferences initialize]): Disable CSSOMViewSmoothScrolling by default.
        (-[WebPreferences CSSOMViewSmoothScrollingEnabled]): Getter.
        (-[WebPreferences setCSSOMViewSmoothScrollingEnabled:]): Setter.
        * WebView/WebPreferencesPrivate.h:
        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]):

2020-01-16  David Kilzer  <ddkilzer@apple.com>

        Enable -Wconditional-uninitialized in WebInspectorUI, WebKitLegacy, WebKit projects
        <https://webkit.org/b/206270>
        <rdar://problem/58589767>

        Reviewed by Tim Horton.

        * Configurations/Base.xcconfig:
        (WARNING_CFLAGS): Add -Wconditional-uninitialized switch.
        * Plugins/WebNetscapePluginView.mm:
        (-[WebNetscapePluginView scheduleTimerWithInterval:repeat:timerFunc:]):
        Initialize `slot` stack variable.
        * WebView/WebPDFDocumentExtras.mm:
        (allScriptsInPDFDocument): Initialize `length` stack variable.
        Also add check that `length` is non-zero.

2020-01-16  Cathie Chen  <cathiechen@igalia.com>

        Mapping HTML attributes width/height to the default aspect ratio of <img>
        https://bugs.webkit.org/show_bug.cgi?id=201641

        Reviewed by Frédéric Wang

        Add experimental flag: AspectRatioOfImgFromWidthAndHeightEnabled.

        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        ([WebPreferences initialize]):
        (-[WebPreferences aspectRatioOfImgFromWidthAndHeightEnabled]):
        (-[WebPreferences setAspectRatioOfImgFromWidthAndHeightEnabled:]):
        * WebView/WebPreferencesPrivate.h:
        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]):

2020-01-14  Antti Koivisto  <antti@apple.com>

        [LFC][Integration] Support the feature flag in DumpRenderTree
        https://bugs.webkit.org/show_bug.cgi?id=206218

        Reviewed by Zalan Bujtas.

        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):
        (-[WebPreferences layoutFormattingContextIntegrationEnabled]):
        (-[WebPreferences setLayoutFormattingContextIntegrationEnabled:]):
        * WebView/WebPreferencesPrivate.h:
        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]):

2020-01-09  Tim Horton  <timothy_horton@apple.com>

        Adopt TARGET_OS_MACCATALYST in more places
        https://bugs.webkit.org/show_bug.cgi?id=206040
        <rdar://problem/57127108>

        Reviewed by Simon Fraser.

        * Misc/WebDownload.h:

2020-01-08  Yusuke Suzuki  <ysuzuki@apple.com>

        Reduce binary size by purging C++ type information in Objective-C fields and parameters
        https://bugs.webkit.org/show_bug.cgi?id=205905

        Reviewed by Saam Barati.

        * Plugins/WebBaseNetscapePluginView.h:
        * Plugins/WebBaseNetscapePluginView.mm:
        (-[WebBaseNetscapePluginView element]):
        * WebCoreSupport/WebEditorClient.mm:
        (_WebCreateFragment):
        * WebCoreSupport/WebFrameLoaderClient.mm:
        (WebFrameLoaderClient::transitionToCommittedForNewPage):
        (-[WebFramePolicyListener initWithFrame:identifier:policyFunction:defaultPolicy:]):
        (-[WebFramePolicyListener initWithFrame:identifier:policyFunction:defaultPolicy:appLinkURL:]):
        * WebCoreSupport/WebGeolocationClient.mm:
        (-[WebGeolocationPolicyListener initWithGeolocation:]):
        (-[WebGeolocationPolicyListener initWithGeolocation:forWebView:]):
        (-[WebGeolocationProviderInitializationListener initWithGeolocation:]):
        * WebCoreSupport/WebInspectorClient.mm:
        (WebInspectorFrontendClient::resetState):
        (-[WebInspectorWindowController setFrontendClient:]):
        (-[WebInspectorWindowController setInspectorClient:]):
        (-[WebInspectorWindowController inspectorClient]):
        * WebInspector/WebInspectorFrontend.h:
        * WebInspector/WebInspectorFrontend.mm:
        * WebInspector/WebNodeHighlight.h:
        * WebInspector/WebNodeHighlight.mm:
        (-[WebNodeHighlight initWithTargetView:inspectorController:]):
        * WebView/WebArchive.mm:
        (-[WebArchive initWithMainResource:subresources:subframeArchives:]):
        * WebView/WebDataSource.mm:
        (-[WebDataSource _documentLoader]):
        (-[WebDataSource addSubresource:]):
        * WebView/WebDataSourceInternal.h:
        * WebView/WebFrame.mm:
        (getWebView):
        (-[WebFrame _updateBackgroundAndUpdatesWhileOffscreen]):
        (-[WebFrame _unmarkAllBadGrammar]):
        (-[WebFrame _unmarkAllMisspellings]):
        (-[WebFrame _hasSelection]):
        (-[WebFrame _atMostOneFrameHasSelection]):
        (-[WebFrame _findFrameWithSelection]):
        (-[WebFrame _scrollDOMRangeToVisible:withInset:]):
        (-[WebFrame _documentFragmentWithMarkupString:baseURLString:]):
        (-[WebFrame _documentFragmentWithNodesAsParagraphs:]):
        (-[WebFrame _canProvideDocumentSource]):
        (-[WebFrame _isDescendantOfFrame:]):
        (-[WebFrame _recursive_resumeNullEventsForAllNetscapePlugins]):
        (-[WebFrame _recursive_pauseNullEventsForAllNetscapePlugins]):
        (-[WebFrame setTimeoutsPaused:]):
        (-[WebFrame prepareForPause]):
        (-[WebFrame resumeFromPause]):
        (-[WebFrame resetTextAutosizingBeforeLayout]):
        (-[WebFrame _globalContextForScriptWorld:]):
        (-[WebFrame _layerTreeAsText]):
        (-[WebFrame _clearOpener]):
        (-[WebFrame focusedNodeHasContent]):
        (-[WebFrame _dispatchDidReceiveTitle:]):
        (-[WebFrame jsWrapperForNode:inScriptWorld:]):
        (-[WebFrame elementAtPoint:]):
        (-[WebFrame name]):
        (-[WebFrame DOMDocument]):
        (-[WebFrame frameElement]):
        (-[WebFrame provisionalDataSource]):
        (-[WebFrame dataSource]):
        (-[WebFrame loadRequest:]):
        (-[WebFrame findFrameNamed:]):
        (-[WebFrame parentFrame]):
        (-[WebFrame childFrames]):
        (-[WebFrame windowObject]):
        (-[WebFrame globalContext]):
        (-[WebFrame javaScriptContext]):
        * WebView/WebFrameInternal.h:
        * WebView/WebFrameView.mm:
        (-[WebFrameView _web_frame]):
        (-[WebFrameView _frameSizeChanged]):
        (-[WebFrameView _isVerticalDocument]):
        (-[WebFrameView _isFlippedDocument]):
        (-[WebFrameView keyDown:keyDown:]):
        * WebView/WebFullScreenController.mm:
        (-[WebFullScreenController _document]):
        * WebView/WebHTMLView.mm:
        (-[WebMenuTarget menuController]):
        (-[WebMenuTarget setMenuController:]):
        (-[WebHTMLView namesOfPromisedFilesDroppedAtDestination:]):
        (-[WebHTMLView _interpretKeyEvent:savingCommands:]):
        (-[WebHTMLView setPromisedDragTIFFDataSource:]):
        * WebView/WebHTMLViewInternal.h:
        * WebView/WebNotification.mm:
        (-[WebNotification initWithCoreNotification:notificationID:]):
        * WebView/WebNotificationInternal.h:
        * WebView/WebResource.mm:
        (-[WebResource _coreResource]):
        * WebView/WebResourceInternal.h:
        * WebView/WebVideoFullscreenController.h:
        * WebView/WebVideoFullscreenController.mm:
        (-[WebVideoFullscreenController videoElement]):
        (-[WebVideoFullscreenController setVideoElement:]):
        * WebView/WebVideoFullscreenHUDWindowController.h:
        * WebView/WebView.mm:
        (-[WebView page]):
        (-[WebView _enterVideoFullscreenForVideoElement:mode:]):
        (-[WebView _setUpPlaybackControlsManagerForMediaElement:]):
        (-[WebView _supportsFullScreenForElement:withKeyboard:]):
        (-[WebView _enterFullScreenForElement:]):
        (-[WebView _exitFullScreenForElement:]):
        * WebView/WebViewInternal.h:

2020-01-08  youenn fablet  <youenn@apple.com>

        Implement MediaRecorder backend in GPUProcess
        https://bugs.webkit.org/show_bug.cgi?id=205802

        Reviewed by Eric Carlson.

        * WebView/WebView.mm:
        (-[WebView _commonInitializationWithFrameName:groupName:]):
        (-[WebView initSimpleHTMLDocumentWithStyle:frame:preferences:groupName:]):

2020-01-07  Said Abou-Hallawa  <sabouhallawa@apple.com>

        Implement css3-images image-orientation
        https://bugs.webkit.org/show_bug.cgi?id=89052

        Reviewed by Simon Fraser.

        Remove the ENABLE_CSS_IMAGE_ORIENTATION feature flag.

        * Configurations/FeatureDefines.xcconfig:

2020-01-07  Chris Dumez  <cdumez@apple.com>

        Remove document.origin
        https://bugs.webkit.org/show_bug.cgi?id=205681

        Reviewed by Geoffrey Garen.

        * DOM/DOMDocument.mm:
        (-[DOMDocument origin]):

2020-01-07  Commit Queue  <commit-queue@webkit.org>

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

        It is breaking WinCairo build and internal builds. (Requested
        by youenn on #webkit).

        Reverted changeset:

        "Implement MediaRecorder backend in GPUProcess"
        https://bugs.webkit.org/show_bug.cgi?id=205802
        https://trac.webkit.org/changeset/254132

2020-01-07  youenn fablet  <youenn@apple.com>

        Implement MediaRecorder backend in GPUProcess
        https://bugs.webkit.org/show_bug.cgi?id=205802

        Reviewed by Eric Carlson.

        * WebView/WebView.mm:
        (-[WebView _commonInitializationWithFrameName:groupName:]):
        (-[WebView initSimpleHTMLDocumentWithStyle:frame:preferences:groupName:]):

2020-01-07  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK][WPE] Add API to set purpose and hints of active editable element to input methods
        https://bugs.webkit.org/show_bug.cgi?id=205605

        Reviewed by Žan Doberšek.

        * DOM/DOMHTMLElement.mm: Use ENABLE(AUTOCORRECT) and ENABLE(AUTOCAPITALIZE).
        * WebCoreSupport/WebEditorClient.h: Update tom the new API to WebEditorClient::setInputMethodState.
        * WebCoreSupport/WebEditorClient.mm:
        (WebEditorClient::setInputMethodState): Ditto.

2020-01-07  Chris Fleizach  <cfleizach@apple.com>

        AX: Enable ACCESSIBILITY_ISOLATED_TREE
        https://bugs.webkit.org/show_bug.cgi?id=205535
        <rdar://problem/58131075>

        Reviewed by Zalan Bujtas.

        * Configurations/FeatureDefines.xcconfig:

2020-01-06  Mark Lam  <mark.lam@apple.com>

        Convert ASSERT_DISABLED to ASSERT_ENABLED, and fix some tests of NDEBUG that should actually test for ASSERT_ENABLED.
        https://bugs.webkit.org/show_bug.cgi?id=205776

        Reviewed by Saam Barati.

        * History/WebHistory.mm:
        (-[WebHistoryPrivate removeItemForURLString:]):
        * WebView/WebFrame.mm:

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

        [Web Animations] Enable CSS Animations via Web Animations for WebKitLegacy
        https://bugs.webkit.org/show_bug.cgi?id=205791

        Reviewed by Dean Jackson.

        It was an oversight that it had not been done along with the WebKit change.

        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):

2020-01-05  Simon Fraser  <simon.fraser@apple.com>

        Fix a souce of WebKit1 test flakiness
        https://bugs.webkit.org/show_bug.cgi?id=205761

        Reviewed by Darin Adler.

        Some animation tests (and possibly many others) are flakey or broken in WK1 because
        there was no code to guarantee that Page::updateRendering() was called at notifyDone()
        time.
        
        WK2 calls DrawingArea::forceRepaint(), which does updateRendering(), flushes layers,
        and flushes a CATransaction.

        In WK1, we historically relied in AppKit to call -viewWillDraw on WebView and/or WebHTMLView,
        and just called [webView display] to make this happen. However, with layer backing, AppKit behavior
        changes, and WebCore changes that make more things happen with HTML event loop timing, this
        approach no longer works. The fix is to add WebView SPI, _forceRepaintForTesting, which emulates what
        WK2 is doing.

        * WebView/WebView.mm:
        (-[WebView _forceRepaintForTesting]):
        * WebView/WebViewPrivate.h:

2020-01-03  Chris Dumez  <cdumez@apple.com>

        Add support for DragEvent
        https://bugs.webkit.org/show_bug.cgi?id=205758

        Reviewed by Darin Adler.

        * WebView/WebPDFView.mm:
        (-[WebPDFView PDFViewWillClickOnLink:withURL:]):

2020-01-03  Yusuke Suzuki  <ysuzuki@apple.com>

        Put more WebCore/WebKit JS objects into IsoSubspace
        https://bugs.webkit.org/show_bug.cgi?id=205711

        Reviewed by Keith Miller.

        * Plugins/Hosted/ProxyInstance.mm:
        (WebKit::ProxyInstance::getMethod):
        (WebKit::ProxyRuntimeMethod::create): Deleted.
        (WebKit::ProxyRuntimeMethod::createStructure): Deleted.
        (WebKit::ProxyRuntimeMethod::ProxyRuntimeMethod): Deleted.
        (WebKit::ProxyRuntimeMethod::finishCreation): Deleted.
        * Plugins/Hosted/ProxyRuntimeObject.h:
        (WebKit::ProxyRuntimeObject::create): Deleted.
        (WebKit::ProxyRuntimeObject::createStructure): Deleted.

2020-01-03  Chris Dumez  <cdumez@apple.com>

        Align XPathEvaluator.createNSResolver() / XPathResult.snapshotItem() with the specification
        https://bugs.webkit.org/show_bug.cgi?id=205699

        Reviewed by Alex Christensen.

        * DOM/DOMDocument.mm:
        (-[DOMDocument createNSResolver:]):

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

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

        Reviewed by Darin Adler.

        * Info.plist:

2019-12-20  Brian Burg  <bburg@apple.com>

        Web Inspector: convert some InspectorFrontendHost methods to getters
        https://bugs.webkit.org/show_bug.cgi?id=205475

        Reviewed by Devin Rousso.

        * WebCoreSupport/WebInspectorClient.h:
        * WebCoreSupport/WebInspectorClient.mm:
        (WebInspectorFrontendClient::localizedStringsURL const):
        (WebInspectorFrontendClient::localizedStringsURL): Deleted.

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

        Allow a managed configuration to re-enable TLS 1.0 and 1.1
        https://bugs.webkit.org/show_bug.cgi?id=205479
        <rdar://problem/54493516>

        Reviewed by Geoffrey Garen.

        * WebView/WebView.mm:
        (-[WebView _commonInitializationWithFrameName:groupName:]):

2019-12-17  Kate Cheney  <katherine_cheney@apple.com>

        Add run-time flag for in-app browser privacy
        https://bugs.webkit.org/show_bug.cgi?id=205288
        <rdar://problem/57569206>

        Reviewed by John Wilander.

        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):
        (-[WebPreferences isInAppBrowserPrivacyEnabled]):
        (-[WebPreferences setInAppBrowserPrivacyEnabled:]):
        * WebView/WebPreferencesPrivate.h:
        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]):

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

        Change 'delegatesPageScaling' from a Setting to a flag on ScrollView
        https://bugs.webkit.org/show_bug.cgi?id=205319

        Reviewed by Tim Horton.

        delegatesPageScaling() is never toggled at runtime (even by tests), and it should
        be a flag on FrameView just like delegatesScrolling (maybe in future the flags can merge).

        So remove the Setting, and have DrawingArea control whether page scaling is delegated.
        
        In WebKit1, WebFrameLoaderClient::transitionToCommittedForNewPage() turns on delegated
        page scaling for iOS.

        * WebCoreSupport/WebFrameLoaderClient.mm:
        (WebFrameLoaderClient::transitionToCommittedForNewPage):
        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]):

2019-12-16  Antti Koivisto  <antti@apple.com>

        Remove display:contents feature flag
        https://bugs.webkit.org/show_bug.cgi?id=205276

        Reviewed by Ryosuke Niwa.

        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):
        (-[WebPreferences displayContentsEnabled]): Deleted.
        (-[WebPreferences setDisplayContentsEnabled:]): Deleted.
        * WebView/WebPreferencesPrivate.h:
        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]):

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

        Add release assert for selectedIndex in WebKit::WebPopupMenu::show()
        <https://webkit.org/b/205223>
        <rdar://problem/57929078>

        Reviewed by Wenson Hsieh.

        * WebCoreSupport/PopupMenuMac.h:
        (PopupMenuMac::show):
        - Rename `index` parameter to `selectedIndex`.
        * WebCoreSupport/PopupMenuMac.mm:
        (PopupMenuMac::show):
        - Rename `index` parameter to `selectedIndex`.

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

        Refactor ScriptController's proliferation of ExceptionDetails*.
        https://bugs.webkit.org/show_bug.cgi?id=205151

        Reviewed by Alex Christensen.

        * WebCoreSupport/WebInspectorClient.mm:
        (WebInspectorFrontendClient::save):
        (WebInspectorFrontendClient::append):
        
        * WebView/WebFrame.mm:
        (-[WebFrame _stringByEvaluatingJavaScriptFromString:forceUserGesture:]):
        (-[WebFrame _stringByEvaluatingJavaScriptFromString:withGlobalObject:inScriptWorld:]):

        * WebView/WebView.mm:
        (-[WebView aeDescByEvaluatingJavaScriptFromString:]):

2019-12-12  David Kilzer  <ddkilzer@apple.com>

        REGRESSION (r229930, r231063): WebKitLegacy.xcconfig overwrites OTHER_CFLAGS, OTHER_CPLUSPLUSFLAGS and OTHER_LDFLAGS from Base.xcconfig
        <https://webkit.org/b/205144>

        Reviewed by Alexey Proskuryakov.

        * Configurations/WebKitLegacy.xcconfig:
        (OTHER_CFLAGS): Add back $(inherited) to fix the bug.
        (OTHER_CFLAGS_COCOA_TOUCH): Add variable to hold value.
        (OTHER_CFLAGS_COCOA_TOUCH_YES): Remove unused $(inherited).
        (OTHER_CFLAGS_COCOA_TOUCH_NO): Ditto.
        (OTHER_CPLUSPLUSFLAGS): Add back $(inherited) to fix the
        bug, and don't assume $(OTHER_CFLAGS) is identical to this.
        (OTHER_LDFLAGS): Add back $(inherited) to fix the bug.

2019-12-09  Eric Carlson  <eric.carlson@apple.com>

        Rename media in the GPU process preference
        https://bugs.webkit.org/show_bug.cgi?id=205013
        <rdar://problem/57755319>

        Reviewed by Tim Horton.

        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):
        (-[WebPreferences useGPUProcessForMedia]):
        (-[WebPreferences setUseGPUProcessForMedia:]):
        (-[WebPreferences outOfProcessMediaEnabled]): Deleted.
        (-[WebPreferences setOutOfProcessMediaEnabled:]): Deleted.
        * WebView/WebPreferencesPrivate.h:
        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]):

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

        Re-disable TLS1.0 and TLS1.1 by default
        https://bugs.webkit.org/show_bug.cgi?id=204922
        <rdar://problem/57677752>

        Reviewed by Youenn Fablet.

        * WebView/WebView.mm:
        (-[WebView _commonInitializationWithFrameName:groupName:]):

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

        Implement encoding for DrawImage and DrawRoundedRect display list items
        https://bugs.webkit.org/show_bug.cgi?id=204881

        Reviewed by Simon Fraser.

        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):

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

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

        Broke the build (Requested by ap on #webkit).

        Reverted changeset:

        "Remove various .order files."
        https://bugs.webkit.org/show_bug.cgi?id=204959
        https://trac.webkit.org/changeset/253218

2019-12-06  Keith Miller  <keith_miller@apple.com>

        Remove various .order files.
        https://bugs.webkit.org/show_bug.cgi?id=204959

        Reviewed by Yusuke Suzuki.

        These files are all super out of date and likely don't do anything anymore.
        The signatures of the functions have changed thus the mangled name has changed.

        * WebKit.order: Removed.

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

        PageConfiguration::dragClient should use a smart pointer
        https://bugs.webkit.org/show_bug.cgi?id=204816

        Reviewed by Alex Christensen.

        * WebView/WebView.mm:
        (-[WebView _commonInitializationWithFrameName:groupName:]):
        (-[WebView initSimpleHTMLDocumentWithStyle:frame:preferences:groupName:]):

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

        PageConfiguration::progressTrackerClient should use a smart pointer
        https://bugs.webkit.org/show_bug.cgi?id=204854

        Reviewed by Alex Christensen.

        * WebCoreSupport/WebProgressTrackerClient.h:
        * WebCoreSupport/WebProgressTrackerClient.mm:
        (WebProgressTrackerClient::progressTrackerDestroyed): Deleted.
        * WebView/WebView.mm:
        (-[WebView _commonInitializationWithFrameName:groupName:]):
        (-[WebView initSimpleHTMLDocumentWithStyle:frame:preferences:groupName:]):

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

        Introduce a GPU process
        https://bugs.webkit.org/show_bug.cgi?id=204343

        Reviewed by Simon Fraser.

        * Configurations/FeatureDefines.xcconfig:

2019-12-03  Megan Gardner  <megan_gardner@apple.com>

        Add disabled highlight API skeleton
        https://bugs.webkit.org/show_bug.cgi?id=204809

        Reviewed by Ryosuke Niwa.

        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):
        (-[WebPreferences highlightAPIEnabled]):
        (-[WebPreferences setHighlightAPIEnabled:]):
        * WebView/WebPreferencesPrivate.h:
        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]):

2019-12-03  Eric Carlson  <eric.carlson@apple.com>

        Add a runtime setting for media in the GPU process
        https://bugs.webkit.org/show_bug.cgi?id=204801
        <rdar://problem/57596199>

        Reviewed by Jer Noble.

        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):
        (-[WebPreferences outOfProcessMediaEnabled]):
        (-[WebPreferences setOutOfProcessMediaEnabled:]):
        * WebView/WebPreferencesPrivate.h:
        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]):

2019-12-03  Antoine Quint  <graouts@apple.com>

        [Web Animations] Add a runtime flag for Web Animations composite operations
        https://bugs.webkit.org/show_bug.cgi?id=204718

        Reviewed by Dean Jackson.

        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (-[WebPreferences webAnimationsCompositeOperationsEnabled]):
        (-[WebPreferences setWebAnimationsCompositeOperationsEnabled:]):
        * WebView/WebPreferencesPrivate.h:
        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]):

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

        PageConfiguration::alternativeTextClient should use a smart pointer
        https://bugs.webkit.org/show_bug.cgi?id=204777

        Reviewed by Anders Carlsson.

        * WebCoreSupport/WebAlternativeTextClient.h:
        * WebCoreSupport/WebAlternativeTextClient.mm:
        (WebAlternativeTextClient::pageDestroyed): Deleted.
        * WebView/WebView.mm:
        (-[WebView _commonInitializationWithFrameName:groupName:]):

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

        [PSON] Tooltips from previous page shown on new page
        https://bugs.webkit.org/show_bug.cgi?id=204735

        Reviewed by Chris Dumez.

        Update to the new ChromeClient API.

        * WebCoreSupport/WebChromeClient.h:
        * WebCoreSupport/WebChromeClient.mm:
        (WebChromeClient::mouseDidMoveOverElement):
        (WebChromeClient::setToolTip):

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

        Remove ENABLE_KEYBOARD_CODE_ATTRIBUTE and ENABLE_KEYBOARD_KEY_ATTRIBUTE macros
        https://bugs.webkit.org/show_bug.cgi?id=204666

        Reviewed by Ross Kirsling and Don Olmstead.

        * Configurations/FeatureDefines.xcconfig:

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

        Drop ActiveDOMObject::shouldPreventEnteringBackForwardCache_DEPRECATED()
        https://bugs.webkit.org/show_bug.cgi?id=204626

        Reviewed by Ryosuke Niwa.

        * WebView/WebFrame.mm:
        (-[WebFrame _cacheabilityDictionary]):

2019-11-21  Daniel Bates  <dabates@apple.com>

        Remove unneeded code that annotated DOMHTMLElement as conforming to UITextInputTraits protocol
        https://bugs.webkit.org/show_bug.cgi?id=204464

        Reviewed by Wenson Hsieh.

        DOMHTMLElement never really conformed to the UITextInputTraits protocol. It was annotated as doing so
        in order to register with the runtime as part of advertising that it implemented two UITextInputTraits_Private
        messages in r222487: -acceptsAutofilledLoginCredentials and -representingPageURL. These messages were
        subsequently removed in r222991 (over years ago). So, we do not need to continue advertising UITextInputTraits
        conformance.

        * DOM/DOMHTMLInputElement.h:

2019-11-15  Eric Carlson  <eric.carlson@apple.com>

        Don't use AVCapture on watchOS and tvOS
        https://bugs.webkit.org/show_bug.cgi?id=204254
        <rdar://problem/45508044>

        Reviewed by Youenn Fablet.

        * Configurations/FeatureDefines.xcconfig:

2019-11-15  Myles C. Maxfield  <mmaxfield@apple.com>

        [Apple] Enable variation fonts on all Apple platforms
        https://bugs.webkit.org/show_bug.cgi?id=198100

        Reviewed by Simon Fraser.

        * Configurations/FeatureDefines.xcconfig:

2019-11-13  Myles C. Maxfield  <mmaxfield@apple.com>

        [Mac] Fix build
        https://bugs.webkit.org/show_bug.cgi?id=204136

        Reviewed by Alex Christensen.

        Remove deprecation warnings.

        * Plugins/WebPluginController.mm:
        (-[WebPluginController webPlugInContainerSelectionColor]):
        * WebCoreSupport/WebFrameLoaderClient.mm:
        (WebFrameLoaderClient::setCopiesOnScroll):
        * WebView/WebHTMLView.mm:
        (-[WebHTMLView view:stringForToolTip:point:userData:]):
        (-[WebHTMLView pasteboardChangedOwner:]):
        (-[WebHTMLView pasteboard:provideDataForType:]):
        (-[WebHTMLView changeFont:]):
        (-[WebHTMLView changeColor:]):
        * WebView/WebPDFView.mm:
        (-[WebPDFView _openWithFinder:]):

2019-11-08  Daniel Bates  <dabates@apple.com>

        Add WebKit Legacy SPI to retrieve editable elements in rect
        https://bugs.webkit.org/show_bug.cgi?id=204006
        <rdar://problem/57024093>

        Reviewed by Wenson Hsieh.

        Add SPI to retrieve all the editable elements in a rect.

        * WebView/WebView.mm:
        (-[WebView _editableElementsInRect:]): Added.
        * WebView/WebViewPrivate.h:

2019-11-04  Alex Christensen  <achristensen@webkit.org>

        REGRESSION(r243947) Epson software updater fails to install new version
        https://bugs.webkit.org/show_bug.cgi?id=203809
        <rdar://problem/56002179>

        Reviewed by Brady Eidson.

        * Misc/WebDownload.mm:
        (shouldCallOnNetworkThread):
        (callOnDelegateThread):
        (isDelegateThread):
        (-[WebDownloadInternal downloadDidBegin:]):
        (-[WebDownloadInternal download:willSendRequest:redirectResponse:]):
        (-[WebDownloadInternal download:didReceiveAuthenticationChallenge:]):
        (-[WebDownloadInternal download:didReceiveResponse:]):
        (-[WebDownloadInternal download:didReceiveDataOfLength:]):
        (-[WebDownloadInternal download:shouldDecodeSourceDataOfMIMEType:]):
        (-[WebDownloadInternal download:decideDestinationWithSuggestedFilename:]):
        (-[WebDownloadInternal download:didCreateDestination:]):
        (-[WebDownloadInternal downloadDidFinish:]):
        (-[WebDownloadInternal download:didFailWithError:]):

2019-11-02  Devin Rousso  <drousso@apple.com>

        Web Inspector: Add diagnostic logging for frontend feature usage
        https://bugs.webkit.org/show_bug.cgi?id=203579
        <rdar://problem/56717410>

        Reviewed by Brian Burg.

        Original patch by Matt Baker <mattbaker@apple.com>.

        * WebCoreSupport/WebInspectorClient.h:
        * WebCoreSupport/WebInspectorClient.mm:
        (WebInspectorFrontendClient::supportsDiagnosticLogging): Added.
        (WebInspectorFrontendClient::logDiagnosticEvent): Added.

        * Configurations/FeatureDefines.xcconfig:
        Add `ENABLE_INSPECTOR_TELEMETRY`, which is only enabled for macOS.

2019-10-30  Peng Liu  <peng.liu6@apple.com>

        [Picture-in-Picture Web API] Enable the support for iOS
        https://bugs.webkit.org/show_bug.cgi?id=202618

        Reviewed by Jer Noble.

        Enable the Picture-in-Picture API support for iOS (iPad only).

        * Configurations/FeatureDefines.xcconfig:

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

        [Quick Look] Clean up LegacyPreviewLoaderClients
        https://bugs.webkit.org/show_bug.cgi?id=203472

        Reviewed by Brady Eidson.

        * WebCoreSupport/WebFrameLoaderClient.mm:
        (WebFrameLoaderClient::createPreviewLoaderClient):

2019-10-26  Chris Lord  <clord@igalia.com>

        Put OffscreenCanvas behind a build flag
        https://bugs.webkit.org/show_bug.cgi?id=203146

        Reviewed by Ryosuke Niwa.

        * Configurations/FeatureDefines.xcconfig:

2019-10-23  Andy Estes  <aestes@apple.com>

        [Quick Look] Rename PreviewLoader{,Client} to LegacyPreviewLoader{,Client}
        https://bugs.webkit.org/show_bug.cgi?id=203306

        Reviewed by Tim Horton.

        * WebCoreSupport/WebFrameLoaderClient.h:
        * WebCoreSupport/WebFrameLoaderClient.mm:
        (WebFrameLoaderClient::createPreviewLoaderClient):
        * WebView/WebDataSource.mm:
        (-[WebDataSource _quickLookPreviewLoaderClient]):
        (-[WebDataSource _setQuickLookPreviewLoaderClient:]):
        * WebView/WebDataSourceInternal.h:

2019-10-22  Alex Christensen  <achristensen@webkit.org>

        Re-enable legacy TLS by default, keep runtime switch
        https://bugs.webkit.org/show_bug.cgi?id=203253

        Reviewed by Geoffrey Garen.

        * WebView/WebView.mm:
        (-[WebView _commonInitializationWithFrameName:groupName:]):

2019-10-21  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Thread JSGlobalObject* instead of ExecState*
        https://bugs.webkit.org/show_bug.cgi?id=202392

        Reviewed by Geoffrey Garen.

        * DOM/DOMInternal.mm:
        (-[WebScriptObject _initializeScriptDOMNodeImp]):
        * DOM/WebDOMOperations.mm:
        * Plugins/Hosted/NetscapePluginInstanceProxy.h:
        * Plugins/Hosted/NetscapePluginInstanceProxy.mm:
        (WebKit::NetscapePluginInstanceProxy::evaluate):
        (WebKit::NetscapePluginInstanceProxy::invoke):
        (WebKit::NetscapePluginInstanceProxy::invokeDefault):
        (WebKit::NetscapePluginInstanceProxy::construct):
        (WebKit::NetscapePluginInstanceProxy::getProperty):
        (WebKit::NetscapePluginInstanceProxy::setProperty):
        (WebKit::NetscapePluginInstanceProxy::removeProperty):
        (WebKit::NetscapePluginInstanceProxy::hasProperty):
        (WebKit::NetscapePluginInstanceProxy::hasMethod):
        (WebKit::NetscapePluginInstanceProxy::enumerate):
        (WebKit::NetscapePluginInstanceProxy::addValueToArray):
        (WebKit::NetscapePluginInstanceProxy::marshalValue):
        (WebKit::NetscapePluginInstanceProxy::marshalValues):
        (WebKit::NetscapePluginInstanceProxy::demarshalValueFromArray):
        (WebKit::NetscapePluginInstanceProxy::demarshalValue):
        (WebKit::NetscapePluginInstanceProxy::demarshalValues):
        (WebKit::NetscapePluginInstanceProxy::moveGlobalExceptionToExecState):
        * Plugins/Hosted/ProxyInstance.h:
        * Plugins/Hosted/ProxyInstance.mm:
        (WebKit::ProxyField::valueFromInstance const):
        (WebKit::ProxyField::setValueToInstance const):
        (WebKit::ProxyInstance::newRuntimeObject):
        (WebKit::ProxyInstance::invoke):
        (WebKit::ProxyRuntimeMethod::create):
        (WebKit::ProxyInstance::getMethod):
        (WebKit::ProxyInstance::invokeMethod):
        (WebKit::ProxyInstance::invokeDefaultMethod):
        (WebKit::ProxyInstance::invokeConstruct):
        (WebKit::ProxyInstance::defaultValue const):
        (WebKit::ProxyInstance::stringValue const):
        (WebKit::ProxyInstance::numberValue const):
        (WebKit::ProxyInstance::valueOf const):
        (WebKit::ProxyInstance::getPropertyNames):
        (WebKit::ProxyInstance::fieldValue const):
        (WebKit::ProxyInstance::setFieldValue const):
        * WebView/WebFrame.mm:
        (-[WebFrame _stringByEvaluatingJavaScriptFromString:forceUserGesture:]):
        (-[WebFrame _stringByEvaluatingJavaScriptFromString:withGlobalObject:inScriptWorld:]):
        (-[WebFrame _globalContextForScriptWorld:]):
        (-[WebFrame jsWrapperForNode:inScriptWorld:]):
        (-[WebFrame globalContext]):
        * WebView/WebScriptDebugger.h:
        * WebView/WebScriptDebugger.mm:
        (WebScriptDebugger::sourceParsed):
        * WebView/WebView.mm:
        (+[WebView _reportException:inContext:]):
        (aeDescFromJSValue):
        (-[WebView aeDescByEvaluatingJavaScriptFromString:]):

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

        imported/w3c/web-platform-tests/clipboard-apis/async-navigator-clipboard-basics.https.html is flaky
        https://bugs.webkit.org/show_bug.cgi?id=203181

        Reviewed by Ryosuke Niwa.

        Add a changeCount argument to informationForItemAtIndex and allPasteboardItemInfo, and also make then return
        optional values. See WebCore ChangeLog for more details.

        * WebCoreSupport/WebPlatformStrategies.h:
        * WebCoreSupport/WebPlatformStrategies.mm:
        (WebPlatformStrategies::changeCount):
        (WebPlatformStrategies::addTypes):
        (WebPlatformStrategies::setTypes):
        (WebPlatformStrategies::setBufferForType):
        (WebPlatformStrategies::setURL):
        (WebPlatformStrategies::setColor):
        (WebPlatformStrategies::setStringForType):
        (WebPlatformStrategies::writeCustomData):
        (WebPlatformStrategies::informationForItemAtIndex):
        (WebPlatformStrategies::allPasteboardItemInfo):

2019-10-17  Devin Rousso  <drousso@apple.com>

        Web Inspector: rework frontend agent construction to allow commands/events to be controlled by the related target's type
        https://bugs.webkit.org/show_bug.cgi?id=200384
        <rdar://problem/53850352>

        Reviewed by Joseph Pecoraro.

        * WebCoreSupport/WebInspectorClient.h:
        (WebInspectorFrontendClient::debuggableType const): Added.
        Split the `Web` debuggable type into `Page` (WebCore::Page) and `WebPage` (WebKit::WebPageProxy).

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

        Unreviewed, fix iOS Debug build after r251220.

        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]):

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

        Rename PageCache to BackForwardCache
        https://bugs.webkit.org/show_bug.cgi?id=203048

        Reviewed by Alex Christensen.

        Rename PageCache to BackForwardCache for clarity and consistency with the UIProcess's WebBackForwardCache.

        * History/BackForwardList.mm:
        (BackForwardList::addItem):
        (BackForwardList::setCapacity):
        * History/WebBackForwardList.mm:
        (-[WebBackForwardList pageCacheSize]):
        * History/WebHistoryItem.mm:
        * History/WebHistoryItemPrivate.h:
        * Misc/WebCache.mm:
        * Misc/WebCoreStatistics.mm:
        (+[WebCoreStatistics cachedPageCount]):
        (+[WebCoreStatistics cachedFrameCount]):
        * WebCoreSupport/WebFrameLoaderClient.h:
        * WebCoreSupport/WebFrameLoaderClient.mm:
        (WebFrameLoaderClient::forceLayoutOnRestoreFromBackForwardCache):
        (WebFrameLoaderClient::didRestoreFromBackForwardCache):
        * WebCoreSupport/WebVisitedLinkStore.mm:
        * WebView/WebHTMLView.mm:
        (-[WebHTMLView layoutToMinimumPageWidth:height:originalPageWidth:originalPageHeight:maximumShrinkRatio:adjustingViewSize:]):
        (-[WebHTMLView setNeedsLayout:]):
        (-[WebHTMLView setNeedsToApplyStyles:]):
        * WebView/WebView.mm:
        (-[WebView _close]):
        (-[WebView _preferencesChanged:]):
        (+[WebView _setCacheModel:]):

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

        [WK2] Move back/forward cache entry expiration from the WebProcess to the UIProcess
        https://bugs.webkit.org/show_bug.cgi?id=203034
        <rdar://problem/56332453>

        Reviewed by Antti Koivisto.

        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]):

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

        [macOS] Simplify main thread initialization
        https://bugs.webkit.org/show_bug.cgi?id=203001

        Reviewed by Geoff Garen.

        * History/WebBackForwardList.mm:
        (+[WebBackForwardList initialize]):
        * History/WebHistoryItem.mm:
        (+[WebHistoryItem initialize]):
        * Misc/WebCache.mm:
        (+[WebCache initialize]):
        * Misc/WebElementDictionary.mm:
        (+[WebElementDictionary initialize]):
        * Misc/WebIconDatabase.mm:
        * Misc/WebStringTruncator.mm:
        (+[WebStringTruncator initialize]):
        * Plugins/Hosted/WebHostedNetscapePluginView.mm:
        (+[WebHostedNetscapePluginView initialize]):
        * Plugins/WebBaseNetscapePluginView.mm:
        * Plugins/WebBasePluginPackage.mm:
        (+[WebBasePluginPackage initialize]):
        * Plugins/WebNetscapePluginView.mm:
        (+[WebNetscapePluginView initialize]):
        * WebCoreSupport/WebEditorClient.mm:
        (+[WebUndoStep initialize]):
        * WebCoreSupport/WebFrameLoaderClient.mm:
        (+[WebFramePolicyListener initialize]):
        * WebView/WebArchive.mm:
        (+[WebArchivePrivate initialize]):
        * WebView/WebDataSource.mm:
        (+[WebDataSource initialize]):
        * WebView/WebHTMLView.mm:
        (+[WebHTMLViewPrivate initialize]):
        (+[WebHTMLView initialize]):
        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):
        * WebView/WebResource.mm:
        (+[WebResourcePrivate initialize]):
        * WebView/WebTextIterator.mm:
        (+[WebTextIteratorPrivate initialize]):
        * WebView/WebView.mm:
        (+[WebView initialize]):
        * WebView/WebViewData.mm:
        (+[WebViewPrivate initialize]):

2019-10-15  Peng Liu  <peng.liu6@apple.com>

        [Picture-in-Picture Web API] Implement HTMLVideoElement.requestPictureInPicture() / Document.exitPictureInPicture()
        https://bugs.webkit.org/show_bug.cgi?id=201024

        Reviewed by Eric Carlson.

        Add configurations for Picture-in-Picture API and also a preference option for it.

        * Configurations/FeatureDefines.xcconfig:
        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):
        (-[WebPreferences pictureInPictureAPIEnabled]):
        (-[WebPreferences setPictureInPictureAPIEnabled:]):
        * WebView/WebPreferencesPrivate.h:
        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]):

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

        [WK2] Have WebBackForwardCache class coordinate page caching in all WebProcesses
        https://bugs.webkit.org/show_bug.cgi?id=202929
        <rdar://problem/56250421>

        Reviewed by Alex Christensen.

        * WebCoreSupport/WebFrameLoaderClient.h:
        * WebCoreSupport/WebFrameLoaderClient.mm:

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

        [Clipboard API] Refactor custom pasteboard writing codepaths to handle multiple items
        https://bugs.webkit.org/show_bug.cgi?id=202916

        Reviewed by Tim Horton.

        Adjust some method signatures.

        * WebCoreSupport/WebPlatformStrategies.h:
        * WebCoreSupport/WebPlatformStrategies.mm:
        (WebPlatformStrategies::writeCustomData):

2019-10-14  David Quesada  <david_quesada@apple.com>

        Remove WebCore::IOSApplication::isWebApp()
        https://bugs.webkit.org/show_bug.cgi?id=181259

        Reviewed by Alex Christensen.

        * WebCoreSupport/WebApplicationCache.mm:
        (applicationCacheBundleIdentifier):

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

        [Clipboard API] Support writing multiple PasteboardCustomData with SharedBuffers to the pasteboard
        https://bugs.webkit.org/show_bug.cgi?id=202851

        Reviewed by Darin Adler.

        See WebCore ChangeLog for more details.

        * WebCoreSupport/WebPlatformStrategies.h:

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

        [Clipboard API] Refactor Pasteboard item reading functions to work on both iOS and macOS
        https://bugs.webkit.org/show_bug.cgi?id=202647

        Reviewed by Tim Horton.

        Refactor iOS-specific pasteboard functions to be platform-agnostic. See WebCore ChangeLog for more details.

        * WebCoreSupport/WebPlatformStrategies.h:
        * WebCoreSupport/WebPlatformStrategies.mm:
        (WebPlatformStrategies::informationForItemAtIndex):
        (WebPlatformStrategies::allPasteboardItemInfo):
        (WebPlatformStrategies::getPasteboardItemsCount):
        (WebPlatformStrategies::readBufferFromPasteboard):
        (WebPlatformStrategies::readURLFromPasteboard):
        (WebPlatformStrategies::readStringFromPasteboard):
        (WebPlatformStrategies::writeToPasteboard):
        (WebPlatformStrategies::updateSupportedTypeIdentifiers):

2019-10-08  Antti Koivisto  <antti@apple.com>

        [CSS Shadow Parts] Enable by default
        https://bugs.webkit.org/show_bug.cgi?id=202644

        Reviewed by Ryosuke Niwa.

        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):

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

        Add IDL for requestIdleCallback
        https://bugs.webkit.org/show_bug.cgi?id=202653

        Reviewed by Geoffrey Garen.

        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):
        * WebView/WebPreferencesPrivate.h:
        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]):

2019-10-07  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Change signature of HostFunction to (JSGlobalObject*, CallFrame*)
        https://bugs.webkit.org/show_bug.cgi?id=202569

        Reviewed by Saam Barati.

        * WebView/WebScriptDebugger.h:

2019-10-04  Alex Christensen  <achristensen@webkit.org>

        Rename SchemeRegistry to LegacySchemeRegistry
        https://bugs.webkit.org/show_bug.cgi?id=202586

        Reviewed by Tim Horton.

        * WebView/WebView.mm:
        (+[WebView _setDomainRelaxationForbidden:forURLScheme:]):
        (+[WebView _registerURLSchemeAsSecure:]):
        (+[WebView _registerURLSchemeAsAllowingDatabaseAccessInPrivateBrowsing:]):
        (+[WebView registerURLSchemeAsLocal:]):

2019-10-04  Alex Christensen  <achristensen@webkit.org>

        Simplify sandbox enabling macros
        https://bugs.webkit.org/show_bug.cgi?id=202536

        Reviewed by Brent Fulgham.

        * Configurations/FeatureDefines.xcconfig:

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

        Provide TAPI the full target triple instead of just the arch
        https://bugs.webkit.org/show_bug.cgi?id=202486

        Reviewed by Simon Fraser.

        * MigrateHeaders.make:
        For accuracy and consistency's sake, pass the whole target identifier
        instead of just one piece.

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

        Clean up some includes to make the build a bit faster
        https://bugs.webkit.org/show_bug.cgi?id=202444

        Reviewed by Geoff Garen.

        * WebView/WebFrame.mm:
        * WebView/WebView.mm:

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

        [CSS Shadow Parts] Parse 'part' attribute
        https://bugs.webkit.org/show_bug.cgi?id=202409

        Reviewed by Ryosuke Niwa.

        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):
        (-[WebPreferences cssShadowPartsEnabled]):
        (-[WebPreferences setCSSShadowPartsEnabled:]):
        * WebView/WebPreferencesPrivate.h:
        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]):

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

        Progress towards successful CMake build on Mac
        https://bugs.webkit.org/show_bug.cgi?id=202426

        Rubber-stamped by Tim Horton.

        * WebView/WebDataSource.mm:

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

        Unify more WebKitLegacy sources
        https://bugs.webkit.org/show_bug.cgi?id=202410

        Reviewed by Tim Horton.

        * DOM/DOMHTML.mm:
        (-[DOMHTMLElement scrollXOffset]):
        (-[DOMHTMLElement scrollYOffset]):
        (-[DOMHTMLElement setScrollXOffset:scrollYOffset:adjustForIOSCaret:]):
        (-[DOMHTMLElement absolutePosition::::]):
        (-[DOMHTMLInputElement setValueWithChangeEvent:]):
        (-[DOMHTMLInputElement setValueAsNumberWithChangeEvent:]):
        * DOM/DOMHTMLTextAreaElement.mm:
        (unwrap):
        (core):
        (kit):
        (-[DOMHTMLTextAreaElement autofocus]):
        (-[DOMHTMLTextAreaElement setAutofocus:]):
        (-[DOMHTMLTextAreaElement dirName]):
        (-[DOMHTMLTextAreaElement setDirName:]):
        (-[DOMHTMLTextAreaElement disabled]):
        (-[DOMHTMLTextAreaElement setDisabled:]):
        (-[DOMHTMLTextAreaElement form]):
        (-[DOMHTMLTextAreaElement maxLength]):
        (-[DOMHTMLTextAreaElement setMaxLength:]):
        (-[DOMHTMLTextAreaElement name]):
        (-[DOMHTMLTextAreaElement setName:]):
        (-[DOMHTMLTextAreaElement placeholder]):
        (-[DOMHTMLTextAreaElement setPlaceholder:]):
        (-[DOMHTMLTextAreaElement readOnly]):
        (-[DOMHTMLTextAreaElement setReadOnly:]):
        (-[DOMHTMLTextAreaElement required]):
        (-[DOMHTMLTextAreaElement setRequired:]):
        (-[DOMHTMLTextAreaElement rows]):
        (-[DOMHTMLTextAreaElement setRows:]):
        (-[DOMHTMLTextAreaElement cols]):
        (-[DOMHTMLTextAreaElement setCols:]):
        (-[DOMHTMLTextAreaElement wrap]):
        (-[DOMHTMLTextAreaElement setWrap:]):
        (-[DOMHTMLTextAreaElement type]):
        (-[DOMHTMLTextAreaElement defaultValue]):
        (-[DOMHTMLTextAreaElement setDefaultValue:]):
        (-[DOMHTMLTextAreaElement value]):
        (-[DOMHTMLTextAreaElement setValue:]):
        (-[DOMHTMLTextAreaElement textLength]):
        (-[DOMHTMLTextAreaElement willValidate]):
        (-[DOMHTMLTextAreaElement labels]):
        (-[DOMHTMLTextAreaElement selectionStart]):
        (-[DOMHTMLTextAreaElement setSelectionStart:]):
        (-[DOMHTMLTextAreaElement selectionEnd]):
        (-[DOMHTMLTextAreaElement setSelectionEnd:]):
        (-[DOMHTMLTextAreaElement selectionDirection]):
        (-[DOMHTMLTextAreaElement setSelectionDirection:]):
        (-[DOMHTMLTextAreaElement accessKey]):
        (-[DOMHTMLTextAreaElement setAccessKey:]):
        (-[DOMHTMLTextAreaElement autocomplete]):
        (-[DOMHTMLTextAreaElement setAutocomplete:]):
        (-[DOMHTMLTextAreaElement select]):
        (-[DOMHTMLTextAreaElement setRangeText:]):
        (-[DOMHTMLTextAreaElement setRangeText:start:end:selectionMode:]):
        (-[DOMHTMLTextAreaElement setSelectionRange:end:]):
        * DOM/DOMUIKitExtensions.mm:
        (-[DOMRange move:inDirection:]):
        (-[DOMRange extend:inDirection:]):
        (-[DOMNode borderRadii]):
        (-[DOMNode isSelectableBlock]):
        (-[DOMNode findExplodedTextNodeAtPoint:]):
        (-[DOMHTMLElement structuralComplexityContribution]):
        * WebCoreSupport/WebFrameLoaderClient.h:
        * WebCoreSupport/WebFrameLoaderClient.mm:
        (dataSource):
        * WebView/WebDataSource.mm:
        (addTypesFromClass):

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

        Fix internal build after r250549
        https://bugs.webkit.org/show_bug.cgi?id=202390

        Remove some more "using namespace WebCore"

        * History/WebBackForwardList.mm:
        (-[WebBackForwardList dictionaryRepresentation]):
        (vectorToNSArray):
        (-[WebBackForwardList backListWithLimit:]):
        (-[WebBackForwardList forwardListWithLimit:]):
        (-[WebBackForwardList description]):
        (-[WebBackForwardList pageCacheSize]):
        * Misc/WebSharingServicePickerController.mm:
        (WebSharingServicePickerClient::pageForSharingServicePicker):
        (WebSharingServicePickerClient::screenRectForCurrentSharingServicePickerItem):
        (-[WebSharingServicePickerController didShareImageData:confirmDataIsValidTIFFData:]):
        (-[WebSharingServicePickerController sharingService:didShareItems:]):
        * Plugins/WebBasePluginPackage.mm:
        (-[WebBasePluginPackage getPluginInfoFromPLists]):
        (-[WebBasePluginPackage pluginInfo]):
        * Plugins/WebPluginContainerCheck.mm:
        (-[WebPluginContainerCheck _continueWithPolicy:]):
        (-[WebPluginContainerCheck _isForbiddenFileLoad]):
        * Plugins/WebPluginController.mm:
        (initializeAudioSession):
        (-[WebPluginController plugInViewWithArguments:fromPluginPackage:]):
        (-[WebPluginController superlayerForPluginView:]):
        (-[WebPluginController stopOnePlugin:]):
        (-[WebPluginController stopOnePluginForPageCache:]):
        (-[WebPluginController destroyOnePlugin:]):
        (-[WebPluginController startAllPlugins]):
        (-[WebPluginController addPlugin:]):
        (-[WebPluginController destroyPlugin:]):
        (-[WebPluginController destroyAllPlugins]):
        (-[WebPluginController processingUserGesture]):
        (-[WebPluginController webPlugInContainerLoadRequest:inFrame:]):
        (-[WebPluginController webPlugInContainerSelectionColor]):
        * Plugins/WebPluginDatabase.mm:
        (-[WebPluginDatabase refresh]):
        (-[WebPluginDatabase _removePlugin:]):
        * WebCoreSupport/WebApplicationCache.mm:
        (+[WebApplicationCache initializeWithBundleIdentifier:]):
        (webApplicationCacheStorage):
        * WebCoreSupport/WebApplicationCacheQuotaManager.mm:

2019-09-30  Alex Christensen  <achristensen@webkit.org>

        Resurrect Mac CMake build
        https://bugs.webkit.org/show_bug.cgi?id=202384

        Rubber-stamped by Tim Horton.

        * DefaultDelegates/WebDefaultPolicyDelegate.m:
        (-[WebDefaultPolicyDelegate webView:decidePolicyForNavigationAction:request:frame:decisionListener:]):

2019-09-30  Alex Christensen  <achristensen@webkit.org>

        Unify more WebKitLegacy sources
        https://bugs.webkit.org/show_bug.cgi?id=202390

        Reviewed by Tim Horton.

        * WebCoreSupport/WebFrameLoaderClient.mm:
        (dataSource):
        (WebFrameLoaderClient::pageID const):
        (WebFrameLoaderClient::frameID const):
        (WebFrameLoaderClient::makeRepresentation):
        (WebFrameLoaderClient::forceLayoutOnRestoreFromPageCache):
        (WebFrameLoaderClient::convertMainResourceLoadToDownload):
        (WebFrameLoaderClient::dispatchDidLoadResourceFromMemoryCache):
        (WebFrameLoaderClient::assignIdentifierToInitialRequest):
        (WebFrameLoaderClient::dispatchWillSendRequest):
        (WebFrameLoaderClient::shouldUseCredentialStorage):
        (WebFrameLoaderClient::dispatchDidReceiveAuthenticationChallenge):
        (WebFrameLoaderClient::canAuthenticateAgainstProtectionSpace):
        (WebFrameLoaderClient::connectionProperties):
        (WebFrameLoaderClient::dispatchDidReceiveResponse):
        (WebFrameLoaderClient::willCacheResponse const):
        (WebFrameLoaderClient::dispatchDidReceiveContentLength):
        (WebFrameLoaderClient::dispatchDidFinishLoading):
        (WebFrameLoaderClient::dispatchDidFailLoading):
        (WebFrameLoaderClient::dispatchWillPerformClientRedirect):
        (WebFrameLoaderClient::dispatchDidReceiveTitle):
        (WebFrameLoaderClient::dispatchDidCommitLoad):
        (WebFrameLoaderClient::dispatchDidFailProvisionalLoad):
        (WebFrameLoaderClient::dispatchDidFailLoad):
        (WebFrameLoaderClient::dispatchDidReachLayoutMilestone):
        (WebFrameLoaderClient::dispatchCreatePage):
        (WebFrameLoaderClient::dispatchDecidePolicyForResponse):
        (shouldTryAppLink):
        (WebFrameLoaderClient::dispatchDecidePolicyForNewWindowAction):
        (WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
        (WebFrameLoaderClient::dispatchUnableToImplementPolicy):
        (makeFormFieldValuesDictionary):
        (WebFrameLoaderClient::dispatchWillSubmitForm):
        (WebFrameLoaderClient::revertToProvisionalState):
        (WebFrameLoaderClient::setMainDocumentError):
        (WebFrameLoaderClient::startDownload):
        (WebFrameLoaderClient::willChangeTitle):
        (WebFrameLoaderClient::didChangeTitle):
        (WebFrameLoaderClient::didReplaceMultipartContent):
        (WebFrameLoaderClient::committedLoad):
        (WebFrameLoaderClient::finishedLoading):
        (WebFrameLoaderClient::updateGlobalHistory):
        (WebFrameLoaderClient::updateGlobalHistoryRedirectLinks):
        (WebFrameLoaderClient::shouldGoToHistoryItem const):
        (WebFrameLoaderClient::didDisplayInsecureContent):
        (WebFrameLoaderClient::didRunInsecureContent):
        (WebFrameLoaderClient::cancelledError):
        (WebFrameLoaderClient::blockedError):
        (WebFrameLoaderClient::blockedByContentBlockerError):
        (WebFrameLoaderClient::cannotShowURLError):
        (WebFrameLoaderClient::interruptedForPolicyChangeError):
        (WebFrameLoaderClient::blockedByContentFilterError):
        (WebFrameLoaderClient::cannotShowMIMETypeError):
        (WebFrameLoaderClient::fileDoesNotExistError):
        (WebFrameLoaderClient::pluginWillHandleLoadError):
        (WebFrameLoaderClient::shouldFallBack):
        (WebFrameLoaderClient::canHandleRequest const):
        (WebFrameLoaderClient::saveViewStateToItem):
        (WebFrameLoaderClient::restoreViewState):
        (WebFrameLoaderClient::createDocumentLoader):
        (WebFrameLoaderClient::setTitle):
        (WebFrameLoaderClient::savePlatformDataToCachedFrame):
        (WebFrameLoaderClient::transitionToCommittedFromCachedFrame):
        (WebFrameLoaderClient::transitionToCommittedForNewPage):
        (WebFrameLoaderClient::setUpPolicyListener):
        (WebFrameLoaderClient::actionDictionary const):
        (WebFrameLoaderClient::canCachePage const):
        (WebFrameLoaderClient::createFrame):
        (WebFrameLoaderClient::objectContentType):
        (PluginWidget::PluginWidget):
        (PluginWidget::invalidateRect):
        (NetscapePluginWidget::handleEvent):
        (NetscapePluginWidget::notifyWidget):
        (shouldBlockPlugin):
        (WebFrameLoaderClient::createPlugin):
        (WebFrameLoaderClient::redirectDataToPlugin):
        (WebFrameLoaderClient::createJavaAppletWidget):
        (shouldBlockWebGL):
        (WebFrameLoaderClient::webGLPolicyForURL const):
        (WebFrameLoaderClient::resolveWebGLPolicyForURL const):
        (WebFrameLoaderClient::dispatchDidClearWindowObjectInWorld):
        (WebFrameLoaderClient::createNetworkingContext):
        (WebFrameLoaderClient::createPreviewLoaderClient):
        (WebFrameLoaderClient::getLoadDecisionForIcons):
        (webGetNSImage):
        (WebFrameLoaderClient::finishedLoadingIcon):
        (-[WebFramePolicyListener initWithFrame:identifier:policyFunction:defaultPolicy:]):
        (-[WebFramePolicyListener initWithFrame:identifier:policyFunction:defaultPolicy:appLinkURL:]):
        (-[WebFramePolicyListener invalidate]):
        (-[WebFramePolicyListener receivedPolicyDecision:]):
        (-[WebFramePolicyListener ignore]):
        (-[WebFramePolicyListener download]):
        (-[WebFramePolicyListener use]):
        (-[WebFramePolicyListener continue]):
        * WebInspector/WebInspector.mm:
        (-[WebInspector showWindow]):
        (-[WebInspector evaluateInFrontend:script:]):
        * WebView/WebClipView.mm:
        (-[WebClipView visibleRect]):
        (-[WebClipView _immediateScrollToPoint:]):
        * WebView/WebDataSource.mm:
        (-[WebDataSource _documentFragmentWithArchive:]):
        (-[WebDataSource _documentLoader]):
        (-[WebDataSource initWithRequest:]):
        (-[WebDataSource dealloc]):
        (-[WebDataSource data]):
        (-[WebDataSource webFrame]):
        (-[WebDataSource initialRequest]):
        (-[WebDataSource request]):
        (-[WebDataSource webArchive]):
        * WebView/WebFrame.mm:
        (core):
        (kit):
        (getWebView):
        (+[WebFrame _createFrameWithPage:frameName:frameView:ownerElement:]):
        (+[WebFrame _createMainFrameWithPage:frameName:frameView:]):
        (+[WebFrame _createSubframeWithOwnerElement:frameName:frameView:]):
        (+[WebFrame _createMainFrameWithSimpleHTMLDocumentWithPage:frameView:style:]):
        (-[WebFrame _attachScriptDebugger]):
        (-[WebFrame _updateBackgroundAndUpdatesWhileOffscreen]):
        (-[WebFrame _unmarkAllBadGrammar]):
        (-[WebFrame _unmarkAllMisspellings]):
        (-[WebFrame _hasSelection]):
        (-[WebFrame _atMostOneFrameHasSelection]):
        (-[WebFrame _findFrameWithSelection]):
        (-[WebFrame _nodesFromList:]):
        (-[WebFrame _stringForRange:]):
        (-[WebFrame _paintBehaviorForDestinationContext:]):
        (-[WebFrame _drawRect:contentsOnly:]):
        (-[WebFrame _getVisibleRect:]):
        (-[WebFrame _stringByEvaluatingJavaScriptFromString:forceUserGesture:]):
        (-[WebFrame _caretRectAtPosition:affinity:]):
        (-[WebFrame _scrollDOMRangeToVisible:]):
        (-[WebFrame _scrollDOMRangeToVisible:withInset:]):
        (-[WebFrame _rangeByAlteringCurrentSelection:direction:granularity:]):
        (-[WebFrame _selectionGranularity]):
        (-[WebFrame _convertToNSRange:]):
        (-[WebFrame _convertToDOMRange:]):
        (-[WebFrame _convertToDOMRange:rangeIsRelativeTo:]):
        (-[WebFrame _documentFragmentWithMarkupString:baseURLString:]):
        (-[WebFrame _documentFragmentWithNodesAsParagraphs:]):
        (-[WebFrame _visiblePositionForPoint:]):
        (-[WebFrame _characterRangeAtPoint:]):
        (-[WebFrame _typingStyle]):
        (-[WebFrame _setTypingStyle:withUndoAction:]):
        (-[WebFrame _dragSourceEndedAt:operation:]):
        (-[WebFrame _canProvideDocumentSource]):
        (-[WebFrame _commitData:]):
        (-[WebFrame _isDescendantOfFrame:]):
        (-[WebFrame _bodyBackgroundColor]):
        (-[WebFrame _isFrameSet]):
        (-[WebFrame _isVisuallyNonEmpty]):
        (toWebFrameLoadType):
        (-[WebFrame _rectsForRange:]):
        (-[WebFrame _selectionRangeForFirstPoint:secondPoint:]):
        (-[WebFrame _selectionRangeForPoint:]):
        (-[WebFrame _selectNSRange:]):
        (-[WebFrame _isDisplayingStandaloneImage]):
        (-[WebFrame _recursive_resumeNullEventsForAllNetscapePlugins]):
        (-[WebFrame _recursive_pauseNullEventsForAllNetscapePlugins]):
        (-[WebFrame setTimeoutsPaused:]):
        (-[WebFrame prepareForPause]):
        (-[WebFrame resumeFromPause]):
        (-[WebFrame selectWithoutClosingTypingNSRange:]):
        (-[WebFrame _saveViewState]):
        (-[WebFrame deviceOrientationChanged]):
        (-[WebFrame renderedSizeOfNode:constrainedToWidth:]):
        (-[WebFrame deepestNodeAtViewportLocation:]):
        (-[WebFrame scrollableNodeAtViewportLocation:]):
        (-[WebFrame approximateNodeAtViewportLocation:]):
        (-[WebFrame revealSelectionAtExtent:]):
        (-[WebFrame setCaretColor:]):
        (-[WebFrame isTelephoneNumberParsingAllowed]):
        (-[WebFrame isTelephoneNumberParsingEnabled]):
        (-[WebFrame setSelectedDOMRange:affinity:closeTyping:]):
        (-[WebFrame selectNSRange:onElement:]):
        (-[WebFrame setMarkedText:selectedRange:]):
        (-[WebFrame setMarkedText:forCandidates:]):
        (-[WebFrame getDictationResultRanges:andMetadatas:]):
        (-[WebFrame dictationResultMetadataForRange:]):
        (+[WebFrame stringWithData:textEncodingName:]):
        (-[WebFrame fontForSelection:]):
        (-[WebFrame _userScrolled]):
        (-[WebFrame _replaceSelectionWithText:selectReplacement:smartReplace:matchStyle:]):
        (-[WebFrame resetTextAutosizingBeforeLayout]):
        (-[WebFrame _setTextAutosizingWidth:]):
        (-[WebFrame _replaceSelectionWithFragment:selectReplacement:smartReplace:matchStyle:]):
        (-[WebFrame _replaceSelectionWithText:selectReplacement:smartReplace:]):
        (-[WebFrame _smartInsertForString:replacingRange:beforeString:afterString:]):
        (-[WebFrame _cacheabilityDictionary]):
        (-[WebFrame _stringByEvaluatingJavaScriptFromString:withGlobalObject:inScriptWorld:]):
        (-[WebFrame _globalContextForScriptWorld:]):
        (-[WebFrame setAccessibleName:]):
        (-[WebFrame enhancedAccessibilityEnabled]):
        (-[WebFrame setEnhancedAccessibility:]):
        (-[WebFrame _layerTreeAsText]):
        (-[WebFrame accessibilityRoot]):
        (-[WebFrame _clearOpener]):
        (-[WebFrame _computePageRectsWithPrintScaleFactor:pageSize:]):
        (-[WebFrame focusedNodeHasContent]):
        (-[WebFrame _dispatchDidReceiveTitle:]):
        (-[WebFrame jsWrapperForNode:inScriptWorld:]):
        (-[WebFrame elementAtPoint:]):
        (-[WebFrame name]):
        (needsMicrosoftMessengerDOMDocumentWorkaround):
        (-[WebFrame DOMDocument]):
        (-[WebFrame frameElement]):
        (-[WebFrame provisionalDataSource]):
        (-[WebFrame dataSource]):
        (-[WebFrame loadRequest:]):
        (-[WebFrame _loadData:MIMEType:textEncodingName:baseURL:unreachableURL:]):
        (-[WebFrame findFrameNamed:]):
        (-[WebFrame parentFrame]):
        (-[WebFrame childFrames]):
        (-[WebFrame windowObject]):
        (-[WebFrame globalContext]):
        (-[WebFrame javaScriptContext]):
        (dataSource): Deleted.
        * WebView/WebFrameView.mm:
        (-[WebFrameView _web_frame]):
        (-[WebFrameView _setDocumentView:]):
        (-[WebFrameView _verticalPageScrollDistance]):
        (-[WebFrameView _install]):
        (-[WebFrameView _frameSizeChanged]):
        (-[WebFrameView initWithFrame:]):
        (-[WebFrameView drawRect:]):
        (-[WebFrameView _scrollOverflowInDirection:granularity:]):
        (-[WebFrameView _isVerticalDocument]):
        (-[WebFrameView _isFlippedDocument]):
        (-[WebFrameView _scrollToBeginningOfDocument]):
        (-[WebFrameView _scrollToEndOfDocument]):
        (-[WebFrameView _horizontalPageScrollDistance]):
        (-[WebFrameView _pageVertically:]):
        (-[WebFrameView _pageHorizontally:]):
        (-[WebFrameView _scrollLineVertically:]):
        (-[WebFrameView _scrollLineHorizontally:]):
        (-[WebFrameView keyDown:keyDown:]):
        (addTypesFromClass): Deleted.
        * WebView/WebFullScreenController.mm:
        (screenRectOfContents):
        (-[WebFullScreenController element]):
        (-[WebFullScreenController setElement:]):
        (-[WebFullScreenController _document]):
        (-[WebFullScreenController _manager]):
        * WebView/WebHTMLView.mm:
        (toAction):
        (toTag):
        (-[NSView _web_setNeedsDisplayInRect:]):
        (promisedDataClient):
        (+[WebHTMLView _excludedElementsForAttributedStringConversion]):
        (-[WebHTMLView _documentFragmentFromPasteboard:inContext:allowPlainText:]):
        (-[WebHTMLView _plainTextFromPasteboard:]):
        (-[WebHTMLView _pasteWithPasteboard:allowPlainText:]):
        (-[WebHTMLView readSelectionFromPasteboard:]):
        (-[WebHTMLView _selectedRange]):
        (-[WebHTMLView _writeSelectionWithPasteboardTypes:toPasteboard:cachedAttributedString:]):
        (-[WebHTMLView _frameOrBoundsChanged]):
        (-[WebHTMLView _updateMouseoverWithEvent:]):
        (+[WebHTMLView _insertablePasteboardTypes]):
        (+[WebHTMLView _selectionPasteboardTypes]):
        (-[WebHTMLView pasteboard:provideDataForType:]):
        (-[WebHTMLView setScale:]):
        (-[WebHTMLView _canEdit]):
        (-[WebHTMLView _canEditRichly]):
        (-[WebHTMLView _hasSelection]):
        (-[WebHTMLView _hasSelectionOrInsertionPoint]):
        (-[WebHTMLView _hasInsertionPoint]):
        (-[WebHTMLView _isEditable]):
        (-[WebHTMLView _selectionDraggingImage]):
        (-[WebHTMLView _insertOrderedList]):
        (-[WebHTMLView _insertUnorderedList]):
        (-[WebHTMLView _canIncreaseSelectionListLevel]):
        (-[WebHTMLView _canDecreaseSelectionListLevel]):
        (-[WebHTMLView _increaseSelectionListLevel]):
        (-[WebHTMLView _increaseSelectionListLevelOrdered]):
        (-[WebHTMLView _increaseSelectionListLevelUnordered]):
        (-[WebHTMLView _decreaseSelectionListLevel]):
        (-[WebHTMLView _writeSelectionToPasteboard:]):
        (-[WebHTMLView _documentFragmentFromPasteboard:forType:inContext:subresources:]):
        (-[WebHTMLView _beginPrintModeWithMinimumPageWidth:height:maximumPageWidth:]):
        (-[WebHTMLView _beginPrintModeWithPageWidth:height:shrinkToFit:]):
        (-[WebHTMLView _beginScreenPaginationModeWithPageSize:shrinkToFit:]):
        (-[WebHTMLView _adjustedBottomOfPageWithTop:bottom:limit:]):
        (-[WebHTMLView coreCommandBySelector:]):
        (-[WebHTMLView coreCommandByName:]):
        (-[WebHTMLView validRequestorForSendType:returnType:]):
        (-[WebHTMLView jumpToSelection:]):
        (-[WebHTMLView validateUserInterfaceItemWithoutDelegate:]):
        (-[WebHTMLView maintainsInactiveSelection]):
        (-[WebHTMLView reapplyStyles]):
        (-[WebHTMLView layoutToMinimumPageWidth:height:originalPageWidth:originalPageHeight:maximumShrinkRatio:adjustingViewSize:]):
        (-[WebHTMLView rightMouseUp:]):
        (fixMenusReceivedFromOldClients):
        (createShareMenuItem):
        (createMenuItem):
        (createMenuItems):
        (customMenuFromDefaultItems):
        (-[WebHTMLView menuForEvent:]):
        (-[WebHTMLView clearFocus]):
        (-[WebHTMLView setLayer:]):
        (-[WebHTMLView setNeedsLayout:]):
        (-[WebHTMLView setNeedsToApplyStyles:]):
        (-[WebHTMLView _invalidateGStatesForTree]):
        (-[WebHTMLView scrollWheel:]):
        (-[WebHTMLView acceptsFirstMouse:]):
        (-[WebHTMLView shouldDelayWindowOrderingForEvent:]):
        (-[WebHTMLView mouseDown:]):
        (-[WebHTMLView touch:]):
        (-[WebHTMLView mouseDragged:]):
        (-[WebHTMLView draggingSourceOperationMaskForLocal:]):
        (-[WebHTMLView draggedImage:endedAt:operation:]):
        (-[WebHTMLView namesOfPromisedFilesDroppedAtDestination:]):
        (-[WebHTMLView draggingSession:sourceOperationMaskForDraggingContext:]):
        (-[WebHTMLView draggingSession:endedAtPoint:operation:]):
        (-[WebHTMLView mouseUp:]):
        (-[WebHTMLView pressureChangeWithEvent:]):
        (isTextInput):
        (isInPasswordField):
        (currentKeyboardEvent):
        (-[WebHTMLView becomeFirstResponder]):
        (-[WebHTMLView resignFirstResponder]):
        (-[WebHTMLView _setPrinting:minimumPageLogicalWidth:logicalHeight:originalPageWidth:originalPageHeight:maximumShrinkRatio:adjustViewSize:paginateScreenContent:]):
        (-[WebHTMLView _scaleFactorForPrintOperation:]):
        (-[WebHTMLView keyDown:]):
        (-[WebHTMLView keyUp:]):
        (-[WebHTMLView flagsChanged:]):
        (-[WebHTMLView centerSelectionInVisibleArea:]):
        (-[WebHTMLView _selectionStartFontAttributesAsRTF]):
        (-[WebHTMLView _fontAttributesFromFontPasteboard]):
        (-[WebHTMLView _applyStyleToSelection:withUndoAction:]):
        (-[WebHTMLView _applyEditingStyleToSelection:withUndoAction:]):
        (-[WebHTMLView performKeyEquivalent:]):
        (-[WebHTMLView copyFont:]):
        (-[WebHTMLView pasteFont:]):
        (-[WebHTMLView changeFont:]):
        (-[WebHTMLView changeAttributes:]):
        (-[WebHTMLView _undoActionFromColorPanelWithSelector:]):
        (-[WebHTMLView _changeCSSColorUsingSelector:inRange:]):
        (-[WebHTMLView changeColor:]):
        (-[WebHTMLView checkSpelling:]):
        (-[WebHTMLView showGuessPanel:]):
        (-[WebHTMLView toggleBaseWritingDirection:]):
        (-[WebHTMLView changeBaseWritingDirection:]):
        (-[WebHTMLView _changeBaseWritingDirectionTo:]):
        (-[WebHTMLView _updateControlTints]):
        (-[WebHTMLView _selectionChanged]):
        (-[WebHTMLView _updateFontPanel]):
        (-[WebHTMLView _canSmartCopyOrDelete]):
        (-[WebHTMLView _lookUpInDictionaryFromMenu:]):
        (-[WebHTMLView quickLookWithEvent:]):
        (-[WebHTMLView _executeSavedKeypressCommands]):
        (-[WebHTMLView _interpretKeyEvent:savingCommands:]):
        (-[WebHTMLView _handleEditingKeyEvent:]):
        (-[WebHTMLView _web_updateLayoutAndStyleIfNeededRecursive]):
        (-[WebHTMLView ALLOW_DEPRECATED_IMPLEMENTATIONS_END]):
        (-[WebHTMLView attributedSubstringFromRange:]):
        (-[WebHTMLView hasMarkedText]):
        (extractUnderlines):
        (-[WebHTMLView setMarkedText:selectedRange:]):
        (-[WebHTMLView doCommandBySelector:]):
        (-[WebHTMLView insertText:]):
        (-[WebHTMLView _updateSecureInputState]):
        (-[WebHTMLView _updateSelectionForInputManager]):
        (-[WebHTMLView selectionTextRects]):
        (imageFromRect):
        (selectionImage):
        (-[WebHTMLView selectionImageForcingBlackText:selectionImageForcingBlackText:]):
        (-[WebHTMLView selectAll]):
        (-[WebHTMLView deselectAll]):
        (-[WebHTMLView _legacyAttributedStringFrom:offset:to:offset:]):
        (-[WebHTMLView attributedString]):
        (-[WebHTMLView selectedAttributedString]):
        (-[WebHTMLView elementAtPoint:allowShadowContent:]):
        (-[WebHTMLView countMatchesForText:inDOMRange:options:limit:markMatches:]):
        (-[WebHTMLView setMarkedTextMatchesAreHighlighted:]):
        (-[WebHTMLView markedTextMatchesAreHighlighted]):
        (-[WebHTMLView unmarkAllTextMatches]):
        (-[WebHTMLView rectsForTextMatches]):
        (-[WebHTMLView _findString:options:]):
        * WebView/WebImmediateActionController.mm:
        (-[WebImmediateActionController webView:didHandleScrollWheel:]):
        (-[WebImmediateActionController _cancelImmediateAction]):
        (-[WebImmediateActionController performHitTestAtPoint:]):
        (-[WebImmediateActionController immediateActionRecognizerDidUpdateAnimation:]):
        (-[WebImmediateActionController immediateActionRecognizerDidCancelAnimation:]):
        (-[WebImmediateActionController immediateActionRecognizerDidCompleteAnimation:]):
        (-[WebImmediateActionController _defaultAnimationController]):
        (-[WebImmediateActionController _updateImmediateActionItem]):
        (-[WebImmediateActionController menuItemDidClose:]):
        (elementBoundingBoxInWindowCoordinatesFromNode):
        (-[WebImmediateActionController menuItem:itemFrameForPoint:]):
        (-[WebImmediateActionController menuItem:maxSizeForPoint:]):
        (-[WebImmediateActionController _animationControllerForDataDetectedText]):
        (-[WebImmediateActionController _animationControllerForDataDetectedLink]):
        (+[WebImmediateActionController _dictionaryPopupInfoForRange:inFrame:withLookupOptions:indicatorOptions:transition:]):
        (-[WebImmediateActionController _animationControllerForText]):
        * WebView/WebPDFView.mm:
        (isFrameInRange):
        (-[WebPDFView pasteboardTypesForSelection]):
        (-[WebPDFView writeSelectionWithPasteboardTypes:toPasteboard:]):
        (-[WebPDFView PDFViewWillClickOnLink:withURL:]):
        * WebView/WebScriptDebugDelegate.mm:
        (-[WebScriptCallFrame _convertValueToObjcValue:]):
        * WebView/WebScriptDebugger.mm:
        (toNSString):
        (toWebFrame):
        (WebScriptDebugger::WebScriptDebugger):
        (WebScriptDebugger::sourceParsed):
        (WebScriptDebugger::handlePause):
        * WebView/WebScriptWorld.mm:
        (-[WebScriptWorld initWithWorld:]):
        (-[WebScriptWorld init]):
        (+[WebScriptWorld standardWorld]):
        (+[WebScriptWorld scriptWorldForGlobalContext:]):
        (core):
        (+[WebScriptWorld findOrCreateWorld:]):
        * WebView/WebView.mm:
        (coreOptions):
        (coreLayoutMilestones):
        (kitLayoutMilestones):
        (kit):
        (WebKit::DeferredPageDestructor::createDeferredPageDestructor):
        (WebKit::DeferredPageDestructor::DeferredPageDestructor):
        (-[WebUITextIndicatorData initWithImage:textIndicatorData:scale:]):
        (+[WebView _standardUserAgentWithApplicationName:]):
        (+[WebView _reportException:inContext:]):
        (shouldEnableLoadDeferring):
        (shouldRestrictWindowFocus):
        (needsOutlookQuirksScript):
        (-[WebView _injectOutlookQuirksScript]):
        (shouldUseLegacyBackgroundSizeShorthandBehavior):
        (shouldAllowWindowOpenWithoutUserGesture):
        (WebKitInitializeGamepadProviderIfNecessary):
        (-[WebView _commonInitializationWithFrameName:groupName:]):
        (-[WebView initSimpleHTMLDocumentWithStyle:frame:preferences:groupName:]):
        (-[WebView _replaceCurrentHistoryItem:]):
        (-[WebView updateLayoutIgnorePendingStyleSheets]):
        (-[WebView _requestStartDataInteraction:globalPosition:]):
        (-[WebView _startDrag:]):
        (-[WebView dragDataForSession:client:global:operation:]):
        (-[WebView _didConcludeEditDrag]):
        (+[WebView _setAlwaysUsesComplexTextCodePath:]):
        (+[WebView canCloseAllWebViews]):
        (+[WebView closeAllWebViews]):
        (-[WebView _dispatchUnloadEvent]):
        (-[WebView styleAtSelectionStart]):
        (-[WebView _didFinishScrollingOrZooming]):
        (-[WebView _close]):
        (-[WebView _isProcessingUserGesture]):
        (+[WebView _enableRemoteInspector]):
        (+[WebView _disableRemoteInspector]):
        (+[WebView _disableAutoStartRemoteInspector]):
        (+[WebView _isRemoteInspectorEnabled]):
        (+[WebView _hasRemoteInspectorSession]):
        (-[WebView _setHostApplicationProcessIdentifier:auditToken:]):
        (-[WebView _loadBackForwardListFromOtherView:]):
        (-[WebView _needsKeyboardEventDisambiguationQuirks]):
        (needsSelfRetainWhileLoadingQuirk):
        (-[WebView _needsPreHTML5ParserQuirks]):
        (-[WebView _preferencesChanged:]):
        (-[WebView _cacheFrameLoadDelegateImplementations]):
        (+[WebView _unregisterViewClassAndRepresentationClassForMIMEType:]):
        (+[WebView _registerViewClass:representationClass:forURLScheme:]):
        (+[WebView _decodeData:]):
        (-[WebView _didStartProvisionalLoadForFrame:]):
        (-[WebView _checkDidPerformFirstNavigation]):
        (-[WebView _cachedResponseForURL:]):
        (+[WebView _setShouldUseFontSmoothing:]):
        (+[WebView _shouldUseFontSmoothing]):
        (+[WebView _setUsesTestModeFocusRingColor:]):
        (+[WebView _usesTestModeFocusRingColor]):
        (-[WebView setAlwaysShowVerticalScroller:]):
        (-[WebView alwaysShowVerticalScroller]):
        (-[WebView setAlwaysShowHorizontalScroller:]):
        (-[WebView setProhibitsMainFrameScrolling:]):
        (-[WebView alwaysShowHorizontalScroller]):
        (-[WebView _setMediaLayer:forPluginView:]):
        (-[WebView _attachScriptDebuggerToAllFrames]):
        (-[WebView _detachScriptDebuggerFromAllFrames]):
        (+[WebView _productivityDocumentMIMETypes]):
        (-[WebView _setFixedLayoutSize:]):
        (-[WebView _synchronizeCustomFixedPositionLayoutRect]):
        (-[WebView _viewGeometryDidChange]):
        (-[WebView _overflowScrollPositionChangedTo:forNode:isUserScroll:]):
        (+[WebView _doNotStartObservingNetworkReachability]):
        (-[WebView _touchEventRegions]):
        (-[WebView textIteratorForRect:]):
        (-[WebView _executeCoreCommandByName:value:]):
        (-[WebView _isUsingAcceleratedCompositing]):
        (-[WebView _isSoftwareRenderable]):
        (-[WebView setTracksRepaints:]):
        (-[WebView isTrackingRepaints]):
        (-[WebView resetTrackedRepaints]):
        (-[WebView trackedRepaintRects]):
        (+[WebView _addOriginAccessWhitelistEntryWithSourceOrigin:destinationProtocol:destinationHost:allowDestinationSubdomains:]):
        (+[WebView _removeOriginAccessWhitelistEntryWithSourceOrigin:destinationProtocol:destinationHost:allowDestinationSubdomains:]):
        (+[WebView _resetOriginAccessWhitelists]):
        (+[WebView _addUserScriptToGroup:world:source:url:whitelist:blacklist:injectionTime:injectedFrames:]):
        (+[WebView _addUserStyleSheetToGroup:world:source:url:whitelist:blacklist:injectedFrames:]):
        (-[WebView allowsNewCSSAnimationsWhileSuspended]):
        (-[WebView setAllowsNewCSSAnimationsWhileSuspended:]):
        (-[WebView cssAnimationsSuspended]):
        (-[WebView setCSSAnimationsSuspended:]):
        (+[WebView _setDomainRelaxationForbidden:forURLScheme:]):
        (+[WebView _registerURLSchemeAsSecure:]):
        (+[WebView _registerURLSchemeAsAllowingDatabaseAccessInPrivateBrowsing:]):
        (-[WebView _scaleWebView:atOrigin:]):
        (-[WebView _setUseFixedLayout:]):
        (-[WebView _useFixedLayout]):
        (-[WebView _fixedLayoutSize]):
        (-[WebView _setPaginationMode:]):
        (-[WebView _paginationMode]):
        (-[WebView _listenForLayoutMilestones:]):
        (-[WebView _layoutMilestones]):
        (-[WebView _setPaginationBehavesLikeColumns:]):
        (-[WebView _paginationBehavesLikeColumns]):
        (-[WebView _setPageLength:]):
        (-[WebView _pageLength]):
        (-[WebView _setGapBetweenPages:]):
        (-[WebView _gapBetweenPages]):
        (-[WebView _setPaginationLineGridEnabled:]):
        (-[WebView _paginationLineGridEnabled]):
        (-[WebView _pageCount]):
        (+[WebView _HTTPPipeliningEnabled]):
        (+[WebView _setHTTPPipeliningEnabled:]):
        (-[WebView shouldRequestCandidates]):
        (-[WebView removePluginInstanceViewsFor:]):
        (+[WebView registerURLSchemeAsLocal:]):
        (-[WebView doWindowDidChangeScreen]):
        (-[WebView _updateScreenScaleFromWindow]):
        (-[WebView goToBackForwardItem:]):
        (-[WebView _setZoomMultiplier:isTextOnly:]):
        (-[WebView setCustomTextEncodingName:]):
        (-[WebView windowScriptObject]):
        (-[WebView setHostWindow:]):
        (-[WebView applicationFlags:]):
        (-[WebView actionMaskForDraggingInfo:]):
        (-[WebView draggingEntered:]):
        (-[WebView draggingUpdated:]):
        (-[WebView draggingExited:]):
        (-[WebView performDragOperation:]):
        (incrementFrame):
        (+[WebView registerViewClass:representationClass:forMIMEType:]):
        (-[WebView moveDragCaretToPoint:]):
        (-[WebView removeDragCaret]):
        (-[WebView mainFrameIconURL]):
        (coreTextCheckingType):
        (textCheckingResultFromNSTextCheckingResult):
        (-[WebView candidateListTouchBarItem:endSelectingCandidateAtIndex:]):
        (-[WebView candidateListTouchBarItem:changedCandidateListVisibility:]):
        (-[WebView shouldClose]):
        (aeDescFromJSValue):
        (-[WebView aeDescByEvaluatingJavaScriptFromString:]):
        (-[WebView editableDOMRangeForPoint:]):
        (-[WebView setSelectedDOMRange:affinity:]):
        (-[WebView selectedDOMRange]):
        (-[WebView selectionAffinity]):
        (-[WebView setEditable:]):
        (-[WebView setTypingStyle:]):
        (-[WebView deleteSelection]):
        (-[WebView applyStyle:]):
        (-[WebView insertDictationPhrases:metadata:]):
        (-[WebView _selectionIsCaret]):
        (-[WebView _selectionIsAll]):
        (-[WebView _simplifyMarkup:endNode:]):
        (+[WebView _setCacheModel:]):
        (-[WebView _searchWithGoogleFromMenu:]):
        (-[WebView _retrieveKeyboardUIModeFromPreferences:]):
        (-[WebView _keyboardUIMode]):
        (-[WebView _mainCoreFrame]):
        (-[WebView _clearCredentials]):
        (-[WebView _flushCompositingChanges]):
        (-[WebView _scheduleLayerFlushForPendingTileCacheRepaint]):
        (-[WebView _hasActiveVideoForControlsInterface]):
        (-[WebView _setUpPlaybackControlsManagerForMediaElement:]):
        (-[WebView handleAcceptedAlternativeText:]):
        (-[WebView _getWebCoreDictationAlternatives:fromTextAlternatives:]):
        (-[WebView _animationControllerForDictionaryLookupPopupInfo:]):
        (-[WebView _setTextIndicator:]):
        (-[WebView _setTextIndicator:withLifetime:]):
        (-[WebView _clearTextIndicatorWithAnimation:]):
        (-[WebView _showDictionaryLookupPopup:]):
        (-[WebView _dictionaryLookupPopoverWillClose:]):
        (-[WebView showFormValidationMessage:withAnchorRect:]):
        (-[WebView textTouchBar]):
        (nsTextAlignmentFromRenderStyle):
        (-[WebView updateTextTouchBar]):
        (-[WebView updateTouchBar]):
        (-[WebView candidateList]):
        (-[WebView _geolocationDidFailWithMessage:]):
        (-[WebView _resetAllGeolocationPermission]):
        (-[WebView _notificationIDForTesting:]):

2019-09-25  Megan Gardner  <megan_gardner@apple.com>

        Update selections after scrolling for iframes and hide selections while iframes and overflow scrolls are scrolling.
        https://bugs.webkit.org/show_bug.cgi?id=202125

        Reviewed by Tim Horton.

        Filling out unused functions needed for new fix.

        * WebCoreSupport/WebEditorClient.h:

2019-09-24  Alex Christensen  <achristensen@webkit.org>

        Remove SchemeRegistry's list of URL schemes allowing local storage in private browsing, which is unused
        https://bugs.webkit.org/show_bug.cgi?id=202181

        Reviewed by Geoffrey Garen.

        * WebView/WebView.mm:
        (+[WebView _registerURLSchemeAsAllowingLocalStorageAccessInPrivateBrowsing:]):

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

        Reduce use of SessionID::defaultSessionID() in WebKit
        https://bugs.webkit.org/show_bug.cgi?id=202080

        Reviewed by Alex Christensen.

        * WebCoreSupport/WebFrameLoaderClient.h:
        * WebCoreSupport/WebFrameLoaderClient.mm:
        (WebFrameLoaderClient::convertMainResourceLoadToDownload):

2019-09-20  Keith Rollin  <krollin@apple.com>

        Remove some support for < iOS 13
        https://bugs.webkit.org/show_bug.cgi?id=202032
        <rdar://problem/55548468>

        Reviewed by Alex Christensen.

        Remove some support for iOS versions less than 13.0.

        Update conditionals that reference __IPHONE_OS_VERSION_MIN_REQUIRED
        and __IPHONE_OS_VERSION_MAX_ALLOWED, assuming that they both have
        values >= 130000. This means that expressions like
        "__IPHONE_OS_VERSION_MIN_REQUIRED < 101300" are always False and
        "__IPHONE_OS_VERSION_MIN_REQUIRED >= 101300" are always True.

        This removal is part of a series of patches effecting the removal of
        dead code for old versions of iOS. This particular pass involves
        changes in which Dan Bates was involved. These changes are isolated
        from other similar changes in order to facilitate the reviewing
        process.

        * WebView/WebHTMLView.mm:
        (-[WebHTMLView _handleEditingKeyEvent:]):

2019-09-18  Jer Noble  <jer.noble@apple.com>

        Add -suspend and -resumeAllMediaPlayback to WebView
        https://bugs.webkit.org/show_bug.cgi?id=201951

        Reviewed by Eric Carlson.

        * WebView/WebView.mm:
        (-[WebView suspendAllMediaPlayback]):
        (-[WebView resumeAllMediaPlayback]):
        * WebView/WebViewPrivate.h:

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

        BlobRegistry no longer needs SessionIDs
        https://bugs.webkit.org/show_bug.cgi?id=201936

        Reviewed by Geoffrey Garen.

        BlobRegistry no longer needs SessionIDs, now that we have a single session per WebProcess.

        * WebCoreSupport/WebPlatformStrategies.mm:

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

        CacheStorageProvider::createCacheStorageConnection() does not need to take in a SessionID
        https://bugs.webkit.org/show_bug.cgi?id=201920

        Reviewed by Geoffrey Garen.

        CacheStorageProvider::createCacheStorageConnection() does not need to take in a SessionID.
        This sessionID is no longer used now that we have a session per WebProcess.

        * WebCoreSupport/WebPlatformStrategies.mm:

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

        Drop FrameLoaderClient::sessionID()
        https://bugs.webkit.org/show_bug.cgi?id=201916

        Reviewed by Geoffrey Garen.

        Drop FrameLoaderClient::sessionID(). The Frame can get the sessionID from its page (Which is
        what the FrameLoaderClient::sessionID() ended up doing) and other call sites at WebKit2 layer
        can get the sessionID from the WebProcess singleton.

        * WebCoreSupport/WebFrameLoaderClient.h:
        * WebCoreSupport/WebFrameLoaderClient.mm:

2019-09-17  Chris Dumez  <cdumez@apple.com>

        Stop calling Page::setSessionID() from WebKit2
        https://bugs.webkit.org/show_bug.cgi?id=201888

        Reviewed by Alex Christensen.

        Stop calling Page::setSessionID() from WebKit2 since Page's sessionID can never change when
        using WebKit2 (We process-swap and create a new Page in a new process when changing data
        store). Instead, we now pass the sessionID ID when constructing the Page, as part of the
        PageConfiguration structure.

        * WebView/WebView.mm:
        (-[WebView _commonInitializationWithFrameName:groupName:]):

2019-09-09  Alex Christensen  <achristensen@webkit.org>

        Disable TLS 1.0 and 1.1 in WebSockets
        https://bugs.webkit.org/show_bug.cgi?id=201573

        Reviewed by Youenn Fablet.

        * WebView/WebView.mm:
        (-[WebView _commonInitializationWithFrameName:groupName:]):

2019-09-06  Alex Christensen  <achristensen@webkit.org>

        When disabling legacy private browsing for testing, change the SessionID back to what it was, not the defaultSessionID
        https://bugs.webkit.org/show_bug.cgi?id=201480

        Reviewed by Youenn Fablet.

        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]):

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

        Add runtime flag for lazy image loading
        https://bugs.webkit.org/show_bug.cgi?id=199794

        Reviewed by Frédéric Wang.

        Remove parts of r248409 that were meant for WK1 since
        lazy image loading is WK2 only.

        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):
        (-[WebPreferences lazyImageLoadingEnabled]): Deleted.
        (-[WebPreferences setLazyImageLoadingEnabled:]): Deleted.
        * WebView/WebPreferencesPrivate.h:
        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]):

2019-09-04  Alex Christensen  <achristensen@webkit.org>

        Remove unused SPI that accesses MemoryCache directly
        https://bugs.webkit.org/show_bug.cgi?id=201468

        Reviewed by Tim Horton.

        * Misc/WebCache.h:
        * Misc/WebCache.mm:
        (+[WebCache addImageToCache:forURL:]): Deleted.
        (+[WebCache addImageToCache:forURL:forFrame:]): Deleted.
        (+[WebCache removeImageFromCacheForURL:]): Deleted.
        (+[WebCache removeImageFromCacheForURL:forFrame:]): Deleted.

2019-08-30  Keith Rollin  <krollin@apple.com>

        Remove AppKitCompatibilityDeclarations.h
        https://bugs.webkit.org/show_bug.cgi?id=201283
        <rdar://problem/54822042>

        Reviewed by Alexey Proskuryakov.

        The two copies of these files -- on in WTF, one in MiniBrowser -- are
        empty and can be removed.

        * Misc/WebNSEventExtras.m:
        * Misc/WebNSViewExtras.m:
        * WebKitPrefix.h:

2019-08-30  Keith Rollin  <krollin@apple.com>

        Remove extra braces
        https://bugs.webkit.org/show_bug.cgi?id=201285

        Reviewed by Alexey Proskuryakov.

        Some code evolved such that there was only a single statement under an
        'if' statement. The braces surrounding the single-line block can now
        be removed.

        * WebView/WebView.mm:
        (-[WebView updateMediaTouchBar]):

2019-08-29  Keith Rollin  <krollin@apple.com>

        Update .xcconfig symbols to reflect the current set of past and future product versions.
        https://bugs.webkit.org/show_bug.cgi?id=200720
        <rdar://problem/54305032>

        Reviewed by Alex Christensen.

        Remove version symbols related to old OS's we no longer support,
        ensure that version symbols are defined for OS's we do support.

        * Configurations/Base.xcconfig:
        * Configurations/DebugRelease.xcconfig:
        * Configurations/Version.xcconfig:

2019-08-29  Keith Rollin  <krollin@apple.com>

        Remove support for macOS < 10.13 (part 3)
        https://bugs.webkit.org/show_bug.cgi?id=201224
        <rdar://problem/54795934>

        Reviewed by Darin Adler.

        Remove symbols in WebKitTargetConditionals.xcconfig related to macOS
        10.13, including WK_MACOS_1013 and WK_MACOS_BEFORE_1013, and suffixes
        like _MACOS_SINCE_1013.

        * Configurations/WebKitTargetConditionals.xcconfig:

2019-08-29  Dean Jackson  <dino@apple.com>

        GenerateTAPI WebKitLegacy.tbd fails on internal iOS Simulator builds
        https://bugs.webkit.org/show_bug.cgi?id=201200

        Reverting r249211 after Dan Bernstein pointed out it will cause
        an error with the public iOS 13 SDK.

        * Misc/WebDownload.h:

2019-08-28  Dean Jackson  <dino@apple.com>

        GenerateTAPI WebKitLegacy.tbd fails on internal iOS Simulator builds
        https://bugs.webkit.org/show_bug.cgi?id=201200

        Reviewed by Simon Fraser.

        We want to include Foundation/NSURLDownload.h if we're on
        a newer iOS.

        * Misc/WebDownload.h:

2019-08-28  Keith Rollin  <krollin@apple.com>

        Remove support for macOS < 10.13 (part 2)
        https://bugs.webkit.org/show_bug.cgi?id=201197
        <rdar://problem/54759985>

        Reviewed by Darin Adler.

        Update conditionals that reference WK_MACOS_1013 and suffixes like
        _MACOS_SINCE_1013, assuming that we're always building on 10.13 or
        later and that these conditionals are always True or False.

        See Bug 200694 for earlier changes in this area.

        * Configurations/FeatureDefines.xcconfig:

2019-08-27  Mark Lam  <mark.lam@apple.com>

        Refactor to use VM& instead of VM* at as many places as possible.
        https://bugs.webkit.org/show_bug.cgi?id=201172

        Reviewed by Yusuke Suzuki.

        * DOM/DOM.mm:
        (+[DOMNode _nodeFromJSWrapper:]):
        * DOM/DOMUtility.mm:
        (createDOMWrapper):
        * Plugins/Hosted/NetscapePluginHostProxy.mm:
        (identifierFromIdentifierRep):
        * Plugins/Hosted/NetscapePluginInstanceProxy.mm:
        (WebKit::NetscapePluginInstanceProxy::enumerate):
        (WebKit::getObjectID):
        (WebKit::NetscapePluginInstanceProxy::addValueToArray):
        (WebKit::NetscapePluginInstanceProxy::demarshalValueFromArray):
        (WebKit::NetscapePluginInstanceProxy::retainLocalObject):
        (WebKit::NetscapePluginInstanceProxy::releaseLocalObject):
        * Plugins/Hosted/ProxyInstance.mm:
        (WebKit::ProxyInstance::stringValue const):
        (WebKit::ProxyInstance::getPropertyNames):
        * WebView/WebFrame.mm:
        (-[WebFrame _stringByEvaluatingJavaScriptFromString:withGlobalObject:inScriptWorld:]):

2019-08-23  Chris Dumez  <cdumez@apple.com>

        [geolocation] Rename interfaces and remove [NoInterfaceObject]
        https://bugs.webkit.org/show_bug.cgi?id=200885

        Reviewed by Alex Christensen.

        * WebCoreSupport/WebGeolocationClient.h:
        * WebCoreSupport/WebGeolocationClient.mm:
        (WebGeolocationClient::lastPosition):
        * WebView/WebGeolocationPosition.mm:
        (-[WebGeolocationPositionInternal initWithCoreGeolocationPosition:]):
        (core):
        (-[WebGeolocationPosition initWithTimestamp:latitude:longitude:accuracy:]):
        (-[WebGeolocationPosition initWithGeolocationPosition:]):
        * WebView/WebGeolocationPositionInternal.h:

2019-08-22  Andy Estes  <aestes@apple.com>

        [watchOS] Disable Content Filtering in the simulator build
        https://bugs.webkit.org/show_bug.cgi?id=201047

        Reviewed by Tim Horton.

        * Configurations/FeatureDefines.xcconfig:

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

        [Mail] Tapping top of message scrolls back to copied text instead of top of the message
        https://bugs.webkit.org/show_bug.cgi?id=200999
        <rdar://problem/54564878>

        Reviewed by Wenson Hsieh.

        * WebCoreSupport/WebEditorClient.h:
        * WebCoreSupport/WebEditorClient.mm:
        (WebEditorClient::shouldAllowSingleClickToChangeSelection const):
        Copy the existing behavior from EventHandler.
        We do not fix the bug in WebKitLegacy for a multitude of reasons, primarily
        because we do not know of any user impact.

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

        Put keygen element behind a runtime flag and disable it by default
        https://bugs.webkit.org/show_bug.cgi?id=200850

        Reviewed by Antti Koivisto.

        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (-[WebPreferences keygenElementEnabled]):
        (-[WebPreferences setKeygenElementEnabled:]):
        * WebView/WebPreferencesPrivate.h:
        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]):

2019-08-19  Sihui Liu  <sihui_liu@apple.com>

        Remove IDB-specific quota
        https://bugs.webkit.org/show_bug.cgi?id=196545
        <rdar://problem/54201783>

        Reviewed by Youenn Fablet.

        * Storage/WebDatabaseManager.mm:
        (-[WebDatabaseManager setIDBPerOriginQuota:]): Deleted.
        * Storage/WebDatabaseManagerPrivate.h:

2019-08-18  Yusuke Suzuki  <ysuzuki@apple.com>

        [WTF] Add makeUnique<T>, which ensures T is fast-allocated, makeUnique / makeUniqueWithoutFastMallocCheck part
        https://bugs.webkit.org/show_bug.cgi?id=200620

        Reviewed by Geoffrey Garen.

        * History/WebHistory.mm:
        (-[WebHistoryPrivate init]):
        * History/WebHistoryItem.mm:
        (-[WebHistoryItem initFromDictionaryRepresentation:]):
        * Plugins/Hosted/NetscapePluginHostProxy.mm:
        (WKPCGetScriptableNPObjectReply):
        (WKPCBooleanReply):
        (WKPCBooleanAndDataReply):
        (WKPCInstantiatePluginReply):
        * Plugins/Hosted/ProxyInstance.mm:
        (WebKit::ProxyInstance::methodNamed):
        (WebKit::ProxyInstance::fieldNamed):
        * Plugins/Hosted/WebHostedNetscapePluginView.mm:
        (-[WebHostedNetscapePluginView createPlugin]):
        * Plugins/WebNetscapePluginEventHandler.mm:
        (WebNetscapePluginEventHandler::create):
        * Plugins/WebNetscapePluginView.mm:
        (-[WebNetscapePluginView scheduleTimerWithInterval:repeat:timerFunc:]):
        * Storage/WebDatabaseManagerClient.mm:
        (DidModifyOriginData::dispatchToMainThread):
        * WebCoreSupport/WebFrameLoaderClient.mm:
        (addRedirectURL):
        (WebFrameLoaderClient::savePlatformDataToCachedFrame):
        * WebCoreSupport/WebInspectorClient.mm:
        (WebInspectorClient::openLocalFrontend):
        * WebView/WebDeviceOrientationProviderMock.mm:
        * WebView/WebFrame.mm:
        (-[WebFrame _attachScriptDebugger]):
        * WebView/WebMediaPlaybackTargetPicker.mm:
        (WebMediaPlaybackTargetPicker::create):
        * WebView/WebTextIterator.mm:
        (-[WebTextIterator initWithRange:]):
        * WebView/WebView.mm:
        (-[WebView _injectOutlookQuirksScript]):
        (-[WebView _commonInitializationWithFrameName:groupName:]):
        (+[WebView _addUserScriptToGroup:world:source:url:whitelist:blacklist:injectionTime:injectedFrames:]):
        (+[WebView _addUserStyleSheetToGroup:world:source:url:whitelist:blacklist:injectedFrames:]):
        (-[WebView _selectionServiceController]):
        (-[WebView _setTextIndicator:withLifetime:]):
        * WebView/WebViewData.mm:
        (WebViewLayerFlushScheduler::WebViewLayerFlushScheduler):
        (-[WebViewPrivate init]):

2019-08-17  Darin Adler  <darin@apple.com>

        Tidy up checks to see if a character is in the Latin-1 range by using isLatin1 consistently
        https://bugs.webkit.org/show_bug.cgi?id=200861

        Reviewed by Ross Kirsling.

        * Misc/WebKitNSStringExtras.mm:
        (canUseFastRenderer): Use isLatin1.

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

        LocalStorageDatabaseTracker does not need to subclass ThreadSafeRefCounted
        https://bugs.webkit.org/show_bug.cgi?id=200825

        Reviewed by Alex Christensen.

        * Misc/WebKitVersionChecks.h:
        * Storage/WebStorageManager.mm:
        (WebKitInitializeStorageIfNecessary):

2019-08-16  Ryosuke Niwa  <rniwa@webkit.org>

        Split tabIndex computation for DOM and the rest of WebCore
        https://bugs.webkit.org/show_bug.cgi?id=200806

        Reviewed by Chris Dumez.

        * DOM/DOMHTMLElement.mm:
        (-[DOMHTMLElement tabIndex]):
        (-[DOMHTMLElement setTabIndex:]):

2019-08-15  Yusuke Suzuki  <ysuzuki@apple.com>

        [WTF] Add makeUnique<T>, which ensures T is fast-allocated, WTF_MAKE_FAST_ALLOCATED annotation part
        https://bugs.webkit.org/show_bug.cgi?id=200620

        Reviewed by Geoffrey Garen.

        * Plugins/Hosted/NetscapePluginInstanceProxy.h:
        * Plugins/Hosted/WebHostedNetscapePluginView.mm:
        * Plugins/WebNetscapePluginEventHandlerCocoa.h:
        * Storage/WebDatabaseManagerClient.mm:
        * WebCoreSupport/WebAlternativeTextClient.h:
        * WebCoreSupport/WebCachedFramePlatformData.h:
        * WebCoreSupport/WebChromeClient.h:
        * WebCoreSupport/WebContextMenuClient.h:
        * WebCoreSupport/WebDragClient.h:
        * WebCoreSupport/WebEditorClient.h:
        * WebCoreSupport/WebGeolocationClient.h:
        * WebCoreSupport/WebInspectorClient.h:
        * WebCoreSupport/WebNotificationClient.h:
        * WebCoreSupport/WebSelectionServiceController.h:
        * WebView/WebMediaPlaybackTargetPicker.h:

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

        Yellow Lookup highlight gets stuck over Mail messages
        https://bugs.webkit.org/show_bug.cgi?id=200778
        <rdar://problem/53868514>

        Reviewed by Wenson Hsieh.

        * WebView/WebView.mm:
        (-[WebView _showDictionaryLookupPopup:]):
        Add a dismissal callback so that when Reveal hides the panel, it also
        dismisses the yellow indicator. This matches the behavior in modern WebKit.

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

        Some improvements on web storage
        https://bugs.webkit.org/show_bug.cgi?id=200373

        Reviewed by Geoffrey Garen.

        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]): notify storageNamespaceProvider about session change.

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

        Always create a Document with a valid SessionID
        https://bugs.webkit.org/show_bug.cgi?id=200727

        Reviewed by Alex Christensen.

        Implement WebKit1 sessionID getter like done for WebKit2.
        Either the loader client has a page in which case the page session ID is used
        or the client has no page, in which case the default session ID is used.
        This is the same behavior as CachedResourceLoader.

        * WebCoreSupport/WebFrameLoaderClient.mm:
        (WebFrameLoaderClient::sessionID const):

2019-08-15  Simon Fraser  <simon.fraser@apple.com>

        Use ObjectIdentifier<FrameIdentifierType> for frameIDs
        https://bugs.webkit.org/show_bug.cgi?id=199986

        Reviewed by Ryosuke Niwa.

        Use the strongly-typed FrameIdentifier instead of uint64_t as frame identifiers everywhere.

        * WebCoreSupport/WebFrameLoaderClient.h:
        * WebCoreSupport/WebFrameLoaderClient.mm:
        (WebFrameLoaderClient::frameID const):

2019-08-14  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r248526.

        Caused two IndexedDB perf tests to fail

        Reverted changeset:

        "Remove IDB-specific quota"
        https://bugs.webkit.org/show_bug.cgi?id=196545
        https://trac.webkit.org/changeset/248526

2019-08-14  Keith Rollin  <krollin@apple.com>

        Remove support for macOS < 10.13
        https://bugs.webkit.org/show_bug.cgi?id=200694
        <rdar://problem/54278851>

        Reviewed by Youenn Fablet.

        Update conditionals that reference __MAC_OS_X_VERSION_MIN_REQUIRED and
        __MAC_OS_X_VERSION_MAX_ALLOWED, assuming that they both have values >=
        101300. This means that expressions like
        "__MAC_OS_X_VERSION_MIN_REQUIRED < 101300" are always False and
        "__MAC_OS_X_VERSION_MIN_REQUIRED >= 101300" are always True.

        * WebCoreSupport/WebEditorClient.mm:
        * WebView/PDFViewSPI.h:
        * WebView/WebHTMLView.mm:
        (-[WebHTMLView _recursive:displayRectIgnoringOpacity:inContext:stopAtLayerBackedViews:_recursive:displayRectIgnoringOpacity:inContext:shouldChangeFontReferenceColor:stopAtLayerBackedViews:_recursive:displayRectIgnoringOpacity:inContext:shouldChangeFontReferenceColor:]):
        (-[WebHTMLView _recursive:displayRectIgnoringOpacity:inGraphicsContext:shouldChangeFontReferenceColor:]):
        (-[WebHTMLView _recursive:displayRectIgnoringOpacity:inContext:stopAtLayerBackedViews:_recursive:displayRectIgnoringOpacity:inContext:shouldChangeFontReferenceColor:stopAtLayerBackedViews:_recursive:displayRectIgnoringOpacity:inContext:shouldChangeFontReferenceColor:_recursive:displayRectIgnoringOpacity:inContext:topView:]): Deleted.
        (-[WebHTMLView _recursive:displayRectIgnoringOpacity:inGraphicsContext:shouldChangeFontReferenceColor:_recursive:displayRectIgnoringOpacity:inGraphicsContext:CGContext:topView:shouldChangeFontReferenceColor:]): Deleted.
        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):
        * WebView/WebView.mm:
        (-[WebView performDragOperation:]):
        (LayerFlushController::flushLayers):
        (-[WebView updateMediaTouchBar]):
        * WebView/WebViewData.h:

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

        ThreadableBlobRegistry::blobSize should take a SessionID as parameter
        https://bugs.webkit.org/show_bug.cgi?id=200671

        Reviewed by ALex Christensen.

        * WebCoreSupport/WebPlatformStrategies.mm:

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

        Blob registries should be keyed by session IDs
        https://bugs.webkit.org/show_bug.cgi?id=200567

        Reviewed by Alex Christensen.

        * WebCoreSupport/WebPlatformStrategies.mm:
        (WebPlatformStrategies::createBlobRegistry):
        Ignore sessionID parameter for WK1.

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

        Add threading assertions to RefCounted
        https://bugs.webkit.org/show_bug.cgi?id=200507

        Reviewed by Ryosuke Niwa.

        * WebView/WebView.mm:
        (+[WebView initialize]):
        Enable new RefCounted threading assertions for WebKitLegacy.

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

        Unreviewed, rolling out r248525.

        Revert new threading assertions while I work on fixing the
        issues they exposed

        Reverted changeset:

        "Add threading assertions to RefCounted"
        https://bugs.webkit.org/show_bug.cgi?id=200507
        https://trac.webkit.org/changeset/248525

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

        Remove IDB-specific quota
        https://bugs.webkit.org/show_bug.cgi?id=196545

        Reviewed by Alex Christensen.

        * Storage/WebDatabaseManager.mm:
        (-[WebDatabaseManager setIDBPerOriginQuota:]): Deleted.
        * Storage/WebDatabaseManagerPrivate.h:

2019-08-11  Chris Dumez  <cdumez@apple.com>

        Add threading assertions to RefCounted
        https://bugs.webkit.org/show_bug.cgi?id=200507

        Reviewed by Ryosuke Niwa.

        * WebView/WebView.mm:
        (+[WebView initialize]):
        Enable new RefCounted threading assertions for WebKitLegacy.

2019-08-10  Tim Horton  <timothy_horton@apple.com>

        Remove some more unused 32-bit code
        https://bugs.webkit.org/show_bug.cgi?id=200607

        Reviewed by Alexey Proskuryakov.

        * Configurations/WebKitLegacy.xcconfig:
        * Misc/WebSharingServicePickerController.mm:
        (-[WebSharingServicePickerController initWithItems:includeEditorServices:client:style:]):
        (-[WebSharingServicePickerController initWithSharingServicePicker:client:]):
        (-[WebSharingServicePickerController sharingService:didShareItems:]):
        * Plugins/WebNetscapePluginEventHandler.mm:
        * Plugins/WebNetscapePluginEventHandlerCarbon.h: Removed.
        * Plugins/WebNetscapePluginEventHandlerCarbon.mm: Removed.
        * Plugins/WebNetscapePluginEventHandlerCocoa.h:
        (WebNetscapePluginEventHandlerCocoa::installKeyEventHandler): Deleted.
        (WebNetscapePluginEventHandlerCocoa::removeKeyEventHandler): Deleted.
        * Plugins/WebNetscapePluginEventHandlerCocoa.mm:
        (WebNetscapePluginEventHandlerCocoa::WebNetscapePluginEventHandlerCocoa):
        (WebNetscapePluginEventHandlerCocoa::keyDown):
        (WebNetscapePluginEventHandlerCocoa::focusChanged):
        (WebNetscapePluginEventHandlerCocoa::installKeyEventHandler): Deleted.
        (WebNetscapePluginEventHandlerCocoa::removeKeyEventHandler): Deleted.
        (WebNetscapePluginEventHandlerCocoa::TSMEventHandler): Deleted.
        (WebNetscapePluginEventHandlerCocoa::handleTSMEvent): Deleted.
        * WebCoreSupport/WebContextMenuClient.mm:
        (WebContextMenuClient::contextMenuForEvent):
        * WebView/WebHTMLView.mm:
        (-[WebHTMLView _adjustedBottomOfPageWithTop:bottom:limit:]):
        (-[WebHTMLView pressureChangeWithEvent:]):
        * WebView/WebView.mm:
        (LayerFlushController::flushLayers):

2019-08-08  Rob Buis  <rbuis@igalia.com>

        Add runtime flag for lazy image loading
        https://bugs.webkit.org/show_bug.cgi?id=199794

        Reviewed by Darin Adler.

        Set lazyImageLoading runtime flag if preference is set.

        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):
        (-[WebPreferences lazyImageLoadingEnabled]):
        (-[WebPreferences setLazyImageLoadingEnabled:]):
        * WebView/WebPreferencesPrivate.h:
        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]):

2019-08-07  Priyanka Agarwal  <pagarwal999@apple.com>

        Allow clients to toggle a text input field between being viewable and having characters hidden while maintaining 
        a yellow auto-filled appearance
        https://bugs.webkit.org/show_bug.cgi?id=200037
        rdar://problem/51900961

        Reviewed by Daniel Bates.

        * DOM/WebDOMOperations.mm:
        (-[DOMHTMLInputElement _isAutoFilledAndViewable]):
        (-[DOMHTMLInputElement _setAutoFilledAndViewable:]):
        * DOM/WebDOMOperationsPrivate.h:

2019-08-02  Keith Rollin  <krollin@apple.com>

        Consistently use Obj-C boolean literals
        https://bugs.webkit.org/show_bug.cgi?id=200405
        <rdar://problem/53880043>

        Reviewed by Simon Fraser, Joseph Pecoraro.

        There are places where we use equivalent but different expressions for
        Obj-C boolean objects. For example, we use both [NSNumber
        numberWithBool:YES] and @YES. There are places where both are used in
        the same function, such as -[WebPreferences initialize]. The boolean
        literal is in greater use and is more succinct, so standardize on
        that. Also, change @(YES/NO) to @YES/NO.

        * History/WebHistoryItem.mm:
        * WebView/WebFrame.mm:
        (-[WebFrame _cacheabilityDictionary]):
        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):

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

        Move FormData zip file generation to NetworkProcess and enable it for all WebKit clients for uploading directories
        https://bugs.webkit.org/show_bug.cgi?id=200102
        <rdar://problem/53275114>

        Reviewed by Darin Adler.

        * DefaultDelegates/WebDefaultUIDelegate.mm:
        (-[WebDefaultUIDelegate webView:shouldReplaceUploadFile:usingGeneratedFilename:]): Deleted.
        (-[WebDefaultUIDelegate webView:generateReplacementFile:]): Deleted.
        * WebCoreSupport/WebChromeClient.h:
        * WebCoreSupport/WebChromeClient.mm:
        (WebChromeClient::shouldReplaceWithGeneratedFileForUpload): Deleted.
        (WebChromeClient::generateReplacementFile): Deleted.
        * WebView/WebUIDelegatePrivate.h:

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

        Add helper for ignoring deprecated implementation warnings
        https://bugs.webkit.org/show_bug.cgi?id=200135

        Reviewed by Wenson Hsieh.

        Add ALLOW_DEPRECATED_IMPLEMENTATIONS_BEGIN/END macro which
        is IGNORE_WARNINGS_BEGIN("deprecated-implementations")

        * Misc/WebDownload.mm:
        (-[WebDownload initWithRequest:delegate:]):
        * Misc/WebIconDatabase.mm:
        * Plugins/WebBaseNetscapePluginView.mm:
        (-[WebBaseNetscapePluginView ALLOW_DEPRECATED_IMPLEMENTATIONS_END]):
        (-[WebBaseNetscapePluginView IGNORE_WARNINGS_END]): Deleted.
        * WebView/WebDynamicScrollBarsView.mm:
        (-[WebDynamicScrollBarsView ALLOW_DEPRECATED_IMPLEMENTATIONS_END]):
        (-[WebDynamicScrollBarsView IGNORE_WARNINGS_END]): Deleted.
        * WebView/WebHTMLView.mm:
        (-[WebHTMLView draggingSourceOperationMaskForLocal:]):
        (-[WebHTMLView draggedImage:endedAt:operation:]):
        (-[WebHTMLView namesOfPromisedFilesDroppedAtDestination:]):
        (-[WebHTMLView accessibilityAttributeValue:]):
        (-[WebHTMLView ALLOW_DEPRECATED_IMPLEMENTATIONS_END]):
        (-[WebHTMLView characterIndexForPoint:]):
        (-[WebHTMLView firstRectForCharacterRange:]):
        (-[WebHTMLView attributedSubstringFromRange:]):
        (-[WebHTMLView setMarkedText:selectedRange:]):
        (-[WebHTMLView doCommandBySelector:]):
        (-[WebHTMLView insertText:]):
        (-[WebHTMLView IGNORE_WARNINGS_END]): Deleted.

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

        [macOS 10.15] Web process crashes when attempting to show the font panel via Font > Show Fonts
        https://bugs.webkit.org/show_bug.cgi?id=200021
        <rdar://problem/53301325>

        Reviewed by Ryosuke Niwa.

        Implement a new editing client hook. In WebKit1, this always returns true on macOS and false on iOS.

        * WebCoreSupport/WebEditorClient.h:

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

        Fix WebView iframe rendering in macOS Catalina
        https://bugs.webkit.org/show_bug.cgi?id=200022
        rdar://problem/49102040

        Reviewed by Darin Adler.

        Adapt to internal NSView method renames in Catalina.

        * WebView/WebHTMLView.mm:
        (-[WebHTMLView _recursive:displayRectIgnoringOpacity:inContext:stopAtLayerBackedViews:_recursive:displayRectIgnoringOpacity:inContext:shouldChangeFontReferenceColor:stopAtLayerBackedViews:_recursive:displayRectIgnoringOpacity:inContext:shouldChangeFontReferenceColor:_recursive:displayRectIgnoringOpacity:inContext:topView:]):
        (-[WebHTMLView _recursive:displayRectIgnoringOpacity:inContext:shouldChangeFontReferenceColor:stopAtLayerBackedViews:_recursive:displayRectIgnoringOpacity:inContext:shouldChangeFontReferenceColor:_recursive:displayRectIgnoringOpacity:inContext:topView:]): Deleted.

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

        Enable CSSOMViewScrollingAPIEnabled in WebKit1
        https://bugs.webkit.org/show_bug.cgi?id=200008
        rdar://problem/53409062

        Reviewed by Tim Horton.

        Default WebKitCSSOMViewScrollingAPIEnabledPreferenceKey to YES, so that 
        CSSOMViewScrollingAPIEnabled is on for both WebKit1 and WebKit2.

        DumpRenderTree already turns this preference on, so this change is not
        detected by tests.

        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):

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

        Disable MediaRecorder for legacy WebKit
        https://bugs.webkit.org/show_bug.cgi?id=200001
        <rdar://problem/53400030>

        Reviewed by Eric Carlson.

        Disable MediaRecorder by default in legacy WebKit.
        Add SPI to set/get this preference.

        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):
        (-[WebPreferences _mediaRecorderEnabled]):
        (-[WebPreferences _setMediaRecorderEnabled:]):
        * WebView/WebPreferencesPrivate.h:

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

        Unify builds in WebKitLegacy/mac/DOM
        https://bugs.webkit.org/show_bug.cgi?id=199771

        Reviewed by Geoffrey Garen.

        * DOM/DOMAbstractView.mm:
        * DOM/DOMAttr.mm:
        * DOM/DOMBlob.mm:
        * DOM/DOMCDATASection.mm:
        * DOM/DOMCSSFontFaceRule.mm:
        * DOM/DOMCSSImportRule.mm:
        * DOM/DOMCSSMediaRule.mm:
        * DOM/DOMCSSPageRule.mm:
        * DOM/DOMCSSPrimitiveValue.mm:
        * DOM/DOMCSSRule.mm:
        * DOM/DOMCSSRuleList.mm:
        * DOM/DOMCSSStyleDeclaration.mm:
        * DOM/DOMCSSStyleRule.mm:
        * DOM/DOMCSSStyleSheet.mm:
        * DOM/DOMCSSUnknownRule.mm:
        * DOM/DOMCSSValue.mm:
        * DOM/DOMCSSValueList.mm:
        * DOM/DOMCharacterData.mm:
        * DOM/DOMComment.mm:
        * DOM/DOMCounter.mm:
        * DOM/DOMDocument.mm:
        * DOM/DOMDocumentFragment.mm:
        * DOM/DOMDocumentType.mm:
        * DOM/DOMEvent.mm:
        * DOM/DOMFile.mm:
        * DOM/DOMFileList.mm:
        * DOM/DOMHTMLAnchorElement.mm:
        * DOM/DOMHTMLAppletElement.mm:
        * DOM/DOMHTMLAreaElement.mm:
        * DOM/DOMHTMLBRElement.mm:
        * DOM/DOMHTMLBaseElement.mm:
        * DOM/DOMHTMLBaseFontElement.mm:
        * DOM/DOMHTMLBodyElement.mm:
        * DOM/DOMHTMLButtonElement.mm:
        * DOM/DOMHTMLCanvasElement.mm:
        * DOM/DOMHTMLCollection.mm:
        * DOM/DOMHTMLDListElement.mm:
        * DOM/DOMHTMLDirectoryElement.mm:
        * DOM/DOMHTMLDivElement.mm:
        * DOM/DOMHTMLDocument.mm:
        * DOM/DOMHTMLElement.mm:
        * DOM/DOMHTMLEmbedElement.mm:
        * DOM/DOMHTMLFieldSetElement.mm:
        * DOM/DOMHTMLFontElement.mm:
        * DOM/DOMHTMLFormElement.mm:
        * DOM/DOMHTMLFrameElement.mm:
        * DOM/DOMHTMLFrameSetElement.mm:
        * DOM/DOMHTMLHRElement.mm:
        * DOM/DOMHTMLHeadElement.mm:
        * DOM/DOMHTMLHeadingElement.mm:
        * DOM/DOMHTMLHtmlElement.mm:
        * DOM/DOMHTMLIFrameElement.mm:
        * DOM/DOMHTMLImageElement.mm:
        * DOM/DOMHTMLInputElement.mm:
        * DOM/DOMHTMLLIElement.mm:
        * DOM/DOMHTMLLabelElement.mm:
        * DOM/DOMHTMLLegendElement.mm:
        * DOM/DOMHTMLLinkElement.mm:
        * DOM/DOMHTMLMapElement.mm:
        * DOM/DOMHTMLMarqueeElement.mm:
        * DOM/DOMHTMLMediaElement.mm:
        * DOM/DOMHTMLMenuElement.mm:
        * DOM/DOMHTMLMetaElement.mm:
        * DOM/DOMHTMLModElement.mm:
        * DOM/DOMHTMLOListElement.mm:
        * DOM/DOMHTMLObjectElement.mm:
        * DOM/DOMHTMLOptGroupElement.mm:
        * DOM/DOMHTMLOptionElement.mm:
        * DOM/DOMHTMLOptionsCollection.mm:
        * DOM/DOMHTMLParagraphElement.mm:
        * DOM/DOMHTMLParamElement.mm:
        * DOM/DOMHTMLPreElement.mm:
        * DOM/DOMHTMLQuoteElement.mm:
        * DOM/DOMHTMLScriptElement.mm:
        * DOM/DOMHTMLSelectElement.mm:
        * DOM/DOMHTMLStyleElement.mm:
        * DOM/DOMHTMLTableCaptionElement.mm:
        * DOM/DOMHTMLTableCellElement.mm:
        * DOM/DOMHTMLTableColElement.mm:
        * DOM/DOMHTMLTableElement.mm:
        * DOM/DOMHTMLTableRowElement.mm:
        * DOM/DOMHTMLTableSectionElement.mm:
        * DOM/DOMHTMLTitleElement.mm:
        * DOM/DOMHTMLUListElement.mm:
        * DOM/DOMHTMLVideoElement.mm:
        * DOM/DOMKeyboardEvent.mm:
        * DOM/DOMMediaError.mm:
        * DOM/DOMMediaList.mm:
        * DOM/DOMMouseEvent.mm:
        * DOM/DOMMutationEvent.mm:
        * DOM/DOMNamedNodeMap.mm:
        * DOM/DOMNodeIterator.mm:
        * DOM/DOMNodeList.mm:
        * DOM/DOMOverflowEvent.mm:
        * DOM/DOMProcessingInstruction.mm:
        * DOM/DOMProgressEvent.mm:
        * DOM/DOMRGBColor.mm:
        * DOM/DOMRange.mm:
        * DOM/DOMRect.mm:
        * DOM/DOMStyleSheet.mm:
        * DOM/DOMStyleSheetList.mm:
        * DOM/DOMText.mm:
        * DOM/DOMTextEvent.mm:
        * DOM/DOMTimeRanges.mm:
        * DOM/DOMTokenList.mm:
        * DOM/DOMTreeWalker.mm:
        * DOM/DOMUIEvent.mm:
        * DOM/DOMWheelEvent.mm:
        * DOM/DOMXPath.mm:
        * DOM/DOMXPathExpression.mm:
        * DOM/DOMXPathResult.mm:

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

        Disable Pointer Events prior to watchOS 6
        https://bugs.webkit.org/show_bug.cgi?id=199890
        <rdar://problem/53206113>

        Reviewed by Dean Jackson.

        * Configurations/FeatureDefines.xcconfig:

2019-07-17  Zalan Bujtas  <zalan@apple.com>

        Unable to tap buttons at top of Wells Fargo app’s Payees screen
        https://bugs.webkit.org/show_bug.cgi?id=199846
        <rdar://problem/48112220>

        Reviewed by Simon Fraser.

        * WebView/WebFrame.mm:
        (-[WebFrame approximateNodeAtViewportLocation:]):

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

        Add a runtime-disabled dialog element skeleton
        https://bugs.webkit.org/show_bug.cgi?id=199839

        Reviewed by Ryosuke Niwa.

        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):
        (-[WebPreferences dialogElementEnabled]):
        (-[WebPreferences setDialogElementEnabled:]):
        * WebView/WebPreferencesPrivate.h:
        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]):
        Add SPI to enable the dialog element for tests.

2019-07-15  Dean Jackson  <dino@apple.com>

        [WebGL] Remove software rendering and simplify context creation on macOS
        https://bugs.webkit.org/show_bug.cgi?id=199789

        Reviewed by Sam Weinig.

        Remove force software WebGL setting.

        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):
        (-[WebPreferences forceSoftwareWebGLRendering]): Deleted.
        (-[WebPreferences setForceSoftwareWebGLRendering:]): Deleted.
        * WebView/WebPreferencesPrivate.h:
        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]):

2019-07-13  Zalan Bujtas  <zalan@apple.com>

        Cannot bring up custom media controls at all on v.youku.com
        https://bugs.webkit.org/show_bug.cgi?id=199699
        <rdar://problem/51835327>

        Reviewed by Simon Fraser.

        * WebCoreSupport/WebFrameLoaderClient.mm:
        (WebFrameLoaderClient::actionDictionary const):
        * WebView/WebFrame.mm:
        (-[WebFrame elementAtPoint:]):
        * WebView/WebHTMLView.mm:
        (-[WebHTMLView elementAtPoint:allowShadowContent:]):
        * WebView/WebImmediateActionController.mm:
        (-[WebImmediateActionController performHitTestAtPoint:]):

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

        Begin unifying WebKitLegacy sources
        https://bugs.webkit.org/show_bug.cgi?id=199730

        Reviewed by Keith Miller.

        * Configurations/WebKitLegacy.xcconfig:

2019-07-11  Pablo Saavedra  <psaavedra@igalia.com>

        [WPE][GTK] Build failure with ENABLE_ACCESSIBILITY=OFF
        https://bugs.webkit.org/show_bug.cgi?id=199625

        Added ENABLE(ACCESSIBILITY) and replaced HAVE(ACCESSIBILITY)
        with ENABLE(ACCESSIBILITY) in the code.

        Additionally, the TestRunner code generator now honors the
        Conditional IDL format.

        Reviewed by Konstantin Tokarev.

        * WebView/WebFrame.mm:
        (-[WebFrame setAccessibleName:]):
        (-[WebFrame enhancedAccessibilityEnabled]):
        (-[WebFrame setEnhancedAccessibility:]):
        (-[WebFrame accessibilityRoot]):

2019-07-08  Antoine Quint  <graouts@apple.com>

        [Pointer Events] Enable only on the most recent version of the supported iOS family
        https://bugs.webkit.org/show_bug.cgi?id=199562
        <rdar://problem/52766511>

        Reviewed by Dean Jackson.

        * Configurations/FeatureDefines.xcconfig:

2019-07-03  Sam Weinig  <weinig@apple.com>

        Adopt simple structured bindings in more places
        https://bugs.webkit.org/show_bug.cgi?id=199247

        Reviewed by Alex Christensen.

        Replaces simple uses of std::tie() with structured bindings. Does not touch
        uses of std::tie() that are not initial declarations, use std::ignore or in
        case where the binding is captured by a lambda, as structured bindings don't
        work for those cases yet.

        * WebView/WebImmediateActionController.mm:
        (-[WebImmediateActionController _animationControllerForText]):

2019-07-02  Devin Rousso  <drousso@apple.com>

        Web Inspector: Debug: "Reset Web Inspector" should also clear the saved window size and attachment side
        https://bugs.webkit.org/show_bug.cgi?id=198956

        Reviewed by Matt Baker.

        * WebCoreSupport/WebInspectorClient.h:
        * WebCoreSupport/WebInspectorClient.mm:
        (WebInspectorFrontendClient::resetWindowState): Added.

2019-06-28  Timothy Hatcher  <timothy@apple.com>

        Rename effectiveAppearanceIsInactive and useInactiveAppearance to better match UIUserInterfaceLevel.
        https://bugs.webkit.org/show_bug.cgi?id=199336
        rdar://problem/52348938

        Reviewed by Tim Horton.

        * WebView/WebView.mm:
        (-[WebView _commonInitializationWithFrameName:groupName:]):
        (-[WebView _setUseDarkAppearance:]):
        (-[WebView _useElevatedUserInterfaceLevel]):
        (-[WebView _setUseElevatedUserInterfaceLevel:]):
        (-[WebView _setUseDarkAppearance:useInactiveAppearance:]):
        (-[WebView _setUseDarkAppearance:useElevatedUserInterfaceLevel:]):
        (-[WebView _effectiveUserInterfaceLevelIsElevated]):
        (-[WebView viewDidChangeEffectiveAppearance]):
        (-[WebView _useInactiveAppearance]): Deleted.
        (-[WebView _setUseInactiveAppearance:]): Deleted.
        (-[WebView _effectiveAppearanceIsInactive]): Deleted.
        * WebView/WebViewPrivate.h:

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

        Remove traces of ENABLE_ICONDATABASE remaining after its removal in 219733
        https://bugs.webkit.org/show_bug.cgi?id=199317

        Reviewed by Michael Catanzaro.

        While IconDatabase and all code using it was removed,
        ENABLE_ICONDATABASE still exists as build option and C++ macro.

        * Configurations/FeatureDefines.xcconfig:
        * WebView/WebView.mm:
        (-[WebView _cacheFrameLoadDelegateImplementations]): Use PLATFORM(MAC)
        guard instead of ENABLE_ICONDATABASE, because ENABLE_ICONDATABASE was
        enabled for macOS only.

2019-06-27  Timothy Hatcher  <timothy@apple.com>

        Move WebKitLegacy off of a couple AppKit ivars.
        https://bugs.webkit.org/show_bug.cgi?id=199279
        rdar://problem/34983438

        Reviewed by Tim Horton.

        * WebView/WebHTMLView.mm:
        (-[NSView _setSubviewsIvar:]): Added. Implement on older systems.
        (-[NSView _subviewsIvar]): Added. Ditto.
        (needsCursorRectsSupportAtPoint): Use _borderView property.
        (-[WebHTMLView _setAsideSubviews]): Use _subviewsIvar property.
        (-[NSWindow _web_borderView]): Deleted.

2019-06-27  Beth Dakin  <bdakin@apple.com>

        Upstream use of MACCATALYST
        https://bugs.webkit.org/show_bug.cgi?id=199245
        rdar://problem/51687723

        Reviewed by Tim Horton.

        * Configurations/Base.xcconfig:
        * Configurations/FeatureDefines.xcconfig:
        * Configurations/SDKVariant.xcconfig:

2019-06-27  Saam Barati  <sbarati@apple.com>

        Make WEBGPU enabled only on Mojave and later.

        Rubber-stamped by Myles C. Maxfield.

        * Configurations/FeatureDefines.xcconfig:

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

        Rename AtomicString to AtomString
        https://bugs.webkit.org/show_bug.cgi?id=195276

        Reviewed by Michael Catanzaro.

        * many files: Let do-webcore-rename do the renaming.

2019-06-14  Megan Gardner  <megan_gardner@apple.com>

        Move Synthetic Editing Commands to behind an experimental feature flag
        https://bugs.webkit.org/show_bug.cgi?id=198842
        <rdar://problem/50594700>

        Reviewed by Simon Fraser.

        Add plumbing for synthetic editing command feature flag.

        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):
        (-[WebPreferences syntheticEditingCommandsEnabled]):
        (-[WebPreferences setSyntheticEditingCommandsEnabled:]):
        * WebView/WebPreferencesPrivate.h:
        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]):

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

        REGRESSION (r246103) [ Mojave+ WK1 ] Layout Test scrollbars/scrollbar-iframe-click-does-not-blur-content.html is timing out
        https://bugs.webkit.org/show_bug.cgi?id=198800
        <rdar://problem/51679634>

        Reviewed by Tim Horton.

        Expose a private method that we need to use from DumpRenderTree.

        * WebView/WebHTMLView.mm:
        (-[WebHTMLView _hitViewForEvent:]):
        * WebView/WebHTMLViewPrivate.h:

2019-06-10  Sam Weinig  <weinig@apple.com>

        Remove Dashboard support
        https://bugs.webkit.org/show_bug.cgi?id=198615

        Reviewed by Ryosuke Niwa.

        Removes implementation, but keeps privatly exported interfaces and enums
        around until we can confirm there are no more users of them. 

        * Configurations/FeatureDefines.xcconfig:
        * Plugins/WebBaseNetscapePluginView.mm:
        (-[WebBaseNetscapePluginView initWithFrame:pluginPackage:URL:baseURL:MIMEType:attributeKeys:attributeValues:loadManually:element:]):
        * WebCoreSupport/WebChromeClient.h:
        * WebCoreSupport/WebChromeClient.mm:
        (WebChromeClient::annotatedRegionsChanged): Deleted.
        * WebView/WebClipView.mm:
        (-[WebClipView _focusRingVisibleRect]):
        (-[WebClipView scrollWheel:]):
        * WebView/WebDashboardRegion.h:
        * WebView/WebDashboardRegion.mm:
        * WebView/WebHTMLView.mm:
        (-[WebHTMLView _updateMouseoverWithEvent:]):
        (-[WebHTMLView acceptsFirstMouse:]):
        (-[WebHTMLView setDataSource:]):
        * WebView/WebPreferences.mm:
        (cacheModelForMainBundle):
        * WebView/WebUIDelegatePrivate.h:
        * WebView/WebView.mm:
        (-[WebView _needsPreHTML5ParserQuirks]):
        (-[WebView _preferencesChanged:]):
        (-[WebView _addScrollerDashboardRegions:]):
        (-[WebView _dashboardRegions]):
        (-[WebView _setDashboardBehavior:to:]):
        (-[WebView _dashboardBehavior:]):
        (-[WebView _addControlRect:clip:fromView:toDashboardRegions:]): Deleted.
        (-[WebView _addScrollerDashboardRegionsForFrameView:dashboardRegions:]): Deleted.
        (-[WebView _addScrollerDashboardRegions:from:]): Deleted.
        * WebView/WebViewData.h:
        * WebView/WebViewData.mm:
        (-[WebViewPrivate init]):
        * WebView/WebViewPrivate.h:

2019-06-10  Timothy Hatcher  <timothy@apple.com>

        Integrate dark mode support for iOS.
        https://bugs.webkit.org/show_bug.cgi?id=198687
        rdar://problem/51545643

        Reviewed by Tim Horton.

        * Configurations/FeatureDefines.xcconfig:

2019-06-07  Said Abou-Hallawa  <sabouhallawa@apple.com>

        REGRESSION (r244182) [WK1]: Page updates should always scheduleCompositingLayerFlush() immediately
        https://bugs.webkit.org/show_bug.cgi?id=198664

        Reviewed by Simon Fraser.

        WK1 has to skip using DisplayRefreshMonitor when layers need to be updated.

        * WebCoreSupport/WebChromeClient.h:
        (WebChromeClient::needsImmediateScheduleCompositingLayerFlush):

== Rolled over to ChangeLog-2019-06-05 ==
