2022-01-19  Alex Christensen  <achristensen@webkit.org>

        Allow experimental feature names to be hidden in WebKitAdditions
        https://bugs.webkit.org/show_bug.cgi?id=235163

        Reviewed by Chris Dumez.

        * Scripts/PreferencesTemplates/WebPreferencesExperimentalFeatures.mm.erb:

2022-01-18  Alex Christensen  <achristensen@webkit.org>

        Use c++2a instead of gnu++2a for Cocoa builds
        https://bugs.webkit.org/show_bug.cgi?id=234936

        Reviewed by Sam Weinig.

        * Configurations/Base.xcconfig:
        * Configurations/WebKitLegacy.xcconfig:
        * MigrateHeaders.make:

2022-01-15  Chris Dumez  <cdumez@apple.com>

        Introduce dynamicDowncast<>() for convenience
        https://bugs.webkit.org/show_bug.cgi?id=235259

        Reviewed by Darin Adler.

        Start adopting dynamicDowncast<>().

        * DOM/DOMUIKitExtensions.mm:
        (-[DOMHTMLElement structuralComplexityContribution]):
        * WebView/WebHTMLRepresentation.mm:
        (inputElementFromDOMElement):

2022-01-13  Tim Horton  <timothy_horton@apple.com>

        Fix a few Objective-C object leaks due to early returns in `init`
        https://bugs.webkit.org/show_bug.cgi?id=235162
        <rdar://problem/87489048>

        Reviewed by Wenson Hsieh.

        * Storage/WebDatabaseQuotaManager.mm:
        (WebCore::if):

2022-01-12  Matt Woodrow  <mattwoodrow@apple.com>

        _paintBehaviorForDestinationContext should consider kCGContextTypeDisplayList type contexts as potentially being snapshots
        https://bugs.webkit.org/show_bug.cgi?id=234626
        <rdar://83501315>

        Reviewed by Simon Fraser.

        _paintBehaviorForDestinationContext currently always returns `Normal` for contexts that aren't a bitmap context.
        AppKit now provides a context that is of type kCGContextTypeDisplayList, and we want to still potentially consider it a
        snapshot paint (if the other conditions below are met). This ensure images are sync decoded for consumers that just
        want a single paint.

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

2022-01-11  Michael Saboff  <msaboff@apple.com>

        Fixed installhdr build failures in WebCore and WebKitLegacy
        https://bugs.webkit.org/show_bug.cgi?id=235059

        Reviewed by Filip Pizlo.

        Refactored how INSTALL_PATH is calculated to simplify the logic for the macOS / iOS
        location difference for the WebKitLegacy framework.  In WebKitLegacy.xcconfig, that
        required changing NORMAL_PRODUCTION_FRAMEWORKS_DIR.

        Added the configuration values, ALTERNATE_ROOT_PATH and OUTPUT_ALTERNATE_ROOT_PATH, for
        iOS builds to drive the newly added create symlinks script.

        Did the same rework as in WebCore configuration to eliminate using SYSTEM_CONTENT_PATH 
        twice for some paths.

        * Configurations/WebKitLegacy.xcconfig:

2022-01-10  Alex Christensen  <achristensen@webkit.org>

        Start using C++20
        https://bugs.webkit.org/show_bug.cgi?id=233963

        Reviewed by Yusuke Suzuki.

        * Configurations/Base.xcconfig:
        * Configurations/WebKitLegacy.xcconfig:
        * MigrateHeaders.make:

2022-01-10  Elliott Williams  <emw@apple.com>

        postprocess-headers.sh: Avoid redundant processing to speed up incremental Xcode builds
        https://bugs.webkit.org/show_bug.cgi?id=234941

        Reviewed by Jonathan Bedard.

        * postprocess-headers.sh:

2022-01-07  Alex Christensen  <achristensen@webkit.org>

        Unreviewed, reverting r287698.

        Broke an internal build

        Reverted changeset:

        "Start using C++20"
        https://bugs.webkit.org/show_bug.cgi?id=233963
        https://commits.webkit.org/r287698

2022-01-06  Tim Horton  <timothy_horton@apple.com>

        Move linkedOnOrAfter() to WTF
        https://bugs.webkit.org/show_bug.cgi?id=234942

        Reviewed by Darin Adler.

        * DefaultDelegates/WebDefaultUIDelegate.mm:
        (-[WebDefaultUIDelegate webView:dragDestinationActionMaskForDraggingInfo:]):
        * Misc/WebDownload.mm:
        (shouldCallOnNetworkThread):
        * Misc/WebIconDatabase.mm:
        (+[WebIconDatabase sharedIconDatabase]):
        * WebView/WebPreferencesDefaultValues.mm:
        (WebKit::defaultAllowsPictureInPictureMediaPlayback):
        (WebKit::defaultJavaScriptCanOpenWindowsAutomatically):
        (WebKit::defaultPassiveTouchListenersAsDefaultOnDocument):
        (WebKit::defaultRequiresUserGestureToLoadVideo):
        (WebKit::defaultWebSQLEnabled):
        (WebKit::defaultShouldRestrictBaseURLSchemes):
        (WebKit::defaultShouldConvertInvalidURLsToBlank):
        (WebKit::defaultPassiveWheelListenersAsDefaultOnDocument):
        (WebKit::defaultWheelEventGesturesBecomeNonBlocking):
        * WebView/WebView.mm:
        (needsLaBanquePostaleQuirks):

2022-01-06  Alex Christensen  <achristensen@webkit.org>

        Start using C++20
        https://bugs.webkit.org/show_bug.cgi?id=233963

        Reviewed by Yusuke Suzuki.

        * Configurations/Base.xcconfig:
        * Configurations/WebKitLegacy.xcconfig:
        * MigrateHeaders.make:

2022-01-06  Jean-Yves Avenard  <jya@apple.com>

        Have CachedRawResourceClient and related networking actors use SharedBuffer.
        https://bugs.webkit.org/show_bug.cgi?id=232424
        rdar://84744687

        Reviewed by Youenn Fablet.

        * WebCoreSupport/WebFrameLoaderClient.h:
        * WebCoreSupport/WebFrameLoaderClient.mm:
        (WebFrameLoaderClient::committedLoad):
        (WebFrameLoaderClient::createPreviewLoaderClient):
        * WebView/WebFrame.mm:
        (-[WebFrame _commitData:]):

2022-01-05  Tim Horton  <timothy_horton@apple.com>

        Move more SDK checks to linkedOnOrAfter()
        https://bugs.webkit.org/show_bug.cgi?id=234875

        Reviewed by Sam Weinig.

        * WebView/WebPreferencesDefaultValues.mm:
        (WebKit::defaultJavaScriptCanOpenWindowsAutomatically):
        * WebView/WebView.mm:
        (needsLaBanquePostaleQuirks):

2022-01-02  Wenson Hsieh  <wenson_hsieh@apple.com>

        [WebKit2] Camera continuity is disabled in richly editable content
        https://bugs.webkit.org/show_bug.cgi?id=234773
        rdar://46323417

        Reviewed by Darin Adler.

        Drive-by fix: add a missing `ALLOW_DEPRECATED_DECLARATIONS_END` for the unbalanced BEGIN declaration.

        * WebView/WebHTMLView.mm:
        (+[WebHTMLView _insertablePasteboardTypes]):

2022-01-01  Jeff Miller  <jeffm@apple.com>

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

        Reviewed by Anders Carlsson.

        * Info.plist:

2021-12-22  Michael Saboff  <msaboff@apple.com>

        Fix WebKit Build issues when using system content path
        https://bugs.webkit.org/show_bug.cgi?id=234624

        Reviewed by Filip Pizlo.

        Added SYSTEM_CONTENT_PATH processing to NORMAL_PRODUCTION_FRAMEWORKS_DIR.

        * Configurations/WebKitLegacy.xcconfig:

2021-12-21  Brady Eidson  <beidson@apple.com>

        Make Notification identifiers be a UUID string instead of a uint64_t
        https://bugs.webkit.org/show_bug.cgi?id=234534

        Reviewed by Alex Christensen.

        * WebCoreSupport/WebNotificationClient.h:
        * WebCoreSupport/WebNotificationClient.mm:
        (WebNotificationClient::show):
        (WebNotificationClient::cancel):
        (WebNotificationClient::notificationObjectDestroyed):
        (WebNotificationClient::clearNotifications): Deleted.

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

        Add support for a UI delegate method to decide how to handle detected modal containers
        https://bugs.webkit.org/show_bug.cgi?id=234440
        rdar://77073735

        Reviewed by Darin Adler.

        See WebKit ChangeLog for more details.

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

2021-12-19  Wenson Hsieh  <wenson_hsieh@apple.com>

        Add client layer plumbing for classifying modal container controls
        https://bugs.webkit.org/show_bug.cgi?id=234320

        Reviewed by Dean Jackson.

        See WebCore/ChangeLog for more details.

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

2021-12-17  Simon Fraser  <simon.fraser@apple.com>

        Read the default value of the ScrollAnimatorEnabled setting from NSUserDefaults
        https://bugs.webkit.org/show_bug.cgi?id=234456

        Reviewed by Tim Horton.

        It's impossible for a test to run with an animated keyboard scroll because platformAllowsScrollAnimation(),
        which reads from NSUserDefaults, always trumps the Setting.

        Fix by initializing the setting from NSUserDefaults and removing the platformAllowsScrollAnimation()
        check. This allows for a WebKitTestRunner test override the setting.

        Unfortunately in WebKitLegacy AppKit code consults the @"NSScrollAnimationEnabled" key, so
        DumpRenderTree has to continue to initialize this NSUserDefault to @NO and tests that
        try to change the Setting will fail.

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

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

        Convert ProtectionSpace enums into enum classes
        https://bugs.webkit.org/show_bug.cgi?id=234455

        Reviewed by Alex Christensen.

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

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

        Fix iOS debug build
        https://bugs.webkit.org/show_bug.cgi?id=234365

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

2021-12-15  Darin Adler  <darin@apple.com>

        Many call sites use makeNeverDestroyed, but could instead take advantage of the NeverDestroyed deduction guide
        https://bugs.webkit.org/show_bug.cgi?id=234350

        Reviewed by Sam Weinig.

        * Misc/WebNSPasteboardExtras.mm:
        (writableTypesForImageWithoutArchive): Use deduction.
        (writableTypesForImageWithArchive):
        * Misc/WebNSURLExtras.mm:
        (-[NSString _webkit_rangeOfURLScheme]): Ditto.
        * WebView/WebDataSource.mm:
        (+[WebDataSource _repTypesAllowImageTypeOmission:]): Ditto.
        * WebView/WebFrameView.mm:
        (+[WebFrameView _viewTypesAllowImageTypeOmission:]): Ditto.

2021-12-14  Jean-Yves Avenard  <jya@apple.com>

        Rename SharedBuffer classes.
        https://bugs.webkit.org/show_bug.cgi?id=233677
        rdar://problem/85963900

        Reviewed by Youenn Fablet.

        SharedBuffer are renamed FragmentedSharedBuffer and
        ContiguousSharedBuffer to SharedBuffer to better reflect their actual
        types.

        * WebCoreSupport/WebEditorClient.h:
        * WebCoreSupport/WebEditorClient.mm:
        * WebCoreSupport/WebFrameLoaderClient.h:
        * WebCoreSupport/WebFrameLoaderClient.mm:
        * WebCoreSupport/WebPlatformStrategies.h:
        * WebCoreSupport/WebPlatformStrategies.mm:
        * WebView/WebDataSource.mm:
        * WebView/WebHTMLView.mm:
        * WebView/WebResource.mm:

2021-12-13  Jean-Yves Avenard  <jya@apple.com>

        Distinguish contiguous SharedBuffer from non-contiguous one and guarantee immutability
        https://bugs.webkit.org/show_bug.cgi?id=233030
        rdar://85333814

        Reviewed by Darin Adler.

        * DOM/DOMUIKitExtensions.mm:
        (-[DOMHTMLImageElement dataRepresentation:]):
        * WebCoreSupport/WebEditorClient.h:
        * WebCoreSupport/WebEditorClient.mm:
        (WebEditorClient::getClientPasteboardData):
        * WebCoreSupport/WebPlatformStrategies.h:
        * WebCoreSupport/WebPlatformStrategies.mm:
        (WebPlatformStrategies::bufferForType):
        (WebPlatformStrategies::readBufferFromPasteboard):
        * WebView/WebDataSource.mm:
        (-[WebDataSource data]):
        * WebView/WebHTMLRepresentation.mm:
        (-[WebHTMLRepresentation documentSource]):
        * WebView/WebHTMLView.mm:
        (createShareMenuItem):
        * WebView/WebResource.mm:
        (-[WebResource encodeWithCoder:]):
        (-[WebResource data]):
        (-[WebResource _stringValue]):

2021-12-11  Antti Koivisto  <antti@apple.com>

        Remove redundant StyleRule::Type enum
        https://bugs.webkit.org/show_bug.cgi?id=234156

        Reviewed by Alan Bujtas.

        * DOM/DOMCSS.mm:
        (kitClass):
        * DOM/DOMCSSRule.mm:
        (-[DOMCSSRule type]):

2021-12-10  Michael Saboff  <msaboff@apple.com>

        https://bugs.webkit.org/show_bug.cgi?id=234173
        Update Install Paths for build system changes

        Reviewed by Yusuke Suzuki.

        Updated install paths for changes in the build system that use a system path prefix.

        * Configurations/WebKitLegacy.xcconfig:

2021-12-10  Devin Rousso  <drousso@apple.com>

        Allow `Pasteboard::readBuffer` to read from the pasteboard as a whole instead of a specific item
        https://bugs.webkit.org/show_bug.cgi?id=233940

        Reviewed by Wenson Hsieh.

        In order to match the WK1 implementation of `-pasteFont:` <https://webkit.org/b/191379>, we
        need to read from the font pasteboard as a whole, not a specific item. Make the `index` into
        an `std::optional` so that we can have this behavior without needing to have a new method.

        No change in behavior.

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

2021-12-09  Devin Rousso  <drousso@apple.com>

        Add a `DOMPasteAccessCategory` to control which pasteboard the WebProcess is granted access to when pasting
        https://bugs.webkit.org/show_bug.cgi?id=233939

        Reviewed by Wenson Hsieh.

        Implementing `-pasteFont:` <https://webkit.org/b/191379> requires that we read from the font
        pasteboard instead of the general pasteboard. In order to allow web content to trigger this
        (e.g. `document.execCommand("PasteFont"))`) we must have a way for the WebProcess to signal
        that it wishes to read from the font pasteboard instead of the general pasteboard. As such,
        create and pass along a `DOMPasteAccessCategory` to `requestDOMPasteAccess`.

        No change in behavior.

        * WebCoreSupport/WebEditorClient.h:
        (WebEditorClient::requestDOMPasteAccess):

2021-12-09  Myles C. Maxfield  <mmaxfield@apple.com> and Don Olmstead  <don.olmstead@sony.com>

        Move TextCodec files from WebCore/platform/text to WebCore/PAL/text
        https://bugs.webkit.org/show_bug.cgi?id=233683

        Reviewed by Yusuke Suzuki.

        Update to use the new PAL files.

        * Misc/WebNSURLExtras.mm:
        (-[NSString _webkit_stringByReplacingValidPercentEscapes]):
        * WebView/WebFrame.mm:
        (+[WebFrame stringWithData:textEncodingName:]):
        * WebView/WebPreferences.mm:
        (+[WebPreferences _systemCFStringEncoding]):
        (+[WebPreferences _setInitialDefaultTextEncodingToSystemEncoding]):
        * WebView/WebResource.mm:
        (-[WebResource _stringValue]):

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

        [WebGPU] [MacCatalyst] Fix WebGPU Mac Catalyst build in Apple's internal build system
        https://bugs.webkit.org/show_bug.cgi?id=234072

        Unreviewed.

        * Configurations/WebKitLegacy.xcconfig:

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

        [WebGPU] Fix WebGPU build in Apple's internal build system
        https://bugs.webkit.org/show_bug.cgi?id=234070

        Unreviewed.

        The PAL headers get put in a different place.

        * Configurations/WebKitLegacy.xcconfig:

2021-12-08  Truitt Savell  <tsavell@apple.com>

        Unreviewed, reverting r286632.

        Broke 3 tests on iOS

        Reverted changeset:

        "Add a `DOMPasteAccessCategory` to control which pasteboard
        the WebProcess is granted access to when pasting"
        https://bugs.webkit.org/show_bug.cgi?id=233939
        https://commits.webkit.org/r286632

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

        Add support for `navigator.requestCookieConsent()` behind a disabled feature flag
        https://bugs.webkit.org/show_bug.cgi?id=233890
        rdar://86117718

        Reviewed by Darin Adler.

        Add an implementation stub for the new chrome client hook, `requestCookieConsent()`.

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

2021-12-07  Devin Rousso  <drousso@apple.com>

        Add a `DOMPasteAccessCategory` to control which pasteboard the WebProcess is granted access to when pasting
        https://bugs.webkit.org/show_bug.cgi?id=233939

        Reviewed by Wenson Hsieh.

        Implementing `-pasteFont:` <https://webkit.org/b/191379> requires that we read from the font
        pasteboard instead of the general pasteboard. In order to allow web content to trigger this
        (e.g. `document.execCommand("PasteFont"))`) we must have a way for the WebProcess to signal
        that it wishes to read from the font pasteboard instead of the general pasteboard. As such,
        create and pass along a `DOMPasteAccessCategory` to `requestDOMPasteAccess`.

        No change in behavior.

        * WebCoreSupport/WebEditorClient.h:
        (WebEditorClient::requestDOMPasteAccess):

2021-12-07  Cameron McCormack  <heycam@apple.com>

        Move FontCache singleton and instance on WorkerGlobalScope to ThreadGlobalData
        https://bugs.webkit.org/show_bug.cgi?id=233747

        Reviewed by Darin Adler.

        * Misc/WebCoreStatistics.mm:
        (+[WebCoreStatistics cachedFontDataCount]):
        (+[WebCoreStatistics cachedFontDataInactiveCount]):
        (+[WebCoreStatistics purgeInactiveFontData]):
        Update existing main thread callers of FontCache::singleton() to use
        FontCache::forCurrentThread().

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

        Change IDL `Date` to be backed by `WallTime` to avoid confusion when converting to native dates
        https://bugs.webkit.org/show_bug.cgi?id=233781

        Reviewed by Darin Adler.

        JS `Date` is milliseconds-based, but some native dates (e.g. `NSDate`) are seconds-based.
        `WallTime` will help avoid confusion since not a generic type (e.g. `double`) and instead
        has explicitly defined conversion methods to seconds, milliseconds, etc..

        * DOM/DOMInternal.h:
        (kit):
        (core):

        * DOM/DOMHTMLMediaElement.mm:
        (-[DOMHTMLMediaElement getStartDate]):

2021-12-02  Myles C. Maxfield  <mmaxfield@apple.com>

        [WebGPU] Hook up navigator.gpu.requestAdapter()
        https://bugs.webkit.org/show_bug.cgi?id=233619

        Reviewed by Dean Jackson.

        * Configurations/WebKitLegacy.xcconfig: We have to be able to #include files from WebGPU.
        * WebCoreSupport/WebChromeClient.h:
        * WebCoreSupport/WebChromeClient.mm:
        (WebChromeClient::createGPUForWebGPU const): Hook up GPUImpl to WebCore.

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

        [WK2] Make Web Lock API work across multiple WebProcesses
        https://bugs.webkit.org/show_bug.cgi?id=233719

        Reviewed by Alex Christensen.

        See WebCore changelog.

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

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

        Regression(r283912) Broke backward compatibility for Swift bindings
        https://bugs.webkit.org/show_bug.cgi?id=233701
        <rdar://85627701>

        Reviewed by Darin Adler.

        Rename EpochTimeStamp back to DOMTimeStamp in DOMObject.h & DOMEvent.h
        since those are API headers and we need to maintain backward compatibility.

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

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

        Compiler should be able to check localized format strings for consistency
        <https://webkit.org/b/232686>
        <rdar://problem/84994345>

        Reviewed by Darin Adler.

        * Misc/WebLocalizableStringsInternal.mm:
        (WebLocalizedStringInternal):
        - Use localizedNSString() instead of localizedString() to
          eliminate the need to convert from
          CFString -> String -> NSString.

2021-11-16  Nikolaos Mouchtaris  <nmouchtaris@apple.com>

        Rename TextDecoration to TextDecorationLine
        https://bugs.webkit.org/show_bug.cgi?id=232729

        Reviewed by Myles C. Maxfield.

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

2021-11-11  Nikolaos Mouchtaris  <nmouchtaris@apple.com>

        Make scroll granularity an enum class
        https://bugs.webkit.org/show_bug.cgi?id=232641

        Reviewed by Cameron McCormack.

        * WebView/WebFrameView.mm:
        (-[WebFrameView _scrollToBeginningOfDocument]):
        (-[WebFrameView _scrollToEndOfDocument]):
        (-[WebFrameView _pageVertically:]):
        (-[WebFrameView _pageHorizontally:]):
        (-[WebFrameView _scrollLineVertically:]):
        (-[WebFrameView _scrollLineHorizontally:]):

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

        Factor platform specific code out of HTMLModelElement
        https://bugs.webkit.org/show_bug.cgi?id=232848

        Reviewed by Dean Jackson.

        * WebView/WebView.mm:
        (-[WebView _commonInitializationWithFrameName:groupName:]):
        (-[WebView initSimpleHTMLDocumentWithStyle:frame:preferences:groupName:]):
        Use DummyModelPlayerProvider for the DummyModelPlayerProvider since the feature
        is not supported for WebKitLegacy at the moment.

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

        [CF] Reduce duplication and unneeded buffer allocations and copying in URL code, also remove unused methods and functions
        https://bugs.webkit.org/show_bug.cgi?id=232220

        Reviewed by Alex Christensen.

        * Misc/WebNSURLExtras.h: Tweaked comments a bit. No need to say methods are "new", since
        that won't be true in the future. Removed unused methods
        +[NSURL _web_URLWithUserTypedString:relativeToURL:],
        +[NSURL _webkit_URLWithUserTypedString:relativeToURL:],
        +[NSURL _web_URLWithData:], +[NSURL _web_URLWithData:relatveToURL:].
        Wanted to remove even more nearly unused methods: many were used only
        inside the WebKit project, in legacy plug-in code, and some seemed unused,
        but it wasn't easy for me to quickly verify that.

        * Misc/WebNSURLExtras.mm: Removed "using namespace WebCore" and
        "using namespace WTF".
        (+[NSURL _web_URLWithUserTypedString:relativeToURL:]): Deleted.
        (+[NSURL _web_URLWithUserTypedString:]): Use WTF prefix explicitly.
        (+[NSURL _webkit_URLWithUserTypedString:relativeToURL:]): Deleted.
        (+[NSURL _webkit_URLWithUserTypedString:]): Use WTF prefix explicitly.
        (+[NSURL _web_URLWithDataAsString:]): Removed special case for nil since the code
        will do the right thing with nil without an explicit check.
        (+[NSURL _web_URLWithDataAsString:relativeToURL]): Ditto. Also formatted the code
        as a one-liner.
        (+[NSURL _web_URLWithData:]): Deleted.
        (+[NSURL _web_URLWithData:relativeToURL:]): Deleted.
        (-[NSURL _web_originalData]): Use WTF prefix explicitly.
        (-[NSURL _web_originalDataAsString]): Ditto.
        (-[NSURL _web_isEmpty]): Use bridge_cast and make code style checker happy by using
        "!" instead of "== 0".
        (-[NSURL _web_URLCString]): Use WTF prefix explicitly.
        (-[NSURL _webkit_canonicalize]): Use WebCore prefix explicitly.
        (-[NSURL _webkit_URLByRemovingFragment]): Use WTF prefix explicitly.
        (-[NSURL _web_schemeSeparatorWithoutColon]): Deleted.
        (-[NSURL _web_dataForURLComponentType:]): Deleted.
        (-[NSURL _web_hostData]): Use WTF prefix explicitly. Rearranged for clarity and
        slightly improved efficiency as well.
        (-[NSString _web_isUserVisibleURL]): Use WTF prefix explicitly.
        (-[NSString _webkit_stringByReplacingValidPercentEscapes]): Use WebCore prefix
        explicitly.
        (-[NSString _web_decodeHostName]): Use WTF prefix explicitly.
        (-[NSString _web_encodeHostName]): Ditto.
        (-[NSString _webkit_decodeHostName]): Ditto.
        (-[NSString _webkit_encodeHostName]): Ditto.

2021-11-10  Tim Nguyen  <ntim@apple.com>

        Migrate DialogElementEnabled from RuntimeFlags to Settings
        https://bugs.webkit.org/show_bug.cgi?id=232926

        Reviewed by Youenn Fablet.

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

2021-11-09  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, reverting r285536.
        https://bugs.webkit.org/show_bug.cgi?id=232915

        causes API test crashes

        Reverted changeset:

        "[CF] Reduce duplication and unneeded buffer allocations and
        copying in URL code, also remove unused methods and functions"
        https://bugs.webkit.org/show_bug.cgi?id=232220
        https://commits.webkit.org/r285536

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

        [CF] Reduce duplication and unneeded buffer allocations and copying in URL code, also remove unused methods and functions
        https://bugs.webkit.org/show_bug.cgi?id=232220

        Reviewed by Alex Christensen.

        * Misc/WebNSURLExtras.h: Tweaked comments a bit. No need to say methods are "new", since
        that won't be true in the future. Removed unused methods
        +[NSURL _web_URLWithUserTypedString:relativeToURL:],
        +[NSURL _webkit_URLWithUserTypedString:relativeToURL:],
        +[NSURL _web_URLWithData:], +[NSURL _web_URLWithData:relatveToURL:].
        Wanted to remove even more nearly unused methods: many were used only
        inside the WebKit project, in legacy plug-in code, and some seemed unused,
        but it wasn't easy for me to quickly verify that.

        * Misc/WebNSURLExtras.mm: Removed "using namespace WebCore" and
        "using namespace WTF".
        (+[NSURL _web_URLWithUserTypedString:relativeToURL:]): Deleted.
        (+[NSURL _web_URLWithUserTypedString:]): Use WTF prefix explicitly.
        (+[NSURL _webkit_URLWithUserTypedString:relativeToURL:]): Deleted.
        (+[NSURL _webkit_URLWithUserTypedString:]): Use WTF prefix explicitly.
        (+[NSURL _web_URLWithDataAsString:]): Removed special case for nil since the code
        will do the right thing with nil without an explicit check.
        (+[NSURL _web_URLWithDataAsString:relativeToURL]): Ditto. Also formatted the code
        as a one-liner.
        (+[NSURL _web_URLWithData:]): Deleted.
        (+[NSURL _web_URLWithData:relativeToURL:]): Deleted.
        (-[NSURL _web_originalData]): Use WTF prefix explicitly.
        (-[NSURL _web_originalDataAsString]): Ditto.
        (-[NSURL _web_isEmpty]): Use bridge_cast and make code style checker happy by using
        "!" instead of "== 0".
        (-[NSURL _web_URLCString]): Use WTF prefix explicitly.
        (-[NSURL _webkit_canonicalize]): Use WebCore prefix explicitly.
        (-[NSURL _webkit_URLByRemovingFragment]): Use WTF prefix explicitly.
        (-[NSURL _web_schemeSeparatorWithoutColon]): Deleted.
        (-[NSURL _web_dataForURLComponentType:]): Deleted.
        (-[NSURL _web_hostData]): Use WTF prefix explicitly. Rearranged for clarity and
        slightly improved efficiency as well.
        (-[NSString _web_isUserVisibleURL]): Use WTF prefix explicitly.
        (-[NSString _webkit_stringByReplacingValidPercentEscapes]): Use WebCore prefix
        explicitly.
        (-[NSString _web_decodeHostName]): Use WTF prefix explicitly.
        (-[NSString _web_encodeHostName]): Ditto.
        (-[NSString _webkit_decodeHostName]): Ditto.
        (-[NSString _webkit_encodeHostName]): Ditto.

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

        Remove empty directories from from svn.webkit.org repository as of r285357
        <https://webkit.org/b/232773>

        Unreviewed clean up.

        * Plugins/Hosted: Removed.

2021-11-05  Nikolaos Mouchtaris  <nmouchtaris@apple.com>

        Make scroll bar mode an enum class
        https://bugs.webkit.org/show_bug.cgi?id=232651

        Reviewed by Simon Fraser.

        * WebCoreSupport/WebFrameLoaderClient.mm:
        (WebFrameLoaderClient::transitionToCommittedForNewPage):
        * WebView/WebDynamicScrollBarsView.mm:
        (-[WebDynamicScrollBarsView setAllowsHorizontalScrolling:]):
        (-[WebDynamicScrollBarsView updateScrollers]):
        (-[WebDynamicScrollBarsView allowsHorizontalScrolling]):
        (-[WebDynamicScrollBarsView allowsVerticalScrolling]):
        * WebView/WebView.mm:
        (-[WebView setAlwaysShowVerticalScroller:]):
        (-[WebView alwaysShowVerticalScroller]):
        (-[WebView setAlwaysShowHorizontalScroller:]):
        (-[WebView alwaysShowHorizontalScroller]):

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

        Unreviewed iOS build fix.

        * WebCoreSupport/WebNotificationClient.mm:
        (-[WebNotificationPolicyListener NO_RETURN_DUE_TO_ASSERT]):
        (-[WebNotificationPolicyListener denyOnlyThisRequest]): Deleted.
        (-[WebNotificationPolicyListener shouldClearCache]): Deleted.

2021-11-01  Brady Eidson  <beidson@apple.com>

        Make WebChromeClient's m_webView pointer weak.
        https://bugs.webkit.org/show_bug.cgi?id=232588

        Reviewed by David Kilzer.

        * WebCoreSupport/WebChromeClient.h:

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

        Fix internal macOS build after r285047
        https://bugs.webkit.org/show_bug.cgi?id=232462

        * MigrateHeaders.make:

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

        [WebKitLegacy] Enable -Wformat=2 warnings
        <https://webkit.org/b/232333>
        <rdar://problem/84681560>

        Reviewed by Darin Adler.

        * Configurations/Base.xcconfig:
        (WARNING_CFLAGS):
        - Replace -Wformat-security with -Wformat=2, which enables more
          warnings like -Wformat-nonliteral.
        * Misc/WebLocalizableStringsInternal.h:
        (WebLocalizedStringInternal):
        - Add NS_FORMAT_ARGUMENT() macro to fix -Wformat-nonliteral
          warnings.

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

        Remove code inside ENABLE(NETSCAPE_PLUGIN_API)
        https://bugs.webkit.org/show_bug.cgi?id=232462

        Reviewed by Anders Carlsson.

        * Plugins/Hosted/HostedNetscapePluginStream.h: Removed.
        * Plugins/Hosted/HostedNetscapePluginStream.mm: Removed.
        * Plugins/Hosted/NetscapePluginHostManager.h: Removed.
        * Plugins/Hosted/NetscapePluginHostManager.mm: Removed.
        * Plugins/Hosted/NetscapePluginHostProxy.h: Removed.
        * Plugins/Hosted/NetscapePluginHostProxy.mm: Removed.
        * Plugins/Hosted/NetscapePluginInstanceProxy.h: Removed.
        * Plugins/Hosted/NetscapePluginInstanceProxy.mm: Removed.
        * Plugins/Hosted/ProxyInstance.h: Removed.
        * Plugins/Hosted/ProxyInstance.mm: Removed.
        * Plugins/Hosted/ProxyRuntimeObject.h: Removed.
        * Plugins/Hosted/ProxyRuntimeObject.mm: Removed.
        * Plugins/Hosted/WebHostedNetscapePluginView.h: Removed.
        * Plugins/Hosted/WebHostedNetscapePluginView.mm: Removed.
        * Plugins/Hosted/WebKitPluginAgent.defs: Removed.
        * Plugins/Hosted/WebKitPluginAgentReply.defs: Removed.
        * Plugins/Hosted/WebKitPluginClient.defs: Removed.
        * Plugins/Hosted/WebKitPluginHost.defs: Removed.
        * Plugins/Hosted/WebKitPluginHostTypes.defs: Removed.
        * Plugins/Hosted/WebKitPluginHostTypes.h: Removed.
        * Plugins/Hosted/WebTextInputWindowController.h: Removed.
        * Plugins/Hosted/WebTextInputWindowController.m: Removed.
        * Plugins/WebBaseNetscapePluginView.h: Removed.
        * Plugins/WebBaseNetscapePluginView.mm: Removed.
        * Plugins/WebBasePluginPackage.h:
        * Plugins/WebBasePluginPackage.mm:
        (+[WebBasePluginPackage pluginWithPath:]):
        * Plugins/WebNetscapePluginEventHandler.h: Removed.
        * Plugins/WebNetscapePluginEventHandler.mm: Removed.
        * Plugins/WebNetscapePluginEventHandlerCocoa.h: Removed.
        * Plugins/WebNetscapePluginEventHandlerCocoa.mm: Removed.
        * Plugins/WebNetscapePluginPackage.h: Removed.
        * Plugins/WebNetscapePluginPackage.mm: Removed.
        * Plugins/WebNetscapePluginStream.h: Removed.
        * Plugins/WebNetscapePluginStream.mm: Removed.
        * Plugins/WebNetscapePluginView.h: Removed.
        * Plugins/WebNetscapePluginView.mm: Removed.
        * Plugins/WebPluginController.mm:
        (-[WebPluginController destroyPlugin:]):
        (-[WebPluginController destroyAllPlugins]):
        * Plugins/WebPluginDatabase.mm:
        (PluginPackageCandidates::update):
        (-[WebPluginDatabase removePluginInstanceViewsFor:]):
        (-[WebPluginDatabase destroyAllPluginInstanceViews]):
        * Plugins/WebPluginRequest.h: Removed.
        * Plugins/WebPluginRequest.m: Removed.
        * Plugins/npapi.mm: Removed.
        * WebCoreSupport/WebChromeClient.mm:
        (WebChromeClient::createWindow):
        * WebCoreSupport/WebFrameLoaderClient.mm:
        (WebFrameLoaderClient::dispatchCreatePage):
        (WebFrameLoaderClient::createPlugin):
        (WebFrameLoaderClient::redirectDataToPlugin):
        (NetscapePluginWidget::NetscapePluginWidget): Deleted.
        (NetscapePluginWidget::platformLayer const): Deleted.
        (NetscapePluginWidget::getFormValue): Deleted.
        (NetscapePluginWidget::handleEvent): Deleted.
        (NetscapePluginWidget::clipRectChanged): Deleted.
        (NetscapePluginWidget::notifyWidget): Deleted.
        * WebView/WebFrame.mm:
        (-[WebFrame _recursive_resumeNullEventsForAllNetscapePlugins]): Deleted.
        (-[WebFrame _recursive_pauseNullEventsForAllNetscapePlugins]): Deleted.
        * WebView/WebFramePrivate.h:
        * WebView/WebHTMLView.mm:
        (needsCursorRectsSupportAtPoint):
        (-[WebHTMLView viewWillMoveToHostWindow:]):
        (-[WebHTMLView viewDidMoveToHostWindow]):
        (-[WebHTMLView _web_makePluginSubviewsPerformSelector:withObject:]): Deleted.
        (-[WebHTMLView _pauseNullEventsForAllNetscapePlugins]): Deleted.
        (-[WebHTMLView _resumeNullEventsForAllNetscapePlugins]): Deleted.
        * WebView/WebHTMLViewPrivate.h:
        * WebView/WebView.mm:

2021-10-28  Per Arne Vollan <pvollan@apple.com>

        Layout test is crashing inside WebChromeClient::createWindow
        https://bugs.webkit.org/show_bug.cgi?id=232460
        <rdar://81344393>

        Reviewed by Brent Fulgham.

        Add null check for local NetscapePluginHostProxy pointer variable.

        * Plugins/Hosted/NetscapePluginHostManager.mm:
        (WebKit::NetscapePluginHostManager::didCreateWindow):

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

        Disable NETSCAPE_PLUGIN_API at build time on macOS and Windows
        https://bugs.webkit.org/show_bug.cgi?id=232396

        Reviewed by Geoff Garen.

        * WebView/WebFramePrivate.h:
        * WebView/WebHTMLViewPrivate.h:

2021-10-28  Youenn Fablet  <youenn@apple.com>

        [ Mac wk1 ] 2 media-capabilities/webrtc tests are flaky failures
        https://bugs.webkit.org/show_bug.cgi?id=232283
        <rdar://problem/84637007>

        Reviewed by Eric Carlson.

        * WebView/WebView.mm:

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

        Enable the modules verifier for WebKitLegacy in Apple internal when using a new enough Xcode
        https://bugs.webkit.org/show_bug.cgi?id=232190

        Reviewed by David Kilzer.

        Add WK_XCODE_VERSION_BEFORE_13_1 build settings to WebKitLegacy and then
        use them to enable the modules verifier in Xcode 13.1 and later.

        * Configurations/Base.xcconfig:
        * Configurations/WebKitLegacy.xcconfig:

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

        Add a module map file for PrivateFrameworks/WebKitLegacy
        https://bugs.webkit.org/show_bug.cgi?id=230735

        Reviewed by David Kilzer.

        Define modules for the Cocoa Touch environment. macOS can't define
        modules in WebKitLegacy because it's a nested framework on that
        platform.
        Set up the modules verifier tool for Apple Internal (it's not supported
        in the public Xcode). Don't enable it yet because some of the Safari
        builders use too old of an Xcode.
        Add the Apple Internal guards for NSURLDownload from WebDownload.h
        NSURLDownloadSPI.h so it can be included in the module.
        WebCreateFragmentInternal.h is an Objective-C++ header, but the
        WebKitLegacy module should be usable by plain Objective-C clients.
        C++ guards so that it can be included in the module.
        Switch a few quoted includes to framework style angle includes, which
        are required for modules.
        Add some missing includes.

        * Configurations/WebKitLegacy.xcconfig:
        * DOM/DOMEventListener.h:
        * DOM/DOMEventTarget.h:
        * DOM/DOMNodeFilter.h:
        * DOM/DOMXPathNSResolver.h:
        * DOM/WebDOMOperationsPrivate.h:
        * History/WebHistoryItemPrivate.h:
        * Misc/NSURLDownloadSPI.h:
        * Misc/WebCache.h:
        * Misc/WebDownload.h:
        * Misc/WebKitErrorsPrivate.h:
        * Misc/WebLocalizableStrings.h:
        * Misc/WebUserContentURLPattern.h:
        * Plugins/Hosted/WebKitPluginHostTypes.h:
        * Plugins/WebPlugin.h:
        * Plugins/WebPluginContainer.h:
        * Storage/WebDatabaseManagerPrivate.h:
        * Storage/WebDatabaseQuotaManager.h:
        * Storage/WebStorageManagerPrivate.h:
        * WebCoreSupport/WebCreateFragmentInternal.h:
        * WebCoreSupport/WebSecurityOriginPrivate.h:
        * WebView/WebDeviceOrientation.h:
        * WebView/WebDeviceOrientationProvider.h:
        * WebView/WebDeviceOrientationProviderMock.h:
        * WebView/WebEditingDelegatePrivate.h:
        * WebView/WebFormDelegatePrivate.h:
        * WebView/WebGeolocationPosition.h:
        * WebView/WebResourceLoadDelegatePrivate.h:

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

        Unreviewed, reverting r284713.
        https://bugs.webkit.org/show_bug.cgi?id=232187

        Broke some Apple internal builds

        Reverted changeset:

        "Add a module map file for PrivateFrameworks/WebKitLegacy"
        https://bugs.webkit.org/show_bug.cgi?id=230735
        https://commits.webkit.org/r284713

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

        Add a module map file for PrivateFrameworks/WebKitLegacy
        https://bugs.webkit.org/show_bug.cgi?id=230735

        Reviewed by David Kilzer.

        Define modules for the Cocoa Touch environment. macOS can't define
        modules in WebKitLegacy because it's a nested framework on that
        platform.
        Enable the modules verifier tool for Apple Internal (it's not supported
        in the public Xcode).
        Add the Apple Internal guards for NSURLDownload from WebDownload.h to
        NSURLDownloadSPI.h so it can be included in the module.
        WebCreateFragmentInternal.h is an Objective-C++ header, but the
        WebKitLegacy module should be usable by plain Objective-C clients. Add
        C++ guards so that it can be included in the module.
        Switch a few quoted includes to framework style angle includes, which
        are required for modules.
        Add some missing includes.

        * Configurations/WebKitLegacy.xcconfig:
        * DOM/DOMEventListener.h:
        * DOM/DOMEventTarget.h:
        * DOM/DOMNodeFilter.h:
        * DOM/DOMXPathNSResolver.h:
        * DOM/WebDOMOperationsPrivate.h:
        * History/WebHistoryItemPrivate.h:
        * Misc/NSURLDownloadSPI.h:
        * Misc/WebCache.h:
        * Misc/WebDownload.h:
        * Misc/WebKitErrorsPrivate.h:
        * Misc/WebLocalizableStrings.h:
        * Misc/WebUserContentURLPattern.h:
        * Plugins/Hosted/WebKitPluginHostTypes.h:
        * Plugins/WebPlugin.h:
        * Plugins/WebPluginContainer.h:
        * Storage/WebDatabaseManagerPrivate.h:
        * Storage/WebDatabaseQuotaManager.h:
        * Storage/WebStorageManagerPrivate.h:
        * WebCoreSupport/WebCreateFragmentInternal.h:
        * WebCoreSupport/WebSecurityOriginPrivate.h:
        * WebView/WebDeviceOrientation.h:
        * WebView/WebDeviceOrientationProvider.h:
        * WebView/WebDeviceOrientationProviderMock.h:
        * WebView/WebEditingDelegatePrivate.h:
        * WebView/WebFormDelegatePrivate.h:
        * WebView/WebGeolocationPosition.h:
        * WebView/WebResourceLoadDelegatePrivate.h:

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

        [Cocoa] Merge and simplify the nsColor family of functions
        https://bugs.webkit.org/show_bug.cgi?id=231992

        Reviewed by Anders Carlsson.

        * DOM/DOMRGBColor.mm:
        (-[DOMRGBColor color]): Use cocoaColor instead of nsColor.

        * Misc/WebKitNSStringExtras.mm:
        (-[NSString _web_drawAtPoint:font:textColor:]): Use colorFromCocoaColor
        instead of colorFromNSColor.

        * WebView/WebFrame.mm:
        (-[WebFrame _updateBackgroundAndUpdatesWhileOffscreen]): Use
        colorFromCocoaColor instead of colorFromNSColor.
        (-[WebFrame _bodyBackgroundColor]): Use cocoaColor instead of
        nsColor.

        * WebView/WebHTMLView.mm:
        (extractUnderlines): Use colorFromCocoaColor instead of
        colorFromNSColor.

        * WebView/WebView.mm:
        (-[WebUITextIndicatorData initWithImage:textIndicatorData:scale:]):
        Use cocoaColor instead of -[UIColor initWithCGColor:] and cachedCGColor.
        (-[WebTextTouchBarItemController _webChangeColor:]): Use colorFromCocoaColor
        instead of colorFromNSColor.
        (-[WebView updateTextTouchBar]): Use cocoaColor instead of nsColor.

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

        cachedCGColor() and nsColor() should return smart pointers
        https://bugs.webkit.org/show_bug.cgi?id=231909

        Reviewed by Tim Horton.

        r276283 attempted to make cachedCGColor() and nsColor() thread-safe but the fix was incomplete
        since those functions return unretained objects that can be released from the cache on any
        other thread. This patch updates cachedCGColor() and nsColor() to return a RetainPtr to address
        the issue.

        * DOM/DOMRGBColor.mm:
        (-[DOMRGBColor color]):
        * WebView/WebFrame.mm:
        (-[WebFrame _bodyBackgroundColor]):
        * WebView/WebView.mm:
        (-[WebView updateTextTouchBar]):

2021-10-18  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, reverting r284240.
        https://bugs.webkit.org/show_bug.cgi?id=231931

        NeedDifferentArchitectureToWorkWithWebpushd

        Reverted changeset:

        "WebKit Managed Notifications: Skeleton NotificationProvider."
        https://bugs.webkit.org/show_bug.cgi?id=231786
        https://commits.webkit.org/r284240

2021-10-15  Brady Eidson  <beidson@apple.com>

        WebKit Managed Notifications: Skeleton NotificationProvider.
        <rdar://84275562> and https://bugs.webkit.org/show_bug.cgi?id=231786

        Reviewed by Alex Christensen.

        * WebCoreSupport/WebNotificationClient.mm:
        (-[WebNotificationPolicyListener NO_RETURN_DUE_TO_ASSERT]):
        (-[WebNotificationPolicyListener denyOnlyThisRequest]): Deleted.

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

        Remove Variant.h
        https://bugs.webkit.org/show_bug.cgi?id=231744

        Reviewed by Darin Adler.

        * DOM/DOMHTMLOptionsCollection.mm:

2021-10-14  Myles C. Maxfield  <mmaxfield@apple.com>

        All the SDKVariant.xcconfig files should match
        https://bugs.webkit.org/show_bug.cgi?id=231663

        Reviewed by Youenn Fablet.

        * Configurations/SDKVariant.xcconfig:

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

        Modernize WebDatabaseManagerClient
        <https://webkit.org/b/231549>
        <rdar://problem/84129168>

        Reviewed by Sihui Liu.

        * Storage/WebDatabaseManager.mm:
        (-[WebDatabaseManager init]):
        - Add WebKit namespace to
          WebDatabaseManagerClient::sharedWebDatabaseManagerClient()
          and convert reference into pointer.

        * Storage/WebDatabaseManagerClient.h:
        (WebKit::WebDatabaseManagerClient):
        - Put WebDatabaseManagerClient in WebKit namespace.

        * Storage/WebDatabaseManagerClient.mm:
        - Put WebDatabaseManagerClient in WebKit namespace.
        (WebKit::WebDatabaseManagerClient::sharedWebDatabaseManagerClient):
        - Update to use NeverDestroyed<> and to return a reference.

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 ==
