2021-10-13  Chris Dumez  <cdumez@apple.com>

        Drop makeWeakPtr() and use WeakPtr { } directly
        https://bugs.webkit.org/show_bug.cgi?id=231679

        Reviewed by Darin Adler.

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

2021-10-13  Megan Gardner  <megan_gardner@apple.com>

        Remove adjustForIOSCaretWhenScrolling() code
        https://bugs.webkit.org/show_bug.cgi?id=230454

        Reviewed by Simon Fraser.

        The "adjustForIOSCaretWhenScrolling" code attempted to over-scroll horizontally at the start
        or end of an overflow scroll in order to make space for the caret to show. However, it was
        wrong in various ways. It always did this, even for scrollers with no visible caret. It was
        web-detectable that the scrollX for a scroller could end up as -2. And removing the code
        doesn't result in obviously incorrect behavior.

        * DOM/DOMHTML.mm:
        (-[DOMHTMLElement setScrollXOffset:scrollYOffset:adjustForIOSCaret:]):
        * WebView/WebFrame.mm:
        (-[WebFrame _scrollDOMRangeToVisible:]):
        (-[WebFrame _scrollDOMRangeToVisible:withInset:]):

2021-10-13  Alex Christensen  <achristensen@webkit.org>

        Remove WTF::Variant and WTF::get
        https://bugs.webkit.org/show_bug.cgi?id=231675

        Reviewed by Chris Dumez.

        * WebView/WebFrame.mm:
        (-[WebFrame getDictationResultRanges:andMetadatas:]):
        (-[WebFrame dictationResultMetadataForRange:]):

2021-10-12  Jer Noble  <jer.noble@apple.com>

        [Build-time perf] Forward-declare more things in Document.h
        https://bugs.webkit.org/show_bug.cgi?id=231489

        Reviewed by Myles C. Maxfield.

        Move the folowing enumerations outside their classes so that they can be forward-declared:
        - MediaProducer::MediaStateFlags -> MediaProducerMediaStateFlags
        - MediaProducer::MediaCaptureKind -> MediaProducerMediaCaptureKind
        - MediaProducer::MutedState -> MediaProducerMutedState

        * DOM/DOMDocument.mm:
        * WebCoreSupport/WebChromeClient.h:
        * WebCoreSupport/WebChromeClient.mm:
        (WebChromeClient::playbackTargetPickerClientStateDidChange):
        * WebView/WebMediaPlaybackTargetPicker.h:
        * WebView/WebMediaPlaybackTargetPicker.mm:
        (WebMediaPlaybackTargetPicker::playbackTargetPickerClientStateDidChange):
        * WebView/WebView.mm:
        (-[WebView _playbackTargetPickerClientStateDidChange:state:]):
        * WebView/WebViewInternal.h:

2021-10-12  Alex Christensen  <achristensen@webkit.org>

        Use std::variant instead of WTF::Variant
        https://bugs.webkit.org/show_bug.cgi?id=231629

        Reviewed by Chris Dumez.

        * DOM/DOMHTMLSelectElement.mm:
        (-[DOMHTMLSelectElement add:before:]):

2021-10-12  Chris Dumez  <cdumez@apple.com>

        Allow direct construction of WeakPtr without makeWeakPtr()
        https://bugs.webkit.org/show_bug.cgi?id=231580

        Reviewed by Darin Adler.

        Allow direct construction of WeakPtr without makeWeakPtr(), and deprecate makeWeakPtr().

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

2021-10-11  Chris Dumez  <cdumez@apple.com>

        DOMTimeStamp is now EpochTimeStamp
        https://bugs.webkit.org/show_bug.cgi?id=231496

        Reviewed by Sam Weinig.

        * DOM/DOMEvent.h:
        * DOM/DOMEvent.mm:
        (-[DOMEvent timeStamp]):
        * DOM/DOMObject.h:

2021-10-08  Jer Noble  <jer.noble@apple.com>

        [Build-time perf] Forward-declare more things in Element.h
        https://bugs.webkit.org/show_bug.cgi?id=231283

        Reviewed by Myles C. Maxfield.

        Include ElementInlines.h in various necessary places.        

        * WebView/WebHTMLRepresentation.mm:

2021-10-07  Darin Adler  <darin@apple.com>

        Get rid of the deviceClass function, up-leveling to deviceClassIsSmallScreen
        https://bugs.webkit.org/show_bug.cgi?id=231344

        Reviewed by Tim Horton.

        * WebView/WebPreferences.mm: Removed uneeded Device.h include.

        * WebView/WebPreferencesDefaultValues.mm:
        (WebKit::defaultAllowsInlineMediaPlayback): Use !deviceClassIsSmallScreen
        instead of deviceClass == iPad.
        (WebKit::defaultAllowsInlineMediaPlaybackAfterFullscreen): Use
        deviceClassIsSmallScreen instead of deviceClass != iPad.
        (WebKit::defaultInlineMediaPlaybackRequiresPlaysInlineAttribute): Ditto.
        (WebKit::defaultMediaSourceEnabled): Use !deviceClassIsSmallScreen instead of
        deviceClass != iPhone and != iPod, and also remove unneeded compile time conditionals.

2021-10-05  Tim Horton  <timothy_horton@apple.com>

        <model> should be draggable, similar to <img>
        https://bugs.webkit.org/show_bug.cgi?id=229246

        Reviewed by Wenson Hsieh.

        * WebView/WebView.mm:
        (kit):
        Do nothing for <model> drags in legacy WebKit.

2021-10-03  David Kilzer  <ddkilzer@apple.com>

        WTF::RetainPtr<> allows assignment of two pointer types that are not assignable
        <https://webkit.org/b/230406>
        <rdar://problem/83241893>

        Reviewed by Darin Adler.

        * Plugins/WebBasePluginPackage.mm:
        (+[WebBasePluginPackage pluginWithPath:]):
        - Use explicit type with RetainPtr<> to match return type.

2021-10-01  Chris Dumez  <cdumez@apple.com>

        Drop support for macOS < 10.15
        https://bugs.webkit.org/show_bug.cgi?id=231085

        Reviewed by Darin Adler.

        * WebView/WebHTMLView.mm:
        (-[WebHTMLView _recursive:displayRectIgnoringOpacity:inContext:stopAtLayerBackedViews:]):
        (-[WebHTMLView _recursive:displayRectIgnoringOpacity:inContext:stopAtLayerBackedViews:_recursive:displayRectIgnoringOpacity:inContext:shouldChangeFontReferenceColor:stopAtLayerBackedViews:]): Deleted.

2021-10-01  Ian Anderson  <iana@apple.com>

        WebKitLegacy's module map files don't get installed
        https://bugs.webkit.org/show_bug.cgi?id=230736

        Reviewed by David Kilzer.

        Revert r271607 because it doesn't work and isn't the right approach.

        * Configurations/WebKitLegacy.xcconfig:
        * History/WebBackForwardListPrivate.h:
        * Misc/WebKitLegacy_Private.h: Removed.
        * Misc/WebKitLegacy_iOS_Private.h: Removed.
        * Misc/WebKitLegacy_macOS_Private.h: Removed.

2021-09-29  Chris Dumez  <cdumez@apple.com>

        Make WebLocalizedString() thread-safe
        https://bugs.webkit.org/show_bug.cgi?id=230954

        Reviewed by Alexey Proskuryakov.

        Make WebLocalizedString() thread-safe. It takes minimal effort to make it thread-safe given
        that the NSBundle API is thread-safe [1] and clients keep calling it on the background thread.

        [1] https://developer.apple.com/documentation/foundation/nslocalizedstringwithdefaultvalue
        "As of OS X 10.11 and iOS 9, NSBundle is thread-safe. As such, you can safely call
         NSLocalizedStringWithDefaultValue from any execution context."

        * Misc/WebLocalizableStrings.mm:

2021-09-28  Chris Dumez  <cdumez@apple.com>

        Move Cross-Origin-Opener-Policy handling to the NetworkProcess
        https://bugs.webkit.org/show_bug.cgi?id=230812
        <rdar://83504842>

        Reviewed by Youenn Fablet.

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

2021-09-23  Tim Horton  <timothy_horton@apple.com>

        Move more linked-on-or-after checks to WebCore::linkedOnOrAfter()
        https://bugs.webkit.org/show_bug.cgi?id=230694

        Reviewed by Wenson Hsieh.

        * Misc/WebDownload.mm:
        (shouldCallOnNetworkThread):
        * WebView/WebPreferencesDefaultValues.mm:
        (WebKit::defaultRequiresUserGestureToLoadVideo):
        (WebKit::defaultWebSQLEnabled):
        (WebKit::defaultShouldConvertInvalidURLsToBlank):

2021-09-23  Tim Horton  <timothy_horton@apple.com>

        shouldAllowPictureInPictureMediaPlayback should use WebCore's linkedOnOrAfter()
        https://bugs.webkit.org/show_bug.cgi?id=230674

        Reviewed by Simon Fraser.

        * WebView/WebPreferencesDefaultValues.mm:
        (WebKit::defaultAllowsPictureInPictureMediaPlayback):
        Adopt the WebCore API (which supports overrides for Safari and for testing).

2021-09-23  Brent Fulgham  <bfulgham@apple.com>

        Remove XSS Auditor: Part 3 (Deprecate API)
        https://bugs.webkit.org/show_bug.cgi?id=230661
        <rdar://problem/83428911>

        Reviewed by Mark Lam.

        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (-[WebPreferences isXSSAuditorEnabled]):
        (-[WebPreferences setXSSAuditorEnabled:]):
        * WebView/WebPreferencesPrivate.h:

2021-09-22  Chris Dumez  <cdumez@apple.com>

        Drop makeRef() and use Ref { } instead
        https://bugs.webkit.org/show_bug.cgi?id=230626

        Reviewed by Alex Christensen.

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

2021-09-21  Chris Dumez  <cdumez@apple.com>

        Drop makeRefPtr() and use RefPtr { } directly instead
        https://bugs.webkit.org/show_bug.cgi?id=230564

        Reviewed by Alex Christensen.

        * DOM/DOM.mm:
        (-[DOMRange renderedImageForcingBlackText:renderedImageForcingBlackText:]):
        * WebCoreSupport/WebContextMenuClient.mm:
        (WebContextMenuClient::imageForCurrentSharingServicePickerItem):
        * WebCoreSupport/WebDragClient.mm:
        (WebDragClient::declareAndWriteDragImage):
        * WebView/WebHTMLRepresentation.mm:
        (-[WebHTMLRepresentation elementWithName:inForm:]):
        (-[WebHTMLRepresentation controlsInForm:]):
        * WebView/WebView.mm:
        (-[WebView updateTextTouchBar]):

2021-09-21  David Kilzer  <ddkilzer@apple.com>

        Rename {checked,dynamic}_ns_cast<> to {checked,dynamic}_objc_cast<>
        <https://webkit.org/b/230508>
        <rdar://problem/83323145>

        Reviewed by Brent Fulgham.

        * WebCoreSupport/WebDragClient.mm:
        * WebView/WebHTMLView.mm:
        - Import <wtf/cocoa/TypeCastsCocoa.h> for future move of
          WTF::dynamic_objc_cast<> from RetainPtr.h to that header.

2021-09-20  Chris Dumez  <cdumez@apple.com>

        Stop using makeRef(*this) / makeRefPtr(this)
        https://bugs.webkit.org/show_bug.cgi?id=230464

        Reviewed by Alex Christensen.

        * Plugins/Hosted/HostedNetscapePluginStream.mm:
        (WebKit::HostedNetscapePluginStream::start):
        * Plugins/WebNetscapePluginStream.mm:
        (WebNetscapePluginStream::start):

2021-09-17  Alex Christensen  <achristensen@webkit.org>

        Use ObjectIdentifier for ResourceLoader
        https://bugs.webkit.org/show_bug.cgi?id=230278

        Reviewed by Michael Catanzaro.

        * WebCoreSupport/WebFrameLoaderClient.h:
        * WebCoreSupport/WebFrameLoaderClient.mm:
        (WebFrameLoaderClient::assignIdentifierToInitialRequest):
        (WebFrameLoaderClient::dispatchWillSendRequest):
        (WebFrameLoaderClient::shouldUseCredentialStorage):
        (WebFrameLoaderClient::dispatchDidReceiveAuthenticationChallenge):
        (WebFrameLoaderClient::canAuthenticateAgainstProtectionSpace):
        (WebFrameLoaderClient::connectionProperties):
        (WebFrameLoaderClient::dispatchDidReceiveResponse):
        (WebFrameLoaderClient::willCacheResponse const):
        (WebFrameLoaderClient::dispatchDidReceiveContentLength):
        (WebFrameLoaderClient::dispatchDidFinishLoading):
        (WebFrameLoaderClient::dispatchDidFailLoading):
        * WebView/WebDocumentLoaderMac.h:
        * WebView/WebDocumentLoaderMac.mm:
        (WebDocumentLoaderMac::increaseLoadCount):
        (WebDocumentLoaderMac::decreaseLoadCount):
        * WebView/WebViewInternal.h:

2021-09-17  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Add fast property enumeration mode for JSON.stringify
        https://bugs.webkit.org/show_bug.cgi?id=230393

        Reviewed by Mark Lam.

        * Plugins/Hosted/NetscapePluginInstanceProxy.h:
        * Plugins/Hosted/NetscapePluginInstanceProxy.mm:
        (WebKit::NetscapePluginInstanceProxy::demarshalValues):

2021-09-14  Chris Dumez  <cdumez@apple.com>

        [Hardening] Validate IDBValue's blob paths in WebIDBServer::putOrAdd()
        https://bugs.webkit.org/show_bug.cgi?id=230233
        <rdar://79562514>

        Reviewed by Brady Eidson.

        * WebCoreSupport/WebPlatformStrategies.mm:

2021-09-13  Youenn Fablet  <youenn@apple.com>

        Remove WritableStream runtime flag
        https://bugs.webkit.org/show_bug.cgi?id=230148

        Reviewed by Sihui Liu.

        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (-[WebPreferences writableStreamAPIEnabled]): Deleted.
        (-[WebPreferences setWritableStreamAPIEnabled:]): Deleted.
        * WebView/WebPreferencesPrivate.h:

2021-09-11  David Kilzer  <ddkilzer@apple.com>

        CFNotificationCenterAddObserver() should use weak observers
        <https://webkit.org/b/230168>
        <rdar://problem/82987695>

        Reviewed by Darin Adler.

        * WebView/WebHTMLView.mm:
        (hardwareKeyboardAvailabilityChangedCallback):
        - Modernize syntax for WeakObjCPtr constructor.
        (-[WebHTMLView initWithFrame:]):
        - Use _CFNotificationObserverIsObjC to fix the bug.
        - Extract local variables and change notificationName cast to be
          ARC-ready.  Remove notificationName from autoreleasePool.
        (-[WebHTMLView dealloc]):
        - Extract local variable and change notificationName cast to be
          ARC-ready.  Remove notificationName from autoreleasePool.

2021-09-08  Jean-Yves Avenard  <jya@apple.com>

        Safari TP 131 audio canPlayType() reports false negatives
        https://bugs.webkit.org/show_bug.cgi?id=229799
        rdar://problem/82776747

        Reviewed by Youenn Fablet.

        * WebView/WebPreferencesDefaultValues.h:
        * WebView/WebPreferencesDefaultValues.mm: Remove no longer used method.

2021-09-07  Sihui Liu  <sihui_liu@apple.com>

        Add basic support for Storage API
        https://bugs.webkit.org/show_bug.cgi?id=229925

        Reviewed by Darin Adler.

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

2021-08-31  Chris Dumez  <cdumez@apple.com>

        Enable SharedArrayBuffer support when COOP/COEP headers are used
        https://bugs.webkit.org/show_bug.cgi?id=229559
        <rdar://problem/82391945>

        Reviewed by Alex Christensen.

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

2021-08-31  Sihui Liu  <sihui_liu@apple.com>

        REGRESSION (r281771): ASSERTION FAILED: !m_deletionHasBegun under WebCore::Permissions::~Permissions()
        https://bugs.webkit.org/show_bug.cgi?id=229714
        <rdar://problem/82581552>

        Reviewed by Chris Dumez.

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

2021-08-26  Darin Adler  <darin@apple.com>

        Cut down on use of CFGetTypeID, using dynamic_cf_cast instead; related streamlining
        https://bugs.webkit.org/show_bug.cgi?id=229414

        Reviewed by Tim Horton.

        * Plugins/WebBasePluginPackage.mm:
        (-[WebBasePluginPackage bundleVersion]): Use dynamic_cf_cast.

2021-08-30  Sihui Liu  <sihui_liu@apple.com>

        Add stubs for Permissions API
        https://bugs.webkit.org/show_bug.cgi?id=229339
        <rdar://problem/82442205>

        Reviewed by Chris Dumez.

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

2021-08-24  Chris Dumez  <cdumez@apple.com>

        [WK2] Implement process-swapping based on Cross-Origin-Opener-Policy HTTP header
        https://bugs.webkit.org/show_bug.cgi?id=229203
        <rdar://problem/82047686>

        Reviewed by Alex Christensen.

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

2021-08-19  Megan Gardner  <megan_gardner@apple.com>

        Remove old unused code and out of date comments.
        https://bugs.webkit.org/show_bug.cgi?id=229210

        Reviewed by Anders Carlsson.

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

2021-08-19  Alex Christensen  <achristensen@webkit.org>

        Remove more non-inclusive language from Source
        https://bugs.webkit.org/show_bug.cgi?id=229230

        Reviewed by Myles C. Maxfield.

        * WebKit.order:
        * WebView/WebViewPrivate.h:

2021-08-19  Simon Fraser  <simon.fraser@apple.com>

        Rename Element::clientRect() which does not return a value in web-exposed "client" coordinates
        https://bugs.webkit.org/show_bug.cgi?id=229243

        Reviewed by Wenson Hsieh.

        The result of Element::clientRect() is in the coordinate space of the root view,
        not in the space of the Element's Frame, so does not match the other functions on Element
        with "client" in the name.

        Rename to Element::boundingBoxInRootViewCoordinates() for clarity.

        * WebCoreSupport/WebValidationMessageClient.mm:
        (WebValidationMessageClient::showValidationMessage):
        (WebValidationMessageClient::updateValidationBubbleStateIfNeeded):

2021-08-19  Simon Fraser  <simon.fraser@apple.com>

        Rename EventHandler::sendScrollEvent() to scheduleScrollEvent() since the event is not sent synchronously
        https://bugs.webkit.org/show_bug.cgi?id=229256

        Reviewed by Geoffrey Garen.

        Rename EventHandler::sendScrollEvent() and FrameView::sendScrollEvent()
        to scheduleScrollEvent() since the event dispatch happens via the next rendering update.

        * WebView/WebFrame.mm:
        (-[WebFrame sendScrollEvent]):

2021-08-16  David Kilzer  <ddkilzer@apple.com>

        "make analyze" should run clang static analyzer in deep mode
        <https://webkit.org/b/229127>
        <rdar://problem/81960587>

        Reviewed by Alexey Proskuryakov.

        * migrate-headers.sh:
        - Treat "analyze" the same as "build" for "ACTION" environment
          variable.

2021-08-16  David Kilzer  <ddkilzer@apple.com>

        -[WebView initWithCoder:] should use -[NSCoder decodeValueOfObjCType:at:size:]
        <https://webkit.org/b/229121>
        <rdar://problem/81956163>

        Reviewed by Anders Carlsson.

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

2021-08-13  Chris Dumez  <cdumez@apple.com>

        Add Cross-Origin-Embedder-Policy support for Blob URLs
        https://bugs.webkit.org/show_bug.cgi?id=229041

        Reviewed by Alex Christensen.

        * WebCoreSupport/WebPlatformStrategies.mm:

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

        Regression(r273194) Exception being thrown in [WebMainThreadInvoker forwardInvocation] should be autoreleased
        https://bugs.webkit.org/show_bug.cgi?id=229056

        Reviewed by Geoffrey Garen.

        Exception being thrown in [WebMainThreadInvoker forwardInvocation] should be autoreleased. I got this wrong
        in r273194.

        * Misc/WebNSObjectExtras.mm:
        (-[WebMainThreadInvoker forwardInvocation:]):

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

        REGRESSION (r280726): [ Big Sur wk1 ] 25 imported/w3c/web-platform-tests/fetch/ failing
        https://bugs.webkit.org/show_bug.cgi?id=228926
        <rdar://problem/81715332>

        Reviewed by Eric Carlson.

        isFeatureFlagEnabled is called when creating/initializing WebPreferences.
        It used to check for WebView, which triggers the execution of WebView initialize method
        while DumpRenderTree is in the middle of creating its testing setup, including its storage testing sessions.
        Instead, check for WebResource to remove this side effect and get back to past DumpRenderTree initialization.

        * WebView/WebPreferencesDefaultValues.mm:
        (WebKit::isFeatureFlagEnabled):

2021-08-11  Peng Liu  <peng.liu6@apple.com>

        Function _os_feature_enabled_impl() expects compile-time static strings as arguments
        https://bugs.webkit.org/show_bug.cgi?id=229017
        <rdar://81813732>

        Reviewed by Tim Horton.

        There are multiple issues in the current implementation of `isFeatureFlagEnabled()`.
        1. `_os_feature_enabled_impl()` expects compile-time static strings as arguments.
        So we should not use `String` here.
        2. As Simon Fraser pointed out, `String::characters8()` is not null terminated.

        * WebView/WebPreferencesDefaultValues.h:
        * WebView/WebPreferencesDefaultValues.mm:
        (WebKit::isFeatureFlagEnabled):

2021-08-10  Peng Liu  <peng.liu6@apple.com>

        REGRESSION (r280726): [ Big Sur wk1 ] 25 imported/w3c/web-platform-tests/fetch/ failing
        https://bugs.webkit.org/show_bug.cgi?id=228926

        Reviewed by Jer Noble.

        Revert a part of r280726 while investigating the test failures.

        * WebView/WebPreferencesDefaultValues.mm:
        (WebKit::isFeatureFlagEnabled):

2021-08-10  Chris Dumez  <cdumez@apple.com>

        Add Cross-Origin-Opener-Policy support for Blob URLs
        https://bugs.webkit.org/show_bug.cgi?id=228924

        Reviewed by Alex Christensen.

        * WebCoreSupport/WebPlatformStrategies.mm:

2021-08-10  Chris Dumez  <cdumez@apple.com>

        Document.baseURI is inaccurate for iframe srcdoc documents
        https://bugs.webkit.org/show_bug.cgi?id=228933

        Reviewed by Alex Christensen.

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

2021-08-09  Chris Dumez  <cdumez@apple.com>

        Blob URL changes after loading it
        https://bugs.webkit.org/show_bug.cgi?id=228923

        Reviewed by Geoff Garen.

        * WebCoreSupport/WebPlatformStrategies.mm:

2021-08-09  Myles C. Maxfield  <mmaxfield@apple.com>

        Support WTF logging channels
        https://bugs.webkit.org/show_bug.cgi?id=228768

        Reviewed by Fujii Hironori.

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

2021-08-07  Myles C. Maxfield  <mmaxfield@apple.com>

        Deduplicate logging channel algorithms
        https://bugs.webkit.org/show_bug.cgi?id=228809

        Reviewed by Fujii Hironori.

        * Misc/WebKitLogInitialization.h: Copied from Source/WebKit/Platform/LogInitialization.h.
        * Misc/WebKitLogInitialization.mm: Copied from Source/WebKitLegacy/mac/Misc/WebKitLogging.m.
        (WebKit::logChannels):
        (ReportDiscardedDelegateException):
        * Misc/WebKitLogging.h:
        * Misc/WebKitLogging.m:
        (ReportDiscardedDelegateException): Deleted.
        * WebCoreSupport/WebDragClient.mm:
        * WebView/WebDelegateImplementationCaching.mm:
        * WebView/WebView.mm:
        (-[WebView _commonInitializationWithFrameName:groupName:]):

2021-08-07  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, reverting r280756.
        https://bugs.webkit.org/show_bug.cgi?id=228897

        Broke gtk build

        Reverted changeset:

        "Deduplicate logging channel algorithms"
        https://bugs.webkit.org/show_bug.cgi?id=228809
        https://commits.webkit.org/r280756

2021-08-07  Myles C. Maxfield  <mmaxfield@apple.com>

        Deduplicate logging channel algorithms
        https://bugs.webkit.org/show_bug.cgi?id=228809

        Reviewed by Fujii Hironori.

        * Misc/WebKitLogInitialization.h: Copied from Source/WebKit/Platform/LogInitialization.h.
        * Misc/WebKitLogInitialization.mm: Copied from Source/WebKitLegacy/mac/Misc/WebKitLogging.m.
        (WebKit::logChannels):
        (ReportDiscardedDelegateException):
        * Misc/WebKitLogging.h:
        * Misc/WebKitLogging.m:
        (ReportDiscardedDelegateException): Deleted.
        * WebCoreSupport/WebDragClient.mm:
        * WebView/WebDelegateImplementationCaching.mm:
        * WebView/WebView.mm:
        (-[WebView _commonInitializationWithFrameName:groupName:]):

2021-08-06  Peng Liu  <peng.liu6@apple.com>

        [macOS] Clean up Feature Flags related code
        https://bugs.webkit.org/show_bug.cgi?id=228803
        <rdar://problem/81142982>

        Reviewed by Tim Horton.

        On macOS, Safari Technology Preview or a local build WebKit/Safari will always
        get the default preference values through the "Feature Flags" SPI. Unfortunately,
        this approach won't work if the OS does not provide correct default preference values.

        With this patch, we only get default preference values with the SPI for system
        WebKit on macOS. For all other cases, we use hardcoded values. So that
        WebKit will always get the correct default preference values.

        This patch also fixes a few mistakes in two preferences: "webm_webaudio" and "vp8_decoder".

        * WebView/WebPreferencesDefaultValues.h:
        * WebView/WebPreferencesDefaultValues.mm:
        (WebKit::isFeatureFlagEnabled):
        (WebKit::defaultIncrementalPDFEnabled):
        (WebKit::defaultWebXREnabled):
        (WebKit::defaultWebMParserEnabled):
        (WebKit::defaultWebMWebAudioEnabled):
        (WebKit::defaultVP8DecoderEnabled):
        (WebKit::defaultVP9DecoderEnabled):

2021-08-05  Cameron McCormack  <heycam@apple.com>

        Stop tracking form elements with FormController
        https://bugs.webkit.org/show_bug.cgi?id=228724
        <rdar://problem/81435095>

        Reviewed by Darin Adler.

        formElementsCharacterCount is unused and can be removed.

        * WebView/WebFrame.mm:
        * WebView/WebFramePrivate.h:

2021-07-29  Myles C. Maxfield  <mmaxfield@apple.com>

        Stop building WebGPU and the WHLSL compiler to decrease binary size
        https://bugs.webkit.org/show_bug.cgi?id=228179

        Reviewed by Dean Jackson, Robin Morisset, and Devin Rousso.

        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (-[WebPreferences webGPUEnabled]): Deleted.
        (-[WebPreferences setWebGPUEnabled:]): Deleted.
        * WebView/WebPreferencesDefaultValues.h:
        * WebView/WebPreferencesDefaultValues.mm:
        (WebKit::defaultWebGPUEnabled): Deleted.
        * WebView/WebPreferencesPrivate.h:

2021-07-26  Wenson Hsieh  <wenson_hsieh@apple.com>

        [macOS Monterey] Pressing Fn+E should present the emoji picker when editing
        https://bugs.webkit.org/show_bug.cgi?id=228300
        rdar://77558672

        Reviewed by Tim Horton.

        Apply a similar fix, this time for WebKit1 on macOS.

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

        Only append "insertText:" for a corresponding NSEvent with the Function key held down if it doesn't also map
        to a item in the main menu.

2021-07-16  Megan Gardner  <megan_gardner@apple.com>

        Pipe App Highlight scrolling through UI Process in preparation for Note Overlay avoidance.
        https://bugs.webkit.org/show_bug.cgi?id=227914

        Reviewed by Tim Horton.

        * WebCoreSupport/WebChromeClient.h:
        * WebCoreSupport/WebChromeClient.mm:
        (WebChromeClient::scrollMainFrameToRevealRect const):

2021-07-15  Jean-Yves Avenard  <jya@apple.com>

        [Wk1] media/media-source/media-webm-opus-partial.html is a consistent failure (Enable VP8/VP9/Vorbis/Opus in WebKitLegacy)
        https://bugs.webkit.org/show_bug.cgi?id=228005
        rdar://80346720

        Reviewed by Jer Noble.

        * WebView/WebPreferencesDefaultValues.h: Add relevant settings getter methods.
        * WebView/WebPreferencesDefaultValues.mm:
        (WebKit::defaultWebMParserEnabled):
        (WebKit::defaultVP8DecoderEnabled):
        (WebKit::defaultVP9DecoderEnabled):

2021-07-15  Chris Dumez  <cdumez@apple.com>

        Add initial support for BroadcastChannel behind a runtime flag
        https://bugs.webkit.org/show_bug.cgi?id=227924

        Reviewed by Sam Weinig.

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

2021-07-15  Megan Gardner  <megan_gardner@apple.com>

        Rename scrollRectIntoView to scrollContainingScrollViewsToRevealRect for clarity.
        https://bugs.webkit.org/show_bug.cgi?id=227995

        Reviewed by Tim Horton.

        * WebCoreSupport/WebChromeClient.h:
        * WebCoreSupport/WebChromeClient.mm:
        (WebChromeClient::scrollContainingScrollViewsToRevealRect const):
        (WebChromeClient::scrollRectIntoView const): Deleted.

2021-07-14  Rob Buis  <rbuis@igalia.com>

        Rename hasOverflowClip() to prepare for the real overflow:clip
        https://bugs.webkit.org/show_bug.cgi?id=227899

        Reviewed by Simon Fraser.

        Rename hasOverflowClip() to prepare for the real overflow:clip.

        * DOM/DOMHTML.mm:
        (-[DOMHTMLElement scrollXOffset]):
        (-[DOMHTMLElement scrollYOffset]):
        (-[DOMHTMLElement setScrollXOffset:scrollYOffset:adjustForIOSCaret:]):

2021-06-25  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, reverting r279266.
        https://bugs.webkit.org/show_bug.cgi?id=227402

        Causes crash loop

        Reverted changeset:

        "Remove references to order files"
        https://bugs.webkit.org/show_bug.cgi?id=227377
        https://trac.webkit.org/changeset/279266

2021-06-24  Sihui Liu  <sihui_liu@apple.com>

        Remove references to order files
        https://bugs.webkit.org/show_bug.cgi?id=227377
        rdar://76070556

        Reviewed by Mark Lam.

        * Configurations/WebKitLegacy.xcconfig:

2021-06-22  Wenson Hsieh  <wenson_hsieh@apple.com>

        [Live Text] [macOS] Add an internal option to disable inline text selection in images
        https://bugs.webkit.org/show_bug.cgi?id=227265
        rdar://79460142

        Reviewed by Tim Horton.

        Rename ContextMenuItemTagLookUpImage to ContextMenuItemTagQuickLookImage.

        * WebView/WebHTMLView.mm:
        (toTag):

2021-06-21  Wenson Hsieh  <wenson_hsieh@apple.com>

        [macOS] [WebKitLegacy] Non-actionable "Look Up" action appears when right clicking images
        https://bugs.webkit.org/show_bug.cgi?id=227240

        Reviewed by Devin Rousso.

        Override the new client hook and return false in legacy WebKit.

        * WebCoreSupport/WebContextMenuClient.h:

2021-06-17  Alex Christensen  <achristensen@webkit.org>

        Remove empty header WebTypesInternal.h
        https://bugs.webkit.org/show_bug.cgi?id=227094

        Reviewed by Fujii Hironori.

        * DefaultDelegates/WebDefaultUIDelegate.mm:
        * History/WebBackForwardList.mm:
        * History/WebHistory.mm:
        * History/WebHistoryItem.mm:
        * Misc/WebDownload.mm:
        * Misc/WebElementDictionary.mm:
        * Misc/WebNSDataExtras.h:
        * Misc/WebTypesInternal.h: Removed.
        * Plugins/WebBasePluginPackage.mm:
        * Plugins/WebNetscapePluginPackage.mm:
        * WebView/WebArchive.mm:
        * WebView/WebDelegateImplementationCaching.h:
        * WebView/WebHTMLRepresentation.mm:
        * WebView/WebHTMLView.mm:
        * WebView/WebPDFDocumentExtras.mm:
        * WebView/WebPDFRepresentation.mm:
        * WebView/WebTextCompletionController.mm:
        * WebView/WebTextIterator.mm:
        * WebView/WebViewData.h:
        * WebView/WebViewInternal.h:

2021-06-16  Chris Dumez  <cdumez@apple.com>

        Document's execCommand() / queryCommand*() should throw an exception on non-HTML/XHTML documents
        https://bugs.webkit.org/show_bug.cgi?id=227016

        Reviewed by Darin Adler.

        Update ObjC bindings since the WebCore API now returns ExceptionOr<> types.

        * DOM/DOMDocument.mm:
        (-[DOMDocument execCommand:userInterface:value:]):
        (-[DOMDocument queryCommandEnabled:]):
        (-[DOMDocument queryCommandIndeterm:]):
        (-[DOMDocument queryCommandState:]):
        (-[DOMDocument queryCommandSupported:]):
        (-[DOMDocument queryCommandValue:]):

2021-06-11  Megan Gardner  <megan_gardner@apple.com>

        Rename AppHighlight group to QuickNote to correctly reflect feature.
        https://bugs.webkit.org/show_bug.cgi?id=226888

        Reviewed by Tim Horton.

        * WebView/WebHTMLView.mm:
        (toTag):
        * WebView/WebUIDelegatePrivate.h:

2021-06-10  Alex Christensen  <achristensen@webkit.org>

        Re-enable legacy WebView plug-ins (but not NPAPI)
        https://bugs.webkit.org/show_bug.cgi?id=226890
        <rdar://79075349>

        Reviewed by Tim Horton.

        In r276720 I put the check in the wrong place.
        This should also fix rdar://77179042 again, which I broke, fixed, broke, and am now fixing again.

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

2021-06-08  Devin Rousso  <drousso@apple.com>

        [Payment Request] upstream new features
        https://bugs.webkit.org/show_bug.cgi?id=226740
        <rdar://problem/78963132>

        Reviewed by Andy Estes.

         - recurring line items (`HAVE_PASSKIT_RECURRING_SUMMARY_ITEM` and `ENABLE_APPLE_PAY_RECURRING_LINE_ITEM`)
         - deferred line items (`HAVE_PASSKIT_DEFERRED_SUMMARY_ITEM` and `ENABLE_APPLE_PAY_DEFERRED_LINE_ITEM`)
         - estimated shipping dates (`HAVE_PASSKIT_SHIPPING_METHOD_DATE_COMPONENTS_RANGE` and `ENABLE_APPLE_PAY_SHIPPING_METHOD_DATE_COMPONENTS_RANGE`)
         - coupon code entry (`HAVE_PASSKIT_COUPON_CODE` and `ENABLE_APPLE_PAY_COUPON_CODE`)
         - shipped vs in-store pickup (`HAVE_PASSKIT_SHIPPING_CONTACT_EDITING_MODE` and `ENABLE_APPLE_PAY_SHIPPING_CONTACT_EDITING_MODE`)

        * WebCoreSupport/WebPaymentCoordinatorClient.h:
        * WebCoreSupport/WebPaymentCoordinatorClient.mm:
        (WebPaymentCoordinatorClient::completeCouponCodeChange): Renamed from `WebPaymentCoordinatorClient::completePaymentMethodModeChange`.

2021-06-07  Wenson Hsieh  <wenson_hsieh@apple.com>

        Upstream WebKit support for Live Text
        https://bugs.webkit.org/show_bug.cgi?id=226706
        <rdar://problem/78933684>

        Reviewed by Tim Horton.

        * WebView/WebHTMLView.mm: Replace IMAGE_EXTRACTION with IMAGE_ANALYSIS.

2021-06-06  Wenson Hsieh  <wenson_hsieh@apple.com>

        Turn TextIteratorBehaviorFlag into an enum class and wrap it in OptionSet
        https://bugs.webkit.org/show_bug.cgi?id=226691

        Reviewed by Darin Adler.

        See WebCore/ChangeLog for more information.

        * WebView/WebFrame.mm:
        (-[WebFrame _stringForRange:]):

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

        [macOS] Move DataDetectors softlinking in DataDetectorsSPI.h out into a separate PAL header
        https://bugs.webkit.org/show_bug.cgi?id=226669

        Reviewed by Sam Weinig.

        Adopt the new PAL softlinking header in a few places. See WebCore/ChangeLog for more details.

        * WebView/WebImmediateActionController.mm:
        (-[WebImmediateActionController _clearImmediateActionState]):
        (-[WebImmediateActionController immediateActionRecognizerWillBeginAnimation:]):
        (-[WebImmediateActionController _animationControllerForDataDetectedText]):
        (-[WebImmediateActionController _animationControllerForDataDetectedLink]):

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

        Use Vector<uint8_t> instead of Vector<char> to store bytes in SharedBuffer
        https://bugs.webkit.org/show_bug.cgi?id=226623

        Reviewed by Darin Adler.

        Use Vector<uint8_t> instead of Vector<char> to store bytes in SharedBuffer. Also have SharedBuffer::data()
        return a `const uint8_t*` instead of `const char*`. This is our preferred type to store bytes.

        * Plugins/Hosted/HostedNetscapePluginStream.h:
        * Plugins/Hosted/HostedNetscapePluginStream.mm:
        (WebKit::HostedNetscapePluginStream::didReceiveData):
        * Plugins/Hosted/NetscapePluginInstanceProxy.mm:
        (WebKit::NetscapePluginInstanceProxy::evaluateJavaScript):
        * Plugins/Hosted/WebHostedNetscapePluginView.mm:
        (-[WebHostedNetscapePluginView pluginView:receivedData:]):
        * Plugins/WebNetscapePluginStream.h:
        * Plugins/WebNetscapePluginStream.mm:
        (WebNetscapePluginStream::didReceiveData):
        * Plugins/WebNetscapePluginView.mm:
        (-[WebNetscapePluginView pluginView:receivedData:]):
        (-[WebNetscapePluginView evaluateJavaScriptPluginRequest:]):

2021-06-01  Darin Adler  <darin@apple.com>

        Remove <wtf/Optional.h>
        https://bugs.webkit.org/show_bug.cgi?id=226437

        Reviewed by Chris Dumez.

        * DOM/DOMRangeInternal.h: Added import of <optional>.
        * WebView/WebGeolocationPosition.mm: Removed import of <wtf/Optional.h>.
        * WebView/WebGeolocationPositionInternal.h: Added import of <optional>.

2021-06-01  Antti Koivisto  <antti@apple.com>

        Rename InlineBox to LegacyInlineBox
        https://bugs.webkit.org/show_bug.cgi?id=226501

        Reviewed by Alan Bujtas.

        * DOM/DOMUIKitExtensions.mm:

2021-05-30  Darin Adler  <darin@apple.com>

        Remove WTF::Optional synonym for std::optional, using that class template directly instead
        https://bugs.webkit.org/show_bug.cgi?id=226433

        Reviewed by Chris Dumez.

        * <many files>: Let the do-webcore-rename script rename Optional<> to std::optional<>.

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

        Next step toward using std::optional directly instead of through WTF::Optional typedef
        https://bugs.webkit.org/show_bug.cgi?id=226280

        Reviewed by Chris Dumez.

        * <many files>: Accept the renaming done by do-webcore-rename.

2021-05-25  Tim Horton  <timothy_horton@apple.com>

        Virtualize GraphicsContext
        https://bugs.webkit.org/show_bug.cgi?id=226170

        Reviewed by Simon Fraser.

        * Misc/WebCoreStatistics.mm:
        (-[WebFrame printToCGContext:pageWidth:pageHeight:]):
        * Misc/WebKitNSStringExtras.mm:
        (-[NSString _web_drawAtPoint:font:textColor:]):
        * WebInspector/WebNodeHighlightView.mm:
        (-[WebNodeHighlightView drawRect:]):
        * WebView/WebFrame.mm:
        (-[WebFrame _drawRect:contentsOnly:]):

2021-05-24  Sam Weinig  <weinig@apple.com>

        Convert DestinationColorSpace from an enum to class wrapping a platform color space (CGColorSpaceRef for CG ports, etc.)
        https://bugs.webkit.org/show_bug.cgi?id=226143

        Reviewed by Darin Adler.

        * WebCoreSupport/WebContextMenuClient.mm:
        (WebContextMenuClient::imageForCurrentSharingServicePickerItem):
        Update for new DestinationColorSpace class.

2021-05-24  Darin Adler  <darin@apple.com>

        Remove StringBuilder::appendLiteral
        https://bugs.webkit.org/show_bug.cgi?id=226137

        Reviewed by Chris Dumez.

        * WebView/WebHTMLRepresentation.mm:
        (regExpForLabels): Use append instead of appendLiteral.
        Also imrpove local variable names a bit.

2021-05-24  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, reverting r277940.
        https://bugs.webkit.org/show_bug.cgi?id=226182

        Caused Safari crash under IPC::typeFromCFTypeRef

        Reverted changeset:

        "Convert DestinationColorSpace from an enum to class wrapping
        a platform color space (CGColorSpaceRef for CG ports, etc.)"
        https://bugs.webkit.org/show_bug.cgi?id=226143
        https://trac.webkit.org/changeset/277940

2021-05-24  Chris Dumez  <cdumez@apple.com>

        Drop CheckedLock / CheckedCondition aliases
        https://bugs.webkit.org/show_bug.cgi?id=226176

        Reviewed by Kate Cheney.

        Drop CheckedLock / CheckedCondition aliases now that they are the default.

        * DOM/DOMInternal.mm:

2021-05-23  Sam Weinig  <weinig@apple.com>

        Convert DestinationColorSpace from an enum to class wrapping a platform color space (CGColorSpaceRef for CG ports, etc.)
        https://bugs.webkit.org/show_bug.cgi?id=226143

        Reviewed by Darin Adler.

        * WebCoreSupport/WebContextMenuClient.mm:
        (WebContextMenuClient::imageForCurrentSharingServicePickerItem):
        Update for new DestinationColorSpace class.

2021-05-22  Chris Dumez  <cdumez@apple.com>

        Replace LockHolder with Locker in local variables
        https://bugs.webkit.org/show_bug.cgi?id=226133

        Reviewed by Darin Adler.

        Replace LockHolder with Locker in local variables. It is shorter and it allows switching the lock
        type more easily since the compiler with deduce the lock type T for Locker<T>.

        * WebView/WebView.mm:
        (-[WebView _synchronizeCustomFixedPositionLayoutRect]):
        (-[WebView _setCustomFixedPositionLayoutRectInWebThread:synchronize:]):
        (-[WebView _setCustomFixedPositionLayoutRect:]):
        (-[WebView _fetchCustomFixedPositionLayoutRect:]):

2021-05-22  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, reverting r277913.
        https://bugs.webkit.org/show_bug.cgi?id=226140

        Caused multiple layout-test crash on mac debug queues

        Reverted changeset:

        "Replace LockHolder with Locker in local variables"
        https://bugs.webkit.org/show_bug.cgi?id=226133
        https://trac.webkit.org/changeset/277913

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

        Replace LockHolder with Locker in local variables
        https://bugs.webkit.org/show_bug.cgi?id=226133

        Reviewed by Darin Adler.

        Replace LockHolder with Locker in local variables. It is shorter and it allows switching the lock
        type more easily since the compiler with deduce the lock type T for Locker<T>.

        * WebView/WebView.mm:
        (-[WebView _synchronizeCustomFixedPositionLayoutRect]):
        (-[WebView _setCustomFixedPositionLayoutRectInWebThread:synchronize:]):
        (-[WebView _setCustomFixedPositionLayoutRect:]):
        (-[WebView _fetchCustomFixedPositionLayoutRect:]):

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

        [macOS] Adopt QLItem in WKImageExtractionPreviewController
        https://bugs.webkit.org/show_bug.cgi?id=226114
        rdar://76657718

        Reviewed by Tim Horton.

        Adopt the new QuickLookUI softlinking header in PAL.

        * WebView/WebImmediateActionController.mm:
        (-[WebImmediateActionController webViewClosed]):

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

        Replace more static Locks with CheckedLocks in WebKit / WebKitLegacy
        https://bugs.webkit.org/show_bug.cgi?id=226093

        Reviewed by Darin Adler.

        Replace more static Locks with CheckedLocks so that we can benefit from Clang Thread Safety Analysis.

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

2021-05-20  Alexey Shvayka  <shvaikalesh@gmail.com>

        [WebIDL] Remove [ImplicitThis] and [CustomProxyToJSObject] extended attributes
        https://bugs.webkit.org/show_bug.cgi?id=223758

        Reviewed by Sam Weinig.

        Use inherits<T> instead of toJSDOMWindow() if the value is never a JSProxy.

        * WebView/WebView.mm:
        (+[WebView _reportException:inContext:]):

2021-05-19  Sam Weinig  <weinig@apple.com>

        Update Base64 encoding/decoding to match more modern WebKit conventions
        https://bugs.webkit.org/show_bug.cgi?id=225920

        Reviewed by Chris Dumez.

        * WebCoreSupport/WebChromeClient.mm:
        (WebChromeClient::wrapCryptoKey const):
        (WebChromeClient::unwrapCryptoKey const):
        Update to use new Optional returning defaultWebCryptoMasterKey().

        * WebCoreSupport/WebInspectorClient.mm:
        (WebInspectorFrontendClient::save):
        Update to use new Optional returning base64Decode().

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

        [GPUP] WebContent process should not pull audio session category from the GPU Process
        https://bugs.webkit.org/show_bug.cgi?id=225826

        Reviewed by Darin Adler.

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

2021-05-15  Ryosuke Niwa  <rniwa@webkit.org>

        Delete WebSQL code from WebKit2
        https://bugs.webkit.org/show_bug.cgi?id=225739

        Reviewed by Sihui Liu.

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

2021-05-13  Megan Gardner  <megan_gardner@apple.com>

        Add textIndicator bounce for AppHighlights on scroll.
        https://bugs.webkit.org/show_bug.cgi?id=225727

        Reviewed by Tim Horton.

        * WebCoreSupport/WebChromeClient.h:
        * WebCoreSupport/WebChromeClient.mm:
        (WebChromeClient::setTextIndicator const):
        * WebView/WebHTMLView.mm:
        (-[WebHTMLView quickLookWithEvent:]):
        * WebView/WebImmediateActionController.mm:
        (-[WebImmediateActionController webView:didHandleScrollWheel:]):
        (-[WebImmediateActionController _cancelImmediateAction]):
        (-[WebImmediateActionController immediateActionRecognizerDidCancelAnimation:]):
        (-[WebImmediateActionController _defaultAnimationController]):
        (-[WebImmediateActionController menuItemDidClose:]):
        (-[WebImmediateActionController _animationControllerForDataDetectedText]):
        (-[WebImmediateActionController _animationControllerForDataDetectedLink]):
        * WebView/WebView.mm:
        (-[WebView _animationControllerForDictionaryLookupPopupInfo:]):
        (-[WebView _setTextIndicator:]):
        (-[WebView _setTextIndicator:withLifetime:]):
        (-[WebView _clearTextIndicatorWithAnimation:]):
        (-[WebView _showDictionaryLookupPopup:]):
        (-[WebView _dictionaryLookupPopoverWillClose:]):
        * WebView/WebViewInternal.h:

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

        Notification.requestPermission() should return a Promise
        https://bugs.webkit.org/show_bug.cgi?id=225712

        Reviewed by Darin Adler.

        Update code now that WebCore passes a CompletionHandler instead of a
        NotificationPermissionCallback.

        * WebCoreSupport/WebNotificationClient.h:
        * WebCoreSupport/WebNotificationClient.mm:
        (WebNotificationClient::requestPermission):
        (-[WebNotificationPolicyListener initWithCompletionHandler:]):
        (-[WebNotificationPolicyListener allow]):
        (-[WebNotificationPolicyListener deny]):

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

        Queue notification permission requests for the same origin on WebKit side
        https://bugs.webkit.org/show_bug.cgi?id=225701
        <rdar://76804977>

        Reviewed by Geoffrey Garen.

        Remove some dead code.

        * WebCoreSupport/WebNotificationClient.h:
        * WebCoreSupport/WebNotificationClient.mm:

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

        Make WebCore::HitTestRequest::RequestType an enum class
        https://bugs.webkit.org/show_bug.cgi?id=225597

        Reviewed by Sam Weinig.

        See WebCore/ChangeLog for more details.

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

2021-05-08  Darin Adler  <darin@apple.com>

        [Cocoa] Remove the one use of String::toInt from WebKitLegacy
        https://bugs.webkit.org/show_bug.cgi?id=225568

        Reviewed by Sam Weinig.

        * DOM/DOMHTMLInputElement.mm:
        (-[DOMHTMLInputElement setSize:]): Use -[NSString intValue] instead of WTF::String::toInt.
        Both functions ignore leading spaces, and both ignore trailing junk, so there is no
        significant change in behavior.

2021-05-07  Wenson Hsieh  <wenson_hsieh@apple.com>

        [macOS] Set the -isSourceEditable property when presenting webpage translation popup
        https://bugs.webkit.org/show_bug.cgi?id=225515
        <rdar://problem/77658040>

        Reviewed by Tim Horton.

        See WebCore/ChangeLog for more details.

        * WebCoreSupport/WebContextMenuClient.h:
        * WebCoreSupport/WebContextMenuClient.mm:
        (WebContextMenuClient::handleTranslation):
        * WebView/WebView.mm:
        (-[WebView _handleContextMenuTranslation:]):
        (-[WebView _handleContextMenuTranslation:selectionBounds:menuLocation:]): Deleted.
        * WebView/WebViewInternal.h:

2021-05-04  Alex Christensen  <achristensen@webkit.org>

        Remove unused references to PageGroup from WebKitLegacy
        https://bugs.webkit.org/show_bug.cgi?id=225359

        Reviewed by Sihui Liu.

        * History/WebHistory.mm:
        * History/WebHistoryInternal.h:
        * Storage/WebStorageManager.mm:
        * WebView/WebView.mm:

2021-05-03  Devin Rousso  <drousso@apple.com>

        [macCatalyst] "Enter Full Screen" button in media controls disappears
        https://bugs.webkit.org/show_bug.cgi?id=225210
        <rdar://problem/77010150>

        Reviewed by Eric Carlson.

        In order for the "Enter Full Screen" media controls button to stay visible the `<video>`
        must return `true` for `HTMLMediaElement::webkitSupportsFullscreen`, which calls into
       `MediaPlayerPrivate::supportsFullscreen`. On macOS and iOS, this will always return `true`
        because of `ENABLE(FULLSCREEN_API)`, but on macCatalyst that's not enabled, so we instead
        use `DeprecatedGlobalSettings::avKitEnabled`, but this is only set in the WebProcess (and
        WK1). With the GPUProcess enabled, this value is not set, so the `RemoteMediaPlayerProxy`
        will instead get `false`.

        This patch removes `DeprecatedGlobalSettings::avKitEnabled` since it's enabled on WK1 and
        non-GPUProcess WK2, and the related iOS-only SPI appears to not be used anywhere internally,
        instead having callsites just check `HAVE(AVKIT)`.

        * WebCoreSupport/WebChromeClient.mm:
        (WebChromeClient::supportsVideoFullscreen):

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

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

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

        Remove default parameter values for color space and pixel format from ImageBuffer::create to make it clear everwhere we are explicitly requesting SRGB/BGRA8 buffers
        https://bugs.webkit.org/show_bug.cgi?id=225288

        Reviewed by Anders Carlsson.

        * WebCoreSupport/WebContextMenuClient.mm:
        (WebContextMenuClient::imageForCurrentSharingServicePickerItem):
        Pass arguments explicitly that were previously default values.

2021-04-29  Darin Adler  <darin@apple.com>

        Extend SortedArrayMap further to work on case-folded strings, use in MIMETypeRegistry
        https://bugs.webkit.org/show_bug.cgi?id=224968

        Reviewed by Sam Weinig.

        * WebView/WebHTMLRepresentation.mm:
        (createNSArray): Renamed from newArrayWithStrings so this overloads the createNSArray
        function from VectorCocoa.h so we can use the two interchangably and handle both FixedVector
        and HashSet with the smae code.
        (+[WebHTMLRepresentation supportedMediaMIMETypes]): Updated for name change.
        (+[WebHTMLRepresentation supportedNonImageMIMETypes]): Ditto.
        (+[WebHTMLRepresentation supportedImageMIMETypes]): Ditto.
        (+[WebHTMLRepresentation unsupportedTextMIMETypes]): Ditto.

2021-04-28  Alex Christensen  <achristensen@webkit.org>

        Remove support for NPAPI plugins in WebView
        https://bugs.webkit.org/show_bug.cgi?id=224449

        Reviewed by Geoffrey Garen.

        In r275912 I turned off all plugin support in WebView after looking into use of NP_Initialize, the entry point for NPAPI plugins.
        That was too aggressive, as we found some use of the older WebKit plugin entry point, plugInViewWithArguments, and reverted in r276652.
        This cuts out only support for NPAPI plugins for now.

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

2021-04-28  Chris Dumez  <cdumez@apple.com>

        Drop ModernUnprefixedWebAudio & AudioWorklet experimental feature flags
        https://bugs.webkit.org/show_bug.cgi?id=225130

        Reviewed by Eric Carlson.

        Drop ModernUnprefixedWebAudio & AudioWorklet experimental feature flags now that
        these features have shipped. It also doesn't make sense to disable them given
        that the prefixed WebAudio API is no longer exposed and there is no feature flag
        to turn the legacy prefixed API back on.

        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (-[WebPreferences modernUnprefixedWebAudioEnabled]): Deleted.
        (-[WebPreferences setModernUnprefixedWebAudioEnabled:]): Deleted.
        (-[WebPreferences audioWorkletEnabled]): Deleted.
        (-[WebPreferences setAudioWorkletEnabled:]): Deleted.
        * WebView/WebPreferencesPrivate.h:

2021-04-27  Alex Christensen  <achristensen@webkit.org>

        charset in contentType used in Blob.prototype.slice(start, end, contentType) is lost
        https://bugs.webkit.org/show_bug.cgi?id=225057

        Reviewed by Chris Dumez.

        * WebCoreSupport/WebPlatformStrategies.mm:

2021-04-27  Alex Christensen  <achristensen@webkit.org>

        Unreviewed, reverting r275912.
        rdar://77179042

        Broke internal client

        Reverted changeset:

        "Remove support for NPAPI plugins in WebView"
        https://bugs.webkit.org/show_bug.cgi?id=224449
        https://commits.webkit.org/r275912

2021-04-23  Chris Dumez  <cdumez@apple.com>

        Improve our constructDeletedValue() template specializations
        https://bugs.webkit.org/show_bug.cgi?id=224889

        Reviewed by Darin Adler.

        Improve our constructDeletedValue() template specializations and make them more consistent:
        - Use placement-new instead of object assignment since we don't want/need to destroy the
          existing object (since it is uninitialized).
        - Do as little initialization as possible for performance reasons.

        * History/BinaryPropertyList.cpp:
        (IntegerArray::integers const):
        (IntegerArray::size const):
        (IntegerArrayHashTraits::constructDeletedValue):
        (IntegerArrayHashTraits::isDeletedValue):
        (IntegerArray::markDeleted): Deleted.
        (IntegerArray::isDeletedValue const): Deleted.
        (IntegerArray::deletedValueSize): Deleted.

2021-04-19  Kimmo Kinnunen  <kkinnunen@apple.com>

        Enable -Wthread-safety, add attributes to custom lock classes, and provide macros to declare guards
        https://bugs.webkit.org/show_bug.cgi?id=221614
        <rdar://problem/74396781>

        Reviewed by David Kilzer.

        Add -Wthread-safety to compile flags.

        * Configurations/Base.xcconfig:

2021-04-17  Wenson Hsieh  <wenson_hsieh@apple.com>

        [macOS] Add some support for webpage translation in WebKitLegacy
        https://bugs.webkit.org/show_bug.cgi?id=224683
        <rdar://problem/75641882>

        Reviewed by Darin Adler.

        Add support for the webpage translation context menu item in WebKitLegacy. See below for more details.

        * WebView/WebHTMLView.mm:
        (toAction):
        (toTag):

        Introduce the `WebMenuItemTagTranslate` enum value, and use it as the tag value when creating an `NSMenuItem`
        for the Translate action.

        (createMenuItem):
        * WebView/WebUIDelegatePrivate.h:

        Unfortunately, in order to support a particular internal client of WebKitLegacy, we need to expose
        `WebMenuItemTagTranslate` as an enum value in this existing enumeration of context menu item tags. This is
        because the client's implementation of `-webView:contextMenuItemsForElement:defaultMenuItems:` rejects context
        menu items by default, unless the item tag is within the set of item tags that they support.

        This client will need to add the enum value of `WebMenuItemTagTranslate` into their allow-list.

        * WebView/WebView.mm:
        (+[WebView _canHandleContextMenuTranslation]):

        Softlink against and check with `TranslationUIServices` to see if we should be showing the Translate menu item.

        (-[WebView _handleContextMenuTranslation:selectionBounds:menuLocation:]):

        Handle the menu action by creating and presenting a new `LTUITranslationViewController` using the given
        information.

        * WebView/WebViewInternal.h:

2021-04-17  Tyler Wilcock  <twilco.o@protonmail.com>

        Consider making CSSStyleSheet::rules() just an alias of CSSStyleSheet::cssRules().
        https://bugs.webkit.org/show_bug.cgi?id=197725

        Reviewed by Darin Adler.

        CSSStyleSheet.rules has been changed to alias CSSStyleSheet.cssRulesForBindings.  Now,
        to access just the CSSRuleList, CSSStyleSheet.cssRules must be called.

        * DOM/DOMCSSStyleSheet.mm:
        (-[DOMCSSStyleSheet rules]):
        Update this function to call IMPL->cssRules instead of IMPL->rules.

2021-04-16  Ryosuke Niwa  <rniwa@webkit.org>

        Deploy Ref/RefPtr in Editor
        https://bugs.webkit.org/show_bug.cgi?id=224708

        Reviewed by Wenson Hsieh.

        * WebView/WebFrame.mm:
        (-[WebFrame fontForSelection:]):
        * WebView/WebHTMLView.mm:
        (-[WebHTMLView _updateFontPanel]):
        * WebView/WebView.mm:
        (-[WebView updateTextTouchBar]):

2021-04-16  Wenson Hsieh  <wenson_hsieh@apple.com>

        [macOS] Refactor some webpage translation code
        https://bugs.webkit.org/show_bug.cgi?id=224680
        Work towards <rdar://75641882>

        Reviewed by Tim Horton.

        See WebCore ChangeLog for more details.

        * WebCoreSupport/WebContextMenuClient.h:
        * WebCoreSupport/WebContextMenuClient.mm:
        (WebContextMenuClient::handleTranslation):
        * WebView/WebView.mm:
        (-[WebView _handleContextMenuTranslation:selectionBounds:menuLocation:]):

        Add an empty stub with a `FIXME` for the time being.

        * WebView/WebViewInternal.h:

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

        [GPUP] WebContent process should not create AVOutputContext instances when media in GPU Process is enabled
        https://bugs.webkit.org/show_bug.cgi?id=224469

        Reviewed by Eric Carlson.

        * WebCoreSupport/WebChromeClient.h:
        * WebCoreSupport/WebChromeClient.mm:
        (WebChromeClient::setMockMediaPlaybackTargetPickerState):
        * WebView/WebMediaPlaybackTargetPicker.h:
        * WebView/WebMediaPlaybackTargetPicker.mm:
        (WebMediaPlaybackTargetPicker::setMockMediaPlaybackTargetPickerState):
        * WebView/WebView.mm:
        (-[WebView _setMockMediaPlaybackTargetPickerName:state:]):
        * WebView/WebViewInternal.h:

2021-04-15  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, reverting r276107.
        https://bugs.webkit.org/show_bug.cgi?id=224653

        It broke non-Cocoa clean builds

        Reverted changeset:

        "[GPUP] WebContent process should not create AVOutputContext
        instances when media in GPU Process is enabled"
        https://bugs.webkit.org/show_bug.cgi?id=224469
        https://trac.webkit.org/changeset/276107

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

        [GPUP] WebContent process should not create AVOutputContext instances when media in GPU Process is enabled
        https://bugs.webkit.org/show_bug.cgi?id=224469

        Reviewed by Eric Carlson.

        * WebCoreSupport/WebChromeClient.h:
        * WebCoreSupport/WebChromeClient.mm:
        (WebChromeClient::setMockMediaPlaybackTargetPickerState):
        * WebView/WebMediaPlaybackTargetPicker.h:
        * WebView/WebMediaPlaybackTargetPicker.mm:
        (WebMediaPlaybackTargetPicker::setMockMediaPlaybackTargetPickerState):
        * WebView/WebView.mm:
        (-[WebView _setMockMediaPlaybackTargetPickerName:state:]):
        * WebView/WebViewInternal.h:

2021-04-15  Tim Horton  <timothy_horton@apple.com>

        Add a mechanism to dump the PlatformCALayer subtree of a GraphicsLayer, for testing
        https://bugs.webkit.org/show_bug.cgi?id=224595

        Reviewed by Simon Fraser.

        * WebView/WebFrame.mm:
        (-[WebFrame _layerTreeAsText]):
        Adopt the RenderLayerCompositor version of layerTreeAsText.

2021-04-13  Alex Christensen  <achristensen@webkit.org>

        Remove support for NPAPI plugins in WebView
        https://bugs.webkit.org/show_bug.cgi?id=224449

        Reviewed by Chris Dumez.

        * WebView/WebPreferences.mm:
        (-[WebPreferences setPlugInsEnabled:]):

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

        Fix some issues hidden by unified build
        https://bugs.webkit.org/show_bug.cgi?id=224457

        Reviewed by Eric Carlson.

        Some small fixes and clean-up. The issues are hidden by the unified build mechanism
        and were found in a local build.

        * DOM/DOMTokenList.mm:
        * Plugins/WebPluginController.mm:
        * WebCoreSupport/WebFrameLoaderClient.h:
        * WebView/WebDataSource.mm:
        * WebView/WebFrameView.mm:
        * WebView/WebHTMLViewInternal.h:
        * WebView/WebImmediateActionController.mm:
        * WebView/WebPDFView.mm:

2021-04-02  Darin Adler  <darin@apple.com>

        Use Hasher more, remove IntegerHasher, fix hashing-related mistakes
        https://bugs.webkit.org/show_bug.cgi?id=224138

        Reviewed by Chris Dumez.

        * History/BinaryPropertyList.cpp: Use HashTraits instead of WTF::GenericHashTraits.

2021-03-31  Chris Dumez  <cdumez@apple.com>

        Use MACH_PORT_VALID() when wanting to check if a mach port is valid
        https://bugs.webkit.org/show_bug.cgi?id=224004

        Reviewed by Darin Adler.

        Use MACH_PORT_VALID() when wanting to check if a mach port is valid, instead of checking for
        MACH_PORT_NULL. MACH_PORT_VALID() is the correct way to check for validity since it also checks
        for the MACH_PORT_DEAD value.

        * Plugins/Hosted/NetscapePluginHostManager.mm:
        (WebKit::NetscapePluginHostManager::spawnPluginHost):
        * Plugins/Hosted/NetscapePluginHostProxy.mm:
        (WebKit::NetscapePluginHostProxy::processRequests):

2021-03-28  Sam Weinig  <weinig@apple.com>

        Remove ENABLE_INDEXED_DATABASE & ENABLE_INDEXED_DATABASE_IN_WORKERS, it seems like it is on for all ports
        https://bugs.webkit.org/show_bug.cgi?id=223810

        Reviewed by Simon Fraser.

        Remove ENABLE_INDEXED_DATABASE & ENABLE_INDEXED_DATABASE_IN_WORKERS conditionals.

        * Storage/WebDatabaseManager.mm:
        (-[WebDatabaseManager deleteAllIndexedDatabases]):

2021-03-26  David Kilzer  <ddkilzer@apple.com>

        WebFeature class fails to copy/retain its instance variables
        <https://webkit.org/b/223823>

        Reviewed by Sam Weinig.

        * WebView/WebFeature.m:
        (-[WebFeature initWithKey:preferenceKey:name:details:defaultValue:hidden:]):
        - Copy (and thereby retain) instance variables, fulfilling the
          promise of its @property declarations and preventing
          use-after-release issues.
        (-[WebFeature dealloc]): Add.
        - Release the instance variables copied in the constructor.

2021-03-26  Jessie Berlin  <jberlin@webkit.org>

        Update the BEFORE/SINCE, SYSTEM_VERSION_PREFIX, and MACOSX_DEPLOYMENT_TARGET flags
        https://bugs.webkit.org/show_bug.cgi?id=223779

        Reviewed by Tim Horton.

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

2021-03-25  Jessie Berlin  <jberlin@webkit.org>

        Remove 10.13 DEPLOYMENT_TARGETs and SYSTEM_VERSION_PREFIXs
        https://bugs.webkit.org/show_bug.cgi?id=223765

        Reviewed by Tim Horton.

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

2021-03-23  Tim Horton  <timothy_horton@apple.com>

        Consolidate Books bundle checks
        https://bugs.webkit.org/show_bug.cgi?id=223664
        <rdar://problem/75754750>

        Reviewed by Wenson Hsieh.

        * WebView/WebViewData.mm:
        (currentRunLoop):

2021-03-22  Jean-Yves Avenard  <jya@apple.com>

        Move management of RemoteCommandListener from MediaSessionManagerCocoa into NowPlayingManager
        https://bugs.webkit.org/show_bug.cgi?id=223435
        <rdar://problem/75567198>

        Reviewed by Eric Carlson.

        * WebCoreSupport/WebPlatformStrategies.mm: Remove methods, use default implementation instead.

2021-03-22  Devin Rousso  <drousso@apple.com>

        Remove unused JS and CSS files of media controls
        https://bugs.webkit.org/show_bug.cgi?id=214955
        <rdar://problem/66604040>

        Reviewed by Eric Carlson.

        Cocoa platforms are already using modern media controls so there's no reason to keep the old
        media controls resources/logic around any longer. It just wastes space.

        The non-iOS Apple controls must be kept though as they are still used on Windows.

        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferencesPrivate.h:
        * WebView/WebPreferences.mm:
        (-[WebPreferences modernMediaControlsEnabled]): Deleted.
        (-[WebPreferences setModernMediaControlsEnabled:]): Deleted.
        Replace `ModernMediaControlsEnabled` setting with `ENABLE_MODERN_MEDIA_CONTROLS` build flag.

2021-03-16  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, reverting r274499.
        https://bugs.webkit.org/show_bug.cgi?id=223268

        Not a correct fix

        Reverted changeset:

        "[WebView _touchEventRegions] needs to take the web lock"
        https://bugs.webkit.org/show_bug.cgi?id=223266
        https://trac.webkit.org/changeset/274499

2021-03-16  Antti Koivisto  <antti@apple.com>

        REGRESSION (r272300): [iOS] ASSERTION FAILED: Unsafe to ref/deref from different threads under WebViewLayerFlushScheduler::layerFlushCallback
        https://bugs.webkit.org/show_bug.cgi?id=222712
        <rdar://problem/75022845>

        Reviewed by Simon Fraser.

        We are scheduling a layer flush from a layerFlushCallback and so rescheduling the RunLoopObserver.
        This is fine in itself but becomes a problem when the main thread web lock auto-unlock observer
        runs before that observer. Then that layer flush runs without the web lock held and messes up
        ref/deref main thread asserts (isMainThread() returns false when the web lock is not held).

        * WebView/WebViewData.mm:
        (WebViewLayerFlushScheduler::layerFlushCallback):

        Fix by explicitly taking the lock.

2021-03-16  Antti Koivisto  <antti@apple.com>

        [WebView _touchEventRegions] needs to take the web lock
        https://bugs.webkit.org/show_bug.cgi?id=223266

        Reviewed by Simon Fraser.

        Clicking anything in UIWebView test app in debug build hits thread assert immediately.

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

2021-03-11  Chris Dumez  <cdumez@apple.com>

        Introduce WorkQueue::main() to get the main thread's work queue
        https://bugs.webkit.org/show_bug.cgi?id=223087

        Reviewed by Geoffrey Garen.

        Introduce WorkQueue::main() to get the main thread's work queue. This allows us to port some more code from
        dispatch_queue to WorkQueue. It also simplifies some code that has to deal that sometimes needs to run on
        the main thread and other times on a background queue. Having a single WorkQueue type to represent both the
        main thread and a background queue makes writing such code more convenient.

        * Misc/WebDownload.mm:
        (callOnDelegateThreadAndWait):

2021-03-10  Chris Dumez  <cdumez@apple.com>

        Use RetainPtr<> / OSObjectPtr<> more in WebKit
        https://bugs.webkit.org/show_bug.cgi?id=223030

        Reviewed by Darin Adler.

        * Misc/WebElementDictionary.mm:
        (lookupTable):
        (addLookupKey):
        (+[WebElementDictionary initializeLookupTable]):
        (-[WebElementDictionary _fillCache]):
        (-[WebElementDictionary objectForKey:]):
        * WebView/WebView.mm:
        (+[WebView _makeAllWebViewsPerformSelector:]):
        (-[WebView _removeFromAllWebViewsSet]):
        (-[WebView _addToAllWebViewsSet]):
        (+[WebView closeAllWebViews]):
        (+[WebView _maxCacheModelInAnyInstance]):

2021-03-09  Sam Weinig  <weinig@apple.com>

        Remove CSSParserContext::enforcesCSSMIMETypeInNoQuirksMode as it is unused
        https://bugs.webkit.org/show_bug.cgi?id=222949

        Reviewed by Darin Adler.

        At some point in the past we stoped doing anything with the enforcesCSSMIMETypeInNoQuirksMode
        bit on CSSParserContext.

        The only time it was ever disabled was when running ancient versions of iWeb, a product that
        itself hasn't existed for over a decade, so I think we are ok to remove it.

        * WebView/WebPreferencesDefaultValues.h:
        * WebView/WebPreferencesDefaultValues.mm:
        (WebKit::defaultEnforceCSSMIMETypeInNoQuirksMode): Deleted.

2021-03-09  Wenson Hsieh  <wenson_hsieh@apple.com>

        [macOS] Add a way to trigger webpage translation via the context menu
        https://bugs.webkit.org/show_bug.cgi?id=222953
        <rdar://problem/73901967>

        Reviewed by Devin Rousso.

        Add (no-op) handling for the new enum value.

        * WebView/WebHTMLView.mm:
        (toTag):

2021-03-08  Sam Weinig  <weinig@apple.com>

        Remove quirks for the no longer supported iAd Producer
        https://bugs.webkit.org/show_bug.cgi?id=222894

        Reviewed by Chris Dumez.

        Remove two quirks that were only for iAd Producer, which is no longer
        supported on the latest macOS operating systems.

        * WebView/WebPreferencesDefaultValues.h:
        * WebView/WebPreferencesDefaultValues.mm:
        (WebKit::defaultNeedsIsLoadingInAPISenseQuirk): Deleted.
        * WebView/WebView.mm:
        (-[WebView _commonInitializationWithFrameName:groupName:]):
        (shouldRespectPriorityInCSSAttributeSetters): Deleted.

2021-03-06  Sam Weinig  <weinig@apple.com>

        Simplify DumpRenderTree WebPreferences reset
        https://bugs.webkit.org/show_bug.cgi?id=218024
        <rdar://problem/70764568>

        Reviewed by Simon Fraser.

        * WebView/WebPreferences.mm:
        (WebPreferencesPrivate::WebPreferencesPrivate):
        (-[WebPreferences encodeWithCoder:]):
        (-[WebPreferences _valueForKey:]):
        (-[WebPreferences _setStringValue:forKey:]):
        (-[WebPreferences _setStringArrayValueForKey:forKey:]):
        (-[WebPreferences _setIntegerValue:forKey:]):
        (-[WebPreferences _setUnsignedIntValue:forKey:]):
        (-[WebPreferences _setFloatValue:forKey:]):
        (-[WebPreferences _setBoolValue:forKey:]):
        (-[WebPreferences _setLongLongValue:forKey:]):
        (-[WebPreferences _setUnsignedLongLongValue:forKey:]):
        (-[WebPreferences _startBatchingUpdates]):
        (-[WebPreferences _stopBatchingUpdates]):
        (-[WebPreferences _batchUpdatePreferencesInBlock:]):
        (-[WebPreferences _resetForTesting]):
        (-[WebPreferences _postPreferencesChangedNotification]):
        (-[WebPreferences _postPreferencesChangedAPINotification]):
        (-[WebPreferences _invalidateCachedPreferences]):
        (WebPreferencesPrivate::~WebPreferencesPrivate): Deleted.
        * WebView/WebPreferencesPrivate.h:
        Add new helpers for testing to reset and batch updates.

2021-03-05  Chris Dumez  <cdumez@apple.com>

        Update ApplicationCacheStorage::originsWithCache() to return a HashSet<SecurityOriginData> instead of a Vector<Ref<SecurityOrigin>>
        https://bugs.webkit.org/show_bug.cgi?id=222828

        Reviewed by Darin Adler.

        Update ApplicationCacheStorage::originsWithCache() to return a HashSet<SecurityOriginData> instead of a Vector<Ref<SecurityOrigin>>.
        Using a HashSet makes sure we do not return duplicates (which do occur as per ApplicationCacheStorage implementation) and makes typing
        more consistent with other similar storage functions. Using SecurityOriginData is more lightweight and sufficient for our use cases.
        It also takes care of a FIXME comment in WebsiteDataStore::fetchDataAndApply about switching to SecurityOriginData.

        * WebCoreSupport/WebApplicationCache.mm:
        (+[WebApplicationCache diskUsageForOrigin:]):
        (+[WebApplicationCache deleteCacheForOrigin:]):
        (+[WebApplicationCache originsWithCache]):
        * WebCoreSupport/WebApplicationCacheQuotaManager.mm:
        (-[WebApplicationCacheQuotaManager usage]):

2021-03-05  Chris Dumez  <cdumez@apple.com>

        Reduce use of CFRetain() / CFRelease() / CFAutoRelease() in WebKit
        https://bugs.webkit.org/show_bug.cgi?id=222760

        Reviewed by Darin Adler.

        Reduce use of CFRetain() / CFRelease() / CFAutoRelease() in WebKit by using RetainPtr<>.

        * Misc/WebLocalizableStrings.mm:
        * Misc/WebNSDataExtras.mm:
        (-[NSString _web_capitalizeRFC822HeaderFieldName]):
        * Plugins/Hosted/NetscapePluginHostManager.mm:
        (WebKit::preferredBundleLocalizationName):
        * Plugins/WebNetscapePluginView.mm:
        (-[WebNetscapePluginView status:]):
        * WebCoreSupport/WebProgressTrackerClient.mm:
        (WebProgressTrackerClient::progressEstimateChanged):
        * WebInspector/WebNodeHighlightView.mm:
        (layerPathWithHole):
        (layerPath):
        * WebView/WebFrame.mm:
        (createUniqueWebDataURL):
        * WebView/WebView.mm:
        (+[WebView _setCacheModel:]):

2021-03-04  Chris Dumez  <cdumez@apple.com>

        [macOS][WK2] Changing the system language does not update navigator.language
        https://bugs.webkit.org/show_bug.cgi?id=222619

        Reviewed by Per Arne Vollan.

        We need to listen for AppleLanguagePreferencesChangedNotification on mac WK1.
        This used to happen implicitly inside WTF::platformUserPreferredLanguages() but
        it is now explicit since we don't want/need it when using CFPREFS_DIRECT_MODE in WK2.

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

2021-03-03  Chris Dumez  <cdumez@apple.com>

        Unreviewed, reverting r273851.

        Caused some tests failures on macOS Big Sur

        Reverted changeset:

        "[macOS][WK2] Changing the system language does not update
        navigator.language"
        https://bugs.webkit.org/show_bug.cgi?id=222619
        https://commits.webkit.org/r273851

2021-03-03  Chris Dumez  <cdumez@apple.com>

        [macOS][WK2] Changing the system language does not update navigator.language
        https://bugs.webkit.org/show_bug.cgi?id=222619

        Reviewed by Per Arne Vollan.

        We need to listen for AppleLanguagePreferencesChangedNotification on mac WK1.
        This used to happen implicitly inside WTF::platformUserPreferredLanguages() but
        it is now explicit since we don't want/need it when using CFPREFS_DIRECT_MODE in WK2.

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

2021-03-03  Chris Dumez  <cdumez@apple.com>

        Use adoptNS() right away after calling [obj copy] / [obj mutableCopy]
        https://bugs.webkit.org/show_bug.cgi?id=222634

        Reviewed by Darin Adler.

        Use adoptNS() right away after calling [obj copy] / [obj mutableCopy] to minimize the chance of leaks.

        * Misc/WebNSPasteboardExtras.mm:
        (_writableTypesForImageWithArchive):
        * WebCoreSupport/WebApplicationCache.mm:
        (overrideBundleIdentifier):
        (+[WebApplicationCache initializeWithBundleIdentifier:]):
        (applicationCacheBundleIdentifier):
        * WebView/WebPreferences.mm:
        (classIBCreatorID):
        (+[WebPreferences _setIBCreatorID:]):
        (+[WebPreferences _IBCreatorID]):

2021-03-03  Megan Gardner  <megan_gardner@apple.com>

        Preserve information about the origin of the app highlight request
        https://bugs.webkit.org/show_bug.cgi?id=222223

        Reviewed by Wenson Hsieh.

        * WebCoreSupport/WebChromeClient.h:
        * WebCoreSupport/WebChromeClient.mm:
        (WebChromeClient::storeAppHighlight const):

2021-03-01  Peng Liu  <peng.liu6@apple.com>

        Rename the delegate property of WebAVPlayerView to webDelegate to fix a build failure with new SDKs
        https://bugs.webkit.org/show_bug.cgi?id=222560

        Reviewed by Jer Noble.

        We have to rename the `delegate` property of `WebAVPlayerView` because AVKit adds
        a `delegate` property to `AVPlayerView` which will conflict with the one in WebKit.

        * WebView/WebVideoFullscreenController.mm:
        (WebAVPlayerView_webDelegate):
        (WebAVPlayerView_setWebDelegate):
        (WebAVPlayerView_isFullScreen):
        (WebAVPlayerView_enterFullScreen):
        (WebAVPlayerView_exitFullScreen):
        (allocWebAVPlayerViewInstance):
        (-[WebVideoFullscreenController dealloc]):
        (-[WebVideoFullscreenController windowDidLoad]):
        (WebAVPlayerView_delegate): Deleted.
        (WebAVPlayerView_setDelegate): Deleted.

2021-02-28  Darin Adler  <darin@apple.com>

        [iOS] Reduce use of retain/release in WAKWindow and remove unneeded methods from that class
        https://bugs.webkit.org/show_bug.cgi?id=222330

        Reviewed by Chris Dumez.

        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]): Call LegacyTileCache functions directly rather
        than indirecting through WAKWindow methods.
        (-[WebView viewDidMoveToWindow]): Ditto. Also tweaked conditionals a little for clarity.

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

        Reduce explicit usage of [objC retain] in WebKit
        https://bugs.webkit.org/show_bug.cgi?id=222439

        Reviewed by Darin Adler.

        Reduce explicit usage of [objC retain] in WebKit by using RetainPtr<>.

        * Misc/WebNSURLExtras.mm:
        (-[NSString _webkit_rangeOfURLScheme]):
        * Misc/WebStringTruncator.mm:
        (+[WebStringTruncator centerTruncateString:toWidth:]):
        * Storage/WebStorageManager.mm:
        (+[WebStorageManager _storageDirectoryPath]):
        * WebCoreSupport/WebEditorClient.mm:
        (_WebCreateFragment):
        * WebView/WebHTMLRepresentation.mm:
        (+[WebHTMLRepresentation supportedMIMETypes]):
        (+[WebHTMLRepresentation supportedMediaMIMETypes]):
        (+[WebHTMLRepresentation supportedNonImageMIMETypes]):
        (+[WebHTMLRepresentation supportedImageMIMETypes]):
        (+[WebHTMLRepresentation unsupportedTextMIMETypes]):
        * WebView/WebPreferencesDefaultValues.mm:
        (WebKit::isFeatureFlagEnabled):
        * WebView/WebView.mm:
        (-[WebView _commonInitializationWithFrameName:groupName:]):
        (-[WebView initSimpleHTMLDocumentWithStyle:frame:preferences:groupName:]):
        (-[WebView _close]):
        (-[WebView _checkDidPerformFirstNavigation]):
        (-[WebView setPreferences:]):
        (-[WebView preferences]):
        (-[WebView setGroupName:]):
        * WebView/WebViewData.h:

2021-02-25  Truitt Savell  <tsavell@apple.com>

        Unreviewed, reverting r273462.

        Caused API build failures

        Reverted changeset:

        "[iOS] Reduce use of retain/release in WAKWindow and remove
        unneeded methods from that class"
        https://bugs.webkit.org/show_bug.cgi?id=222330
        https://commits.webkit.org/r273462

2021-02-23  Darin Adler  <darin@apple.com>

        [iOS] Reduce use of retain/release in WAKWindow and remove unneeded methods from that class
        https://bugs.webkit.org/show_bug.cgi?id=222330

        Reviewed by Chris Dumez.

        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]): Call LegacyTileCache functions directly rather
        than indirecting through WAKWindow methods.
        (-[WebView viewDidMoveToWindow]): Ditto. Also tweaked conditionals a little for clarity.

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

        Use adoptNS() as soon as we [[ObjcClass alloc] init] to avoid leaks
        https://bugs.webkit.org/show_bug.cgi?id=222237

        Reviewed by Darin Adler.

        * DefaultDelegates/WebDefaultUIDelegate.mm:
        (+[WebDefaultUIDelegate sharedUIDelegate]):
        * History/WebHistoryItem.mm:
        (-[WebHistoryItem copyWithZone:]):
        * Misc/WebIconDatabase.mm:
        (+[WebIconDatabase sharedIconDatabase]):
        * Misc/WebNSPasteboardExtras.mm:
        (_writableTypesForImageWithoutArchive):
        * Plugins/WebBaseNetscapePluginView.mm:
        (-[WebBaseNetscapePluginView cacheSnapshot]):
        * Plugins/WebNetscapePluginStream.mm:
        (WebNetscapePluginStream::deliverData):
        * Plugins/WebPluginController.mm:
        (pluginViews):
        (-[WebPluginController plugInViewWithArguments:fromPluginPackage:]):
        (+[WebPluginController addPlugInView:]):
        (+[WebPluginController isPlugInView:]):
        (-[WebPluginController destroyPlugin:]):
        (-[WebPluginController destroyAllPlugins]):
        * Plugins/WebPluginDatabase.mm:
        (sharedDatabase):
        (+[WebPluginDatabase sharedDatabase]):
        (+[WebPluginDatabase sharedDatabaseIfExists]):
        (+[WebPluginDatabase closeSharedDatabase]):
        (-[WebPluginDatabase refresh]):
        (-[WebPluginDatabase _plugInPaths]):
        (-[WebPluginDatabase _removePlugin:]):
        * Scripts/PreferencesTemplates/WebPreferencesExperimentalFeatures.mm.erb:
        * Scripts/PreferencesTemplates/WebPreferencesInternalFeatures.mm.erb:
        * WebView/WebDataSource.mm:
        (+[WebDataSource _repTypesAllowImageTypeOmission:]):
        * WebView/WebFrameView.mm:
        (+[WebFrameView _viewTypesAllowImageTypeOmission:]):
        * WebView/WebFullScreenController.mm:
        (createBackgroundFullscreenWindow):
        * WebView/WebHTMLRepresentation.mm:
        (regExpForLabels):
        * WebView/WebHTMLView.mm:
        (+[WebHTMLView _insertablePasteboardTypes]):
        * WebView/WebPreferences.mm:
        (standardPreferences):
        (webPreferencesInstances):
        (+[WebPreferences standardPreferences]):
        (+[WebPreferences _getInstanceForIdentifier:]):
        (+[WebPreferences _setInstance:forIdentifier:]):
        (+[WebPreferences _checkLastReferenceForIdentifier:]):
        * WebView/WebView.mm:
        (schemesWithRepresentationsSet):
        (outlookQuirksUserScriptContents):
        (-[WebView _injectOutlookQuirksScript]):
        (laBanquePostaleQuirksScript):
        (-[WebView _injectLaBanquePostaleQuirks]):
        (+[WebView _registerViewClass:representationClass:forURLScheme:]):
        (+[WebView _representationExistsForURLScheme:]):
        (+[WebView automaticallyNotifiesObserversForKey:]):
        (-[WebView _declaredKeys]):
        (-[WebView addPluginInstanceView:]):
        (-[WebView _enterFullScreenForElement:]):
        * WebView/WebViewData.h:

2021-02-19  Chris Dumez  <cdumez@apple.com>

        Review remaining usage of autorelease to make sure it is necessary
        https://bugs.webkit.org/show_bug.cgi?id=222177

        Reviewed by Geoffrey Garen.

        * Misc/WebNSObjectExtras.mm:
        (-[WebMainThreadInvoker forwardInvocation:]):
        * Plugins/WebNetscapePluginView.mm:
        (-[WebNetscapePluginView sendEvent:isDrawRect:]):
        * WebView/WebVideoFullscreenController.mm:
        (-[WebVideoFullscreenController init]):

2021-02-19  Devin Rousso  <drousso@apple.com>

        [Payment Request] add support for Apple Pay payment method mode
        https://bugs.webkit.org/show_bug.cgi?id=222128
        <rdar://problem/72320278>

        Reviewed by Wenson Hsieh.

        * WebCoreSupport/WebPaymentCoordinatorClient.h:
        * WebCoreSupport/WebPaymentCoordinatorClient.mm:
        (WebPaymentCoordinatorClient::completePaymentMethodModeChange):

2021-02-19  Devin Rousso  <drousso@apple.com>

        [Payment Request] add an `object data` to `PaymentDetailsBase` so that data specific to Apple Pay can be provided
        https://bugs.webkit.org/show_bug.cgi?id=222002
        <rdar://problem/72319946>

        Reviewed by Tim Horton.

        * WebCoreSupport/WebPaymentCoordinatorClient.h:
        * WebCoreSupport/WebPaymentCoordinatorClient.mm:
        (WebPaymentCoordinatorClient::completeShippingMethodSelection):
        (WebPaymentCoordinatorClient::completeShippingContactSelection):
        (WebPaymentCoordinatorClient::completePaymentMethodSelection):
        Use `ApplePay*Update` instead of duplicating its structure in another object (`ApplePaySessionPaymentRequest::*Update`).

2021-02-18  Wenson Hsieh  <wenson_hsieh@apple.com>

        Plumb an Optional<PageIdentifier> through WebPasteboardProxy
        https://bugs.webkit.org/show_bug.cgi?id=222071

        Reviewed by Tim Horton.

        Add `const PasteboardContext*` arguments to the `PasteboardStrategy` methods on `WebPlatformStrategies`.

        * WebCoreSupport/WebPlatformStrategies.h:
        * WebCoreSupport/WebPlatformStrategies.mm:
        (WebPlatformStrategies::getTypes):
        (WebPlatformStrategies::bufferForType):
        (WebPlatformStrategies::getPathnamesForType):
        (WebPlatformStrategies::allStringsForType):
        (WebPlatformStrategies::stringForType):
        (WebPlatformStrategies::changeCount):
        (WebPlatformStrategies::color):
        (WebPlatformStrategies::url):
        (WebPlatformStrategies::addTypes):
        (WebPlatformStrategies::setTypes):
        (WebPlatformStrategies::setBufferForType):
        (WebPlatformStrategies::setURL):
        (WebPlatformStrategies::setColor):
        (WebPlatformStrategies::setStringForType):
        (WebPlatformStrategies::getNumberOfFiles):
        (WebPlatformStrategies::typesSafeForDOMToReadAndWrite):
        (WebPlatformStrategies::writeCustomData):
        (WebPlatformStrategies::containsStringSafeForDOMToReadForType):
        (WebPlatformStrategies::informationForItemAtIndex):
        (WebPlatformStrategies::allPasteboardItemInfo):
        (WebPlatformStrategies::getPasteboardItemsCount):
        (WebPlatformStrategies::readBufferFromPasteboard):
        (WebPlatformStrategies::readURLFromPasteboard):
        (WebPlatformStrategies::readStringFromPasteboard):
        (WebPlatformStrategies::containsURLStringSuitableForLoading):
        (WebPlatformStrategies::urlStringSuitableForLoading):
        (WebPlatformStrategies::writeToPasteboard):
        (WebPlatformStrategies::updateSupportedTypeIdentifiers):

2021-02-17  Wenson Hsieh  <wenson_hsieh@apple.com>

        Plumb an Optional<PageIdentifier> through Pasteboard-related codepaths
        https://bugs.webkit.org/show_bug.cgi?id=221987

        Reviewed by Tim Horton.

        Create and pass in a `PasteboardContext` when creating a `Pasteboard`. See WebCore ChangeLog for more details.

        * WebCoreSupport/WebDragClient.mm:
        (WebDragClient::declareAndWriteDragImage):

2021-02-17  Chris Dumez  <cdumez@apple.com>

        Reduce explicit usage of [objC autorelease] in WebKit even further
        https://bugs.webkit.org/show_bug.cgi?id=222060

        Reviewed by Darin Adler.

        Reduce explicit usage of [objC autorelease] in WebKit further by using RetainPtr.

        * DOM/DOM.mm:
        (kit):
        * DOM/DOMAbstractView.mm:
        (kit):
        * DOM/DOMBlob.mm:
        (kit):
        * DOM/DOMCSSRule.mm:
        (kit):
        * DOM/DOMCSSRuleList.mm:
        (kit):
        * DOM/DOMCSSStyleDeclaration.mm:
        (kit):
        * DOM/DOMCSSValue.mm:
        (kit):
        * DOM/DOMCounter.mm:
        (kit):
        * DOM/DOMEvent.mm:
        (kit):
        * DOM/DOMFileList.mm:
        (kit):
        * DOM/DOMHTMLCollection.mm:
        (kit):
        * DOM/DOMHTMLOptionsCollection.mm:
        (kit):
        * DOM/DOMImplementation.mm:
        (kit):
        * DOM/DOMMediaError.mm:
        (kit):
        * DOM/DOMMediaList.mm:
        (kit):
        * DOM/DOMNamedNodeMap.mm:
        (kit):
        * DOM/DOMNode.mm:
        (kit):
        * DOM/DOMNodeIterator.mm:
        (kit):
        * DOM/DOMNodeList.mm:
        (kit):
        * DOM/DOMRGBColor.mm:
        (kit):
        * DOM/DOMRange.mm:
        (kit):
        * DOM/DOMRect.mm:
        (kit):
        * DOM/DOMStyleSheet.mm:
        (kit):
        * DOM/DOMStyleSheetList.mm:
        (kit):
        * DOM/DOMTimeRanges.mm:
        (kit):
        * DOM/DOMTokenList.mm:
        (kit):
        * DOM/DOMTreeWalker.mm:
        (kit):
        * DOM/DOMXPath.mm:
        (kit):
        * DOM/DOMXPathExpression.mm:
        (kit):
        * DOM/DOMXPathResult.mm:
        (kit):
        * DOM/WebDOMOperations.mm:
        (-[DOMNode webArchive]):
        (-[DOMNode webArchiveByFilteringSubframes:]):
        (-[DOMRange webArchive]):
        * DefaultDelegates/WebDefaultContextMenuDelegate.mm:
        (-[WebDefaultUIDelegate menuItemWithTag:target:representedObject:]):
        * History/WebBackForwardList.mm:
        (kit):
        (-[WebBackForwardList addItem:]):
        (-[WebBackForwardList backItem]):
        (-[WebBackForwardList currentItem]):
        (-[WebBackForwardList forwardItem]):
        (-[WebBackForwardList itemAtIndex:]):
        * History/WebHistory.mm:
        (-[WebHistoryPrivate data]):
        * History/WebHistoryItem.mm:
        (kit):
        (+[WebHistoryItem entryWithURL:]):
        * Misc/WebKitNSStringExtras.mm:
        (-[NSString _webkit_stringByTrimmingWhitespace]):
        * Misc/WebNSDataExtras.mm:
        (-[NSData _webkit_parseRFC822HeaderFields]):
        * Misc/WebNSObjectExtras.mm:
        (-[WebMainThreadInvoker forwardInvocation:]):
        (-[WebMainThreadInvoker handleException:]):
        (+[NSObject _webkit_invokeOnMainThread]):
        (-[NSObject _webkit_invokeOnMainThread]):
        * Misc/WebNSURLExtras.mm:
        (-[NSURL _web_originalDataAsString]):
        (-[NSURL _web_hostString]):
        * Plugins/Hosted/HostedNetscapePluginStream.mm:
        (WebKit::HostedNetscapePluginStream::pluginCancelledConnectionError const):
        * Plugins/WebBasePluginPackage.mm:
        (+[WebBasePluginPackage pluginWithPath:]):
        * Plugins/WebNetscapePluginStream.mm:
        (WebNetscapePluginStream::pluginCancelledConnectionError const):
        * Plugins/WebNetscapePluginView.mm:
        (-[WebNetscapePluginView sendEvent:isDrawRect:]):
        * Plugins/WebPluginContainerCheck.mm:
        (+[WebPluginContainerCheck checkWithRequest:target:resultObject:selector:controller:contextInfo:]):
        * Plugins/WebPluginDatabase.mm:
        (-[WebPluginDatabase _plugInPaths]):
        * WebCoreSupport/WebEditorClient.mm:
        (+[WebUndoStep stepWithUndoStep:]):
        * WebCoreSupport/WebFrameLoaderClient.mm:
        (WebFrameLoaderClient::convertMainResourceLoadToDownload):
        (makeFormFieldValuesDictionary):
        (WebFrameLoaderClient::pluginWillHandleLoadError const):
        (WebFrameLoaderClient::createPlugin):
        * WebCoreSupport/WebInspectorClient.mm:
        (-[WebInspectorWindowController webView:contextMenuItemsForElement:defaultMenuItems:]):
        * WebCoreSupport/WebSecurityOrigin.mm:
        * WebView/WebArchive.mm:
        (-[WebArchive data]):
        * WebView/WebDataSource.mm:
        (-[WebDataSource _fileWrapperForURL:]):
        (-[WebDataSource webArchive]):
        (-[WebDataSource mainResource]):
        (-[WebDataSource subresourceForURL:]):
        * WebView/WebDeviceOrientationProviderMock.mm:
        (-[WebDeviceOrientationProviderMockInternal lastOrientation]):
        * WebView/WebFrame.mm:
        (-[WebFrame elementAtPoint:]):
        (-[WebFrame parentFrame]):
        * WebView/WebFrameView.mm:
        (-[WebFrameView initWithFrame:]):
        (-[WebFrameView _setCustomScrollViewClass:]):
        * WebView/WebHTMLRepresentation.mm:
        (-[WebHTMLRepresentation documentSource]):
        (-[WebHTMLRepresentation attributedStringFrom:startOffset:to:endOffset:]):
        * WebView/WebHTMLView.mm:
        (+[WebHTMLView _excludedElementsForAttributedStringConversion]):
        (-[WebHTMLView _plainTextFromPasteboard:]):
        (-[WebHTMLView view:stringForToolTip:point:userData:]):
        (-[WebHTMLView rightMouseUp:]):
        (-[WebHTMLView menuForEvent:]):
        (-[WebHTMLView scrollWheel:]):
        (-[WebHTMLView acceptsFirstMouse:]):
        (-[WebHTMLView shouldDelayWindowOrderingForEvent:]):
        (-[WebHTMLView mouseDown:]):
        (-[WebHTMLView mouseDragged:]):
        (-[WebHTMLView namesOfPromisedFilesDroppedAtDestination:]):
        (-[WebHTMLView mouseUp:]):
        (-[WebHTMLView keyDown:]):
        (-[WebHTMLView keyUp:]):
        (-[WebHTMLView flagsChanged:]):
        (-[WebHTMLView _fontAttributesFromFontPasteboard]):
        (-[WebHTMLView performKeyEquivalent:]):
        (-[WebHTMLView textStorage]):
        (-[WebHTMLView pasteboardTypesForSelection]):
        (-[WebHTMLView _legacyAttributedStringFrom:offset:to:offset:]):
        (-[WebHTMLView attributedString]):
        (-[WebHTMLView selectedAttributedString]):
        (-[WebHTMLView elementAtPoint:allowShadowContent:]):
        * WebView/WebImmediateActionController.mm:
        (-[WebImmediateActionController _defaultAnimationController]):
        * WebView/WebNotification.mm:
        (-[WebNotification origin]):
        * WebView/WebPDFView.mm:
        (-[WebPDFView selectionImageForcingBlackText:]):
        (-[WebPDFView _scaledAttributedString:]):
        * WebView/WebResource.mm:
        (-[WebResource _initWithData:URL:MIMEType:textEncodingName:frameName:response:copyData:]):
        (-[WebResource _fileWrapperRepresentation]):
        (-[WebResource _response]):
        * WebView/WebScriptWorld.mm:
        (+[WebScriptWorld world]):
        (+[WebScriptWorld findOrCreateWorld:]):
        * WebView/WebVideoFullscreenController.mm:
        (-[WebVideoFullscreenController init]):
        * WebView/WebView.mm:
        (-[WebView _menuForElement:defaultItems:]):
        (+[WebView _registerViewClass:representationClass:forURLScheme:]):
        (-[WebView _displayURL]):
        (-[WebView textIteratorForRect:]):
        (+[WebView MIMETypesShownAsHTML]):

2021-02-17  Wenson Hsieh  <wenson_hsieh@apple.com>

        [macOS] Introduce a new context menu item to preview images
        https://bugs.webkit.org/show_bug.cgi?id=221917
        <rdar://problem/74363578>

        Reviewed by Darin Adler and Tim Horton.

        Legacy WebKit won't be supporting this new context menu action; see other ChangeLog entries for more details.

        * WebView/WebHTMLView.mm:
        (toTag):

2021-02-16  Megan Gardner  <megan_gardner@apple.com>

        Change App Highlights API to operate in terms of a single serialized highlight at a time
        https://bugs.webkit.org/show_bug.cgi?id=221802

        Reviewed by Tim Horton.

        * WebCoreSupport/WebChromeClient.h:
        * WebCoreSupport/WebChromeClient.mm:
        (WebChromeClient::storeAppHighlight const):
        (WebChromeClient::updateAppHighlightsStorage const): Deleted.

2021-02-16  Chris Dumez  <cdumez@apple.com>

        Reduce explicit usage of [objC release] in WebKit even more
        https://bugs.webkit.org/show_bug.cgi?id=221914

        Reviewed by Alex Christensen.

        * History/WebHistory.mm:
        (+[WebHistory setOptionalSharedHistory:]):
        * Plugins/WebPluginDatabase.mm:
        (+[WebPluginDatabase setAdditionalWebPlugInPaths:]):
        * WebCoreSupport/WebChromeClient.mm:
        (WebChromeClient::enterFullScreenForElement):
        * WebCoreSupport/WebFrameLoaderClient.mm:
        (WebFrameLoaderClient::updateGlobalHistory):
        (NetscapePluginWidget::getFormValue):
        * WebInspector/WebNodeHighlightView.mm:
        (-[WebNodeHighlightView _attach:numLayers:]):
        * WebView/WebFrameView.mm:
        (-[WebFrameView _makeDocumentViewForDataSource:]):
        * WebView/WebView.mm:
        (-[WebView _commonInitializationWithFrameName:groupName:]):
        (-[WebView initSimpleHTMLDocumentWithStyle:frame:preferences:groupName:]):
        (-[WebView _closePluginDatabases]):
        (-[WebView _close]):
        (-[WebView inspector]):
        (-[WebView setShowingInspectorIndication:]):
        (-[WebView _setFormDelegate:]):
        (-[WebView _formDelegateForwarder]):
        (-[WebView _UIKitDelegateForwarder]):
        (-[WebView _policyDelegateForwarder]):
        (-[WebView _UIDelegateForwarder]):
        (-[WebView _editingDelegateForwarder]):
        (-[WebView _setUIKitDelegate:]):
        (-[WebView caretChangeListeners]):
        (-[WebView addCaretChangeListener:]):
        (-[WebView _setAdditionalWebPlugInPaths:]):
        (-[WebView setBackgroundColor:]):
        (-[WebView backgroundColor]):
        (-[WebView _fixedPositionContent]):
        (-[WebView setUIDelegate:]):
        (-[WebView _resourceLoadDelegateForwarder]):
        (-[WebView setResourceLoadDelegate:]):
        (-[WebView setPolicyDelegate:]):
        (-[WebView _frameLoadDelegateForwarder]):
        (-[WebView setFrameLoadDelegate:]):
        (-[WebView setApplicationNameForUserAgent:]):
        (-[WebView applicationNameForUserAgent]):
        (-[WebView setMediaStyle:]):
        (-[WebView mediaStyle]):
        (-[WebView _userAgentString]):
        (-[WebView setHostWindow:]):
        (-[WebView hostWindow]):
        (-[WebView setCurrentNodeHighlight:]):
        (-[WebView currentNodeHighlight]):
        (-[WebView _allowsLinkPreview]):
        (-[WebView _setAllowsLinkPreview:]):
        (-[WebView setEditingDelegate:]):
        (-[WebView _immediateActionController]):
        * WebView/WebViewData.h:
        * WebView/WebViewData.mm:
        (-[WebViewPrivate dealloc]):

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

        Reduce explicit usage of [objC release] in WebKit
        https://bugs.webkit.org/show_bug.cgi?id=221780
        <rdar://problem/74282389>

        Reviewed by Darin Adler.

        Apply review feedback from Darin Adler and Sam Weinig after r272789.

        * DOM/DOMUIKitExtensions.mm:
        (-[DOMNode absoluteQuads]):
        (-[DOMHTMLAreaElement absoluteQuadsWithOwner:]):
        * DOM/ExceptionHandlers.mm:
        (raiseDOMErrorException):
        * DefaultDelegates/WebDefaultUIDelegate.mm:
        (-[WebDefaultUIDelegate webView:runJavaScriptTextInputPanelWithPrompt:defaultText:initiatedByFrame:]):
        * History/WebHistory.mm:
        (-[WebHistoryPrivate visitedURL:withTitle:]):
        (-[WebHistory _visitedURL:withTitle:method:wasFailure:]):
        * History/WebHistoryItem.mm:
        (-[WebHistoryItem initFromDictionaryRepresentation:]):
        * Misc/WebNSDataExtras.mm:
        (-[NSData _webkit_parseRFC822HeaderFields]):
        * Misc/WebNSPasteboardExtras.mm:
        (-[NSPasteboard _web_declareAndWriteDragImageForElement:URL:title:archive:source:]):
        * Plugins/Hosted/NetscapePluginHostManager.mm:
        (WebKit::NetscapePluginHostManager::spawnPluginHost):
        * Plugins/Hosted/NetscapePluginInstanceProxy.mm:
        (WebKit::NetscapePluginInstanceProxy::performRequest):
        * WebCoreSupport/WebChromeClient.mm:
        (WebChromeClient::createWindow):
        (WebChromeClient::addMessageToConsole):
        * WebCoreSupport/WebEditorClient.mm:
        (attributesForAttributedStringConversion):
        * WebCoreSupport/WebFrameLoaderClient.mm:
        (WebFrameLoaderClient::actionDictionary const):
        (WebFrameLoaderClient::createFrame):
        * WebCoreSupport/WebInspectorClient.mm:
        (-[WebInspectorWindowController initWithInspectedWebView:isUnderTest:]):
        (-[WebInspectorWindowController window]):
        * WebView/WebDataSource.mm:
        (-[WebDataSource _documentFragmentWithArchive:]):
        (-[WebDataSource _makeRepresentation]):
        * WebView/WebFrame.mm:
        * WebView/WebFrameView.mm:
        * WebView/WebHTMLView.mm:
        (-[WebHTMLView _updateMouseoverWithEvent:]):
        * WebView/WebNavigationData.mm:
        * WebView/WebPDFRepresentation.mm:
        (-[WebPDFRepresentation finishedLoadingWithDataSource:]):
        * WebView/WebPDFView.mm:
        (-[WebPDFView _menuItemsFromPDFKitForEvent:]):
        * WebView/WebPolicyDelegate.mm:
        * WebView/WebScriptDebugger.mm:
        (WebScriptDebugger::sourceParsed):
        * WebView/WebView.mm:
        (-[WebView _openNewWindowWithRequest:]):
        * WebView/WebWindowAnimation.h:
        * WebView/WebWindowAnimation.mm:
        (-[WebWindowScaleAnimation setSubAnimation:]):

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

        Reduce explicit usage of [objC release] in WebKit
        https://bugs.webkit.org/show_bug.cgi?id=221780

        Reviewed by Alex Christensen.

        Reduce explicit usage of [objC release] in WebKit by using smart pointers.

        * DOM/DOMUIKitExtensions.mm:
        (-[DOMNode absoluteQuads]):
        (-[DOMHTMLAreaElement absoluteQuadsWithOwner:]):
        * DOM/ExceptionHandlers.mm:
        (raiseDOMErrorException):
        * DefaultDelegates/WebDefaultUIDelegate.mm:
        (-[WebDefaultUIDelegate webView:runJavaScriptTextInputPanelWithPrompt:defaultText:initiatedByFrame:]):
        * History/WebHistory.mm:
        (-[WebHistoryPrivate init]):
        (-[WebHistoryPrivate dealloc]):
        (-[WebHistoryPrivate removeItemFromDateCaches:]):
        (-[WebHistoryPrivate addItemToDateCaches:]):
        (-[WebHistoryPrivate visitedURL:withTitle:]):
        (-[WebHistoryPrivate addItem:discardDuplicate:]):
        (-[WebHistoryPrivate rebuildHistoryByDayIfNeeded:]):
        (-[WebHistoryPrivate removeAllItems]):
        (-[WebHistoryPrivate orderedLastVisitedDays]):
        (-[WebHistoryPrivate loadHistoryGutsFromURL:savedItemsCount:collectDiscardedItemsInto:error:]):
        (-[WebHistoryPrivate addVisitedLinksToVisitedLinkStore:]):
        (-[WebHistory loadFromURL:error:]):
        (-[WebHistory _visitedURL:withTitle:method:wasFailure:]):
        * History/WebHistoryItem.mm:
        (-[WebHistoryItem initFromDictionaryRepresentation:]):
        * Misc/WebDownload.mm:
        (-[WebDownloadInternal dealloc]):
        (-[WebDownloadInternal setRealDelegate:]):
        (-[WebDownloadInternal downloadDidBegin:]):
        (-[WebDownloadInternal download:didReceiveAuthenticationChallenge:]):
        (-[WebDownloadInternal download:didReceiveResponse:]):
        (-[WebDownloadInternal download:didReceiveDataOfLength:]):
        (-[WebDownloadInternal download:decideDestinationWithSuggestedFilename:]):
        (-[WebDownloadInternal download:didCreateDestination:]):
        (-[WebDownloadInternal downloadDidFinish:]):
        (-[WebDownloadInternal download:didFailWithError:]):
        * Misc/WebNSDataExtras.mm:
        (-[NSData _webkit_parseRFC822HeaderFields]):
        * Misc/WebNSPasteboardExtras.mm:
        (-[NSPasteboard _web_writeFileWrapperAsRTFDAttachment:]):
        (-[NSPasteboard _web_declareAndWriteDragImageForElement:URL:title:archive:source:]):
        * Plugins/Hosted/NetscapePluginHostManager.mm:
        (WebKit::NetscapePluginHostManager::spawnPluginHost):
        * Plugins/Hosted/NetscapePluginInstanceProxy.mm:
        (WebKit::NetscapePluginInstanceProxy::performRequest):
        * Plugins/WebNetscapePluginStream.mm:
        (WebNetscapePluginStream::didReceiveData):
        * Plugins/WebNetscapePluginView.mm:
        (-[WebNetscapePluginView pluginView:receivedData:]):
        (-[WebNetscapePluginView loadPluginRequest:]):
        (-[WebNetscapePluginView loadRequest:inTarget:withNotifyData:sendNotification:]):
        * Plugins/WebPluginController.mm:
        (-[WebPluginController pluginView:receivedResponse:]):
        * Plugins/WebPluginDatabase.mm:
        (-[WebPluginDatabase refresh]):
        (-[WebPluginDatabase _removePlugin:]):
        (-[WebPluginDatabase _scanForNewPlugins]):
        * WebCoreSupport/WebChromeClient.mm:
        (WebChromeClient::createWindow):
        (WebChromeClient::addMessageToConsole):
        (WebChromeClient::mouseDidMoveOverElement):
        (WebChromeClient::exceededDatabaseQuota):
        (WebChromeClient::reachedApplicationCacheOriginQuota):
        (WebChromeClient::runOpenPanel):
        (WebChromeClient::exitFullScreenForElement):
        * WebCoreSupport/WebEditorClient.mm:
        (attributesForAttributedStringConversion):
        * WebCoreSupport/WebFrameLoaderClient.mm:
        (WebFrameLoaderClient::forceLayoutForNonHTML):
        (WebFrameLoaderClient::dispatchCreatePage):
        (WebFrameLoaderClient::committedLoad):
        (WebFrameLoaderClient::prepareForDataSourceReplacement):
        (WebFrameLoaderClient::createDocumentLoader):
        (WebFrameLoaderClient::savePlatformDataToCachedFrame):
        (WebFrameLoaderClient::transitionToCommittedForNewPage):
        (WebFrameLoaderClient::actionDictionary const):
        (WebFrameLoaderClient::createFrame):
        (pluginView):
        (WebFrameLoaderClient::createPlugin):
        * WebCoreSupport/WebGeolocationClient.mm:
        (WebGeolocationClient::requestPermission):
        (-[WebGeolocationProviderInitializationListener initializationAllowedWebView:]):
        * WebCoreSupport/WebInspectorClient.mm:
        (-[WebInspectorWindowController init]):
        (-[WebInspectorWindowController initWithInspectedWebView:isUnderTest:]):
        (-[WebInspectorWindowController dealloc]):
        (-[WebInspectorWindowController frontendWebView]):
        (-[WebInspectorWindowController window]):
        (-[WebInspectorWindowController showWindow:]):
        (-[WebInspectorWindowController webView:runOpenPanelForFileButtonWithResultListener:allowMultipleFiles:]):
        * WebCoreSupport/WebNotificationClient.mm:
        (WebNotificationClient::requestPermission):
        (WebNotificationClient::checkPermission):
        * WebView/WebArchive.mm:
        (-[WebArchivePrivate dealloc]):
        (-[WebArchive initWithMainResource:subresources:subframeArchives:]):
        (-[WebArchive mainResource]):
        (-[WebArchive subresources]):
        (-[WebArchive subframeArchives]):
        * WebView/WebDataSource.mm:
        (-[WebDataSource _documentFragmentWithArchive:]):
        (-[WebDataSource _makeRepresentation]):
        * WebView/WebFrame.mm:
        (-[WebFramePrivate dealloc]):
        (-[WebFramePrivate setWebFrameView:]):
        (+[WebFrame _createFrameWithPage:frameName:frameView:ownerElement:]):
        (+[WebFrame _createMainFrameWithPage:frameName:frameView:]):
        (+[WebFrame _createMainFrameWithSimpleHTMLDocumentWithPage:frameView:style:]):
        (-[WebFrame getDictationResultRanges:andMetadatas:]):
        (-[WebFrame frameView]):
        * WebView/WebFrameInternal.h:
        * WebView/WebFrameView.mm:
        (-[WebFrameViewPrivate dealloc]):
        (-[WebFrameView _scrollView]):
        (-[WebFrameView _install]):
        (-[WebFrameView initWithFrame:]):
        (-[WebFrameView _setCustomScrollViewClass:]):
        * WebView/WebFullScreenController.mm:
        (-[WebFullScreenController init]):
        * WebView/WebHTMLView.mm:
        (-[WebHTMLView _updateMouseoverWithEvent:]):
        * WebView/WebNavigationData.mm:
        (-[WebNavigationDataPrivate dealloc]):
        (-[WebNavigationData initWithURLString:title:originalRequest:response:hasSubstituteData:clientRedirectSource:]):
        (-[WebNavigationData url]):
        (-[WebNavigationData title]):
        (-[WebNavigationData originalRequest]):
        (-[WebNavigationData response]):
        (-[WebNavigationData clientRedirectSource]):
        * WebView/WebPDFDocumentExtras.mm:
        (allScriptsInPDFDocument):
        * WebView/WebPDFRepresentation.mm:
        (-[WebPDFRepresentation finishedLoadingWithDataSource:]):
        * WebView/WebPDFView.mm:
        (-[WebPDFView menuForEvent:]):
        (-[WebPDFView countMatchesForText:inDOMRange:options:limit:markMatches:]):
        (-[WebPDFView attributedString]):
        (-[WebPDFView selectionImageForcingBlackText:]):
        (-[WebPDFView _menuItemsFromPDFKitForEvent:]):
        (-[WebPDFView _nextMatchFor:direction:caseSensitive:wrap:fromSelection:startInSelection:]):
        * WebView/WebPolicyDelegate.mm:
        (-[WebPolicyDecisionListenerPrivate initWithTarget:action:]):
        (-[WebPolicyDecisionListenerPrivate dealloc]):
        (-[WebPolicyDecisionListener _usePolicy:]):
        (-[WebPolicyDecisionListener _invalidate]):
        * WebView/WebPreferences.mm:
        (+[WebPreferences _setIBCreatorID:]):
        * WebView/WebScriptDebugger.mm:
        (WebScriptDebugger::sourceParsed):
        * WebView/WebTextCompletionController.mm:
        (-[WebTextCompletionController _buildUI]):
        * WebView/WebVideoFullscreenController.mm:
        (-[WebVideoFullscreenController init]):
        * WebView/WebView.mm:
        (-[WebView _registerDraggedTypes]):
        (-[WebView _commonInitializationWithFrameName:groupName:]):
        (+[WebView _supportedFileExtensions]):
        (-[WebView initSimpleHTMLDocumentWithStyle:frame:preferences:groupName:]):
        (-[WebView _downloadURL:]):
        (-[WebView _openNewWindowWithRequest:]):
        (-[WebView _didStartProvisionalLoadForFrame:]):
        (-[WebView caretChanged]):
        (-[WebView setBackgroundColor:]):
        (+[WebView setMIMETypesShownAsHTML:]):
        (-[WebView setPreferences:]):
        (-[WebView setPreferencesIdentifier:]):
        (-[WebView setCurrentNodeHighlight:]):
        (-[WebView stopLoadingAndClear]):
        (-[WebView _openFrameInNewWindowFromMenu:]):
        (-[WebView _searchWithGoogleFromMenu:]):
        * WebView/WebWindowAnimation.mm:
        (-[WebWindowScaleAnimation setSubAnimation:]):

2021-02-10  Rob Buis  <rbuis@igalia.com>

        Use event loop to set title
        https://bugs.webkit.org/show_bug.cgi?id=218496

        Reviewed by Darin Adler.

        Adjust to API change.

        * WebCoreSupport/WebChromeClient.h:
        * WebCoreSupport/WebChromeClient.mm:
        (WebChromeClient::print):

2021-02-08  Ryan Haddad  <ryanhaddad@apple.com>

        Permission request API for MediaKeySystem access support
        https://bugs.webkit.org/show_bug.cgi?id=221187

        Unreviewed build fix for macCatalyst.

        * WebCoreSupport/WebMediaKeySystemClient.h: Add a check for ENABLE(ENCRYPTED_MEDIA).

2021-02-08  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, reverting r272480, r272481, and r272500.
        https://bugs.webkit.org/show_bug.cgi?id=221586

        Caused assertion failure seen with EME tests

        Reverted changesets:

        "Permission request API for MediaKeySystem access support"
        https://bugs.webkit.org/show_bug.cgi?id=221187
        https://trac.webkit.org/changeset/272480

        "Unreviewed, build fix after r272480"
        https://trac.webkit.org/changeset/272481

        "Permission request API for MediaKeySystem access support"
        https://bugs.webkit.org/show_bug.cgi?id=221187
        https://trac.webkit.org/changeset/272500

2021-02-08  Brady Eidson  <beidson@apple.com>

        Make the UserContentController for ServiceWorker pages be non-optional.
        <rdar://problem/71434565> and https://bugs.webkit.org/show_bug.cgi?id=221503

        Reviewed by Alex Christensen.

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

2021-02-08  Ryan Haddad  <ryanhaddad@apple.com>

        Permission request API for MediaKeySystem access support
        https://bugs.webkit.org/show_bug.cgi?id=221187

        Unreviewed build fix for macCatalyst.

        * WebCoreSupport/WebMediaKeySystemClient.h: Add a check for ENABLE(ENCRYPTED_MEDIA).

2021-01-29  Darin Adler  <darin@apple.com>

        Check activeDocumentLoader() for null consistently everywhere
        https://bugs.webkit.org/show_bug.cgi?id=221167

        Reviewed by Anders Carlsson.

        * Plugins/WebNetscapePluginStream.mm:
        (WebNetscapePluginStream::cancelLoadWithError): Added null check before calling
        isLoadingMainResource.

2021-01-30  Wenson Hsieh  <wenson_hsieh@apple.com>

        [macOS] Remove support for image controls
        https://bugs.webkit.org/show_bug.cgi?id=221156

        Reviewed by Tim Horton.

        Turn these legacy WebKit SPI methods into empty stubs.

        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (-[WebPreferences imageControlsEnabled]):
        (-[WebPreferences setImageControlsEnabled:]):

2021-01-26  BJ Burg  <bburg@apple.com>

        REGRESSION(r267641): WebKitDeveloperExtras preference has no effect for WebKitLegacy clients
        https://bugs.webkit.org/show_bug.cgi?id=220996
        <rdar://72173139>

        Reviewed by Sam Weinig.

        Read back this preference when propagating it, because the value depends on
        more than just the preference key. For example, it allows Debug builds to act
        as if the preference is always enabled.

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

2021-01-22  Nikolas Zimmermann  <nzimmermann@igalia.com>

        Finish introduction of RenderLayerScrollableArea: remove remaining glue code from RenderLayer
        https://bugs.webkit.org/show_bug.cgi?id=220851

        Reviewed by Simon Fraser.

        Remove the last remaining glue code from RenderLayer, that was added
        in r271559 to minimize the patch size. After this patch all call sites
        use RenderLayerScrollableArea directly, removing the need for proxy
        methods in RenderLayer that forward to RenderLayerScrollableArea.

        The decade old bug 60305 (Separate scrolling code out of RenderLayer)
        is finally closed.

        Covered by existing tests.

        * DOM/DOMHTML.mm:
        (-[DOMHTMLElement scrollXOffset]):
        (-[DOMHTMLElement scrollYOffset]):
        (-[DOMHTMLElement setScrollXOffset:scrollYOffset:adjustForIOSCaret:]):
        * WebView/WebFrame.mm:
        (-[WebFrame _scrollDOMRangeToVisible:]):
        (-[WebFrame _scrollDOMRangeToVisible:withInset:]):

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

        Support AbortSignal in addEventListenerOptions to unsubscribe from events
        https://bugs.webkit.org/show_bug.cgi?id=218753
        <rdar://problem/71258012>

        Reviewed by Darin Adler.

        Minor build fixes.

        * DOM/DOMNode.mm:

2021-01-21  Devin Rousso  <drousso@apple.com>

        [Apple Pay] use the first item in `shippingOptions` even when it's not `selected`
        https://bugs.webkit.org/show_bug.cgi?id=220810

        Reviewed by Andy Estes.

        * WebCoreSupport/WebChromeClient.mm:
        (stringForMessageSource):
        Add a new `PaymentRequest` value to the `ChannelSource` enum.

2021-01-20  Wenson Hsieh  <wenson_hsieh@apple.com>

        [macOS] Include an origin identifier when writing promised image data to the drag pasteboard
        https://bugs.webkit.org/show_bug.cgi?id=220782

        Reviewed by Megan Gardner.

        See WebKit ChangeLog for more details.

        * Misc/WebNSPasteboardExtras.mm:
        (-[NSPasteboard _web_declareAndWriteDragImageForElement:URL:title:archive:source:]):

2021-01-19  Keith Rollin  <krollin@apple.com>

        Modularize WebKitLegacy.framework
        https://bugs.webkit.org/show_bug.cgi?id=220026
        <rdar://57173237>

        Reviewed by Darin Adler.

        Add .modulemap files to WebKitLegacy to help speed up client builds.

        In WebKitLegacy.xcconfig, enable module creation for macOS and iOS.
        Add the associated umbrella header files, and enable the validation of
        the module files.

        For WebHTMLViewPrivate.h, ensure that ENABLE_NETSCAPE_PLUGIN_API is
        defined before checking its value, thereby avoiding a compiler
        warning-turned-error that an uninitialized symbol is being used.

        For WebBackForwardListPrivate.h, make the parameter name in a function
        comment match the actual parameter name, thereby avoiding a
        warning-turned-error from the tool that processes headers into built
        modules.

        * Configurations/WebKitLegacy.xcconfig:
        * History/WebBackForwardListPrivate.h:
        * Misc/WebKitLegacy_Private.h: Added.
        * Misc/WebKitLegacy_iOS_Private.h: Added.
        * Misc/WebKitLegacy_macOS_Private.h: Copied from Source/WebKitLegacy/mac/History/WebBackForwardListPrivate.h.
        * WebView/WebHTMLViewPrivate.h:

2021-01-18  Nikolas Zimmermann  <nzimmermann@igalia.com>

        Remove recently added glue code: RenderLayer::(setAdjustForIOSCaretWhenScrolling / setScrollShouldClearLatchedState / setConstrainsScrollingToContentEdge)
        https://bugs.webkit.org/show_bug.cgi?id=220708

        Reviewed by Adrian Perez de Castro.

        Follow-up on patch adressing the removal of the glue code that
        forwards calls from RenderLayer to RenderLayerScrollableArea (see
        webkit.org/b/60305).

        Covered by existing tests.

        * DOM/DOMHTML.mm:
        (-[DOMHTMLElement setScrollXOffset:scrollYOffset:adjustForIOSCaret:]):
        * WebView/WebFrame.mm:
        (-[WebFrame _scrollDOMRangeToVisible:]):
        (-[WebFrame _scrollDOMRangeToVisible:withInset:]):

2021-01-18  Nikolas Zimmermann  <nzimmermann@igalia.com>

        Remove recently added glue code: RenderLayer::(scrollToOffset / scrollToXOffset / scrollToYOffset)
        https://bugs.webkit.org/show_bug.cgi?id=220705

        Reviewed by Adrian Perez de Castro.

        Follow-up on patch adressing the removal of the glue code that
        forwards calls from RenderLayer to RenderLayerScrollableArea (see
        webkit.org/b/60305).

        Covered by existing tests.

        * DOM/DOMHTML.mm:
        (-[DOMHTMLElement setScrollXOffset:scrollYOffset:adjustForIOSCaret:]):

2021-01-14  Geoffrey Garen  <ggaren@apple.com>

        Removed most uses of dispatch_async(dispatch_get_main_queue(), ...)
        https://bugs.webkit.org/show_bug.cgi?id=220066

        Reviewed by Antti Koivisto.

        dispatch_async has two downsides:

        (1) Its order is undefined (and in practice highly variable) relative to
        other WebKit operations. This sometimes causes flakiness.

        (2) It doesn't honor the RunLoop first paint optimization.

        We can use RunLoop::dispatch() instead.

        * Plugins/npapi.mm:
        (NPN_PluginThreadAsyncCall):
        * WebCoreSupport/WebEditorClient.mm:
        (WebEditorClient::requestCandidatesForSelection):
        * WebCoreSupport/WebFrameLoaderClient.mm:
        * WebView/WebImmediateActionController.mm:
        (-[WebImmediateActionController immediateActionRecognizerWillPrepare:]):
        * WebView/WebView.mm:
        (+[WebView willEnterBackgroundWithCompletionHandler:]):
        (-[_WebSafeAsyncForwarder forwardInvocation:]):
        (-[WebView performDragOperation:]):
        (-[WebView setEditable:]):

2021-01-13  Alex Christensen  <achristensen@webkit.org>

        Remove deprecated script and stylesheet injection SPI, replaced with more inclusively-named SPI
        https://bugs.webkit.org/show_bug.cgi?id=214936

        Reviewed by Youenn Fablet.

        rdar://64376341 tracks the adoption of the replacement.  Once that is done, we can remove the old SPI.

        * WebView/WebView.mm:
        (+[WebView _addUserScriptToGroup:world:source:url:whitelist:blacklist:injectionTime:]): Deleted.
        (+[WebView _addUserScriptToGroup:world:source:url:whitelist:blacklist:injectionTime:injectedFrames:]): Deleted.
        (+[WebView _addUserStyleSheetToGroup:world:source:url:whitelist:blacklist:]): Deleted.
        (+[WebView _addUserStyleSheetToGroup:world:source:url:whitelist:blacklist:injectedFrames:]): Deleted.
        * WebView/WebViewPrivate.h:

2021-01-13  Martin Robinson  <mrobinson@igalia.com>

        Scroll-snap points should be triggered during programmatic scroll
        https://bugs.webkit.org/show_bug.cgi?id=145330
        <rdar://problem/21467780>

        Reviewed by Simon Fraser.

        * DOM/DOMHTML.mm:
        (-[DOMHTMLElement setScrollXOffset:scrollYOffset:adjustForIOSCaret:]): Update to use
        ScrollPositionChangeOptions.

2021-01-12  Tim Horton  <timothy_horton@apple.com>

        QuickLook snapshots are missing some image content
        https://bugs.webkit.org/show_bug.cgi?id=220571
        <rdar://problem/72184373>

        Reviewed by Simon Fraser.

        * WebView/WebFrame.mm:
        (-[WebFrame _paintBehaviorForDestinationContext:]):
        Quick Look snapshots use WebView, and call displayRectIgnoringOpacity:inContext:
        in order to paint it into a bitmap context. However, if the WebView is layer-backed,
        including for reasons outside of WebKit or Quick Look's control, it currently
        does a "normal" paint (as opposed to a snapshotting + flattening paint).
        This results in async image decoding kicking in, which is undesirable
        for a snapshot, since there is no opportunity to repaint when the decode
        is complete.

        It is difficult to detect all cases in which WebView is being painted into
        an offscreen context, but one case that we can easily detect, and which
        fixes Quick Look, is if the WebView itself is not hosted in a window.

        So, if not hosted in a window, do a snapshotting+flattening paint.

2021-01-11  Alex Christensen  <achristensen@webkit.org>

        Use sendWithAsyncReply instead of dataCallback for icon loading
        https://bugs.webkit.org/show_bug.cgi?id=220381

        Reviewed by Youenn Fablet.

        * WebCoreSupport/WebFrameLoaderClient.h:
        * WebCoreSupport/WebFrameLoaderClient.mm:
        (WebFrameLoaderClient::prepareForDataSourceReplacement):
        (WebFrameLoaderClient::getLoadDecisionForIcons):
        (WebFrameLoaderClient::finishedLoadingIcon):

2021-01-07  Alexey Shvayka  <shvaikalesh@gmail.com>

        [JSC] Simplify get*PropertyNames() methods and EnumerationMode
        https://bugs.webkit.org/show_bug.cgi?id=212954

        Reviewed by Yusuke Suzuki.

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

2021-01-06  Jer Noble  <jer.noble@apple.com>

        [Cocoa] Revert audioTimePitchAlgorithm to "TimeDomain" from "Spectral"
        https://bugs.webkit.org/show_bug.cgi?id=220341

        Reviewed by Youenn Fablet.

        Add a private preference to control what pitch correction algorithm will be used by MediaPlayer.

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

2021-01-04  Jeff Miller  <jeffm@apple.com>

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

        Reviewed by Anders Carlsson.

        * Info.plist:

2020-12-19  Rob Buis  <rbuis@igalia.com>

        Move FrameLoader::arePluginsEnabled to Frame
        https://bugs.webkit.org/show_bug.cgi?id=220022

        Reviewed by Sam Weinig.

        Adapt to API change.

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

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

        Gate all of the code associated with app highlights
        https://bugs.webkit.org/show_bug.cgi?id=220003
        <rdar://problem/72451893>

        Reviewed by Tim Horton.

        * WebView/WebHTMLView.mm:
        (toTag):

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

        Make FontCascade::CodePath an enum class
        https://bugs.webkit.org/show_bug.cgi?id=219947

        Reviewed by Alex Christensen.

        Adapt to enum class change.

        * WebView/WebView.mm:
        (+[WebView _setAlwaysUsesComplexTextCodePath:]):

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

        Unreviewed, reverting r270768.

        Still crashes in debug in a different location

        Reverted changeset:

        "[GPUProcess] Crash under
        AudioDestinationCocoa::setIsPlaying(bool)"
        https://bugs.webkit.org/show_bug.cgi?id=219809
        https://trac.webkit.org/changeset/270768

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

        [GPUProcess] Crash under AudioDestinationCocoa::setIsPlaying(bool)
        https://bugs.webkit.org/show_bug.cgi?id=219809

        Reviewed by Eric Carlson.

        * WebCoreSupport/WebPlatformStrategies.mm:

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

        [Cocoa] REGRESSION (r270315): WebKitLegacy builds fail with "unifdef" error message
        https://bugs.webkit.org/show_bug.cgi?id=219756

        Reviewed by Sam Weinig.

        Was seeing this error: Unifdef: can't open Debug/WebKitLegacy.framework/Versions/A/Headers/*.h.tmp: No such file or directory.
        Keith figured out it was because there are no public headers in the WebKitLegacy framework.

        * postprocess-headers.sh: Remove the line that post-processes public headers.

2020-12-10  Adam Roben  <aroben@apple.com>

        macOS Production WebKitLegacy build is broken on Xcode 10
        https://bugs.webkit.org/show_bug.cgi?id=219753

        Reviewed by Tim Horton.

        * Configurations/WebKitLegacy.xcconfig: Replaced :default= syntax that
        is only supported in Xcode 11.4 and newer with the equivalent
        WK_DEFAULT_PLATFORM_NAME variable.

2020-12-09  Per Arne Vollan  <pvollan@apple.com>

        [macOS] Change Universal Access zoom in the UI process
        https://bugs.webkit.org/show_bug.cgi?id=219635

        Reviewed by Darin Adler.

        Implement the method changeUniversalAccessZoomFocus in the WebKit legacy chrome client by changing
        the Universal Access zoom in-process.

        * WebCoreSupport/WebChromeClient.h:
        * WebCoreSupport/WebChromeClient.mm:
        (WebChromeClient::changeUniversalAccessZoomFocus):

2020-12-04  Adam Roben  <aroben@apple.com>

        More FALLBACK_PLATFORM adoption
        https://bugs.webkit.org/show_bug.cgi?id=219545

        Reviewed by Tim Horton.

        * Configurations/SDKVariant.xcconfig:
        WK_EMPTY_$(THIS_IS_NOT_EMPTY) evaluates to the empty string, not to
        NO.

2020-12-03  Adam Roben  <aroben@apple.com>

        Adopt FALLBACK_PLATFORM
        https://bugs.webkit.org/show_bug.cgi?id=219504

        Reviewed by Tim Horton.

        * Configurations/SDKVariant.xcconfig:
        * Configurations/WebKitLegacy.xcconfig:
        Use FALLBACK_PLATFORM it if it's defined, otherwise use PLATFORM_NAME
        as before.

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

        Consolidate header postprocessing scripts
        https://bugs.webkit.org/show_bug.cgi?id=219388
        <rdar://problem/71840357>

        Reviewed by David Kilzer.

        Our build system contains the following scripts to perform some
        postprocessing of headers that we export to the SDK:

            JavaScriptCore/postprocess-headers.sh
            WebKit/mac/postprocess-framework-headers.sh
            WebKitLegacy/mac/postprocess-headers.sh

        The preceding scripts are used when using the non-XCBuild -- or
        "legacy" -- Xcode build system. They are invoked in a custom Run
        Script build phase after the headers have been exported with the
        standard Xcode facility for creating frameworks.

        Alternatively, we also have the following postprocessing scripts:

            WebKit/Scripts/postprocess-header-rule
            JavaScriptCore/Scripts/postprocess-header-rule
            WebKitLegacy/scripts/postprocess-header-rule

        These scripts are used when using the XCBuild build system. They are
        invoked *during* the header export process to copy and postprocess the
        headers in one blow. They are part of a Custom Build Rule for
        exporting files ending in ".h".

        The reason why we have two sets of scripts is because of the different
        capabilities of the two Xcode build systems. The legacy system does
        not support a custom "export header" step that would allow us to copy
        and postprocess each header in a single step. Therefore, when using
        the legacy build system, we export in one build step and postprocess
        in a subsequent build step. And XCBuild doesn't like the approach
        taken by the old build system where files are exported first and then
        munged in a separate step, since that confuses its notion of the state
        of the build ("Hey! That file I exported in the previous build? I see
        now that it's been changed, so I'm going to export it again. And
        change its modification date. And then rebuild everything downstream
        that uses it."). Therefore, XCBuild added a facility for copying and
        postprocessing in one step.

        The scripts supporting each of these approaches are very similar to
        each other, such that there is a lot of code duplication between them.
        At the same time, by having two sets of scripts that are very similar
        to each other, we run the risk of "drift", where files in one set may
        get updated while their counterparts in the other set are not.

        Address this duplication by making the scripts in the "legacy" set be
        mere stubs that invoke the scripts in the new "XCBuild" set. In doing
        this, we also fix a case of drift: the legacy-based scripts made use
        of a timestamp file to determine if headers needed to be reprocessed
        and exported, while the XCBuild-based scripts used a "process the
        files and export them if any actual changes now exist between this new
        version and any previously-exported version" approach.

        Along the way, fix a bug in WebKitLegacy's postprocess-header-rule
        that resulted in WebKitAvailability.h not being processed. The
        practical effect of this bug is that the file ended up with both macOS
        and iOS code, along with the #if that controlled which chunk of code
        was compiled, instead of just the chunk of code specific to the
        targeted SDK. Normally, the unused chunk of code would get removed
        through the invocation of `unifdef`. But, because of the bug, the
        results of running `unifdef` were being discarded.

        * postprocess-headers.sh:

2020-11-30  Chris Dumez  <cdumez@apple.com>

        sessionStorage should not be cloned when a window is opened with rel=noopener
        https://bugs.webkit.org/show_bug.cgi?id=218804
        <rdar://problem/71286606>

        Reviewed by Alex Christensen.

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

2020-11-21  Simon Fraser  <simon.fraser@apple.com>

        Add an Experimental Features for wheel event gestures becoming non-blocking
        https://bugs.webkit.org/show_bug.cgi?id=219236

        Reviewed by Sam Weinig.
        
        Add a feature flag for the behavior that is being added via webkit.org/b/218764,
        which is that only the first wheel event in a gesture is cancelable.

        * WebView/WebPreferencesDefaultValues.h:
        * WebView/WebPreferencesDefaultValues.mm:
        (WebKit::defaultWheelEventGesturesBecomeNonBlocking):

2020-11-19  Hoa Dinh  <dvh@apple.com>

        Code formatting: change instances of "@synthesize a=b" to "@synthesize a = b".
        https://bugs.webkit.org/show_bug.cgi?id=219094

        Reviewed by Wenson Hsieh.

        There was a mix of "@synthesize a=b" and "@synthesize a = b" in the codebase.
        Most of the instances are "@synthesize a = b", with spaces around the equal sign.
        With https://bugs.webkit.org/show_bug.cgi?id=219092, we're changing the behavior of
        the code style checker to require spaces around the equal sign.
        The change replace all the instances of "@synthesize a=b" with "@synthesize a = b".

        * WebView/WebFullScreenController.mm:
        * WebView/WebView.mm:

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

        Standardize enums that are used by Settings in preperation for autogeneration
        https://bugs.webkit.org/show_bug.cgi?id=218960

        Reviewed by Tim Horton.

        Update enum uses for renames and scoped syntax use.

        * WebView/WebFrame.mm:
        * WebView/WebView.mm:

2020-11-16  Devin Rousso  <drousso@apple.com>

        Ignore deprecation warnings for the uniform types C API
        https://bugs.webkit.org/show_bug.cgi?id=218989

        Reviewed by Tim Horton.

        These should eventually be replaced with the ObjC API `UniformTypeIdentifiers.framework`.
        See <https://developer.apple.com/documentation/uniformtypeidentifiers>.

        * WebView/WebHTMLView.mm:
        (-[WebHTMLView _documentFragmentFromPasteboard:inContext:allowPlainText:]):
        (+[WebHTMLView _insertablePasteboardTypes]):
        (-[WebHTMLView _documentFragmentFromPasteboard:forType:inContext:subresources:]):

2020-11-16  Megan Gardner  <megan_gardner@apple.com>

        Add menu support for app highlights for books
        https://bugs.webkit.org/show_bug.cgi?id=218879
        <rdar://problem/71352113>

        Reviewed by Alex Christensen.

        * WebView/WebHTMLView.mm:
        (toTag):

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

        Move some more WebKit and WebKitLegacy preferences bound to Settings to WebPreferences.yaml
        https://bugs.webkit.org/show_bug.cgi?id=218914

        Reviewed by Tim Horton.

        * WebView/WebView.mm:
        (-[WebView _commonInitializationWithFrameName:groupName:]):
        Remove explicit setting of Settings::setContentDispositionAttachmentSandboxEnabled as
        it is now handled by the generated code. Merge together a few sequential #ifdefs while
        in the area.

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

        Remove unused advanced plug-in features: snapshotting and plug-in load policy
        https://bugs.webkit.org/show_bug.cgi?id=218835

        Reviewed by Tim Horton.

        * WebView/WebPreferences.mm:
        (-[WebPreferences plugInSnapshottingEnabled]): Return NO.
        (-[WebPreferences setPlugInSnapshottingEnabled:]): Do nothing.

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

        Force wheel event listeners on the root to be passive
        https://bugs.webkit.org/show_bug.cgi?id=218842
        <rdar://problem/71312668>

        Reviewed by Chris Dumez.

        Following Blink (https://www.chromestatus.com/feature/6662647093133312) force 'wheel' and
        'mousewheel' event listeners on root objects (window, document and body) to be passive if
        they were not explicitly registered as non-passive.

        This behavior is controlled by an experimental feature flag, and a linked-on-or-after check
        to avoid changing behavior for apps that embed WebKit until they link against new SDKs.

        * WebView/WebPreferencesDefaultValues.h:
        * WebView/WebPreferencesDefaultValues.mm:
        (WebKit::defaultPassiveTouchListenersAsDefaultOnDocument):
        (WebKit::defaultPassiveWheelListenersAsDefaultOnDocument):

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

        Move more WebKitLegacy specific settings usage to WebPreferences.yaml
        https://bugs.webkit.org/show_bug.cgi?id=218852

        Reviewed by Tim Horton.

        This batch focuses on settings with defaults based on SDK/host app conditions.

        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):
        * WebView/WebPreferencesDefaultValues.h:
        * WebView/WebPreferencesDefaultValues.mm:
        (WebKit::defaultAllowContentSecurityPolicySourceStarToMatchAnyProtocol):
        (WebKit::defaultLoadDeferringEnabled):
        (WebKit::defaultWindowFocusRestricted):
        (WebKit::defaultUsePreHTML5ParserQuirks):
        (WebKit::defaultNeedsAdobeFrameReloadingQuirk):
        (WebKit::defaultTreatsAnyTextCSSLinkAsStylesheet):
        (WebKit::defaultNeedsFrameNameFallbackToIdQuirk):
        (WebKit::defaultNeedsKeyboardEventDisambiguationQuirks):
        (WebKit::defaultEnforceCSSMIMETypeInNoQuirksMode):
        (WebKit::defaultNeedsIsLoadingInAPISenseQuirk):
        (WebKit::defaultUseLegacyBackgroundSizeShorthandBehavior):
        (WebKit::defaultAllowDisplayOfInsecureContent):
        (WebKit::defaultAllowRunningOfInsecureContent):
        (WebKit::defaultShouldConvertInvalidURLsToBlank):
        * WebView/WebView.mm:
        (-[WebView _commonInitializationWithFrameName:groupName:]):
        (needsSelfRetainWhileLoadingQuirk):
        (-[WebView _preferencesChanged:]):
        (-[WebView dealloc]):
        (-[WebView setFrameLoadDelegate:]):
        (shouldEnableLoadDeferring): Deleted.
        (shouldRestrictWindowFocus): Deleted.
        (shouldUseLegacyBackgroundSizeShorthandBehavior): Deleted.
        (shouldAllowDisplayAndRunningOfInsecureContent): Deleted.
        (shouldAllowContentSecurityPolicySourceStarToMatchAnyProtocol): Deleted.
        (shouldConvertInvalidURLsToBlank): Deleted.
        (-[WebView _needsAdobeFrameReloadingQuirk]): Deleted.
        (-[WebView _needsLinkElementTextCSSQuirk]): Deleted.
        (-[WebView _needsFrameNameFallbackToIdQuirk]): Deleted.
        (-[WebView _needsIsLoadingInAPISenseQuirk]): Deleted.
        (-[WebView _needsKeyboardEventDisambiguationQuirks]): Deleted.
        (-[WebView _needsPreHTML5ParserQuirks]): Deleted.

2020-11-12  Zalan Bujtas  <zalan@apple.com>

        Show legacy line layout visual coverage instead of "simple line" layout.
        https://bugs.webkit.org/show_bug.cgi?id=218695

        Reviewed by Antti Koivisto.

        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (-[WebPreferences legacyLineLayoutVisualCoverageEnabled]):
        (-[WebPreferences setLegacyLineLayoutVisualCoverageEnabled:]):
        (-[WebPreferences simpleLineLayoutDebugBordersEnabled]): Deleted.
        (-[WebPreferences setSimpleLineLayoutDebugBordersEnabled:]): Deleted.
        * WebView/WebPreferencesPrivate.h:

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

        Move more WebKitLegacy preferences bound to Settings to WebPreferences.yaml
        https://bugs.webkit.org/show_bug.cgi?id=218826

        Reviewed by Tim Horton.

        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):
        Remove manual defaults for ShrinksStandaloneImagesToFit and ForceWebGLUsesLowPower
        now they are generated.

        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]):
        Remove manual setting of AcceleratedCompositingForFixedPositionEnabled, ForceWebGLUsesLowPower, 
        RubberBandingForSubScrollableRegionsEnabled, ShrinksStandaloneImagesToFit and
        VisualViewportEnabled now that they are generated.


2020-11-11  John Wilander  <wilander@apple.com>

        PCM: Change from ad-click-attribution to private-click-measurement (in all forms, including .well-known URL)
        https://bugs.webkit.org/show_bug.cgi?id=218730
        <rdar://problem/71094296>

        Reviewed by Alex Christensen.

        Change to the official name of the proposed standard Private Click Measurement
        https://github.com/privacycg/private-click-measurement.

        This includes a change of the reporting URL from 
        "/.well-known/ad-click-attribution/" to
        "/.well-known/private-click-measurement/".

        * WebCoreSupport/WebChromeClient.mm:
        (stringForMessageSource):
        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (-[WebPreferences privateClickMeasurementEnabled]):
        (-[WebPreferences setPrivateClickMeasurementEnabled:]):
        (-[WebPreferences adClickAttributionEnabled]): Deleted.
        (-[WebPreferences setAdClickAttributionEnabled:]): Deleted.
        * WebView/WebPreferencesPrivate.h:

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

        Remove unused ExperimentalNotificationsEnabled setting
        https://bugs.webkit.org/show_bug.cgi?id=218813

        Reviewed by Tim Horton.

        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):
        (-[WebPreferences setExperimentalNotificationsEnabled:]):
        (-[WebPreferences experimentalNotificationsEnabled]):
        * WebView/WebPreferencesPrivate.h:
        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]):
        Obsolete ExperimentalNotificationsEnabled preference as it does nothing.

2020-11-10  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, reverting r269660.
        https://bugs.webkit.org/show_bug.cgi?id=218786

        Crashing in EWS iOS simulator bots

        Reverted changeset:

        "PCM: Change from ad-click-attribution to private-click-
        measurement (in all forms, including .well-known URL)"
        https://bugs.webkit.org/show_bug.cgi?id=218730
        https://trac.webkit.org/changeset/269660

2020-11-10  Chris Dumez  <cdumez@apple.com>

        Webkit incorrectly setting visibilityState to "prerender" when opening link in new tab
        https://bugs.webkit.org/show_bug.cgi?id=215851
        <rdar://problem/67817100>

        Reviewed by Geoff Garen.

        * DOM/DOMDocument.mm:
        (-[DOMDocument visibilityState]):
        * WebView/WebView.mm:
        (kit):

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

        Remove another function that implicitly uses the composed tree (intersects with range)
        https://bugs.webkit.org/show_bug.cgi?id=218726

        Reviewed by Ryosuke Niwa.

        * WebView/WebPDFView.mm:
        (isFrameInRange): Deleted. This function used intersects, and deleting it side-steps
        the issue of calling the intersects function template from outside WebCore.
        (-[WebPDFView countMatchesForText:inDOMRange:options:limit:markMatches:]):
        Use containsCrossingDocumentBoundaries instead of isFrameInRange.

2020-11-10  John Wilander  <wilander@apple.com>

        PCM: Change from ad-click-attribution to private-click-measurement (in all forms, including .well-known URL)
        https://bugs.webkit.org/show_bug.cgi?id=218730
        <rdar://problem/71094296>

        Reviewed by Devin Rousso.

        Change to the official name of the proposed standard Private Click Measurement
        https://github.com/privacycg/private-click-measurement.

        This includes a change of the reporting URL from 
        "/.well-known/ad-click-attribution/" to
        "/.well-known/private-click-measurement/".

        * WebCoreSupport/WebChromeClient.mm:
        (stringForMessageSource):
        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (-[WebPreferences privateClickMeasurementEnabled]):
        (-[WebPreferences setPrivateClickMeasurementEnabled:]):
        (-[WebPreferences adClickAttributionEnabled]): Deleted.
        (-[WebPreferences setAdClickAttributionEnabled:]): Deleted.
        * WebView/WebPreferencesPrivate.h:

2020-11-10  Simon Fraser  <simon.fraser@apple.com>

        Make PlatformWheelEventPhase an enum class
        https://bugs.webkit.org/show_bug.cgi?id=218772

        Reviewed by Tim Horton.

        Change PlatformWheelEventPhase to be an enum class.

        Changed code that maps between NSEventPhase and PlatformWheelEventPhase to not
        treat NSEventPhase as a set of bits, since it only ever contains one of the bits.

        * DOM/WebDOMOperations.mm:
        (toNSEventPhase):

2020-11-10  Said Abou-Hallawa  <said@apple.com>

        [macCatalyst] Fix various build breaks
        https://bugs.webkit.org/show_bug.cgi?id=218771

        Reviewed by Tim Horton.

        Use 'BOOL' instead of 'bool' for the functions arguments to resolve the 
        conflict with _setBoolValue which takes 'BOOL'.

        * WebView/WebPreferences.mm:
        (-[WebPreferences setAVKitEnabled:]):
        (-[WebPreferences setNetworkDataUsageTrackingEnabled:]):

2020-11-09  Said Abou-Hallawa  <said@apple.com>

        [GPU Process] Control the life cycle of the platform image by a new class named NativeImage
        https://bugs.webkit.org/show_bug.cgi?id=218427

        Reviewed by Simon Fraser.

        * DOM/DOM.mm:
        (-[DOMNode getPreviewSnapshotImage:andRects:]):
        * Misc/WebCache.mm:
        (+[WebCache imageForURL:]):
        * WebView/WebView.mm:
        (-[WebUITextIndicatorData initWithImage:textIndicatorData:scale:]):

2020-11-09  Chris Dumez  <cdumez@apple.com>

        Unexpose obsolete HTMLAppletElement interface
        https://bugs.webkit.org/show_bug.cgi?id=218677

        Reviewed by Darin Adler.

        * DOM/DOMHTMLAppletElement.mm:
        (-[DOMHTMLAppletElement align]):
        (-[DOMHTMLAppletElement setAlign:]):
        (-[DOMHTMLAppletElement alt]):
        (-[DOMHTMLAppletElement setAlt:]):
        (-[DOMHTMLAppletElement archive]):
        (-[DOMHTMLAppletElement setArchive:]):
        (-[DOMHTMLAppletElement code]):
        (-[DOMHTMLAppletElement setCode:]):
        (-[DOMHTMLAppletElement codeBase]):
        (-[DOMHTMLAppletElement setCodeBase:]):
        (-[DOMHTMLAppletElement height]):
        (-[DOMHTMLAppletElement setHeight:]):
        (-[DOMHTMLAppletElement hspace]):
        (-[DOMHTMLAppletElement setHspace:]):
        (-[DOMHTMLAppletElement name]):
        (-[DOMHTMLAppletElement setName:]):
        (-[DOMHTMLAppletElement object]):
        (-[DOMHTMLAppletElement setObject:]):
        (-[DOMHTMLAppletElement vspace]):
        (-[DOMHTMLAppletElement setVspace:]):
        (-[DOMHTMLAppletElement width]):
        (-[DOMHTMLAppletElement setWidth:]):
        * WebCoreSupport/WebFrameLoaderClient.h:
        * WebCoreSupport/WebFrameLoaderClient.mm:
        (WebFrameLoaderClient::redirectDataToPlugin):

2020-11-09  Alan Bujtas  <zalan@apple.com>

        Unreviewed, reverting r269603.

        Needs Safari patch

        Reverted changeset:

        "Show legacy line layout visual coverage instead of "simple
        line" layout."
        https://bugs.webkit.org/show_bug.cgi?id=218695
        https://trac.webkit.org/changeset/269603

2020-11-09  Zalan Bujtas  <zalan@apple.com>

        Show legacy line layout visual coverage instead of "simple line" layout.
        https://bugs.webkit.org/show_bug.cgi?id=218695

        Reviewed by Antti Koivisto.

        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (-[WebPreferences legacyLineLayoutVisualCoverageEnabled]):
        (-[WebPreferences setLegacyLineLayoutVisualCoverageEnabled:]):
        (-[WebPreferences simpleLineLayoutDebugBordersEnabled]): Deleted.
        (-[WebPreferences setSimpleLineLayoutDebugBordersEnabled:]): Deleted.
        * WebView/WebPreferencesPrivate.h:

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

        PiP return to element full screen is not smooth on some websites
        https://bugs.webkit.org/show_bug.cgi?id=218419

        Reviewed by Jer Noble.

        * WebCoreSupport/WebChromeClient.h:
        (WebChromeClient::exitVideoFullscreenForVideoElement):
        * WebCoreSupport/WebChromeClient.mm:
        (WebChromeClient::exitVideoFullscreenForVideoElement):

2020-11-04  Said Abou-Hallawa  <said@apple.com>

        [GPU Process] Move the internal GPU rendering flags from WebPage to WebProcess
        https://bugs.webkit.org/show_bug.cgi?id=218549

        Reviewed by Tim Horton.

        GPU Process can't be enabled for WK1.

        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (-[WebPreferences useGPUProcessForMediaEnabled]): Deleted.
        (-[WebPreferences setUseGPUProcessForMediaEnabled:]): Deleted.
        * WebView/WebPreferencesPrivate.h:

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

        WebKit should remove unused debug variant support
        <https://webkit.org/b/218315>
        <rdar://problem/70785369>

        Reviewed by Darin Adler.

        Remove support for building the debug variant since it is
        currently unused. We now set default values for the
        DEAD_CODE_STRIPPING, DEBUG_DEFINES, GCC_OPTIMIZATION_LEVEL and
        STRIP_INSTALLED_PRODUCT variables.

        Also move these values out of the Xcode project into
        Base.xcconfig files using the [config=Debug] specifier so that
        these overrides are next to the definitions.

        Additional changes in behavior are noted below.

        * Configurations/Base.xcconfig:
        * Configurations/WebKitLegacy.xcconfig:
        - Move definition of ENABLE_WEBKIT_UNSET_DYLD_FRAMEWORK_PATH
          in DEBUG_DEFINES from the Xcode project to
          WebKitLegacy.xcconfig.

2020-11-03  Sihui Liu  <sihui_liu@apple.com>

        Set up basic infrastructure for SpeechRecognition
        https://bugs.webkit.org/show_bug.cgi?id=218216
        <rdar://problem/70703788>

        Reviewed by Youenn Fablet.

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

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

        Add test for cacheModelForMainBundle() in WebKitLegacy
        <https://webkit.org/b/217960>

        Reviewed by Darin Adler.

        * Configurations/DebugRelease.xcconfig:
        (WK_BUILD_FOR_TESTING): Add.
        - This single setting controls whether test code is built and
          test functions are exported.  Currently only Debug and Release
          configurations are supported.

        * Configurations/WebKitLegacy.xcconfig:
        (OTHER_CFLAGS):
        - Include necessary macro definition when WK_BUILD_FOR_TESTING
          is YES.
        (WK_CFLAGS_BUILD_FOR_TESTING_YES):
        - Define macro set when WK_BUILD_FOR_TESTING is YES.  Used by
          both OTHER_CFLAGS and OTHER_TAPI_FLAGS to enable test code.
        (OTHER_TAPI_FLAGS[sdk=iphone*]):
        - Include necessary macro definition when WK_BUILD_FOR_TESTING
          is YES.
        - Add -extra-private-header argument to declare exported
          functions in TestingFunctions.h when WK_BUILD_FOR_TESTING is
          YES.

        * TestingFunctions.h: Add.
        - Declare functions exported when WK_BUILD_FOR_TESTING is YES.

        * WebKit.Testing.exp: Add.
        - This contains a list of test functions that are only exported
          when WK_BUILD_FOR_TESTING is YES.

        * WebView/WebPreferences.mm:
        (cacheModelForMainBundle):
        - Add NSString *bundleIdentifier argument to make testable.
        (TestWebPreferencesCacheModelForMainBundle): Add.
        - Add function only used for testing, and only compiled when
          WK_BUILD_FOR_TESTING is YES.
        (+[WebPreferences initialize]):
        - Change to pass main bundle identifier as argument.

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

        [Testing] Match WebKitTestRunner and enable all "experimental" features in DumpRenderTree (cocoa)
        https://bugs.webkit.org/show_bug.cgi?id=218447

        Reviewed by Darin Adler.

        * Scripts/PreferencesTemplates/WebPreferencesExperimentalFeatures.mm.erb:
        * Scripts/PreferencesTemplates/WebPreferencesInternalFeatures.mm.erb:
        * WebView/WebFeature.m:
        (-[WebFeature initWithKey:preferencesKey:name:details:defaultValue:hidden:]):
        (-[WebFeature initWithKey:name:details:defaultValue:hidden:]): Deleted.
        * WebView/WebFeatureInternal.h:
        Handle non-standard preference keys by ensure we initialize WebFeatures with the generated 
        preferenceKey accessor rather than trying to derive it from the key directly.

2020-10-28  Sam Weinig  <weinig@apple.com>

        [Testing] Remove requirement of adding new SPI for each preference that needs testing
        https://bugs.webkit.org/show_bug.cgi?id=218267

        Reviewed by Simon Fraser.

        Expose a set of setters to for DumpRenderTree to use when setting preferences
        by string.

        * WebView/WebPreferences.mm:
        (-[WebPreferences _setBoolPreferenceForTestingWithValue:forKey:]):
        (-[WebPreferences _setUInt32PreferenceForTestingWithValue:forKey:]):
        (-[WebPreferences _setDoublePreferenceForTestingWithValue:forKey:]):
        (-[WebPreferences _setStringPreferenceForTestingWithValue:forKey:]):
        * WebView/WebPreferencesPrivate.h:

2020-10-27  Tetsuharu Ohzeki  <tetsuharu.ohzeki@gmail.com>

        Make WebCore::FocusDirection to enum class
        https://bugs.webkit.org/show_bug.cgi?id=218162

        Reviewed by Darin Adler.

        * WebCoreSupport/WebChromeClient.mm:
        (WebChromeClient::takeFocus):
        * WebView/WebHTMLView.mm:
        (-[WebHTMLView becomeFirstResponder]):

2020-10-26  Zan Dobersek  <zdobersek@igalia.com>

        Remove Accelerated2dCanvasEnabled WebPreferences entry
        https://bugs.webkit.org/show_bug.cgi?id=218114

        Reviewed by Adrian Perez de Castro.

        * WebView/WebPreferences.mm:
        (-[WebPreferences accelerated2dCanvasEnabled]): Make the API function
        no-op and move it into the deprecated section.
        (-[WebPreferences setAccelerated2dCanvasEnabled:]): Ditto.

2020-10-21  Devin Rousso  <drousso@apple.com>

        [macOS WK1] provide a way for Apple-internal clients to disable link preview
        https://bugs.webkit.org/show_bug.cgi?id=217984
        <rdar://problem/70500022>

        Reviewed by Tim Horton.

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

        * WebView/WebImmediateActionController.h:
        * WebView/WebImmediateActionController.mm:
        (-[WebImmediateActionController isEnabled]): Added.
        (-[WebImmediateActionController setEnabled:]): Added.
        (-[WebImmediateActionController _cancelImmediateAction]):

2020-10-20  Sihui Liu  <sihui_liu@apple.com>

        Add stubs for SpeechRecognition
        https://bugs.webkit.org/show_bug.cgi?id=217780
        <rdar://problem/70350727>

        Reviewed by Youenn Fablet.

        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (-[WebPreferences _speechRecognitionEnabled]):
        (-[WebPreferences _setSpeechRecognitionEnabled:]):
        * WebView/WebPreferencesPrivate.h:

2020-10-20  Sam Weinig  <weinig@apple.com>

        Tweak WebPreferences*.yaml "exposed" key to only indicate that the key should not be changeable by the frontend
        https://bugs.webkit.org/show_bug.cgi?id=217918

        Reviewed by Darin Adler.

        Update to use new "exposed" prefix bindings and use default value explicitly
        when updating settings for non-exposed preferences.

        * Scripts/PreferencesTemplates/WebPreferencesDefinitions.h.erb:
        * Scripts/PreferencesTemplates/WebPreferencesExperimentalFeatures.mm.erb:
        * Scripts/PreferencesTemplates/WebPreferencesInternalFeatures.mm.erb:
        * Scripts/PreferencesTemplates/WebViewPreferencesChangedGenerated.mm.erb:

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

        REGRESSION (r25430): Fix -Wstring-concatenation warning from open source clang
        <https://webkit.org/b/217884>

        Reviewed by Alexey Proskuryakov.

        * WebView/WebPreferences.mm:
        (cacheModelForMainBundle):
        - Add missing comma to fix unwanted string concatenation.

2020-10-17  Sam Weinig  <weinig@apple.com>

        Convert preferences in WebPreferencesPrivate.h to use @property syntax to make them more manageable
        https://bugs.webkit.org/show_bug.cgi?id=217877

        Reviewed by Simon Fraser.

        * WebView/WebPreferencesPrivate.h:
        Switch to using the @property syntax. No behavior change intended, just a cleanup.

2020-10-16  Devin Rousso  <drousso@apple.com>

        Web Inspector: rename `Highlight` so it doesn't conflict with CSS `Highlight`
        https://bugs.webkit.org/show_bug.cgi?id=217858

        Reviewed by Megan Gardner.

        No new tests as there is no behavior change since this is purely a rename.

        * WebInspector/WebNodeHighlightView.mm:
        (-[WebNodeHighlightView _layoutForNodeHighlight:parent:]):
        (-[WebNodeHighlightView _layoutForRectsHighlight:parent:]):
        (-[WebNodeHighlightView layoutSublayers:]):

2020-10-13  Keith Rollin  <krollin@apple.com>

        Remove leftover MACOSX_DEPLOYMENT_TARGET_macosx support
        https://bugs.webkit.org/show_bug.cgi?id=217649
        <rdar://problem/70236877>

        Reviewed by Darin Adler.

        Bug 42796 introduced MACOSX_DEPLOYMENT_TARGET_<PLATFORM> as "support
        for compiling WebKit against iOS SDKs". Support for the iOS part of
        this feature was later removed in several changes, including Bug
        139212, Bug 139463 and Bug 144762. However, vestiges have remained for
        five or six years in the form of MACOSX_DEPLOYMENT_TARGET_macosx. The
        inclusion of the platform in MACOSX_DEPLOYMENT_TARGET is no longer
        needed and can be removed.

        This changes brings most projects in conformance with other projects
        that don't support including the platform in MACOSX_DEPLOYMENT_TARGET,
        including WebEditingTester, gtest, WebKitTestRunner, MiniBrowser, and
        TestWebKitAPI.

        Along the way, remove a couple of left-over references to macOS 10.16,
        and a couple of places where [sdk=macosx*] was still being used.

        With this change, initialization of MACOSX_DEPLOYMENT_TARGET should be
        consistent across all projects, with two exceptions: WebKitLauncher
        (which hardcodes it to 10.12) and libwebrtc's copy of googletest
        (which hardcodes it to 10.4). The reasons for these hard-coded values
        is not apparent, so leave them be.

        * Configurations/DebugRelease.xcconfig:

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

        Eliminate some "using namespace WebCore" cases in global scope
        https://bugs.webkit.org/show_bug.cgi?id=217644

        Reviewed by Tim Horton.

        * Storage/WebStorageTrackerClient.h: Remove "using namespace WebCore".

2020-10-12  Luming Yin  <luming_yin@apple.com>

        [macOS] Workaround for MAC_OS_X_VERSION_MAJOR incorrectly including minor version when building 
        with Xcode 12 on macOS Big Sur SUs
        https://bugs.webkit.org/show_bug.cgi?id=217602
        rdar://70194453

        Reviewed by Darin Adler.

        The previous workaround turns out to be ineffective because we can't set the value of 
        TARGET_MAC_OS_X_VERSION_MAJOR based on a previous value of itself. Introduce a new 
        variable TARGET_MAC_OS_X_VERSION_MAJOR to determine whether we need to explicitly 
        adjust MAC_OS_X_VERSION_MAJOR to 110000.

        * Configurations/DebugRelease.xcconfig:

2020-10-12  Luming Yin  <luming_yin@apple.com>

        [macOS] Workaround for MAC_OS_X_VERSION_MAJOR incorrectly including minor version when building 
        with Xcode 12 on macOS Big Sur SUs
        https://bugs.webkit.org/show_bug.cgi?id=217602
        rdar://70194453

        Reviewed by Darin Adler.

        Due to a bug in Xcode (rdar://70185899), Xcode 12.0 and Xcode 12.1 Beta incorrectly includes the 
        minor release number in MAC_OS_X_VERSION_MAJOR, which causes Debug and Release builds of WebKit 
        to be misconfigured when building on macOS Big Sur SUs, leading to webpages failing to load.

        To work around the Xcode bug, when the MAC_OS_X_VERSION_MAJOR includes the minor version number, 
        drop the minor version number by explicitly setting TARGET_MAC_OS_X_VERSION_MAJOR to 110000.

        Note: This change should be reverted after <rdar://70185899> is resolved.

        * Configurations/DebugRelease.xcconfig:

2020-10-11  Luming Yin  <luming_yin@apple.com>

        Strip patch version from TARGET_MAC_OS_X_VERSION_MAJOR when building for macOS Big Sur 
        or later
        https://bugs.webkit.org/show_bug.cgi?id=217594
        rdar://70188497

        Reviewed by Darin Adler.

        To ensure successful Mac Catalyst WebKit builds, strip the patch version from 
        TARGET_MAC_OS_X_VERSION_MAJOR by using two `base:`s on MACOSX_DEPLOYMENT_TARGET.

        * Configurations/Base.xcconfig:

2020-10-11  Luming Yin  <luming_yin@apple.com>

        Ignore deployment suffix and identifier when computing major OS version for macOS 
        Big Sur and newer
        https://bugs.webkit.org/show_bug.cgi?id=217584
        rdar://70168426

        Reviewed by Darin Adler.

        Stop using MACOSX_DEPLOYMENT_TARGET:suffix:identifier to compute major OS versions. 
        Only use the deployment target base for macOS Big Sur and newer. Keep the manual 
        definitions for legacy versions of macOS.

        * Configurations/Base.xcconfig:

2020-10-06  Devin Rousso  <drousso@apple.com>

        Move platform logic for CSS `hover` and `pointer` media queries outside of WebCore
        https://bugs.webkit.org/show_bug.cgi?id=217413

        Reviewed by Tim Horton.

        * WebCoreSupport/WebChromeClient.h:
        (WebChromeClient::hoverSupportedByPrimaryPointingDevice const): Added.
        (WebChromeClient::pointerCharacteristicsOfPrimaryPointingDevice const): Added.
        Mouse devices are always supported.

2020-10-06  Devin Rousso  <drousso@apple.com>

        CSS hover and "pointer: fine" media queries do not evaluate to true with iOS 13.4 mouse support
        https://bugs.webkit.org/show_bug.cgi?id=209292
        <rdar://problem/60663124>

        Reviewed by Tim Horton.

        * WebCoreSupport/WebChromeClient.h:
        (WebChromeClient::hoverSupportedByAnyAvailablePointingDevice const): Added.
        (WebChromeClient::pointerCharacteristicsOfAllAvailablePointingDevices const): Added.
        Mouse devices are always supported.

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

        Redundant rendering updates can be scheduled from inside Page::updateRendering()
        https://bugs.webkit.org/show_bug.cgi?id=216726

        Reviewed by Tim Horton.

        Provide the flags.

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

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

        Use the "triggerRenderingUpdate" terminology in ChromeClient
        https://bugs.webkit.org/show_bug.cgi?id=217355

        Reviewed by Tim Horton.

        ChromeClient confusingly had both scheduleRenderingUpdate() and scheduleTimedRenderingUpdate().
        The former is for triggering an update soon, and the latter is a normal schedule, used by
        SVGImages because they have their own Page.

        Rename the one that the WebKits have to implement to triggerRenderingUpdate().

        * WebCoreSupport/WebChromeClient.h:
        * WebCoreSupport/WebChromeClient.mm:
        (WebChromeClient::triggerRenderingUpdate):
        (WebChromeClient::scheduleRenderingUpdate): Deleted.

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

        ChromeClient::needsImmediateRenderingUpdate() only existing to work around a WebKit1 bug
        https://bugs.webkit.org/show_bug.cgi?id=217338

        Reviewed by Said Abou-Hallawa.

        WebViewLayerFlushScheduler has a bug where scheduling inside the callback would fail
        because the RunLoopObserver was always invalidated at the end of the callback.

        If we fix this, we can remove ChromeClient::needsImmediateRenderingUpdate() which I believe
        only existed to work around this bug.

        * WebCoreSupport/WebChromeClient.h:
        * WebView/WebViewData.h:
        * WebView/WebViewData.mm:
        (WebViewLayerFlushScheduler::schedule):
        (WebViewLayerFlushScheduler::layerFlushCallback):

2020-10-05  Aditya Keerthi  <akeerthi@apple.com>

        [Contact Picker API] Introduce bindings for the Contact Picker API
        https://bugs.webkit.org/show_bug.cgi?id=216793
        <rdar://problem/69317957>

        Reviewed by Wenson Hsieh.

        Added plumbing to support the associated experimental test option.

        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (-[WebPreferences contactPickerAPIEnabled]):
        (-[WebPreferences setContactPickerAPIEnabled:]):
        * WebView/WebPreferencesPrivate.h:

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

        Remove support for enabling subpixel CSSOM values, it's off by default everywhere and known to be not-compatible with the web
        https://bugs.webkit.org/show_bug.cgi?id=217300

        Reviewed by Simon Fraser.

        Deprecate SPI for enabling subpixel CSSOM values. It is not web compatible.

        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (-[WebPreferences setSubpixelCSSOMElementMetricsEnabled:]):
        (-[WebPreferences subpixelCSSOMElementMetricsEnabled]):
        * WebView/WebPreferencesPrivate.h:

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

        Unify linkedOnOrAfter duplicate code and use SPI/WebCoreTestSupport instead of NSUserDefaults
        https://bugs.webkit.org/show_bug.cgi?id=217239

        Reviewed by Darin Adler.

        * DefaultDelegates/WebDefaultUIDelegate.mm:
        (-[WebDefaultUIDelegate webView:dragDestinationActionMaskForDraggingInfo:]):
        * Misc/WebIconDatabase.mm:
        (+[WebIconDatabase sharedIconDatabase]):
        * Misc/WebKitVersionChecks.h:
        * Misc/WebKitVersionChecks.mm:
        (WebKitLinkTimeVersion):
        (linkedOnOrAfter): Deleted.
        * WebView/WebPreferencesDefaultValues.mm:
        (WebKit::defaultPassiveTouchListenersAsDefaultOnDocument):
        (WebKit::defaultShouldRestrictBaseURLSchemes):

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

        [JSC] Introduce JITOperationList to validate JIT-caged pointers
        https://bugs.webkit.org/show_bug.cgi?id=217261

        Reviewed by Saam Barati.

        * 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-10-01  Chris Dumez  <cdumez@apple.com>

        Add basic infrastructure for AudioWorklet
        https://bugs.webkit.org/show_bug.cgi?id=217153

        Reviewed by Sam Weinig.

        * WebCoreSupport/WebPlatformStrategies.mm:

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

        Remove duplicate definitions of @property (nonatomic) BOOL CSSIndividualTransformPropertiesEnabled
        https://bugs.webkit.org/show_bug.cgi?id=217182

        Reviewed by Alex Christensen.

        When the fix for ​https://webkit.org/b/216271 was landed, it added two definitions of
        the CSSIndividualTransformPropertiesEnabled property (though one getter was misnamed), leading 
        to linker warnings. This removes one of them.

        * WebView/WebPreferences.mm:
        (-[WebPreferences cssIndividualTransformPropertiesEnabled]): Deleted.

2020-10-01  Aditya Keerthi  <akeerthi@apple.com>

        [macCatalyst] Crash when attempting to display a select dropdown in a UIWebView
        https://bugs.webkit.org/show_bug.cgi?id=217148
        <rdar://problem/64004677>

        Reviewed by Darin Adler.

        When clicking on a select element in a Catalyst UIWebView, WebKit calls
        into UIKit to present a popover. On Catalyst, UIKit popovers call
        resignFirstResponder on the current first responder, when presented.
        Consequently, when an attempt to display the select dropdown is made,
        [WebHTMLView resignFirstResponder] is invoked. This method blurs the
        currently focused element, which tells UIKit to destroy the popover.
        Destroying the popover while its attempting to become first responder
        is not safe, leading to a crash.

        In [WebHTMLView resignFirstResponder], clearFocus is only called if
        [WebView _isPerformingProgrammaticFocus] is false. UIKit can take
        advantage of this to prevent blurring an element if the first
        responder is being resigned due to presenting a view associated with
        the same element.

        However, [WebHTMLView resignFirstResponder] also clears focus on the
        current page's FocusController, which can also cause the element to be
        blurred. To prevent this, guard the call on the same check as
        clearFocus.

        Note that this approach to preventing resignFirstResponder from blurring
        the focused element is similar to the approach taken in WebKit2.

        This change is made for all Cocoa platforms, since _isPerformingProgrammaticFocus
        is internal to WebKit and the only time it is true is within a call to
        WebChromeClient::makeFirstResponder. That method calls
        [WebUIDelegate webView:makeFirstResponder], which states in its
        documentation: "responder will always be a view that is in the view
        subhierarchy of the top-level web view for this WebView". Consequently,
        nextResponderIsInWebView will be true when _isPerformingProgrammaticFocus
        is true, meaning the change doesn't affect existing behavior.

        No new tests as the functionality is dependent on a UIKit change.

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

2020-09-29  Sam Weinig  <weinig@apple.com>

        [Preferences] Adopt shared preferences configuration and script in WebKit
        https://bugs.webkit.org/show_bug.cgi?id=217075

        Reviewed by Darin Adler.

        * Scripts/generate-preferences.sh:
        Update to account for new interface requiring the full path to each template.

2020-09-29  Alex Christensen  <achristensen@webkit.org>

        Unreviewed, reverting r267397.

        SPI is still used <rdar://problem/69749992>

        Reverted changeset:

        "Remove deprecated script and stylesheet injection SPI,
        replaced with more inclusively-named SPI"
        https://bugs.webkit.org/show_bug.cgi?id=214936
        https://trac.webkit.org/changeset/267397

2020-09-28  Sam Weinig  <weinig@apple.com>

        [Preferences] Move GeneratePreferences.rb and yaml configuration files to WTF to be shared
        https://bugs.webkit.org/show_bug.cgi?id=217056

        Reviewed by Darin Adler.

        Move GeneratePreferences.rb and WebPreferences*.yaml files from WebKitLegacy to WTF, and install them into the existing
        $SDKROOT/usr/local/install/wtf/Scripts for use by down stack projects.

        Also adds new script, generate-preferences.sh, to make editing / reviewing the invocation a bit easier as you don't
        have to use the tiny editor in the Run Scripts phase pane.

        Adds new build variable, WTF_BUILD_SCRIPTS_DIR, to easily specify the new location of the moved files.

        * Configurations/WebKitLegacy.xcconfig:
        * Scripts/GeneratePreferences.rb: Removed.
        * Scripts/generate-preferences.sh: Added.
        * WebView/WebPreferences.yaml: Removed.
        * WebView/WebPreferencesDebug.yaml: Removed.
        * WebView/WebPreferencesExperimental.yaml: Removed.
        * WebView/WebPreferencesInternal.yaml: Removed.

2020-09-28  Devin Rousso  <drousso@apple.com>

        [iOS] unable to airplay directly loaded fullscreen video
        https://bugs.webkit.org/show_bug.cgi?id=216858
        <rdar://problem/68746321>

        Reviewed by Eric Carlson.

        It's possible that `MediaPlayerPrivate::wirelessVideoPlaybackDisabled` is queried before a
        "real" `MediaPlayerPrivate` (i.e. not `NullMediaPlayerPrivate`) is initialized through one
        of the registered `MediaPlayerFactory` "engine"s. It's further possible that the value
        returned by `MediaPlayerPrivate::wirelessVideoPlaybackDisabled` will change as the new
        "real" `MediaPlayerPrivate` may have different logic. In this case, the `MediaPlayer`
        doesn't update its client (and therefore nothing "up" the tree, including the client's
        clients) with the new `MediaPlayerPrivate::wirelessVideoPlaybackDisabled` value, meaning
        that the old value will still be used.

        Add piping such that when the `MediaPlayerFactory` "engine" changes, the `MediaPlayer`
        notifies its client (which is further piped "up" the tree to the client's clients) which
        eventually causes `MediaPlayerPrivate::wirelessVideoPlaybackDisabled` to be re-evaluated.

        * WebCoreSupport/WebChromeClient.h:
        * WebCoreSupport/WebChromeClient.mm:
        (WebChromeClient::playbackControlsMediaEngineChanged): Added.
        * WebView/WebViewInternal.h:
        * WebView/WebView.mm:
        (-[WebView _playbackControlsMediaEngineChanged]): Added.

2020-09-27  Sam Weinig  <weinig@apple.com>

        Fix some typos found by Simon post-review for https://bugs.webkit.org/show_bug.cgi?id=217042

        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):
        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]):
        "rmeove" -> "remove".

2020-09-27  Sam Weinig  <weinig@apple.com>

        [Preferences] Generate base preferences for WebKitLegacy
        https://bugs.webkit.org/show_bug.cgi?id=217042

        Reviewed by Tim Horton.

        Imports (and sorts) WebPreferences.yaml from WebKit, and starts generation for
        for WebKitLegacy. To support this, a few tweaks to generation were required:
        
        - A new 'exposed' key was added to the configuration files which allows restricting
          which frontends a preference is exposed to. By default, preferences are exposed to
          all frontends. This is intended to be used for preferences that don't have a binding
          to WebCore (e.g. process model related preferences for Webkit). We will require a
          seperate concept for features that WebCore knows about, but are not supported by
          a frontend, but that will be added in future revisions.
          
          'exposed' is used in a few places that have 'custom' bindings to WebCore where 
          WebKitLegacy and WebKit don't use the same type or meaning for a preference, such
          as WebKitLegacy's FrameFlattening enum vs. WebKit's FrameFlatteningEnabled bool,
          or WebKitLegacy's WebSQLEnabled vs. WebKit's WebSQLDisabled. Eventually, it would
          be nice to make these match, but it is not required.
        
        - A new 'webKitLegacyPreferenceKey' key was added to the configuration files allowing
          for existing keys that don't match the default pattern of "WebKit" + keyName. This is
          to avoid changing the value of the preference key strings in WebPreferenceKeysPrivate.h,
          as I am not confident that changing them is kosher. I also went back and reverted the
          few I had already changed, just to be on the safe side.

        - Support was added in WebViewPreferencesChangedGenerated.mm.erb for non bool values.

        - Preferences that are conditionally compiled out (using the conditional key) no longer
          generate a default when they are compiled out, which required a little macro magic
          in WebPreferencesDefinitions.h.erb in the form of the new INITIALIZE_DEFAULT_PREFERENCES_FOR_
          macros.

        * Scripts/GeneratePreferences.rb:
        * Scripts/PreferencesTemplates/WebPreferencesDefinitions.h.erb:
        * Scripts/PreferencesTemplates/WebViewPreferencesChangedGenerated.mm.erb:
        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):
        * WebView/WebPreferences.yaml:
        * WebView/WebPreferencesDebug.yaml:
        * WebView/WebPreferencesDefaultValues.h:
        * WebView/WebPreferencesDefaultValues.mm:
        (WebKit::defaultAllowsInlineMediaPlayback):
        (WebKit::defaultAllowsInlineMediaPlaybackAfterFullscreen):
        (WebKit::defaultAllowsPictureInPictureMediaPlayback):
        (WebKit::defaultJavaScriptCanOpenWindowsAutomatically):
        (WebKit::defaultInlineMediaPlaybackRequiresPlaysInlineAttribute):
        (WebKit::defaultPassiveTouchListenersAsDefaultOnDocument):
        (WebKit::defaultRequiresUserGestureToLoadVideo):
        (WebKit::defaultWebSQLEnabled):
        (WebKit::defaultAttachmentElementEnabled):
        (WebKit::defaultShouldRestrictBaseURLSchemes):
        * WebView/WebPreferencesExperimental.yaml:
        * WebView/WebPreferencesInternal.h:
        * WebView/WebPreferencesInternal.yaml:
        * WebView/WebView.mm:
        (-[WebView _commonInitializationWithFrameName:groupName:]):
        (-[WebView _preferencesChanged:]):
        (shouldAllowPictureInPictureMediaPlayback): Deleted.
        (shouldAllowWindowOpenWithoutUserGesture): Deleted.
        (shouldRequireUserGestureToLoadVideo): Deleted.
        (shouldRestrictBaseURLSchemes): Deleted.
        * WebView/WebViewData.h:

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

        WebKitLegacy should call Page::finalizeRenderingUpdate()
        https://bugs.webkit.org/show_bug.cgi?id=216958

        Reviewed by Tim Horton.

        This is a precursor to fixing webkit.org/b/216726. Page needs to track the phase
        of updateRendering that we are in, and to ease this tracking, WebKitLegacy needs to call
        Page::finalizeRenderingUpdate() so the state is tracked.
        
        Rename -_viewWillDrawInternal to -_updateRendering, and have it call updateRendering()
        and finalizeRenderingUpdate(). We can also move in the call to -_synchronizeCustomFixedPositionLayoutRect
        which both call sites do.
        
        Since updateRendering() is guaranteed to update layout, we know -_flushCompositingChanges would have
        never returned NO here, so we can remove the condition in LayerFlushController::flushLayers().
        
        -[WebHTMLView viewWillDraw] also does a similar -_web_updateLayoutAndStyleIfNeededRecursive
        then -_flushCompositingChanges but this is called from AppKit with a timing that we don't control;
        it may be redundant with -[WebView _updateRendering] but I leave that behavior unchanged.

        * WebView/WebView.mm:
        (-[WebView _updateRendering]):
        (-[WebView _forceRepaintForTesting]):
        (LayerFlushController::flushLayers):
        (-[WebView _viewWillDrawInternal]): Deleted.

2020-09-26  Sam Weinig  <weinig@apple.com>

        [Preferences] Generate Debug and Internal preferences for WebKitLegacy
        https://bugs.webkit.org/show_bug.cgi?id=217015

        Reviewed by Darin Adler.

        Imports WebPreferencesDebug.yaml and WebPreferencesInternal.yaml from WebKit and starts
        generating them. 
        
        In addition, preference yaml files must now be sorted alphabetically by preference name, and
        this is now enforced by GeneratePreferences.rb, generating an error if they are out of order.

        * Scripts/GeneratePreferences.rb:
        * Scripts/PreferencesTemplates/WebPreferencesDefinitions.h.erb:
        * Scripts/PreferencesTemplates/WebPreferencesInternalFeatures.mm.erb: Added.
        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):
        (+[WebPreferences _internalDebugFeatures]): Deleted.
        * WebView/WebPreferencesDebug.yaml:
        * WebView/WebPreferencesDefaultValues.h:
        * WebView/WebPreferencesExperimental.yaml:
        * WebView/WebPreferencesInternal.yaml:
        * WebView/WebPreferencesPrivate.h:
        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]):

2020-09-26  Sam Weinig  <weinig@apple.com>

        [Preferences] It should be possible to have different default values for WebKitLegacy and WebKit in preference yaml files
        https://bugs.webkit.org/show_bug.cgi?id=216987

        Reviewed by Darin Adler.

        Add new syntax for default values that allows specializing based on both frontend (WebKit or 
        WebKitLegacy) and then futher based on platform macros. For example, the preference for 
        CSSTypedOMEnabled now looks like:
        
           CSSTypedOMEnabled:
             type: bool
             humanReadableName: "CSS Typed OM"
             humanReadableDescription: "Enable the CSS Typed OM"
             webcoreBinding: RuntimeEnabledFeatures
             condition: ENABLE(CSS_TYPED_OM)
             defaultValue:
               WebKitLegacy:
                 default: false
               WebKit:
                 "ENABLE(EXPERIMENTAL_FEATURES) && (PLATFORM(GTK) || PLATFORM(WPE))": true
                 default: false
        
        Which means that in WebKitLegacy, the default value is false, and in WebKit, the default
        value will be:
        
            #if ENABLE(EXPERIMENTAL_FEATURES) && (PLATFORM(GTK) || PLATFORM(WPE))
               true
            #else
               false
            #endif

        As many platform macro based conditions can be provided as wanted, and they are evaluated
        in the order specified in the file.
        
        The syntax currently always requires explicitly specifying WebKitLegacy and WebKit and default 
        for each, even if they are all the same, but could be extended in the future to allow compaction
        if that becomes desirable. There is also not yet support for conditionally enabling a feature
        based on os-feature-flags or linked-on-or-after checks, so those still require specifying the
        default value as a function, but that seems like a nice future improvement.
        
        As this is still staging for doing this for both WebKitLegacy and WebKit, this change only effects
        WebKitLegacy for now, and subsequent changes will move this to a shared location.

        * Scripts/GeneratePreferences.rb:
        * Scripts/PreferencesTemplates/WebPreferencesDefinitions.h.erb:
        * Scripts/PreferencesTemplates/WebPreferencesExperimentalFeatures.mm.erb:
        * WebView/WebPreferencesExperimental.yaml:

2020-09-25  Antoine Quint  <graouts@webkit.org>

        Add an experimental feature flag for CSS individual transform properties
        https://bugs.webkit.org/show_bug.cgi?id=216271
        <rdar://problem/68914539>

        Reviewed by Dean Jackson.

        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (-[WebPreferences setCSSIndividualTransformPropertiesEnabled:]):
        (-[WebPreferences cssIndividualTransformPropertiesEnabled]):
        (-[WebPreferences CSSIndividualTransformPropertiesEnabled]):
        * WebView/WebPreferencesExperimental.yaml:
        * WebView/WebPreferencesPrivate.h:

2020-09-24  Darin Adler  <darin@apple.com>

        Add CSSConditionRule and CSSGroupingRule
        https://bugs.webkit.org/show_bug.cgi?id=216855

        Reviewed by Sam Weinig.

        * DOM/DOMCSS.mm:
        (kitClass): Added a default case since we don't intend to list every single rule type here.

2020-09-25  Sam Weinig  <weinig@apple.com>

        [Preferences] Start generating experimental feature preferences for legacy WebKit
        https://bugs.webkit.org/show_bug.cgi?id=216909

        Reviewed by Tim Horton.

        As a stepping stone to unified preferences definitions and generation, this adds
        generation of "experimental feature" preferences for WebKitLegacy. The generator
        is almost identical to the one in WebKit, but the templates are changed. The end
        goal will be to share the preferences definition (yaml) files. In this pass, I
        have copied WebPreferencesExperimental.yaml from WebKit, but change the default
        values to match the existing WebKitLegacy default values (and temporarily removed
        WebSQLDisabled, as WebKitLegacy has a WebSQLEnabled, and its not clear how to map
        to the inverse yet). I have also imported empty versions of WebPreferences.yaml, 
        WebPreferencesDebug.yaml, and  WebPreferencesInternal.yaml, to keep the generator 
        happy, these will be filled in subsequent changes or, if we decide on a good home 
        for them, perhaps in WTF, we can just switch to using the shared ones.

        Much of the change is moving around existing getter/setters in WebPreferences
        to go in their own category, with the intention to remove them when we we have
        determined no more callers remain.

        * Scripts: Added.
        * Scripts/GeneratePreferences.rb: Added.
        * Scripts/PreferencesTemplates: Added.
        * Scripts/PreferencesTemplates/WebPreferencesDefinitions.h.erb: Added.
        * Scripts/PreferencesTemplates/WebPreferencesExperimentalFeatures.mm.erb: Added.
        * Scripts/PreferencesTemplates/WebViewPreferencesChangedGenerated.mm.erb: Added.
        * WebView/WebFeature.h: Added.
        * WebView/WebFeature.m: Added.
        (-[WebFeature initWithKey:preferenceKey:name:details:defaultValue:hidden:]):
        (-[WebFeature description]):
        * WebView/WebFeatureInternal.h: Added.
        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        * WebView/WebPreferences.yaml: Added.
        * WebView/WebPreferencesDebug.yaml: Added.
        * WebView/WebPreferencesDefaultValues.h: Added.
        * WebView/WebPreferencesDefaultValues.mm: Added.
        * WebView/WebPreferencesExperimental.yaml: Added.
        * WebView/WebPreferencesInternal.h: Added.
        * WebView/WebPreferencesInternal.yaml: Added.
        * WebView/WebPreferencesPrivate.h:
        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]):
        * WebView/WebViewInternal.h:

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

        Add feature flags for GPU Process features
        https://bugs.webkit.org/show_bug.cgi?id=216901

        Reviewed by Tim Horton.

        Minor cleanups.

        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):
        (-[WebPreferences useGPUProcessForMediaEnabled]):
        (-[WebPreferences setUseGPUProcessForMediaEnabled:]):
        (-[WebPreferences useGPUProcessForMedia]): Deleted.
        (-[WebPreferences setUseGPUProcessForMedia:]): Deleted.
        * WebView/WebPreferencesPrivate.h:
        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]):

2020-09-23  Chris Dumez  <cdumez@apple.com>

        Turn off the legacy prefixed WebAudio API
        https://bugs.webkit.org/show_bug.cgi?id=216886

        Reviewed by Sam Weinig.

        Turn off the legacy prefixed WebAudio API, now that the modern unprefixed API has been enabled
        in r267488.

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

2020-09-23  Chris Dumez  <cdumez@apple.com>

        Turn on the modern unprefixed WebAudio API
        https://bugs.webkit.org/show_bug.cgi?id=216885

        Reviewed by Eric Carlson.

        Turn on the modern unprefixed WebAudio API now that we support most of the API
        besides AudioWorklet and now that we have a good pass rate on WPT tests.

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

2020-09-21  Alex Christensen  <achristensen@webkit.org>

        Remove deprecated script and stylesheet injection SPI, replaced with more inclusively-named SPI
        https://bugs.webkit.org/show_bug.cgi?id=214936

        Reviewed by Youenn Fablet.

        rdar://64376341 tracks the adoption of the replacement.  Once that is done, we can remove the old SPI.

        * WebView/WebView.mm:
        (+[WebView _addUserScriptToGroup:world:source:url:whitelist:blacklist:injectionTime:]): Deleted.
        (+[WebView _addUserScriptToGroup:world:source:url:whitelist:blacklist:injectionTime:injectedFrames:]): Deleted.
        (+[WebView _addUserStyleSheetToGroup:world:source:url:whitelist:blacklist:]): Deleted.
        (+[WebView _addUserStyleSheetToGroup:world:source:url:whitelist:blacklist:injectedFrames:]): Deleted.
        * WebView/WebViewPrivate.h:

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

        Next step towards eliminating deprecated legacy positions
        https://bugs.webkit.org/show_bug.cgi?id=216751

        Reviewed by Sam Weinig.

        * DOM/DOMUIKitExtensions.mm:
        (-[DOMNode rangeOfContainingParagraph]):
        * WebView/WebFrame.mm:
        (-[WebFrame spaceFollowsWordInRange:]):
        (-[WebFrame caretRectAtNode:offset:affinity:]):
        (-[WebFrame focusedNodeHasContent]):
        Replaced calls to createLegacyEditingPosition with calls to
        makeDeprecatedLegacyPosition or makeContainerOffsetPosition.

2020-09-17  Sam Weinig  <weinig@apple.com>

        Remove runtime setting for enabling/disabling the UserTiming and ResourceTiming APIs
        https://bugs.webkit.org/show_bug.cgi?id=216556

        Reviewed by Darin Adler.

        Remove runtime setting for enabling/disabling UserTiming and ResourceTiming 
        APIs. They have both been on for a while in WebKit2 and there aren't any
        known uses cases for disabling them. In addition to removing the setting, 
        they are now enabled in LegacyWebKit as well.

        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):
        (-[WebPreferences setUserTimingEnabled:]):
        (-[WebPreferences userTimingEnabled]):
        (-[WebPreferences setResourceTimingEnabled:]):
        (-[WebPreferences resourceTimingEnabled]):
        * WebView/WebPreferencesPrivate.h:
        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]):

2020-09-17  Antoine Quint  <graouts@webkit.org>

        Remove the legacy animation code
        https://bugs.webkit.org/show_bug.cgi?id=216608

        Reviewed by Dean Jackson.

        Since we now have a single animation engine, the runtime flags to optionally enable the Web Animations engine are
        not needed anymore and are now removed.

        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):
        (-[WebPreferences webAnimationsEnabled]): Deleted.
        (-[WebPreferences setWebAnimationsEnabled:]): Deleted.
        (-[WebPreferences webAnimationsCSSIntegrationEnabled]): Deleted.
        (-[WebPreferences setWebAnimationsCSSIntegrationEnabled:]): Deleted.
        * WebView/WebPreferencesPrivate.h:
        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]):

2020-09-16  Sam Weinig  <weinig@apple.com>

        Remove runtime setting for enabling/disabling CSS shadow parts
        https://bugs.webkit.org/show_bug.cgi?id=216567

        Reviewed by Tim Horton.

        Remove runtime setting for enabling/disabling CSS shadow parts. It is
        on by default and there is no known reason one would need to disable it.

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

2020-09-16  Sam Weinig  <weinig@apple.com>

        Remove runtime setting for enabling/disabling the isSecureContext API?
        https://bugs.webkit.org/show_bug.cgi?id=216562

        Reviewed by Darin Adler.

        Remove runtime setting for enabling/disabling the the isSecureContext attribute. 
        on window and the worker global scope. There is no known reason one would need 
        to disable it.

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

2020-09-15  Sam Weinig  <weinig@apple.com>

        Remove runtime setting for enabling/disabling the fetch API
        https://bugs.webkit.org/show_bug.cgi?id=216519

        Reviewed by Alex Christensen.

        Remove runtime setting for enabling/disabling the fetch API. There is no
        reason one needs to disable it now and it has been on by default for
        a long enough time.

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

2020-09-15  Sam Weinig  <weinig@apple.com>

        Remove runtime setting for enabling/disabling custom elements
        https://bugs.webkit.org/show_bug.cgi?id=216518

        Reviewed by Tim Horton.

        Remove runtime setting for enabling/disabling custom elements. There is no
        reason one need to disable it now, and it has been on by default for
        a long enough time.

        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):
        (-[WebPreferences setCustomElementsEnabled:]):
        (-[WebPreferences customElementsEnabled]):
        * WebView/WebPreferencesPrivate.h:

2020-09-14  Sam Weinig  <weinig@apple.com>

        Remove runtime setting for enabling/disabling ShadowDOM
        https://bugs.webkit.org/show_bug.cgi?id=216511

        Reviewed by Ryosuke Niwa.

        Remove runtime setting for enabling/disabling ShadowDOM. There is no
        reason one need to disable it now, and it has been on by default for
        a long enough time.

        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):
        (-[WebPreferences setShadowDOMEnabled:]):
        (-[WebPreferences shadowDOMEnabled]):
        (-[WebPreferences setVideoPluginProxyEnabled:]):
        (-[WebPreferences isVideoPluginProxyEnabled]):
        (-[WebPreferences setHixie76WebSocketProtocolEnabled:]):
        (-[WebPreferences isHixie76WebSocketProtocolEnabled]):
        (-[WebPreferences setDiskImageCacheEnabled:]):
        * WebView/WebPreferencesPrivate.h:
        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]):

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

        Enable WebGL2 by default
        https://bugs.webkit.org/show_bug.cgi?id=216464
        <rdar://problem/68811378>

        Reviewed by Sam Weinig.

        Our WebGL2 implementation is in good enough shape that we should
        enable it by default for broader testing.

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

2020-09-10  Chris Dumez  <cdumez@apple.com>

        Unreviewed, reverting r266842 and r266883.

        Causes some assertions to be hit in debug builds

        Reverted changesets:

        "Some WebAudio tests give different output on different
        machines"
        https://bugs.webkit.org/show_bug.cgi?id=216371
        https://trac.webkit.org/changeset/266842

        "Unreviewed Windows build fix after r266842."
        https://trac.webkit.org/changeset/266883

2020-09-10  Chris Dumez  <cdumez@apple.com>

        Some WebAudio tests give different output on different machines
        https://bugs.webkit.org/show_bug.cgi?id=216371

        Reviewed by Alex Christensen.

        Add WebView SPI to set the hardware sample rate.

        * WebView/WebView.mm:
        (+[WebView _setHardwareSampleRateOverride:]):
        * WebView/WebViewPrivate.h:

2020-09-08  Megan Gardner  <megan_gardner@apple.com>

        Switch from deprecated secondarySelectedControlColor to unemphasizedSelectedContentBackgroundColor.
        https://bugs.webkit.org/show_bug.cgi?id=216207

        Reviewed by Darin Adler.

        * Plugins/WebPluginController.mm:
        (-[WebPluginController webPlugInContainerSelectionColor]):

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

        Remove EAffinity, UPSTREAM, DOWNSTREAM, SEL_DEFAULT_AFFINITY, and VisibleSelection::selectionType
        https://bugs.webkit.org/show_bug.cgi?id=216102

        Reviewed by Sam Weinig.

        * DOM/DOMUIKitExtensions.mm:
        (-[DOMNode rangeOfContainingParagraph]): Rely on default affinity.

        * WebCoreSupport/WebEditorClient.h:
        (kit): Use Affinity.
        (core): Ditto.
        * WebCoreSupport/WebEditorClient.mm:
        (WebEditorClient::shouldChangeSelectedRange): Ditto.
        * WebView/WebFrame.mm:
        (-[WebFrame _caretRectAtPosition:affinity:]): Ditto.
        (-[WebFrame _selectNSRange:]): Rely on default affinity.
        (-[WebFrame getDictationResultRanges:andMetadatas:]): Use isNone.

        * WebView/WebHTMLView.mm:
        (-[WebHTMLView insertText:]): Rely on default affinity.

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

        Web Inspector: allow special JavaScript breakpoints to be configured
        https://bugs.webkit.org/show_bug.cgi?id=215794

        Reviewed by Brian Burg.

        * WebView/WebScriptDebugger.mm:
        (WebScriptDebugger::WebScriptDebugger):

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

        Change Affinity into an enum class
        https://bugs.webkit.org/show_bug.cgi?id=216096

        Reviewed by Wenson Hsieh.

        * WebCoreSupport/WebEditorClient.h:
        (kit): Use prefix.
        (core): Ditto.

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

        Remove comparePositions and make VisiblePosition improvements
        https://bugs.webkit.org/show_bug.cgi?id=215982

        Reviewed by Sam Weinig.

        * WebCoreSupport/WebEditorClient.h:
        (kit): Update for changes to Affinity enumeration.
        (core): Ditto.
        * WebView/WebFrame.mm:
        (-[WebFrame characterBeforeCaretSelection]): Moved the code from
        FrameSelection::characterBeforeCaretSelection because it's a one-liner now.
        Added a call to updateLayout because it's unclear why we could do without it before.
        Also added a null check for frame, since there's no guarantee it's not null.
        (-[WebFrame characterAfterCaretSelection]): Ditto.
        (-[WebFrame selectionAtDocumentStart]): Ditto.
        (-[WebFrame selectNSRange:onElement:]): Ditto, but also added a comment because
        this method is not useful and almost certainly not used.
        (-[WebFrame _smartInsertForString:replacingRange:beforeString:afterString:]):
        Use VisiblePosition::defaultAffinity instead of VP_DEFAULT_AFFINITY.

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

        Many settings in RuntimeEnabledSettings should autogenerated Settings: Part 1
        https://bugs.webkit.org/show_bug.cgi?id=215981

        Reviewed by Darin Adler.

        This moves an initial chunk of RuntimeEnabledSettings settings to Settings.yaml, focusing
        on settings that don't require substantial refactoring or new features to work in Settings.yaml.

        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]):
        Update changed settings to use Settings rather than RuntimeEnabledSettings.

2020-08-30  Timothy Horton  <timothy_horton@apple.com>

        Remove an unused addition point

        * WebCoreSupport/WebFrameLoaderClient.mm:

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

        Remove almost all the remaining uses of live ranges
        https://bugs.webkit.org/show_bug.cgi?id=215755

        Reviewed by Sam Weinig.

        * DOM/DOMRange.mm:
        (-[DOMRange text]): Use plainText.
        (-[DOMRange compareBoundaryPoints:sourceRange:]): Update for rename of
        compareBoundaryPointsForBindings.
        (-[DOMRange intersectsNode:]): Removed raiseOnDOMError.

        * DOM/DOMUIKitExtensions.mm:
        (firstNodeAfter): Moved Range::firstNode here since it's the only remaining caller;
        might need to keep legacy behavior depending on how this is used by UIKit.
        (-[DOMRange firstNode]): Call firstNodeAfter.

        * DOM/WebDOMOperations.mm:
        (-[DOMRange markupString]): Stop using Range::ownerDocument.

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

        [iOS] provide a way to get previously inserted alternatives for the selected text
        https://bugs.webkit.org/show_bug.cgi?id=215816
        <rdar://problem/66646042>

        Reviewed by Darin Adler.

        * WebView/WebView.mm:
        (-[WebView _dictationAlternatives:]):
        Create a `Vector<String>` from the returned `NSTextAlternatives *` now that the member
        `WebCore::AlternativeTextUIController::alternativesForContext` returns it.

2020-08-27  Youenn Fablet  <youenn@apple.com>

        Add support for TransformStream
        https://bugs.webkit.org/show_bug.cgi?id=215607

        Reviewed by Alex Christensen.

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

2020-08-25  Ryosuke Niwa  <rniwa@webkit.org>

        HashMap<Ref<T>>::take should return RefPtr<T>
        https://bugs.webkit.org/show_bug.cgi?id=215830

        Reviewed by Darin Adler.

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

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

        Trying to lookup when WebView is in a popover causes process to hang. Fix for Legacy WebView.
        https://bugs.webkit.org/show_bug.cgi?id=215792

        Reviewed by Tim Horton.

        Fix for https://bugs.webkit.org/show_bug.cgi?id=214773 also needed in legacy WebView.
        The Lookup framework does not populate the menus that it vends with the option to 'lookup'
        words that are selected in popovers. WebKit should follow the pattern and not put the
        item in the menu as Lookup is not able to handle this situation. Also if Lookup is disabled
        via defaults, we should not show it in the menu.

        * WebView/WebHTMLView.mm:
        (customMenuFromDefaultItems):

2020-08-24  Aditya Keerthi  <akeerthi@apple.com>

        [macOS] Show picker for date and datetime-local input types
        https://bugs.webkit.org/show_bug.cgi?id=214946

        Reviewed by Darin Adler and Wenson Hsieh.

        * WebCoreSupport/WebChromeClient.h:
        * WebCoreSupport/WebChromeClient.mm:
        (WebChromeClient::createDateTimeChooser):

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

        Move node geometry functions from Range to RenderObject
        https://bugs.webkit.org/show_bug.cgi?id=215677

        Reviewed by Zalan Bujtas.

        * DOM/DOM.mm:
        (-[DOMRange boundingBox]): Call unionRect(RenderObject::absoluteTextRects).

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

        Create documentOrder function, start refactoring to use it instead of Range::compare functions
        https://bugs.webkit.org/show_bug.cgi?id=215551

        Reviewed by Chris Dumez.

        * WebView/WebFrame.mm:
        (-[WebFrame _smartInsertForString:replacingRange:beforeString:afterString:]):
        Rewrite to use makeSimpleRange and makeContainerOffsetPosition. Simplifies
        the null checks. Would love to remove the function but at this time it's
        still used by Apple's Mail app (albeit in a peculiar way, always passing a
        constant string).

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

        Clean up DragApplicationFlags after switch to OptionSet<>
        <https://webkit.org/b/215349>

        Reviewed by Darin Adler.

        Change WebCore::DragApplicationFlags to an enum class.

        * WebView/WebView.mm:
        (-[WebView applicationFlags:]): Deleted.
        (-[WebView _applicationFlagsForDrag:]):
        - Rename -applicationFlags: to -_applicationFlagsForDrag: since
          it's only used internally.
        - Switch to return OptionSet<WebCore::DragApplicationFlags>.
        (-[WebView draggingEntered:]):
        (-[WebView draggingUpdated:]):
        (-[WebView draggingExited:]):
        (-[WebView performDragOperation:]):
        - Switch to calling -_applicationFlagsForDrag:.

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

        Remove the need for defining USE_NEW_BUILD_SYSTEM
        https://bugs.webkit.org/show_bug.cgi?id=215439

        Reviewed by Darin Adler.

        When building WebKit for XCBuild, we currently require that the
        external build system (such as the Makefile, build-webkit, etc.)
        defines the USE_NEW_BUILD_SYSTEM=YES build setting. This build setting
        controls parts of our build instructions that are sensitive to when
        XCBuild or the Legacy build system are being used. Notably, we need to
        know when to use our custom “copy and modify” scripts with copying
        certain header files (used with the Legacy build system) vs. using the
        enhanced Copy Headers build phase that’s enabled with
        APPLY_RULES_IN_COPY_HEADERS=YES (introduced with and used by XCBuild).
        The choice of which method to copy headers is used is controlled by
        USE_NEW_BUILD_SYSTEM.

        There is no built-in build setting that we can probe to help us
        determine which approach to take when copying and modifying headers,
        which is why we need to define USE_NEW_BUILD_SYSTEM ourselves. But it
        turns out that we can *detect* which build system is being used by
        taking advantage of a subtle difference between the two systems. As
        noted in:

            https://developer.apple.com/documentation/xcode-release-notes/build-system-release-notes-for-xcode-10

            “When an .xcconfig file contains multiple assignments of the same
             build setting, later assignments using $(inherited) or
             $(<setting_name>) will inherit from earlier assignments in the
             .xcconfig. The legacy build system caused every use of
             $(inherited) or $(<setting_name>) skip any other values defined
             within the .xcconfig.”

        This difference can be exploited as follows:

            WK_WHICH_BUILD_SYSTEM = not_
            WK_WHICH_BUILD_SYSTEM = $(inherited)legacy
            WK_USE_NEW_BUILD_SYSTEM = $(WK_USE_NEW_BUILD_SYSTEM_$(WK_WHICH_BUILD_SYSTEM))
            WK_USE_NEW_BUILD_SYSTEM_legacy = NO
            WK_USE_NEW_BUILD_SYSTEM_not_legacy = YES

        We can then use WK_USE_NEW_BUILD_SYSTEM where we used to use the
        externally-defined USE_NEW_BUILD_SYSTEM.

        * Configurations/Base.xcconfig:
        * Configurations/WebKitLegacy.xcconfig:

2020-08-05  Tim Horton  <timothy_horton@apple.com>

        Remove all references to non-existent 10.16
        https://bugs.webkit.org/show_bug.cgi?id=215202

        Reviewed by Wenson Hsieh.

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

2020-08-03  Youenn Fablet  <youenn@apple.com>

        Move user gesture propagation over promise behind a feature flag
        https://bugs.webkit.org/show_bug.cgi?id=215014

        Reviewed by Eric Carlson.

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

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

        Remove the ENABLE_DATA_INTERACTION feature flag
        https://bugs.webkit.org/show_bug.cgi?id=215091

        Reviewed by Megan Gardner.

        * WebCoreSupport/WebDragClient.mm:
        * WebView/WebView.mm:
        * WebView/WebViewData.h:
        * WebView/WebViewInternal.h:

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

        Remove some member functions of Range and many calls to createLiveRange
        https://bugs.webkit.org/show_bug.cgi?id=215070

        Reviewed by Sam Weinig.

        * DOM/DOM.mm:
        (-[DOMRange renderedImageForcingBlackText:renderedImageForcingBlackText:]):
        Use makeSimpleRange.
        (-[DOMRange textRects]): Ditto.

        * DOM/DOMDocument.mm: Update includes.
        * DOM/DOMRange.mm: Ditto.
        * DOM/DOMRangeInternal.h: Ditto.
        * DOM/DOMUIKitExtensions.mm: Ditto.
        * DOM/DOMUtility.mm: Ditto.

        * DOM/WebDOMOperations.mm:
        (-[DOMRange webArchive]): Use makeSimpleRange.
        (-[DOMRange markupString]): Ditto.

        * WebView/WebFrame.mm:
        (-[WebFrame _stringForRange:]): Use makeSimpleRange.
        (-[WebFrame _convertToDOMRange:]): Return a SimpleRange.
        (-[WebFrame _convertToDOMRange:rangeIsRelativeTo:]): Ditto.
        (-[WebFrame _convertNSRangeToDOMRange:]): Update for above.
        (-[WebFrame _convertDOMRangeToNSRange:]): Use makeSimpleRange.
        (-[WebFrame _selectNSRange:]): Update for above.
        (-[WebFrame selectWithoutClosingTypingNSRange:]): Ditto.
        (-[WebFrame getDictationResultRanges:andMetadatas:]): Use makeSimpleRange.
        (-[WebFrame dictationResultMetadataForRange:]): Ditto.
        * WebView/WebFrameInternal.h: Update for above.

        * WebView/WebHTMLView.mm:
        (-[WebHTMLView _documentFragmentFromPasteboard:forType:inContext:subresources:]):
        Use makeSimpleRange.
        (-[WebHTMLView attributedSubstringFromRange:]): Use auto.
        (-[WebHTMLView _attributedStringFromDOMRange:]): Deleted.
        (-[WebHTMLView attributedString]): Rewrote to use SimpleRange consistently.
        (-[WebHTMLView selectedAttributedString]): Ditto.

        * WebView/WebImmediateActionController.mm:
        (-[WebImmediateActionController _animationControllerForDataDetectedText]):
        Use makeSimpleRange.
        * WebView/WebTextIterator.mm:
        (-[WebTextIterator initWithRange:]): Ditto.

        * WebView/WebView.mm:
        (-[WebView _didConcludeEditDrag]): Remove createLiveRange.

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

        Remove Range::create and many more uses of live ranges
        https://bugs.webkit.org/show_bug.cgi?id=215004

        Reviewed by Sam Weinig.

        * DOM/DOMUIKitExtensions.mm:
        (-[DOMNode rangeOfContainingParagraph]): Use makeSimpleRange.

        * WebView/WebFrame.mm:
        (-[WebFrame _characterRangeAtPoint:]): Update since rangeAtPoint takes a SimpleRange.
        (-[WebFrame getDictationResultRanges:andMetadatas:]): Use document marker range function.

        * WebView/WebImmediateActionController.mm:
        (-[WebImmediateActionController _defaultAnimationController]): Use makeRangeSelectingNodeContents.
        (-[WebImmediateActionController _animationControllerForDataDetectedLink]): Ditto.

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

        Add linked-on-after check to keep WebSQL working in UIWebView until apps are rebuilt with iOS 14 SDK
        https://bugs.webkit.org/show_bug.cgi?id=215035
        <rdar://problem/65003342>

        Reviewed by Tim Horton.

        Add linked-on-after check to keep WebSQL working in UIWebView until apps are rebuilt with iOS 14 SDK.

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

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

        Further reduction in the use of live ranges, particularly in headers
        https://bugs.webkit.org/show_bug.cgi?id=214793

        Reviewed by Sam Weinig.

        * DOM/DOMHTML.mm:
        (-[DOMHTMLDocument createDocumentFragmentWithText:]): Use SimpleRange.
        * DOM/DOMUIKitExtensions.mm:
        (-[DOMRange move:inDirection:]): Ditto.
        (-[DOMRange extend:inDirection:]): Ditto.
        * DOM/WebDOMOperations.mm:
        (-[DOMRange webArchive]): Ditto.
        * WebView/WebFrame.mm:
        (-[WebFrame _firstRectForDOMRange:]): Moved a "*" to save a little work.
        (-[WebFrame setSelectedDOMRange:affinity:closeTyping:userTriggered:]):
        Use SimpleRange.
        (-[WebFrame _replaceSelectionWithText:selectReplacement:smartReplace:matchStyle:]):
        Ditto.
        (-[WebFrame _replaceSelectionWithText:selectReplacement:smartReplace:]):
        Ditto.
        (-[WebFrame _documentFragmentForText:]): Ditto.
        * WebView/WebView.mm:
        (-[WebView DOMRangeOfString:relativeTo:options:]): Ditto.
        (-[WebView setSelectedDOMRange:affinity:]): Ditto.

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

        Improve range idioms and other changes to prepare the way for more reduction in live range use
        https://bugs.webkit.org/show_bug.cgi?id=214882

        Reviewed by Sam Weinig.

        * WebCoreSupport/WebEditorClient.mm:
        (insertionPointFromCurrentSelection): Simplify with makeSimpleRange.
        (WebEditorClient::requestCandidatesForSelection): Ditto.

        * WebView/WebFrame.mm:
        (-[WebFrame _convertToDOMRange:rangeIsRelativeTo:]): Get rid of
        unnecessary construction of a range just to get an end point.
        (-[WebFrame wordOffsetInRange:]): Moved logic here from VisibleSelection.
        (-[WebFrame spaceFollowsWordInRange:]): Ditto.

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

        Stop using live ranges in SpellChecker.h and TextCheckingHelper.h
        https://bugs.webkit.org/show_bug.cgi?id=214648

        Reviewed by Sam Weinig.

        * WebCoreSupport/WebEditorClient.mm:
        (WebEditorClient::requestCheckingOfString): Pass the specific types of
        results we expect, rather than NSTextCheckingAllSystemTypes.

2020-07-22  Conrad Shultz  <conrad_shultz@apple.com>

        Update macOS Version macros
        https://bugs.webkit.org/show_bug.cgi?id=214653

        Reviewed by Tim Horton.

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

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

        Remove live ranges from Editor.h and EditorClient.h
        https://bugs.webkit.org/show_bug.cgi?id=214261

        Reviewed by Sam Weinig.

        * DOM/DOMRange.mm:
        (kit): Added an overload to convert to a live range so we don't have
        to touch every call site.
        * DOM/DOMRangeInternal.h: Added the above.

        * WebCoreSupport/WebEditorClient.h: Updated for changes to EditorClient.

        * WebCoreSupport/WebEditorClient.mm:
        (WebEditorClient::shouldDeleteRange): Changed types to not use live ranges.
        (WebEditorClient::shouldApplyStyle): Ditto.
        (WebEditorClient::shouldMoveRangeAfterDelete): Ditto.
        (WebEditorClient::shouldBeginEditing): Ditto.
        (WebEditorClient::shouldEndEditing): Ditto.
        (WebEditorClient::shouldInsertText): Ditto.
        (WebEditorClient::shouldChangeSelectedRange): Ditto.
        (WebEditorClient::willWriteSelectionToPasteboard): Ditto.
        (WebEditorClient::getClientPasteboardData): Ditto.
        (WebEditorClient::shouldInsertNode): Ditto.
        (WebEditorClient::performTwoStepDrop): Ditto.

        * WebView/WebFrame.mm:
        (-[WebFrame _firstRectForDOMRange:]): Update to not use live range.
        (-[WebFrame _scrollDOMRangeToVisible:]): Ditto.
        (-[WebFrame _rangeByAlteringCurrentSelection:direction:granularity:]): Ditto.
        (-[WebFrame _markDOMRange]): Ditto.
        (-[WebFrame _selectionRangeForFirstPoint:secondPoint:]): Ditto.
        (-[WebFrame _selectionRangeForPoint:]): Ditto.
        (-[WebFrame selectedDOMRange]): Ditto.
        (-[WebFrame elementRangeContainingCaretSelection]): Ditto.
        (-[WebFrame wordRangeContainingCaretSelection]): Ditto.
        (-[WebFrame rangeByMovingCurrentSelection:]): Ditto.
        (-[WebFrame rangeByExtendingCurrentSelection:]): Ditto.
        (-[WebFrame markedTextDOMRange]): Ditto.

        * WebView/WebHTMLView.mm:
        (-[WebHTMLView _selectedRange]): Update to not use live range.
        (-[WebHTMLView firstRectForCharacterRange:]): Use NSZeroRect.
        (-[WebHTMLView countMatchesForText:inDOMRange:options:limit:markMatches:]):
        Update to not use live range.
        * WebView/WebTextCompletionController.mm:
        (-[WebTextCompletionController doCompletion]): Ditto.
        * WebView/WebTextIterator.mm:
        (-[WebTextIterator currentRange]): Ditto.
        * WebView/WebView.mm:
        (-[WebView textIteratorForRect:]): Ditto.
        (-[WebView editableDOMRangeForPoint:]): Ditto.
        (-[WebView selectedDOMRange]): Ditto.

2020-07-21  Tim Horton  <timothy_horton@apple.com>

        REGRESSION (WebSQL disablement): Fudget app is unresponsive on launch
        https://bugs.webkit.org/show_bug.cgi?id=214620
        <rdar://problem/65443085>

        Reviewed by Geoffrey Garen.

        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):
        Add Fudget to the list of apps that can use WebSQL until linked on or after iOS 14.

2020-07-21  Eric Carlson  <eric.carlson@apple.com>

        Use AVRoutePickerView when available for choosing AirPlay devices
        https://bugs.webkit.org/show_bug.cgi?id=213497
        <rdar://problem/58610662>

        Reviewed by Jer Noble.

        * WebView/WebMediaPlaybackTargetPicker.h:
        (WebMediaPlaybackTargetPicker::~WebMediaPlaybackTargetPicker): Deleted.
        * WebView/WebMediaPlaybackTargetPicker.mm:
        (WebMediaPlaybackTargetPicker::create):
        (WebMediaPlaybackTargetPicker::WebMediaPlaybackTargetPicker):
        (WebMediaPlaybackTargetPicker::invalidate):
        (WebMediaPlaybackTargetPicker::platformView const): New override.

        * WebView/WebView.mm:
        (-[WebView _devicePicker]): Pass view to WebMediaPlaybackTargetPicker factory.

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

        Remove final vestigates of SimpleColor
        https://bugs.webkit.org/show_bug.cgi?id=214439

        Reviewed by Simon Fraser.

        * WebView/WebIndicateLayer.mm:
        Replace remaining makeSimpleColor() uses.

2020-07-17  Truitt Savell  <tsavell@apple.com>

        Unreviewed, reverting r264477.

        Broke the internal build

        Reverted changeset:

        "Use AVRoutePickerView when available for choosing AirPlay
        devices"
        https://bugs.webkit.org/show_bug.cgi?id=213497
        https://trac.webkit.org/changeset/264477

2020-07-16  Eric Carlson  <eric.carlson@apple.com>

        Use AVRoutePickerView when available for choosing AirPlay devices
        https://bugs.webkit.org/show_bug.cgi?id=213497
        <rdar://problem/58610662>

        Reviewed by Jer Noble.

        * WebView/WebMediaPlaybackTargetPicker.h:
        (WebMediaPlaybackTargetPicker::~WebMediaPlaybackTargetPicker): Deleted.
        * WebView/WebMediaPlaybackTargetPicker.mm:
        (WebMediaPlaybackTargetPicker::create):
        (WebMediaPlaybackTargetPicker::WebMediaPlaybackTargetPicker):
        (WebMediaPlaybackTargetPicker::invalidate):
        (WebMediaPlaybackTargetPicker::platformView const): New override.

        * WebView/WebView.mm:
        (-[WebView _devicePicker]): Pass view to WebMediaPlaybackTargetPicker factory.

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

        Remove a few more uses of the terms black/white list
        https://bugs.webkit.org/show_bug.cgi?id=214371

        Reviewed by Alex Christensen.

        * WebView/WebViewPrivate.h: Corrected a mistake in a comment.

2020-07-13  Keith Miller  <keith_miller@apple.com>

        Clean up SourceProvider and add caller relative load script to jsc.cpp
        https://bugs.webkit.org/show_bug.cgi?id=214205

        Reviewed by Yusuke Suzuki.

        Use the source origin's URL for the debugger since it's the true URL for the script.

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

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

        Remove live ranges from Document.h, AlternativeTextController.h, DictionaryLookup.h, and WebPage.h
        https://bugs.webkit.org/show_bug.cgi?id=214109

        Reviewed by Sam Weinig.

        * WebView/WebImmediateActionController.mm:
        (-[WebImmediateActionController _animationControllerForText]): Update since
        DictionaryLookup::rangeAtHitTestResult returns SimpleRange.

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

        REGRESSION(r217248): ASSERT_NOT_REACHED() in toWebFrameLoadType()
        https://bugs.webkit.org/show_bug.cgi?id=214149

        Reviewed by Joseph Pecoraro.

        ASSERT_NOT_REACHED() is hit when the type is FrameLoadType::ReloadExpiredOnly. This happens
        when remote inspection triggers a reload via InspectorPageAgent::reload() and the
        'revalidateAllResources' optional argument is false or not specified.

        * WebView/WebFrame.mm:
        (toWebFrameLoadType):
        Remove the assert and add a note explaining why this load type that does not
        naturally occur in WK1 may nonetheless be triggered while remote inspecting.

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

        BEGIN_BLOCK_OBJC_EXCEPTIONS/END_BLOCK_OBJC_EXCEPTIONS should not have trailing semicolons
        https://bugs.webkit.org/show_bug.cgi?id=214019

        Reviewed by Tim Horton.

        These macros are defined as:
        
        #define BEGIN_BLOCK_OBJC_EXCEPTIONS @try {
        #define END_BLOCK_OBJC_EXCEPTIONS } @catch(NSException *localException) { ReportBlockedObjCException(localException); }
        
        so they should not be used with trailing semicolons.

        * DOM/DOMCustomXPathNSResolver.mm:
        (DOMCustomXPathNSResolver::lookupNamespaceURI):
        * WebCoreSupport/PopupMenuMac.mm:
        (PopupMenuMac::show):
        * WebCoreSupport/WebChromeClient.mm:
        (WebChromeClient::exceededDatabaseQuota):
        (WebChromeClient::reachedApplicationCacheOriginQuota):
        (WebChromeClient::runOpenPanel):
        (WebChromeClient::keyboardUIMode):
        (WebChromeClient::firstResponder):
        (WebChromeClient::makeFirstResponder):
        (WebChromeClient::attachRootGraphicsLayer):
        (WebChromeClient::setNeedsOneShotDrawingSynchronization):
        (WebChromeClient::scheduleRenderingUpdate):
        (WebChromeClient::enterVideoFullscreenForVideoElement):
        (WebChromeClient::exitVideoFullscreenForVideoElement):
        (WebChromeClient::exitVideoFullscreenToModeWithoutAnimation):
        * WebCoreSupport/WebFrameLoaderClient.mm:
        (WebFrameLoaderClient::createFrame):
        (WebFrameLoaderClient::objectContentType):
        (NetscapePluginWidget::notifyWidget):
        (WebFrameLoaderClient::createPlugin):
        (WebFrameLoaderClient::redirectDataToPlugin):
        (WebFrameLoaderClient::createJavaAppletWidget):
        * WebCoreSupport/WebGeolocationClient.mm:
        (WebGeolocationClient::setEnableHighAccuracy):
        (WebGeolocationClient::requestPermission):
        (-[WebGeolocationProviderInitializationListener initializationAllowedWebView:]):
        * WebCoreSupport/WebNotificationClient.mm:
        (WebNotificationClient::requestPermission):
        * WebCoreSupport/WebPluginInfoProvider.mm:
        (WebPluginInfoProvider::pluginInfo):
        * WebCoreSupport/WebVisitedLinkStore.mm:
        (WebVisitedLinkStore::populateVisitedLinksIfNeeded):
        * WebView/WebHTMLView.mm:
        (imageFromRect):

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

        [Catalyst] Remove SPI header from WebDownload.h
        https://bugs.webkit.org/show_bug.cgi?id=214004
        <rdar://problem/65146575>

        Reviewed by Wenson Hsieh.

        * Misc/WebDownload.h: Remove SPI header.

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

        Unreviewed, reverting r263960.
        https://bugs.webkit.org/show_bug.cgi?id=213980

        Re-land, because r263959 somehow fixed the build issue caused
        by r263953

        Reverted changeset:

        "Unreviewed, reverting r263953 and r263959."
        https://bugs.webkit.org/show_bug.cgi?id=213979
        https://trac.webkit.org/changeset/263960

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

        Unreviewed, reverting r263953 and r263959.
        https://bugs.webkit.org/show_bug.cgi?id=213979

        Broke internal build

        Reverted changesets:

        "[Cocoa] Move almost all features from FeatureDefines.xcconfig
        to PlatformEnableCocoa.h"
        https://bugs.webkit.org/show_bug.cgi?id=212542
        https://trac.webkit.org/changeset/263953

        "[Cocoa] Remove FEATURE_DEFINES from the Cocoa/Xcode build
        system"
        https://bugs.webkit.org/show_bug.cgi?id=213976
        https://trac.webkit.org/changeset/263959

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

        [Cocoa] Remove FEATURE_DEFINES from the Cocoa/Xcode build system
        https://bugs.webkit.org/show_bug.cgi?id=213976

        Reviewed by Sam Weinig.

        * Configurations/FeatureDefines.xcconfig: Removed.
        * Configurations/WebKitLegacy.xcconfig: Removed FEATURE_DEFINES and the include of
        FeatureDefines.xcconfig.
        * MigrateHeaders.make: Removed FEATURE_DEFINES, FEATURE_DEFINE_FLAGS, and
        FEATURE_AND_PLATFORM_DEFINE_DEPENDENCIES. FEATURE_AND_PLATFORM_DEFINES is now used
        solely to determine if this is an internal SDK build, which should be cleaned up later.

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

        [iOS] La Banque Postale app does not respect safe area insets on iOS 14
        https://bugs.webkit.org/show_bug.cgi?id=213974
        <rdar://problem/65109197>

        Reviewed by Darin Adler.

        La Banque Postale uses a fixed list of iOS versions that support safe area insets (versions
        11 through 13 at the time of writing). Since iOS 14 is not in this list, the app fails to
        apply top and bottom safe area insets to its web content. Work around this by adding the
        'device-ios12p' class to <body> as if the iOS major version were 13 (the app currently uses
        'device-ios12p' to represent both iOS 12 and iOS 13). This quirk will be disabled on
        versions of La Banque Postale that link against the iOS 14 SDK (or later).

        * Configurations/WebKitLegacy.xcconfig: Excluded LaBanquePostaleQuirks.js on Mac.
        * Resources/LaBanquePostaleQuirks.js: Added.
        * WebView/WebView.mm:
        (needsLaBanquePostaleQuirks): Added. Checks if the quirk is needed.
        (leakLaBanquePostaleQuirksScript): Added. Leaks an NSString containing the quirk script.
        (-[WebView _injectLaBanquePostaleQuirks]): Added. Injects the quirk as a user script.
        (-[WebView _commonInitializationWithFrameName:groupName:]):

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

        [Cocoa] Move almost all features from FeatureDefines.xcconfig to PlatformEnableCocoa.h
        https://bugs.webkit.org/show_bug.cgi?id=212542

        Reviewed by Sam Weinig.

        * Configurations/FeatureDefines.xcconfig: Delete everything except
        ENABLE_EXPERIMENTAL_FEATURES and ENABLE_WEBRTC.

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

        [Cocoa] Remove all features from FeatureDefines.xcconfig that are already mentioned in PlatformEnableCocoa.h
        https://bugs.webkit.org/show_bug.cgi?id=213962

        Reviewed by Sam Weinig.

        * Configurations/FeatureDefines.xcconfig: Removed all features that were mentioned
        in PlatformEnableCocoa.h; the rules in that file now define whether they are enabled.

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

        [Cocoa] Remove unconditional features from FeatureDefines.xcconfig, making sure they are covered in PlatformEnableCocoa.h
        https://bugs.webkit.org/show_bug.cgi?id=212418

        Reviewed by Sam Weinig.

        * Configurations/FeatureDefines.xcconfig: Removed features that are either unconditionally not enabled,
        or unconditionally enabled. Double checked that all the enabled ones are either in PlatformEnable.h or
        PlatformEnableCocoa.h.

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

        Update comment in FeatureDefines.xcconfig since PlatformEnableCocoa.h should be used instead
        https://bugs.webkit.org/show_bug.cgi?id=213952

        Reviewed by Sam Weinig.

        * Configurations/FeatureDefines.xcconfig: Updated comment.

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

        Remove support for ENABLE_INPUT_TYPE_DATETIME_INCOMPLETE
        https://bugs.webkit.org/show_bug.cgi?id=213932

        Reviewed by Darin Adler.

        Removes support for non-standard <input type="datetime">, currently being 
        guarded by the macro ENABLE_INPUT_TYPE_DATETIME_INCOMPLETE. This macro, was
        added back in 2013 as a temporary measure to support some engines who shipped
        support for <input type="datetime">. It is currently not enabled for any
        ports so now seems like as good a time as any to remove it.

        * Configurations/FeatureDefines.xcconfig:

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

        Add "-Wliteral-conversion" warning to Xcode based builds and fix the issues it finds
        https://bugs.webkit.org/show_bug.cgi?id=213931

        Reviewed by Darin Adler.

        * Configurations/Base.xcconfig:
        Add -Wliteral-conversion.

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

        Allow the File object to be created with a replacement file
        https://bugs.webkit.org/show_bug.cgi?id=213825

        Reviewed by Darin Adler.

        * WebCoreSupport/WebPlatformStrategies.mm:

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

        Split Color serialization out of Color classes
        https://bugs.webkit.org/show_bug.cgi?id=213820

        Reviewed by Darin Adler.

        Adopt ColorSerialization.h serialization functions.

        * WebView/WebView.mm:
        (-[WebTextTouchBarItemController _webChangeColor:]):

2020-06-30  Kate Cheney  <katherine_cheney@apple.com>

        Remove NeedsInAppBrowserPrivacyQuirks flag from WebKitLegacy
        https://bugs.webkit.org/show_bug.cgi?id=213802
        <rdar://problem/64945642>

        Reviewed by Darin Adler.

        This feature is for testing only and is not needed in WebKitLegacy.

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

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

        Enable the support of FULLSCREEN_API in WebKitTestRunner
        https://bugs.webkit.org/show_bug.cgi?id=213774

        Reviewed by Youenn Fablet.

        Replace the definition of ENABLE_FULLSCREEN_API in FeatureDefines.xcconfig with
        the one in PlatformEnableCocoa.h. We have to do that because WebKitTestRunner
        does not have a FeatureDefines.xcconfig but it uses "ENABLE(FULLSCREEN_API)"
        to conditionally compile code to test the element fullscreen API.
        WebKitTestRunner can use the macro defined in PlatformEnableCocoa.h.

        * Configurations/FeatureDefines.xcconfig:

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

        [Xcode] Enable the "My Mac (Mac Catalyst)" destination in WebKit Xcode projects
        https://bugs.webkit.org/show_bug.cgi?id=213740

        Reviewed by Darin Adler.

        * Configurations/Base.xcconfig: Set SUPPORTS_MACCATALYST to YES to tell Xcode that this
        project supports building for Mac Catalyst.

2020-06-29  Tetsuharu Ohzeki  <tetsuharu.ohzeki@gmail.com>

        Remove ENABLE_STREAMS_API compilation flag
        https://bugs.webkit.org/show_bug.cgi?id=213728

        Reviewed by Sam Weinig.

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

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 ==
