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

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

        Reviewed by Dean Jackson.

        Update -[DOMMouseEvent button] to be a "short" and update the noButton value from -1 to -2.

        * DOM/DOMMouseEvent.h:
        * DOM/DOMMouseEvent.mm:
        (-[DOMMouseEvent button]):
        * WebView/WebPDFView.mm:
        (-[WebPDFView PDFViewWillClickOnLink:withURL:]):

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

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

        Reviewed by Youenn Fablet.

        Add a runtime flag for link preload responsive images.

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

2019-06-01  Andy Estes  <aestes@apple.com>

        [Apple Pay] Every PaymentCoordinator client should explicitly decide whether they support unrestricted Apple Pay
        https://bugs.webkit.org/show_bug.cgi?id=198449
        <rdar://problem/51038583>

        Reviewed by Wenson Hsieh.

        * WebCoreSupport/WebPaymentCoordinatorClient.h:
        * WebCoreSupport/WebPaymentCoordinatorClient.mm:
        (WebPaymentCoordinatorClient::supportsUnrestrictedApplePay const):

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

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

        Reviewed by Simon Fraser.

        Sync FeatureDefines.xcconfig.

        * Configurations/FeatureDefines.xcconfig:

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

        Fix internal watchOS build
        https://bugs.webkit.org/show_bug.cgi?id=198344
        <rdar://problem/51128965>

        Reviewed by Geoff Garen.

        * Misc/WebDownload.h:
        Fix watchOS like we did iosmac in r245596

2019-05-28  Brent Fulgham  <bfulgham@apple.com>
        Protect frames during style and layout changes
        https://bugs.webkit.org/show_bug.cgi?id=198047
        <rdar://problem/50954082>

        Reviewed by Zalan Bujtas.

        Be more careful about the scope and lifetime of objects that participate in layout or
        style updates. If a method decides a layout or style update is needed, it needs to
        confirm that the elements it was operating on are still valid and needed in the
        current operation.

        * DOM/DOM.mm:
        (-[DOMRange renderedImageForcingBlackText:renderedImageForcingBlackText:]):
        * WebView/WebHTMLView.mm:
        (-[WebHTMLView _selectionDraggingImage]):
        (-[WebHTMLView selectionImageForcingBlackText:selectionImageForcingBlackText:]):

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

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

        Reviewed by Youenn Fablet.

        * WebCoreSupport/WebFrameLoaderClient.h:
        * WebCoreSupport/WebFrameLoaderClient.mm:
        (WebFrameLoaderClient::pageID const):

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

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

        Reviewed by Tim Horton.

        Add a new chrome client method. See other changelogs for more detail.

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

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

        Fix IOSMAC build
        https://bugs.webkit.org/show_bug.cgi?id=198082
        <rdar://problem/50939725>

        Reviewed by Geoffrey Garen.

        * Misc/WebDownload.h:

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

        Make QTKit an optional framework
        https://bugs.webkit.org/show_bug.cgi?id=197075

        Reviewed by Eric Carlson.

        * WebView/WebVideoFullscreenHUDWindowController.mm:
        (-[WebVideoFullscreenHUDWindowController windowDidLoad]):

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

        Don't crash when DOMNode.addEventListener:listener:useCapture: is called with a nil listener
        https://bugs.webkit.org/show_bug.cgi?id=197712
        <rdar://problem/50429770>

        Reviewed by Tim Horton.

        * DOM/ObjCEventListener.h:
        * DOM/ObjCEventListener.mm:
        (WebCore::ObjCEventListener::wrap):

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

        [Legacy WebKit] REGRESSION (r238078): Crash in hardwareKeyboardAvailabilityChangedCallback()
        https://bugs.webkit.org/show_bug.cgi?id=197724
        <rdar://problem/49725959>

        Reviewed by Tim Horton.

        Speculative fix for race condition. Between the time we receive a kGSEventHardwareKeyboardAvailabilityChangedNotification
        notification and when we schedule execution to run on the WebThread the WebView that notification
        was for may no longer exist. Take out a weak ptr on the WebView when we receive the notification
        and check that we still have it once we are running on the WebThread.

        * WebView/WebHTMLView.mm:
        (hardwareKeyboardAvailabilityChangedCallback):

2019-05-08  Timothy Hatcher  <timothy@apple.com>

        Add plumbing for inactive system colors in RenderTheme cache.
        https://bugs.webkit.org/show_bug.cgi?id=197699
        rdar://problem/49406936

        Reviewed by Tim Horton.

        * WebView/WebView.mm:
        (-[WebView _commonInitializationWithFrameName:groupName:]):
        (-[WebView _setUseDarkAppearance:]):
        (-[WebView _useInactiveAppearance]):
        (-[WebView _setUseInactiveAppearance:]):
        (-[WebView _setUseDarkAppearance:useInactiveAppearance:]):
        (-[WebView _effectiveAppearanceIsInactive]):
        (-[WebView viewDidChangeEffectiveAppearance]):
        * WebView/WebViewPrivate.h:

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

        Pass KeyboardEvent by reference in more places
        https://bugs.webkit.org/show_bug.cgi?id=197480

        Reviewed by Wenson Hsieh.

        * WebCoreSupport/WebEditorClient.h:
        * WebCoreSupport/WebEditorClient.mm:
        (WebEditorClient::handleKeyboardEvent):
        (WebEditorClient::handleInputMethodKeydown):

2019-05-02  Frederic Wang  <fwang@igalia.com>

        [GTK][WPE] Disable "thin", "thick", "medium" values of mfrac@linethickness at runtime
        https://bugs.webkit.org/show_bug.cgi?id=196142

        This patch introduces some experimental runtime flag to let users
        disable MathML features that are removed from MathML Core [1]. For now,
        these features are only disabled on GTK and WPE ports.

        [1] https://mathml-refresh.github.io/mathml-core/

        Reviewed by Rob Buis.

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

2019-04-29  Alex Christensen  <achristensen@webkit.org>

        <rdar://problem/50299396> Fix internal High Sierra build
        https://bugs.webkit.org/show_bug.cgi?id=197388

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

2019-04-26  Keith Rollin  <krollin@apple.com>

        Enable new build rule for post-processing headers when using XCBuild
        https://bugs.webkit.org/show_bug.cgi?id=197340
        <rdar://problem/50226685>

        Reviewed by Brent Fulgham.

        In Bug 197116, we conditionally disabled the old method for
        post-processing header files when we are using the new XCBuild build
        system. This check-in conditionally enables the new post-processing
        facility. Note that the old system is disabled and the new system
        enabled only when the USE_NEW_BUILD_SYSTEM environment variable is set
        to YES.

        * Configurations/WebKitLegacy.xcconfig:

2019-04-26  Jessie Berlin  <jberlin@webkit.org>

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

        Reviewed by Alex Christensen.

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

2019-04-26  Eric Carlson  <eric.carlson@apple.com>

        Create AVFoundationSoftLink.{h,mm} to reduce duplicate code
        https://bugs.webkit.org/show_bug.cgi?id=197171
        <rdar://problem/47454979>

        Reviewed by Youenn Fablet.

        * WebView/WebVideoFullscreenController.mm:
        (-[WebVideoFullscreenController setVideoElement:]):
        (-[WebVideoFullscreenController windowDidExitFullscreen]):
        (SOFT_LINK_CLASS): Deleted.

2019-04-25  Timothy Hatcher  <timothy@apple.com>

        Disable date and time inputs on iOSMac.
        https://bugs.webkit.org/show_bug.cgi?id=197287
        rdar://problem/46794376

        Reviewed by Wenson Hsieh.

        * Configurations/FeatureDefines.xcconfig:

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

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

        Reviewed by Darin Adler.

        * Configurations/Base.xcconfig:

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

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

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

        Reverted changeset:

        "Create AVFoundationSoftLink.{h,mm} to reduce duplicate code"
        https://bugs.webkit.org/show_bug.cgi?id=197171
        https://trac.webkit.org/changeset/244627

2019-04-24  Zalan Bujtas  <zalan@apple.com>

        Regression (r244291): Broken API Test AutoLayoutRenderingProgressRelativeOrdering
        https://bugs.webkit.org/show_bug.cgi?id=196948
        <rdar://problem/49927131>

        Reviewed by Tim Horton.

        * WebCoreSupport/WebChromeClient.h:

2019-04-24  Eric Carlson  <eric.carlson@apple.com>

        Create AVFoundationSoftLink.{h,mm} to reduce duplicate code
        https://bugs.webkit.org/show_bug.cgi?id=197171
        <rdar://problem/47454979>

        Reviewed by Youenn Fablet.

        * WebView/WebVideoFullscreenController.mm:
        (-[WebVideoFullscreenController setVideoElement:]):
        (-[WebVideoFullscreenController windowDidExitFullscreen]):
        (SOFT_LINK_CLASS): Deleted.

2019-04-24  Simon Fraser  <simon.fraser@apple.com>

        Make it possible to control the renderTreeAsText output by setting options on testRunner
        https://bugs.webkit.org/show_bug.cgi?id=197133

        Reviewed by Sam Weinig.

        Add testRunner.setRenderTreeDumpOptions() and expose the subset of RenderAsTextFlag flags
        that make sense in testing (those that don't dump unstable data like addresses), and plumb
        these flags through the various framework layers.

        Convert RenderAsTextBehavior to an OptionSet<RenderAsTextFlag>.

        Fix code generation in WebKitTestRunner to generate bindings for IDL const values,
        and hand-code DumpRenderTree bindings.

        Some cleanup of the TestRunners, using member initializers.

        * Misc/WebCoreStatistics.h:
        * Misc/WebCoreStatistics.mm:
        (-[WebFrame renderTreeAsExternalRepresentationForPrinting]):
        (toRenderAsTextFlags):
        (-[WebFrame renderTreeAsExternalRepresentationWithOptions:]):
        (-[WebFrame renderTreeAsExternalRepresentationForPrinting:]): Deleted.

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

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

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

        Reverted changeset:

        "Create AVFoundationSoftLink.{h,mm} to reduce duplicate code"
        https://bugs.webkit.org/show_bug.cgi?id=197171
        https://trac.webkit.org/changeset/244556

2019-04-23  Eric Carlson  <eric.carlson@apple.com>

        Create AVFoundationSoftLink.{h,mm} to reduce duplicate code
        https://bugs.webkit.org/show_bug.cgi?id=197171
        <rdar://problem/47454979>

        Reviewed by Youenn Fablet.

        * WebView/WebVideoFullscreenController.mm:
        (-[WebVideoFullscreenController setVideoElement:]):
        (-[WebVideoFullscreenController windowDidExitFullscreen]):
        (SOFT_LINK_CLASS): Deleted.

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

        [Process-Swap-On-Navigation] WebKit hangs when going back to a form submission's page due to Process-Swap-On-Navigation on iOS 12.2 and higher
        https://bugs.webkit.org/show_bug.cgi?id=197097
        <rdar://problem/50048318>

        Reviewed by Alex Christensen.

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

2019-04-18  Daniel Bates  <dabates@apple.com>

        Use existing KeyEventCodesIOS constants instead of duplicating them
        https://bugs.webkit.org/show_bug.cgi?id=197081

        Rubber-stamped by Wenson Hsieh.

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

2019-04-18  Ryosuke Niwa  <rniwa@webkit.org>

        Crash in FrameLoader::stopAllLoaders via [WebView dealloc] inside ~ObjCEventListener
        https://bugs.webkit.org/show_bug.cgi?id=197079

        Reviewed by Darin Adler.

        The crash was caused by the fact deleting a node could end up deleting Objective-C event listeners
        some of which may be the last object holding onto WebView itself in the middle of running GC.

        It's not generally safe to delete Objective-C objects defiend by client applications since
        dealloc could execute arbitrary code, and for instance, try to execute JavaScript or load new page.

        Fixed the bug by delaying the dealloc'ing of Objective event listeners via autorelease pool.

        * DOM/ObjCEventListener.mm:
        (WebCore::ObjCEventListener::~ObjCEventListener):

2019-04-18  Jer Noble  <jer.noble@apple.com>

        Refactoring: Pull all fullscreen code out of Document and into its own helper class
        https://bugs.webkit.org/show_bug.cgi?id=197017

        Reviewed by Eric Carlson.

        * DOM/DOMDocument.mm:
        (-[DOMDocument webkitIsFullScreen]):
        (-[DOMDocument webkitFullScreenKeyboardInputAllowed]):
        (-[DOMDocument webkitCurrentFullScreenElement]):
        (-[DOMDocument webkitFullscreenEnabled]):
        (-[DOMDocument webkitFullscreenElement]):
        (-[DOMDocument webkitCancelFullScreen]):
        (-[DOMDocument webkitExitFullscreen]):
        * WebCoreSupport/WebChromeClient.mm:
        (WebChromeClient::createWindow):
        * WebCoreSupport/WebKitFullScreenListener.mm:
        (-[WebKitFullScreenListener webkitWillEnterFullScreen]):
        (-[WebKitFullScreenListener webkitDidEnterFullScreen]):
        (-[WebKitFullScreenListener webkitWillExitFullScreen]):
        (-[WebKitFullScreenListener webkitDidExitFullScreen]):
        * WebView/WebFullScreenController.mm:
        (-[WebFullScreenController enterFullScreen:]):
        (-[WebFullScreenController finishedEnterFullScreenAnimation:]):
        (-[WebFullScreenController requestExitFullScreen]):
        (-[WebFullScreenController exitFullScreen]):
        (-[WebFullScreenController finishedExitFullScreenAnimation:]):
        (-[WebFullScreenController _manager]):
        * WebView/WebView.mm:
        (-[WebView _didStartProvisionalLoadForFrame:]):

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

        Link clicks in PDFs shouldn't send referrer headers.
        <rdar://problem/21142581> and https://bugs.webkit.org/show_bug.cgi?id=196980

        Reviewed by Tim Horton.

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

2019-04-10  Said Abou-Hallawa  <sabouhallawa@apple.com>

        requestAnimationFrame should execute before the next frame
        https://bugs.webkit.org/show_bug.cgi?id=177484

        Reviewed by Simon Fraser.

        * WebView/WebView.mm:
        (-[WebView _viewWillDrawInternal]):
        (-[WebView _flushCompositingChanges]):
        Call Page::updateRendering() which implements "Update the rendering"
        step of the HTML Event Loop specification.

2019-04-10  Devin Rousso  <drousso@apple.com>

        Web Inspector: save sheet should be anchored underneath the tab bar when detached
        https://bugs.webkit.org/show_bug.cgi?id=196722
        <rdar://problem/49613280>

        Reviewed by Timothy Hatcher.

        * WebCoreSupport/WebInspectorClient.h:
        (WebInspectorFrontendClient::sheetRect const): Added.
        * WebCoreSupport/WebInspectorClient.mm:
        (-[WebInspectorWindowController window:willPositionSheet:usingRect:]):
        (WebInspectorFrontendClient::setSheetRect): Added.

2019-04-10  Alex Christensen  <achristensen@webkit.org>

        Add SPI WKNavigationResponse._downloadAttribute
        https://bugs.webkit.org/show_bug.cgi?id=196755
        <rdar://49587365>

        Reviewed by Brady Eidson.

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

2019-04-10  Antoine Quint  <graouts@apple.com>

        Enable Pointer Events on watchOS
        https://bugs.webkit.org/show_bug.cgi?id=196771
        <rdar://problem/49040909>

        Reviewed by Dean Jackson.

        * Configurations/FeatureDefines.xcconfig:

2019-04-08  Justin Fan  <justin_fan@apple.com>

        [Web GPU] Fix Web GPU experimental feature on iOS
        https://bugs.webkit.org/show_bug.cgi?id=196632

        Reviewed by Myles C. Maxfield.

        Add feature conditionals for iOS 11.
        Properly make Web GPU available on iOS 11+.

        * Configurations/FeatureDefines.xcconfig:
        * Configurations/WebKitTargetConditionals.xcconfig:

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

        REGRESSION(AppleWebKit/605.1.15): WebDownloadDelegate delegate methods called on non-main thread
        https://bugs.webkit.org/show_bug.cgi?id=190918
        <rdar://problem/45603890>

        Reviewed by Darin Adler.

        Since we not doing networking on the main thread but WebView is to be used on the main thread,
        we need to hop delegate calls to the main thread similarly to how we do it in the non-download
        delegate calls in WebCoreResourceHandleAsOperationQueueDelegate.

        * Misc/WebDownload.mm:
        (-[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-04-05  Eric Carlson  <eric.carlson@apple.com>

        Remove AUDIO_TOOLBOX_AUDIO_SESSION
        https://bugs.webkit.org/show_bug.cgi?id=196653
        <rdar://problem/49652098>

        Reviewed by Jer Noble.

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

2019-04-05  Eric Carlson  <eric.carlson@apple.com>

        Stop including <AudioToolbox/AudioSession.h>
        https://bugs.webkit.org/show_bug.cgi?id=196648
        <rdar://problem/39665771>

        Reviewed by Jer Noble.

        * WebView/WebPreferencesPrivate.h:

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

        Have ScrollableArea store a ScrollType for the current scroll
        https://bugs.webkit.org/show_bug.cgi?id=196627

        Reviewed by Zalan Bujtas.

        Send the programmatic scroll type.

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

2019-04-03  Myles C. Maxfield  <mmaxfield@apple.com>

        -apple-trailing-word is needed for browser detection
        https://bugs.webkit.org/show_bug.cgi?id=196575

        Unreviewed.

        * Configurations/FeatureDefines.xcconfig:

2019-04-03  Myles C. Maxfield  <mmaxfield@apple.com>

        Remove support for -apple-trailing-word
        https://bugs.webkit.org/show_bug.cgi?id=196525

        Reviewed by Zalan Bujtas.

        This CSS property is nonstandard and not used.

        * Configurations/FeatureDefines.xcconfig:

2019-04-01  Alex Christensen  <achristensen@webkit.org>

        Add SPI to canonicalize NSURLs with WTF::URL
        https://bugs.webkit.org/show_bug.cgi?id=196415
        <rdar://problem/44980271>

        Reviewed by Darin Adler.

        * Misc/WebNSURLExtras.h:
        * Misc/WebNSURLExtras.mm:
        (-[NSURL _webkit_canonicalize_with_wtf]):
        _webkit_canonicalize is old and changing it causes strange bugs like rdar://problem/5315926
        Instead, make a new version that uses WTF::URL to canonicalize an NSURL.

2019-03-31  Sam Weinig  <weinig@apple.com>

        Remove more i386 specific configurations
        https://bugs.webkit.org/show_bug.cgi?id=196430

        Reviewed by Alexey Proskuryakov.

        * Configurations/FeatureDefines.xcconfig:
        ENABLE_WEB_AUTHN_macosx can now be enabled unconditionally on macOS.

2019-03-29  Myles C. Maxfield  <mmaxfield@apple.com>

        Delete WebMetal implementation in favor of WebGPU
        https://bugs.webkit.org/show_bug.cgi?id=195418

        Reviewed by Dean Jackson.

        * Configurations/FeatureDefines.xcconfig:
        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):
        (-[WebPreferences webMetalEnabled]): Deleted.
        (-[WebPreferences setWebMetalEnabled:]): Deleted.
        * WebView/WebPreferencesPrivate.h:
        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]):

2019-03-29  Cathie Chen  <cathiechen@igalia.com>

        Implement ResizeObserver.
        https://bugs.webkit.org/show_bug.cgi?id=157743

        Reviewed by Simon Fraser.

        * Configurations/FeatureDefines.xcconfig:
        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):
        (-[WebPreferences resizeObserverEnabled]):
        (-[WebPreferences setResizeObserverEnabled:]):
        * WebView/WebPreferencesPrivate.h:
        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]):
        (-[WebView _flushCompositingChanges]): checkResizeObservations() in the begining.

2019-03-27  Ryosuke Niwa  <rniwa@webkit.org>

        [macOS] Select element doesn't show popup if select element had lost focus while popup was previosuly shown
        https://bugs.webkit.org/show_bug.cgi?id=196336

        Reviewed by Tim Horton.

        Fixed the bug that we were not actually dismissing the popup in PopupMenuMac::hide as done in WebKit2.

        Unfortunately no new tests since intenals.isSelectPopupVisible would always return false in WebKit1.

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

2019-03-25  Andy Estes  <aestes@apple.com>

        [iOS] Break a reference cycle between PreviewLoader and ResourceLoader
        https://bugs.webkit.org/show_bug.cgi?id=194964
        <rdar://problem/48279441>

        Reviewed by Alex Christensen.

        The WebDataSource._quickLookContent SPI accidentally relied on PreviewLoaders being leaked
        to keep the temporary file referenced by WebQuickLookFileNameKey in existence. Since
        PreviewLoaders are now being deleted properly, we teach WebDataSource to keep the
        PreviewLoaderClient alive for its lifetime. This ensures that as long as
        WebDataSource._quickLookContent can be called, the associated temp file will not be deleted
        by WebKit.

        * WebCoreSupport/WebFrameLoaderClient.mm:
        (WebFrameLoaderClient::createPreviewLoaderClient):
        * WebView/WebDataSource.mm:
        (-[WebDataSource _quickLookPreviewLoaderClient]):
        (-[WebDataSource _setQuickLookPreviewLoaderClient:]):
        * WebView/WebDataSourceInternal.h:

2019-03-25  Gyuyoung Kim  <gyuyoung.kim@webkit.org>

        Remove NavigatorContentUtils in WebCore/Modules
        https://bugs.webkit.org/show_bug.cgi?id=196070

        Reviewed by Alex Christensen.

        NavigatorContentUtils was to support the custom scheme spec [1].
        However, in WebKit side, no port has supported the feature in
        WebKit layer after EFL port was removed. So there has been the
        only IDL implementation of the NavigatorContentUtils in WebCore.
        So we don't need to keep the implementation in WebKit.

        * Configurations/FeatureDefines.xcconfig:

2019-03-22  Keith Rollin  <krollin@apple.com>

        Enable ThinLTO support in Production builds
        https://bugs.webkit.org/show_bug.cgi?id=190758
        <rdar://problem/45413233>

        Reviewed by Daniel Bates.

        Enable building with Thin LTO in Production when using Xcode 10.2 or
        later. This change results in a 1.45% progression in PLT5. Full
        Production build times increase about 2-3%. Incremental build times
        are more severely affected, and so LTO is not enabled for local
        engineering builds.

        LTO is enabled only on macOS for now, until rdar://problem/49013399,
        which affects ARM builds, is fixed.

        To change the LTO setting when building locally:

        - If building with `make`, specify WK_LTO_MODE={none,thin,full} on the
          command line.
        - If building with `build-webkit`, specify --lto-mode={none,thin,full}
          on the command line.
        - If building with `build-root`, specify --lto={none,thin,full} on the
          command line.
        - If building with Xcode, create a LocalOverrides.xcconfig file at the
          top level of your repository directory (if needed) and define
          WK_LTO_MODE to full, thin, or none.

        * Configurations/Base.xcconfig:

2019-03-21  Andy Estes  <aestes@apple.com>

        [iOS] Apple Pay should be available in documents with no user agent scripts
        https://bugs.webkit.org/show_bug.cgi?id=196061
        <rdar://problem/48649391>

        Reviewed by Brady Eidson.

        * WebView/WebFrame.mm:
        (-[WebFrame _stringByEvaluatingJavaScriptFromString:withGlobalObject:inScriptWorld:]):

2019-03-20  Simon Fraser  <simon.fraser@apple.com>

        Rename ENABLE_ACCELERATED_OVERFLOW_SCROLLING macro to ENABLE_OVERFLOW_SCROLLING_TOUCH
        https://bugs.webkit.org/show_bug.cgi?id=196049

        Reviewed by Tim Horton.

        This macro is about the -webkit-overflow-scrolling CSS property, not accelerated
        overflow scrolling in general, so rename it.

        * Configurations/FeatureDefines.xcconfig:

2019-03-13  Dean Jackson  <dino@apple.com>

        Block all plugins smaller than 5x5px
        https://bugs.webkit.org/show_bug.cgi?id=195702
        <rdar://problem/28435204>

        Reviewed by Sam Weinig.

        Removed a function that was never being called.

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

2019-03-13  Keith Rollin  <krollin@apple.com>

        Add support for new StagedFrameworks layout
        https://bugs.webkit.org/show_bug.cgi?id=195543

        Reviewed by Alexey Proskuryakov.

        When creating the WebKit layout for out-of-band Safari/WebKit updates,
        use an optional path prefix when called for.

        * Configurations/WebKitLegacy.xcconfig:

2019-03-12  Ryosuke Niwa  <rniwa@webkit.org>

        Remove a site specific hack for AppleConnect plugin
        https://bugs.webkit.org/show_bug.cgi?id=195643

        Reviewed by Simon Fraser.

        r66437 added a workaround for AppleConnect plugin.

        Remove this code since Safari doesn't even use WebKitLegacy anymore,
        and other WebKit clients support AppleConnect plugins.

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

2019-03-11  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r242688, r242643, r242624.

        Caused multiple layout test failures and crashes on iOS and macOS.

        Reverted changeset:

        "requestAnimationFrame should execute before the next frame"
        https://bugs.webkit.org/show_bug.cgi?id=177484
        https://trac.webkit.org/changeset/242624/webkit

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

2019-03-09  Andy Estes  <aestes@apple.com>

        [Apple Pay] CanMakePaymentsWithActiveCard and OpenPaymentSetup should be async messages
        https://bugs.webkit.org/show_bug.cgi?id=195526
        <rdar://problem/48745636>

        Reviewed by Chris Dumez.

        * WebCoreSupport/WebPaymentCoordinatorClient.h:
        * WebCoreSupport/WebPaymentCoordinatorClient.mm:
        (WebPaymentCoordinatorClient::canMakePaymentsWithActiveCard):
        (WebPaymentCoordinatorClient::openPaymentSetup):

2019-03-07  Said Abou-Hallawa  <sabouhallawa@apple.com>

        requestAnimationFrame should execute before the next frame
        https://bugs.webkit.org/show_bug.cgi?id=177484

        Reviewed by Simon Fraser.

        * WebView/WebView.mm:
        (-[WebView _viewWillDrawInternal]):
        Call Page::renderingUpdate() which implements  "Update the rendering"
        step of the HTML Event Loop specification.

2019-03-07  Zalan Bujtas  <zalan@apple.com>

        [ContentChangeObserver] Add a setting to be able to turn content change observation on/off
        https://bugs.webkit.org/show_bug.cgi?id=195353
        <rdar://problem/48626394>

        Reviewed by Simon Fraser.

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

2019-03-06  Sam Weinig  <sam@webkit.org>

        WebKitLegacy does not need to generate an export file for i386 anymore
        https://bugs.webkit.org/show_bug.cgi?id=195380

        Reviewed by Dan Bernstein.

        * Configurations/WebKitLegacy.xcconfig:
        Simplify EXPORTED_SYMBOLS_FILE down to just a single path to a generated file.
        It still needs to be generated, since we are concatenating the shared exports
        file with a macOS or iOS specific one.

        * WebKit.mac.exp:
        Remove i386 specific symbols that we were previously stripping.

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

        Consider supporting the `referrerpolicy` attribute.
        https://bugs.webkit.org/show_bug.cgi?id=179053

        Reviewed by Darin Adler.

        Add a runtime flag for referrerpolicy attribute.

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

2019-03-03  Tim Horton  <timothy_horton@apple.com>

        Remove some more unused 32-bit code
        https://bugs.webkit.org/show_bug.cgi?id=195255

        Reviewed by Darin Adler.

        * Plugins/WebNetscapePluginEventHandler.mm:
        (WebNetscapePluginEventHandler::create):
        * Plugins/WebNetscapePluginView.h:
        * Plugins/WebNetscapePluginView.mm:
        (-[WebNetscapePluginView saveAndSetNewPortStateForUpdate:]):
        (-[WebNetscapePluginView restorePortState:]):
        (-[WebNetscapePluginView sendEvent:isDrawRect:]):
        (-[WebNetscapePluginView isNewWindowEqualToOldWindow]):
        (-[WebNetscapePluginView updateAndSetWindow]):
        (-[WebNetscapePluginView setWindowIfNecessary]):
        (-[WebNetscapePluginView createPlugin]):
        (-[WebNetscapePluginView fini]):
        (-[WebNetscapePluginView drawRect:]):
        (-[WebNetscapePluginView invalidateRegion:]):
        (-[WebNetscapePluginView getVariable:value:]):
        (-[WebNetscapePluginView setVariable:value:]):
        (isDrawingModelQuickDraw): Deleted.
        (-[WebNetscapePluginView fixWindowPort]): Deleted.
        (getQDPixelFormatForBitmapContext): Deleted.
        (-[WebNetscapePluginView tellQuickTimeToChill]): Deleted.
        (-[WebNetscapePluginView _printedPluginBitmap]): Deleted.
        * WebView/WebDelegateImplementationCaching.mm:

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

        [iOS] Programmatic paste access should be granted when copying and pasting within the same origin
        https://bugs.webkit.org/show_bug.cgi?id=195053
        <rdar://problem/48134710>

        Reviewed by Ryosuke Niwa.

        * WebCoreSupport/WebEditorClient.h:

2019-03-01  Tim Horton  <timothy_horton@apple.com>

        Remove unused code in WebKitLegacy
        https://bugs.webkit.org/show_bug.cgi?id=189614

        Reviewed by Simon Fraser.

        * Carbon/CarbonUtils.h: Removed.
        * Carbon/CarbonUtils.m: Removed.
        * Carbon/CarbonWindowAdapter.h: Removed.
        * Carbon/CarbonWindowAdapter.mm: Removed.
        * Carbon/CarbonWindowContentView.h: Removed.
        * Carbon/CarbonWindowContentView.m: Removed.
        * Carbon/CarbonWindowFrame.h: Removed.
        * Carbon/CarbonWindowFrame.m: Removed.
        * Carbon/HIViewAdapter.h: Removed.
        * Carbon/HIViewAdapter.m: Removed.
        * Carbon/HIWebView.h: Removed.
        * Carbon/HIWebView.mm: Removed.
        * Configurations/WebKitLegacy.xcconfig:
        * WebKit.mac.exp:

2019-03-01  Justin Fan  <justin_fan@apple.com>

        [Web GPU] 32-bit builds broken by attempt to disable WebGPU on 32-bit
        https://bugs.webkit.org/show_bug.cgi?id=195191

        Rubber-stamped by Dean Jackson.

        Dropping support for 32-bit entirely, so I'm intentionally leaving 32-bit broken.

        * Configurations/FeatureDefines.xcconfig:

2019-02-28  Antoine Quint  <graouts@apple.com>

        Enable the Pointer Events runtime flag by default
        https://bugs.webkit.org/show_bug.cgi?id=195156

        Reviewed by Dean Jackson.

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

2019-02-28  Justin Fan  <justin_fan@apple.com>

        [Web GPU] Enable Web GPU only on 64-bit
        https://bugs.webkit.org/show_bug.cgi?id=195139

        Because Metal is only supported on 64 bit apps.

        Unreviewed build fix.

        * Configurations/FeatureDefines.xcconfig:

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

        Support Pointer Events on macOS
        https://bugs.webkit.org/show_bug.cgi?id=195008
        <rdar://problem/47454419>

        Reviewed by Dean Jackson.

        Add a WebKitLegacy API to enable and disable the Pointer Events runtime feature.

        * Configurations/FeatureDefines.xcconfig:
        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):
        (-[WebPreferences pointerEventsEnabled]):
        (-[WebPreferences setPointerEventsEnabled:]):
        * WebView/WebPreferencesPrivate.h:
        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]):

2019-02-23  Keith Miller  <keith_miller@apple.com>

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

        Reviewed by Tim Horton.

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

2019-02-21  Simon Fraser  <simon.fraser@apple.com>

        Hardcode Visual Viewports on everywhere except iOS WK1
        https://bugs.webkit.org/show_bug.cgi?id=194928

        Reviewed by Zalan Bujtas.

        Remove the WK1 and WK2 preferences and MiniBrowser menu item for "visual viewports",
        change the default value of the Setting to 'true', and hardcode WebView on iOS to
        set it to false. The setting has shipped for several years and there's no need to turn
        it off now.

        Similarly, disable the "Visual Viewport API" on iOS WK1, since it makes no sense if
        Visual Viewports are not enabled.
        
        Remove the "visualViewportEnabled" flag and unused code paths from scrolling tree code
        that only runs in WK2

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

2019-02-21  Darin Adler  <darin@apple.com>

        Some refinements for Node and Document
        https://bugs.webkit.org/show_bug.cgi?id=194764

        Reviewed by Ryosuke Niwa.

        * DOM/DOMDocument.mm:
        (-[DOMDocument getOverrideStyle:pseudoElement:]): Return nil without calling
        through to WebCore or even looking at the arguments.
        (-[DOMDocument getOverrideStyle::]): Ditto.

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

        [iOS] Support pasting item-provider-backed data on the pasteboard as attachment elements
        https://bugs.webkit.org/show_bug.cgi?id=194670
        <rdar://problem/39066529>

        Reviewed by Tim Horton.

        * WebCoreSupport/WebEditorClient.h:
        * WebCoreSupport/WebEditorClient.mm:
        (WebEditorClient::replacementURLForResource): Deleted.
        * WebCoreSupport/WebPlatformStrategies.h:
        * WebCoreSupport/WebPlatformStrategies.mm:
        (WebPlatformStrategies::getTypesByFidelityForItemAtIndex): Deleted.

2019-02-18  Eric Carlson  <eric.carlson@apple.com>

        Add MSE logging configuration
        https://bugs.webkit.org/show_bug.cgi?id=194719
        <rdar://problem/48122151>

        Reviewed by Joseph Pecoraro.

        * WebCoreSupport/WebChromeClient.mm:
        (stringForMessageSource): Recognize the MSE message source.

2019-02-17  David Kilzer  <ddkilzer@apple.com>

        Unreviewed, rolling out r241620.

        "Causes use-after-free crashes running layout tests with ASan and GuardMalloc."
        (Requested by ddkilzer on #webkit.)

        Reverted changeset:

        "[WTF] Add environment variable helpers"
        https://bugs.webkit.org/show_bug.cgi?id=192405
        https://trac.webkit.org/changeset/241620

2019-02-15  Ross Kirsling  <ross.kirsling@sony.com>

        [WTF] Add environment variable helpers
        https://bugs.webkit.org/show_bug.cgi?id=192405

        Reviewed by Michael Catanzaro.

        * WebView/WebView.mm:
        (-[WebView _initWithFrame:frameName:groupName:]):
        Utilize WTF::Environment where possible.

2019-02-15  Brian Burg  <bburg@apple.com>

        [Mac] WebInspectorUI.framework does not need to be soft-linked anymore
        https://bugs.webkit.org/show_bug.cgi?id=194411
        <rdar://problem/47787614>

        Reviewed by Joseph Pecoraro.

        * Configurations/WebKitLegacy.xcconfig:
        Conditionalize weak linking to WebInspectorUI.framework for Mac only.

        * WebCoreSupport/WebInspectorClient.mm:
        (WebInspectorFrontendClient::localizedStringsURL):
        (-[WebInspectorWindowController inspectorPagePath]):
        (-[WebInspectorWindowController inspectorTestPagePath]):
        Rewrite uses of the bundle to exit early if bundle couldn't be loaded.

2019-02-15  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r241559 and r241566.
        https://bugs.webkit.org/show_bug.cgi?id=194710

        Causes layout test crashes under GuardMalloc (Requested by
        ryanhaddad on #webkit).

        Reverted changesets:

        "[WTF] Add environment variable helpers"
        https://bugs.webkit.org/show_bug.cgi?id=192405
        https://trac.webkit.org/changeset/241559

        "Unreviewed build fix for WinCairo Debug after r241559."
        https://trac.webkit.org/changeset/241566

2019-02-15  Truitt Savell  <tsavell@apple.com>

        Unreviewed, rolling out r241564.

        Caused 50+ Timeouts on Mac WK2, mostly in the http/ directory

        Reverted changeset:

        "[Mac] WebInspectorUI.framework does not need to be soft-
        linked anymore"
        https://bugs.webkit.org/show_bug.cgi?id=194411
        https://trac.webkit.org/changeset/241564

2019-02-14  Brian Burg  <bburg@apple.com>

        [Mac] WebInspectorUI.framework does not need to be soft-linked anymore
        https://bugs.webkit.org/show_bug.cgi?id=194411
        <rdar://problem/47787614>

        Reviewed by Joseph Pecoraro.

        * Configurations/WebKitLegacy.xcconfig:
        Conditionalize weak linking to WebInspectorUI.framework for Mac only.

        * WebCoreSupport/WebInspectorClient.mm:
        (WebInspectorFrontendClient::localizedStringsURL):
        (-[WebInspectorWindowController inspectorPagePath]):
        (-[WebInspectorWindowController inspectorTestPagePath]):
        Rewrite uses of the bundle to exit early if bundle couldn't be loaded.

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

        [WTF] Add environment variable helpers
        https://bugs.webkit.org/show_bug.cgi?id=192405

        Reviewed by Michael Catanzaro.

        * WebView/WebView.mm:
        (-[WebView _initWithFrame:frameName:groupName:]):
        Utilize WTF::Environment where possible.

2019-02-12  Wenson Hsieh  <wenson_hsieh@apple.com>

        Allow pages to trigger programmatic paste from script on iOS
        https://bugs.webkit.org/show_bug.cgi?id=194271
        <rdar://problem/47808810>

        Reviewed by Ryosuke Niwa.

        See WebCore and WebKit ChangeLogs for more details.

        * WebCoreSupport/WebEditorClient.h:

2019-02-12  Andy Estes  <aestes@apple.com>

        [iOSMac] Enable Parental Controls Content Filtering
        https://bugs.webkit.org/show_bug.cgi?id=194521
        <rdar://39732376>

        Reviewed by Tim Horton.

        * Configurations/FeatureDefines.xcconfig:

2019-02-06  Andy Estes  <aestes@apple.com>

        [Payment Request] It should be possible to require a phonetic name for shipping contacts
        https://bugs.webkit.org/show_bug.cgi?id=194311
        <rdar://46733045>

        Reviewed by Alex Christensen.

        * WebCoreSupport/WebPaymentCoordinatorClient.h:
        * WebCoreSupport/WebPaymentCoordinatorClient.mm:
        (WebPaymentCoordinatorClient::supportsVersion): Deleted.

2019-02-04  Said Abou-Hallawa  <said@apple.com>

        [CG] Enable setAdditionalSupportedImageTypes for WK1
        https://bugs.webkit.org/show_bug.cgi?id=194190

        Reviewed by Tim Horton.

        1. Define the preferences key AdditionalSupportedImageTypes.
        2. Add additionalSupportedImageTypes as a private preference property.
        3. Define the setter and the getter of the property.
        4. Add function to convert from an id to an array of strings.
        5. Call WebCore::setAdditionalSupportedImageTypes when preferences change.

        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (-[WebPreferences _stringArrayValueForKey:]):
        (-[WebPreferences _setStringArrayValueForKey:forKey:]):
        (-[WebPreferences setAdditionalSupportedImageTypes:]):
        (-[WebPreferences additionalSupportedImageTypes]):
        * WebView/WebPreferencesPrivate.h:
        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]):

2019-02-04  Timothy Hatcher  <timothy@apple.com>

        Add WebView SPI to temporarily force light or dark appearance on a page.
        https://bugs.webkit.org/show_bug.cgi?id=194230

        Reviewed by Tim Horton.

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

2019-02-04  Simon Fraser  <simon.fraser@apple.com>

        PageOverlayController's layers should be created lazily
        https://bugs.webkit.org/show_bug.cgi?id=194199
        rdar://problem/46571593

        Reviewed by Tim Horton.

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

2019-02-03  Simon Fraser  <simon.fraser@apple.com>

        Make setNeedsLayout on the root more explicitly about triggering its side-effects
        https://bugs.webkit.org/show_bug.cgi?id=194198

        Reviewed by Antti Koivisto.

        Call the newly named functions.

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

2019-02-03  Ryosuke Niwa  <rniwa@webkit.org>

        Validate navigation policy decisions to avoid crashes in continueLoadAfterNavigationPolicy
        https://bugs.webkit.org/show_bug.cgi?id=194189

        Reviewed by Geoffrey Garen.

        Pass the policy check identifier around functions and store it in WebFramePolicyListener
        so that we can send it back to WebCore with the navigation policy decision.

        * WebCoreSupport/WebFrameLoaderClient.h:
        * WebCoreSupport/WebFrameLoaderClient.mm:
        (WebFrameLoaderClient::dispatchDecidePolicyForResponse):
        (WebFrameLoaderClient::dispatchDecidePolicyForNewWindowAction):
        (WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
        (WebFrameLoaderClient::dispatchWillSubmitForm):
        (WebFrameLoaderClient::setUpPolicyListener):
        (-[WebFramePolicyListener initWithFrame:identifier:policyFunction:defaultPolicy:]):
        (-[WebFramePolicyListener initWithFrame:identifier:policyFunction:defaultPolicy:appLinkURL:]):
        (-[WebFramePolicyListener invalidate]):
        (-[WebFramePolicyListener dealloc]):
        (-[WebFramePolicyListener receivedPolicyDecision:]):
        (-[WebFramePolicyListener initWithFrame:policyFunction:defaultPolicy:]): Deleted.
        (-[WebFramePolicyListener initWithFrame:policyFunction:defaultPolicy:appLinkURL:]): Deleted.

2019-01-31  Alex Christensen  <achristensen@webkit.org>

        Revert r238819 which is unneeded and caused a performance regression.
        https://bugs.webkit.org/show_bug.cgi?id=192272
        <rdar://problem/46664625>

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

2019-01-28  Devin Rousso  <drousso@apple.com>

        Web Inspector: provide a way to edit page WebRTC settings on a remote target
        https://bugs.webkit.org/show_bug.cgi?id=193863
        <rdar://problem/47572764>

        Reviewed by Joseph Pecoraro.

        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]):
        Add page-level settings for WebRTC preferences.

2019-01-28  Andy Estes  <aestes@apple.com>

        [watchOS] Enable Parental Controls content filtering
        https://bugs.webkit.org/show_bug.cgi?id=193939
        <rdar://problem/46641912>

        Reviewed by Ryosuke Niwa.

        * Configurations/FeatureDefines.xcconfig:

2019-01-28  Timothy Hatcher  <timothy@apple.com>

        Make it easier for non-Apple ports to enable dark mode CSS support.
        https://bugs.webkit.org/show_bug.cgi?id=193882

        Reviewed by Megan Gardner.

        * WebView/WebView.mm:
        (-[WebView _commonInitializationWithFrameName:groupName:]): Fix some defines.
        (-[WebView _effectiveAppearanceIsDark]): Ditto.

2019-01-27  Chris Fleizach  <cfleizach@apple.com>

        AX: Introduce a static accessibility tree
        https://bugs.webkit.org/show_bug.cgi?id=193348
        <rdar://problem/47203295>

        Reviewed by Ryosuke Niwa.

        * Configurations/FeatureDefines.xcconfig:

2019-01-25  Keith Rollin  <krollin@apple.com>

        Update WebKitAdditions.xcconfig with correct order of variable definitions
        https://bugs.webkit.org/show_bug.cgi?id=193793
        <rdar://problem/47532439>

        Reviewed by Alex Christensen.

        XCBuild changes the way xcconfig variables are evaluated. In short,
        all config file assignments are now considered in part of the
        evaluation. When using the new build system and an .xcconfig file
        contains multiple assignments of the same build setting:

        - Later assignments using $(inherited) will inherit from earlier
          assignments in the xcconfig file.
        - Later assignments not using $(inherited) will take precedence over
          earlier assignments. An assignment to a more general setting will
          mask an earlier assignment to a less general setting. For example,
          an assignment without a condition ('FOO = bar') will completely mask
          an earlier assignment with a condition ('FOO[sdk=macos*] = quux').

        This affects some of our .xcconfig files, in that sometimes platform-
        or sdk-specific definitions appear before the general definitions.
        Under the new evaluations rules, the general definitions alway take
        effect because they always overwrite the more-specific definitions. The
        solution is to swap the order, so that the general definitions are
        established first, and then conditionally overwritten by the
        more-specific definitions.

        * Configurations/Version.xcconfig:
        * Configurations/WebKitLegacy.xcconfig:

2019-01-25  David Kilzer  <ddkilzer@apple.com>

        Move soft-linking of Lookup.framework out of LookupSPI.h
        <https://webkit.org/b/193815>

        Reviewed by Tim Horton.

        * WebView/WebImmediateActionController.mm:
        (-[WebImmediateActionController _animationControllerForText]):
        * WebView/WebView.mm:
        (-[WebView _prepareForDictionaryLookup]):
        - Move soft-linking to LookupSoftLink.{h,mm}.

2019-01-25  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] Rename some WebKit-internal functions and variables that reference "data interaction"
        https://bugs.webkit.org/show_bug.cgi?id=193829

        Reviewed by Tim Horton.

        * WebCoreSupport/WebDragClient.mm:
        (WebDragClient::didConcludeEditDrag):
        * WebView/WebView.mm:
        (-[WebView _requestStartDataInteraction:globalPosition:]):
        (-[WebView _didConcludeEditDrag]):
        (-[WebView _didConcludeEditDataInteraction]): Deleted.
        * WebView/WebViewInternal.h:

2019-01-24  John Wilander  <wilander@apple.com>

        Add Ad Click Attribution as an internal/experimental feature
        https://bugs.webkit.org/show_bug.cgi?id=193685
        <rdar://problem/47450399>

        Reviewed by Brent Fulgham.

        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):
        (-[WebPreferences adClickAttributionEnabled]):
        (-[WebPreferences setAdClickAttributionEnabled:]):
            Added support for experimental ad click attribution.
        * WebView/WebPreferencesPrivate.h:
        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]):

2019-01-24  Ross Kirsling  <ross.kirsling@sony.com>

        Move FileSystem to WTF
        https://bugs.webkit.org/show_bug.cgi?id=193602

        Reviewed by Yusuke Suzuki.

        * Misc/WebNSFileManagerExtras.mm:
        * Storage/WebDatabaseProvider.mm:
        * WebView/WebView.mm:

2019-01-23  Conrad Shultz  <conrad_shultz@apple.com>

        Fix the Apple Internal build. See <rdar://problem/47491383>.

        Rubber-stamped by Tim Horton.

        * WebCoreSupport/WebFrameLoaderClient.mm:

2019-01-22  Conrad Shultz  <conrad_shultz@apple.com>

        Clean up USE(WEB_THREAD)
        https://bugs.webkit.org/show_bug.cgi?id=193698

        Rubber-stamped by Tim Horton.

        * Misc/WebCache.mm:
        (+[WebCache emptyInMemoryResources]):
        * WebCoreSupport/WebFrameLoaderClient.mm:
        (-[WebFramePolicyListener use]):
        * WebCoreSupport/WebGeolocationClient.mm:
        (-[WebGeolocationPolicyListener allow]):
        (-[WebGeolocationPolicyListener deny]):
        (-[WebGeolocationPolicyListener denyOnlyThisRequest]):
        * WebView/WebFrame.mm:
        (-[WebFrame deviceOrientationChanged]):
        * WebView/WebHTMLView.mm:
        (hardwareKeyboardAvailabilityChangedCallback):
        * WebView/WebView.mm:
        (+[WebView _releaseMemoryNow]):
        (+[WebView willEnterBackgroundWithCompletionHandler:]):
        (-[WebView updateLayoutIgnorePendingStyleSheets]):
        (-[WebView _dispatchUnloadEvent]):
        (-[WebView _close]):
        (-[WebView _preferencesChangedNotification:]):
        (-[WebView _setCustomFixedPositionLayoutRectInWebThread:synchronize:]):
        (-[WebView goBack]):
        (-[WebView goForward]):
        (+[WebView _cacheModelChangedNotification:]):
        (-[WebView stopLoading:]):
        (-[WebView stopLoadingAndClear]):
        (-[WebView reload:]):
        (WebInstallMemoryPressureHandler):

2019-01-23  Wenson Hsieh  <wenson_hsieh@apple.com>

        Introduce UndoStep::label() and adopt it in WebKitLegacy and WebKit
        https://bugs.webkit.org/show_bug.cgi?id=193706
        <rdar://problem/44807048>

        Reviewed by Ryosuke Niwa.

        Use UndoStep::label().

        * WebCoreSupport/WebEditorClient.h:
        * WebCoreSupport/WebEditorClient.mm:
        (-[WebUndoStep initWithUndoStep:]):
        (+[WebUndoStep stepWithUndoStep:]):
        (WebEditorClient::registerUndoOrRedoStep):
        (WebEditorClient::registerUndoStep):
        (WebEditorClient::registerRedoStep):

2019-01-22  Alex Christensen  <achristensen@webkit.org>

        Move NetworkStorageSession ownership to NetworkProcess
        https://bugs.webkit.org/show_bug.cgi?id=193580

        Reviewed by Geoff Garen.

        * Misc/WebCache.mm:
        (+[WebCache clearCachedCredentials]):
        * Misc/WebDownload.mm:
        (-[WebDownloadInternal download:didReceiveAuthenticationChallenge:]):
        * Plugins/WebBaseNetscapePluginView.mm:
        (WebKit::getAuthenticationInfo):
        * WebCoreSupport/WebFrameNetworkingContext.mm:
        (WebFrameNetworkingContext::ensurePrivateBrowsingSession):
        (WebFrameNetworkingContext::destroyPrivateBrowsingSession):
        (WebFrameNetworkingContext::storageSession const):
        * WebView/WebPreferences.mm:
        (+[WebPreferences _switchNetworkLoaderToNewTestingSession]):
        (+[WebPreferences _clearNetworkLoaderSession]):
        (+[WebPreferences _setCurrentNetworkLoaderSessionCookieAcceptPolicy:]):

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

        [iOS] Interpret text key commands on keydown and app key commands on keypress
        https://bugs.webkit.org/show_bug.cgi?id=192897
        <rdar://problem/46857378>

        Reviewed by Brent Fulgham.

        Adopt SPI to interpret text key commands and app key commands independently on keydown (isCharEvent
        is false) and keypress (isCharEvent is true), respectively.

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

2019-01-22  Oriol Brufau  <obrufau@igalia.com>

        [css-logical] Implement flow-relative margin, padding and border shorthands
        https://bugs.webkit.org/show_bug.cgi?id=188697

        Reviewed by Simon Fraser and Antti Koivisto.

        Add CSSLogicalEnabled runtime flag.

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

2019-01-15  Darin Adler  <darin@apple.com>

        Use references rather than pointers for register/unregister functions, and more
        https://bugs.webkit.org/show_bug.cgi?id=175028

        Reviewed by Daniel Bates.

        * WebCoreSupport/WebKitFullScreenListener.mm:
        (-[WebKitFullScreenListener webkitWillEnterFullScreen]): Update for change to the
        functions in Document; pass a reference.
        (-[WebKitFullScreenListener webkitDidEnterFullScreen]): Ditto, don't pass the element.
        (-[WebKitFullScreenListener webkitWillExitFullScreen]): Ditto.
        (-[WebKitFullScreenListener webkitDidExitFullScreen]): Ditto.
        * WebView/WebFullScreenController.mm:
        (-[WebFullScreenController enterFullScreen:]): Ditto.
        (-[WebFullScreenController finishedEnterFullScreenAnimation:]): Ditto.
        (-[WebFullScreenController exitFullScreen]): Ditto.
        (-[WebFullScreenController finishedExitFullScreenAnimation:]): Ditto.
        * WebView/WebFullScreenController.mm:
        (-[WebView _commonInitializationWithFrameName:groupName:]): Pass a reference.

2019-01-12  Dan Bernstein  <mitz@apple.com>

        [Cocoa] Avoid importing directly from subumbrella frameworks
        https://bugs.webkit.org/show_bug.cgi?id=186016
        <rdar://problem/40591038>

        Reviewed by Sam Weinig.

        * Carbon/CarbonWindowAdapter.h: Import Carbon.h instead of HIToolbox headers.
        * Carbon/CarbonWindowAdapter.mm: Ditto.
        * Carbon/CarbonWindowFrame.m: Ditto.
        * Carbon/HIViewAdapter.h: Ditto.
        * Configurations/WebKitLegacy.xcconfig: Removed -iframework options from
          OTHER_CFLAGS_COCOA_TOUCH_NO.
        * Plugins/WebNetscapePluginEventHandlerCarbon.mm: Import Carbon.h instead of CarbonEvents.h.
        * WebView/WebPDFDocumentExtras.mm: Import Quartz.h instead of a PDFKit header.
        * WebView/WebPDFView.h: Ditto.

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

        Add a POINTER_EVENTS feature flag
        https://bugs.webkit.org/show_bug.cgi?id=193577
        <rdar://problem/47408511>

        Unreviewed. Also enable Pointer Events for iosmac.

        * Configurations/FeatureDefines.xcconfig:

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

        Add a POINTER_EVENTS feature flag
        https://bugs.webkit.org/show_bug.cgi?id=193577

        Reviewed by Dean Jackson.

        * Configurations/FeatureDefines.xcconfig:

2019-01-18  Eric Carlson  <eric.carlson@apple.com>

        Revert r238815, it broke WK1 video fullscreen on Mac
        https://bugs.webkit.org/show_bug.cgi?id=193586
        <rdar://problem/47358941>

        Reviewed by Jer Noble.

        * WebView/WebVideoFullscreenController.h: Added.
        * WebView/WebVideoFullscreenController.mm: Added.
        (SOFT_LINK_CLASS):
        (-[WebVideoFullscreenController init]):
        (-[WebVideoFullscreenController dealloc]):
        (-[WebVideoFullscreenController fullscreenWindow]):
        (-[WebVideoFullscreenController windowDidLoad]):
        (-[WebVideoFullscreenController videoElement]):
        (-[WebVideoFullscreenController setVideoElement:]):
        (-[WebVideoFullscreenController clearFadeAnimation]):
        (-[WebVideoFullscreenController windowDidExitFullscreen]):
        (-[WebVideoFullscreenController windowDidEnterFullscreen]):
        (-[WebVideoFullscreenController videoElementRect]):
        (-[WebVideoFullscreenController applicationDidResignActive:]):
        (frameExpandedToRatioOfFrame):
        (createBackgroundFullscreenWindow):
        (-[WebVideoFullscreenController setupFadeAnimationIfNeededAndFadeIn:]):
        (-[WebVideoFullscreenController enterFullscreen:]):
        (-[WebVideoFullscreenController exitFullscreen]):
        (-[WebVideoFullscreenController applicationDidChangeScreenParameters:]):
        (-[WebVideoFullscreenController updateMenuAndDockForFullscreen]):
        (-[WebVideoFullscreenController _requestExit]):
        (-[WebVideoFullscreenController requestExitFullscreenWithAnimation:]):
        (-[WebVideoFullscreenController requestExitFullscreen]):
        (-[WebVideoFullscreenController fadeHUDIn]):
        (-[WebVideoFullscreenController observeValueForKeyPath:ofObject:change:context:]):
        (-[WebVideoFullscreenController rateChanged:]):
        (-[WebVideoFullscreenWindow initWithContentRect:styleMask:backing:defer:]):
        (-[WebVideoFullscreenWindow dealloc]):
        (-[WebVideoFullscreenWindow resignFirstResponder]):
        (-[WebVideoFullscreenWindow canBecomeKeyWindow]):
        (-[WebVideoFullscreenWindow mouseDown:]):
        (-[WebVideoFullscreenWindow cancelOperation:]):
        (-[WebVideoFullscreenWindow animatedResizeDidEnd]):
        (-[WebVideoFullscreenWindow animateFromRect:toRect:withSubAnimation:controllerAction:]):
        (-[WebVideoFullscreenWindow animationDidEnd:]):
        (-[WebVideoFullscreenWindow mouseMoved:]):
        * WebView/WebVideoFullscreenHUDWindowController.h: Added.
        * WebView/WebVideoFullscreenHUDWindowController.mm: Added.
        (-[WebVideoFullscreenHUDWindow initWithContentRect:styleMask:backing:defer:]):
        (-[WebVideoFullscreenHUDWindow canBecomeKeyWindow]):
        (-[WebVideoFullscreenHUDWindow cancelOperation:]):
        (-[WebVideoFullscreenHUDWindow center]):
        (-[WebVideoFullscreenHUDWindow keyDown:]):
        (-[WebVideoFullscreenHUDWindow resignFirstResponder]):
        (-[WebVideoFullscreenHUDWindow performKeyEquivalent:]):
        (-[WebVideoFullscreenHUDWindowController init]):
        (-[WebVideoFullscreenHUDWindowController dealloc]):
        (-[WebVideoFullscreenHUDWindowController setArea:]):
        (-[WebVideoFullscreenHUDWindowController keyDown:]):
        (-[WebVideoFullscreenHUDWindowController delegate]):
        (-[WebVideoFullscreenHUDWindowController setDelegate:]):
        (-[WebVideoFullscreenHUDWindowController scheduleTimeUpdate]):
        (-[WebVideoFullscreenHUDWindowController unscheduleTimeUpdate]):
        (-[WebVideoFullscreenHUDWindowController fadeWindowIn]):
        (-[WebVideoFullscreenHUDWindowController fadeWindowOut]):
        (-[WebVideoFullscreenHUDWindowController closeWindow]):
        (createMediaUIControl):
        (createControlWithMediaUIControlType):
        (createTimeTextField):
        (createMediaUIBackgroundView):
        (-[WebVideoFullscreenHUDWindowController windowDidLoad]):
        (-[WebVideoFullscreenHUDWindowController updateVolume]):
        (-[WebVideoFullscreenHUDWindowController updateTime]):
        (-[WebVideoFullscreenHUDWindowController endScrubbing]):
        (-[WebVideoFullscreenHUDWindowController timelinePositionChanged:]):
        (-[WebVideoFullscreenHUDWindowController currentTime]):
        (-[WebVideoFullscreenHUDWindowController setCurrentTime:]):
        (-[WebVideoFullscreenHUDWindowController duration]):
        (-[WebVideoFullscreenHUDWindowController maxVolume]):
        (-[WebVideoFullscreenHUDWindowController volumeChanged:]):
        (-[WebVideoFullscreenHUDWindowController setVolumeToZero:]):
        (-[WebVideoFullscreenHUDWindowController setVolumeToMaximum:]):
        (-[WebVideoFullscreenHUDWindowController decrementVolume]):
        (-[WebVideoFullscreenHUDWindowController incrementVolume]):
        (-[WebVideoFullscreenHUDWindowController volume]):
        (-[WebVideoFullscreenHUDWindowController setVolume:]):
        (-[WebVideoFullscreenHUDWindowController updatePlayButton]):
        (-[WebVideoFullscreenHUDWindowController updateRate]):
        (-[WebVideoFullscreenHUDWindowController togglePlaying:]):
        (-[WebVideoFullscreenHUDWindowController playing]):
        (-[WebVideoFullscreenHUDWindowController setPlaying:]):
        (timeToString):
        (-[WebVideoFullscreenHUDWindowController remainingTimeText]):
        (-[WebVideoFullscreenHUDWindowController elapsedTimeText]):
        (-[WebVideoFullscreenHUDWindowController mouseEntered:]):
        (-[WebVideoFullscreenHUDWindowController mouseExited:]):
        (-[WebVideoFullscreenHUDWindowController rewind:]):
        (-[WebVideoFullscreenHUDWindowController fastForward:]):
        (-[WebVideoFullscreenHUDWindowController exitFullscreen:]):
        (-[WebVideoFullscreenHUDWindowController windowDidExpose:]):
        (-[WebVideoFullscreenHUDWindowController windowDidClose:]):
        * WebView/WebView.mm:
        (-[WebView _enterVideoFullscreenForVideoElement:mode:]):
        (-[WebView _exitVideoFullscreen]):

2019-01-18  Tim Horton  <timothy_horton@apple.com>

        Get rid of ADVANCED_SPELL_CHECKING
        https://bugs.webkit.org/show_bug.cgi?id=193592

        Reviewed by Wenson Hsieh.

        * WebCoreSupport/WebEditorClient.mm:
        (insertionPointFromCurrentSelection):
        (WebEditorClient::checkTextOfParagraph):
        (WebEditorClient::getGuessesForWord):
        (WebEditorClient::requestCandidatesForSelection):
        (WebEditorClient::requestCheckingOfString):
        * WebView/WebHTMLView.mm:
        (-[WebHTMLView insertText:]):

2019-01-18  Jer Noble  <jer.noble@apple.com>

        SDK_VARIANT build destinations should be separate from non-SDK_VARIANT builds
        https://bugs.webkit.org/show_bug.cgi?id=189553

        Reviewed by Tim Horton.

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

2019-01-18  David Kilzer  <ddkilzer@apple.com>

        Switch remaining UIKit soft-linking in WebCore, WebKitLegacy over to UIKitSoftLink.{cpp,h}
        <https://webkit.org/b/193568>
        <rdar://problem/47381130>

        Reviewed by Alex Christensen.

        * WebView/WebView.mm:
        - Remove unused soft-linking macros.
        (-[WebUITextIndicatorData initWithImage:textIndicatorData:scale:]):
        (-[WebUITextIndicatorData initWithImage:scale:]):
        - Update to use exported PAL functions.

2019-01-17  Truitt Savell  <tsavell@apple.com>

        Unreviewed, rolling out r240124.

        This commit broke an internal build.

        Reverted changeset:

        "SDK_VARIANT build destinations should be separate from non-
        SDK_VARIANT builds"
        https://bugs.webkit.org/show_bug.cgi?id=189553
        https://trac.webkit.org/changeset/240124

2019-01-17  Jer Noble  <jer.noble@apple.com>

        SDK_VARIANT build destinations should be separate from non-SDK_VARIANT builds
        https://bugs.webkit.org/show_bug.cgi?id=189553

        Reviewed by Tim Horton.

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

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

        Stop using NetworkStorageSession::storageSession in WebCore
        https://bugs.webkit.org/show_bug.cgi?id=193529

        Reviewed by Tim Horton.

        * Misc/WebCache.mm:
        (+[WebCache addImageToCache:forURL:forFrame:]):
        * WebView/WebView.mm:
        (-[WebView _commonInitializationWithFrameName:groupName:]):
        (-[WebView initSimpleHTMLDocumentWithStyle:frame:preferences:groupName:]):

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

        Reduce use of NetworkStorageSession::defaultStorageSession in WebCore
        https://bugs.webkit.org/show_bug.cgi?id=193368

        Reviewed by Geoff Garen.

        * Misc/WebCache.mm:
        (+[WebCache clearCachedCredentials]):
        * Misc/WebDownload.mm:
        (-[WebDownloadInternal download:didReceiveAuthenticationChallenge:]):
        * Plugins/WebBaseNetscapePluginView.mm:
        (WebKit::getAuthenticationInfo):

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

        Stop using CookiesStrategy
        https://bugs.webkit.org/show_bug.cgi?id=161106

        Reviewed by Don Olmstead and Antti Koivisto.

        * Misc/WebCache.mm:
        (+[WebCache addImageToCache:forURL:forFrame:]):
        * Plugins/Hosted/NetscapePluginInstanceProxy.mm:
        (WebKit::NetscapePluginInstanceProxy::getCookies):
        (WebKit::NetscapePluginInstanceProxy::setCookies):
        * Plugins/WebNetscapePluginView.mm:
        (-[WebNetscapePluginView getVariable:forURL:value:length:]):
        (-[WebNetscapePluginView setVariable:forURL:value:length:]):
        * WebCoreSupport/WebPlatformStrategies.h:
        * WebCoreSupport/WebPlatformStrategies.mm:
        (WebPlatformStrategies::createCookiesStrategy): Deleted.
        (WebPlatformStrategies::cookiesForDOM): Deleted.
        (WebPlatformStrategies::setCookiesFromDOM): Deleted.
        (WebPlatformStrategies::cookiesEnabled): Deleted.
        (WebPlatformStrategies::cookieRequestHeaderFieldValue): Deleted.
        (WebPlatformStrategies::getRawCookies): Deleted.
        (WebPlatformStrategies::deleteCookie): Deleted.
        * WebView/WebView.mm:
        (-[WebView _commonInitializationWithFrameName:groupName:]):
        (-[WebView initSimpleHTMLDocumentWithStyle:frame:preferences:groupName:]):

2019-01-15  Tim Horton  <timothy_horton@apple.com>

        Cannot tab out of WKWebView on macOS
        https://bugs.webkit.org/show_bug.cgi?id=161448
        <rdar://problem/28100085>

        Reviewed by Dean Jackson.

        * WebCoreSupport/WebChromeClient.mm:
        * WebView/WebView.mm:
        Make use of SPI headers.

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

        Unreviewed, rolling out r239901, r239909, r239910, r239912,
        r239913, and r239914.
        https://bugs.webkit.org/show_bug.cgi?id=193407

        These revisions caused an internal failure (Requested by
        Truitt on #webkit).

        Reverted changesets:

        "[Cocoa] Avoid importing directly from subumbrella frameworks"
        https://bugs.webkit.org/show_bug.cgi?id=186016
        https://trac.webkit.org/changeset/239901

        "Tried to fix USE(APPLE_INTERNAL_SDK) builds after r239901."
        https://trac.webkit.org/changeset/239909

        "Tried to fix the build."
        https://trac.webkit.org/changeset/239910

        "Fixed iOS builds after r239910."
        https://trac.webkit.org/changeset/239912

        "More build fixing."
        https://trac.webkit.org/changeset/239913

        "Tried to fix USE(APPLE_INTERNAL_SDK) 32-bit builds."
        https://trac.webkit.org/changeset/239914

2019-01-14  Mark Lam  <mark.lam@apple.com>

        Re-enable ability to build --cloop builds.
        https://bugs.webkit.org/show_bug.cgi?id=192955
        <rdar://problem/46882363>

        Reviewed by Saam barati and Keith Miller.

        * Configurations/FeatureDefines.xcconfig:

2019-01-13  Dan Bernstein  <mitz@apple.com>

        Tried to fix USE(APPLE_INTERNAL_SDK) builds after r239901.

        Patch by Keith Rollin.

        * WebView/PDFViewSPI.h:

2019-01-12  Timothy Hatcher  <timothy@apple.com>

        Have prefers-color-scheme: light always match on macOS versions before Mojave.
        https://bugs.webkit.org/show_bug.cgi?id=191655
        rdar://problem/46074680

        Reviewed by Megan Gardner.

        * Configurations/FeatureDefines.xcconfig: ENABLE_DARK_MODE_CSS_macosx for all OS versions.
        * WebView/WebView.mm:
        (-[WebView _effectiveAppearanceIsDark]):

2019-01-12  Dan Bernstein  <mitz@apple.com>

        [Cocoa] Avoid importing directly from subumbrella frameworks
        https://bugs.webkit.org/show_bug.cgi?id=186016
        <rdar://problem/40591038>

        Reviewed by Sam Weinig.

        * Carbon/CarbonWindowAdapter.h: Import Carbon.h instead of HIToolbox headers.
        * Carbon/CarbonWindowAdapter.mm: Ditto.
        * Carbon/CarbonWindowFrame.m: Ditto.
        * Carbon/HIViewAdapter.h: Ditto.
        * Configurations/WebKitLegacy.xcconfig: Removed -iframework options from
          OTHER_CFLAGS_COCOA_TOUCH_NO.
        * Plugins/WebNetscapePluginEventHandlerCarbon.mm: Import Carbon.h instead of CarbonEvents.h.
        * WebView/WebPDFDocumentExtras.mm: Import Quartz.h instead of a PDFKit header.
        * WebView/WebPDFView.h: Ditto.

2019-01-11  Ryosuke Niwa  <rniwa@webkit.org>

        Enable visual viewport API by default
        https://bugs.webkit.org/show_bug.cgi?id=193376

        Reviewed by Simon Fraser.

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

2019-01-11  John Wilander  <wilander@apple.com>

        Compile out Web API Statistics Collection
        https://bugs.webkit.org/show_bug.cgi?id=193370
        <rdar://problem/45388584>

        Reviewed by Brent Fulgham.

        * Configurations/FeatureDefines.xcconfig:
            Defined ENABLE_WEB_API_STATISTICS, off by default.

2019-01-08  Alex Christensen  <achristensen@webkit.org>

        Stop using NetworkStorageSession in WebProcess
        https://bugs.webkit.org/show_bug.cgi?id=193236

        Reviewed by Don Olmstead.

        * WebCoreSupport/WebFrameNetworkingContext.h:
        * WebCoreSupport/WebFrameNetworkingContext.mm:
        (WebFrameNetworkingContext::storageSession const):
        * WebCoreSupport/WebPlatformStrategies.h:
        * WebCoreSupport/WebPlatformStrategies.mm:
        (WebPlatformStrategies::cookiesForDOM):
        (WebPlatformStrategies::setCookiesFromDOM):
        (WebPlatformStrategies::cookiesEnabled):
        (WebPlatformStrategies::cookieRequestHeaderFieldValue):
        (WebPlatformStrategies::getRawCookies):
        (WebPlatformStrategies::deleteCookie):
        * WebView/WebView.mm:
        (-[WebView _cachedResponseForURL:]):
        (-[WebView _clearCredentials]):

2019-01-08  Alex Christensen  <achristensen@webkit.org>

        Unreviewed, rolling out r239727.

        Broke API tests

        Reverted changeset:

        "Stop using NetworkStorageSession in WebProcess"
        https://bugs.webkit.org/show_bug.cgi?id=193236
        https://trac.webkit.org/changeset/239727

2019-01-08  Alex Christensen  <achristensen@webkit.org>

        Stop using NetworkStorageSession in WebProcess
        https://bugs.webkit.org/show_bug.cgi?id=193236

        Reviewed by Don Olmstead.

        * WebCoreSupport/WebFrameNetworkingContext.h:
        * WebCoreSupport/WebFrameNetworkingContext.mm:
        (WebFrameNetworkingContext::storageSession const):
        * WebView/WebView.mm:
        (-[WebView _cachedResponseForURL:]):
        (-[WebView _clearCredentials]):

2019-01-07  David Kilzer  <ddkilzer@apple.com>

        Prefer RetainPtr<NSObject> to RetainPtr<NSObject *>
        <https://webkit.org/b/193056>

        Reviewed by Alex Christensen.

        * Plugins/Hosted/NetscapePluginHostProxy.h:
        * Plugins/Hosted/NetscapePluginInstanceProxy.h:
        * Plugins/Hosted/NetscapePluginInstanceProxy.mm:
        (WebKit::NetscapePluginInstanceProxy::enumerate):
        (WebKit::NetscapePluginInstanceProxy::marshalValue):
        (WebKit::NetscapePluginInstanceProxy::marshalValues):
        (WebKit::NetscapePluginInstanceProxy::demarshalValue):
        (WebKit::NetscapePluginInstanceProxy::demarshalValues):
        * Plugins/Hosted/ProxyInstance.mm:
        (WebKit::ProxyInstance::invoke):
        * WebCoreSupport/WebGeolocationClient.mm:
        * WebView/WebDataSource.mm:
        (-[WebDataSource _receivedData:]):
        * WebView/WebView.mm:
        (-[WebView _cachedResponseForURL:]):
        - Remove '*' from RetainPtr<> type.

2019-01-04  Alex Christensen  <achristensen@webkit.org>

        Progress towards fixing Mac CMake build
        https://bugs.webkit.org/show_bug.cgi?id=193105

        Reviewed by Don Olmstead.

        * WebKitPrefix.h:

2019-01-04  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Use save sheet instead of dialog where possible
        https://bugs.webkit.org/show_bug.cgi?id=193160
        <rdar://problem/37399759>

        Reviewed by Devin Rousso.

        * WebCoreSupport/WebInspectorClient.mm:
        (WebInspectorFrontendClient::save):

2019-01-04  Wenson Hsieh  <wenson_hsieh@apple.com>

        [Cocoa] Merge WebEditCommandProxy::nameForEditAction and undoNameForEditAction into a single function
        https://bugs.webkit.org/show_bug.cgi?id=193129

        Reviewed by Tim Horton.

        Remove undoNameForEditAction and use WebCore::nameForUndoRedo instead.

        * WebCoreSupport/WebEditorClient.mm:
        (WebEditorClient::registerUndoOrRedoStep):
        (undoNameForEditAction): Deleted.

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

        Add support for using the current text selection as the find string on iOS
        https://bugs.webkit.org/show_bug.cgi?id=193034
        <rdar://problem/45138739>

        Reviewed by Tim Horton.

        Add a method stub for WebKitLegacy.

        * WebCoreSupport/WebEditorClient.h:

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

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

        Reviewed by Mark Lam.

        * Info.plist:

2018-12-20  Yusuke Suzuki  <yusukesuzuki@slowstart.org>

        Use Ref<> as much as possible
        https://bugs.webkit.org/show_bug.cgi?id=192808

        Reviewed by Alex Christensen.

        * DOM/DOM.mm:
        (-[DOMNode getPreviewSnapshotImage:andRects:]):
        * Plugins/Hosted/NetscapePluginHostManager.mm:
        (WebKit::NetscapePluginHostManager::instantiatePlugin):
        * Plugins/Hosted/NetscapePluginInstanceProxy.mm:
        (WebKit::NetscapePluginInstanceProxy::evaluateJavaScript):
        (WebKit::NetscapePluginInstanceProxy::loadRequest):
        * Plugins/WebNetscapePluginView.mm:
        (-[WebNetscapePluginView evaluateJavaScriptPluginRequest:]):
        (-[WebNetscapePluginView loadRequest:inTarget:withNotifyData:sendNotification:]):
        * WebCoreSupport/WebContextMenuClient.mm:
        (WebContextMenuClient::imageForCurrentSharingServicePickerItem):
        * WebCoreSupport/WebFrameLoaderClient.mm:
        (WebFrameLoaderClient::transitionToCommittedForNewPage):
        * WebView/WebFrame.mm:
        (-[WebFrame getDictationResultRanges:andMetadatas:]):
        * WebView/WebHTMLView.mm:
        (-[WebHTMLView _writeSelectionWithPasteboardTypes:toPasteboard:cachedAttributedString:]):
        * WebView/WebView.mm:
        (+[WebView _addUserScriptToGroup:world:source:url:whitelist:blacklist:injectionTime:injectedFrames:]):
        (+[WebView _addUserStyleSheetToGroup:world:source:url:whitelist:blacklist:injectedFrames:]):

2018-12-21  Benjamin Poulain  <benjamin@webkit.org>

        <rdar://problem/46194315> macOS: WebKit1 does not handle occlusion changes
        https://bugs.webkit.org/show_bug.cgi?id=192821

        Reviewed by Chris Dumez.

        When a window becomes occluded, the window server informs the application.
        This should be used to suspend any work that is not visible by the user.

        WebKit2 handles it just fine, but WebKit1 did not handle the notification.
        In some cases, that lead to performance impact (see radar).

        This patch adds an observer for the occlusion notification. I tried to stick
        with the same names used by WebKit2.

        * WebView/WebView.mm:
        (-[WebView _isViewVisible]):
        (-[WebView addWindowObserversForWindow:]):
        (-[WebView removeWindowObservers]):
        (-[WebView _windowDidChangeOcclusionState:]):

2018-12-20  Jiewen Tan  <jiewen_tan@apple.com>

        [WebAuthN] Add a runtime flag for local authenticator
        https://bugs.webkit.org/show_bug.cgi?id=192792
        <rdar://problem/46798738>

        Reviewed by Brent Fulgham.

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

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

        Use Optional::valueOr() instead of Optional::value_or()
        https://bugs.webkit.org/show_bug.cgi?id=192933

        Reviewed by Geoffrey Garen.

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

2018-12-20  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r239417.

        Introduced two API test failures on macOS.

        Reverted changeset:

        "<rdar://problem/46194315> macOS: WebKit1 does not handle
        occlusion changes"
        https://bugs.webkit.org/show_bug.cgi?id=192821
        https://trac.webkit.org/changeset/239417

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

        WKWebView default UA doesn't freeze the build number
        https://bugs.webkit.org/show_bug.cgi?id=192809
        <rdar://problem/44687185>

        Reviewed by Andy Estes.

        Always reports the frozen build number.

        * WebView/WebView.mm:
        (-[WebView _setBrowserUserAgentProductVersion:buildVersion:bundleVersion:]): Do not report the
        actual build number through this method call.
        (-[WebView _setUIWebViewUserAgentWithBuildVersion:]): Ditto.

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

        wtf/Optional.h: move-constructor and move-assignment operator should disengage the value being moved from
        https://bugs.webkit.org/show_bug.cgi?id=192728
        <rdar://problem/46746779>

        Reviewed by Geoff Garen.

        * DOM/*:
        * Plugins/*:
        * WebCoreSupport/*:
        * WebView/*:

2018-12-19  Benjamin Poulain  <benjamin@webkit.org>

        <rdar://problem/46194315> macOS: WebKit1 does not handle occlusion changes
        https://bugs.webkit.org/show_bug.cgi?id=192821

        Reviewed by Chris Dumez.

        When a window becomes occluded, the window server informs the application.
        This should be used to suspend any work that is not visible by the user.

        WebKit2 handles it just fine, but WebKit1 did not handle the notification.
        In some cases, that lead to performance impact (see radar).

        This patch adds an observer for the occlusion notification. I tried to stick
        with the same names used by WebKit2.

        * WebView/WebView.mm:
        (-[WebView _isViewVisible]):
        (-[WebView addWindowObserversForWindow:]):
        (-[WebView removeWindowObservers]):
        (-[WebView _windowDidChangeOcclusionState:]):

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

        Allow clients to set the navigator platform
        https://bugs.webkit.org/show_bug.cgi?id=192735

        Reviewed by Tim Horton.

        Add stubs to fill out the added functionality in FrameLoaderClient.

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

2018-12-17  Ryosuke Niwa  <rniwa@webkit.org>

        offsetLeft and offsetParent should adjust across shadow boundaries
        https://bugs.webkit.org/show_bug.cgi?id=157437
        <rdar://problem/26154021>

        Reviewed by Simon Fraser.

        Use *forBindings variants of offsetLeft, offsetTop, and offsetParent.

        * DOM/DOMElement.mm:
        (-[DOMElement offsetLeft]):
        (-[DOMElement offsetTop]):
        (-[DOMElement offsetParent]):

2018-12-17  Zalan Bujtas  <zalan@apple.com>

        Unreviewed build fix.

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

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

        Use warning-ignoring macros more consistently and simply
        https://bugs.webkit.org/show_bug.cgi?id=192743

        Reviewed by Mark Lam.

        * DOM/DOM.mm: Use IGNORE_WARNINGS_BEGIN/END instead of
        IGNORE_CLANG_WARNINGS_BEGIN since there is no need to accomodate non-clang
        compilers in Objective-C++ code.

        * WebCoreSupport/WebAlternativeTextClient.h: Use IGNORE_WARNINGS_BEGIN/END
        instead of IGNORE_CLANG_WARNINGS_BEGIN/END because there is no need to
        accomodate non-clang compilers here. Also use #pragma once, add a missing
        "explicit" and fix conditionals.

2018-12-12  Ryosuke Niwa  <rniwa@webkit.org>

        Make TextInputController.legacyAttributedString take DOM nodes and offsets
        https://bugs.webkit.org/show_bug.cgi?id=192653

        Reviewed by Wenson Hsieh.

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

2018-12-11  Justin Michaud  <justin_michaud@apple.com>

        Implement feature flag for CSS Typed OM
        https://bugs.webkit.org/show_bug.cgi?id=192610

        Reviewed by Ryosuke Niwa.

        * Configurations/FeatureDefines.xcconfig:

2018-12-11  Tim Horton  <timothy_horton@apple.com>

        WebCore shouldn't have a Objective-C class named NSCursor
        https://bugs.webkit.org/show_bug.cgi?id=192602
        <rdar://problem/46615532>

        Reviewed by Wenson Hsieh.

        * WebView/WebFrameView.mm:
        (-[WebFrameView keyDown:keyDown:]):
        * WebView/WebHTMLView.mm:
        (-[WebHTMLView keyDown:]):
        (-[WebHTMLView performKeyEquivalent:]):
        Only use NSCursor on macOS.

2018-12-10  Don Olmstead  <don.olmstead@sony.com>

        Move ENABLE_RESOURCE_LOAD_STATISTICS to FeatureDefines.xcconfig
        https://bugs.webkit.org/show_bug.cgi?id=192573

        Reviewed by Simon Fraser.

        * Configurations/FeatureDefines.xcconfig:

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

        Rename "forced style recalc" to "full style rebuild"
        https://bugs.webkit.org/show_bug.cgi?id=192572

        Reviewed by Zalan Bujtas.

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

2018-12-10  Darin Adler  <darin@apple.com>

        [macOS] MSHCreateMIGServerSource invocation does not handle send/receive rights correctly
        https://bugs.webkit.org/show_bug.cgi?id=192533
        rdar://problem/45732710

        Reviewed by Anders Carlsson.

        * Plugins/Hosted/NetscapePluginHostProxy.mm:
        (WebKit::NetscapePluginHostProxy::NetscapePluginHostProxy): Pass kMSHDoNotCreateSendRightOption.

2018-12-10  Darin Adler  <darin@apple.com>

        [macOS] Use mach_port_mod_refs instead of mach_port_destroy
        https://bugs.webkit.org/show_bug.cgi?id=192532
        rdar://problem/45731047

        Reviewed by Chris Dumez.

        * Plugins/Hosted/NetscapePluginHostManager.mm:
        (WebKit::NetscapePluginHostManager::hostForPlugin): Use mach_port_mod_refs.
        * Plugins/Hosted/NetscapePluginHostProxy.mm:
        (WebKit::NetscapePluginHostProxy::~NetscapePluginHostProxy): Ditto.

2018-12-05  Wenson Hsieh  <wenson_hsieh@apple.com>

        Turn WritingDirection into an enum class
        https://bugs.webkit.org/show_bug.cgi?id=192401
        Work towards <rdar://problem/42075638>

        Reviewed by Dan Bernstein.

        Change WritingDirection from an enum to an enum class. No change in behavior.

        * WebView/WebHTMLView.mm:
        (-[WebHTMLView toggleBaseWritingDirection:]):
        (-[WebHTMLView changeBaseWritingDirection:]):
        (-[WebHTMLView _changeBaseWritingDirectionTo:]):

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

        Add WKWebProcessPlugInLoadDelegate SPI willStartProvisionalLoadForFrame with a completion handler
        https://bugs.webkit.org/show_bug.cgi?id=192272

        Reviewed by Brady Eidson.

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

2018-12-03  Jer Noble  <jer.noble@apple.com>

        Get rid of old, dead Mac video fullscreen code.
        https://bugs.webkit.org/show_bug.cgi?id=192315

        Reviewed by Eric Carlson.

        The Mac-only WebVideoFullscreenController and WebVideoFullscreenHUDWindowController depend upon QTKit, which
        is no longer supported in the Mac port.

        * WebView/WebVideoFullscreenController.h: Removed.
        * WebView/WebVideoFullscreenController.mm: Removed.
        * WebView/WebVideoFullscreenHUDWindowController.h: Removed.
        * WebView/WebVideoFullscreenHUDWindowController.mm: Removed.
        * WebView/WebView.mm:
        (-[WebView _enterVideoFullscreenForVideoElement:mode:]):
        (-[WebView _exitVideoFullscreen]):

2018-12-03  Daniel Bates  <dabates@apple.com>

        [iOS] Do not handle key events that are key commands
        https://bugs.webkit.org/show_bug.cgi?id=191608
        <rdar://problem/46046013>

        Reviewed by Ryosuke Niwa.

        A key down event may be associated with a key command. If it is then we want to execute the
        key command instead of inserting or deleting text. We need to ask UIKit to handle the current
        event as a key command to find out.

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

2018-12-02  Zalan Bujtas  <zalan@apple.com>

        Add a runtime feature flag for LayoutFormattingContext.
        https://bugs.webkit.org/show_bug.cgi?id=192280

        Reviewed by Simon Fraser.

        * Configurations/FeatureDefines.xcconfig:

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

        Move URL from WebCore to WTF
        https://bugs.webkit.org/show_bug.cgi?id=190234

        Reviewed by Keith Miller.

        * DOM/DOMAttr.mm:
        * DOM/DOMBlob.mm:
        * DOM/DOMCSSCharsetRule.mm:
        * DOM/DOMCSSImportRule.mm:
        * DOM/DOMCSSMediaRule.mm:
        * DOM/DOMCSSPageRule.mm:
        * DOM/DOMCSSPrimitiveValue.mm:
        * DOM/DOMCSSRule.mm:
        * DOM/DOMCSSStyleDeclaration.mm:
        * DOM/DOMCSSStyleRule.mm:
        * DOM/DOMCSSStyleSheet.mm:
        * DOM/DOMCSSValue.mm:
        * DOM/DOMCharacterData.mm:
        * DOM/DOMCounter.mm:
        * DOM/DOMDocument.mm:
        * DOM/DOMDocumentFragment.mm:
        * DOM/DOMDocumentType.mm:
        * DOM/DOMEvent.mm:
        * DOM/DOMFile.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/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/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/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/DOMMediaList.mm:
        * DOM/DOMMouseEvent.mm:
        * DOM/DOMMutationEvent.mm:
        * DOM/DOMNamedNodeMap.mm:
        * DOM/DOMProcessingInstruction.mm:
        * DOM/DOMRange.mm:
        * DOM/DOMStyleSheet.mm:
        * DOM/DOMText.mm:
        * DOM/DOMTextEvent.mm:
        * DOM/DOMTokenList.mm:
        * DOM/DOMUIEvent.mm:
        * DOM/DOMXPathResult.mm:
        * History/WebHistoryItem.mm:
        * Misc/WebNSURLExtras.mm:
        (-[NSURL _web_userVisibleString]):
        (-[NSURL _web_URLByRemovingUserInfo]):
        (-[NSURL _web_dataForURLComponentType:]):
        (-[NSURL _web_schemeData]):
        (-[NSURL _web_hostData]):
        * Misc/WebUserContentURLPattern.mm:
        * Plugins/Hosted/NetscapePluginInstanceProxy.mm:
        * Plugins/WebNetscapePluginStream.h:
        (WebNetscapePluginStream::setRequestURL):
        * WebCoreSupport/WebChromeClient.h:
        * WebCoreSupport/WebChromeClient.mm:
        (WebChromeClient::signedPublicKeyAndChallengeString const):
        * WebCoreSupport/WebContextMenuClient.h:
        * WebCoreSupport/WebContextMenuClient.mm:
        * WebCoreSupport/WebDragClient.h:
        * WebCoreSupport/WebFrameLoaderClient.h:
        * WebCoreSupport/WebFrameLoaderClient.mm:
        (WebFrameLoaderClient::updateGlobalHistory):
        * WebCoreSupport/WebPaymentCoordinatorClient.h:
        * WebCoreSupport/WebPaymentCoordinatorClient.mm:
        (WebPaymentCoordinatorClient::showPaymentUI):
        * WebCoreSupport/WebPlatformStrategies.h:
        * WebCoreSupport/WebPlatformStrategies.mm:
        (WebPlatformStrategies::readURLFromPasteboard):
        * WebCoreSupport/WebPluginInfoProvider.h:
        * WebCoreSupport/WebPluginInfoProvider.mm:
        (WebPluginInfoProvider::webVisiblePluginInfo):
        * WebCoreSupport/WebSecurityOrigin.mm:
        * WebCoreSupport/WebVisitedLinkStore.h:
        * WebView/WebDataSource.mm:
        * WebView/WebFrame.mm:
        (-[WebFrame _loadData:MIMEType:textEncodingName:baseURL:unreachableURL:]):
        * WebView/WebImmediateActionController.mm:
        (-[WebImmediateActionController _defaultAnimationController]):
        * WebView/WebPDFView.mm:
        * WebView/WebScriptDebugger.mm:
        * WebView/WebViewInternal.h:

2018-11-30  Don Olmstead  <don.olmstead@sony.com>

        Rename ENABLE_SUBTLE_CRYPTO to ENABLE_WEB_CRYPTO
        https://bugs.webkit.org/show_bug.cgi?id=192197

        Reviewed by Jiewen Tan.

        * Configurations/FeatureDefines.xcconfig:
        * WebCoreSupport/WebChromeClient.h:
        * WebCoreSupport/WebChromeClient.mm:

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

        Remove dead code from an earlier attempt at implementing safe browsing
        https://bugs.webkit.org/show_bug.cgi?id=192067

        Reviewed by Chris Dumez.

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

2018-11-27  Mark Lam  <mark.lam@apple.com>

        ENABLE_FAST_JIT_PERMISSIONS should be false for iosmac.
        https://bugs.webkit.org/show_bug.cgi?id=192055
        <rdar://problem/46288783>

        Reviewed by Saam Barati.

        * Configurations/FeatureDefines.xcconfig:

2018-11-25  Tim Horton  <timothy_horton@apple.com>

        Make it possible to insert editable images with a gesture
        https://bugs.webkit.org/show_bug.cgi?id=191937

        Reviewed by Wenson Hsieh.

        * WebCoreSupport/WebEditorClient.mm:
        (undoNameForEditAction):
        Add a undo name.

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

        [Cocoa] Fix a few localizable string descriptions in WebEditCommandProxy.cpp and WebEditorClient.mm
        https://bugs.webkit.org/show_bug.cgi?id=191945

        Reviewed by Anders Carlsson.

        * WebCoreSupport/WebEditorClient.mm:
        (undoNameForEditAction):

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

        Enable drag and drop support for iOSMac
        https://bugs.webkit.org/show_bug.cgi?id=191818
        <rdar://problem/43907454>

        Reviewed by Dean Jackson.

        * Configurations/FeatureDefines.xcconfig:

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

        Address post-review feedback after r238438
        https://bugs.webkit.org/show_bug.cgi?id=191913

        Reviewed by Ryosuke Niwa.

        * WebView/WebFrame.mm:
        (-[WebFrame setSelectedDOMRange:affinity:closeTyping:]):
        (-[WebFrame _replaceSelectionWithFragment:selectReplacement:smartReplace:matchStyle:]):
        * WebView/WebView.mm:
        (-[WebView setSelectedDOMRange:affinity:]):

2018-11-19  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: "Reload Web Inspector" button no longer partially works
        https://bugs.webkit.org/show_bug.cgi?id=191773
        <rdar://problem/46139932>

        Reviewed by Devin Rousso.

        * WebCoreSupport/WebInspectorClient.h:
        * WebCoreSupport/WebInspectorClient.mm:
        (WebInspectorFrontendClient::reopen):

2018-11-17  Devin Rousso  <drousso@apple.com>

        Web Inspector: Network: add button to show system certificate dialog
        https://bugs.webkit.org/show_bug.cgi?id=191458
        <rdar://problem/45977019>

        Reviewed by Joseph Pecoraro.

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

        * Configurations/WebKitLegacy.xcconfig:

2018-11-15  Truitt Savell  <tsavell@apple.com>

        Unreviewed, rolling out r238244.

        Caused High Sierra test runs to fail early with 50 crashes and
        casued 25 API failures.

        Reverted changeset:

        "[css-logical] Implement flow-relative margin, padding and
        border shorthands"
        https://bugs.webkit.org/show_bug.cgi?id=188697
        https://trac.webkit.org/changeset/238244

2018-11-15  Oriol Brufau  <obrufau@igalia.com>

        [css-logical] Implement flow-relative margin, padding and border shorthands
        https://bugs.webkit.org/show_bug.cgi?id=188697

        Reviewed by Simon Fraser and Antti Koivisto.

        Add CSSLogicalEnabled runtime flag.

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

2018-11-14  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Pass Inspector::FrontendChannel as a reference connect/disconnect methods
        https://bugs.webkit.org/show_bug.cgi?id=191612

        Reviewed by Matt Baker.

        * WebCoreSupport/WebInspectorClient.mm:
        (-[WebInspectorWindowController destroyInspectorView]):

2018-11-14  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Keep Web Inspector window alive across process swaps (PSON) (Remote Inspector)
        https://bugs.webkit.org/show_bug.cgi?id=191494
        <rdar://problem/45469854>

        Reviewed by Devin Rousso.

        * WebCoreSupport/WebInspectorClient.h:
        WebKitLegacy will still have remote inspection of the Page directly.

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

        Make compositing updates incremental
        https://bugs.webkit.org/show_bug.cgi?id=90342

        Reviewed by Antti Koivisto.

        Fix spelling error.

        * WebView/WebView.mm:
        (-[WebView _setMediaLayer:forPluginView:]):

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

        Implement a new edit command to change the enclosing list type
        https://bugs.webkit.org/show_bug.cgi?id=191487
        <rdar://problem/45955922>

        Reviewed by Ryosuke Niwa.

        Add undo/redo edit action strings for ConvertToOrderedList and ConvertToUnorderedList.

        * WebCoreSupport/WebEditorClient.mm:
        (undoNameForEditAction):

2018-11-11  Daniel Bates  <dabates@apple.com>

        [iOS] Draw caps lock indicator in password fields
        https://bugs.webkit.org/show_bug.cgi?id=190565
        <rdar://problem/45262343>

        Reviewed by Dean Jackson.

        Update the caps lock state when a hardware keyboard is attached or detached.

        * WebView/WebHTMLView.mm:
        (hardwareKeyboardAvailabilityChangedCallback): Added.
        (-[WebHTMLView initWithFrame:]): Register for hardware keyboard availability changed notifications.
        (-[WebHTMLView dealloc]): Unregister from hardware keyboard availability changed notifications.

2018-11-11  Benjamin Poulain  <benjamin@webkit.org>

        Fix a fixme: rename wtfObjcMsgSend to wtfObjCMsgSend
        https://bugs.webkit.org/show_bug.cgi?id=191492

        Reviewed by Alex Christensen.

        * Carbon/HIWebView.mm:
        * Misc/WebNSFileManagerExtras.mm:
        * Misc/WebNSURLExtras.mm:
        * Plugins/Hosted/WebHostedNetscapePluginView.mm:
        * Plugins/WebBasePluginPackage.mm:
        * Plugins/WebPluginContainerCheck.mm:
        * WebCoreSupport/WebCachedFramePlatformData.h:
        * WebCoreSupport/WebDeviceOrientationClient.mm:
        * WebView/WebDelegateImplementationCaching.mm:
        * WebView/WebHTMLView.mm:
        * WebView/WebPDFRepresentation.mm:
        * WebView/WebPolicyDelegate.mm:
        * WebView/WebView.mm:

2018-11-10  Benjamin Poulain  <benjamin@webkit.org>

        Fix a fixme: rename wtfObjcMsgSend to wtfObjCMsgSend
        https://bugs.webkit.org/show_bug.cgi?id=191492

        Reviewed by Alex Christensen.

        * Carbon/HIWebView.mm:
        (UpdateCommandStatus):
        * Misc/WebNSFileManagerExtras.mm:
        * Misc/WebNSURLExtras.mm:
        * Plugins/Hosted/WebHostedNetscapePluginView.mm:
        * Plugins/WebBasePluginPackage.mm:
        * Plugins/WebPluginContainerCheck.mm:
        (-[WebPluginContainerCheck _continueWithPolicy:]):
        * WebCoreSupport/WebCachedFramePlatformData.h:
        (WebCachedFramePlatformData::clear):
        * WebCoreSupport/WebDeviceOrientationClient.mm:
        (WebDeviceOrientationClient::getProvider const):
        * WebView/WebDelegateImplementationCaching.mm:
        (CallDelegate):
        (CallDelegateReturningBoolean):
        (CallResourceLoadDelegateReturningBoolean):
        (CallFormDelegate):
        (CallFormDelegateReturningBoolean):
        * WebView/WebHTMLView.mm:
        * WebView/WebPDFRepresentation.mm:
        * WebView/WebPolicyDelegate.mm:
        (-[WebPolicyDecisionListener _usePolicy:]):
        * WebView/WebView.mm:

2018-11-09  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r238047.

        Introduced layout test failures on iOS simulator.

        Reverted changeset:

        "[iOS] Draw caps lock indicator in password fields"
        https://bugs.webkit.org/show_bug.cgi?id=190565
        https://trac.webkit.org/changeset/238047

2018-11-09  Antti Koivisto  <antti@apple.com>

        Use OptionSet for layout milestones
        https://bugs.webkit.org/show_bug.cgi?id=191470

        Reviewed by Dean Jackson.

        * WebCoreSupport/WebFrameLoaderClient.h:
        * WebCoreSupport/WebFrameLoaderClient.mm:
        (WebFrameLoaderClient::dispatchDidReachLayoutMilestone):
        * WebView/WebView.mm:
        (coreLayoutMilestones):
        (kitLayoutMilestones):
        (-[WebView _cacheFrameLoadDelegateImplementations]):
        * WebView/WebViewInternal.h:

2018-11-09  Daniel Bates  <dabates@apple.com>

        [iOS] Draw caps lock indicator in password fields
        https://bugs.webkit.org/show_bug.cgi?id=190565
        <rdar://problem/45262343>

        Reviewed by Dean Jackson.

        Update the caps lock state when a hardware keyboard is attached or detached.

        * WebView/WebHTMLView.mm:
        (hardwareKeyboardAvailabilityChangedCallback): Added.
        (-[WebHTMLView initWithFrame:]): Register for hardware keyboard availability changed notifications.
        (-[WebHTMLView dealloc]): Unregister from hardware keyboard availability changed notifications.

2018-11-09  Daniel Bates  <dabates@apple.com>

        [iOS] Pressing forward delete key in text field does nothing and we should not invoke an editor
        action when forward delete is pressed outside a text field
        https://bugs.webkit.org/show_bug.cgi?id=190566
        <rdar://problem/45262367>

        Reviewed by Wenson Hsieh.

        Remove dead code. UIKit ceased sending us a character string with 0xF728 for the forward delete
        key many years ago. We will need to fix up iOS Legacy WebKit support for the forward delete key
        in UIKit. We may revist this decision once <rdar://problem/45772078> is fixed.

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

2018-11-08  Megan Gardner  <megan_gardner@apple.com>

        Adopt Reveal Framework to replace Lookup
        https://bugs.webkit.org/show_bug.cgi?id=191097
        <rdar://problem/45924508>

        Reviewed by Tim Horton.

        Pass in what it needed to clear the textIndicators. This is better than
        the current notification structure.

        * WebView/WebView.mm:
        (-[WebView _animationControllerForDictionaryLookupPopupInfo:]):
        (-[WebView _prepareForDictionaryLookup]):

2018-11-06  Justin Fan  <justin_fan@apple.com>

        [WebGPU] Experimental prototype for WebGPURenderPipeline and WebGPUSwapChain
        https://bugs.webkit.org/show_bug.cgi?id=191291

        Reviewed by Myles Maxfield.

        Properly disable WEBGPU on all non-Metal platforms for now.

        * Configurations/FeatureDefines.xcconfig:

2018-11-02  Daniel Bates  <dabates@apple.com>

        [iOS] WebKit should dispatch DOM events when a modifier key is pressed
        https://bugs.webkit.org/show_bug.cgi?id=190487

        Reviewed by Tim Horton.

        Having Legacy WebKit return NO if the editing event represents a modifier flags change to
        allow the default handling.

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

2018-11-01  Sihui Liu  <sihui_liu@apple.com>

        Add a storage limit for IndexedDB
        https://bugs.webkit.org/show_bug.cgi?id=190598
        <rdar://problem/44654715>

        Reviewed by Chris Dumez.

        * Storage/WebDatabaseManager.mm:
        (-[WebDatabaseManager setIDBPerOriginQuota:]):
        * Storage/WebDatabaseManagerPrivate.h:

2018-10-31  Antti Koivisto  <antti@apple.com>

        Remove LayerFlushScheduler
        https://bugs.webkit.org/show_bug.cgi?id=191103

        Reviewed by Anders Carlsson.

        Add a RunLoopObserver directly into WebViewLayerFlushScheduler and remove
        all the virtual cruft.

        * WebView/WebViewData.h:
        (WebViewLayerFlushScheduler::~WebViewLayerFlushScheduler): Deleted.
        (): Deleted.
        * WebView/WebViewData.mm:
        (currentRunLoop):
        (WebViewLayerFlushScheduler::WebViewLayerFlushScheduler):
        (WebViewLayerFlushScheduler::~WebViewLayerFlushScheduler):
        (WebViewLayerFlushScheduler::schedule):
        (WebViewLayerFlushScheduler::invalidate):
        (WebViewLayerFlushScheduler::layerFlushCallback):

2018-10-30  Alexey Proskuryakov  <ap@apple.com>

        Enable InstallAPI for iOS unconditionally
        https://bugs.webkit.org/show_bug.cgi?id=191043
        rdar://problem/32728423

        Reviewed by Dan Bernstein.

        * Configurations/WebKitLegacy.xcconfig: Enabled it. Added NSURLDownloadSPI.h as an
        excluded header - WebKitLegacy doesn't export NSURLDownload, so the definition
        shouldn't be processed by InstallAPI.
        * MigrateHeaders.make: Removed an obsolete workaround.
        * Misc/NSURLDownloadSPI.h: Added.
        * Misc/WebDownload.h: Use NSURLDownloadSPI.h instead of defining SPI inline.

2018-10-30  Alexey Proskuryakov  <ap@apple.com>

        Clean up some obsolete MAX_ALLOWED macros
        https://bugs.webkit.org/show_bug.cgi?id=190916

        Reviewed by Tim Horton.

        * WebView/WebHTMLView.mm:
        (-[WebHTMLView pressureChangeWithEvent:]):
        * WebView/WebPDFView.h:

2018-10-30  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r237600 and r237604.
        https://bugs.webkit.org/show_bug.cgi?id=191086

        Breaks internal iOS builds (Requested by ryanhadd_ on
        #webkit).

        Reverted changesets:

        "Enable InstallAPI for iOS unconditionally"
        https://bugs.webkit.org/show_bug.cgi?id=191043
        https://trac.webkit.org/changeset/237600

        "Build fix attempt after enabling InstallAPI for iOS."
        https://bugs.webkit.org/show_bug.cgi?id=191043
        https://trac.webkit.org/changeset/237604

2018-10-30  Alexey Proskuryakov  <ap@apple.com>

        Enable InstallAPI for iOS unconditionally
        https://bugs.webkit.org/show_bug.cgi?id=191043
        rdar://problem/32728423

        Reviewed by Dan Bernstein.

        * Configurations/WebKitLegacy.xcconfig: Enabled it. Added NSURLDownloadSPI.h as an
        excluded header - WebKitLegacy doesn't export NSURLDownload, so the definition
        shouldn't be processed by InstallAPI.
        * MigrateHeaders.make: Removed an obsolete workaround.
        * Misc/NSURLDownloadSPI.h: Added.
        * Misc/WebDownload.h: Use NSURLDownloadSPI.h instead of defining SPI inline.

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

        Modernize WebKit nibs and lprojs for localization's sake
        https://bugs.webkit.org/show_bug.cgi?id=190911
        <rdar://problem/45349466>

        Reviewed by Dan Bernstein.

        * Misc/WebNSControlExtras.m:
        (-[NSControl sizeToFitAndAdjustWindowHeight]):
        NSWindow and its contents are both in the same scale space these days; avoid
        double-applying the scale factor, or you can't see the prompt.

        * Panels/English.lproj/WebAuthenticationPanel.nib/designable.nib: Removed.
        * Panels/English.lproj/WebAuthenticationPanel.nib/keyedobjects.nib: Removed.
        * Panels/en.lproj/WebAuthenticationPanel.xib: Added.
        NIB->XIB

2018-10-25  Antoine Quint  <graouts@apple.com>

        [Web Animations] Turn Web Animations CSS Integration off by default
        https://bugs.webkit.org/show_bug.cgi?id=190901

        Reviewed by Dean Jackson.

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

2018-10-24  Alexey Proskuryakov  <ap@apple.com>

        Clean up some obsolete macOS version guards
        https://bugs.webkit.org/show_bug.cgi?id=190887

        Reviewed by Dan Bernstein.

        * Misc/WebNSPasteboardExtras.mm:
        (+[NSPasteboard _web_dragTypesForURL]):
        * WebCoreSupport/PopupMenuMac.mm:
        (PopupMenuMac::show):
        * WebCoreSupport/WebEditorClient.h:
        * WebCoreSupport/WebEditorClient.mm:
        (WebEditorClient::respondToChangedSelection):
        * WebView/WebPDFView.mm:
        (-[WebPDFView _clipViewForPDFDocumentView]):

2018-10-24  Megan Gardner  <megan_gardner@apple.com>

        Turn on Conic Gradients
        https://bugs.webkit.org/show_bug.cgi?id=190810

        Reviewed by Tim Horton.

        * Configurations/FeatureDefines.xcconfig:

2018-10-24  Said Abou-Hallawa  <sabouhallawa@apple.com>

        Cleanup: MIMETypeRegistry functions
        https://bugs.webkit.org/show_bug.cgi?id=190838

        Reviewed by Simon Fraser.

        * Misc/WebNSPasteboardExtras.mm:
        (-[NSPasteboard _web_writePromisedRTFDFromArchive:containsImage:]):
        Replace isSupportedImageResourceMIMEType() by isSupportedImageMIMEType()
        because they were identical.

        * WebView/WebHTMLRepresentation.mm:
        (+[WebHTMLRepresentation supportedMediaMIMETypes]):
        (+[WebHTMLRepresentation supportedNonImageMIMETypes]):
        (+[WebHTMLRepresentation supportedImageMIMETypes]):
        (+[WebHTMLRepresentation unsupportedTextMIMETypes]):
        * WebView/WebView.mm:
        (+[WebView _unregisterViewClassAndRepresentationClassForMIMEType:]):
        (+[WebView _registerViewClass:representationClass:forURLScheme:]):
        (+[WebView registerViewClass:representationClass:forMIMEType:]):

2018-10-23  David Kilzer  <ddkilzer@apple.com>

        Fix false positive leaks when using custom -init methods that don't start with -init
        <https://webkit.org/b/190818>
        <rdar://problem/45476042>

        Reviewed by Dan Bernstein.

        * Misc/WebKitErrors.m: Move `descriptions` static global so that
        it is accessible by both categories.
        (-[NSError _webkit_initWithDomain:code:URL:]): Declare new
        NSError (WebKitInternal) category.  Add attribute to make this
        behave like an -init method.
        (-[NSError _webkit_initWithDomain:code:URL:]): Move into new
        NSError (WebKitInternal) category.  Modernize method.  Replace
        constant NSString with `NSURLErrorFailingURLStringErrorKey`.

2018-10-18  Alexey Proskuryakov  <ap@apple.com>

        Switch from PLATFORM(IOS) to PLATFORM(IOS_FAMILY)
        https://bugs.webkit.org/show_bug.cgi?id=190729

        Reviewed by Tim Horton.

        * DOM/DOM.mm:
        (-[DOMNode boundingBox]):
        * DOM/DOMElement.mm:
        * DOM/DOMHTML.mm:
        * DOM/DOMInternal.mm:
        * DOM/DOMUIKitExtensions.mm:
        * DOM/WebDOMOperations.mm:
        * DefaultDelegates/WebDefaultContextMenuDelegate.mm:
        * DefaultDelegates/WebDefaultEditingDelegate.m:
        * DefaultDelegates/WebDefaultPolicyDelegate.m:
        (-[WebDefaultPolicyDelegate webView:decidePolicyForNavigationAction:request:frame:decisionListener:]):
        * DefaultDelegates/WebDefaultUIDelegate.h:
        * DefaultDelegates/WebDefaultUIDelegate.mm:
        (-[WebDefaultUIDelegate webViewClose:]):
        (-[WebDefaultUIDelegate webViewFocus:]):
        (-[WebDefaultUIDelegate webViewUnfocus:]):
        (-[WebDefaultUIDelegate webViewIsResizable:]):
        (-[WebDefaultUIDelegate webView:setResizable:]):
        (-[WebDefaultUIDelegate webView:setFrame:]):
        (-[WebDefaultUIDelegate webView:runJavaScriptTextInputPanelWithPrompt:defaultText:initiatedByFrame:]):
        * History/BackForwardList.h:
        * History/BackForwardList.mm:
        * History/WebBackForwardList.mm:
        (+[WebBackForwardList initialize]):
        (bumperCarBackForwardHackNeeded):
        * History/WebHistory.mm:
        (-[WebHistoryPrivate addItem:discardDuplicate:]):
        (-[WebHistory _sendNotification:entries:]):
        (-[WebHistory loadFromURL:error:]):
        (-[WebHistory saveToURL:error:]):
        * History/WebHistoryItem.mm:
        (WKNotifyHistoryItemChanged):
        (+[WebHistoryItem initialize]):
        (-[WebHistoryItem initFromDictionaryRepresentation:]):
        * History/WebURLsWithTitles.m:
        * Misc/WebCache.mm:
        (+[WebCache initialize]):
        * Misc/WebDownload.mm:
        (-[WebDownloadInternal download:didReceiveAuthenticationChallenge:]):
        * Misc/WebElementDictionary.mm:
        (+[WebElementDictionary initialize]):
        (+[WebElementDictionary initializeLookupTable]):
        * Misc/WebIconDatabase.mm:
        * Misc/WebKitNSStringExtras.mm:
        (+[NSString _webkit_localCacheDirectoryWithBundleIdentifier:]):
        * Misc/WebKitVersionChecks.h:
        * Misc/WebKitVersionChecks.mm:
        (WebKitLinkedOnOrAfter):
        (WebKitLinkTimeVersion):
        * Misc/WebLocalizableStrings.mm:
        * Misc/WebNSControlExtras.h:
        * Misc/WebNSControlExtras.m:
        * Misc/WebNSEventExtras.m:
        * Misc/WebNSFileManagerExtras.mm:
        * Misc/WebNSImageExtras.h:
        * Misc/WebNSImageExtras.m:
        * Misc/WebNSPasteboardExtras.mm:
        * Misc/WebNSPrintOperationExtras.h:
        * Misc/WebNSPrintOperationExtras.m:
        * Misc/WebNSViewExtras.m:
        * Misc/WebNSWindowExtras.m:
        * Panels/WebAuthenticationPanel.h:
        * Panels/WebAuthenticationPanel.m:
        * Panels/WebPanelAuthenticationHandler.m:
        * Plugins/Hosted/WebHostedNetscapePluginView.mm:
        (+[WebHostedNetscapePluginView initialize]):
        * Plugins/WebBasePluginPackage.h:
        * Plugins/WebBasePluginPackage.mm:
        * Plugins/WebJavaPlugIn.h:
        * Plugins/WebPluginContainerCheck.mm:
        * Plugins/WebPluginController.h:
        * Plugins/WebPluginController.mm:
        (-[WebPluginController plugInViewWithArguments:fromPluginPackage:]):
        (-[WebPluginController addPlugin:]):
        (-[WebPluginController destroyPlugin:]):
        (-[WebPluginController destroyAllPlugins]):
        * Plugins/WebPluginDatabase.mm:
        (+[WebPluginDatabase _defaultPlugInPaths]):
        * Plugins/WebPluginPackage.mm:
        (-[WebPluginPackage initWithPath:]):
        * Storage/WebDatabaseManager.mm:
        (-[WebDatabaseManager deleteAllDatabases]):
        * Storage/WebDatabaseManagerClient.h:
        * Storage/WebDatabaseManagerClient.mm:
        (WebDatabaseManagerClient::WebDatabaseManagerClient):
        (WebDatabaseManagerClient::~WebDatabaseManagerClient):
        * Storage/WebStorageManager.mm:
        (-[WebStorageManager deleteAllOrigins]):
        (WebKitInitializeStorageIfNecessary):
        * WebCoreSupport/WebAlternativeTextClient.h:
        * WebCoreSupport/WebApplicationCache.mm:
        (applicationCacheBundleIdentifier):
        * WebCoreSupport/WebChromeClient.h:
        * WebCoreSupport/WebChromeClient.mm:
        (WebChromeClient::setWindowRect):
        (WebChromeClient::windowRect):
        (WebChromeClient::takeFocus):
        (WebChromeClient::addMessageToConsole):
        (WebChromeClient::enableSuddenTermination):
        (WebChromeClient::disableSuddenTermination):
        (WebChromeClient::createPopupMenu const):
        (WebChromeClient::createSearchPopupMenu const):
        (WebChromeClient::shouldPaintEntireContents const):
        (WebChromeClient::supportsVideoFullscreen):
        (WebChromeClient::supportsFullScreenForElement):
        (WebChromeClient::enterFullScreenForElement):
        (WebChromeClient::exitFullScreenForElement):
        * WebCoreSupport/WebContextMenuClient.mm:
        * WebCoreSupport/WebDragClient.mm:
        * WebCoreSupport/WebEditorClient.h:
        * WebCoreSupport/WebEditorClient.mm:
        (+[WebUndoStep initialize]):
        (updateFontPanel):
        (WebEditorClient::didBeginEditing):
        (WebEditorClient::respondToChangedContents):
        (WebEditorClient::respondToChangedSelection):
        (WebEditorClient::canceledComposition):
        (WebEditorClient::didEndEditing):
        (WebEditorClient::didWriteSelectionToPasteboard):
        (attributesForAttributedStringConversion):
        (WebEditorClient::setInsertionPasteboard):
        (WebEditorClient::registerUndoOrRedoStep):
        (WebEditorClient::handleKeyboardEvent):
        (WebEditorClient::handleInputMethodKeydown):
        (WebEditorClient::textDidChangeInTextField):
        (WebEditorClient::requestCheckingOfString):
        * WebCoreSupport/WebFrameLoaderClient.h:
        * WebCoreSupport/WebFrameLoaderClient.mm:
        (WebFrameLoaderClient::detachedFromParent2):
        (WebFrameLoaderClient::dispatchDidLoadResourceFromMemoryCache):
        (WebFrameLoaderClient::assignIdentifierToInitialRequest):
        (WebFrameLoaderClient::dispatchWillSendRequest):
        (WebFrameLoaderClient::dispatchDidReceiveAuthenticationChallenge):
        (WebFrameLoaderClient::dispatchDidReceiveResponse):
        (WebFrameLoaderClient::willCacheResponse const):
        (WebFrameLoaderClient::dispatchDidReceiveContentLength):
        (WebFrameLoaderClient::dispatchDidFinishLoading):
        (WebFrameLoaderClient::dispatchDidFailLoading):
        (WebFrameLoaderClient::dispatchDidChangeLocationWithinPage):
        (WebFrameLoaderClient::dispatchWillClose):
        (WebFrameLoaderClient::dispatchDidStartProvisionalLoad):
        (WebFrameLoaderClient::dispatchDidCommitLoad):
        (WebFrameLoaderClient::dispatchDidFailProvisionalLoad):
        (WebFrameLoaderClient::dispatchDidFailLoad):
        (WebFrameLoaderClient::dispatchDidFinishDocumentLoad):
        (WebFrameLoaderClient::dispatchDidFinishLoad):
        (WebFrameLoaderClient::dispatchDidReachLayoutMilestone):
        (WebFrameLoaderClient::willChangeTitle):
        (WebFrameLoaderClient::didChangeTitle):
        (WebFrameLoaderClient::didReplaceMultipartContent):
        (WebFrameLoaderClient::updateGlobalHistory):
        (WebFrameLoaderClient::saveViewStateToItem):
        (WebFrameLoaderClient::restoreViewState):
        (WebFrameLoaderClient::provisionalLoadStarted):
        (WebFrameLoaderClient::prepareForDataSourceReplacement):
        (WebFrameLoaderClient::setTitle):
        (WebFrameLoaderClient::savePlatformDataToCachedFrame):
        (WebFrameLoaderClient::transitionToCommittedFromCachedFrame):
        (WebFrameLoaderClient::transitionToCommittedForNewPage):
        (WebFrameLoaderClient::didRestoreFromPageCache):
        (WebFrameLoaderClient::actionDictionary const):
        (WebFrameLoaderClient::createPlugin):
        (WebFrameLoaderClient::getLoadDecisionForIcons):
        (WebFrameLoaderClient::finishedLoadingIcon):
        (+[WebFramePolicyListener initialize]):
        * WebCoreSupport/WebFrameNetworkingContext.mm:
        * WebCoreSupport/WebGeolocationClient.h:
        * WebCoreSupport/WebGeolocationClient.mm:
        (WebGeolocationClient::requestPermission):
        * WebCoreSupport/WebInspectorClient.h:
        * WebCoreSupport/WebJavaScriptTextInputPanel.m:
        * WebCoreSupport/WebNotificationClient.mm:
        * WebCoreSupport/WebOpenPanelResultListener.mm:
        * WebCoreSupport/WebPlatformStrategies.h:
        * WebCoreSupport/WebPlatformStrategies.mm:
        * WebCoreSupport/WebProgressTrackerClient.h:
        * WebCoreSupport/WebProgressTrackerClient.mm:
        (WebProgressTrackerClient::progressStarted):
        (WebProgressTrackerClient::progressEstimateChanged):
        (WebProgressTrackerClient::progressFinished):
        * WebCoreSupport/WebSecurityOrigin.mm:
        * WebInspector/WebNodeHighlight.h:
        * WebInspector/WebNodeHighlight.mm:
        (-[WebNodeHighlight initWithTargetView:inspectorController:]):
        (-[WebNodeHighlight dealloc]):
        (-[WebNodeHighlight attach]):
        * WebInspector/WebNodeHighlightView.h:
        * WebInspector/WebNodeHighlightView.mm:
        (-[WebNodeHighlightView initWithWebNodeHighlight:]):
        (-[WebNodeHighlightView dealloc]):
        * WebInspector/WebNodeHighlighter.mm:
        (-[WebNodeHighlighter highlight]):
        * WebView/WebArchive.mm:
        (+[WebArchivePrivate initialize]):
        * WebView/WebClipView.h:
        * WebView/WebDataSource.mm:
        (WebDataSourcePrivate::WebDataSourcePrivate):
        (+[WebDataSource initialize]):
        (+[WebDataSource _repTypesAllowImageTypeOmission:]):
        (-[WebDataSource _makeRepresentation]):
        * WebView/WebDelegateImplementationCaching.h:
        * WebView/WebDelegateImplementationCaching.mm:
        (CallDelegate):
        (CallDelegateReturningFloat):
        (CallDelegateReturningBoolean):
        (CallUIDelegate):
        (CallUIDelegateReturningFloat):
        (CallUIDelegateReturningBoolean):
        (CallFrameLoadDelegate):
        (CallFrameLoadDelegateReturningBoolean):
        (CallResourceLoadDelegate):
        (CallScriptDebugDelegate):
        (CallFormDelegate):
        (CallFormDelegateReturningBoolean):
        * WebView/WebDeviceOrientation.mm:
        (-[WebDeviceOrientation initWithCanProvideAlpha:alpha:canProvideBeta:beta:canProvideGamma:gamma:]):
        * WebView/WebDocumentInternal.h:
        * WebView/WebDocumentLoaderMac.mm:
        (needsDataLoadWorkaround):
        * WebView/WebDynamicScrollBarsViewInternal.h:
        * WebView/WebFormDelegate.m:
        * WebView/WebFrame.mm:
        (-[WebFrame _updateBackgroundAndUpdatesWhileOffscreen]):
        (-[WebFrame _unmarkAllMisspellings]):
        (-[WebFrame _paintBehaviorForDestinationContext:]):
        (-[WebFrame _drawRect:contentsOnly:]):
        (-[WebFrame _stringByEvaluatingJavaScriptFromString:forceUserGesture:]):
        (-[WebFrame _scrollDOMRangeToVisible:]):
        (-[WebFrame _bodyBackgroundColor]):
        (-[WebFrame accessibilityRoot]):
        (needsMicrosoftMessengerDOMDocumentWorkaround):
        * WebView/WebFrameInternal.h:
        * WebView/WebFrameView.mm:
        (-[WebFrameView _setDocumentView:]):
        (+[WebFrameView _viewTypesAllowImageTypeOmission:]):
        (-[WebFrameView _viewClassForMIMEType:]):
        (-[WebFrameView initWithFrame:]):
        (-[WebFrameView drawRect:]):
        (-[WebFrameView _firstResponderIsFormControl]):
        (-[WebFrameView keyDown:keyDown:]):
        (-[WebFrameView _isScrollable]):
        * WebView/WebFullScreenController.h:
        * WebView/WebFullScreenController.mm:
        * WebView/WebHTMLRepresentation.mm:
        * WebView/WebHTMLView.mm:
        (-[WebHTMLView hitTest:]):
        (-[WebHTMLView initWithFrame:]):
        (-[WebHTMLView dealloc]):
        (-[WebHTMLView addSubview:]):
        (-[WebHTMLView mouseDown:]):
        (-[WebHTMLView mouseUp:]):
        (-[WebHTMLView resignFirstResponder]):
        (-[WebHTMLView accessibilityHitTest:]):
        (-[WebHTMLView selectionImageForcingBlackText:selectionImageForcingBlackText:]):
        * WebView/WebHTMLViewInternal.h:
        * WebView/WebIndicateLayer.h:
        * WebView/WebIndicateLayer.mm:
        * WebView/WebMediaPlaybackTargetPicker.h:
        * WebView/WebMediaPlaybackTargetPicker.mm:
        * WebView/WebPDFDocumentExtras.h:
        * WebView/WebPDFDocumentExtras.mm:
        * WebView/WebPDFRepresentation.h:
        * WebView/WebPDFRepresentation.mm:
        * WebView/WebPDFView.h:
        * WebView/WebPreferences.mm:
        (cacheModelForMainBundle):
        (WebPreferencesPrivate::WebPreferencesPrivate):
        (-[WebPreferences initWithIdentifier:sendChangeNotification:initWithIdentifier:]):
        (-[WebPreferences encodeWithCoder:]):
        (+[WebPreferences standardPreferences]):
        (+[WebPreferences initialize]):
        (-[WebPreferences _valueForKey:]):
        (-[WebPreferences _setStringValue:forKey:]):
        (-[WebPreferences _setIntegerValue:forKey:]):
        (-[WebPreferences _setUnsignedIntValue:forKey:]):
        (-[WebPreferences _setFloatValue:forKey:]):
        (-[WebPreferences _setBoolValue:forKey:]):
        (-[WebPreferences _setLongLongValue:forKey:]):
        (-[WebPreferences _setUnsignedLongLongValue:forKey:]):
        (-[WebPreferences _postCacheModelChangedNotification]):
        (-[WebPreferences _postPreferencesChangedNotification]):
        (+[WebPreferences _switchNetworkLoaderToNewTestingSession]):
        (-[WebPreferences setStorageBlockingPolicy:]):
        * WebView/WebResource.mm:
        (+[WebResourcePrivate initialize]):
        * WebView/WebTextCompletionController.h:
        * WebView/WebTextIterator.mm:
        (+[WebTextIteratorPrivate initialize]):
        * WebView/WebView.mm:
        (shouldEnableLoadDeferring):
        (shouldRestrictWindowFocus):
        (shouldRespectPriorityInCSSAttributeSetters):
        (shouldUseLegacyBackgroundSizeShorthandBehavior):
        (shouldAllowPictureInPictureMediaPlayback):
        (shouldAllowContentSecurityPolicySourceStarToMatchAnyProtocol):
        (shouldAllowWindowOpenWithoutUserGesture):
        (shouldConvertInvalidURLsToBlank):
        (shouldRequireUserGestureToLoadVideo):
        (-[WebView _commonInitializationWithFrameName:groupName:]):
        (+[WebView _viewClass:andRepresentationClass:forMIMEType:allowingPlugins:]):
        (-[WebView _viewClass:andRepresentationClass:forMIMEType:]):
        (-[WebView _closePluginDatabases]):
        (-[WebView _closeWithFastTeardown]):
        (-[WebView _close]):
        (+[WebView _MIMETypeForFile:]):
        (-[WebView setShowingInspectorIndication:]):
        (-[WebView _setFormDelegate:]):
        (-[WebView _needsPreHTML5ParserQuirks]):
        (-[WebView _preferencesChangedNotification:]):
        (-[WebView _preferencesChanged:]):
        (-[WebView _cacheResourceLoadDelegateImplementations]):
        (-[WebView _cacheFrameLoadDelegateImplementations]):
        (-[WebView _policyDelegateForwarder]):
        (-[WebView _UIDelegateForwarder]):
        (-[WebView _editingDelegateForwarder]):
        (-[WebView _updateActiveState]):
        (-[_WebSafeForwarder forwardInvocation:]):
        (+[WebView initialize]):
        (-[WebView _pluginForMIMEType:]):
        (-[WebView _pluginForExtension:]):
        (-[WebView _isMIMETypeRegisteredAsPlugin:]):
        (+[WebView canShowMIMETypeAsHTML:]):
        (-[WebView _initWithArguments:]):
        (-[WebView initWithFrame:frameName:groupName:]):
        (-[WebView dealloc]):
        (-[WebView close]):
        (-[WebView viewDidMoveToWindow]):
        (-[WebView setUIDelegate:]):
        (-[WebView setResourceLoadDelegate:]):
        (-[WebView setPolicyDelegate:]):
        (-[WebView setFrameLoadDelegate:]):
        (-[WebView goBack]):
        (-[WebView goForward]):
        (-[WebView stringByEvaluatingJavaScriptFromString:]):
        (-[WebView setHostWindow:]):
        (-[WebView becomeFirstResponder]):
        (+[WebView _cacheModelChangedNotification:]):
        (-[WebView _frameViewAtWindowPoint:]):
        (+[WebView _preflightSpellCheckerNow:]):
        (+[WebView _preflightSpellChecker]):
        (-[WebView canGoBack]):
        (-[WebView canGoForward]):
        (-[WebView stopLoading:]):
        (-[WebView reload:]):
        (-[WebView setMainFrameDocumentReady:]):
        (-[WebView _shouldChangeSelectedDOMRange:toDOMRange:affinity:stillSelecting:]):
        (-[WebView setContinuousSpellCheckingEnabled:]):
        (-[WebView undoManager]):
        (-[WebView isAutomaticQuoteSubstitutionEnabled]):
        (-[WebView isAutomaticLinkDetectionEnabled]):
        (-[WebView isAutomaticDashSubstitutionEnabled]):
        (-[WebView isAutomaticTextReplacementEnabled]):
        (-[WebView isAutomaticSpellingCorrectionEnabled]):
        (+[WebView _setCacheModel:]):
        (-[WebView _retrieveKeyboardUIModeFromPreferences:]):
        (-[WebView _keyboardUIMode]):
        (LayerFlushController::flushLayers):
        (-[WebView _scheduleCompositingLayerFlush]):
        (-[WebView _enterVideoFullscreenForVideoElement:mode:]):
        (-[WebView fullScreenPlaceholderView]):
        (WebInstallMemoryPressureHandler):
        * WebView/WebViewData.h:
        * WebView/WebViewData.mm:
        (+[WebViewPrivate initialize]):
        (-[WebViewPrivate init]):
        (-[WebViewPrivate dealloc]):
        * WebView/WebViewInternal.h:

2018-10-18  Alex Christensen  <achristensen@webkit.org>

        Clean up FrameLoader two-state enums
        https://bugs.webkit.org/show_bug.cgi?id=190731

        Reviewed by Chris Dumez.

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

2018-10-18  Alex Christensen  <achristensen@webkit.org>

        Unreviewed, rolling out r237137.

        SPI is actually used

        Reverted changeset:

        "Remove unused WebFrame._loadType"
        https://bugs.webkit.org/show_bug.cgi?id=190583
        https://trac.webkit.org/changeset/237137

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

        Enable the datalist element by default on iOS and macOS
        https://bugs.webkit.org/show_bug.cgi?id=190594
        <rdar://problem/45281159>

        Reviewed by Ryosuke Niwa and Tim Horton.

        * Configurations/FeatureDefines.xcconfig:

2018-10-17  Alex Christensen  <achristensen@webkit.org>

        BackForwardClient needs to be able to support UIProcess-only back/forward lists
        https://bugs.webkit.org/show_bug.cgi?id=190675

        Reviewed by Chris Dumez.

        * History/BackForwardList.h:
        * History/BackForwardList.mm:
        (BackForwardList::backItem):
        (BackForwardList::currentItem):
        (BackForwardList::forwardItem):
        (BackForwardList::backListCount const):
        (BackForwardList::forwardListCount const):
        (BackForwardList::itemAtIndex):
        * History/WebBackForwardList.mm:
        (-[WebBackForwardList backItem]):
        (-[WebBackForwardList currentItem]):
        (-[WebBackForwardList forwardItem]):
        (-[WebBackForwardList itemAtIndex:]):

2018-10-16  Timothy Hatcher  <timothy@apple.com>

        Add <meta name="supported-color-schemes"> to control what color schemes the page supports
        https://bugs.webkit.org/show_bug.cgi?id=190526
        rdar://problem/45230140

        Reviewed by Dean Jackson.

        * WebCoreSupport/WebEditorClient.mm:
        (_WebCreateFragment): Update use of LocalDefaultSystemAppearance.

2018-10-16  Justin Michaud  <justin_michaud@apple.com>

        Implement feature flag and bindings for CSS Painting API
        https://bugs.webkit.org/show_bug.cgi?id=190237

        Reviewed by Ryosuke Niwa.

        * Configurations/FeatureDefines.xcconfig:

2018-10-16  Alex Christensen  <achristensen@webkit.org>

        Replace HistoryItem* with HistoryItem& where possible
        https://bugs.webkit.org/show_bug.cgi?id=190617

        Reviewed by Chris Dumez.

        * History/BackForwardList.h:
        * History/BackForwardList.mm:
        (BackForwardList::goToItem):
        * History/WebBackForwardList.mm:
        (-[WebBackForwardList goToItem:]):
        * History/WebHistoryItem.mm:
        (WKNotifyHistoryItemChanged):
        * History/WebHistoryItemInternal.h:

2018-10-16  Alex Christensen  <achristensen@webkit.org>

        Remove unused WebHistoryItem._transientPropertyForKey
        https://bugs.webkit.org/show_bug.cgi?id=190606

        Reviewed by Chris Dumez.

        * History/WebHistoryItem.mm:
        * History/WebHistoryItemPrivate.h:

2018-10-15  Justin Fan  <justin_fan@apple.com>

        Add WebGPU 2018 feature flag and experimental feature flag
        https://bugs.webkit.org/show_bug.cgi?id=190509

        Reviewed by Dean Jackson.

        Re-add ENABLE_WEBGPU, an experimental feature flag, and a RuntimeEnabledFeature
        for the 2018 WebGPU prototype.

        * Configurations/FeatureDefines.xcconfig:
        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):
        (-[WebPreferences webGPUEnabled]):
        (-[WebPreferences setWebGPUEnabled:]):
        * WebView/WebPreferencesPrivate.h:
        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]):

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

        Fix iOS build after r237157

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

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

        Modernize BackForwardClient.h
        https://bugs.webkit.org/show_bug.cgi?id=190610

        Reviewed by Chris Dumez.

        * History/BackForwardList.h:
        * History/BackForwardList.mm:
        (BackForwardList::backListCount const):
        (BackForwardList::forwardListCount const):
        (BackForwardList::backListCount): Deleted.
        (BackForwardList::forwardListCount): Deleted.
        * History/WebBackForwardList.mm:
        (-[WebBackForwardList init]):
        * WebCoreSupport/WebFrameLoaderClient.mm:
        (WebFrameLoaderClient::canCachePage const):
        * WebView/WebFrameView.mm:
        (-[WebFrameView keyDown:keyDown:]):
        * WebView/WebView.mm:
        (-[WebView _commonInitializationWithFrameName:groupName:]):
        (-[WebView initSimpleHTMLDocumentWithStyle:frame:preferences:groupName:]):
        (-[WebView _loadBackForwardListFromOtherView:]):
        (-[WebView initWithCoder:]):
        (-[WebView encodeWithCoder:]):
        (-[WebView backForwardList]):
        (-[WebView setMaintainsBackForwardList:]):

2018-10-15  Timothy Hatcher  <timothy@apple.com>

        Add support for prefers-color-scheme media query
        https://bugs.webkit.org/show_bug.cgi?id=190499
        rdar://problem/45212025

        Reviewed by Dean Jackson.

        * Configurations/FeatureDefines.xcconfig: Added ENABLE_DARK_MODE_CSS.

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

        Remove unused WebView._globalHistoryItem
        https://bugs.webkit.org/show_bug.cgi?id=190601

        Reviewed by Chris Dumez.

        * WebCoreSupport/WebFrameLoaderClient.h:
        * WebCoreSupport/WebFrameLoaderClient.mm:
        (WebFrameLoaderClient::updateGlobalHistoryItemForPage): Deleted.
        * WebView/WebView.mm:
        (-[WebView _globalHistoryItem]): Deleted.
        (-[WebView _setGlobalHistoryItem:]): Deleted.
        * WebView/WebViewData.h:
        * WebView/WebViewInternal.h:
        * WebView/WebViewPrivate.h:

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

        Remove unused parameters from FrameLoaderClient::createFrame
        https://bugs.webkit.org/show_bug.cgi?id=190587

        Reviewed by Chris Dumez.

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

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

        Remove unused WebFrame._loadType
        https://bugs.webkit.org/show_bug.cgi?id=190583

        Reviewed by Chris Dumez.

        This is unused, and this concept needs to not be exposed from WebCore to WebKitLegacy for me to fix history bugs.

        * WebView/WebFrame.mm:
        (toWebFrameLoadType): Deleted.
        (-[WebFrame _loadType]): Deleted.
        * WebView/WebFramePrivate.h:

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

        Restrict browsing context lookup by name to frames that are related to one another
        https://bugs.webkit.org/show_bug.cgi?id=190475

        Reviewed by Alex Christensen.

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

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

        Remove InjectedBundle processing of back/forward lists
        https://bugs.webkit.org/show_bug.cgi?id=190459

        Reviewed by Chris Dumez.

        * WebCoreSupport/WebFrameLoaderClient.h:
        * WebCoreSupport/WebFrameLoaderClient.mm:
        (WebFrameLoaderClient::shouldGoToHistoryItem const):

2018-10-14  Yusuke Suzuki  <yusukesuzuki@slowstart.org>

        [JSC] Remove Option::useAsyncIterator
        https://bugs.webkit.org/show_bug.cgi?id=190567

        Reviewed by Saam Barati.

        * Configurations/FeatureDefines.xcconfig:

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

        Allow encoding of small enum classes
        https://bugs.webkit.org/show_bug.cgi?id=190531

        Reviewed by Tim Horton.

        * WebCoreSupport/WebFrameLoaderClient.mm:
        (-[WebFramePolicyListener dealloc]):

2018-10-11  Keith Rollin  <krollin@apple.com>

        CURRENT_ARCH should not be used in Run Script phase.
        https://bugs.webkit.org/show_bug.cgi?id=190407
        <rdar://problem/45133556>

        Reviewed by Alexey Proskuryakov.

        CURRENT_ARCH is used in a number of Xcode Run Script phases. However,
        CURRENT_ARCH is not well-defined during this phase (and may even have
        the value "undefined") since this phase is run just once per build
        rather than once per supported architecture. Migrate away from
        CURRENT_ARCH in favor of ARCHS, either by iterating over ARCHS and
        performing an operation for each value, or by picking the first entry
        in ARCHS and using that as a representative value.

        * Configurations/WebKitLegacy.xcconfig: When generating
        WebKitLegacy.*.exp, generate both 32- and 64-bit versions for
        macosx platforms.

        * MigrateHeaders.make:
        * migrate-headers.sh: When generating ReexportedWebCoreSymbols_*.exp,
        generate one for each architecture in ARCHS.

2018-10-10  Yusuke Suzuki  <yusukesuzuki@slowstart.org>

        [JSC] Rename createXXX to tryCreateXXX if it can return RefPtr
        https://bugs.webkit.org/show_bug.cgi?id=190429

        Reviewed by Saam Barati.

        Use `tryCreate` or new `create`. If we use new `create`, we can use Ref<> and remove null check.

        * WebView/WebPDFRepresentation.mm:
        (-[WebPDFRepresentation finishedLoadingWithDataSource:]):

2018-10-08  Justin Fan  <justin_fan@apple.com>

        WebGPU: Rename old WebGPU prototype to WebMetal
        https://bugs.webkit.org/show_bug.cgi?id=190325
        <rdar://problem/44990443>

        Reviewed by Dean Jackson.

        Rename WebGPU prototype files to WebMetal in preparation for implementing the new (Oct 2018) WebGPU interface.

        * Configurations/FeatureDefines.xcconfig:
        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):
        (-[WebPreferences webMetalEnabled]):
        (-[WebPreferences setWebMetalEnabled:]):
        (-[WebPreferences webGPUEnabled]): Deleted.
        (-[WebPreferences setWebGPUEnabled:]): Deleted.
        * WebView/WebPreferencesPrivate.h:
        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]):

2018-10-08  Aditya Keerthi  <akeerthi@apple.com>

        Make <input type=color> a runtime enabled (on-by-default) feature
        https://bugs.webkit.org/show_bug.cgi?id=189162

        Reviewed by Wenson Hsieh and Tim Horton.

        * Configurations/FeatureDefines.xcconfig:

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

        Fixed building with the latest macOS SDK

        * Plugins/WebNetscapePluginPackage.mm:
        (-[WebNetscapePluginPackage openResourceFile]):
        (-[WebNetscapePluginPackage closeResourceFile:]):

2018-10-04  Dan Bernstein  <mitz@apple.com>

        More Carbon build-fixing.

        * Carbon/CarbonWindowAdapter.mm:
        (-[CarbonWindowAdapter _destroyRealWindow:]):
        (-[CarbonWindowAdapter _growBoxRect]):

2018-10-04  Dan Bernstein  <mitz@apple.com>

        Retried to fix 32-bit macOS builds after r236846.

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

2018-10-04  Dan Bernstein  <mitz@apple.com>

        Retried to fix 32-bit macOS builds after r236846.

        * Carbon/HIWebView.mm:
        (ActiveStateChanged):

2018-10-04  Dan Bernstein  <mitz@apple.com>

        Tried to fix 32-bit macOS builds after r236846.

        * Carbon/HIWebView.mm:
        (_NSSelectorForHICommand):

2018-10-04  Dan Bernstein  <mitz@apple.com>

        WebKitLegacy part of [Xcode] Update some build settings as recommended by Xcode 10
        https://bugs.webkit.org/show_bug.cgi?id=190250

        Reviewed by Andy Estes.

        * Configurations/Base.xcconfig: Enabled CLANG_WARN_COMMA, CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF,
          CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS, and CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED.
          Also enabled GCC_WARN_UNDECLARED_SELECTOR by deleting the line that set it to NO, which let
          an earlier line set it to YES.

        Enabling -Wundeclared-selector exposed some long-standing mistakes and required the most
        changes below.

        * DefaultDelegates/WebDefaultContextMenuDelegate.mm: Imported an internal header that
          provides some missing method declarations.

        * Misc/WebDownload.mm:
        (-[WebDownload initWithRequest:delegate:]): Suppressed warning about this implementation of
          a deprecated method.

        * Misc/WebIconDatabase.mm: Suppressed warning around our implementation of a deprecated class.

        * Misc/WebNSObjectExtras.mm: Declare a category that is implemented in this file, because
          other code in the file uses a method from it.

        * Plugins/WebBaseNetscapePluginView.mm:
        (-[WebBaseNetscapePluginView renewGState]): Suppressed warning about this implementation of
          a deprecated method.

        * Plugins/WebPluginController.mm:
        (installFlip4MacPlugInWorkaroundIfNecessary): Suppressed the undeclared selector warning
          around use of a selector that may be present in some WebKit client.

        * Plugins/WebPluginDatabase.mm: Imported an internal header that provides some missing
          method declarations.

        * WebCoreSupport/PopupMenuMac.mm: Imported a header that delcares delegate methods we call
          from here.

        * WebCoreSupport/WebCachedFramePlatformData.h: Imported an internal header that provides some
          missing method declarations.

        * WebCoreSupport/WebChromeClient.mm: Imported a header that declares delegate methods we call
          from here.

        * WebCoreSupport/WebFrameLoaderClient.mm: Imported headers that declare delegate methods we
          call from here.
        (WebFrameLoaderClient::setTitle): Suppressed the undeclared selector warning around use of
          an obsolete delegate method for binary compatibility.
        (pluginView): Ditto.

        * WebCoreSupport/WebVisitedLinkStore.mm: Imported a header that declares delegate methods we
          call from here.

        * WebView/WebDeviceOrientationInternal.h: Declared -setController in a new
          WebDeviceOrientationProviderMock protocol.

        * WebView/WebDeviceOrientationProviderMock.mm:
        (-[WebDeviceOrientationProviderMock setController:]): Moved from an internal category to the
          main @implementation.

        * WebView/WebDeviceOrientationProviderMockInternal.h: Declared that
          WebDeviceOrientationProviderMock conforms to WebDeviceOrientationProviderMock.

        * WebView/WebDynamicScrollBarsView.mm:
        (-[WebDynamicScrollBarsView accessibilityIsIgnored]): Suppressed warning about this implementation
          of a deprecated method.

        * WebView/WebHTMLView.mm:
        (-[WebHTMLView validateUserInterfaceItemWithoutDelegate:]): Suppressed the undeclared
          selector warning around action methods that are not declared anywhere in WebKit.

        (-[WebHTMLView dragImage:at:offset:event:pasteboard:source:slideBack:]): Suppressed warning
          about implementing this deprecated method.
        (-[WebHTMLView draggingSourceOperationMaskForLocal:]): Ditto.
        (-[WebHTMLView draggedImage:endedAt:operation:]): Ditto.
        (-[WebHTMLView namesOfPromisedFilesDroppedAtDestination:]): Ditto.
        (-[WebHTMLView accessibilityAttributeValue:]): Ditto.
        (-[WebHTMLView characterIndexForPoint:]): Ditto.
        (-[WebHTMLView firstRectForCharacterRange:]): Ditto.
        (-[WebHTMLView attributedSubstringFromRange:]): Ditto.
        (-[WebHTMLView setMarkedText:selectedRange:]): Ditto.
        (-[WebHTMLView doCommandBySelector:]): Ditto.
        (-[WebHTMLView insertText:]): Ditto.

        * WebView/WebHTMLViewInternal.h: Declared an internal method that’s used from another file.

        * WebView/WebJSPDFDoc.mm: Imported a header that declares delegate methods we call from here.

        * WebView/WebPDFView.h: Removed previewView ivar.

        * WebView/WebPDFView.mm:
          Removed declaration of FileInternal category and merged its implementation with the main
          implementation.
        (-[WebPDFView dealloc]): Removed previewView ivar.
        (-[WebPDFView initWithFrame:]): Removed code to deal with PDFPreviewView, which doesn’t
          exist in macOS versions we support.
        (+[WebPDFView _PDFPreviewViewClass]): Deleted. PDFPreviewView doesn’t exist anymore.
        (-[WebPDFView _canLookUpInDictionary]): Suppressed undeclared selector warning around use of
          action methods internal to PDFKit.
        (-[WebPDFView _lookUpInDictionaryFromMenu:]): Ditto.
        (-[WebPDFView _menuItemsFromPDFKitForEvent:]): Ditto.

        * WebView/WebUIDelegatePrivate.h: Restored declarations of the delegate methods we actually
          call on macOS, even though in r86988 we started calling different methods on iOS.

        * WebView/WebView.mm:
        - Imported headers that declare delegate methods that we call.
        - Removed declaration of WebFileInternal category and merged its implementation with the
          main implementation.
        - Many internal methods were inexplicibly implemented as part of the WebViewEditingInMail
          category, which made them impossible to call from the main implementation. Moved those
          into the main implementation. One of those had to be declared in a class extension,
          because it is called from a method implemented in the WebPrivate category, and that
          category’s implementation appears first in the file.

        (-[WebView _cacheHistoryDelegateImplementations]): Suppressed undeclared selector warning
          around use of obsolete delegate method for binary compatibility.

        * WebView/WebViewInternal.h: Declared an internal method that’s used from another file.

2018-10-04  YUHAN WU  <yuhan_wu@apple.com>

        Runtime flag and IDL for MediaRecorder
        https://bugs.webkit.org/show_bug.cgi?id=190018

        Reviewed by Youenn Fablet and Chris Dumez.

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

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

        Enable selectionAcrossShadowBoundariesEnabled by default in WebKitLegacy
        https://bugs.webkit.org/show_bug.cgi?id=190238

        Reviewed by Antti Koivisto.

        Enabled the feature by default.

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

2018-10-01  Dean Jackson  <dino@apple.com>

        [macOS] Switching to discrete GPU should be done in the UI process
        https://bugs.webkit.org/show_bug.cgi?id=189361
        <rdar://problem/43949622>

        Reviewed by Simon Fraser.

        Implement a no-op SwitchingGPUClient instance in legacy WebKit. We will
        not support swapping to the discrete GPU in this configuration.

        * WebCoreSupport/WebSwitchingGPUClient.cpp: Added.
        (WebKit::WebSwitchingGPUClient::singleton):
        * WebCoreSupport/WebSwitchingGPUClient.h: Added.
        * WebView/WebView.mm:
        (-[WebView _commonInitializationWithFrameName:groupName:]):

2018-10-02  Alex Christensen  <achristensen@webkit.org>

        Remove ParsedURLString
        https://bugs.webkit.org/show_bug.cgi?id=190154

        Reviewed by Chris Dumez.

        * WebView/WebScriptDebugger.mm:
        (toNSURL):

2018-10-01  Dean Jackson  <dino@apple.com>

        Remove CSS Animation Triggers
        https://bugs.webkit.org/show_bug.cgi?id=190175
        <rdar://problem/44925626>

        Reviewed by Simon Fraser.

        * Configurations/FeatureDefines.xcconfig:

2018-10-02  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r236624 and r236671.
        https://bugs.webkit.org/show_bug.cgi?id=190207

        The change in r236624 introduced crashes on the bots
        (Requested by ryanhaddad on #webkit).

        Reverted changesets:

        "Refactoring: eliminate raw pointer usage in Fullscreen code"
        https://bugs.webkit.org/show_bug.cgi?id=188747
        https://trac.webkit.org/changeset/236624

        "Unify implementation in VideoFullscreenInterfaceAVKit"
        https://bugs.webkit.org/show_bug.cgi?id=190091
        https://trac.webkit.org/changeset/236671

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

        URL should not use TextEncoding internally
        https://bugs.webkit.org/show_bug.cgi?id=190111

        Reviewed by Andy Estes.

        * Misc/WebNSURLExtras.mm:

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

        Refactoring: eliminate raw pointer usage in Fullscreen code
        https://bugs.webkit.org/show_bug.cgi?id=188747
        <rdar://problem/43541164>

        Reviewed by Alex Christensen.

        PlaybackSessionInterface no longer has an invalidate() method.

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

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

        Drop support for cross-origin-window-policy header
        https://bugs.webkit.org/show_bug.cgi?id=190081

        Reviewed by Ryosuke Niwa.

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

2018-09-28  Ryosuke Niwa  <rniwa@webkit.org>

        Rename createMarkup to serializePreservingVisualAppearance
        https://bugs.webkit.org/show_bug.cgi?id=190086

        Reviewed by Wenson Hsieh.

        * DOM/WebDOMOperations.mm:
        (-[DOMRange markupString]):

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

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

        caused three API test timeouts (Requested by jernoble on
        #webkit).

        Reverted changeset:

        "Refactoring: eliminate raw pointer usage in Fullscreen code"
        https://bugs.webkit.org/show_bug.cgi?id=188747
        https://trac.webkit.org/changeset/236605

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

        Refactoring: eliminate raw pointer usage in Fullscreen code
        https://bugs.webkit.org/show_bug.cgi?id=188747
        <rdar://problem/43541164>

        Reviewed by Alex Christensen.

        PlaybackSessionInterface no longer has an invalidate() method.

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

2018-09-26  Ryosuke Niwa  <rniwa@webkit.org>

        Use enum class in createMarkup arguments
        https://bugs.webkit.org/show_bug.cgi?id=190028

        Reviewed by Wenson Hsieh.

        * DOM/WebDOMOperations.mm:
        (-[DOMNode markupString]): Moved the code from WebCore/editing/markup.cpp
        (-[DOMRange markupString]): Ditto.

2018-09-27  Antoine Quint  <graouts@apple.com>

        [Web Animations] Turn Web Animations with CSS integration on
        https://bugs.webkit.org/show_bug.cgi?id=184819
        <rdar://problem/39597337>

        Reviewed by Dean Jackson.

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

2018-09-26  Ryosuke Niwa  <rniwa@webkit.org>

        Selection should work across shadow boundary when initiated by a mouse drag
        https://bugs.webkit.org/show_bug.cgi?id=151380
        <rdar://problem/24363872>

        Reviewed by Wenson Hsieh.

        Added selectionAcrossShadowBoundariesEnabled as a preference to be used in DumpRenderTree.

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

2018-09-24  Wenson Hsieh  <wenson_hsieh@apple.com>

        Refactor Editor::fontAttributesForSelectionStart to be platform-agnostic
        https://bugs.webkit.org/show_bug.cgi?id=189918
        Work towards <rdar://problem/44648705>

        Reviewed by Tim Horton.

        Replace call sites of fontAttributesForSelectionStart() to fontAttributesAtSelectionStart().createDictionary().

        * WebView/WebHTMLView.mm:
        (-[WebHTMLView _selectionStartFontAttributesAsRTF]):
        (-[WebHTMLView _updateFontPanel]):
        * WebView/WebView.mm:
        (-[WebView typingAttributes]):

2018-09-17  Darin Adler  <darin@apple.com>

        Use OpaqueJSString rather than JSRetainPtr inside WebKit
        https://bugs.webkit.org/show_bug.cgi?id=189652

        Reviewed by Saam Barati.

        * WebView/WebPDFRepresentation.mm:
        (-[WebPDFRepresentation finishedLoadingWithDataSource:]): Use OpaqueJSString::create.

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

        Turn SourceBufferChangeTypeEnabled on by default
        https://bugs.webkit.org/show_bug.cgi?id=189527

        Reviewed by Eric Carlson.

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

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

        Fix an internal build after r235935
        https://bugs.webkit.org/show_bug.cgi?id=188996

        * Carbon/HIWebView.mm:
        (Draw):
        r235935 fixed a mismatched macro with deprecated functions below it.  To quickly fix the build, I'm just going to restore the imbalance.

2018-09-12  Guillaume Emont  <guijemont@igalia.com>

        Add IGNORE_WARNING_.* macros
        https://bugs.webkit.org/show_bug.cgi?id=188996

        Reviewed by Michael Catanzaro.

        * Carbon/CarbonUtils.m:
        (PoolCleaner):
        * Carbon/CarbonWindowAdapter.mm:
        (-[CarbonWindowAdapter initWithCarbonWindowRef:takingOwnership:disableOrdering:carbon:]):
        (-[CarbonWindowAdapter setViewsNeedDisplay:]):
        (-[CarbonWindowAdapter reconcileToCarbonWindowBounds]):
        (-[CarbonWindowAdapter _termWindowIfOwner]):
        (-[CarbonWindowAdapter _windowMovedToRect:]):
        (-[CarbonWindowAdapter setContentView:]):
        (-[CarbonWindowAdapter _handleRootBoundsChanged]):
        (-[CarbonWindowAdapter _handleContentBoundsChanged]):
        * Carbon/CarbonWindowFrame.m:
        (-[CarbonWindowFrame title]):
        * Carbon/HIViewAdapter.m:
        (+[HIViewAdapter getHIViewForNSView:]):
        * Carbon/HIWebView.mm:
        (overrideCGContext):
        (restoreCGContext):
        (Draw):
        * DOM/DOM.mm:
        * History/WebHistory.mm:
        (-[WebHistoryPrivate loadHistoryGutsFromURL:savedItemsCount:collectDiscardedItemsInto:error:]):
        * History/WebHistoryItem.mm:
        (-[WebHistoryItem icon]):
        * Misc/WebKitNSStringExtras.mm:
        (-[NSString _web_drawAtPoint:font:textColor:]):
        * Misc/WebNSImageExtras.m:
        (-[NSImage _web_scaleToMaxSize:]):
        (-[NSImage _web_dissolveToFraction:]):
        * Misc/WebNSPasteboardExtras.mm:
        (+[NSPasteboard _web_setFindPasteboardString:withOwner:]):
        (-[NSPasteboard _web_declareAndWriteDragImageForElement:URL:title:archive:source:]):
        * Panels/WebAuthenticationPanel.m:
        (-[WebAuthenticationPanel loadNib]):
        * Plugins/Hosted/NetscapePluginHostManager.mm:
        (WebKit::NetscapePluginHostManager::spawnPluginHost):
        (WebKit::NetscapePluginHostManager::didCreateWindow):
        * Plugins/Hosted/NetscapePluginHostProxy.mm:
        (WebKit::NetscapePluginHostProxy::makeCurrentProcessFrontProcess):
        (WebKit::NetscapePluginHostProxy::makePluginHostProcessFrontProcess const):
        (WebKit::NetscapePluginHostProxy::isPluginHostProcessFrontProcess const):
        * Plugins/Hosted/NetscapePluginInstanceProxy.mm:
        (WebKit::NetscapePluginInstanceProxy::mouseEvent):
        * Plugins/Hosted/WebHostedNetscapePluginView.mm:
        (-[WebHostedNetscapePluginView drawRect:]):
        * Plugins/Hosted/WebTextInputWindowController.m:
        (-[WebTextInputPanel _interpretKeyEvent:string:]):
        * Plugins/WebBaseNetscapePluginView.mm:
        (-[WebBaseNetscapePluginView convertFromX:andY:space:toX:andY:space:]):
        * Plugins/WebNetscapePluginPackage.mm:
        (-[WebNetscapePluginPackage _tryLoad]):
        * Plugins/WebNetscapePluginView.mm:
        (-[WebNetscapePluginView saveAndSetNewPortStateForUpdate:]):
        (-[WebNetscapePluginView sendDrawRectEvent:]):
        (-[WebNetscapePluginView drawRect:]):
        * Plugins/WebPluginController.mm:
        (WebKit_TSUpdateCheck_alertDidEnd_returnCode_contextInfo_):
        (WebKit_NSAlert_beginSheetModalForWindow_modalDelegate_didEndSelector_contextInfo_):
        * WebCoreSupport/PopupMenuMac.mm:
        (PopupMenuMac::populate):
        * WebCoreSupport/WebAlternativeTextClient.h:
        * WebCoreSupport/WebDragClient.mm:
        (WebDragClient::startDrag):
        * WebCoreSupport/WebFrameLoaderClient.mm:
        (WebFrameLoaderClient::convertMainResourceLoadToDownload):
        (webGetNSImage):
        * WebInspector/WebNodeHighlight.mm:
        * WebInspector/WebNodeHighlightView.mm:
        (-[WebNodeHighlightView drawRect:]):
        * WebView/WebClipView.mm:
        (-[WebClipView initWithFrame:]):
        * WebView/WebFrame.mm:
        (-[WebFrame _updateBackgroundAndUpdatesWhileOffscreen]):
        (-[WebFrame _drawRect:contentsOnly:]):
        (-[WebFrame accessibilityRoot]):
        * WebView/WebFullScreenController.mm:
        (-[WebFullScreenController enterFullScreen:]):
        (-[WebFullScreenController finishedEnterFullScreenAnimation:]):
        (-[WebFullScreenController exitFullScreen]):
        (-[WebFullScreenController finishedExitFullScreenAnimation:]):
        (-[WebFullScreenController _startEnterFullScreenAnimationWithDuration:]):
        (-[WebFullScreenController _startExitFullScreenAnimationWithDuration:]):
        * WebView/WebHTMLView.mm:
        (-[NSWindow _web_borderView]):
        (-[WebHTMLView _updateMouseoverWithFakeEvent]):
        (-[WebHTMLView _setAsideSubviews]):
        (-[WebHTMLView _autoscroll]):
        (-[WebHTMLView drawRect:]):
        (-[WebHTMLView mouseDown:]):
        (-[WebHTMLView mouseDragged:]):
        (-[WebHTMLView mouseUp:]):
        (-[WebHTMLView _endPrintModeAndRestoreWindowAutodisplay]):
        (-[WebHTMLView knowsPageRange:]):
        (-[WebHTMLView accessibilityHitTest:]):
        (-[WebHTMLView _fontAttributesFromFontPasteboard]):
        (-[WebHTMLView _colorAsString:]):
        (-[WebHTMLView copyFont:]):
        (-[WebHTMLView _executeSavedKeypressCommands]):
        (-[WebHTMLView attachRootLayer:]):
        (-[WebHTMLView textStorage]):
        (-[WebHTMLView _updateSelectionForInputManager]):
        * WebView/WebPDFView.mm:
        (_applicationInfoForMIMEType):
        (-[WebPDFView centerSelectionInVisibleArea:]):
        (-[WebPDFView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:]):
        (-[WebPDFView _recursiveDisplayAllDirtyWithLockFocus:visRect:]):
        (-[WebPDFView _recursive:displayRectIgnoringOpacity:inContext:topView:]):
        (-[WebPDFView searchFor:direction:caseSensitive:wrap:startInSelection:]):
        * WebView/WebTextCompletionController.mm:
        (-[WebTextCompletionController _buildUI]):
        (-[WebTextCompletionController _placePopupWindow:]):
        * WebView/WebVideoFullscreenController.mm:
        * WebView/WebVideoFullscreenHUDWindowController.mm:
        (createMediaUIBackgroundView):
        * WebView/WebView.mm:
        (-[WebTextListTouchBarViewController initWithWebView:]):
        (-[WebView _dispatchTileDidDraw:]):
        (-[WebView encodeWithCoder:]):
        (-[WebView mainFrameIcon]):
        (LayerFlushController::flushLayers):
        * WebView/WebWindowAnimation.mm:
        (setScaledFrameForWindow):

2018-09-10  Fujii Hironori  <Hironori.Fujii@sony.com>

        Remove unused needsDestruction class variables from HashTraits
        https://bugs.webkit.org/show_bug.cgi?id=189490

        Reviewed by Daniel Bates.

        * History/BinaryPropertyList.cpp: Removed needsDestruction.

2018-09-07  Frederic Wang  <fwang@igalia.com>

        [CSSOM View] Handle the scrollingElement in Element::scroll(Left/Top/Width/Height/To)
        https://bugs.webkit.org/show_bug.cgi?id=182230

        Reviewed by Simon Fraser.

        * DOM/DOMDocument.mm:
        (-[DOMDocument scrollingElement]): Use the new name.

2018-09-06  Wenson Hsieh  <wenson_hsieh@apple.com>

        Refactor WebCore::EditAction to be an 8-bit enum class
        https://bugs.webkit.org/show_bug.cgi?id=189383

        Reviewed by Dan Bernstein.

        * WebCoreSupport/WebEditorClient.mm:
        (undoNameForEditAction):
        * WebView/WebHTMLView.mm:
        (-[WebHTMLView pasteFont:]):
        (-[WebHTMLView changeFont:]):
        (-[WebHTMLView changeAttributes:]):
        (-[WebHTMLView _undoActionFromColorPanelWithSelector:]):
        (-[WebHTMLView changeColor:]):
        * WebView/WebView.mm:
        (-[WebView setTypingStyle:]):

2018-09-06  Frederic Wang  <fwang@igalia.com>

        Group options of scrollRectToVisible into a struct
        https://bugs.webkit.org/show_bug.cgi?id=189352

        Reviewed by Simon Fraser.

        * WebView/WebFrame.mm: Add header to use ScrollRectToVisibleOptions.
        (-[WebFrame _scrollDOMRangeToVisible:]): Pass options via a struct.
        (-[WebFrame _scrollDOMRangeToVisible:withInset:]): Ditto.

2018-09-06  Wenson Hsieh  <wenson_hsieh@apple.com>

        [macOS] Cannot change font size at selection until font panel is shown
        https://bugs.webkit.org/show_bug.cgi?id=189295
        <rdar://problem/35593389>

        Reviewed by Ryosuke Niwa.

        Remove code in WebKitLegacy for diffing NSFonts to figure out which style properties need to be changed. See
        WebCore ChangeLog for more details.

        * WebView/WebHTMLView.mm:
        (-[WebHTMLView changeFont:]):
        (-[WebHTMLView changeAttributes:]):
        (-[WebHTMLView _originalFontA]): Deleted.
        (-[WebHTMLView _originalFontB]): Deleted.
        (fontNameForDescription): Deleted.
        (-[WebHTMLView _addToStyle:fontA:fontB:]): Deleted.
        (-[WebHTMLView _styleFromFontManagerOperation]): Deleted.
        (-[WebHTMLView _styleForAttributeChange:]): Deleted.

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

        Add MediaCapabilities as an Experimental Feature
        https://bugs.webkit.org/show_bug.cgi?id=189209

        Reviewed by Eric Carlson.

        RuntimeEnabledFeature -> Setting.

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

2018-09-04  Frederic Wang  <fwang@igalia.com>

        Add basic support for ScrollIntoViewOptions
        https://bugs.webkit.org/show_bug.cgi?id=189258

        Reviewed by Simon Fraser.

        * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMElementGtk.cpp: Add ScrollIntoViewOptions
        header so that this file can build despite the new scrollIntoView function.

2018-09-04  Wenson Hsieh  <wenson_hsieh@apple.com>

        Populate "text/uri-list" with multiple URLs when the pasteboard contains multiple URLs
        https://bugs.webkit.org/show_bug.cgi?id=188890
        <rdar://problem/43648605>

        Reviewed by Tim Horton.

        Add some plumbing through pasteboard classes to support `Pasteboard::readAllStrings`. See WebCore ChangeLog for
        more detail.

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

2018-09-01  Darin Adler  <darin@apple.com>

        [CFNetwork] Update CFNetwork SPI use to use CFNetworkSPI.h more consistently
        https://bugs.webkit.org/show_bug.cgi?id=189072
        Reviewed by Dan Bernstein.

        * Misc/WebDownload.mm: Removed forward declaration of NSURLConnectionDelegateProxy
        and declarations for NSURLDownload init methods.

        * Misc/WebDownloadInternal.h: Removed.

        * WebCoreSupport/WebFrameLoaderClient.mm: Removed include of WebDownloadInternal.h.
        (WebFrameLoaderClient::convertMainResourceLoadToDownload): Ignore
        "-Wdeprecated-declarations" because the method used here is deprecated.

        * WebView/WebView.mm:
        (-[WebView _downloadURL:]): Ignore "-Wdeprecated-declarations" because the method
        used here is deprecated.

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

        Assertion hit in ~CompletionHandler() from ~WebFrame()
        https://bugs.webkit.org/show_bug.cgi?id=189199
        <rdar://problem/42657233>

        Reviewed by Youenn Fablet.

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

2018-08-31  Antti Koivisto  <antti@apple.com>

        Replace OptionSet |= and -= operators with add() and remove() functions
        https://bugs.webkit.org/show_bug.cgi?id=189169

        Reviewed by Anders Carlsson.

        * WebView/WebFrame.mm:
        (-[WebFrame _drawRect:contentsOnly:]):
        * WebView/WebView.mm:
        (coreOptions):

2018-08-31  Frederic Wang  <fwang@igalia.com>

        Bug 182053 - [CSSOM View] Implement standard behavior for scrollingElement
        https://bugs.webkit.org/show_bug.cgi?id=182053

        Reviewed by Simon Fraser.

        Add developer flag to use standard behavior for scrolling* attributes.

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

2018-08-29  Olivia Barnett  <obarnett@apple.com>

        Implement the Web Share API
        https://bugs.webkit.org/show_bug.cgi?id=171100
        <rdar://problem/31751734>

        Reviewed by Tim Horton.

        * WebCoreSupport/WebChromeClient.h:
        * WebCoreSupport/WebChromeClient.mm:
        (WebChromeClient::showShareSheet):
        Empty declaration of showShareSheet.

2018-08-29  Youenn Fablet  <youenn@apple.com>

        Remove WebRTC legacy API implementation
        https://bugs.webkit.org/show_bug.cgi?id=189040

        Reviewed by Eric Carlson.

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

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

        Work towards: [iOS] Consolidate the implementations of readString, stringForType, and readURL in PlatformPasteboardIOS.mm
        https://bugs.webkit.org/show_bug.cgi?id=189054

        Reviewed by Andy Estes.

        Remove the pasteboard type argument from readURLFromPasteboard.

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

2018-08-27  Keith Rollin  <krollin@apple.com>

        Unreviewed build fix -- disable LTO for production builds

        * Configurations/Base.xcconfig:

2018-08-27  Aditya Keerthi  <akeerthi@apple.com>

        Consolidate ENABLE_INPUT_TYPE_COLOR and ENABLE_INPUT_TYPE_COLOR_POPOVER
        https://bugs.webkit.org/show_bug.cgi?id=188931

        Reviewed by Wenson Hsieh.

        * Configurations/FeatureDefines.xcconfig: Removed ENABLE_INPUT_TYPE_COLOR_POPOVER.

2018-08-27  Keith Rollin  <krollin@apple.com>

        Build system support for LTO
        https://bugs.webkit.org/show_bug.cgi?id=187785
        <rdar://problem/42353132>

        Reviewed by Dan Bernstein.

        Update Base.xcconfig and DebugRelease.xcconfig to optionally enable
        LTO.

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

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

        Pass in IsComposed flag to Event constructors
        https://bugs.webkit.org/show_bug.cgi?id=188720
        <rdar://problem/43580387>

        Reviewed by Simon Fraser.

        * WebView/WebPDFView.mm:
        (-[WebPDFView PDFViewWillClickOnLink:withURL:]): A trusted click event is composed regardless of
        whether it's simulated or not.

2018-08-23  Mark Lam  <mark.lam@apple.com>

        Move vmEntryGlobalObject() to VM from CallFrame.
        https://bugs.webkit.org/show_bug.cgi?id=188900
        <rdar://problem/43655753>

        Reviewed by Michael Saboff.

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

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

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

        Reviewed by Tim Horton.

        * Configurations/FeatureDefines.xcconfig:

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

        Replace booleans for modifier keys in UIEventWithKeyState with OptionSet<Modifier>
        https://bugs.webkit.org/show_bug.cgi?id=188777

        Reviewed by Simon Fraser.

        Create MouseEvent::create with IsSimulated set to Yes; correspoding to the last argument
        being "true" before the code change.

        Use modifiersForEvent to convert [nsEvent modifierFlags] to OptionSet<Modifier>.

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

2018-08-21  Daniel Bates  <dabates@apple.com>

        Replace TextCheckingTypeMask with OptionSet
        https://bugs.webkit.org/show_bug.cgi?id=188678

        Reviewed by Antti Koivisto.

        Currently we have code in WebEditorClient::checkTextOfParagraph() that incorrectly assumes
        that the enumerators of TextCheckingType have a one-to-one correspondence with NSTextCheckingType.
        (This is not the case because there is not corresponding NSTextCheckingType for TextCheckingTypeShowCorrectionPanel).
        We now explicitly convert from OptionSet<TextCheckingType> to NSTextCheckingTypes.

        * WebCoreSupport/WebEditorClient.h:
        * WebCoreSupport/WebEditorClient.mm:
        (WebEditorClient::checkTextOfParagraph):
        (WebEditorClient::shouldEraseMarkersAfterChangeSelection const):
        (core): Fix up code style nits; compare resultType on the right-hand side instead of the
        left as this is more readable and unncessary now that modern compilers like Clang have
        diagnostics to catch accidental assignments when equality was intended.
        (WebEditorClient::didCheckSucceed):
        * WebView/WebView.mm:
        (coreTextCheckingType):
        (textCheckingResultFromNSTextCheckingResult):

2018-08-21  Daniel Bates  <dabates@apple.com>

        [iOS][WK1] Support toggling continuous spell checking from tests
        https://bugs.webkit.org/show_bug.cgi?id=188763

        Reviewed by Simon Fraser.

        Move some more code out from under a !PLATFORM(IOS)-guard so as to support toggling continuous
        spell checking from tests in iOS WebKit Legacy.

        * WebCoreSupport/WebEditorClient.h:
        (WebEditorClient::toggleContinuousSpellChecking): Deleted.
        * WebCoreSupport/WebEditorClient.mm:
        * WebView/WebView.h:
        * WebView/WebView.mm:
        (-[WebView toggleContinuousSpellChecking:]):
        (-[WebView toggleSmartInsertDelete:]):

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

        Add some plumbing for safe browsing
        https://bugs.webkit.org/show_bug.cgi?id=188709

        Reviewed by Tim Horton.

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

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

        Replace canBubble and cancelable booleans in Event by enum classes
        https://bugs.webkit.org/show_bug.cgi?id=188692

        Reviewed by Alex Christensen.

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

2018-08-16  Jer Noble  <jer.noble@apple.com>

        Add Experimental Feature support for SourceBuffer.changeType()
        https://bugs.webkit.org/show_bug.cgi?id=188626
        <rdar://problem/43356021>

        Reviewed by Eric Carlson.

        Add a new WebPreference property mapping to the WebCore SourceBufferChangeTypeEnabled setting.

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

2018-08-16  Aditya Keerthi  <akeerthi@apple.com>

        Support drag-and-drop for input[type=color]
        https://bugs.webkit.org/show_bug.cgi?id=188464

        Reviewed by Wenson Hsieh.

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

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

        Crashes in Quip under _dictionaryPopupInfoForRange, in setObject:forKey:
        https://bugs.webkit.org/show_bug.cgi?id=188569
        <rdar://problem/34201095>

        Reviewed by Megan Gardner.

        * WebView/WebImmediateActionController.mm:
        (+[WebImmediateActionController _dictionaryPopupInfoForRange:inFrame:withLookupOptions:indicatorOptions:transition:]):
        Speculative fix; the crashes indicate font is null, but we just checked it,
        so it must be getting made null by convertFont:toSize:. Check again!

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

        Use a 1-byte enum class for TextDirection
        https://bugs.webkit.org/show_bug.cgi?id=188350

        Reviewed by Simon Fraser.

        * WebCoreSupport/PopupMenuMac.mm:
        (PopupMenuMac::populate):
        (PopupMenuMac::show):
        * WebCoreSupport/WebFrameLoaderClient.mm:
        (WebFrameLoaderClient::transitionToCommittedForNewPage):
        * WebView/WebFrame.mm:
        (-[WebFrame _dispatchDidReceiveTitle:]):

2018-08-09  Ali Juma  <ajuma@chromium.org>

        Import WPTs for IntersectionObserver
        https://bugs.webkit.org/show_bug.cgi?id=188416

        Reviewed by Simon Fraser.

        * WebView/WebPreferencesPrivate.h:

2018-08-08  Jonathan Bedard  <jbedard@apple.com>

        Follow-up build fix for r234685
        https://bugs.webkit.org/show_bug.cgi?id=188245

        Unreviewed build fix.

        * WebCoreSupport/WebSecurityOriginPrivate.h:

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

        [Cocoa] More tweaks and refactoring to prepare for ARC
        https://bugs.webkit.org/show_bug.cgi?id=188245

        Reviewed by Dan Bernstein.

        * Carbon/CarbonUtils.m: Updated include for rename: FoundationSPI.h -> objcSPI.h.

        * Carbon/CarbonWindowFrame.m:
        (-[CarbonWindowFrame dealloc]): Deleted. It was empty.

        * DOM/DOM.mm:
        (-[DOMElement _imageTIFFRepresentation]): Use a bridging cast.
        (-[DOMNodeFilter finalize]): Deleted. WebKit no longer supports Objective-C
        garbage collection so this method isn't useful.

        * DOM/DOMXPath.mm:
        (-[DOMNativeXPathNSResolver finalize]): Deleted. WebKit no longer supports
        Objective-C garbage collection so this method isn't useful.

        * History/WebHistory.mm:
        (-[WebHistoryPrivate data]): Allocate an NSData instead of casting from a CFData.

        * Misc/WebElementDictionary.mm:
        (addLookupKey): Use a bridging cast.
        (cacheValueForKey): Ditto.
        (-[WebElementDictionary _fillCache]): Ditto.
        (-[WebElementDictionary objectForKey:]): Ditto.

        * Misc/WebKitNSStringExtras.mm:
        (-[NSString _web_drawAtPoint:font:textColor:]): Use a bridging cast.
        (-[NSString _web_widthWithFont:]): Ditto.
        (-[NSString _webkit_stringByTrimmingWhitespace]): Ditto.

        * Misc/WebLocalizableStrings.mm:
        (WebLocalizedString): Use a bridging cast.

        * Misc/WebNSDataExtras.mm:
        (-[NSString _web_capitalizeRFC822HeaderFieldName]): Use a bridging cast
        and use CFBridgingRelease instead of calling autorelease directly.
        (-[NSData _webkit_parseRFC822HeaderFields]): Use NSString methods instead
        of a mix of CFString and NSString. Also simplified logic a bit, and cut down
        on the amount of explicit release and autorelease.

        * Misc/WebNSDictionaryExtras.h: Deleted unused methods.
        * Misc/WebNSDictionaryExtras.m:
        (-[NSDictionary _webkit_intForKey:]): Deleted.
        (-[NSMutableDictionary _webkit_setInt:forKey:]): Deleted.
        (-[NSMutableDictionary _webkit_setFloat:forKey:]): Deleted.
        (-[NSMutableDictionary _webkit_setBool:forKey:]): Deleted.
        (-[NSMutableDictionary _webkit_setLongLong:forKey:]): Deleted.
        (-[NSMutableDictionary _webkit_setUnsignedLongLong:forKey:]): Deleted.
        (-[NSMutableDictionary _webkit_setUnsignedInt:forKey:]): Deleted.

        * Misc/WebStringTruncator.mm:
        (fontFromNSFont): Use a bridging cast.

        * Plugins/Hosted/NetscapePluginHostManager.mm:
        (WebKit::preferredBundleLocalizationName): Use a bridging cast and CFBridgingRelease.

        * Plugins/Hosted/NetscapePluginInstanceProxy.mm:
        (WebKit::NetscapePluginInstanceProxy::cleanup): Use a bridging cast.
        (WebKit::NetscapePluginInstanceProxy::status): Ditto.
        (WebKit::NetscapePluginInstanceProxy::loadURL): Ditto.
        (WebKit::NetscapePluginInstanceProxy::demarshalValueFromArray): Ditto.
        * Plugins/Hosted/ProxyInstance.mm:
        (WebKit::ProxyInstance::getPropertyNames): Ditto.
        * Plugins/WebBasePluginPackage.mm:
        (-[WebBasePluginPackage _objectForInfoDictionaryKey:]): Ditto.
        * Plugins/WebNetscapePluginEventHandlerCocoa.mm:
        (WebNetscapePluginEventHandlerCocoa::platformWindow): Ditto.
        * Plugins/WebNetscapePluginPackage.mm:
        (-[WebNetscapePluginPackage _initWithPath:]): Ditto.

        * Plugins/WebNetscapePluginView.mm:
        (-[WebNetscapePluginView _postURL:target:len:buf:file:notifyData:sendNotification:allowHeaders:]):
        Use bridging casts and use RetainPtr insteead of an explicit CFRelease.
        (-[WebNetscapePluginView status:]): Use a bridging cast.
        (-[WebNetscapePluginView popUpContextMenu:]): Ditto.

        * Plugins/WebPluginController.mm:
        (-[WebPluginController _cancelOutstandingChecks]): Use a bridging cast.

        * Plugins/WebPluginDatabase.mm:
        (checkCandidate): Use explicit __strong for out argument types.

        * Plugins/npapi.mm:
        (pluginViewForInstance): Use a bridging cast.

        * Storage/WebDatabaseManager.mm:
        (-[WebDatabaseManager detailsForDatabase:withOrigin:]): Use modern boxing instead of
        explicit NSNumber and NSDictionary calls.

        * WebCoreSupport/WebContextMenuClient.mm:
        (WebContextMenuClient::speak): Remove an unnecessary copy/autorelease pair.

        * WebCoreSupport/WebEditorClient.mm:
        (WebEditorClient::handleKeyboardEvent): Added a missing typecast.
        (WebEditorClient::handleInputMethodKeydown): Ditto.

        * WebCoreSupport/WebFrameNetworkingContext.mm:
        (WebFrameNetworkingContext::sourceApplicationAuditData const): Use a bridging cast.

        * WebCoreSupport/WebSecurityOriginPrivate.h: Forward declare WebSecurityOriginPrivate
        as a struct rather than an Objective-C class, since that's how it's defined.

        * WebInspector/WebNodeHighlighter.mm: Added missing includes.

        * WebView/WebFullScreenController.mm:
        (-[WebFullScreenController enterFullScreen:]): Use a bridging cast.
        * WebView/WebHTMLView.mm:
        (-[WebHTMLView _writeSelectionWithPasteboardTypes:toPasteboard:cachedAttributedString:]):
        Ditto.
        (-[WebHTMLView pasteboard:provideDataForType:]): Ditto.

        * WebView/WebImmediateActionController.mm:
        (-[WebImmediateActionController performHitTestAtPoint:]): Removed redundant code to
        go down to the document and then back to the frame.
        (-[WebImmediateActionController immediateActionRecognizerDidUpdateAnimation:]): Ditto.
        (-[WebImmediateActionController immediateActionRecognizerDidCancelAnimation:]): Ditto.
        (-[WebImmediateActionController immediateActionRecognizerDidCompleteAnimation:]): Ditto.

        * WebView/WebJSPDFDoc.mm:
        (jsPDFDocInitialize): Removed some unneeded type casting.
        (jsPDFDocFinalize): Ditto.
        (jsPDFDocPrint): Use a bridging cast.

        * WebView/WebPDFView.mm:
        (_applicationInfoForMIMEType): Use bridging casts.

        * WebView/WebPreferences.mm:
        (-[WebPreferences _setIntegerValue:forKey:]): Use boxing and setObject directly
        instead of methods from WebNSDictionaryExtras.
        (-[WebPreferences _setUnsignedIntValue:forKey:]): Ditto.
        (-[WebPreferences _setFloatValue:forKey:]): Ditto.
        (-[WebPreferences _setBoolValue:forKey:]): Ditto.
        (-[WebPreferences _setLongLongValue:forKey:]): Ditto.
        (-[WebPreferences _setUnsignedLongLongValue:forKey:]): Ditto.

        * WebView/WebView.mm:
        (-[WebView _removeFromAllWebViewsSet]): Use bridging cast.
        (-[WebView _addToAllWebViewsSet]): Ditto.
        (+[WebView closeAllWebViews]): Use a modern for loop instead of NSEnumerator.
        (-[WebView _windowVisibilityChanged:]): Moved this into the internal category
        so it can be called from WebViewData methods.

        * WebView/WebViewData.mm: Added an import so we can call an internal WebView
        method, _windowVisibilityChanged:.

        * WebView/WebViewInternal.h: Declared _windowVisibilityChanged: so it can be
        called from WebViewData methods.

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

        Use enum classes and OptionSets for PaintPhase and PaintBehavior
        https://bugs.webkit.org/show_bug.cgi?id=188323

        Reviewed by Simon Fraser.

        * WebCoreSupport/WebContextMenuClient.mm:
        (WebContextMenuClient::imageForCurrentSharingServicePickerItem):
        * WebView/WebFrame.mm:
        (-[WebFrame _paintBehaviorForDestinationContext:]):
        (-[WebFrame _drawRect:contentsOnly:]):
        * WebView/WebHTMLView.mm:
        (imageFromRect):
        (selectionImage):

2018-08-05  Yusuke Suzuki  <utatane.tea@gmail.com>

        Add support for microtasks in workers
        https://bugs.webkit.org/show_bug.cgi?id=188246

        Reviewed by Darin Adler.

        Rename JSMainThreadExecState.h to JSExecState.h.

        * DOM/DOMAttr.mm:
        * DOM/DOMBlob.mm:
        * DOM/DOMCDATASection.mm:
        * DOM/DOMCSSCharsetRule.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/DOMElement.mm:
        * DOM/DOMEvent.mm:
        * DOM/DOMFile.mm:
        * DOM/DOMFileList.mm:
        * DOM/DOMHTML.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/DOMHTMLTextAreaElement.mm:
        * DOM/DOMHTMLTitleElement.mm:
        * DOM/DOMHTMLUListElement.mm:
        * DOM/DOMHTMLVideoElement.mm:
        * DOM/DOMImplementation.mm:
        * DOM/DOMKeyboardEvent.mm:
        * DOM/DOMMediaError.mm:
        * DOM/DOMMediaList.mm:
        * DOM/DOMMouseEvent.mm:
        * DOM/DOMMutationEvent.mm:
        * DOM/DOMNamedNodeMap.mm:
        * DOM/DOMNode.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/DOMXPathExpression.mm:
        * DOM/DOMXPathResult.mm:
        * DOM/ObjCEventListener.mm:

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

        Fix spelling of "overridden"
        https://bugs.webkit.org/show_bug.cgi?id=188315

        Reviewed by Darin Adler.

        * Misc/WebKitVersionChecks.mm:
        (setWebKitLinkTimeVersion):
        (WebKitLinkTimeVersion):
        * Plugins/WebBaseNetscapePluginView.mm:
        (-[WebBaseNetscapePluginView handleMouseMoved:]):
        * WebCoreSupport/PopupMenuMac.mm:
        (PopupMenuMac::populate):

2018-08-01  Nan Wang  <n_wang@apple.com>

        AX: AOM: Add ARIA IDL Attribute Reflection
        https://bugs.webkit.org/show_bug.cgi?id=184676
        <rdar://problem/39476882>

        Reviewed by Chris Fleizach.

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

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

        Shrink GraphicsLayerCA
        https://bugs.webkit.org/show_bug.cgi?id=188141

        Reviewed by Zalan Bujtas.

        Shrink GraphicsLayerCA from 1040 to 880 bytes by:
        * moving all the clone-related stuff into the lazily-allocated m_layerClones
        * moving all the animation-related stuff into the lazily-allocated m_animations
        * making enums be 8-bit
        * re-ordering data members

        * WebView/WebView.mm:
        (-[WebView _setMediaLayer:forPluginView:]):

2018-07-30  Rob Buis  <rbuis@igalia.com>

        Merge PlatformCookieJar functions into NetworkStorageSession
        https://bugs.webkit.org/show_bug.cgi?id=188137

        Adapt callsites to use NetworkStorageSession instead of CookieJar functions.

        Reviewed by Alex Christensen.

        * WebCoreSupport/WebPlatformStrategies.mm:
        (WebPlatformStrategies::cookiesForDOM):
        (WebPlatformStrategies::setCookiesFromDOM):
        (WebPlatformStrategies::cookiesEnabled):
        (WebPlatformStrategies::cookieRequestHeaderFieldValue):
        (WebPlatformStrategies::getRawCookies):
        (WebPlatformStrategies::deleteCookie):
        * WebView/WebPreferences.mm:
        (+[WebPreferences _clearNetworkLoaderSession]):

2018-07-28  Darin Adler  <darin@apple.com>

        [Cocoa] Update more WebCore Objective-C code to be ARC compatible
        https://bugs.webkit.org/show_bug.cgi?id=188140

        Reviewed by Sam Weinig.

        * WebView/WebImmediateActionController.mm:
        (-[WebImmediateActionController _animationControllerForText]): Updated to use the
        new DictionaryLookup function that returns a tuple instead of using an out argument.

2018-07-26  Andy VanWagoner  <andy@vanwagoner.family>

        [INTL] Remove INTL sub-feature compile flags
        https://bugs.webkit.org/show_bug.cgi?id=188081

        Reviewed by Michael Catanzaro.

        * Configurations/FeatureDefines.xcconfig:

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

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

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

        Reverted changesets:

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

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

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

        Use the Page's appearance when converting pasteboard attributed strings.
        https://bugs.webkit.org/show_bug.cgi?id=188067
        rdar://problem/42632246

        Reviewed by Wenson Hsieh.

        * WebCoreSupport/WebEditorClient.mm:
        (_WebCreateFragment): Create a LocalDefaultSystemAppearance based on the Page.

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

        navigator.userAgent may return outdated value after webView.customUserAgent is set
        https://bugs.webkit.org/show_bug.cgi?id=188009
        <rdar://problem/42566456>

        Reviewed by Alex Christensen.

        Let the page know when the user agent changes.

        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]):
        (-[WebView setApplicationNameForUserAgent:]):
        (-[WebView _invalidateUserAgentCache]):
        (-[WebView setCustomUserAgent:]):
        * WebView/WebViewInternal.h:

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

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

        Reviewed by Wenson Hsieh.

        * Configurations/FeatureDefines.xcconfig:

2018-07-20  Ryosuke Niwa  <rniwa@apple.com>

        Picking a color from the color panel for typing attributes needs to inverse transform through color-filter
        https://bugs.webkit.org/show_bug.cgi?id=187846

        Reviewed by Simon Fraser.

        Invert the filtered font and background colors when using font panels, font pasteboard, and other Objective-C APIs.

        * WebView/WebHTMLView.mm:
        (-[WebHTMLView _applyStyleToSelection:withUndoAction:]): Share code with _applyEditingStyleToSelection.
        (-[WebHTMLView _applyEditingStyleToSelection:withUndoAction:]):

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

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

        Reviewed by Simon Fraser.

        Add a new WebPreference for punching out white backgrounds.

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

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

        Ensure WebKit stack is ad-hoc signed
        https://bugs.webkit.org/show_bug.cgi?id=187667

        Reviewed by Alexey Proskuryakov.

        * Configurations/Base.xcconfig:

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

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

        Reviewed by Ryosuke Niwa.

        Renamed methods to make it clear that one URL and one title are being passed in.

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

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

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

        Reviewed by Chris Dumez.

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

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

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

        Reviewed by Tim Horton.

        * WebView/WebView.mm:
        (-[WebView _commonInitializationWithFrameName:groupName:]): Removed call to
        _updateDefaultAppearance, which called setUseDarkAppearance. There is already
        a call in this method to setUseDarkAppearance.
        (-[WebView _setUseSystemAppearance:]): Just call the page, not setUseDarkAppearance.
        (-[WebView viewDidChangeEffectiveAppearance]): Added. This is the proper NSView method to use.
        (-[WebView _updateDefaultAppearance]): Deleted.
        (-[WebView effectiveAppearanceDidChange]): Deleted. This method is a deprecated name.

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

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

        Reviewed by Chris Dumez.

        * WebCoreSupport/WebFrameLoaderClient.mm:
        (WebFrameLoaderClient::convertMainResourceLoadToDownload):
        (WebFrameLoaderClient::dispatchDidLoadResourceFromMemoryCache):
        (WebFrameLoaderClient::assignIdentifierToInitialRequest):
        (WebFrameLoaderClient::dispatchWillSendRequest):
        (WebFrameLoaderClient::dispatchDecidePolicyForResponse):
        (WebFrameLoaderClient::dispatchDecidePolicyForNewWindowAction):
        (WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
        (WebFrameLoaderClient::updateGlobalHistory):
        (WebFrameLoaderClient::canHandleRequest const):
        * WebView/WebDataSource.mm:
        (-[WebDataSource initialRequest]):
        (-[WebDataSource request]):

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

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

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

        Reverted changeset:

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

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

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

        Reviewed by Tim Horton.

        * WebView/WebView.mm:
        (-[WebView _commonInitializationWithFrameName:groupName:]): Removed call to
        _updateDefaultAppearance, which called setUseDarkAppearance. There is already
        a call in this method to setUseDarkAppearance.
        (-[WebView _setUseSystemAppearance:]): Just call the page, not setUseDarkAppearance.
        (-[WebView viewDidChangeEffectiveAppearance]): Added. This is the proper NSView method to use.
        (-[WebView _updateDefaultAppearance]): Deleted.
        (-[WebView effectiveAppearanceDidChange]): Deleted. This method is a deprecated name.

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

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

        Reviewed by Tim Horton.

        * WebView/WebMediaPlaybackTargetPicker.mm:
        (WebMediaPlaybackTargetPicker::showPlaybackTargetPicker):
        * WebView/WebView.mm:
        (-[WebView _commonInitializationWithFrameName:groupName:]):
        (-[WebView _effectiveAppearanceIsDark]):
        (-[WebView _updateDefaultAppearance]):
        (-[WebView _defaultAppearance]): Deleted.

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

        Youtube video pages crash after a couple of minutes
        https://bugs.webkit.org/show_bug.cgi?id=187316

        Reviewed by Antti Koivisto.

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

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

        Introduce PLATFORM(IOSMAC)
        https://bugs.webkit.org/show_bug.cgi?id=187315

        Reviewed by Dan Bernstein.

        * Configurations/Base.xcconfig:
        * Configurations/FeatureDefines.xcconfig:

2018-06-28  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] DataTransfer.getData always returns the empty string when dropping text
        https://bugs.webkit.org/show_bug.cgi?id=187130
        <rdar://problem/41014117>

        Reviewed by Ryosuke Niwa.

        Add plumbing to grab information for each item in the pasteboard. See WebCore ChangeLog for more detail.

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

2018-06-26  Eric Carlson  <eric.carlson@apple.com>

        [Mac] AirPlay picker uses incorrect theme in Dark mode
        https://bugs.webkit.org/show_bug.cgi?id=187054
        <rdar://problem/41291093>

        Reviewed by Timothy Hatcher.

        * WebView/WebMediaPlaybackTargetPicker.mm:
        (WebMediaPlaybackTargetPicker::showPlaybackTargetPicker): Pass page->defaultAppearance().

2018-06-23  Yusuke Suzuki  <utatane.tea@gmail.com>

        [WTF] Add user-defined literal for ASCIILiteral
        https://bugs.webkit.org/show_bug.cgi?id=186839

        Reviewed by Darin Adler.

        * DOM/ExceptionHandlers.mm:
        (raiseDOMErrorException):
        * Plugins/Hosted/ProxyInstance.mm:
        (WebKit::ProxyInstance::invokeMethod):
        * Storage/WebDatabaseProvider.mm:
        (WebDatabaseProvider::indexedDatabaseDirectoryPath):

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

        Recalc styles every time defaultAppearance changes.
        https://bugs.webkit.org/show_bug.cgi?id=186866
        rdar://problem/41309805

        Reviewed by Tim Horton.

        * WebView/WebView.mm:
        (-[WebView _updateDefaultAppearance]):
        (-[WebView _setUseSystemAppearance:]):
        (-[WebView _useSystemAppearance]):

2018-06-20  Darin Adler  <darin@apple.com>

        [Cocoa] Use the isDirectory: variants of NSURL methods more to eliminate unnecessary file system activity
        https://bugs.webkit.org/show_bug.cgi?id=186875

        Reviewed by Anders Carlsson.

        * WebView/WebHTMLView.mm:
        (-[WebHTMLView namesOfPromisedFilesDroppedAtDestination:]): Use isDirectory:NO for the URL of the location
        to write te file to.
        * WebView/WebPreferences.mm:
        (-[WebPreferences userStyleSheetLocation]): Use isDirectory:NO to create a URL for the user style sheet.
        * WebView/WebView.mm:
        (-[WebView setMainFrameURL:]): Use isDirectory:NO to create a URL for a local webpage to load.

2018-06-12  Darin Adler  <darin@apple.com>

        [Cocoa] Make some RetainPtr refinements to get more ready for ARC
        https://bugs.webkit.org/show_bug.cgi?id=186526

        Reviewed by Anders Carlsson.

        * Plugins/Hosted/NetscapePluginHostManager.mm:
        (WebKit::preferredBundleLocalizationName): Use bridgingAutorelease.

        * Plugins/Hosted/WebHostedNetscapePluginView.mm:
        (-[WebHostedNetscapePluginView createPluginLayer]): Use move
        assignment rather than adoptNS/leakRef.
        * Plugins/WebNetscapePluginView.mm:
        (-[WebNetscapePluginView createPlugin]): Ditto.

        * WebCoreSupport/WebContextMenuClient.mm:
        (WebContextMenuClient::contextMenuForEvent): Get rid of unnecessary use of
        RetainPtr::autorelease; no need to autorelease just to pass something as a function
        argument, so use RetainPtr::get instead.

        * WebView/WebHTMLView.mm:
        (customMenuFromDefaultItems): Get rid of of unnecessary use of RetainPtr::autorelease.
        No need to autorelease the result when the return type is RetainPtr.

        * WebView/WebPDFRepresentation.mm:
        (-[WebPDFRepresentation convertPostScriptDataSourceToPDF:]): Use bridgingAutorelease.

2018-06-13  Youenn Fablet  <youenn@apple.com>

        Supported plugin check should be based on plugin identifier
        https://bugs.webkit.org/show_bug.cgi?id=186578
        <rdar://problem/40523828>

        Reviewed by Darin Adler.

        * WebCoreSupport/WebPluginInfoProvider.h:
        * WebCoreSupport/WebPluginInfoProvider.mm:
        (WebPluginInfoProvider::pluginInfo):
        (WebPluginInfoProvider::webVisiblePluginInfo):

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

        PSON: http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-top-frame-redirect-collusion.html ASSERTS with process swap enabled
        https://bugs.webkit.org/show_bug.cgi?id=186545

        Reviewed by Brady Eidson.

        Update client delegate now that parameter type has changed.

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

2018-06-11  Tim Horton  <timothy_horton@apple.com>

        Link drag image is inconsistently unreadable in dark mode
        https://bugs.webkit.org/show_bug.cgi?id=186472

        Reviewed by Timothy Hatcher.

        * WebView/WebView.mm:
        (-[WebView _defaultAppearance]):
        Make defaultAppearance accurate even if useSystemAppearance is false.
        Some parts of WebKit (like the link drag image, but also context menus)
        want to be able to follow the system appearance regardless of whether
        the view or content has opted in.

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

        http/tests/security/cors-post-redirect-307.html fails with PSON enabled
        https://bugs.webkit.org/show_bug.cgi?id=186441

        Reviewed by Brady Eidson.

        Rename existing flag to something a bit more generic, now that it is used for
        more things than bypassing the navigation policy check.

        * WebView/WebView.mm:
        (-[WebView _loadBackForwardListFromOtherView:]):
        (-[WebView goToBackForwardItem:]):

2018-06-09  Dan Bernstein  <mitz@apple.com>

        [Xcode] Clean up and modernize some build setting definitions
        https://bugs.webkit.org/show_bug.cgi?id=186463

        Reviewed by Sam Weinig.

        * Configurations/Base.xcconfig: Removed definition for macOS 10.11.
        * Configurations/DebugRelease.xcconfig: Ditto.
        * Configurations/FeatureDefines.xcconfig: Simplified the definitions of ENABLE_APPLE_PAY and
          ENABLE_VIDEO_PRESENTATION_MODE now macOS 10.12 is the earliest supported version.
        * Configurations/Version.xcconfig: Removed definition for macOS 10.11.
        * Configurations/WebKitLegacy.xcconfig: Simplified the definition of WK_PRIVATE_FRAMEWORKS_DIR
          now that WK_XCODE_SUPPORTS_TEXT_BASED_STUBS is true for all supported Xcode versions.
        * Configurations/WebKitTargetConditionals.xcconfig: Removed definitions for macOS 10.11.

2018-06-08  Darin Adler  <darin@apple.com>

        [Cocoa] Remove all uses of NSAutoreleasePool as part of preparation for ARC
        https://bugs.webkit.org/show_bug.cgi?id=186436

        Reviewed by Anders Carlsson.

        * Carbon/CarbonUtils.m: Updated include location of FoundationSPI.h.
        (getNSAutoreleasePoolCount): Use objc_autoreleasePoolPush/Pop.
        (WebInitForCarbon): Use objc_autoreleasePoolPush/Pop instead of NSAutoreleasePool object.
        (PoolCleaner): Ditto.

        * History/WebHistory.mm:
        (-[WebHistoryPrivate loadHistoryGutsFromURL:savedItemsCount:collectDiscardedItemsInto:error:]):
        Use @autoreleasepool instead of NSAutoreleasePool object. No need to do the "drain pool only
        every 50 times"; the -[WebHistory loadFromURL] family of methods were once used by Safari, and
        now hardly used if at all.
        * WebView/WebView.mm:
        (-[WebView rectsForTextMatches]): Ditto.

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

        [WebKit on watchOS] Upstream watchOS source additions to OpenSource (Part 1)
        https://bugs.webkit.org/show_bug.cgi?id=186442
        <rdar://problem/40879364>

        Reviewed by Tim Horton.

        * Configurations/FeatureDefines.xcconfig:

2018-06-08  Aditya Keerthi  <akeerthi@apple.com>

        [Datalist] Allow TextFieldInputType to show and hide suggestions
        https://bugs.webkit.org/show_bug.cgi?id=186151

        Reviewed by Tim Horton.

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

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

        Add base class to get WeakPtrFactory member and avoid some boilerplate code
        https://bugs.webkit.org/show_bug.cgi?id=186407

        Reviewed by Brent Fulgham.

        Add CanMakeWeakPtr base class to get WeakPtrFactory member and its getter, in
        order to avoid some boilerplate code in every class needing a WeakPtrFactory.
        This also gets rid of old-style createWeakPtr() methods in favor of the newer
        makeWeakPtr().

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

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

        Regression(r232082): Websites get loaded inside of Messages App chat transcript
        https://bugs.webkit.org/show_bug.cgi?id=186331
        <rdar://problem/40735446>

        Reviewed by Darin Adler.

        r232082 made it so that if the client implements decidePolicyForMIMEType / decidePolicyForNavigationAction
        but does not call use / ignore on the listener, then we would do "use" by default.
        The intention was to restore pre-AsyncPolicyDelegates behavior and unbreak Box.app. However,
        the pre-AsyncPolicyDelegates behavior was only to "use" by default for decidePolicyForMIMEType,
        not decidePolicyForNavigationAction. Doing "use" by default for decidePolicyForNavigationAction
        is new behavior and it breaks Messages.app. This patch updates r232082 so that we now do call
        "use" by default on the listener for decidePolicyForMIMEType and "ignore" by default for other
        policy decisions. This should restore pre-AsyncPolicyDelegates behavior. This fixes Messages.app
        and Box.app is still working properly.

        * WebCoreSupport/WebFrameLoaderClient.h:
        * WebCoreSupport/WebFrameLoaderClient.mm:
        (WebFrameLoaderClient::dispatchDecidePolicyForResponse):
        (WebFrameLoaderClient::dispatchDecidePolicyForNewWindowAction):
        (WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
        (WebFrameLoaderClient::dispatchWillSubmitForm):
        (WebFrameLoaderClient::setUpPolicyListener):
        (-[WebFramePolicyListener initWithFrame:policyFunction:defaultPolicy:]):
        (-[WebFramePolicyListener initWithFrame:policyFunction:defaultPolicy:appLinkURL:]):
        (-[WebFramePolicyListener dealloc]):
        (-[WebFramePolicyListener initWithFrame:policyFunction:]): Deleted.
        (-[WebFramePolicyListener initWithFrame:policyFunction:appLinkURL:]): Deleted.

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

        Adjust compile and runtime flags to match shippable state of features
        https://bugs.webkit.org/show_bug.cgi?id=186319
        <rdar://problem/40352045>

        Reviewed by Maciej Stachowiak, Jon Lee, and others.

        * Configurations/DebugRelease.xcconfig: Don't build ENABLE_INPUT_TYPE_COLOR
        or ENABLE_INPUT_TYPE_COLOR_POPOVER.
        * Configurations/FeatureDefines.xcconfig: Update to match WebKit definition of
        WK_RELOCATABLE_FRAMEWORKS so that ENABLE(EXPERIMENTAL_FEATURES) is defined properly for
        Cocoa builds.

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

        Clean up LocalDefaultSystemAppearance and prefers-dark-interface media query

        https://bugs.webkit.org/show_bug.cgi?id=186323
        rdar://problem/38382252

        Reviewed by Tim Horton.

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

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

        Revise DEFAULT_EXPERIMENTAL_FEATURES_ENABLED to work properly on Apple builds
        https://bugs.webkit.org/show_bug.cgi?id=186286
        <rdar://problem/40782992>

        Reviewed by Dan Bernstein.

        Use the WK_RELOCATABLE_FRAMEWORKS flag (which is always defined for non-production builds)
        to define ENABLE(EXPERIMENTAL_FEATURES) so that we do not need to manually
        change this flag when preparing for a production release.

        * Configurations/FeatureDefines.xcconfig: Use WK_RELOCATABLE_FRAMEWORKS to determine
        whether experimental features should be enabled, and use it to properly define the
        feature flag.

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

        Simplify and remove some unused video element code (helpful for ARC-compatibility)
        https://bugs.webkit.org/show_bug.cgi?id=186258

        Reviewed by Daniel Bates.

        * WebView/WebVideoFullscreenController.h: Removed some unneeded includes and
        forward declarations. Removed methods that don't need to be public.

        * WebView/WebVideoFullscreenController.mm: Added additional includes. Removed
        #if COMPILER(CLANG) since that's all we use on Mac. Moved fields into an
        unnamed category in here and also replaced the HUDWindowControllerDelegate
        with the unnamed category. Removed unused NSWindow category defining the
        isOnActiveSpace, which is not called anywhere in this file at this time.
        (-[WebVideoFullscreenController setupVideoOverlay:]): Deleted. Moved the code
        into setVideoElement.
        (-[WebVideoFullscreenController windowDidLoad]): Slightly rearranged the code
        and removed unneeded typecast.
        (-[WebVideoFullscreenController videoElement]): Updated to not rely on a
        using statement at the top of the file.
        (-[WebVideoFullscreenController setVideoElement:]): Added a comment about
        the many side effects and special considerations that this method that sounds
        like a setter has. Updated code to use the new
        MediaPlayer::objCAVFoundationAVPlayer function instead of the old
        HTMLVideoElement::platformMedia function. Also straightened out the logic a
        bit and added some FIXME comments about small problems noticed but not fixed.
        (-[WebVideoFullscreenController delegate]): Deleted. Was never called.
        (-[WebVideoFullscreenController setDelegate:]): Deleted. Was never called.
        (-[WebVideoFullscreenController windowDidExitFullscreen]): Removed unneeded
        typecast. Removed call to updatePowerAssertions method.
        (-[WebVideoFullscreenController windowDidEnterFullscreen]): Removed call to
        updatePowerAssertions method.
        (-[WebVideoFullscreenController updatePowerAssertions]): Deleted. This method
        set _displaySleepEnabler to nullptr, but nothing was ever setting it to anything
        else, so this was dead code that did nothing.
        (-[WebVideoFullscreenController rateChanged:]): Removed call to
        updatePowerAssertions method.

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

        Rename "Cross-Origin-Options" HTTP header to "Cross-Origin-Window-Policy"
        https://bugs.webkit.org/show_bug.cgi?id=186287
        <rdar://problem/40783352>

        Reviewed by Youenn Fablet.

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

2018-06-02  Darin Adler  <darin@apple.com>

        [Cocoa] Update some code to be more ARC-compatible to prepare for future ARC adoption
        https://bugs.webkit.org/show_bug.cgi?id=186227

        Reviewed by Dan Bernstein.

        * Misc/WebKitErrors.m:
        (+[NSError _registerWebKitErrors]): Use @autoreleasepool instead of NSAutoreleasePool.
        * Plugins/WebPluginDatabase.mm:
        (-[WebPluginDatabase refresh]): Ditto.
        * WebCoreSupport/WebChromeClient.mm:
        (WebChromeClient::setStatusbarText): Ditto.

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

        REGRESSION (r231456): Colloquy is broken
        https://bugs.webkit.org/show_bug.cgi?id=186197
        <rdar://problem/40722960>

        Reviewed by Timothy Hatcher.

        Restore pre-r231456 behavior for Colloquy app so that it works again.

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

2018-05-30  Yusuke Suzuki  <utatane.tea@gmail.com>

        [JSC] Pass VM& parameter as much as possible
        https://bugs.webkit.org/show_bug.cgi?id=186085

        Reviewed by Saam Barati.

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

2018-05-30  Daniel Bates  <dabates@apple.com>

        NavigationAction does not need to hold initiating DOM Event
        https://bugs.webkit.org/show_bug.cgi?id=185958
        <rdar://problem/40531539>

        Reviewed by Simon Fraser.

        Write in terms of NavigationAction::{keyStateEventData, mouseEventDataForFirstMouseEvent}().

        * WebCoreSupport/WebFrameLoaderClient.mm:
        (WebFrameLoaderClient::actionDictionary const):
        (findMouseEvent): Deleted.

2018-05-27  Dan Bernstein  <mitz@apple.com>

        Reverted the changes made for https://webkit.org/b/186016

        They broke the USE(APPLE_INTERNAL_SDK) Sierra build.


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

        [iOS] Fix warnings about leaks found by clang static analyzer
        <https://webkit.org/b/186009>
        <rdar://problem/40574267>

        Reviewed by Daniel Bates.

        * WebView/WebHTMLView.mm:
        (-[WebHTMLView doCommandBySelector:]): Fix use of an
        uninitialized boolean variable (`eventWasHandled`) that only
        happened on iOS.

2018-05-27  Dan Bernstein  <mitz@apple.com>

        [Cocoa] Avoid importing directly from subumbrella frameworks
        https://bugs.webkit.org/show_bug.cgi?id=186016

        Reviewed by Sam Weinig.

        * Carbon/CarbonWindowAdapter.h: Import Carbon.h instead of HIToolbox headers.
        * Carbon/CarbonWindowAdapter.mm: Ditto.
        * Carbon/CarbonWindowFrame.m: Ditto.
        * Carbon/HIViewAdapter.h: Ditto.
        * Configurations/WebKitLegacy.xcconfig: Removed -iframework options from OTHER_CFLAGS and
          OTHER_CPLUSPLUSFLAGS.
        * Plugins/WebNetscapePluginEventHandlerCarbon.mm: Import Carbon.h instead of CarbonEvents.h.
        * WebView/WebPDFDocumentExtras.mm: Import Quartz.h instead of a PDFKit header.
        * WebView/WebPDFView.h: Ditto.

2018-05-27  Sam Weinig  <sam@webkit.org>

        Modernize RenderStyleConstants.h - Part 3
        https://bugs.webkit.org/show_bug.cgi?id=186015

        Reviewed by Yusuke Suzuki.

        * WebView/WebView.mm:
        (-[WebView updateTextTouchBar]):
        Update for new enum name.

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

        Minor ApplicationCacheStorage clean up
        https://bugs.webkit.org/show_bug.cgi?id=185984

        Reviewed by Youenn Fablet.

        * WebCoreSupport/WebApplicationCache.mm:
        (+[WebApplicationCache originsWithCache]):

2018-05-25  David Kilzer  <ddkilzer@apple.com>

        Fix issues with -dealloc methods found by clang static analyzer
        <https://webkit.org/b/185887>

        Reviewed by Joseph Pecoraro.

        * WebView/WebView.mm:
        (-[WebUITextIndicatorData dealloc]):
        - Move method implementation from (WebUITextIndicatorInternal)
          category to the main category since this is public API.  This
          fixes the false positive warning about a missing -dealloc
          method.

2018-05-24  Sam Weinig  <sam@webkit.org>

        Modernize RenderStyleConstants.h - Part 2
        https://bugs.webkit.org/show_bug.cgi?id=185901

        Reviewed by Simon Fraser.

        * WebView/WebHTMLRepresentation.mm:
        (searchForLabelsBeforeElement):
        * WebView/WebView.mm:
        (nsTextAlignmentFromRenderStyle):
        Update for new enum names.

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

        Regression(AsyncPolicyDelegates): Box.app login Window is blank
        https://bugs.webkit.org/show_bug.cgi?id=185832
        <rdar://problem/40307871>

        Reviewed by Geoffrey Garen.

        We used to have a bug where where we would fail to wait for the policy decision for
        the navigation response from the client and the load would keep going, racing with
        the client's policy decision. If the client did not respond in time, the behavior
        would be the same as "Use" policy action.

        Box.app fails to make any policy decision in its decidePolicyForMIMEType delegate
        but the load happened to proceed anyway due to our bug. Now that we've fixed the
        WebKit bug, however, the load would hang because the completion handler for the
        decidePolicyForNavigationResponse would never get called.

        To work around the issue, I made the policy listener weak on the WebFrameLoaderClient
        instead of retaining it. If the policy listener object gets destroyed because getting
        resolved, we now use "Use" policy action in its dealloc function to maintain previous
        behavior.

        * WebCoreSupport/WebFrameLoaderClient.h:
        * WebCoreSupport/WebFrameLoaderClient.mm:
        (WebFrameLoaderClient::cancelPolicyCheck):
        (WebFrameLoaderClient::setUpPolicyListener):
        (-[WebFramePolicyListener dealloc]):

2018-05-22  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r232052.

        Breaks internal builds.

        Reverted changeset:

        "Use more C++17"
        https://bugs.webkit.org/show_bug.cgi?id=185176
        https://trac.webkit.org/changeset/232052

2018-05-21  Yusuke Suzuki  <utatane.tea@gmail.com>

        Use more C++17
        https://bugs.webkit.org/show_bug.cgi?id=185176

        Reviewed by JF Bastien.

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

2018-05-21  Chris Nardi  <cnardi@chromium.org>

        Remove dead exception in MediaList.appendMedium
        https://bugs.webkit.org/show_bug.cgi?id=185278

        Reviewed by Chris Dumez.

        Remove code pertaining to an exception being thrown by appendMedium().

        * DOM/DOMMediaList.mm:
        (-[DOMMediaList appendMedium:]):

2018-05-21  Jer Noble  <jer.noble@apple.com>

        Complete fix for enabling modern EME by default
        https://bugs.webkit.org/show_bug.cgi?id=185770
        <rdar://problem/40368220>

        Reviewed by Eric Carlson.

        * Configurations/FeatureDefines.xcconfig:

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

        WebView._preferencesChanged should apply colorFilterEnabled preference before parsing user stylesheet
        https://bugs.webkit.org/show_bug.cgi?id=185815
        <rdar://problem/40310069>

        Reviewed by Simon Fraser.

        User stylesheet parsing may depend on the colorFilterEnabled preference.

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

2018-05-18  Commit Queue  <commit-queue@webkit.org>

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

        Caused layout test failures (Requested by realdawei on
        #webkit).

        Reverted changeset:

        "Complete fix for enabling modern EME by default"
        https://bugs.webkit.org/show_bug.cgi?id=185770
        https://trac.webkit.org/changeset/231982

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

        Complete fix for enabling modern EME by default
        https://bugs.webkit.org/show_bug.cgi?id=185770
        <rdar://problem/40368220>

        Reviewed by Eric Carlson.

        * Configurations/FeatureDefines.xcconfig:

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

        Avoid keeping the frame alive when ref'ing a WindowProxy
        https://bugs.webkit.org/show_bug.cgi?id=185737
        <rdar://problem/40004666>

        Reviewed by Sam Weinig.

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

2018-05-16  Andy VanWagoner  <andy@vanwagoner.family>

        Add support for Intl NumberFormat formatToParts
        https://bugs.webkit.org/show_bug.cgi?id=185375

        Reviewed by Yusuke Suzuki.

        Add flag for NumberFormat formatToParts.

        * Configurations/FeatureDefines.xcconfig:

2018-05-16  Chris Nardi  <cnardi@chromium.org>

        Fixup after r231849: Do not mark Mac API methods as deprecated
        https://bugs.webkit.org/show_bug.cgi?id=185684

        Reviewed by Darin Adler.

        Do not mark API methods for Document#selectedStylesheetSet/preferredStylesheetSet as deprecated
        as the entire class is already marked as deprecated, so it is unnecessary.

        * DOM/DOMDocument.h:

2018-05-16  Chris Nardi  <cnardi@chromium.org>

        Remove Document#selectedStylesheetSet/preferredStylesheetSet
        https://bugs.webkit.org/show_bug.cgi?id=185381

        Reviewed by Darin Adler.

        Mark API methods for Document#selectedStylesheetSet/preferredStylesheetSet as deprecated
        and make them do nothing.

        * DOM/DOMDocument.h:
        * DOM/DOMDocument.mm:
        (-[DOMDocument preferredStylesheetSet]):
        (-[DOMDocument selectedStylesheetSet]):
        (-[DOMDocument setSelectedStylesheetSet:]):

2018-05-15  Antoine Quint  <graouts@apple.com>

        [Web Animations] Expose Web Animations CSS integration as an experimental feature
        https://bugs.webkit.org/show_bug.cgi?id=185647

        Reviewed by Dean Jackson.

        Rename the Web Animations CSS integration flag.

        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):
        (-[WebPreferences webAnimationsCSSIntegrationEnabled]):
        (-[WebPreferences setWebAnimationsCSSIntegrationEnabled:]):
        (-[WebPreferences cssAnimationsAndCSSTransitionsBackedByWebAnimationsEnabled]): Deleted.
        (-[WebPreferences setCSSAnimationsAndCSSTransitionsBackedByWebAnimationsEnabled:]): Deleted.
        * WebView/WebPreferencesPrivate.h:
        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]):

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

        Fix the Apple Internal build

        See <rdar://problem/40237873> for more details.

        * WebView/WebFullScreenController.mm:
        (-[WebFullScreenController enterFullScreen:]):
        (-[WebFullScreenController finishedEnterFullScreenAnimation:]):
        (-[WebFullScreenController exitFullScreen]):
        (-[WebFullScreenController finishedExitFullScreenAnimation:]):
        (-[WebFullScreenController _startEnterFullScreenAnimationWithDuration:]):
        (-[WebFullScreenController _startExitFullScreenAnimationWithDuration:]):

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

        WebHTMLView is not setting aside subviews when drawing.

        https://bugs.webkit.org/show_bug.cgi?id=185561
        rdar://problem/40172894

        Reviewed by Simon Fraser.

        Use the new method signature for _recursive:displayRectIgnoringOpacity:shouldChangeFontReferenceColor:.

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

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

        Substitute CrossOriginPreflightResultCache::clear() for CrossOriginPreflightResultCache::empty()
        https://bugs.webkit.org/show_bug.cgi?id=185170

        Reviewed by Per Arne Vollan.

        * Misc/WebCache.mm:
        (+[WebCache empty]):

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

        Deprecate legacy WebView and friends
        https://bugs.webkit.org/show_bug.cgi?id=185279
        rdar://problem/33268700

        Reviewed by Tim Horton.

        Added deprecation macros to all the classes, extern strings, and enums.

        * Configurations/WebKitLegacy.xcconfig:
        Added BUILDING_WEBKIT define to disable the deprecation macros.
        * DOM/DOMAbstractView.h:
        * DOM/DOMAttr.h:
        * DOM/DOMBlob.h:
        * DOM/DOMCDATASection.h:
        * DOM/DOMCSSCharsetRule.h:
        * DOM/DOMCSSFontFaceRule.h:
        * DOM/DOMCSSImportRule.h:
        * DOM/DOMCSSMediaRule.h:
        * DOM/DOMCSSPageRule.h:
        * DOM/DOMCSSPrimitiveValue.h:
        * DOM/DOMCSSRule.h:
        * DOM/DOMCSSRuleList.h:
        * DOM/DOMCSSStyleDeclaration.h:
        * DOM/DOMCSSStyleRule.h:
        * DOM/DOMCSSStyleSheet.h:
        * DOM/DOMCSSUnknownRule.h:
        * DOM/DOMCSSValue.h:
        * DOM/DOMCSSValueList.h:
        * DOM/DOMCharacterData.h:
        * DOM/DOMComment.h:
        * DOM/DOMCounter.h:
        * DOM/DOMDocument.h:
        * DOM/DOMDocumentFragment.h:
        * DOM/DOMDocumentType.h:
        * DOM/DOMElement.h:
        * DOM/DOMEntity.h:
        * DOM/DOMEntityReference.h:
        * DOM/DOMEvent.h:
        * DOM/DOMEventException.h:
        * DOM/DOMEventListener.h:
        * DOM/DOMEventTarget.h:
        * DOM/DOMException.h:
        * DOM/DOMFile.h:
        * DOM/DOMFileList.h:
        * DOM/DOMHTMLAnchorElement.h:
        * DOM/DOMHTMLAppletElement.h:
        * DOM/DOMHTMLAreaElement.h:
        * DOM/DOMHTMLBRElement.h:
        * DOM/DOMHTMLBaseElement.h:
        * DOM/DOMHTMLBaseFontElement.h:
        * DOM/DOMHTMLBodyElement.h:
        * DOM/DOMHTMLButtonElement.h:
        * DOM/DOMHTMLCanvasElement.h:
        * DOM/DOMHTMLCollection.h:
        * DOM/DOMHTMLDListElement.h:
        * DOM/DOMHTMLDirectoryElement.h:
        * DOM/DOMHTMLDivElement.h:
        * DOM/DOMHTMLDocument.h:
        * DOM/DOMHTMLElement.h:
        * DOM/DOMHTMLEmbedElement.h:
        * DOM/DOMHTMLFieldSetElement.h:
        * DOM/DOMHTMLFontElement.h:
        * DOM/DOMHTMLFormElement.h:
        * DOM/DOMHTMLFrameElement.h:
        * DOM/DOMHTMLFrameSetElement.h:
        * DOM/DOMHTMLHRElement.h:
        * DOM/DOMHTMLHeadElement.h:
        * DOM/DOMHTMLHeadingElement.h:
        * DOM/DOMHTMLHtmlElement.h:
        * DOM/DOMHTMLIFrameElement.h:
        * DOM/DOMHTMLImageElement.h:
        * DOM/DOMHTMLInputElement.h:
        * DOM/DOMHTMLLIElement.h:
        * DOM/DOMHTMLLabelElement.h:
        * DOM/DOMHTMLLegendElement.h:
        * DOM/DOMHTMLLinkElement.h:
        * DOM/DOMHTMLMapElement.h:
        * DOM/DOMHTMLMarqueeElement.h:
        * DOM/DOMHTMLMediaElement.h:
        * DOM/DOMHTMLMenuElement.h:
        * DOM/DOMHTMLMetaElement.h:
        * DOM/DOMHTMLModElement.h:
        * DOM/DOMHTMLOListElement.h:
        * DOM/DOMHTMLObjectElement.h:
        * DOM/DOMHTMLOptGroupElement.h:
        * DOM/DOMHTMLOptionElement.h:
        * DOM/DOMHTMLOptionsCollection.h:
        * DOM/DOMHTMLParagraphElement.h:
        * DOM/DOMHTMLParamElement.h:
        * DOM/DOMHTMLPreElement.h:
        * DOM/DOMHTMLQuoteElement.h:
        * DOM/DOMHTMLScriptElement.h:
        * DOM/DOMHTMLSelectElement.h:
        * DOM/DOMHTMLStyleElement.h:
        * DOM/DOMHTMLTableCaptionElement.h:
        * DOM/DOMHTMLTableCellElement.h:
        * DOM/DOMHTMLTableColElement.h:
        * DOM/DOMHTMLTableElement.h:
        * DOM/DOMHTMLTableRowElement.h:
        * DOM/DOMHTMLTableSectionElement.h:
        * DOM/DOMHTMLTextAreaElement.h:
        * DOM/DOMHTMLTitleElement.h:
        * DOM/DOMHTMLUListElement.h:
        * DOM/DOMHTMLVideoElement.h:
        * DOM/DOMImplementation.h:
        * DOM/DOMKeyboardEvent.h:
        * DOM/DOMMediaError.h:
        * DOM/DOMMediaList.h:
        * DOM/DOMMouseEvent.h:
        * DOM/DOMMutationEvent.h:
        * DOM/DOMNamedNodeMap.h:
        * DOM/DOMNode.h:
        * DOM/DOMNodeFilter.h:
        * DOM/DOMNodeIterator.h:
        * DOM/DOMNodeList.h:
        * DOM/DOMObject.h:
        * DOM/DOMOverflowEvent.h:
        * DOM/DOMProcessingInstruction.h:
        * DOM/DOMProgressEvent.h:
        * DOM/DOMRGBColor.h:
        * DOM/DOMRange.h:
        * DOM/DOMRangeException.h:
        * DOM/DOMRect.h:
        * DOM/DOMStyleSheet.h:
        * DOM/DOMStyleSheetList.h:
        * DOM/DOMText.h:
        * DOM/DOMTextEvent.h:
        * DOM/DOMTimeRanges.h:
        * DOM/DOMTokenList.h:
        * DOM/DOMTreeWalker.h:
        * DOM/DOMUIEvent.h:
        * DOM/DOMWheelEvent.h:
        * DOM/DOMXPathException.h:
        * DOM/DOMXPathExpression.h:
        * DOM/DOMXPathNSResolver.h:
        * DOM/DOMXPathResult.h:
        * History/WebBackForwardList.h:
        * History/WebHistory.h:
        * History/WebHistoryItem.h:
        * Misc/WebDownload.h:
        * Misc/WebKitErrors.h:
        * Plugins/WebPluginViewFactory.h:
        * WebView/WebArchive.h:
        * WebView/WebDataSource.h:
        * WebView/WebDocument.h:
        * WebView/WebEditingDelegate.h:
        * WebView/WebFormDelegate.h:
        * WebView/WebFrame.h:
        * WebView/WebFrameLoadDelegate.h:
        * WebView/WebFrameView.h:
        * WebView/WebPolicyDelegate.h:
        * WebView/WebPreferences.h:
        * WebView/WebPreferencesPrivate.h:
        * WebView/WebResourceLoadDelegate.h:
        * WebView/WebUIDelegate.h:
        * WebView/WebUIDelegatePrivate.h:
        * WebView/WebView.h:
        * WebView/WebViewPrivate.h:
        * postprocess-headers.sh:
        Remove step that converts WEBKIT macros to NS macros.
        Change it to just remove the macros on iOS builds.

2018-05-01  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] remove WK1 support
        https://bugs.webkit.org/show_bug.cgi?id=185136

        Reviewed by Youenn Fablet.

        * WebCoreSupport/WebUserMediaClient.h: Removed.
        * WebCoreSupport/WebUserMediaClient.mm: Removed.
        * WebView/WebView.mm:
        (-[WebView _commonInitializationWithFrameName:groupName:]):
        (-[WebView _preferencesChanged:]):
        (-[WebView _setUserMediaClient:]): Deleted.
        (-[WebView _userMediaClient]): Deleted.
        * WebView/WebViewData.h:
        * WebView/WebViewPrivate.h:

2018-05-01  Oleksandr Skachkov  <gskachkov@gmail.com>

        WebAssembly: add support for stream APIs - JavaScript API
        https://bugs.webkit.org/show_bug.cgi?id=183442

        Reviewed by Yusuke Suzuki and JF Bastien.

        Add WEBASSEMBLY_STREAMINNG_API feature flag

        * Configurations/FeatureDefines.xcconfig:

2018-04-30  JF Bastien  <jfbastien@apple.com>

        Use some C++17 features
        https://bugs.webkit.org/show_bug.cgi?id=185135

        Reviewed by Alex Christensen.

        * Configurations/WebKitLegacy.xcconfig:

2018-04-27  Chris Dumez  <cdumez@apple.com>

        Use WindowProxy instead of DOMWindow in our IDL
        https://bugs.webkit.org/show_bug.cgi?id=185022

        Reviewed by Sam Weinig.

        * DOM/DOMAbstractView.mm:
        (kit):
        (toWindowProxy):
        * DOM/DOMAbstractViewInternal.h:
        * DOM/DOMDocument.mm:
        (-[DOMDocument defaultView]):
        (-[DOMDocument getComputedStyle:pseudoElement:]):
        (-[DOMDocument getMatchedCSSRules:pseudoElement:authorOnly:]):
        * DOM/DOMHTMLFrameElement.mm:
        (-[DOMHTMLFrameElement contentWindow]):
        * DOM/DOMHTMLIFrameElement.mm:
        (-[DOMHTMLIFrameElement contentWindow]):
        * DOM/DOMKeyboardEvent.mm:
        (-[DOMKeyboardEvent initKeyboardEvent:canBubble:cancelable:view:keyIdentifier:location:ctrlKey:altKey:shiftKey:metaKey:altGraphKey:]):
        (-[DOMKeyboardEvent initKeyboardEvent:canBubble:cancelable:view:keyIdentifier:location:ctrlKey:altKey:shiftKey:metaKey:]):
        (-[DOMKeyboardEvent initKeyboardEvent:canBubble:cancelable:view:keyIdentifier:keyLocation:ctrlKey:altKey:shiftKey:metaKey:altGraphKey:]):
        (-[DOMKeyboardEvent initKeyboardEvent:canBubble:cancelable:view:keyIdentifier:keyLocation:ctrlKey:altKey:shiftKey:metaKey:]):
        * DOM/DOMMouseEvent.mm:
        (-[DOMMouseEvent initMouseEvent:canBubble:cancelable:view:detail:screenX:screenY:clientX:clientY:ctrlKey:altKey:shiftKey:metaKey:button:relatedTarget:]):
        * DOM/DOMTextEvent.mm:
        (-[DOMTextEvent initTextEvent:canBubbleArg:cancelableArg:viewArg:dataArg:]):
        * DOM/DOMUIEvent.mm:
        (-[DOMUIEvent view]):
        (-[DOMUIEvent initUIEvent:canBubble:cancelable:view:detail:]):
        * DOM/DOMWheelEvent.mm:
        (-[DOMWheelEvent initWheelEvent:wheelDeltaY:view:screenX:screenY:clientX:clientY:ctrlKey:altKey:shiftKey:metaKey:]):

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

        Implement rendering support for the color-filter CSS property
        https://bugs.webkit.org/show_bug.cgi?id=185047
        rdar://problem/39664967

        Reviewed by Tim Horton.
        
        The body background should reflect the filtered color.

        * WebView/WebFrame.mm:
        (-[WebFrame _bodyBackgroundColor]):
        * WebView/WebView.mm:
        (-[WebView updateTextTouchBar]): No logic change, just cleanup.

2018-04-26  Jer Noble  <jer.noble@apple.com>

        WK_COCOA_TOUCH all the things.
        https://bugs.webkit.org/show_bug.cgi?id=185006

        Reviewed by Tim Horton.

        * Configurations/WebKitLegacy.xcconfig:

2018-04-26  Daniel Bates  <dabates@apple.com>

        ASSERTION FAILED: ASSERT(!containsImage || MIMETypeRegistry::isSupportedImageResourceMIMEType([resource MIMEType])) in -[NSPasteboard(WebExtras) _web_writePromisedRTFDFromArchive:containsImage:]
        https://bugs.webkit.org/show_bug.cgi?id=184161
        <rdar://problem/39051645>

        Reviewed by Dan Bernstein.

        Fixes an assertion failure when quitting an app that uses a Legacy WebKit web view after dragging-and-
        dropping a PDF embedded using an HTML image element into the same web view.

        When performing a drag-and-drop of a PDF document image (WebCore::PDFDocumentImage) we create a WebArchive
        from the main frame's WebHTMLView and promise AppKit that we will provide a Rich Text Format (RTF) document
        from this archive if needed. For some reason, on app termination AppKit requests that the WebHTMLView
        fulfill its RTF document promise for the WebArchive created at the start of the drag operation. To do this,
        we need to extract the image resource from the Web Archive. Currently we query MIMETypeRegistry::isSupportedImageResourceMIMEType()
        to see if the contained image is one that we can handle. However MIMETypeRegistry::isSupportedImageResourceMIMEType()
        only returns true if WebKit supports creating an image document for the specified MIME type. Disregarding
        the iOS motivated setting Settings::useImageDocumentForSubframePDF, PDFs and PostScripts do not create an
        image document when navigated to directly. Since we can support dragging PDF document images we need to
        query if MIMETypeRegistry::isPDFOrPostScriptMIMEType() in addition to querying MIMETypeRegistry::isSupportedImageResourceMIMEType().
        We need to do both such queries before falling back to using the main resource of the Web Archive as
        the image. Otherwise, we will cause an assertion failure if the main resource of the Web Archive is
        not an image document.

        * Misc/WebNSPasteboardExtras.mm:
        (-[NSPasteboard _web_writePromisedRTFDFromArchive:containsImage:]):

2018-04-26  Per Arne Vollan  <pvollan@apple.com>

        Disable content filtering in minimal simulator mode
        https://bugs.webkit.org/show_bug.cgi?id=185027
        <rdar://problem/39736091>

        Reviewed by Jer Noble.

        * Configurations/FeatureDefines.xcconfig:

2018-04-26  Andy VanWagoner  <thetalecrafter@gmail.com>

        [INTL] Implement Intl.PluralRules
        https://bugs.webkit.org/show_bug.cgi?id=184312

        Reviewed by JF Bastien.

        Added Intl.PluralRules feature flag.

        * Configurations/FeatureDefines.xcconfig:

2018-04-25  Jiewen Tan  <jiewen_tan@apple.com>

        Remove access to keychain from the WebContent process
        https://bugs.webkit.org/show_bug.cgi?id=184428
        <rdar://problem/13150903>

        Reviewed by Brent Fulgham.

        This patch does the followings:
        1. Added necessary support to move HTMLKeygenElement's operation from WebCore space to Client space.
        2. Craft new SPI signedPublicKeyAndChallengeStringForWebView to supply HTMLKeygenElement with dummy data
        such that DumpRenderTree tests will not modify the underlying key store (e.g., the macOS Keychain).

        * WebCoreSupport/WebChromeClient.h:
        * WebCoreSupport/WebChromeClient.mm:
        (WebChromeClient::signedPublicKeyAndChallengeString const):
        * WebView/WebUIDelegatePrivate.h:

2018-04-24  Jer Noble  <jer.noble@apple.com>

        Don't add system framework paths to FRAMEWORK_SEARCH_PATHS
        https://bugs.webkit.org/show_bug.cgi?id=184786

        Reviewed by Tim Horton.

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

2018-04-23  Daniel Bates  <dabates@apple.com>

        Implement Same-Site cookies
        https://bugs.webkit.org/show_bug.cgi?id=159464
        <rdar://problem/27196358>

        Reviewed by Brent Fulgham.

        Pass the Same-Site info through the strategy.

        * WebCoreSupport/WebPlatformStrategies.h:
        * WebCoreSupport/WebPlatformStrategies.mm:
        (WebPlatformStrategies::cookiesForDOM):
        (WebPlatformStrategies::setCookiesFromDOM):
        (WebPlatformStrategies::cookieRequestHeaderFieldValue):
        (WebPlatformStrategies::getRawCookies):

2018-04-23  Zalan Bujtas  <zalan@apple.com>

        [LayoutFormattingContext] Initial commit.
        https://bugs.webkit.org/show_bug.cgi?id=184896

        Reviewed by Antti Koivisto.

        * Configurations/FeatureDefines.xcconfig:

2018-04-23  Daniel Bates  <dabates@apple.com>

        Implement Same-Site cookies
        https://bugs.webkit.org/show_bug.cgi?id=159464
        <rdar://problem/27196358>

        Reviewed by Brent Fulgham.

        Pass the Same-Site info through the strategy.

        * WebCoreSupport/WebPlatformStrategies.h:
        * WebCoreSupport/WebPlatformStrategies.mm:
        (WebPlatformStrategies::cookiesForDOM):
        (WebPlatformStrategies::setCookiesFromDOM):
        (WebPlatformStrategies::cookieRequestHeaderFieldValue):
        (WebPlatformStrategies::getRawCookies):

2018-04-20  Timothy Hatcher  <timothy@apple.com>

        NULL dereference crash sometimes under [super initWithCoder:] in WebView

        https://bugs.webkit.org/show_bug.cgi?id=184851
        rdar://problem/39611236

        Reviewed by Tim Horton.

        * WebView/WebView.mm:
        (-[WebView _commonInitializationWithFrameName:groupName:]):
        (-[WebView effectiveAppearanceDidChange]):
        Added a null check and call the code later in initialization.

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

        Adjust geolocation feature flag
        https://bugs.webkit.org/show_bug.cgi?id=184856

        Reviewed by Wenson Hsieh.

        * Configurations/FeatureDefines.xcconfig:

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

        Don't put build products into WK_ALTERNATE_WEBKIT_SDK_PATH for engineering builds
        https://bugs.webkit.org/show_bug.cgi?id=184762

        Reviewed by Dan Bernstein.

        * Configurations/WebKitLegacy.xcconfig:

2018-04-20  Youenn Fablet  <youenn@apple.com>

        Make PluginData cache its web visible plugins
        https://bugs.webkit.org/show_bug.cgi?id=184421

        Reviewed by Chris Dumez.

        * WebCoreSupport/WebPluginInfoProvider.h:
        * WebCoreSupport/WebPluginInfoProvider.mm:
        (WebPluginInfoProvider::pluginInfo):
        (WebPluginInfoProvider::webVisiblePluginInfo):

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

        Rename JSDOMWindowProxy to JSWindowProxy
        https://bugs.webkit.org/show_bug.cgi?id=184797

        Reviewed by Sam Weinig.

        Rename JSDOMWindowProxy to JSWindowProxy for consistency with WindowProxy.

        * DOM/DOMUtility.mm:
        (createDOMWrapper):
        * WebView/WebFrame.mm:
        (-[WebFrame _stringByEvaluatingJavaScriptFromString:withGlobalObject:inScriptWorld:]):

2018-04-19  David Kilzer  <ddkilzer@apple.com>

        Enable Objective-C weak references
        <https://webkit.org/b/184789>
        <rdar://problem/39571716>

        Reviewed by Dan Bernstein.

        * Configurations/Base.xcconfig:
        (CLANG_ENABLE_OBJC_WEAK): Enable.

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

        Rename WindowProxyController to WindowProxy
        https://bugs.webkit.org/show_bug.cgi?id=184756

        Reviewed by Sam Weinig.

        Rename WindowProxyController to WindowProxy for clarity. When the IDL uses WindowProxy, the implementation
        needed use WindowProxyController type, which was a bit confusing.

        * Plugins/Hosted/NetscapePluginInstanceProxy.mm:
        (WebKit::NetscapePluginInstanceProxy::getWindowNPObject):
        * WebView/WebFrame.mm:
        (-[WebFrame _attachScriptDebugger]):

2018-04-17  Jonathan Bedard  <jbedard@apple.com>

        Unreviewed rollout of r230632. Regression in memory usage.

        That bug tracked in https://bugs.webkit.org/show_bug.cgi?id=184569.

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

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

        REGRESSION (r229831): CMD-clicking an iCloud web app link unexpectedly opens that link in a new tab and the current tab
        https://bugs.webkit.org/show_bug.cgi?id=184678
        <rdar://problem/39422122>

        Reviewed by Alex Christensen.

        Add new parameter to dispatchDecidePolicyForNavigationAction.

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

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

        Split WindowProxy handling out of ScriptController and into a new class owned by AbstractFrame
        https://bugs.webkit.org/show_bug.cgi?id=184591

        Reviewed by Sam Weinig.

        Split WindowProxy handling out of ScriptController and into a new class owned by AbstractFrame.
        RemoteFrames do not need a ScriptController but do need to maintain WindowProxies.
        This is work towards fixing Bug 184515.

        * Plugins/Hosted/NetscapePluginInstanceProxy.mm:
        (WebKit::NetscapePluginInstanceProxy::getWindowNPObject):
        * WebView/WebFrame.mm:
        (-[WebFrame _attachScriptDebugger]):

2018-04-12  Antoine Quint  <graouts@apple.com>

        [Web Animations] Turn CSS Animations and CSS Transitions as Web Animations on by default
        https://bugs.webkit.org/show_bug.cgi?id=184569
        <rdar://problem/38671301>

        Reviewed by Jon Lee.

        * WebView/WebPreferences.mm:

2018-04-05  Yusuke Suzuki  <utatane.tea@gmail.com>

        [WTF] Remove StaticLock
        https://bugs.webkit.org/show_bug.cgi?id=184332

        Reviewed by Mark Lam.

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

2018-04-04  Brent Fulgham  <bfulgham@apple.com>

        Failures from mach port reference handling should be fatal
        https://bugs.webkit.org/show_bug.cgi?id=184202
        <rdar://problem/37771114>

        Reviewed by Anders Carlsson.

        * Plugins/Hosted/NetscapePluginHostManager.mm:
        (WebKit::NetscapePluginHostManager::spawnPluginHost): Adopt new 'safe mach_port_t deallocation' function.

2018-04-03  Andy Estes  <aestes@apple.com>

        [Mac] Prioritize file promises over filenames during drag and drop
        https://bugs.webkit.org/show_bug.cgi?id=184237
        <rdar://problem/38278076>

        Reviewed by Wenson Hsieh.

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

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

        Drop MainFrame class
        https://bugs.webkit.org/show_bug.cgi?id=184191

        Reviewed by Darin Adler.

        Drop MainFrame class and move contents into Page / Frame since there is a 1:1
        relationship between the Page and the MainFrame.

        This is ground work for introducing LocalFrame / RemoteFrame concepts.

        * WebCoreSupport/WebDragClient.mm:
        * WebCoreSupport/WebFrameLoaderClient.mm:
        * WebCoreSupport/WebInspectorClient.mm:
        * WebCoreSupport/WebPlatformStrategies.mm:
        * WebCoreSupport/WebPluginInfoProvider.mm:
        * WebView/WebFrame.mm:
        * WebView/WebFrameView.mm:
        * WebView/WebHTMLView.mm:
        * WebView/WebView.mm:

2018-04-02  Jer Noble  <jer.noble@apple.com>

        Enable Legacy EME for all WebKit & WebKitLegacy clients
        https://bugs.webkit.org/show_bug.cgi?id=184018
        <rdar://problem/34887387>

        Reviewed by Eric Carlson.

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

2018-03-29  JF Bastien  <jfbastien@apple.com>

        Use Forward.h instead of forward-declaring WTF::String
        https://bugs.webkit.org/show_bug.cgi?id=184172
        <rdar://problem/39026146>

        Reviewed by Yusuke Suzuki.

        As part of #184164 I'm changing WTF::String, and the forward
        declarations are just wrong because I'm making it templated. We
        should use Forward.h anyways, so do that instead.

        * WebView/WebScriptDebugger.h:

2018-03-28  Brent Fulgham  <bfulgham@apple.com>

        Protect against invalid mach ports returned by mach_port_request_notification
        https://bugs.webkit.org/show_bug.cgi?id=184106
        <rdar://problem/37865316>

        Reviewed by Chris Dumez.

        * Plugins/Hosted/NetscapePluginHostProxy.mm:
        (WebKit::NetscapePluginHostProxy::NetscapePluginHostProxy): Check return value from 'mach_port_request_notification'
        and clean up if it experienced an error.
        (WebKit::NetscapePluginHostProxy::processRequests): Drive-by-fix: Include formatted mach error message in logging.

2018-03-28  Brent Fulgham  <bfulgham@apple.com>

        Avoid uninitialized mach ports
        https://bugs.webkit.org/show_bug.cgi?id=184090
        <rdar://problem/37261129>

        Reviewed by Chris Dumez.

        It is possible for mach_port_allocate to return an error, but we rarely check its return value. The value
        of the argument passed to mach_port_allocate is not guaranteed to be valid when it returns an error, so
        there is a potential for us to try to use invalid ports.

        We should always check return values, and ensure that the mach port variables we seek to initialize are
        kept in a valid state.

        Reviewed by Chris Dumez.

        * Plugins/Hosted/NetscapePluginHostManager.h:
        * Plugins/Hosted/NetscapePluginHostManager.mm:
        (WebKit::NetscapePluginHostManager::hostForPlugin): Initialize port to a valid state, ASSERT if an invalid
        port is passed to an API function.
        (WebKit::NetscapePluginHostManager::spawnPluginHost): Ditto.
        (WebKit::NetscapePluginHostManager::initializeVendorPort): Ditto.
        * Plugins/Hosted/NetscapePluginHostProxy.h:
        * Plugins/Hosted/NetscapePluginHostProxy.mm:
        (WebKit::NetscapePluginHostProxy::NetscapePluginHostProxy): Ditto.
        (WebKit::NetscapePluginHostProxy::~NetscapePluginHostProxy): Ditto.
        (WebKit::NetscapePluginHostProxy::processRequests): Ditto.
        (WKPCStatusText): Ditto.
        (WKPCLoadURL): Ditto.
        (WKPCCancelLoadURL): Ditto.
        (WKPCInvalidateRect): Ditto.
        (WKPCGetScriptableNPObjectReply): Ditto.
        (WKPCBooleanReply): Ditto.
        (WKPCBooleanAndDataReply): Ditto.
        (WKPCInstantiatePluginReply): Ditto.
        (WKPCGetWindowNPObject): Ditto.
        (WKPCGetPluginElementNPObject): Ditto.
        (WKPCForgetBrowserObject): Ditto.
        (WKPCEvaluate): Ditto.
        (WKPCGetStringIdentifier): Ditto.
        (WKPCGetIntIdentifier): Ditto.
        (WKPCInvoke): Ditto.
        (WKPCInvokeDefault): Ditto.
        (WKPCConstruct): Ditto.
        (WKPCGetProperty): Ditto.
        (WKPCSetProperty): Ditto.
        (WKPCRemoveProperty): Ditto.
        (WKPCHasProperty): Ditto.
        (WKPCHasMethod): Ditto.
        (WKPCIdentifierInfo): Ditto.
        (WKPCEnumerate): Ditto.
        (WKPCSetMenuBarVisible): Ditto.
        (WKPCSetFullscreenWindowIsShowing): Ditto.
        (WKPCSetModal): Ditto.
        (WKPCGetCookies): Ditto.
        (WKPCGetProxy): Ditto.
        (WKPCSetCookies): Ditto.
        (WKPCGetAuthenticationInfo): Ditto.
        (WKPCConvertPoint): Ditto.
        (WKPCLayerHostingModeChanged): Ditto.
        (WKPCSetException): Ditto.

2018-03-26  Tim Horton  <timothy_horton@apple.com>

        Adopt WK_ALTERNATE_FRAMEWORKS_DIR in WebKit
        https://bugs.webkit.org/show_bug.cgi?id=184030
        <rdar://problem/38895281>

        Reviewed by Dan Bernstein.

        * Configurations/Base.xcconfig:

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

        Use SecurityOriginData more consistently in Service Worker code
        https://bugs.webkit.org/show_bug.cgi?id=183969

        Reviewed by Darin Adler.

        Use SecurityOrigin::data() instead of SecurityOriginData::fromSecurityOrigin().

        * Storage/WebDatabaseManager.mm:
        (-[WebDatabaseManager databasesWithOrigin:]):
        (-[WebDatabaseManager deleteOrigin:]):
        (-[WebDatabaseManager deleteDatabase:withOrigin:]):
        * Storage/WebDatabaseQuotaManager.mm:
        (-[WebDatabaseQuotaManager usage]):
        (-[WebDatabaseQuotaManager quota]):
        (-[WebDatabaseQuotaManager setQuota:]):
        * Storage/WebStorageManager.mm:
        (-[WebStorageManager deleteOrigin:]):
        * WebCoreSupport/WebSecurityOrigin.mm:
        (-[WebSecurityOrigin databaseIdentifier]):
        (-[WebSecurityOrigin usage]):
        (-[WebSecurityOrigin quota]):
        (-[WebSecurityOrigin setQuota:]):

2018-03-26  Brent Fulgham  <bfulgham@apple.com>

        Warn against cookie access in the WebContent process using ProcessPrivilege assertions
        https://bugs.webkit.org/show_bug.cgi?id=183911
        <rdar://problem/38762306>

        Reviewed by Youenn Fablet.

        Initialize the ProcessPrivilege and Cookie API access levels for single-process use.

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

2018-03-26  Alex Christensen  <achristensen@webkit.org>

        Merge ResourceHandleClient::willCacheResponseAsync with ResourceHandleClient::willCacheResponse
        https://bugs.webkit.org/show_bug.cgi?id=183965

        Reviewed by Chris Dumez.

        * WebCoreSupport/WebFrameLoaderClient.h:
        * WebCoreSupport/WebFrameLoaderClient.mm:
        (WebFrameLoaderClient::willCacheResponse const):

2018-03-25  Commit Queue  <commit-queue@webkit.org>

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

        Caused many layout tests to crash on Apple High Sierra,
        Sierra, iOS Simulator and GTK Linux Debug test bots (Requested
        by dydz on #webkit).

        Reverted changeset:

        "Use SecurityOriginData more consistently in Service Worker
        code"
        https://bugs.webkit.org/show_bug.cgi?id=183969
        https://trac.webkit.org/changeset/229954

2018-03-24  Chris Dumez  <cdumez@apple.com>

        Use SecurityOriginData more consistently in Service Worker code
        https://bugs.webkit.org/show_bug.cgi?id=183969

        Reviewed by Darin Adler.

        Use SecurityOrigin::data() instead of SecurityOriginData::fromSecurityOrigin().

        * Storage/WebDatabaseManager.mm:
        (-[WebDatabaseManager databasesWithOrigin:]):
        (-[WebDatabaseManager deleteOrigin:]):
        (-[WebDatabaseManager deleteDatabase:withOrigin:]):
        * Storage/WebDatabaseQuotaManager.mm:
        (-[WebDatabaseQuotaManager usage]):
        (-[WebDatabaseQuotaManager quota]):
        (-[WebDatabaseQuotaManager setQuota:]):
        * Storage/WebStorageManager.mm:
        (-[WebStorageManager deleteOrigin:]):
        * WebCoreSupport/WebSecurityOrigin.mm:
        (-[WebSecurityOrigin databaseIdentifier]):
        (-[WebSecurityOrigin usage]):
        (-[WebSecurityOrigin quota]):
        (-[WebSecurityOrigin setQuota:]):

2018-03-24  Timothy Horton  <timothy_horton@apple.com>

        Fix the build

        * WebView/WebView.mm:

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

        Fix the build with no pasteboard
        https://bugs.webkit.org/show_bug.cgi?id=183973

        Reviewed by Dan Bernstein.

        * Configurations/FeatureDefines.xcconfig:
        * WebView/WebView.mm:
        (-[WebView _requestStartDataInteraction:globalPosition:]):
        (-[WebView _getDataInteractionData]):
        (-[WebView _dataOperationTextIndicator]):
        (-[WebView _dragSourceAction]):
        (-[WebView _draggedLinkTitle]):
        (-[WebView _draggedLinkURL]):
        (-[WebView _draggedElementBounds]):
        (-[WebView _enteredDataInteraction:client:global:operation:]):
        (-[WebView _updatedDataInteraction:client:global:operation:]):
        (-[WebView _exitedDataInteraction:client:global:operation:]):
        (-[WebView _performDataInteraction:client:global:operation:]):
        (-[WebView _tryToPerformDataInteraction:client:global:operation:]):
        (-[WebView _endedDataInteraction:global:]):
        (-[WebView _dataInteractionCaretRect]):
        * WebView/WebViewPrivate.h:

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

        Adopt WK_ALTERNATE_FRAMEWORKS_DIR in WebKitLegacy and update install name
        https://bugs.webkit.org/show_bug.cgi?id=183960
        <rdar://problem/38812356>

        Reviewed by Dan Bernstein.

        * Configurations/WebKitLegacy.xcconfig:

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

        Introduce and adopt HAVE(AUDIO_TOOLBOX_AUDIO_SESSION)
        https://bugs.webkit.org/show_bug.cgi?id=183954
        <rdar://problem/38808858>

        Reviewed by Dan Bernstein.

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

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

        Adopt WK_PLATFORM_NAME in WebKitLegacy
        https://bugs.webkit.org/show_bug.cgi?id=183948
        <rdar://problem/38803908>

        Reviewed by Dan Bernstein.

        * Configurations/WebKitLegacy.xcconfig:
        * MigrateHeaders.make:
        * postprocess-headers.sh:

2018-03-23  Brady Eidson  <beidson@apple.com>

        Go to back/forward list items after a process-swapped navigation.
        <rdar://problem/38690544> and https://bugs.webkit.org/show_bug.cgi?id=183920

        Reviewed by Andy Estes.

        * WebView/WebView.mm:
        (-[WebView _loadBackForwardListFromOtherView:]):
        (-[WebView goToBackForwardItem:]):

2018-03-22  Tim Horton  <timothy_horton@apple.com>

        Improve readability of WebCore's OTHER_LDFLAGS
        https://bugs.webkit.org/show_bug.cgi?id=183909
        <rdar://problem/38760992>

        Reviewed by Dan Bernstein.

        * Configurations/Base.xcconfig:
        * Configurations/FeatureDefines.xcconfig:

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

        Enable the minimal simulator feature flag when appropriate
        https://bugs.webkit.org/show_bug.cgi?id=183807

        Reviewed by Dan Bernstein.

        * Configurations/FeatureDefines.xcconfig:

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

        Add and adopt WK_PLATFORM_NAME and adjust default feature defines
        https://bugs.webkit.org/show_bug.cgi?id=183758
        <rdar://problem/38017644>

        Reviewed by Dan Bernstein.

        * Configurations/FeatureDefines.xcconfig:

2018-03-19  Megan Gardner  <megan_gardner@apple.com>

        Clear style colors when setting default appearance
        https://bugs.webkit.org/show_bug.cgi?id=183759

        Reviewed by Tim Horton.

        Colors are cached and need to be cleared and recalculated.
        Refactor to do all style recalcs together.

        * WebView/WebView.mm:
        (-[WebView _setDefaultAppearanceAndClearStyle]):
        (-[WebView _setUseSystemAppearance:]):
        (-[WebView effectiveAppearanceDidChange]):

2018-03-19  Jiewen Tan  <jiewen_tan@apple.com>

        Unreviewed, another quick fix for r229699

        Restricts ENABLE_WEB_AUTHN to only macOS and iOS.

        * Configurations/FeatureDefines.xcconfig:

2018-03-16  Megan Gardner  <megan_gardner@apple.com>

        Ensure that style is updated when the effective appearance changes
        https://bugs.webkit.org/show_bug.cgi?id=183690
        <rdar://problem/38385900>

        Reviewed by Tim Horton and Wenson Hsieh.

        Respond to and respect the effective appearance changing.

        * WebView/WebView.mm:
        (-[WebView _setUseSystemAppearance:]):
        (-[WebView effectiveAppearanceDidChange]):

2018-03-15  Megan Gardner  <megan_gardner@apple.com>

        Create MediaQueryParserContext to provide additional context for the evaluation of media queries
        https://bugs.webkit.org/show_bug.cgi?id=183677

        Reviewed by Tim Horton.

        We need additional context for parsing media queries to make sure they are parsed correctly and valid.

        * DOM/DOM.mm:
        (-[DOMHTMLLinkElement _mediaQueryMatches]):

2018-03-14  Tim Horton  <timothy_horton@apple.com>

        Fix the build after r229567

        * Configurations/FeatureDefines.xcconfig:

2018-03-12  Tim Horton  <timothy_horton@apple.com>

        Stop using SDK conditionals to control feature definitions
        https://bugs.webkit.org/show_bug.cgi?id=183430
        <rdar://problem/38251619>

        Reviewed by Dan Bernstein.

        * Configurations/FeatureDefines.xcconfig:
        * Configurations/WebKitTargetConditionals.xcconfig: Renamed.

2018-03-12  Yoav Weiss  <yoav@yoav.ws>

        Runtime flag for link prefetch and remove link subresource.
        https://bugs.webkit.org/show_bug.cgi?id=183540

        Reviewed by Chris Dumez.

        Remove the LINK_PREFETCH build time flag.

        * Configurations/FeatureDefines.xcconfig:

2018-03-12  Javier Fernandez  <jfernandez@igalia.com>

        Remove GridLayout runtime flag
        https://bugs.webkit.org/show_bug.cgi?id=183484

        Reviewed by Myles C. Maxfield.

        The Grid Layout feature has been enabled by default for almost a
        year, so I think it's time to remove the runtime flag and the

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

2018-03-12  Antoine Quint  <graouts@apple.com>

        [Web Animations] Implement CSS Animations and CSS Transitions as Web Animations
        https://bugs.webkit.org/show_bug.cgi?id=183504
        <rdar://problem/38372965>

        Reviewed by Dean Jackson and Jon Lee.

        Add the missing WebKitLegacy support the cssAnimationsAndCSSTransitionsBackedByWebAnimationsEnabled flag
        which is required for the matching <!-- webkit-test-runner --> flag to work in DumpRenderTree.

        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):
        (-[WebPreferences setModernMediaControlsEnabled:]):
        (-[WebPreferences cssAnimationsAndCSSTransitionsBackedByWebAnimationsEnabled]):
        (-[WebPreferences setCSSAnimationsAndCSSTransitionsBackedByWebAnimationsEnabled:]):
        * WebView/WebPreferencesPrivate.h:
        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]):

2018-03-10  Megan Gardner  <megan_gardner@apple.com>

        Media query for default appearance
        https://bugs.webkit.org/show_bug.cgi?id=183539
        <rdar://problem/38326388>

        Reviewed by Tim Horton.

        Write a media query to evaluate appearance.

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

2018-03-09  Andy Estes  <aestes@apple.com>

        [Mac] WebKit fails to receive file promises when the embedding app is sandboxed
        https://bugs.webkit.org/show_bug.cgi?id=183489
        <rdar://problem/38267517>

        WebKitLegacy calls -[NSFilePromiseReceiver receivePromisedFilesAtDestination:...] with
        NSTemporaryDirectory() as the destination for receiving file promise drops. AppKit attempts
        to issue a sandbox extension for this directory, but for security reasons App Sandbox
        refuses to do so for NSTemporaryDirectory() itself. As a result, AppKit will call our reader
        block with a nil error and a valid file URL, but no file will actually exist at that URL.

        In order for App Sandbox to grant issuing the sandbox extension needed by AppKit, we need to
        use some other destination directory. This patch uses FileSystem::createTemporaryDirectory()
        to securely create a unique temporary directory inside NSTemporaryDirectory() for use as the
        drop destination.

        Reviewed by Wenson Hsieh.

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

2018-03-08  Megan Gardner  <megan_gardner@apple.com>

        Allow WebViews to disable system appearance
        https://bugs.webkit.org/show_bug.cgi?id=183418
        <rdar://problem/36975642>

        Reviewed by Tim Horton.

        Allow webviews to choose whether or not to follow the default system appearance.

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

2018-03-08  Youenn Fablet  <youenn@apple.com>

        libwebrtc update broke internal builds
        https://bugs.webkit.org/show_bug.cgi?id=183454

        Reviewed by Eric Carlson.

        * Configurations/WebKitLegacy.xcconfig:

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

        Possible null dereference of the page under WebFrameNetworkingContext::storageSession()
        https://bugs.webkit.org/show_bug.cgi?id=183455
        <rdar://problem/38191749>

        Reviewed by Youenn Fablet.

        Add a null check for the page as we have evidence from crashes that it can be null.
        Other functions in WebFrameNetworkingContext already null check the page as well,
        not just the frame so this is consistent.

        * WebCoreSupport/WebFrameNetworkingContext.mm:
        (WebFrameNetworkingContext::storageSession const):

2018-03-08  Yusuke Suzuki  <utatane.tea@gmail.com>

        [JSC] Add inherits<T>(VM&) leveraging JSCast fast path
        https://bugs.webkit.org/show_bug.cgi?id=183429

        Reviewed by Mark Lam.

        * DOM/DOM.mm:
        (+[DOMNode _nodeFromJSWrapper:]):
        * Plugins/Hosted/NetscapePluginInstanceProxy.mm:
        (WebKit::NetscapePluginInstanceProxy::retainLocalObject):
        (WebKit::NetscapePluginInstanceProxy::releaseLocalObject):
        * Plugins/Hosted/ProxyInstance.mm:
        (WebKit::ProxyInstance::invokeMethod):
        * WebView/WebView.mm:
        (aeDescFromJSValue):

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

        Stop linking ApplicationServices directly
        https://bugs.webkit.org/show_bug.cgi?id=182867
        <rdar://problem/38252142>

        Reviewed by Alex Christensen.

        The frameworks that we use that live inside ApplicationServices
        have mostly moved out, so import them directly.

        * Carbon/CarbonUtils.h:
        * WebKitPrefix.h:
        * WebView/WebHTMLView.mm:
        * WebView/WebPDFView.mm:

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

        Sort and separate FeatureDefines.xcconfig
        https://bugs.webkit.org/show_bug.cgi?id=183427

        Reviewed by Dan Bernstein.

        * Configurations/FeatureDefines.xcconfig:
        Sort and split FeatureDefines into paragraphs
        (to make it easier to sort later).

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

        Match unsupported plugins based on domains and not origin
        https://bugs.webkit.org/show_bug.cgi?id=183384

        Reviewed by Chris Dumez.

        * WebCoreSupport/WebPluginInfoProvider.h:
        * WebCoreSupport/WebPluginInfoProvider.mm:
        (WebPluginInfoProvider::getPluginInfo):
        (WebPluginInfoProvider::getWebVisiblePluginInfo):

2018-03-05  Andy Estes  <aestes@apple.com>

        [Mac] Teach WebCore::Pasteboard about file promise drags
        https://bugs.webkit.org/show_bug.cgi?id=183314
        <rdar://problem/38105493>

        Reviewed by Darin Adler.

        Added a FIXME comment.

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

2018-03-04  Yusuke Suzuki  <utatane.tea@gmail.com>

        [WTF] Move currentCPUTime and sleep(Seconds) to CPUTime.h and Seconds.h respectively
        https://bugs.webkit.org/show_bug.cgi?id=183312

        Reviewed by Mark Lam.

        Remove wtf/CurrentTime.h include pragma.

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

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

        Make !ENABLE(DATA_DETECTION) iOS build actually succeed
        https://bugs.webkit.org/show_bug.cgi?id=183283
        <rdar://problem/38062148>

        Reviewed by Sam Weinig.

        * Configurations/FeatureDefines.xcconfig:

2018-02-28  Alex Christensen  <achristensen@webkit.org>

        Reduce use of NetworkingContext in WebKit
        https://bugs.webkit.org/show_bug.cgi?id=183213

        Reviewed by Brady Eidson.

        * Plugins/Hosted/NetscapePluginInstanceProxy.mm:
        (WebKit::NetscapePluginInstanceProxy::getProxy):
        * Plugins/WebNetscapePluginView.mm:
        (-[WebNetscapePluginView getVariable:forURL:value:length:]):

2018-02-17  Darin Adler  <darin@apple.com>

        Prepare for ExtendedColor changes (first step)
        https://bugs.webkit.org/show_bug.cgi?id=182904

        Reviewed by Sam Weinig.

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

2018-02-22  Yusuke Suzuki  <utatane.tea@gmail.com>

        Remove currentTime() / currentTimeMS()
        https://bugs.webkit.org/show_bug.cgi?id=183052

        Reviewed by Mark Lam.

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

2018-02-16  Youenn Fablet  <youenn@apple.com>

        Allow specifying which plug-ins are supported
        https://bugs.webkit.org/show_bug.cgi?id=182748

        Reviewed by Chris Dumez.

        * WebCoreSupport/WebPluginInfoProvider.h:
        * WebCoreSupport/WebPluginInfoProvider.mm:
        (WebPluginInfoProvider::getPluginInfo):
        (WebPluginInfoProvider::getWebVisiblePluginInfo):

2018-02-16  Brent Fulgham  <bfulgham@apple.com>

        [Cocoa][WebKitLegacy] REGRESSION(r221559): Coda 2 crashes when switching views
        https://bugs.webkit.org/show_bug.cgi?id=182882
        <rdar://problem/35672661>

        Reviewed by Dan Bernstein.

        Make sure the smart pointer hold the collection of subviews lives at least as
        long as the loop using it.

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

2018-02-14  Daniel Bates  <dabates@apple.com>

        Disallow cross-origin subresources from asking for credentials
        https://bugs.webkit.org/show_bug.cgi?id=182579
        <rdar://problem/36162271>

        Reviewed by Andy Estes.

        Add a private preference to toggle allowing non-mixed content cross-origin subresources to load.
        DumpRenderTree toggles this preference when it sees the test option allowCrossOriginSubresourcesToAskForCredential.

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

2018-02-14  Ross Kirsling  <ross.kirsling@sony.com>

        Remove ForwardingHeaders directory from WebKitLegacy/mac.
        https://bugs.webkit.org/show_bug.cgi?id=182738

        Reviewed by Darin Adler.

        * ForwardingHeaders/collector/handles/Global.h: Removed.
        * ForwardingHeaders/debugger/DebuggerCallFrame.h: Removed.
        * ForwardingHeaders/runtime/Completion.h: Removed.
        * ForwardingHeaders/runtime/Error.h: Removed.
        * ForwardingHeaders/runtime/JSCJSValue.h: Removed.
        * ForwardingHeaders/runtime/JSFunction.h: Removed.
        * ForwardingHeaders/runtime/JSLock.h: Removed.
        * ForwardingHeaders/runtime/JSObject.h: Removed.
        * ForwardingHeaders/runtime/JSString.h: Removed.
        * ForwardingHeaders/runtime/Protect.h: Removed.
        * ForwardingHeaders/runtime/SymbolTable.h: Removed.

2018-02-09  Per Arne Vollan  <pvollan@apple.com>

        Follow-up fixes after moving WebVideoFullscreenController from WebCore to WebKitLegacy.
        https://bugs.webkit.org/show_bug.cgi?id=182641

        Reviewed by Dan Bernstein.

        Remove incorrect use of WEBCORE_EXPORT and namespace WebCore after the files were moved in
        https://trac.webkit.org/changeset/228308.

        * WebView/WebVideoFullscreenController.h:
        * WebView/WebVideoFullscreenHUDWindowController.mm:
        * WebView/WebWindowAnimation.h:
        * WebView/WebWindowAnimation.mm:
        (WebCore::WebWindowAnimationDurationFromDuration): Deleted.
        (WebCore::scaledRect): Deleted.
        (WebCore::squaredDistance): Deleted.

2018-02-09  Per Arne Vollan  <pvollan@apple.com>

        Unreviewed 32-bit build fix after <https://trac.webkit.org/changeset/228308>.

        * WebView/WebWindowAnimation.mm:
        (-[WebWindowScaleAnimation additionalDurationNeededToReachFinalFrame]):

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

        Move WebVideoFullscreenController from WebCore to WebKitLegacy.
        https://bugs.webkit.org/show_bug.cgi?id=182615

        Reviewed by Eric Carlson.

        It is only used by WK1. Also there are a few references to NSApp in WebVideoFullscreenController.mm.
        Ideally, we should not reference NSApp in WebCore.

        * WebView/WebFullScreenController.mm:
        * WebView/WebVideoFullscreenController.h: Copied from Source/WebCore/platform/mac/WebVideoFullscreenController.h.
        * WebView/WebVideoFullscreenController.mm: Copied from Source/WebCore/platform/mac/WebVideoFullscreenController.mm.
        * WebView/WebVideoFullscreenHUDWindowController.h: Copied from Source/WebCore/platform/mac/WebVideoFullscreenHUDWindowController.h.
        * WebView/WebVideoFullscreenHUDWindowController.mm: Copied from Source/WebCore/platform/mac/WebVideoFullscreenHUDWindowController.mm.
        * WebView/WebView.mm:
        * WebView/WebWindowAnimation.h: Copied from Source/WebCore/platform/mac/WebWindowAnimation.h.
        * WebView/WebWindowAnimation.mm: Copied from Source/WebCore/platform/mac/WebWindowAnimation.mm.

2018-01-13  Darin Adler  <darin@apple.com>

        Event improvements
        https://bugs.webkit.org/show_bug.cgi?id=179591

        Reviewed by Chris Dumez.

        * DOM/DOMWheelEvent.mm:
        (-[DOMWheelEvent initWheelEvent:wheelDeltaY:view:screenX:screenY:clientX:clientY:ctrlKey:altKey:shiftKey:metaKey:]):
        Call initWebKitWheelEvent.

        * Plugins/Hosted/NetscapePluginInstanceProxy.mm: Removed include of ScriptValue.h.
        * WebCoreSupport/WebInspectorClient.mm: Ditto.
        * WebView/WebFrame.mm: Ditto.

        * WebView/WebHTMLView.mm:
        (-[WebHTMLView _interpretKeyEvent:savingCommands:]): Updated for name change from keyEvent to
        underlyingPlatformEvent.
        (-[WebHTMLView _handleEditingKeyEvent:]): Ditto.

        * WebView/WebScriptWorld.mm:
        (+[WebScriptWorld scriptWorldForGlobalContext:]): Pass reference to currentWorld function.

        * WebView/WebView.mm: Removed include of ScriptValue.h.

2018-02-06  Don Olmstead  <don.olmstead@sony.com>

        Remove WebCore/ForwardingHeaders directory
        https://bugs.webkit.org/show_bug.cgi?id=182347

        Reviewed by Keith Miller.

        * Carbon/CarbonWindowAdapter.mm:
        * DOM/WebDOMOperations.mm:
        * History/WebBackForwardList.mm:
        * History/WebHistoryItem.mm:
        * Misc/WebCache.mm:
        * Misc/WebElementDictionary.mm:
        * Misc/WebIconDatabase.mm:
        * Misc/WebStringTruncator.mm:
        * Plugins/Hosted/NetscapePluginInstanceProxy.mm:
        * Plugins/Hosted/ProxyInstance.mm:
        * Plugins/Hosted/ProxyRuntimeObject.mm:
        * Plugins/Hosted/WebHostedNetscapePluginView.mm:
        * Plugins/WebBaseNetscapePluginView.mm:
        * Plugins/WebBasePluginPackage.mm:
        * Plugins/WebNetscapePluginStream.mm:
        * Plugins/WebNetscapePluginView.mm:
        * Plugins/WebPluginController.mm:
        * WebCoreSupport/WebEditorClient.mm:
        * WebCoreSupport/WebFrameLoaderClient.mm:
        * WebCoreSupport/WebInspectorClient.h:
        * WebCoreSupport/WebInspectorClient.mm:
        * WebView/WebDataSource.mm:
        * WebView/WebFrame.mm:
        * WebView/WebHTMLRepresentation.mm:
        * WebView/WebHTMLView.mm:
        * WebView/WebPreferences.mm:
        * WebView/WebScriptDebugDelegate.mm:
        * WebView/WebScriptDebugger.h:
        * WebView/WebTextIterator.mm:
        * WebView/WebView.mm:
        * WebView/WebViewData.mm:

2018-01-30  Don Olmstead  <don.olmstead@sony.com>

        JSExports.h should be included as <JavaScriptCore/JSExportMacros.h>
        https://bugs.webkit.org/show_bug.cgi?id=182312

        Reviewed by Michael Catanzaro.

        * WebKitPrefix.h:

2018-01-29  Jiewen Tan  <jiewen_tan@apple.com>

        [WebAuthN] Add a compile-time feature flag
        https://bugs.webkit.org/show_bug.cgi?id=182211
        <rdar://problem/36936365>

        Reviewed by Brent Fulgham.

        * Configurations/FeatureDefines.xcconfig:

2018-01-27  Dan Bernstein  <mitz@apple.com>

        HaveInternalSDK includes should be "#include?"
        https://bugs.webkit.org/show_bug.cgi?id=179670

        * Configurations/Base.xcconfig:

2018-01-24  Alex Christensen  <achristensen@webkit.org>

        Remove unused QTKit preference
        https://bugs.webkit.org/show_bug.cgi?id=181968

        Reviewed by Alexey Proskuryakov.

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

2018-01-23  Wenson Hsieh  <wenson_hsieh@apple.com>

        Harden against layout passes triggered when iterating through HTMLFormElement::associatedElements
        https://bugs.webkit.org/show_bug.cgi?id=182037
        <rdar://problem/36747812>

        Reviewed by Ryosuke Niwa.

        Rename associatedElements() to unsafeAssociatedElements(), and add ScriptDisallowedScopes. See WebCore ChangeLog
        for more details.

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

2018-01-23  Alex Christensen  <achristensen@webkit.org>

        Use CompletionHandlers for ResourceHandleClient::didReceiveResponseAsync
        https://bugs.webkit.org/show_bug.cgi?id=181961

        Reviewed by Michael Catanzaro.

        * WebView/WebPreferences.mm:

2018-01-23  Commit Queue  <commit-queue@webkit.org>

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

        broke build (Requested by alexchristensen on #webkit).

        Reverted changeset:

        "Remove unused QTKit preference"
        https://bugs.webkit.org/show_bug.cgi?id=181968
        https://trac.webkit.org/changeset/227437

2018-01-23  Alex Christensen  <achristensen@webkit.org>

        Remove unused QTKit preference
        https://bugs.webkit.org/show_bug.cgi?id=181968

        Reviewed by Alexey Proskuryakov.

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

2018-01-22  Wenson Hsieh  <wenson_hsieh@apple.com>

        WebViews created via -initSimpleHTMLDocumentWithStyle: don't propagate attachmentElementEnabled state
        https://bugs.webkit.org/show_bug.cgi?id=181960
        <rdar://problem/36431678>

        Reviewed by Tim Horton.

        Mail's compose view is initialized via the -initSimpleHTMLDocumentWithStyle: codepath. This is intended to be
        a fast path for initializing WebViews, which bypasses certain initialization steps present in the regular -init
        path, such as calling -_preferencesChanged: to sync RuntimeEnabledFeatures with WebPreferences.

        This means that even though we set -[WebPreferences attachmentElementEnabled] to YES for Mail, the value of the
        RuntimeEnabledFeature isn't updated to match. To fix this, we explicitly invoke
        RuntimeEnabledFeatures::setAttachmentElementEnabled here to make sure the value is in sync with WebPreferences.

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

2018-01-21  Ryosuke Niwa  <rniwa@webkit.org>

        Turning off custom pasteboard data doesn't actually turn it off in WK2
        https://bugs.webkit.org/show_bug.cgi?id=181920
        <rdar://problem/36686429>

        Reviewed by Wenson Hsieh.

        Always disable custom pasteboard data in WebKit1. See r226156 for details.

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

2018-01-21  Wenson Hsieh  <wenson_hsieh@apple.com>

        Add a new feature flag for EXTRA_ZOOM_MODE and reintroduce AdditionalFeatureDefines.h
        https://bugs.webkit.org/show_bug.cgi?id=181918

        Reviewed by Tim Horton.

        Add EXTRA_ZOOM_MODE to FeatureDefines.xconfig (off by default).

        * Configurations/FeatureDefines.xcconfig:

2018-01-20  Andy Estes  <aestes@apple.com>

        [Apple Pay] Stop eagerly loading PassKit.framework
        https://bugs.webkit.org/show_bug.cgi?id=181911
        <rdar://problem/36555369>

        Reviewed by Tim Horton.

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

        Implemented PaymentCoordinatorClient::validatedPaymentNetwork().

2018-01-19  Dean Jackson  <dino@apple.com>

        REGRESSION (r221092): Swipe actions are hard to perform in FastMail app
        https://bugs.webkit.org/show_bug.cgi?id=181817
        <rdar://problem/35274055>

        Reviewed by Simon Fraser.

        Add a linked-on-or-after check to set passive touch listeners on document in WebCore.

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

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

        Remove unused WebViewPrivate _allowCookies
        https://bugs.webkit.org/show_bug.cgi?id=181812

        Reviewed by Tim Horton.

        * WebView/WebView.mm:
        (+[WebView _setAllowCookies:]): Deleted.
        (+[WebView _allowCookies]): Deleted.
        * WebView/WebViewPrivate.h:

2018-01-18  Alexey Proskuryakov  <ap@apple.com>

        Build fix, remove a call to -[NSWindow setOneShot:]
        https://bugs.webkit.org/show_bug.cgi?id=181809

        Reviewed by Tim Horton.

        * WebView/WebTextCompletionController.mm:
        (-[WebTextCompletionController _buildUI]):

2018-01-18  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, suppress deprecation warnings to fix the build with a newer SDK.

        * Carbon/HIWebView.mm:
        (overrideCGContext):
        (restoreCGContext):

2018-01-18  Dan Bernstein  <mitz@apple.com>

        [Xcode] Streamline and future-proof target-macOS-version-dependent build setting definitions
        https://bugs.webkit.org/show_bug.cgi?id=181803

        Reviewed by Tim Horton.

        * Configurations/Base.xcconfig: Updated.
        * Configurations/DebugRelease.xcconfig: Ditto.
        * Configurations/FeatureDefines.xcconfig: Adopted macOSTargetConditionals helpers.
        * Configurations/Version.xcconfig: Updated.
        * Configurations/macOSTargetConditionals.xcconfig: Added. Defines helper build settings
          useful for defining settings that depend on the target macOS version.

2018-01-17  Youenn Fablet  <youenn@apple.com>

        Put fetch Request.keepalive behind a runtime flag
        https://bugs.webkit.org/show_bug.cgi?id=181592

        Reviewed by Chris Dumez.

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

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

        Add injected bundle SPI to replace subresource URLs when dropping or pasting rich content
        https://bugs.webkit.org/show_bug.cgi?id=181637
        <rdar://problem/36508471>

        Reviewed by Tim Horton.

        Add a stub implementation of replacementURLForResource. See WebCore and WebKit ChangeLogs for more detail.

        * WebCoreSupport/WebEditorClient.h:
        * WebCoreSupport/WebEditorClient.mm:
        (WebEditorClient::replacementURLForResource):

2018-01-11  Keith Miller  <keith_miller@apple.com>

        Rename ENABLE_ASYNC_ITERATION to ENABLE_JS_ASYNC_ITERATION
        https://bugs.webkit.org/show_bug.cgi?id=181573

        Reviewed by Simon Fraser.

        * Configurations/FeatureDefines.xcconfig:

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

        Send PromisedBlobInfo to the client through DragItem instead of DragClient::prepareToDragPromisedBlob
        https://bugs.webkit.org/show_bug.cgi?id=181497

        Reviewed by Tim Horton.

        See other ChangeLogs for more detail.

        * WebCoreSupport/WebDragClient.h:

2018-01-11  Tim Horton  <timothy_horton@apple.com>

        Null deref in WebImmediateActionController _dictionaryPopupInfoForRange
        https://bugs.webkit.org/show_bug.cgi?id=181523
        <rdar://problem/28959131>

        Reviewed by Alex Christensen.

        * WebView/WebImmediateActionController.mm:
        (+[WebImmediateActionController _dictionaryPopupInfoForRange:inFrame:withLookupOptions:indicatorOptions:transition:]):
        Apply the change made in r216652 to WebKit1's immediate action controller.

        Speculative (but successful in WebKit2) fix for non-reproducible crash when
        the startContainer of the range is in an anonymous node.

2018-01-11  Youenn Fablet  <youenn@apple.com>

        Replace WebRTCLegacyAPIDisabled by WebRTCLegacyAPIEnabled and switch off WebRTC legacy flag by default
        https://bugs.webkit.org/show_bug.cgi?id=181480

        Reviewed by Eric Carlson.

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

2018-01-08  David Kilzer  <ddkilzer@apple.com>

        Fix check-webkit-style issues with WebNSDataExtras.mm
        <https://webkit.org/b/181369>

        Reviewed by Alex Christensen.

        * Misc/WebNSDataExtras.mm:
        (-[NSString _web_capitalizeRFC822HeaderFieldName]):
        (-[NSData _webkit_guessedMIMETypeForXML]):
        (-[NSData _webkit_guessedMIMEType]):
        (-[NSData _web_isCaseInsensitiveEqualToCString:]):
        (_findEOL):
        (-[NSData _webkit_parseRFC822HeaderFields]):
        (-[NSData _web_locationAfterFirstBlankLine]):
        - Fix all the check-webkit-style warnings.

2018-01-08  David Kilzer  <ddkilzer@apple.com>

        Build fix #2: Enable -Wcast-qual for WebInspectorUI, WebKitLegacy, WebKit projects
        <https://webkit.org/b/181256>
        <rdar://problem/36281730>

        * Plugins/WebNetscapePluginEventHandlerCocoa.mm:
        (WebNetscapePluginEventHandlerCocoa::handleTSMEvent):
        - Use reinterpret_cast<NPNSString*>(const_cast<CFMutableStringRef>())
          to avoid warnings from casting CFStringRef to NPNSString*.
          Note that CFMutableStringRef is the same as CFStringRef
          without the const modifier, hence its use in the const_cast<>
          above.

2018-01-08  David Kilzer  <ddkilzer@apple.com>

        Build fix: Enable -Wcast-qual for WebInspectorUI, WebKitLegacy, WebKit projects
        <https://webkit.org/b/181256>
        <rdar://problem/36281730>

        * Carbon/HIWebView.mm:
        (StartUpdateObserver): Include TypeCastsCF.h from WTF, and use
        checked_cf_cast<CFRunLoopRef>() to fix warning.

2018-01-07  David Kilzer  <ddkilzer@apple.com>

        Enable -Wcast-qual for WebInspectorUI, WebKitLegacy, WebKit projects
        <https://webkit.org/b/181256>
        <rdar://problem/36281730>

        Reviewed by Darin Adler.

        * Carbon/CarbonUtils.m:
        (PoolCleaner):
        - Use #pragmas to ignore -Wcast-qual warnings when using a
          C-style cast from CFTypeRef to CFRunloopRef.
        * Carbon/CarbonWindowFrame.m:
        (-[CarbonWindowFrame title]):
        - Use #pragmas to ignore -Wcast-qual warnings when using a
          C-style cast from CFStringRef to NSString *.
        * Carbon/HIViewAdapter.m:
        (+[HIViewAdapter getHIViewForNSView:]):
        - Use #pragmas to ignore -Wcast-qual warnings when using a
          C-style cast from CFTypeRef to HIViewRef.
        * Configurations/Base.xcconfig:
        (WARNING_CFLAGS): Add -Wcast-qual.
        * Misc/WebElementDictionary.mm:
        (-[WebElementDictionary objectForKey:]):
        - Use static_cast<SEL>(const_cast<void*>()) to fix
          warning.
        * Misc/WebNSDataExtras.mm: Renamed from Source/WebKitLegacy/mac/Misc/WebNSDataExtras.m.
        (-[NSString _web_capitalizeRFC822HeaderFieldName]):
        (-[NSData _webkit_guessedMIMETypeForXML]):
        (-[NSData _webkit_guessedMIMEType]):
        (-[NSData _web_isCaseInsensitiveEqualToCString:]):
        (_findEOL):
        (-[NSData _webkit_parseRFC822HeaderFields]):
        (-[NSData _web_startsWithBlankLine]):
        (-[NSData _web_locationAfterFirstBlankLine]):
        - Rename WebNSDataExtras.m to WebNSDataExtras.mm and change file
          type to Objective-C++.  This fixes the warnings about
          discarding the `const` modifier when casing from CFStringRef
          to NSString * because in older clang versions, -Wcast-qual was
          completely broken when compiling C++ and Objective-C++ source
          files.  In newer clang versions, discarding the `const`
          modifier for toll-free bridged types is ignored when compiling
          Objective-C++ source.
        - Update copyright and license header.
        - Use reinterpret_cast<> and static_cast<> to fix warnings
          unrelated to (NSString *) C-style casts.
        - Replace use of MIN() macro with std::min<> template functions.
        - Fix location of `*` for local variables modified above.
        * Plugins/Hosted/NetscapePluginHostManager.mm:
        (WebKit::NetscapePluginHostManager::spawnPluginHost):
        (WebKit::NetscapePluginHostManager::initializeVendorPort):
        (WebKit::NetscapePluginHostManager::instantiatePlugin):
        - Use static_cast<uint8_t*>(const_cast<void*>()) to fix
          warnings.
        * Plugins/Hosted/NetscapePluginHostProxy.mm:
        (WebKit::NetscapePluginHostProxy::NetscapePluginHostProxy):
        - Use reinterpret_cast<mig_subsystem_t>(const_cast<struct WKWebKitPluginClient_subsystem*>())
          to fix warning.
        * Plugins/Hosted/ProxyInstance.mm:
        (WebKit::ProxyInstance::invoke):
        - Use static_cast<char*>(const_cast<void*>()) to fix
          warning when using -[NSData bytes].
        (WebKit::ProxyInstance::fieldValue const):
        - Use reinterpret_cast<char*>(const_cast<unsigned char*>())
          to fix warning when using CFDataGetBytePtr().
        * Plugins/Hosted/WebTextInputWindowController.m:
        (-[WebTextInputPanel _interpretKeyEvent:string:]):
        - Use #pragma to ignore -Wcast-qual warning since there
          is not a good way to avoid this warning in Objective-C.
        * Plugins/WebNetscapePluginStream.mm:
        (WebNetscapePluginStream::deliverData):
        - Use const_cast<void*>() to fix warning when using
          -[NSData bytes].
        * Plugins/WebNetscapePluginView.mm:
        (-[WebNetscapePluginView _createPlugin]):
        - Change C-style cast to const_cast<char*>() to fix
          warning.
        * WebCoreSupport/WebChromeClient.mm:
        (WebChromeClient::wrapCryptoKey const):
        (WebChromeClient::unwrapCryptoKey const):
        - Change C-style cast to
          static_cast<uint8_t*>(const_cast<void*>() to fix
          warning.
        * WebView/WebPDFView.mm:
        (_applicationInfoForMIMEType):
        - Change local variable type from 'NSURL *' to
          'CFURLRef' to fix warning.  Cast back to 'NSURL *'
          when calling -[NSURL path].

2018-01-05  Dan Bernstein  <mitz@apple.com>

        Fixed the build following AppKit API deprecations in a recent SDKs

        * WebView/WebFullScreenController.mm:
        (-[WebFullScreenController enterFullScreen:]): Suppressed deprecation warnings.
        (-[WebFullScreenController exitFullScreen]): Ditto.
        (-[WebFullScreenController _startEnterFullScreenAnimationWithDuration:]): Ditto.
        (-[WebFullScreenController _startExitFullScreenAnimationWithDuration:]): Ditto.
        * WebView/WebHTMLView.mm:
        (-[WebHTMLView drawRect:]): Ditto.
        (-[WebHTMLView _endPrintModeAndRestoreWindowAutodisplay]): Ditto.
        (-[WebHTMLView knowsPageRange:]): Ditto.
        * WebView/WebView.mm:
        (LayerFlushController::flushLayers): Ditto.

2018-01-03  Wenson Hsieh  <wenson_hsieh@apple.com>

        [Attachment Support] Create attachment elements when dropping files on iOS
        https://bugs.webkit.org/show_bug.cgi?id=181192
        <rdar://problem/36280945>

        Reviewed by Tim Horton.

        Make some minor adjustments for changes to the pasteboard in WebCore. See WebCore/ChangeLog for more detail.

        * WebCoreSupport/WebPlatformStrategies.h:
        * WebCoreSupport/WebPlatformStrategies.mm:
        (WebPlatformStrategies::informationForItemAtIndex):
        (WebPlatformStrategies::getFilenamesForDataInteraction): Deleted.

2018-01-03  Wenson Hsieh  <wenson_hsieh@apple.com>

        [Attachment Support] Add plumbing for starting a drag with promised blob data
        https://bugs.webkit.org/show_bug.cgi?id=181201

        Reviewed by Tim Horton.

        Minor adjustment to account for a DragClient interface change. See WebCore ChangeLog for more details.

        * WebCoreSupport/WebDragClient.h:

2018-01-02  Jiewen Tan  <jiewen_tan@apple.com>

        Add a WebAuthentication runtime feature flag
        https://bugs.webkit.org/show_bug.cgi?id=181220
        <rdar://problem/36055305>

        Reviewed by Brent Fulgham.

        Renames the CredentialManagement runtime feature flag into WebAuthentication.

        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):
        (-[WebPreferences webAuthenticationEnabled]):
        (-[WebPreferences setWebAuthenticationEnabled:]):
        (-[WebPreferences credentialManagementEnabled]): Deleted.
        (-[WebPreferences setCredentialManagementEnabled:]): Deleted.
        * WebView/WebPreferencesPrivate.h:
        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]):

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

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

        Reviewed by Dan Bernstein.

        * Info.plist:

2017-12-30  Wenson Hsieh  <wenson_hsieh@apple.com>

        [Attachment Support] Remove current macOS support for dragging file-backed attachments
        https://bugs.webkit.org/show_bug.cgi?id=181188

        Reviewed by Dan Bernstein.

        See WebCore/ChangeLog for more detail.

        * WebCoreSupport/WebDragClient.h:
        * WebCoreSupport/WebDragClient.mm:
        (WebDragClient::declareAndWriteAttachment): Deleted.
        * WebView/WebHTMLView.mm:
        (-[WebHTMLView namesOfPromisedFilesDroppedAtDestination:]):

2017-12-22  Wenson Hsieh  <wenson_hsieh@apple.com>

        Unreviewed, continue to fix build failures due to AppKit API deprecation

        Wraps more code in -Wdeprecated-declarations.

        * Carbon/HIWebView.mm:
        (overrideCGContext):

2017-12-22  Wenson Hsieh  <wenson_hsieh@apple.com>

        Unreviewed, fix build failures due to using deprecated AppKit symbols when building 32-bit

        Wrap some more code in -Wdeprecated-declarations to try and fix the 32-bit build using the newest SDK.

        * Carbon/CarbonWindowAdapter.mm:
        (-[CarbonWindowAdapter setViewsNeedDisplay:]):
        * Plugins/WebNetscapePluginView.mm:
        (-[WebNetscapePluginView saveAndSetNewPortStateForUpdate:]):
        (-[WebNetscapePluginView sendDrawRectEvent:]):
        (-[WebNetscapePluginView drawRect:]):

2017-12-22  Wenson Hsieh  <wenson_hsieh@apple.com>

        Fix build failures due to using deprecated AppKit symbols
        https://bugs.webkit.org/show_bug.cgi?id=181110
        <rdar://problem/36162865>

        Reviewed by Dan Bernstein and Tim Horton.

        See WebCore ChangeLog for more details. Additionally makes a few minor adjustments to pass our style checker.

        * Misc/WebKitNSStringExtras.mm:
        (-[NSString _web_drawAtPoint:font:textColor:]):
        * Misc/WebNSPasteboardExtras.h:
        * Misc/WebNSPasteboardExtras.mm:
        (+[NSPasteboard _web_writableTypesForURL]):
        (_createWritableTypesForImageWithoutArchive):
        (_createWritableTypesForImageWithArchive):
        (+[NSPasteboard _web_dragTypesForURL]):
        (-[NSPasteboard _web_bestURL]):
        (-[NSPasteboard _web_writeURL:andTitle:types:]):
        (+[NSPasteboard _web_setFindPasteboardString:withOwner:]):
        (-[NSPasteboard _web_writeFileWrapperAsRTFDAttachment:]):
        (-[NSPasteboard _web_writeImage:element:URL:title:archive:types:source:]):
        (-[NSPasteboard _web_declareAndWriteDragImageForElement:URL:title:archive:source:]):
        * Panels/WebAuthenticationPanel.m:
        (-[WebAuthenticationPanel runAsModalDialogWithChallenge:]):
        (-[WebAuthenticationPanel sheetDidEnd:returnCode:contextInfo:]):
        * Plugins/Hosted/WebHostedNetscapePluginView.mm:
        (-[WebHostedNetscapePluginView drawRect:]):
        * WebInspector/WebNodeHighlightView.mm:
        (-[WebNodeHighlightView drawRect:]):
        * WebView/WebFrame.mm:
        (-[WebFrame _updateBackgroundAndUpdatesWhileOffscreen]):
        (-[WebFrame _drawRect:contentsOnly:]):
        * WebView/WebHTMLView.mm:
        (kit):
        (-[WebHTMLView _documentFragmentFromPasteboard:inContext:allowPlainText:]):
        (-[WebHTMLView _plainTextFromPasteboard:]):
        (-[WebHTMLView _writeSelectionWithPasteboardTypes:toPasteboard:cachedAttributedString:]):
        (+[WebHTMLView _insertablePasteboardTypes]):
        (+[WebHTMLView _selectionPasteboardTypes]):
        (-[WebHTMLView pasteboard:provideDataForType:]):
        (-[WebHTMLView _writeSelectionToPasteboard:]):
        (-[WebHTMLView _documentFragmentFromPasteboard:forType:inContext:subresources:]):
        (-[WebHTMLView validRequestorForSendType:returnType:]):
        (-[WebHTMLView validateUserInterfaceItemWithoutDelegate:]):
        (createMenuItem):
        (-[WebHTMLView _fontAttributesFromFontPasteboard]):
        (-[WebHTMLView _colorAsString:]):
        (-[WebHTMLView copyFont:]):
        * WebView/WebPDFView.mm:
        (-[WebPDFView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:]):
        (-[WebPDFView _recursiveDisplayAllDirtyWithLockFocus:visRect:]):
        (-[WebPDFView _recursive:displayRectIgnoringOpacity:inContext:topView:]):
        (-[WebPDFView pasteboardTypesForSelection]):
        (-[WebPDFView writeSelectionWithPasteboardTypes:toPasteboard:]):
        * WebView/WebView.h:
        * WebView/WebView.mm:
        (-[WebView performDragOperation:]):
        (-[WebView validateUserInterfaceItemWithoutDelegate:]):
        (-[WebView _searchWithGoogleFromMenu:]):

2017-12-21  Youenn Fablet  <youenn@apple.com>

        ServiceWorkerThreadProxy should set the correct cookie and cache partitioning options
        https://bugs.webkit.org/show_bug.cgi?id=181000

        Reviewed by Chris Dumez.

        * Misc/WebCache.mm:
        (+[WebCache addImageToCache:forURL:forFrame:]):

2017-12-21  Jeremy Jones  <jeremyj@apple.com>

        Update FULLSCREEN_API feature defines.
        https://bugs.webkit.org/show_bug.cgi?id=181015

        Reviewed by Tim Horton.

        Change enabled iphone sdk for FULLSCREEN_API.

        * Configurations/FeatureDefines.xcconfig:

2017-12-21  Jer Noble  <jer.noble@apple.com>

        Add initial DOM support for Media Capabilities
        https://bugs.webkit.org/show_bug.cgi?id=181064

        Reviewed by Eric Carlson.

        Add a new preference to enable the (disabled-by-default) Media Capabilities API.

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

2017-12-21  Jeremy Jones  <jeremyj@apple.com>

        Enable picture-in-picture from inline element on suspend.
        https://bugs.webkit.org/show_bug.cgi?id=180942
        rdar://problem/34745234

        Reviewed by Jer Noble.

        Update signature of enterVideoFullscreenForVideoElement().

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

2017-12-20  Daniel Bates  <dabates@apple.com>

        Remove Alternative Presentation Button
        https://bugs.webkit.org/show_bug.cgi?id=180500
        <rdar://problem/35891047>

        Reviewed by Simon Fraser.

        We no longer need the alternative presentation button.

        * Configurations/FeatureDefines.xcconfig:

2017-12-19  Jer Noble  <jer.noble@apple.com>

        Playing media elements which call "pause(); play()" will have the play promise rejected.
        https://bugs.webkit.org/show_bug.cgi?id=180781
        <rdar://problem/33191377>

        Reviewed by Eric Carlson.

        shouldRequireUserGestureToLoadVideo() should default to false on Mac.

        * WebView/WebView.mm:
        (shouldRequireUserGestureToLoadVideo):

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

        API test WKAttachmentTests.InsertPastedAttributedStringContainingMultipleAttachments is failing on El Capitan and Sierra
        https://bugs.webkit.org/show_bug.cgi?id=180977

        Reviewed by Tim Horton.

        Fixes a failing API test by updating markup deserialization codepaths in WebKitLegacy to behave like the modern
        WebCore counterpart. When determining element tags to exclude when generating markup from an attributed string,
        don't add "object" as an element to exclude if the attachment element runtime feature is enabled.

        * WebCoreSupport/WebEditorClient.mm:
        (attributesForAttributedStringConversion):
        * WebView/WebHTMLView.mm:
        (+[WebHTMLView _excludedElementsForAttributedStringConversion]):

2017-12-18  David Kilzer  <ddkilzer@apple.com>

        BUILD FIX: Ignore NSWindow deprecation warnings from the mysterious future

        Attempt to fix the following warnings:

            AppKit instance variables are private, and the ability to access them will be removed in a future release. [-Werror,-Wdeprecated-declarations]

        For the following instance variables:

            _borderView
            _contentView
            _frame
            _wFlags

        * Carbon/CarbonWindowAdapter.mm:
        (-[CarbonWindowAdapter initWithCarbonWindowRef:takingOwnership:disableOrdering:carbon:]):
        (-[CarbonWindowAdapter reconcileToCarbonWindowBounds]):
        (-[CarbonWindowAdapter _termWindowIfOwner]):
        (-[CarbonWindowAdapter _windowMovedToRect:]):
        (-[CarbonWindowAdapter setContentView:]):
        (-[CarbonWindowAdapter _handleRootBoundsChanged]):
        (-[CarbonWindowAdapter _handleContentBoundsChanged]):

2017-12-16  Dan Bernstein  <mitz@apple.com>

        WKWebView has no equivalent of -[WebView setAlwaysShowVerticalScroller:]
        https://bugs.webkit.org/show_bug.cgi?id=180613
        <rdar://problem/35946124>

        Reviewed by Geoff Garen.

        * WebKit.mac.exp: Removed WebCoreScrollbarAlwaysOn, which is no longer being used by any
          clients.
        * WebView/WebDynamicScrollBarsView.h: Ditto.
        * WebView/WebDynamicScrollBarsView.mm: Ditto.

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

        Enable -Wstrict-prototypes for WebKit
        <https://webkit.org/b/180757>
        <rdar://problem/36024132>

        Rubber-stamped by Joseph Pecoraro.

        * Configurations/Base.xcconfig:
        (CLANG_WARN_STRICT_PROTOTYPES): Add. Set to YES.

2017-12-14  John Wilander  <wilander@apple.com>

        Storage Access API: Implement frame-specific access in the document.cookie layer
        https://bugs.webkit.org/show_bug.cgi?id=180682
        <rdar://problem/35982257>

        Reviewed by Alex Christensen.

        CookiesStrategy::cookiesForDOM(), CookiesStrategy::setCookiesFromDOM(),
        CookiesStrategy::cookieRequestHeaderFieldValue(), and
        CookiesStrategy::getRawCookies() now take optional parameters for
        frameID and pageID to allow frame-specific scoping of cookies.

        This change makes the return values of FrameLoaderClient::frameID()
        and FrameLoaderClient::pageID() std::optional<uint64_t> so that
        WebCore can call those getters and get the right return values in
        WebKit and std:nullopt in WebKitLegacy.

        * WebCoreSupport/WebFrameLoaderClient.h:
        * WebCoreSupport/WebFrameLoaderClient.mm:
        (WebFrameLoaderClient::pageID const):
        (WebFrameLoaderClient::frameID const):
        * WebCoreSupport/WebPlatformStrategies.h:
        * WebCoreSupport/WebPlatformStrategies.mm:
        (WebPlatformStrategies::cookiesForDOM):
        (WebPlatformStrategies::setCookiesFromDOM):
        (WebPlatformStrategies::cookieRequestHeaderFieldValue):
        (WebPlatformStrategies::getRawCookies):

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

        Remove ColorSpaceDeviceRGB and most users of the obsolete deviceRGB colorspace
        https://bugs.webkit.org/show_bug.cgi?id=180689

        Reviewed by Tim Horton.

        Use sRGBColorSpaceRef() from WebCore.

        * WebView/WebHTMLView.mm:
        (imageFromRect):

2017-12-11  Tim Horton  <timothy_horton@apple.com>

        Stop using deprecated target conditional for simulator builds
        https://bugs.webkit.org/show_bug.cgi?id=180662
        <rdar://problem/35136156>

        Reviewed by Simon Fraser.

        * postprocess-headers.sh:

2017-12-11  David Quesada  <david_quesada@apple.com>

        Turn on ENABLE_APPLICATION_MANIFEST
        https://bugs.webkit.org/show_bug.cgi?id=180562
        rdar://problem/35924737

        Reviewed by Geoffrey Garen.

        * Configurations/FeatureDefines.xcconfig:

2017-12-08  Yusuke Suzuki  <utatane.tea@gmail.com>

        Remove pthread_once in favor of dispatch_once
        https://bugs.webkit.org/show_bug.cgi?id=180591

        Reviewed by Saam Barati.

        * Misc/WebKitErrors.m:
        (+[NSError _registerWebKitErrors]):
        (registerErrors): Deleted.
        * Storage/WebStorageManager.mm:
        (+[WebStorageManager _storageDirectoryPath]):
        (initializeLocalStoragePath): Deleted.

2017-12-07  Darin Adler  <darin@apple.com>

        Remove some unused code from WebKitLegacy
        https://bugs.webkit.org/show_bug.cgi?id=180567

        Reviewed by Anders Carlsson.

        * Misc/WebKitNSStringExtras.h: Researched which of these functions are used in
        macOS (back a few versions) and iOS and removed unused
        _web_drawAtPoint:font:textColor:allowingFontSmoothing:,
        _web_drawDoubledAtPoint:withTopColor:bottomColor:font:,
        _web_stringByStrippingReturnCharacters, _webkit_hasCaseInsensitiveSubstring:,
        _webkit_stringByCollapsingNonPrintingCharacters,
        _webkit_stringByCollapsingWhitespaceCharacters,
        _web_stringWithData:textEncodingName:, and
        _webkit_localStorageDirectoryWithBundleIdentifier:.

        * Misc/WebKitNSStringExtras.mm: Made WebKitLocalCacheDefaultsKey private to
        this source file.
        (canUseFastRenderer): Made this faster by not calling u_charDirection for
        Latin-1 characters, and also added special cases for U_DIR_NON_SPACING_MARK
        and U_BOUNDARY_NEUTRAL, which should not prevent use of the fast renderer.
        (-[NSString _web_drawAtPoint:font:textColor:allowingFontSmoothing:]): Deleted.
        (-[NSString _web_drawAtPoint:font:textColor:]): Removed unneeded code to
        handle font smoothing options.
        (-[NSString _web_drawDoubledAtPoint:withTopColor:bottomColor:font:]): Deleted.
        (-[NSString _web_stringByAbbreviatingWithTildeInPath]): Moved comment here
        from header and made it a little clearer.
        (-[NSString _web_stringByStrippingReturnCharacters]): Deleted.
        (-[NSString _webkit_hasCaseInsensitiveSubstring:]): Deleted.
        (-[NSString _webkit_stringByCollapsingNonPrintingCharacters]): Deleted.
        (-[NSString _webkit_stringByCollapsingWhitespaceCharacters]): Deleted.
        (+[NSString _web_stringWithData:textEncodingName:]): Deleted.
        (+[NSString _webkit_localCacheDirectoryWithBundleIdentifier:]): Streamlined
        implementation a bit and used whole words instead of abbreviations.
        (+[NSString _webkit_localStorageDirectoryWithBundleIdentifier:]): Deleted.

        * Misc/WebNSFileManagerExtras.mm:
        (-[NSFileManager _webkit_pathWithUniqueFilenameForPath:]): Use the
        filenameByFixingIllegalCharacters function from WebCore directly instead of
        indirectly through the method _webkit_filenameByFixingIllegalCharacters.

        * Plugins/WebBaseNetscapePluginView.mm:
        (-[WebBaseNetscapePluginView URLWithCString:]): Rewrote to use simple
        string replacements instead of _web_stringByStrippingReturnCharacters
        and to use NSString methods instead of CFString functions.

2017-12-07  Jessie Berlin  <jberlin@webkit.org>

        Ignore deprecation warnings.

        * WebView/WebHTMLView.mm:
        (-[NSWindow _web_borderView]):
        (-[WebHTMLView _setAsideSubviews]):
        * WebView/WebView.mm:
        (-[WebView encodeWithCoder:]):

2017-12-02  Darin Adler  <darin@apple.com>

        Modernize some aspects of text codecs, eliminate WebKit use of strcasecmp
        https://bugs.webkit.org/show_bug.cgi?id=180009

        Reviewed by Alex Christensen.

        * History/HistoryPropertyList.mm: Removed include of StringExtras.h.

        * Plugins/WebBaseNetscapePluginView.mm:
        (WebKit::getAuthenticationInfo): Use equalLettersIgnoringASCIICase instead
        of strcasecmp.

        * WebView/WebPreferences.mm:
        (contains): Ditto. Also made this a template so it's easier to call on an array.
        (cacheModelForMainBundle): Take advantage of the above to make it cleaner.

2017-12-05  Brent Fulgham  <bfulgham@apple.com>

        Limit user agent versioning to an upper bound
        https://bugs.webkit.org/show_bug.cgi?id=180365
        <rdar://problem/34550617>

        Reviewed by Joseph Pecoraro.

        * WebView/WebView.mm:
        (+[WebView _standardUserAgentWithApplicationName:]): Don't pass the WebKit bundle version when
        creating the User Agent string.
        (webKitBundleVersionString): Deleted.

2017-12-05  Andy Estes  <aestes@apple.com>

        [Cocoa] Stop specifying TARGET_OS_EMBEDDED in postprocess-headers.sh's unifdef options
        https://bugs.webkit.org/show_bug.cgi?id=180457
        <rdar://problem/35143007>

        Reviewed by Tim Horton.

        None of WebKitLegacy's framework headers mention TARGET_OS_EMBEDDED, so there's no need to
        check for this macro during post-processing.

        * postprocess-headers.sh:

2017-12-04  David Quesada  <david_quesada@apple.com>

        Add a class for parsing application manifests
        https://bugs.webkit.org/show_bug.cgi?id=177973
        rdar://problem/34747949

        Reviewed by Geoffrey Garen.

        * Configurations/FeatureDefines.xcconfig: Add ENABLE_APPLICATION_MANIFEST feature flag.

2017-11-30  Stephan Szabo  <stephan.szabo@sony.com>

        Make LegacyCustomProtocolManager optional for network process
        https://bugs.webkit.org/show_bug.cgi?id=176230

        Reviewed by Alex Christensen.

        * Configurations/FeatureDefines.xcconfig:

2017-11-30  Joseph Pecoraro  <pecoraro@apple.com>

        Fix some NSOperationQueue leaks
        https://bugs.webkit.org/show_bug.cgi?id=180221

        Reviewed by Wenson Hsieh.

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

2017-11-30  Darin Adler  <darin@apple.com>

        [Mac] remove unneeded RetainPtr use introduced in r225142
        https://bugs.webkit.org/show_bug.cgi?id=180202

        Reviewed by Tim Horton.

        * WebView/WebImmediateActionController.mm:
        (-[WebImmediateActionController _animationControllerForText]): Got rid of unnecessary
        RetainPtr.

2017-11-29  Said Abou-Hallawa  <sabouhallawa@apple.com>

        Remove the ImageSource from the class hierarchy that connects BitmapImage to ImageFrame
        https://bugs.webkit.org/show_bug.cgi?id=175595

        Reviewed by Darin Adler.

        * WebView/WebPreferences.mm:

2017-11-27  Tim Horton  <timothy_horton@apple.com>

        One too many zeroes in macOS version number in FeatureDefines
        https://bugs.webkit.org/show_bug.cgi?id=180011

        Reviewed by Dan Bernstein.

        * Configurations/FeatureDefines.xcconfig:

2017-11-23  Darin Adler  <darin@apple.com>

        Fix dictionary leak in lookup, convert FindOptions to OptionSet, tweak code style nearby
        https://bugs.webkit.org/show_bug.cgi?id=179981

        Reviewed by Sam Weinig.

        * WebView/WebImmediateActionController.mm:
        (-[WebImmediateActionController _animationControllerForText]): Use RetainPtr so we don't leak.
        * WebView/WebView.mm:
        (coreOptions): Use |= instead of | to build up FindOptions.

2017-11-23  Sam Weinig  <sam@webkit.org>

        Remove unneeded ScriptController::processingUserGesture() forwarding functions
        https://bugs.webkit.org/show_bug.cgi?id=179954

        Reviewed by Darin Adler.

        Replace ScriptController::processingUserGesture() and ScriptController::processingUserGestureForMedia()
        with direct calls to the corresponding UserGestureIndicator functions.

        * Plugins/WebPluginController.mm:
        (-[WebPluginController processingUserGesture]):
        * WebView/WebView.mm:
        (-[WebView _isProcessingUserGesture]):

2017-11-23  Darin Adler  <darin@apple.com>

        Reduce WTF::String operations that do unnecessary Unicode operations instead of ASCII
        https://bugs.webkit.org/show_bug.cgi?id=179907

        Reviewed by Sam Weinig.

        * History/BinaryPropertyList.cpp:
        (BinaryPropertyListPlan::writeStringObject): Use isAllASCII.
        (BinaryPropertyListSerializer::appendStringObject): Ditto.
        * WebView/WebHTMLRepresentation.mm:
        (regExpForLabels): Removed TextCaseSensitive since it is now the default.
        (matchLabelsAgainstString): Use JSC::Yarr::TextCaseInsensitive.

2017-11-22  Ali Juma  <ajuma@chromium.org>

        Implement VisualViewport API attributes
        https://bugs.webkit.org/show_bug.cgi?id=179385

        Reviewed by Frédéric Wang.

        Add a VisualViewportAPI preference.

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

2017-11-22  Christopher Reid  <chris.reid@sony.com>

        WebCoreObjCExtras.h is being included in too many places
        https://bugs.webkit.org/show_bug.cgi?id=179931

        Reviewed by Darin Adler.

        * Plugins/Hosted/WebHostedNetscapePluginView.mm:
        * Plugins/WebBaseNetscapePluginView.mm:
        * Plugins/WebBasePluginPackage.mm:
        * Plugins/WebNetscapePluginStream.mm:
        * Plugins/WebNetscapePluginView.mm:
        * WebView/WebTextIterator.mm:
        * WebView/WebViewData.mm:

2017-11-22  Commit Queue  <commit-queue@webkit.org>

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

        Compilation failed on WinCairo 64-bit Release (Requested by
        fredw on #webkit).

        Reverted changeset:

        "Implement VisualViewport API attributes"
        https://bugs.webkit.org/show_bug.cgi?id=179385
        https://trac.webkit.org/changeset/225093

2017-11-21  Ali Juma  <ajuma@chromium.org>

        Implement VisualViewport API attributes
        https://bugs.webkit.org/show_bug.cgi?id=179385

        Reviewed by Frédéric Wang.

        Add a VisualViewportAPI preference.

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

2017-11-21  Christopher Reid  <chris.reid@sony.com>

        [PAL] Remove FileSystem's dependency on WebCoreNSStringExtras
        https://bugs.webkit.org/show_bug.cgi?id=179504

        Reviewed by Darin Adler.

        * Misc/WebKitNSStringExtras.mm:
        * Plugins/Hosted/NetscapePluginHostManager.mm:
        * Plugins/WebBasePluginPackage.mm:

2017-11-19  Tim Horton  <timothy_horton@apple.com>

        Remove unused TOUCH_ICON_LOADING feature flag
        https://bugs.webkit.org/show_bug.cgi?id=179873

        Reviewed by Simon Fraser.

        * Configurations/FeatureDefines.xcconfig:

2017-11-19  Tim Horton  <timothy_horton@apple.com>

        Remove unused LEGACY_VENDOR_PREFIXES feature flag
        https://bugs.webkit.org/show_bug.cgi?id=179872

        Reviewed by Darin Adler.

        * Configurations/FeatureDefines.xcconfig:

2017-11-16  Daniel Bates  <dabates@apple.com>

        Add feature define for alternative presentation button element
        https://bugs.webkit.org/show_bug.cgi?id=179692
        Part of <rdar://problem/34917108>

        Reviewed by Andy Estes.

        Only enabled on Cocoa platforms by default.

        * Configurations/FeatureDefines.xcconfig:

2017-11-14  Nan Wang  <n_wang@apple.com>

        AX: AOM: Implement AccessibleNode class and support label and role attributes
        https://bugs.webkit.org/show_bug.cgi?id=179494

        Reviewed by Ryosuke Niwa.

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

2017-11-14  Alex Christensen  <achristensen@webkit.org>

        Remove Cocoa CFURLConnection loading code
        https://bugs.webkit.org/show_bug.cgi?id=179688

        Reviewed by Antti Koivisto.

        * Misc/WebDownload.mm:
        (-[WebDownload _initWithLoadingCFURLConnection:request:response:delegate:proxy:]): Deleted.
        * Misc/WebDownloadInternal.h:
        * Plugins/WebBaseNetscapePluginView.mm:
        * WebCoreSupport/WebFrameLoaderClient.mm:
        (WebFrameLoaderClient::convertMainResourceLoadToDownload):
        * WebView/WebView.mm:
        (-[WebView scheduleInRunLoop:forMode:]):
        (-[WebView unscheduleFromRunLoop:forMode:]):

2017-11-14  Daniel Bates  <dabates@apple.com>

        Update comment in FeatureDefines.xcconfig to reflect location of Visual Studio property files
        for feature defines

        Following r195498 and r201917 the Visual Studio property files for feature defines have
        moved from directory WebKitLibraries/win/tools/vsprops to directory Source/cmake/tools/vsprops.
        Update the comment in FeatureDefines.xcconfig to reflect the new location and names of these
        files.

        * Configurations/FeatureDefines.xcconfig:

2017-11-14  Jer Noble  <jer.noble@apple.com>

        Enable Modern EME tests in DumpRenderTree
        https://bugs.webkit.org/show_bug.cgi?id=179544

        Reviewed by Alex Christensen.

        Add a WebPreferences property to enable the (modern) EME API.

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

2017-11-14  Antti Koivisto  <antti@apple.com>

        Enable display:contents by default
        https://bugs.webkit.org/show_bug.cgi?id=179655

        Reviewed by Sam Weinig.

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

2017-11-13  Alex Christensen  <achristensen@webkit.org>

        Merge NetworkProcess::EnsurePrivateBrowsingSession and NetworkProcess::AddWebsiteDataStore into one message type
        https://bugs.webkit.org/show_bug.cgi?id=178751

        Reviewed by Brady Eidson.

        * WebCoreSupport/WebFrameNetworkingContext.mm:
        (WebFrameNetworkingContext::ensurePrivateBrowsingSession):

2017-11-08  Keith Miller  <keith_miller@apple.com>

        Async iteration should only fetch the next method once and add feature flag
        https://bugs.webkit.org/show_bug.cgi?id=179451

        Reviewed by Geoffrey Garen.

        Add feature flag for Async iteration.

        * Configurations/FeatureDefines.xcconfig:

2017-11-13  Mark Lam  <mark.lam@apple.com>

        Add more overflow check book-keeping for MarkedArgumentBuffer.
        https://bugs.webkit.org/show_bug.cgi?id=179634
        <rdar://problem/35492517>

        Reviewed by Saam Barati.

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

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

        More is<> and downcast<>, less static_cast<>
        https://bugs.webkit.org/show_bug.cgi?id=179600

        Reviewed by Chris Dumez.

        * DOM/DOM.mm:
        (kit): Use is/downcast.
        * WebCoreSupport/WebEditorClient.mm:
        (WebEditorClient::handleKeyboardEvent): Ditto.
        (WebEditorClient::handleInputMethodKeydown): Ditto.
        * WebView/WebHTMLView.mm:
        (-[WebHTMLView _interpretKeyEvent:savingCommands:]): Ditto.

2017-11-10  Frederik Riedel  <frederik.riedel@frogg.io>

        [iOS] Use new class name from UIKit when checking UITextSuggestion type for WebKitLegacy
        https://bugs.webkit.org/show_bug.cgi?id=179397

        Reviewed by Wenson Hsieh.

        * DOM/DOMHTMLInputElement.mm:
        (-[DOMHTMLInputElement insertTextSuggestion:]):

2017-11-08  Jeremy Jones  <jeremyj@apple.com>

        HTMLMediaElement should not use element fullscreen on iOS
        https://bugs.webkit.org/show_bug.cgi?id=179418
        rdar://problem/35409277

        Reviewed by Eric Carlson.

        Add ENABLE_VIDEO_USES_ELEMENT_FULLSCREEN to determine if HTMLMediaElement should use element full screen or not.

        * Configurations/FeatureDefines.xcconfig:

2017-11-06  Alex Christensen  <achristensen@webkit.org>

        Make ResourceLoader::willSendRequestInternal asynchronous
        https://bugs.webkit.org/show_bug.cgi?id=179251

        Reviewed by Andy Estes.

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

2017-11-01  Darin Adler  <darin@apple.com>

        Simplify event dispatch code and make it a bit more consistent
        https://bugs.webkit.org/show_bug.cgi?id=178991

        Reviewed by Chris Dumez.

        * DOM/DOMEvent.mm:
        (-[DOMEvent srcElement]): Call target instead of srcElement.

2017-11-04  Aishwarya Nirmal  <anirmal@apple.com>

        [Touch Bar Web API] Add support for menuitem tag
        https://bugs.webkit.org/show_bug.cgi?id=179020

        Reviewed by Ryosuke Niwa.

        Adds in properties and methods that allow the menuitem runtime feature
        to be enabled or disabled.

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

2017-11-02  Alex Christensen  <achristensen@webkit.org>

        Use CompletionHandlers for redirects
        https://bugs.webkit.org/show_bug.cgi?id=179163

        Reviewed by Tim Horton.

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

2017-11-02  Christopher Reid  <chris.reid@sony.com>

        Add a FileSystem namespace to FileSystem.cpp
        https://bugs.webkit.org/show_bug.cgi?id=179063

        Reviewed by Darin Adler.

        * Misc/WebNSFileManagerExtras.mm:
        * Storage/WebDatabaseProvider.mm:

2017-11-02  Frederic Wang  <fwang@igalia.com>

        Add references to bug 179167 in FIXME comments
        https://bugs.webkit.org/show_bug.cgi?id=179168

        Reviewed by Daniel Bates.

        * Configurations/FeatureDefines.xcconfig:

2017-11-01  Jeremy Jones  <jeremyj@apple.com>

        Implement WKFullscreenWindowController for iOS.
        https://bugs.webkit.org/show_bug.cgi?id=178924
        rdar://problem/34697120

        Reviewed by Simon Fraser.

        Enable ENABLE_FULLSCREEN_API for iOS. Fix a build error.

        * Configurations/FeatureDefines.xcconfig:
        * WebView/WebView.mm:
        (-[WebView fullScreenPlaceholderView]):

2017-10-31  Tim Horton  <timothy_horton@apple.com>

        Clean up some drag and drop feature flags
        https://bugs.webkit.org/show_bug.cgi?id=179082

        Reviewed by Simon Fraser.

        * Configurations/FeatureDefines.xcconfig:

2017-10-31  Simon Fraser  <simon.fraser@apple.com>

        Make it possible to test rubber-banding in overflow scroll
        https://bugs.webkit.org/show_bug.cgi?id=179078

        Reviewed by Sam Weinig.

        Add internals.unconstrainedScrollTo(element, x, y) and plumb through ScrollClamping
        (which replaces RenderLayer::ScrollOffsetClamping) to support it.

        Flip the default from unclamped to clamped for various RenderLayer scrolling-related
        functions, since most callers want clamped.

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

2017-10-31  Tim Horton  <timothy_horton@apple.com>

        Fix up some content filtering feature flags
        https://bugs.webkit.org/show_bug.cgi?id=179079

        Reviewed by Simon Fraser.

        * Configurations/FeatureDefines.xcconfig:

2017-10-28  Zalan Bujtas  <zalan@apple.com>

        [FrameView::layout cleanup] Move core layout logic to a separate class.
        https://bugs.webkit.org/show_bug.cgi?id=178771
        <rdar://problem/35166542>

        Reviewed by Simon Fraser.

        Move layout code out from FrameView to LayoutContext.

        * WebView/WebClipView.mm:
        (-[WebClipView _immediateScrollToPoint:]):
        * WebView/WebFrame.mm:
        (-[WebFrame layoutCount]):

2017-10-26  Simon Fraser  <simon.fraser@apple.com>

        Fix issues with WebView subframe painting
        https://bugs.webkit.org/show_bug.cgi?id=178842
        rdar://problem/34072253

        Reviewed by Daniel Bates.
        
        WebHTMLView overrides some NSView internal methods to make sure that AppKit doesn't paint
        subframes (WebKit controls subframe painting). The method signature of one of these changed in macOS
        High Sierra, so match the new signature.

        Also rename the 'rect' param to 'displayRect' to match AppKit code.

        * WebView/WebHTMLView.mm:
        (-[WebHTMLView _recursive:displayRectIgnoringOpacity:inGraphicsContext:shouldChangeFontReferenceColor:_recursive:displayRectIgnoringOpacity:inGraphicsContext:CGContext:topView:shouldChangeFontReferenceColor:]):
        (-[WebHTMLView _recursive:displayRectIgnoringOpacity:inGraphicsContext:CGContext:shouldChangeFontReferenceColor:_recursive:displayRectIgnoringOpacity:inGraphicsContext:CGContext:topView:shouldChangeFontReferenceColor:]): Deleted.

2017-10-25  Youenn Fablet  <youenn@apple.com>

        Enable ServiceWorker to fetch resources
        https://bugs.webkit.org/show_bug.cgi?id=178673

        Reviewed by Brady Eidson.

        * WebCoreSupport/WebFrameLoaderClient.mm:
        (WebFrameLoaderClient::pageID const):
        (WebFrameLoaderClient::frameID const):
        (WebFrameLoaderClient::sessionID const):

        Added implementation to the new getters.
        They are noop in the context of WK1.

2017-10-24  Eric Carlson  <eric.carlson@apple.com>

        Web Inspector: Enable WebKit logging configuration and display
        https://bugs.webkit.org/show_bug.cgi?id=177027
        <rdar://problem/33964767>

        Reviewed by Joseph Pecoraro.

        * WebCoreSupport/WebChromeClient.mm:
        (stringForMessageSource): Deal with Media and WebRTC message sources.

2017-10-20  Antoine Quint  <graouts@apple.com>

        [Web Animations] Provide basic timeline and animation interfaces
        https://bugs.webkit.org/show_bug.cgi?id=178526

        Reviewed by Dean Jackson.

        Remove the WEB_ANIMATIONS compile-time flag.

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

2017-10-19  Sam Weinig  <sam@webkit.org>

        [Settings] Move global settings into their own file
        https://bugs.webkit.org/show_bug.cgi?id=178512

        Reviewed by Darin Adler.

        Moves all global settigns out of SettingsBase and into the new DeprecatedGlobalSettings.

        * WebCoreSupport/WebChromeClient.mm:
        (WebChromeClient::supportsVideoFullscreen):
        * WebView/WebDynamicScrollBarsView.mm:
        (+[WebDynamicScrollBarsView _horizontalScrollerClass]):
        (+[WebDynamicScrollBarsView _verticalScrollerClass]):
        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):
        * WebView/WebView.mm:
        (-[WebView _commonInitializationWithFrameName:groupName:]):
        (-[WebView _preferencesChanged:]):
        (+[WebView _doNotStartObservingNetworkReachability]):

2017-10-17  Jiewen Tan  <jiewen_tan@apple.com>

        Replace some stack raw pointers with RefPtrs within WebCore/html
        https://bugs.webkit.org/show_bug.cgi?id=178201
        <rdar://problem/34841692>

        Reviewed by Ryosuke Niwa.

        * DOM/DOM.mm:
        (kit):
        Change the type of node as toNode() is changed to return RefPtr.

2017-10-18  Chris Dumez  <cdumez@apple.com>

        [Service Worker] Add stubs for Client / WindowClient / Clients
        https://bugs.webkit.org/show_bug.cgi?id=178469

        Reviewed by Youenn Fablet.

        Rename PageVisiblityState to VisibilityState.

        * WebView/WebView.mm:
        (kit):

2017-10-18  Wenson Hsieh  <wenson_hsieh@apple.com>

        Unreviewed, rolling out r223291.

        See WebCore ChangeLog for more detail.

        Reverted changeset:

        "Remove Editor::simplifyMarkup"
        https://bugs.webkit.org/show_bug.cgi?id=178271
        https://trac.webkit.org/changeset/223291

2017-10-17  Keith Miller  <keith_miller@apple.com>

        Change WebCore sources to work with unified source builds
        https://bugs.webkit.org/show_bug.cgi?id=178229

        Rubber stamped by Tim Horton.

        * Configurations/FeatureDefines.xcconfig:

2017-10-16  Sam Weinig  <sam@webkit.org>

        [Settings] Remove all custom code from Settings.h/cpp
        https://bugs.webkit.org/show_bug.cgi?id=178330

        Reviewed by Simon Fraser.

        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):
        
            Update for naming changes of FrameFlattening now that it is an enum class.

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

        Remove Editor::simplifyMarkup
        https://bugs.webkit.org/show_bug.cgi?id=178271

        Reviewed by Wenson Hsieh.

        * WebView/WebView.mm:
        (-[WebView _simplifyMarkup:endNode:]):

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

        [Mac] Add support for MouseEvent.buttons
        https://bugs.webkit.org/show_bug.cgi?id=178214

        Reviewed by Ryosuke Niwa.

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

2017-10-11  Sam Weinig  <sam@webkit.org>

        Remove out-parameter variants of copyToVector
        https://bugs.webkit.org/show_bug.cgi?id=178155

        Reviewed by Tim Horton.

        * Plugins/WebNetscapePluginView.mm:
        (-[WebNetscapePluginView destroyPlugin]):
        * WebView/WebHTMLRepresentation.mm:
        (newArrayWithStrings):

            Replace out-parameter based copyToVector, with one that returns a Vector.

2017-10-11  Ryosuke Niwa  <rniwa@webkit.org>

        Sanitize URL in pasteboard for other applications and cross origin content
        https://bugs.webkit.org/show_bug.cgi?id=178060
        <rdar://problem/34874518>

        Reviewed by Wenson Hsieh.

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

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

        Modernize Geolocation code
        https://bugs.webkit.org/show_bug.cgi?id=178148

        Reviewed by Ryosuke Niwa.

        * WebCoreSupport/WebGeolocationClient.h:
        * WebCoreSupport/WebGeolocationClient.mm:
        (WebGeolocationClient::lastPosition):
        * WebView/WebGeolocationPosition.mm:
        (-[WebGeolocationPositionInternal initWithCoreGeolocationPosition:]):
        (core):
        (-[WebGeolocationPosition initWithTimestamp:latitude:longitude:accuracy:]):
        (-[WebGeolocationPosition initWithGeolocationPosition:]):
        * WebView/WebGeolocationPositionInternal.h:

2017-10-10  Ryosuke Niwa  <rniwa@webkit.org>

        Enable custom pasteboard data in DumpRenderTree and WebKitTestRunner
        https://bugs.webkit.org/show_bug.cgi?id=178154

        Reviewed by Wenson Hsieh.

        Enable custom pasteboard data by default.

        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):
        (-[WebPreferences customPasteboardDataEnabled]): Added.
        (-[WebPreferences setCustomPasteboardDataEnabled:]): Added.
        * WebView/WebPreferencesPrivate.h:
        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]):

2017-10-10  Sam Weinig  <sam@webkit.org>

        Replace copyKeysToVector/copyValuesToVector with copyToVector(map.keys())/copyToVector(map.values())
        https://bugs.webkit.org/show_bug.cgi?id=178102

        Reviewed by Tim Horton.

        * History/WebHistory.mm:
        (-[WebHistoryPrivate rebuildHistoryByDayIfNeeded:]):
        * Plugins/Hosted/NetscapePluginInstanceProxy.mm:
        (WebKit::NetscapePluginInstanceProxy::stopAllStreams):
        * WebCoreSupport/WebUserMediaClient.mm:
        (WebUserMediaClient::pageDestroyed):

2017-10-09  Robin Morisset  <rmorisset@apple.com>

        Make the names of the options consistent
        https://bugs.webkit.org/show_bug.cgi?id=177933

        Reviewed by Saam Barati.

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

2017-10-06  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS] Tweak support for classifying form controls (followup to r222487)
        https://bugs.webkit.org/show_bug.cgi?id=177917
        <rdar://problem/34820122>

        Reviewed by Dean Jackson.

        Implement _autofillContext in legacy WebKit, and remove the two previous SPI hooks.

        * DOM/DOMHTMLInputElement.mm:
        (-[DOMHTMLInputElement _autofillContext]):
        (-[DOMHTMLInputElement acceptsAutofilledLoginCredentials]): Deleted.
        (-[DOMHTMLInputElement representingPageURL]): Deleted.

2017-10-05  Keith Miller  <keith_miller@apple.com>

        Unreviewed, tapi builds without optimization so we should have TAPI passes -DRELEASE_WITHOUT_OPTIMIZATIONS.

        * Configurations/WebKitLegacy.xcconfig:

2017-10-05  Jer Noble  <jer.noble@apple.com>

        [Cocoa] Enable ENABLE_ENCRYPTED_MEDIA build-time setting
        https://bugs.webkit.org/show_bug.cgi?id=177261

        Reviewed by Eric Carlson.

        * Configurations/FeatureDefines.xcconfig:

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

        Drop unused parameters for CookiesStrategy::cookiesEnabled()
        https://bugs.webkit.org/show_bug.cgi?id=177957

        Reviewed by Alex Christensen.

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

2017-10-05  Youenn Fablet  <youenn@apple.com>

        Make LibWebRTCProvider port agnostic
        https://bugs.webkit.org/show_bug.cgi?id=177747

        Reviewed by Alex Christensen & Alex Garcia.

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

2017-10-04  Alex Christensen  <achristensen@webkit.org>

        Stop linking with WebKitSystemInterface
        https://bugs.webkit.org/show_bug.cgi?id=177915

        Reviewed by Antti Koivisto.

        * Configurations/DebugRelease.xcconfig:
        * Configurations/WebKitLegacy.xcconfig:

2017-10-04  Alex Christensen  <achristensen@webkit.org>

        Remove unnecessary includes of WebKitSystemInterface on Cocoa platforms
        https://bugs.webkit.org/show_bug.cgi?id=177912

        Reviewed by Saam Barati.

        * Carbon/CarbonUtils.m:
        * Carbon/CarbonWindowAdapter.mm:
        * Carbon/HIWebView.mm:
        * DefaultDelegates/WebDefaultContextMenuDelegate.mm:
        * Misc/WebNSFileManagerExtras.mm:
        * Misc/WebNSPasteboardExtras.mm:
        * Misc/WebNSURLExtras.mm:
        * Plugins/Hosted/HostedNetscapePluginStream.mm:
        * Plugins/Hosted/NetscapePluginHostManager.mm:
        * Plugins/Hosted/NetscapePluginHostProxy.mm:
        * Plugins/Hosted/NetscapePluginInstanceProxy.mm:
        * Plugins/Hosted/WebHostedNetscapePluginView.h:
        * Plugins/Hosted/WebTextInputWindowController.m:
        * Plugins/WebBaseNetscapePluginView.mm:
        * Plugins/WebNetscapePluginEventHandlerCarbon.mm:
        * Plugins/WebNetscapePluginEventHandlerCocoa.mm:
        * Plugins/WebNetscapePluginStream.mm:
        * Plugins/WebNetscapePluginView.mm:
        * Plugins/WebPluginDatabase.mm:
        * WebCoreSupport/PopupMenuMac.mm:
        * WebCoreSupport/WebChromeClient.mm:
        * WebCoreSupport/WebFrameLoaderClient.mm:
        * WebCoreSupport/WebInspectorClient.mm:
        * WebCoreSupport/WebPlatformStrategies.mm:
        * WebCoreSupport/WebSystemInterface.mm:
        * WebView/WebDynamicScrollBarsView.mm:
        * WebView/WebFrame.mm:
        * WebView/WebFrameView.mm:
        * WebView/WebFullScreenController.mm:
        * WebView/WebHTMLView.mm:
        * WebView/WebPreferences.mm:
        * WebView/WebView.mm:

2017-09-29  Alexey Proskuryakov  <ap@apple.com>

        Follow-up to https://trac.webkit.org/r222239 to fix crashes.
        rdar://problem/34705779

        Addressing review comments that I somehow landed without.

        * WebView/WebHTMLView.mm: Undo adding #if guards around -_web_uniqueWebDataURL

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

        Split some logic out of VisitedLinkStore and make it reusable
        https://bugs.webkit.org/show_bug.cgi?id=177575

        Reviewed by Alex Christensen.

        * WebCoreSupport/WebVisitedLinkStore.h:
        * WebCoreSupport/WebVisitedLinkStore.mm:
        (WebVisitedLinkStore::addVisitedLink):
        (WebVisitedLinkStore::removeVisitedLink):
        (WebVisitedLinkStore::isLinkVisited):
        (WebVisitedLinkStore::addVisitedLinkHash):

2017-09-28  Jonathan Bedard  <jbedard@apple.com>

        Build fix for High Sierra 32 bit Mac
        https://bugs.webkit.org/show_bug.cgi?id=177551
        <rdar://problem/34690283>

        Reviewed by Alexey Proskuryakov.

        Some assertions have been removed from the SDK. Replace these assertions with equivalent
        WTF assert code.  Since the files in this patch are using tabs, some style changes were
        also made.

        * Carbon/CarbonWindowAdapter.mm:
        (+[CarbonWindowAdapter frameViewClassForStyleMask:]):
        (-[CarbonWindowAdapter initWithContentRect:styleMask:backing:defer:]):
        (-[CarbonWindowAdapter initWithCarbonWindowRef:takingOwnership:disableOrdering:carbon:]):
        (-[CarbonWindowAdapter setViewsNeedDisplay:]):
        (-[CarbonWindowAdapter initWithCarbonWindowRef:takingOwnership:]):
        (-[CarbonWindowAdapter dealloc]):
        (-[CarbonWindowAdapter windowRef]):
        (-[CarbonWindowAdapter _hasWindowRef]):
        (-[CarbonWindowAdapter _managesWindowRef]):
        (-[CarbonWindowAdapter _removeWindowRef]):
        (-[CarbonWindowAdapter _carbonWindowClass]):
        (-[CarbonWindowAdapter reconcileToCarbonWindowBounds]):
        (-[CarbonWindowAdapter sendSuperEvent:]):
        (-[CarbonWindowAdapter relinquishFocus]):
        (-[CarbonWindowAdapter _cancelKey:]):
        (-[CarbonWindowAdapter _commonAwake]):
        (-[CarbonWindowAdapter _destroyRealWindow:]):
        (-[CarbonWindowAdapter _oldPlaceWindow:]):
        (-[CarbonWindowAdapter _termWindowIfOwner]):
        (-[CarbonWindowAdapter _windowMovedToRect:]):
        (-[CarbonWindowAdapter constrainFrameRect:toScreen:]):
        (-[CarbonWindowAdapter selectKeyViewFollowingView:]):
        (-[CarbonWindowAdapter selectKeyViewPrecedingView:]):
        (-[CarbonWindowAdapter canBecomeKeyWindow]):
        (-[CarbonWindowAdapter canBecomeMainWindow]):
        (-[CarbonWindowAdapter encodeWithCoder:]):
        (-[CarbonWindowAdapter initWithCoder:]):
        (-[CarbonWindowAdapter setContentView:]):
        (-[CarbonWindowAdapter worksWhenModal]):
        (-[CarbonWindowAdapter _setModalWindowLevel]):
        (-[CarbonWindowAdapter _clearModalWindowLevel]):
        (-[CarbonWindowAdapter carbonHICommandIDFromActionSelector:]):
        (-[CarbonWindowAdapter sendCarbonProcessHICommandEvent:]):
        (-[CarbonWindowAdapter sendCarbonUpdateHICommandStatusEvent:withMenuRef:andMenuItemIndex:]):
        (-[CarbonWindowAdapter _handleRootBoundsChanged]):
        (-[CarbonWindowAdapter _handleContentBoundsChanged]):
        (-[CarbonWindowAdapter _handleCarbonEvent:callRef:]):
        (NSCarbonWindowHandleEvent):
        (-[CarbonWindowAdapter _reallyDoOrderWindow:relativeTo:findKey:forCounter:force:isModal:]):
        (-[CarbonWindowAdapter _growBoxRect]):
        * Carbon/HIWebView.mm:
        (HIWebViewGetWebView):
        (HIWebViewConstructor):
        (HIWebViewDestructor):
        (HIWebViewRegisterClass):
        (GetBehaviors):
        (Draw):
        (HitTest):
        (GetRegion):
        (GetWindowRef):
        (CreateNSEventAdoptingCGEvent):
        (CopyEventCGEvent):
        (CreateNSEventWithCarbonClickEvent):
        (Click):
        (CreateNSEventWithCarbonEvent):
        (MouseUp):
        (CreateNSEventWithCarbonMouseMoveEvent):
        (MouseMoved):
        (MouseDragged):
        (MouseWheelMoved):
        (ContextMenuClick):
        (GetKind):
        (BoundsChanged):
        (OwningWindowChanged):
        (WindowHandler):
        (SyncFrame):
        (SetFocusPart):
        (AdvanceFocus):
        (RelinquishFocus):
        (ActiveStateChanged):
        (ProcessCommand):
        (UpdateCommandStatus):
        (_NSSelectorForHICommand):
        (HIWebViewEventHandler):
        (StartUpdateObserver):
        (StopUpdateObserver):
        (UpdateObserver):

2017-09-27  Wenson Hsieh  <wenson_hsieh@apple.com>

        Drag event DataTransfer has unexpected types "dyn.ah62d4..."
        https://bugs.webkit.org/show_bug.cgi?id=172526
        <rdar://problem/32396081>

        Reviewed by Ryosuke Niwa.

        Adjust for changes in WebCore. See WebCore ChangeLog for more details.

        * WebCoreSupport/WebPlatformStrategies.h:
        * WebCoreSupport/WebPlatformStrategies.mm:
        (WebPlatformStrategies::webExposedTypes):
        (WebPlatformStrategies::writeCustomData):

2017-09-27  Matt Lewis  <jlewis3@apple.com>

        Unreviewed, rolling out r222567.

        This broke and internal build.

        Reverted changeset:

        "Build fix for High Sierra 32 bit Mac"
        https://bugs.webkit.org/show_bug.cgi?id=177551
        http://trac.webkit.org/changeset/222567

2017-09-27  Jonathan Bedard  <jbedard@apple.com>

        Build fix for High Sierra 32 bit Mac
        https://bugs.webkit.org/show_bug.cgi?id=177551
        <rdar://problem/34690283>

        Reviewed by Alexey Proskuryakov.

        Some assertions have been removed from the SDK. Replace these assertions with equivalent
        WTF assert code.  Since the files in this patch are using tabs, some style changes were
        also made.

        * Carbon/CarbonWindowAdapter.mm:
        (+[CarbonWindowAdapter frameViewClassForStyleMask:]):
        (-[CarbonWindowAdapter initWithContentRect:styleMask:backing:defer:]):
        (-[CarbonWindowAdapter initWithCarbonWindowRef:takingOwnership:disableOrdering:carbon:]):
        (-[CarbonWindowAdapter setViewsNeedDisplay:]):
        (-[CarbonWindowAdapter initWithCarbonWindowRef:takingOwnership:]):
        (-[CarbonWindowAdapter dealloc]):
        (-[CarbonWindowAdapter windowRef]):
        (-[CarbonWindowAdapter _hasWindowRef]):
        (-[CarbonWindowAdapter _managesWindowRef]):
        (-[CarbonWindowAdapter _removeWindowRef]):
        (-[CarbonWindowAdapter _carbonWindowClass]):
        (-[CarbonWindowAdapter reconcileToCarbonWindowBounds]):
        (-[CarbonWindowAdapter sendSuperEvent:]):
        (-[CarbonWindowAdapter relinquishFocus]):
        (-[CarbonWindowAdapter _cancelKey:]):
        (-[CarbonWindowAdapter _commonAwake]):
        (-[CarbonWindowAdapter _destroyRealWindow:]):
        (-[CarbonWindowAdapter _oldPlaceWindow:]):
        (-[CarbonWindowAdapter _termWindowIfOwner]):
        (-[CarbonWindowAdapter _windowMovedToRect:]):
        (-[CarbonWindowAdapter constrainFrameRect:toScreen:]):
        (-[CarbonWindowAdapter selectKeyViewFollowingView:]):
        (-[CarbonWindowAdapter selectKeyViewPrecedingView:]):
        (-[CarbonWindowAdapter canBecomeKeyWindow]):
        (-[CarbonWindowAdapter canBecomeMainWindow]):
        (-[CarbonWindowAdapter encodeWithCoder:]):
        (-[CarbonWindowAdapter initWithCoder:]):
        (-[CarbonWindowAdapter setContentView:]):
        (-[CarbonWindowAdapter worksWhenModal]):
        (-[CarbonWindowAdapter _setModalWindowLevel]):
        (-[CarbonWindowAdapter _clearModalWindowLevel]):
        (-[CarbonWindowAdapter carbonHICommandIDFromActionSelector:]):
        (-[CarbonWindowAdapter sendCarbonProcessHICommandEvent:]):
        (-[CarbonWindowAdapter sendCarbonUpdateHICommandStatusEvent:withMenuRef:andMenuItemIndex:]):
        (-[CarbonWindowAdapter _handleRootBoundsChanged]):
        (-[CarbonWindowAdapter _handleContentBoundsChanged]):
        (-[CarbonWindowAdapter _handleCarbonEvent:callRef:]):
        (NSCarbonWindowHandleEvent):
        (-[CarbonWindowAdapter _reallyDoOrderWindow:relativeTo:findKey:forCounter:force:isModal:]):
        (-[CarbonWindowAdapter _growBoxRect]):
        * Carbon/HIWebView.mm:
        (HIWebViewGetWebView):
        (HIWebViewConstructor):
        (HIWebViewDestructor):
        (HIWebViewRegisterClass):
        (GetBehaviors):
        (Draw):
        (HitTest):
        (GetRegion):
        (GetWindowRef):
        (CreateNSEventAdoptingCGEvent):
        (CopyEventCGEvent):
        (CreateNSEventWithCarbonClickEvent):
        (Click):
        (CreateNSEventWithCarbonEvent):
        (MouseUp):
        (CreateNSEventWithCarbonMouseMoveEvent):
        (MouseMoved):
        (MouseDragged):
        (MouseWheelMoved):
        (ContextMenuClick):
        (GetKind):
        (BoundsChanged):
        (OwningWindowChanged):
        (WindowHandler):
        (SyncFrame):
        (SetFocusPart):
        (AdvanceFocus):
        (RelinquishFocus):
        (ActiveStateChanged):
        (ProcessCommand):
        (UpdateCommandStatus):
        (_NSSelectorForHICommand):
        (HIWebViewEventHandler):
        (StartUpdateObserver):
        (StopUpdateObserver):
        (UpdateObserver):

2017-09-25  Alex Christensen  <achristensen@webkit.org>

        Make PolicyAction an encodable enum class
        https://bugs.webkit.org/show_bug.cgi?id=177480

        Reviewed by Antti Koivisto.

        * Plugins/WebPluginContainerCheck.mm:
        (-[WebPluginContainerCheck _continueWithPolicy:]):
        (-[WebPluginContainerCheck _isForbiddenFileLoad]):
        * WebCoreSupport/WebFrameLoaderClient.mm:
        (-[WebFramePolicyListener invalidate]):
        (-[WebFramePolicyListener ignore]):
        (-[WebFramePolicyListener download]):
        (-[WebFramePolicyListener use]):
        (-[WebFramePolicyListener continue]):
        * WebView/WebPolicyDelegate.mm:
        (-[WebPolicyDecisionListener use]):
        (-[WebPolicyDecisionListener ignore]):
        (-[WebPolicyDecisionListener download]):

2017-09-25  Frederik Riedel  <riedel@apple.com>

        Expose way to set values of classified form controls as {Legacy WebKit, WebKit} SPI
        https://bugs.webkit.org/show_bug.cgi?id=174394
        <rdar://problem/33183504>

        Reviewed by Ryosuke Niwa.

        * DOM/DOMHTMLInputElement.h:
        * DOM/DOMHTMLInputElement.mm:
        (-[DOMHTMLInputElement acceptsAutofilledLoginCredentials]):
        Determines if this HTMLInputElement is part of a login screen.
        (-[DOMHTMLInputElement representingPageUrl]):
        Returns the webpage's URL that is currently displayed in the Web View.
        (-[DOMHTMLInputElement insertTextSuggestion:]):
        Inserts login credentials into the Web View.

2017-09-25  Sam Weinig  <sam@webkit.org>

        Remove unused EditorClient functions
        https://bugs.webkit.org/show_bug.cgi?id=177463

        Reviewed by Alex Christensen.

        Remove unused EditorClient functions.

        * WebCoreSupport/WebEditorClient.h:
        * WebCoreSupport/WebEditorClient.mm:
        (WebEditorClient::canonicalizeURL): Deleted.
        (WebEditorClient::canonicalizeURLString): Deleted.
        (WebEditorClient::writeDataToPasteboard): Deleted.
        (WebEditorClient::supportedPasteboardTypesForCurrentSelection): Deleted.
        (WebEditorClient::readDataFromPasteboard): Deleted.
        (WebEditorClient::pasteboardChangeCount): Deleted.

2017-09-25  Alex Christensen  <achristensen@webkit.org>

        Stop using PolicyCallback
        https://bugs.webkit.org/show_bug.cgi?id=176088

        Reviewed by Andy Estes.

        * WebCoreSupport/WebFrameLoaderClient.mm:
        (-[WebFramePolicyListener invalidate]):
        (-[WebFramePolicyListener receivedPolicyDecision:]):

2017-09-25  Sam Weinig  <sam@webkit.org>

        Remove unnecessary userVisibleString EditorClient function
        https://bugs.webkit.org/show_bug.cgi?id=177456

        Reviewed by Dan Bernstein.

        * WebCoreSupport/WebEditorClient.h:
        * WebCoreSupport/WebEditorClient.mm:
        (WebEditorClient::userVisibleString): Deleted.

            Remove userVisibleString client function.

2017-09-25  Alex Christensen  <achristensen@webkit.org>

        Separate form submission from PolicyChecker infrastructure
        https://bugs.webkit.org/show_bug.cgi?id=177396

        Reviewed by Geoffrey Garen.

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

2017-09-22  Zalan Bujtas  <zalan@apple.com>

        WeakPtrFactory should populate m_ref lazily.
        https://bugs.webkit.org/show_bug.cgi?id=177375

        Reviewed by Geoffrey Garen.

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

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

        Use high resolution timestamp for event time
        https://bugs.webkit.org/show_bug.cgi?id=154246
        <rdar://problem/34333304>

        Reviewed by Ryosuke Niwa.

        Use WallTime / MonotonicTime instead of double type for clarity.

        * DOM/DOMEvent.mm:
        (-[DOMEvent timeStamp]):
        * WebView/WebFrame.mm:
        (-[WebFrame _dragSourceEndedAt:operation:]):
        * WebView/WebPDFView.mm:
        (-[WebPDFView PDFViewWillClickOnLink:withURL:]):

2017-09-21  Ryosuke Niwa  <rniwa@webkit.org>

        Enable dataTransfer.items on macOS and iOS
        https://bugs.webkit.org/show_bug.cgi?id=177335

        Reviewed by Sam Weinig.

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

2017-09-20  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: WebView indication highlights sticks around for WebKitLegacy views
        https://bugs.webkit.org/show_bug.cgi?id=177101
        <rdar://problem/34500648>

        Reviewed by Brian Burg.

        * WebInspector/WebNodeHighlight.mm:
        Ensure we close the window that we have just removed.

2017-09-20  Antti Koivisto  <antti@apple.com>

        Remove DOM and styling support for CSS Regions
        https://bugs.webkit.org/show_bug.cgi?id=177221

        Reviewed by Andreas Kling.

        * Configurations/FeatureDefines.xcconfig:
        * DOM/DOMCSS.mm:
        (kitClass):
        * DOM/DOMElement.mm:
        (-[DOMElement webkitRegionOverset]): Deleted.

2017-09-19  Alexey Proskuryakov  <ap@apple.com>

        Layering violation in Editor::createFragment
        https://bugs.webkit.org/show_bug.cgi?id=176123

        Reviewed by Darin Adler.

        * Misc/WebNSURLExtras.h:
        * Misc/WebNSURLExtras.mm:
        * WebView/WebFrame.mm:
        * WebView/WebHTMLView.mm:
        Removed multiple copies of webkit-fake-url creation code, switching to URL::fakeURLWithRelativePart().

        * WebCoreSupport/WebEditorClient.mm:
        (_WebCreateFragment): Added a stub implementation for older OSes. This is needed
        because WebKitLegacy.exp is not passed through preprocessor, so there is no sane
        way to avoid exporting the symbol just on newer OSes.

2017-09-19  Ryosuke Niwa  <rniwa@webkit.org>

        On iOS, getData can't get text set by setData during copy event
        https://bugs.webkit.org/show_bug.cgi?id=176980
        <rdar://problem/34453915>

        Reviewed by Darin Adler.

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

2017-09-18  Andy Estes  <aestes@apple.com>

        [Mac] Upstream miscellaneous WebKitSystemInterface functions
        https://bugs.webkit.org/show_bug.cgi?id=177029

        Reviewed by Alex Christensen.

        * DefaultDelegates/WebDefaultContextMenuDelegate.mm:
        (-[WebDefaultUIDelegate menuItemWithTag:target:representedObject:]):
        * Plugins/Hosted/NetscapePluginHostProxy.mm:
        (WebKit::NetscapePluginHostProxy::NetscapePluginHostProxy):
        * WebCoreSupport/PopupMenuMac.mm:
        (PopupMenuMac::show):
        * WebCoreSupport/WebSystemInterface.mm:
        (InitWebCoreSystemInterface):
        * WebView/WebHTMLView.mm:
        (-[WebHTMLView setDataSource:]):
        (-[WebHTMLView attachRootLayer:]):
        * WebView/WebView.mm:
        (-[WebView _needsAdobeFrameReloadingQuirk]):
        (-[WebView _needsLinkElementTextCSSQuirk]):
        (-[WebView _needsIsLoadingInAPISenseQuirk]):
        (-[WebView _needsFrameLoadDelegateRetainQuirk]):
        (-[WebView _preferencesChanged:]):

2017-09-15  Andy Estes  <aestes@apple.com>

        [Cocoa] Upstream MediaRemote and VideoToolbox WebKitSystemInterface functions
        https://bugs.webkit.org/show_bug.cgi?id=176953

        Reviewed by Eric Carlson.

        * WebCoreSupport/WebSystemInterface.mm:
        (InitWebCoreSystemInterface):

2017-09-14  Andy Estes  <aestes@apple.com>

        [Mac] Upstream SpeechSynthesis-related WebKitSystemInterface functions
        https://bugs.webkit.org/show_bug.cgi?id=176931

        Reviewed by Joseph Pecoraro.

        * WebCoreSupport/WebSystemInterface.mm:
        (InitWebCoreSystemInterface):

2017-09-14  Yusuke Suzuki  <utatane.tea@gmail.com>

        [JSC] Add PrivateSymbolMode::{Include,Exclude} for PropertyNameArray
        https://bugs.webkit.org/show_bug.cgi?id=176867

        Reviewed by Sam Weinig.

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

2017-09-13  Andy Estes  <aestes@apple.com>

        [CF] Upstream CFNetwork-related WebKitSystemInterface functions
        https://bugs.webkit.org/show_bug.cgi?id=176729

        Reviewed by Alex Christensen.

        * WebCoreSupport/WebSystemInterface.mm:
        (InitWebCoreSystemInterface):
        * WebView/WebView.mm:
        (+[WebView _setCacheModel:]):

2017-09-13  Ryosuke Niwa  <rniwa@webkit.org>

        Refactor WebContentReader out of EditorMac and EditorIOS
        https://bugs.webkit.org/show_bug.cgi?id=176770

        Reviewed by Sam Weinig.

        * WebCoreSupport/WebEditorClient.mm:

2017-09-12  Ryosuke Niwa  <rniwa@webkit.org>

        Dragging & dropping a file creates an attachment element even when it's disabled
        https://bugs.webkit.org/show_bug.cgi?id=176769

        Reviewed by Tim Horton.

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

2017-09-11  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS DnD] Support DataTransfer.setDragImage when starting a drag on iOS
        https://bugs.webkit.org/show_bug.cgi?id=176721
        <rdar://problem/34373660>

        Reviewed by Tim Horton.

        Rename elementBounds => dragPreviewFrameInRootViewCoordinates. (Note: Unfortunately, _draggedElementBounds in
        WebViewPrivate.h can't be renamed yet, due to binary and SDK compatibility with UIKit).

        * WebView/WebView.mm:
        (-[WebView _startDrag:]):
        (-[WebView _draggedElementBounds]):
        (-[WebView _endedDataInteraction:global:]):
        * WebView/WebViewData.h:

2017-09-11  Andy Estes  <aestes@apple.com>

        [Mac] Upstream QTKit-related WebKitSystemInterface functions
        https://bugs.webkit.org/show_bug.cgi?id=176472

        Reviewed by Eric Carlson.

        * WebCoreSupport/WebSystemInterface.mm:
        (InitWebCoreSystemInterface):

2017-09-09  Mark Lam  <mark.lam@apple.com>

        Avoid duplicate computations of ExecState::vm().
        https://bugs.webkit.org/show_bug.cgi?id=176647

        Reviewed by Saam Barati.

        * Plugins/Hosted/NetscapePluginInstanceProxy.mm:
        (WebKit::NetscapePluginInstanceProxy::invokeDefault):
        (WebKit::NetscapePluginInstanceProxy::construct):
        (WebKit::NetscapePluginInstanceProxy::setProperty):
        (WebKit::NetscapePluginInstanceProxy::removeProperty):
        (WebKit::NetscapePluginInstanceProxy::enumerate):
        * Plugins/Hosted/ProxyInstance.mm:
        (WebKit::ProxyRuntimeMethod::create):

2017-09-08  Commit Queue  <commit-queue@webkit.org>

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

        This caused build failures. (Requested by mlewis13 on
        #webkit).

        Reverted changeset:

        "[Mac] Upstream QTKit-related WebKitSystemInterface functions"
        https://bugs.webkit.org/show_bug.cgi?id=176472
        http://trac.webkit.org/changeset/221773

2017-09-07  Andy Estes  <aestes@apple.com>

        [Mac] Upstream QTKit-related WebKitSystemInterface functions
        https://bugs.webkit.org/show_bug.cgi?id=176472

        Reviewed by Eric Carlson.

        * WebCoreSupport/WebSystemInterface.mm:
        (InitWebCoreSystemInterface):

2017-09-07  Myles C. Maxfield  <mmaxfield@apple.com>

        [PAL] Unify PlatformUserPreferredLanguages.h with Language.h
        https://bugs.webkit.org/show_bug.cgi?id=176561

        Reviewed by Brent Fulgham.

        * Misc/WebNSUserDefaultsExtras.mm:

2017-09-07  Alex Christensen  <achristensen@webkit.org>

        Modernize Geolocation code
        https://bugs.webkit.org/show_bug.cgi?id=176496

        Reviewed by Andy Estes.

        * WebCoreSupport/WebGeolocationClient.h:
        * WebCoreSupport/WebGeolocationClient.mm:
        (WebGeolocationClient::requestPermission):
        (-[WebGeolocationPolicyListener initWithGeolocation:]):
        (-[WebGeolocationPolicyListener initWithGeolocation:forWebView:]):
        (-[WebGeolocationProviderInitializationListener initWithGeolocation:]):
        * WebView/WebView.mm:
        (-[WebView _commonInitializationWithFrameName:groupName:]):
        (-[WebView _geolocationDidFailWithMessage:]):

2017-09-05  Tim Horton  <timothy_horton@apple.com>

        Remove some unused bits of code and resources
        https://bugs.webkit.org/show_bug.cgi?id=176275

        Reviewed by Dan Bernstein.

        * Misc/WebNSFileManagerExtras.mm:
        Include FileSystem instead of FileSystemIOS.

2017-09-03  Darin Adler  <darin@apple.com>

        [Cocoa] Tidy a few things in legacy WebHTMLView
        https://bugs.webkit.org/show_bug.cgi?id=176280

        Reviewed by Dan Bernstein.

        * WebCoreSupport/WebChromeClient.mm:
        (WebChromeClient::attachRootGraphicsLayer): Made this function Mac-only, because the
        methods it calls on WebHTMLView were doing nothing on iOS.

        * WebView/WebFrame.mm:
        (-[WebFrame _paintBehaviorForDestinationContext:]): Changed iOS code so that it no longer
        depends on -[WebHTMLView _web_isDrawingIntoLayer], which always returned YES on iOS.

        * WebView/WebHTMLView.mm: Define WebEvent on both iOS and Mac so more event handling
        code can be shared without #if below. Use #if PLATFORM(MAC) instead of #if !PLATFORM(IOS)
        in a lot more places. Move many of the SPI declarations up to the top in alphabetical
        order. Removed all sorts of unused things. Made more code and fields Mac-only where
        what was compiled was doing nothing on iOS and it makes the resulting code simpler.
        Use RetainPtr instead of writing retain/release wherever possible.
        (+[WebMenuTarget sharedMenuTarget]): Moved global inside this method and used C++
        initialization for it. Removed various unused methods and declarations of methods.
        (promisedDataClient): Use NeverDestroyed instead of just doing a "new" on the heap.
        (-[WebHTMLView _imageExistsAtPaths:]): Deleted.
        (-[WebHTMLView _documentFragmentWithPaths:]): Use RetainPtr and modern for loop.
        (+[WebHTMLView _excludedElementsForAttributedStringConversion]): Use C++ initialization,
        and remove CFRetain no longer needed since we don't support garbage collection any more.
        (uniqueURLWithRelativePart): Simplified using [NSUUID UUID].
        (-[WebHTMLView _plainTextFromPasteboard:]): Simplified with RetainPtr.
        (-[WebHTMLView _pasteWithPasteboard:allowPlainText:]): Ditto.
        (-[WebHTMLView _pasteAsPlainTextWithPasteboard:]): Ditto.
        (-[WebHTMLView _removeWindowObservers]): Removed code dealing with empty
        methods windowWillOrderOnScreen: and windowWillOrderOffScreen:.
        (-[WebHTMLView _shouldDeleteRange:]): Deleted. Was unused.
        (-[WebHTMLView _writeSelectionWithPasteboardTypes:toPasteboard:cachedAttributedString:]):
        Simplified with stringByReplacingOccurrencesOfString and modern string literal syntax.
        (-[WebHTMLView _setMouseDownEvent:]): Ditto.
        (-[WebHTMLView _web_setPrintingModeRecursive:adjustViewSize:]): Added. Helper method so
        the next three methhods can be super-simple. Used RetainPtr and a modern for loop to make
        this method simpler than the functions it replaced. Also got rid of the enumeratingSubviews
        debug flag; we haven't used it for years and it's not clearly helpful.
        (-[WebHTMLView _web_setPrintingModeRecursive]): Turned into a one-liner with the above.
        (-[WebHTMLView _web_clearPrintingModeRecursive]): Ditto.
        (-[WebHTMLView _web_setPrintingModeRecursiveAndAdjustViewSize]): Ditto.
        (-[WebHTMLView _web_makePluginSubviewsPerformSelector:withObject:]): Moved from the
        WebInternal category to the WebHTMLViewFileInternal category so it can be called by
        two additional methods in the WebPrivate category and still be called by the two
        methods in the WebInternal category that were already using it.
        (-[WebHTMLView didAddSubview:]): Deleted.
        (-[WebHTMLView _insideAnotherHTMLView]): Deleted.
        (-[WebHTMLView _clearLastHitViewIfSelf]): Deleted. Inlined the implementation in the one
        place this was called, the close method.
        (-[WebHTMLView _setToolTip:]): Simplified with RetainPtr.
        (-[WebHTMLView pasteboard:provideDataForType:]): Ditto.
        (-[WebHTMLView _autoscroll]): Simplified by making this Mac-only.
        (-[WebHTMLView _hasHTMLDocument]): Deleted. The one caller was removed a long time ago.
        (-[WebHTMLView _web_documentFragmentFromPasteboard:pasteboardType:imageMIMEType:]):
        Added helper method to make the one below simpler.
        (-[WebHTMLView _documentFragmentFromPasteboard:forType:inContext:subresources:]):
        Compared pasteboard type strings using isEqualToString: rather than using == since
        we want to actually compare the string contents. Also updated to use modern for loop,
        renamed a local variable from "s" to "localSubresources", and factored out the handling
        of three image types to use the helper method above.
        (-[WebHTMLView _pauseNullEventsForAllNetscapePlugins]): Rewrite using the
        _web_makePluginSubviewsPerformSelector:withObject: method.
        (-[WebHTMLView _resumeNullEventsForAllNetscapePlugins]): Ditto.
        (-[NSView _web_addDescendentWebHTMLViewsToArray:]): Fixed spelling to use the adjective
        "descendent" rather than the noun "descendant". Also removed Mac-only optimization to
        not call the -[NSView subviews] method to make this identical on both platforms and used
        a modern for loop.
        (-[NSMutableDictionary _web_setObjectIfNotNil:forKey:]): Deleted.
        (-[WebHTMLView acceptsFirstResponder]): Reduced amount of platform-specific code by
        defining WebEventMouseDown as a synonym for NSEventTypeLeftMouseDown on Mac.
        (-[WebHTMLView addWindowObservers]): Removed code dealing with empty
        methods windowWillOrderOnScreen: and windowWillOrderOffScreen:.
        (-[WebHTMLView willRemoveSubview:]): Removed the enumeratingSubviews check.
        (-[WebHTMLView drawSingleRect:]): Rearranged this method to make it clearer that most
        of it is Mac-only.
        (-[WebHTMLView windowWillOrderOnScreen:]): Deleted. All the current version of this
        method did was call itself on the main thread, and do nothing if called on main thread.
        (-[WebHTMLView windowWillOrderOffScreen:]): Deleted. Ditto.
        (-[WebHTMLView _isSelectionEvent:]): Merged macOS and iOS versions.
        (-[WebHTMLView resignFirstResponder]): Removed iOS-specific code in the macOS-specific
        half of this method.
        (-[WebHTMLView setDataSource:]): Simplified using RetainPtr.
        (-[WebHTMLView _setPrinting:minimumPageLogicalWidth:logicalHeight:originalPageWidth:originalPageHeight:maximumShrinkRatio:adjustViewSize:paginateScreenContent:]):
        Simplified using a modern for loop and RetainPtr.
        (-[WebHTMLView knowsPageRange:]): Simplified using RetainPtr.
        (-[WebHTMLView keyDown:]): Ditto.
        (-[WebHTMLView _selectionStartFontAttributesAsRTF]): Ditto.
        (-[WebHTMLView performKeyEquivalent:]): Ditto.
        (-[WebHTMLView _styleForAttributeChange:]): Ditto.
        (-[WebHTMLView complete:]): Ditto.
        (-[WebHTMLView _windowChangedKeyState]): Removed iOS-specific code since this method is
        now macOS-only.
        (-[WebHTMLView _selectionChanged]): Removed call to _updateSelectionForInputManager on
        iOS since that is now macOS-only.
        (-[WebHTMLView promisedDragTIFFDataSource]): Deleted.
        (-[WebHTMLView _startAutoscrollTimer:]): Moved this into an internal category instead of
        a private one because it is not used or needed outside WebKit. Also made it macOS-only
        and reorganized to use early return.
        (-[WebHTMLView _stopAutoscrollTimer]): Moved into internal category. It remains a no-op
        on iOS, but kept there so we don't have to do #if at every call site.
        (-[WebHTMLView _pluginController]): Moved into internal category.
        (-[WebHTMLView validAttributesForMarkedText]): Simplified by removing CFRetain that was
        there only for GC, using C++ initialization, removing obsolete comment.
        (-[WebHTMLView _updateSelectionForInputManager]): Made this macOS-only and removed
        peculiar iOS-only comment.
        (+[NSURL _web_uniqueWebDataURL]): Simplified using [NSUUID UUID].

        * WebView/WebHTMLViewInternal.h: Removed unused promisedDragTIFFDataSource method.
        Made attachRootLayer:, detachRootLayer, _web_isDrawingIntoLayer,
        _web_isDrawingIntoAcceleratedLayer all macOS-only. Moved _startAutoscrollTimer:,
        _stopAutoscrollTimer, and _pluginController here from SPI header since they aren't
        needed or used as SPI. And made _startAutoscrollTimer macOS-only.

        * WebView/WebHTMLViewPrivate.h: Removed unneeded and unused SPI: _insideAnotherHTMLView,
        _clearLastHitViewIfSelf, _pluginController, _startAutoscrollTimer:, and _stopAutoscrollTimer.
        Made _transparentBackground and _setTransparentBackground: macOS-only. These probably
        are not needed on macOS either, but I wasn't able to make absolutely sure I could remove
        them at this time.

2017-09-03  Sam Weinig  <sam@webkit.org>

        Remove CanvasProxy
        https://bugs.webkit.org/show_bug.cgi?id=176288

        Reviewed by Yusuke Suzuki.

        CanvasProxy does not appear to be in any current HTML spec
        and was disabled and unimplemented in our tree. Time to 
        get rid of it.

        * Configurations/FeatureDefines.xcconfig:

2017-09-02  Andy Estes  <aestes@apple.com>

        [CA] Upstream QuartzCore-related WebKitSystemInterface functions
        https://bugs.webkit.org/show_bug.cgi?id=176270

        Reviewed by Tim Horton.

        * Plugins/Hosted/NetscapePluginHostManager.mm:
        (WebKit::NetscapePluginHostManager::spawnPluginHost):
        * Plugins/Hosted/WebHostedNetscapePluginView.h:
        * Plugins/Hosted/WebHostedNetscapePluginView.mm:
        (WebKit::SoftwareCARenderer::SoftwareCARenderer):
        (WebKit::SoftwareCARenderer::~SoftwareCARenderer):
        (WebKit::SoftwareCARenderer::context const):
        (WebKit::SoftwareCARenderer::renderContext const):
        (WebKit::SoftwareCARenderer::render):
        (-[WebHostedNetscapePluginView createPlugin]):
        (-[WebHostedNetscapePluginView createPluginLayer]):
        (-[WebHostedNetscapePluginView destroyPlugin]):
        (-[WebHostedNetscapePluginView drawRect:]):
        * WebCoreSupport/WebSystemInterface.mm:
        (InitWebCoreSystemInterface):

2017-09-01  Andy Estes  <aestes@apple.com>

        [CG] Upstream CoreGraphics-related WebKitSystemInterface functions
        https://bugs.webkit.org/show_bug.cgi?id=176200

        Reviewed by Tim Horton.

        * Carbon/HIWebView.mm:
        (-[NSWindowGraphicsContext _web_setGraphicsPort:]):
        (overrideCGContext):
        (restoreCGContext):
        (Draw):
        * Plugins/Hosted/WebHostedNetscapePluginView.mm:
        (+[WebHostedNetscapePluginView initialize]):
        * Plugins/WebBaseNetscapePluginView.h:
        * Plugins/WebBaseNetscapePluginView.mm:
        (WebKit::sendUserChangeNotifications):
        * Plugins/WebNetscapePluginView.mm:
        (+[WebNetscapePluginView initialize]):
        (-[WebNetscapePluginView saveAndSetNewPortStateForUpdate:]):
        * WebCoreSupport/WebSystemInterface.mm:
        (InitWebCoreSystemInterface):
        * WebView/WebFrame.mm:
        (-[WebFrame _paintBehaviorForDestinationContext:]):
        * WebView/WebFullScreenController.mm:
        (setClipRectForWindow):
        (-[WebFullScreenController finishedEnterFullScreenAnimation:]):
        (-[WebFullScreenController finishedExitFullScreenAnimation:]):
        (-[WebFullScreenController _startEnterFullScreenAnimationWithDuration:]):
        (-[WebFullScreenController _startExitFullScreenAnimationWithDuration:]):

2017-08-31  Andy Estes  <aestes@apple.com>

        [Mac] Upstream AppKit-related WebKitSystemInterface functions
        https://bugs.webkit.org/show_bug.cgi?id=176175

        Reviewed by Brady Eidson.

        * Plugins/Hosted/NetscapePluginInstanceProxy.mm:
        (WebKit::NetscapePluginInstanceProxy::keyEvent):
        * Plugins/Hosted/WebTextInputWindowController.m:
        (-[WebTextInputPanel init]):
        * WebCoreSupport/WebSystemInterface.mm:
        (InitWebCoreSystemInterface):
        * WebView/WebDynamicScrollBarsView.mm:
        (-[WebDynamicScrollBarsView scrollWheel:]):
        * WebView/WebHTMLView.mm:
        (-[WebHTMLView _removeWindowObservers]):
        (-[WebHTMLView addWindowObservers]):
        * WebView/WebView.mm:
        (-[WebView addWindowObserversForWindow:]):
        (-[WebView removeWindowObservers]):
        (-[WebView viewWillMoveToWindow:]):

2017-08-31  Alex Christensen  <achristensen@webkit.org>

        Add ObjC SPI corresponding to WKPageLoaderClient's webGLLoadPolicy and resolveWebGLLoadPolicy
        https://bugs.webkit.org/show_bug.cgi?id=175779
        <rdar://problem/22367975>

        Reviewed by Tim Horton.

        * WebCoreSupport/WebFrameLoaderClient.h:
        * WebCoreSupport/WebFrameLoaderClient.mm:
        (WebFrameLoaderClient::webGLPolicyForURL const):
        (WebFrameLoaderClient::resolveWebGLPolicyForURL const):

2017-08-30  Andy Estes  <aestes@apple.com>

        [Mac] Upstream Accessibility-related WebKitSystemInterface functions
        https://bugs.webkit.org/show_bug.cgi?id=176093

        Reviewed by Eric Carlson.

        * WebCoreSupport/WebSystemInterface.mm:
        (InitWebCoreSystemInterface):

2017-08-30  Andy Estes  <aestes@apple.com>

        [Mac] Upstream Carbon-related WebKitSystemInterface functions
        https://bugs.webkit.org/show_bug.cgi?id=176087

        Reviewed by Alex Christensen.

        * Carbon/CarbonUtils.m:
        (getNSAutoreleasePoolCount):
        (WebInitForCarbon):
        (PoolCleaner):
        * Carbon/CarbonWindowAdapter.mm:
        (+[CarbonWindowAdapter frameViewClassForStyleMask:]):
        (-[CarbonWindowAdapter initWithCarbonWindowRef:takingOwnership:disableOrdering:carbon:]):
        (-[CarbonWindowAdapter _oldPlaceWindow:]):
        (-[CarbonWindowAdapter _windowMovedToRect:]):
        * Carbon/HIViewAdapter.m:
        * Carbon/HIWebView.mm:
        (Draw):
        (CreateNSEventAdoptingCGEvent):
        (CopyEventCGEvent):
        (CreateNSEventWithCarbonClickEvent):
        (Click):
        (CreateNSEventWithCarbonEvent):
        (MouseUp):
        (CreateNSEventWithCarbonMouseMoveEvent):
        (MouseMoved):
        (MouseDragged):
        (MouseWheelMoved):
        (WindowHandler):
        (HIWebViewEventHandler):
        * Misc/QuickDrawCompatibility.h: Removed.
        * Plugins/WebNetscapePluginEventHandlerCarbon.mm:
        (getCarbonEvent):
        (WebNetscapePluginEventHandlerCarbon::keyDown):
        (WebNetscapePluginEventHandlerCarbon::keyUp):
        * Plugins/WebNetscapePluginEventHandlerCocoa.mm:
        (WebNetscapePluginEventHandlerCocoa::keyDown):
        * Plugins/WebNetscapePluginView.mm:
        (-[WebNetscapePluginView tellQuickTimeToChill]):

2017-08-29  Andy Estes  <aestes@apple.com>

        [Mac] Upstream WKSetMetadataURL() from WebKitSystemInterface
        https://bugs.webkit.org/show_bug.cgi?id=176046

        Reviewed by Alex Christensen.

        Removed the pthread logic from -_webkit_setMetadataURL:referrer:atPath: and replaced with
        WebCore::setMetadataURL(), which uses dispatch_async() for the same purpose as the pthread.

        * Misc/WebNSFileManagerExtras.mm:
        (-[NSFileManager _webkit_setMetadataURL:referrer:atPath:]):
        (setMetaData): Deleted.
        * WebCoreSupport/WebSystemInterface.mm:
        (InitWebCoreSystemInterface):

2017-08-28  Andy Estes  <aestes@apple.com>

        [Cocoa] Upstream WKGetWebDefaultCFStringEncoding()
        https://bugs.webkit.org/show_bug.cgi?id=176039

        Reviewed by Alex Christensen.

        * WebCoreSupport/WebSystemInterface.mm:
        (InitWebCoreSystemInterface):
        * WebView/WebPreferences.mm:
        (+[WebPreferences _systemCFStringEncoding]):

2017-08-28  Andy Estes  <aestes@apple.com>

        [Cocoa] Upstream CFNetwork-related WebKitSystemInterface functions
        https://bugs.webkit.org/show_bug.cgi?id=176032

        Reviewed by Alex Christensen.

        * WebCoreSupport/WebSystemInterface.mm:
        (InitWebCoreSystemInterface):
        * WebView/WebView.mm:
        (-[WebView _cachedResponseForURL:]):

2017-08-28  Brent Fulgham  <bfulgham@apple.com>

        Disable access to secure cookies if an HTTPS site loads mixed content (Part 2: Header Requests)
        https://bugs.webkit.org/show_bug.cgi?id=175992
        <rdar://problem/34086613>

        Reviewed by Daniel Bates.

        * WebCoreSupport/WebPlatformStrategies.h:
        * WebCoreSupport/WebPlatformStrategies.mm:
        (WebPlatformStrategies::cookieRequestHeaderFieldValue): Modify to accept a flag indicating if secure
        cookies should be included, and return a pair containing the resulting cookie string and a boolean
        indicating if secure cookies were accessed.

2017-08-27  Wenson Hsieh  <wenson_hsieh@apple.com>

        Picking an emoji via the emoji dialog (Ctrl+Cmd+Space) fires inconsistent beforeinput events.
        https://bugs.webkit.org/show_bug.cgi?id=170955
        <rdar://problem/31697653>

        Reviewed by Ryosuke Niwa.

        Tweak -insertText: to pass TextEventInputAutocompletion to Editor::insertText when inserting text, if existing
        text is being replaced.

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

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

        [Directory Upload] Add basic support for input.webkitdirectory
        https://bugs.webkit.org/show_bug.cgi?id=175950
        <rdar://problem/33951915>

        Reviewed by Geoffrey Garen.

        Add private API to toggle Directory Upload support on Mac WebKit1.

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

2017-08-22  Wenson Hsieh  <wenson_hsieh@apple.com>

        [WK2] EditorState updates should be rolled into the layer update lifecycle when possible
        https://bugs.webkit.org/show_bug.cgi?id=175370
        <rdar://problem/33799806>

        Reviewed by Ryosuke Niwa.

        Adjust WebEditorClient for interface changes.

        * WebCoreSupport/WebEditorClient.h:

2017-08-22  Alex Christensen  <achristensen@webkit.org>

        Remove ChromeClient::scrollbarsModeDidChange
        https://bugs.webkit.org/show_bug.cgi?id=175805

        Reviewed by Daniel Bates.

        * WebCoreSupport/WebChromeClient.h:

2017-08-22  Alex Christensen  <achristensen@webkit.org>

        Remove ChromeClient::hasOpenedPopup
        https://bugs.webkit.org/show_bug.cgi?id=175804

        Reviewed by Sam Weinig.

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

2017-08-22  Brent Fulgham  <bfulgham@apple.com> and Pranjal Jumde  <pjumde@apple.com>

        Disable access to secure cookies if an HTTPS site loads mixed content
        https://bugs.webkit.org/show_bug.cgi?id=157053
        <rdar://problem/11290808>

        Reviewed by Dan Bates.

        * WebCoreSupport/WebPlatformStrategies.h:
        * WebCoreSupport/WebPlatformStrategies.mm:
        (WebPlatformStrategies::cookiesForDOM): Check and return whether secure cookies were accessed. Accept a new argument
        indicating whether secure cookies should be included in the response.

2017-08-21  Yoshiaki Jitsukawa  <Yoshiaki.Jitsukawa@sony.com>

        [PAL] Move spi/mac directory into PAL
        https://bugs.webkit.org/show_bug.cgi?id=175649

        Reviewed by Myles C. Maxfield.

        * Misc/WebSharingServicePickerController.h:
        * WebCoreSupport/WebContextMenuClient.mm:
        * WebCoreSupport/WebEditorClient.mm:
        * WebCoreSupport/WebSelectionServiceController.mm:
        * WebView/WebHTMLView.mm:
        * WebView/WebImmediateActionController.h:
        * WebView/WebImmediateActionController.mm:
        * WebView/WebView.mm:

2017-08-17  Don Olmstead  <don.olmstead@sony.com>

        [PAL] Relocate SessionID to root
        https://bugs.webkit.org/show_bug.cgi?id=175684

        Reviewed by Alex Christensen.

        * WebCoreSupport/WebFrameNetworkingContext.mm:

2017-08-17  Andreas Kling  <akling@apple.com>

        Disable CSS regions at compile time
        https://bugs.webkit.org/show_bug.cgi?id=175630

        Reviewed by Antti Koivisto.

        * Configurations/FeatureDefines.xcconfig:

2017-08-17  Don Olmstead  <don.olmstead@sony.com>

        [PAL] Move SessionID into PAL
        https://bugs.webkit.org/show_bug.cgi?id=174192

        Reviewed by Antti Koivisto.

        * Misc/WebCache.mm:
        (+[WebCache imageForURL:]):
        * WebCoreSupport/WebFrameLoaderClient.h:
        * WebCoreSupport/WebFrameLoaderClient.mm:
        (WebFrameLoaderClient::convertMainResourceLoadToDownload):
        * WebCoreSupport/WebFrameNetworkingContext.mm:
        (WebFrameNetworkingContext::ensurePrivateBrowsingSession):
        (WebFrameNetworkingContext::destroyPrivateBrowsingSession):
        (WebFrameNetworkingContext::storageSession const):
        * WebCoreSupport/WebPlatformStrategies.h:
        * WebCoreSupport/WebPlatformStrategies.mm:
        (WebPlatformStrategies::cookieRequestHeaderFieldValue):
        * WebKitPrefix.h:

2017-08-16  Andy Estes  <aestes@apple.com>

        [Apple Pay] Rename PaymentRequest to ApplePaySessionPaymentRequest
        https://bugs.webkit.org/show_bug.cgi?id=175648

        Reviewed by Tim Horton.

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

2017-08-16  Yoshiaki Jitsukawa  <Yoshiaki.Jitsukawa@sony.com>

        [PAL] Move spi/ios and spi/win directories into PAL
        https://bugs.webkit.org/show_bug.cgi?id=175171

        Reviewed by Antti Koivisto.

        * WebCoreSupport/WebFrameLoaderClient.mm:
        * WebView/WebView.mm:

2017-08-16  Andy Estes  <aestes@apple.com>

        [Payment Request] Add an ENABLE flag and an experimental feature preference
        https://bugs.webkit.org/show_bug.cgi?id=175622

        Reviewed by Tim Horton.

        * Configurations/FeatureDefines.xcconfig:

2017-08-15  Don Olmstead  <don.olmstead@sony.com>

        [PAL] Move Sleep classes into PAL
        https://bugs.webkit.org/show_bug.cgi?id=175456

        Reviewed by Ryosuke Niwa.

        * WebView/WebFullScreenController.h:

2017-08-15  Youenn Fablet  <youenn@apple.com>

        [Cache API] Adding generic support for CacheStorage and Cache methods
        https://bugs.webkit.org/show_bug.cgi?id=175455

        Reviewed by Chris Dumez.

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

2017-08-14  Simon Fraser  <simon.fraser@apple.com>

        Remove Proximity Events and related code
        https://bugs.webkit.org/show_bug.cgi?id=175545

        Reviewed by Daniel Bates.

        No platform enables Proximity Events, so remove code inside ENABLE(PROXIMITY_EVENTS)
        and other related code.

        * Configurations/FeatureDefines.xcconfig:

2017-08-14  Simon Fraser  <simon.fraser@apple.com>

        Remove ENABLE(REQUEST_AUTOCOMPLETE) code, which was disabled everywhere
        https://bugs.webkit.org/show_bug.cgi?id=175504

        Reviewed by Sam Weinig.

        * Configurations/FeatureDefines.xcconfig:
        * DOM/DOMHTMLFormElement.mm:
        (-[DOMHTMLFormElement requestAutocomplete]): Deleted.
        * WebCoreSupport/WebFrameLoaderClient.h:

2017-08-14  Simon Fraser  <simon.fraser@apple.com>

        Remove ENABLE_VIEW_MODE_CSS_MEDIA and related code
        https://bugs.webkit.org/show_bug.cgi?id=175557

        Reviewed by Jon Lee.

        No port cares about the ENABLE(VIEW_MODE_CSS_MEDIA) feature, so remove it.

        * Configurations/FeatureDefines.xcconfig:

2017-08-13  Manuel Rego Casasnovas  <rego@igalia.com>

        Composition underline color is always black
        https://bugs.webkit.org/show_bug.cgi?id=174675

        Reviewed by Ryosuke Niwa.

        * WebView/WebHTMLView.mm:
        (extractUnderlines): If NSUnderlineColorAttributeName
        is not present use text color for composition underline.
        (-[WebHTMLView setMarkedText:selectedRange:]): Use text color
        for composition underline in the plain text case.

2017-08-11  Ryosuke Niwa  <rniwa@webkit.org>

        Replace DATA_TRANSFER_ITEMS by a runtime flag and add a stub implementation
        https://bugs.webkit.org/show_bug.cgi?id=175474
        <rdar://problem/33844628>

        Reviewed by Wenson Hsieh.

        Replaced the build flag by a runtime flag and disabled the feature by default.

        * Configurations/FeatureDefines.xcconfig:
        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]): Disables dataTransfer.items by default.
        (-[WebPreferences dataTransferItemsEnabled]): Added.
        (-[WebPreferences setDataTransferItemsEnabled:]): Added.
        * WebView/WebPreferencesPrivate.h:
        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]):

2017-08-10  Michael Catanzaro  <mcatanzaro@igalia.com>

        Remove ENABLE_GAMEPAD_DEPRECATED
        https://bugs.webkit.org/show_bug.cgi?id=175361

        Reviewed by Carlos Garcia Campos.

        * Configurations/FeatureDefines.xcconfig:

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

        Disable Beacon API on WK1 DRT and WK2 when not using NETWORK_SESSION
        https://bugs.webkit.org/show_bug.cgi?id=175401

        Reviewed by Brady Eidson.

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

2017-08-09  Yoshiaki Jitsukawa  <Yoshiaki.Jitsukawa@sony.com>

        [PAL] Move spi/cocoa and spi/cg directories into PAL
        https://bugs.webkit.org/show_bug.cgi?id=175175

        Reviewed by Myles C. Maxfield.

        * History/WebHistory.mm:
        * Misc/WebDownload.mm:
        * Misc/WebKitNSStringExtras.mm:
        * Plugins/Hosted/NetscapePluginHostManager.mm:
        * Plugins/WebPluginDatabase.mm:
        * WebCoreSupport/WebFrameLoaderClient.mm:
        * WebInspector/WebNodeHighlight.mm:
        * WebView/WebHTMLView.mm:
        * WebView/WebIndicateLayer.mm:
        * WebView/WebView.mm:
        * WebView/WebViewData.h:

2017-08-09  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS DnD] ENABLE_DRAG_SUPPORT should be turned off for iOS 10 and enabled by default
        https://bugs.webkit.org/show_bug.cgi?id=175392
        <rdar://problem/33783207>

        Reviewed by Tim Horton and Megan Gardner.

        Tweak FeatureDefines to enable drag and drop by default, and disable only on unsupported platforms (i.e. iOS 10).

        * Configurations/FeatureDefines.xcconfig:

2017-08-09  Daniel Bates  <dabates@apple.com>

        REGRESSION (r219013): OAuth flows are broken when redirecting back to application after authentication
        https://bugs.webkit.org/show_bug.cgi?id=175247
        <rdar://problem/33679804>

        Reviewed by Brady Eidson.

        Plumb knowledge of whether a navigation was in response to receiving a redirect response.
        We do not actually make use of this knowledge in WebKitLegacy because we do not know of any
        clients that need to make use of this information at this time. If such a needs comes up
        then we can expose API/SPI similar to what we do for WebKit.

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

2017-08-08  Brady Eidson  <beidson@apple.com>

        Don't enable default icon loading in WK1 for apps linked against old SDKs.
        <rdar://problem/33724060> and https://bugs.webkit.org/show_bug.cgi?id=175342

        Reviewed by Andy Estes.

        * Misc/WebKitVersionChecks.h:
        * WebCoreSupport/WebFrameLoaderClient.mm:
        (WebFrameLoaderClient::getLoadDecisionForIcons): Don't do any icon loading unless
          the app is linked against new WebKit with the new behavior.

2017-08-07  Devin Rousso  <drousso@apple.com>

        Web Inspector: Preview Canvas path when viewing a recording
        https://bugs.webkit.org/show_bug.cgi?id=174967

        Reviewed by Brian Burg.

        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):
        (-[WebPreferences inspectorAdditionsEnabled]):
        (-[WebPreferences setInspectorAdditionsEnabled:]):
        * WebView/WebPreferencesPrivate.h:
        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]):
        Add plumbing for new InspectorAdditions runtime flag.

2017-08-07  Brian Burg  <bburg@apple.com>

        Remove CANVAS_PATH compilation guard
        https://bugs.webkit.org/show_bug.cgi?id=175207

        Reviewed by Sam Weinig.

        * Configurations/FeatureDefines.xcconfig:

2017-08-04  Youenn Fablet  <youenn@apple.com>

        [Cache API] Add Cache and CacheStorage IDL definitions
        https://bugs.webkit.org/show_bug.cgi?id=175201

        Reviewed by Brady Eidson.

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

2017-08-04  Matt Lewis  <jlewis3@apple.com>

        Unreviewed, rolling out r220271.

        Rolling out due to Layout Test failing on iOS Simulator.

        Reverted changeset:

        "Remove STREAMS_API compilation guard"
        https://bugs.webkit.org/show_bug.cgi?id=175165
        http://trac.webkit.org/changeset/220271

2017-08-04  Youenn Fablet  <youenn@apple.com>

        Remove STREAMS_API compilation guard
        https://bugs.webkit.org/show_bug.cgi?id=175165

        Reviewed by Darin Adler.

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

2017-08-03  Brian Burg  <bburg@apple.com>

        Remove ENABLE(WEB_SOCKET) guards
        https://bugs.webkit.org/show_bug.cgi?id=167044

        Reviewed by Joseph Pecoraro.

        * Configurations/FeatureDefines.xcconfig:
        * WebView/WebPreferencesPrivate.h:

2017-08-03  Yoshiaki Jitsukawa  <jitsu@rd.scei.sony.co.jp>

        [PAL] Move spi/cf directory into PAL
        https://bugs.webkit.org/show_bug.cgi?id=175057

        Reviewed by Antti Koivisto.

        * Plugins/Hosted/HostedNetscapePluginStream.mm:
        * Plugins/WebNetscapePluginStream.mm:
        * WebCoreSupport/WebFrameNetworkingContext.mm:
        * WebView/WebPreferences.mm:
        * WebView/WebView.mm:

2017-08-03  Youenn Fablet  <youenn@apple.com>

        Remove FETCH_API compilation guard
        https://bugs.webkit.org/show_bug.cgi?id=175154

        Reviewed by Chris Dumez.

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

2017-08-03  Brady Eidson  <beidson@apple.com>

        Add SW IDLs and stub out basic functionality.
        https://bugs.webkit.org/show_bug.cgi?id=175115

        Reviewed by Chris Dumez.

        * Configurations/FeatureDefines.xcconfig:

2017-08-02  Sam Weinig  <sam@webkit.org>

        [WebIDL] Convert MutationCallback to be a normal generated callback
        https://bugs.webkit.org/show_bug.cgi?id=174140

        Reviewed by Darin Adler.

        * DOM/DOMDocument.mm:
        (-[DOMDocument createNodeIterator:whatToShow:filter:expandEntityReferences:]):
        (-[DOMDocument createTreeWalker:whatToShow:filter:expandEntityReferences:]):
        Pass, now necessary, Document to NativeNodeFilter constructor.

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

        Add initial support for navigator.sendBeacon
        https://bugs.webkit.org/show_bug.cgi?id=175007
        <rdar://problem/33547728>

        Reviewed by Sam Weinig.

        Add setting to toggle support for the Beacon API (it is disabled by default).

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

2017-07-28  Jeremy Jones  <jeremyj@apple.com>

        Remove Web prefix from WebVideoFullscreen and WebPlaybackSession classes.
        https://bugs.webkit.org/show_bug.cgi?id=174437

        Reviewed by Darin Adler.

        Remove redundant Web- prefix from classes in WebKit namespace.

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

2017-07-26  Brian Burg  <bburg@apple.com>

        Remove WEB_TIMING feature flag
        https://bugs.webkit.org/show_bug.cgi?id=174795

        Reviewed by Alex Christensen.

        * Configurations/FeatureDefines.xcconfig:

2017-07-25  Said Abou-Hallawa  <sabouhallawa@apple.com>

        Async image decoding for large images should be disabled after the first time a tile is painted
        https://bugs.webkit.org/show_bug.cgi?id=174451
        <rdar://problem/31246421>

        Reviewed by Simon Fraser.

        * WebView/WebFrame.mm:
        (-[WebFrame _paintBehaviorForDestinationContext:]):
        (-[WebFrame _drawRect:contentsOnly:]):
        * WebView/WebHTMLView.mm:
        (imageFromRect):

2017-07-23  Darin Adler  <darin@apple.com>

        More NeverDestroyed and related cleanup
        https://bugs.webkit.org/show_bug.cgi?id=174745

        Reviewed by Alex Christensen.

        * DOM/DOMUIKitExtensions.mm: Removed a lot of unneeded "using"
        for names that aren't even used in this file.
        (-[DOMNode boundingBoxes]): Use @[] syntax instead of
        -[NSArray arrayWithObject:].
        (-[DOMNode absoluteQuads]): Ditto.
        (-[DOMNode findExplodedTextNodeAtPoint:]): Use auto* instead
        of writing out various types.
        (-[DOMHTMLAreaElement boundingBoxesWithOwner:]): Use @[]
        syntax instea of -[NSArray arrayWithObject:].
        (-[DOMHTMLAreaElement absoluteQuadsWithOwner:]): Ditto.
        (-[DOMHTMLImageElement dataRepresentation:]): Use auto* instead
        of writing out various types.
        (-[DOMHTMLImageElement mimeType]): Ditto.

2017-07-24  Chris Dumez  <cdumez@apple.com>

        ExceptionCode enumeration should use modern exception names
        https://bugs.webkit.org/show_bug.cgi?id=174794

        Reviewed by Geoffrey Garen.

        * DOM/ExceptionHandlers.mm:
        (raiseNotSupportedErrorException):

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

        Drop ExceptionCodeDescription class
        https://bugs.webkit.org/show_bug.cgi?id=174757

        Reviewed by Darin Adler.

        Stop using ExceptionCodeDescription.

        * DOM/ExceptionHandlers.mm:
        (raiseDOMErrorException):

2017-07-21  Andreas Kling  <akling@apple.com>

        Use more references in event dispatch code
        https://bugs.webkit.org/show_bug.cgi?id=174681

        Reviewed by Geoffrey Garen.

        * DOM/ObjCEventListener.h:
        * DOM/ObjCEventListener.mm:
        (WebCore::ObjCEventListener::handleEvent):
        * WebCoreSupport/WebFrameLoaderClient.mm:
        (NetscapePluginWidget::handleEvent):

2017-07-21  Brady Eidson  <beidson@apple.com>

        Get rid of WebCore IconDatabase code.
        https://bugs.webkit.org/show_bug.cgi?id=174700

        Reviewed by Tim Horton.

        * Misc/WebCoreStatistics.mm:
        (+[WebCoreStatistics iconPageURLMappingCount]):
        (+[WebCoreStatistics iconRetainedPageURLCount]):
        (+[WebCoreStatistics iconRecordCount]):
        (+[WebCoreStatistics iconsWithDataCount]):
        * WebCoreSupport/WebFrameLoaderClient.h:
        * WebCoreSupport/WebFrameLoaderClient.mm:
        * WebCoreSupport/WebIconDatabaseClient.h: Removed.
        * WebCoreSupport/WebIconDatabaseClient.mm: Removed.
        * WebView/WebView.mm:
        (-[WebView mainFrameIconURL]):

2017-07-20  Chris Dumez  <cdumez@apple.com>

        Drop legacy XPathException type
        https://bugs.webkit.org/show_bug.cgi?id=174679

        Reviewed by Sam Weinig.

        Drop legacy XPathException type and use DOMException instead. Both Firefox and Chrome
        no longer expose XPathException.

        * DOM/ExceptionHandlers.mm:
        (raiseDOMErrorException):

2017-07-20  Chris Dumez  <cdumez@apple.com>

        Unreviewed, rolling out r219706.

        Broke iOS build

        Reverted changeset:

        "Drop legacy XPathException type"
        https://bugs.webkit.org/show_bug.cgi?id=174679
        http://trac.webkit.org/changeset/219706

2017-07-20  Chris Dumez  <cdumez@apple.com>

        Drop legacy XPathException type
        https://bugs.webkit.org/show_bug.cgi?id=174679

        Reviewed by Sam Weinig.

        Drop legacy XPathException type and use DOMException instead. Both Firefox and Chrome
        no longer expose XPathException.

        * DOM/ExceptionHandlers.mm:
        (raiseDOMErrorException):
        * WebKit.exp:

2017-07-20  Chris Dumez  <cdumez@apple.com>

        Replace calls to Vector::resize() with calls to more efficient shrink() / grow() when applicable
        https://bugs.webkit.org/show_bug.cgi?id=174660

        Reviewed by Geoffrey Garen.

        Replace calls to Vector::resize() with calls to more efficient shrink() / grow() when applicable.
        This essentially replaces a branch to figure out if the new size is less or greater than the
        current size by an assertion.

        * Plugins/WebNetscapePluginView.mm:
        (-[WebNetscapePluginView saveAndSetNewPortStateForUpdate:]):

2017-07-20  Brady Eidson  <beidson@apple.com>

        Deprecate WebIconDatabase in WebKitLegacy/mac.
        https://bugs.webkit.org/show_bug.cgi?id=174607

        Reviewed by Alex Christensen.

        This patch:
        1 - Formally deprecates WebIconDatabase (which was never API anyways)
        2 - Guts the class to where it can only return the default icon at the small size
        3 - Reworks other parts of WebKitLegacy that used it for anything to either
            use something else or to not do anything.
        
        This patch *could* go much farther. A future patch is what will remove WebCore/IconDatabase
        and that patch will remove all of the last remnants of WebIconDatabase.
        
        * History/WebHistoryItem.mm:
        (-[WebHistoryItem icon]):

        * Misc/WebIconDatabase.h:
        * Misc/WebIconDatabase.mm:
        (-[WebIconDatabase init]):
        (-[WebIconDatabase iconForURL:withSize:cache:]):
        (-[WebIconDatabase iconForURL:withSize:]):
        (-[WebIconDatabase defaultIconWithSize:]):
        (-[WebIconDatabase defaultIconForURL:withSize:]):
        (-[WebIconDatabase iconURLForURL:]):
        (-[WebIconDatabase retainIconForURL:]):
        (-[WebIconDatabase releaseIconForURL:]):
        (+[WebIconDatabase delayDatabaseCleanup]):
        (+[WebIconDatabase allowDatabaseCleanup]):
        (-[WebIconDatabase setDelegate:]):
        (-[WebIconDatabase delegate]):
        (+[WebIconDatabase initialize]): Deleted.
        (-[WebIconDatabase isEnabled]): Deleted.
        (-[WebIconDatabase setEnabled:]): Deleted.
        (-[WebIconDatabase removeAllIcons]): Deleted.
        (+[WebIconDatabase _checkIntegrityBeforeOpening]): Deleted.
        (-[WebIconDatabase _sendNotificationForURL:]): Deleted.
        (-[WebIconDatabase _sendDidRemoveAllIconsNotification]): Deleted.
        (-[WebIconDatabase _startUpIconDatabase]): Deleted.
        (-[WebIconDatabase _shutDownIconDatabase]): Deleted.
        (-[WebIconDatabase _applicationWillTerminate:]): Deleted.
        (-[WebIconDatabase _iconForFileURL:withSize:]): Deleted.
        (-[WebIconDatabase _resetCachedWebPreferences:]): Deleted.
        (-[WebIconDatabase _largestIconFromDictionary:]): Deleted.
        (-[WebIconDatabase _iconsBySplittingRepresentationsOfIcon:]): Deleted.
        (-[WebIconDatabase _iconFromDictionary:forSize:cache:]): Deleted.
        (-[WebIconDatabase _scaleIcon:toSize:]): Deleted.
        (-[WebIconDatabase _databaseDirectory]): Deleted.
        (webGetNSImage): Deleted.

        * Misc/WebIconDatabaseDelegate.h: Removed.
        * Misc/WebIconDatabaseInternal.h: Removed.
        * Misc/WebIconDatabasePrivate.h: Removed.

        * WebCoreSupport/WebFrameLoaderClient.mm:
        (webGetNSImage):

        * WebCoreSupport/WebIconDatabaseClient.mm:
        (WebIconDatabaseClient::didRemoveAllIcons):
        (WebIconDatabaseClient::didImportIconURLForPageURL):

        * WebView/WebView.mm:
        (-[WebView setFrameLoadDelegate:]):
        (-[WebView mainFrameIcon]):

2017-07-18  Andy Estes  <aestes@apple.com>

        [Xcode] Enable CLANG_WARN_RANGE_LOOP_ANALYSIS
        https://bugs.webkit.org/show_bug.cgi?id=174631

        Reviewed by Tim Horton.

        * Configurations/Base.xcconfig:

2017-07-18  Andy Estes  <aestes@apple.com>

        [Xcode] Enable CLANG_WARN_OBJC_LITERAL_CONVERSION
        https://bugs.webkit.org/show_bug.cgi?id=174631

        Reviewed by Sam Weinig.

        * Configurations/Base.xcconfig:

2017-07-18  Andy Estes  <aestes@apple.com>

        [Xcode] Enable CLANG_WARN_NON_LITERAL_NULL_CONVERSION
        https://bugs.webkit.org/show_bug.cgi?id=174631

        Reviewed by Dan Bernstein.

        * Configurations/Base.xcconfig:

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

        [iOS DnD] [WK1] Add missing calls to WebThreadLock() in some WebView drag-and-drop SPIs
        https://bugs.webkit.org/show_bug.cgi?id=174640
        <rdar://problem/33297400>

        Reviewed by Tim Horton.

        Adds a missing call to WebThreadLock() in -_requestStartDataInteraction:globalPosition:. Previously, this was
        invoked at the call site in UIKit, but was removed after some refactoring in UIKit. Instead, we should lock the
        web thread here, to match the other WebView drag and drop SPI methods.

        This patch also adds a WebThreadLock() call in -_dataInteractionCaretRect. While this is fine today, since all
        existing callers of _dataInteractionCaretRect already invoke other methods that WebThreadLock() beforehand, we
        should make this robust against future UIKit changes that could make this no longer the case.

        * WebView/WebView.mm:
        (-[WebView _requestStartDataInteraction:globalPosition:]):
        (-[WebView _dataInteractionCaretRect]):

2017-07-18  Andy Estes  <aestes@apple.com>

        [Xcode] Enable CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING
        https://bugs.webkit.org/show_bug.cgi?id=174631

        Reviewed by Darin Adler.

        * Configurations/Base.xcconfig:

2017-07-17  Sam Weinig  <sam@webkit.org>

        [WebIDL] Remove custom bindings that require non-caching JS strings
        https://bugs.webkit.org/show_bug.cgi?id=174552

        Reviewed by Darin Adler.

        * DOM/DOMHTMLCanvasElement.mm:
        (-[DOMHTMLCanvasElement toDataURL:]):
        Update to account for implementation now returning an UncachedString.

2017-07-17  Darin Adler  <darin@apple.com>

        Improve use of NeverDestroyed
        https://bugs.webkit.org/show_bug.cgi?id=174348

        Reviewed by Sam Weinig.

        * Misc/WebStringTruncator.mm:
        (+[WebStringTruncator centerTruncateString:toWidth:]): Replace
        NeverDestroyed<RetainPtr> with just an NSFont * global.

        * Plugins/Hosted/NetscapePluginHostManager.h: Removed unneeded include of
        NeverDestroyed.h.
        * Storage/WebDatabaseManager.mm: Ditto.
        * WebCoreSupport/WebFrameNetworkingContext.mm: Ditto.
        * WebCoreSupport/WebPlatformStrategies.mm: Ditto.

        * WebView/WebView.mm: Removed unneeded include of NetworkStateNotifier.h.
        (aeDescFromJSValue): Removed double hashing by using the return value from
        add rather than calling contains before calling add.

2017-07-14  Jer Noble  <jer.noble@apple.com>

        Allow clients to override their own hardware media requirements where no fallback media exists.
        https://bugs.webkit.org/show_bug.cgi?id=174426
        <rdar://problem/32537704>

        Reviewed by Eric Carlson.

        Add a new WebPreferences property to control WebCore's new
        allowMediaContentTypesRequiringHardwareSupportAsFallback setting.

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

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

        Async image decoding for large images should be disabled by default
        https://bugs.webkit.org/show_bug.cgi?id=174432

        Reviewed by Simon Fraser.

        -- Remove setting the bit PaintBehaviorSnapshotting in any new PaintBehavoir.
        -- Return PaintBehaviorAllowAsyncImageDecoding when the return value was 0.
        -- Propagate PaintBehaviorAllowAsyncImageDecoding from a parent view to 
           a child view instead of propagating PaintBehaviorSnapshotting.
        -- Replace setting the bit PaintBehaviorSnapshotting in an existing PaintBehavoir
           by resetting the bit PaintBehaviorAllowAsyncImageDecoding.

        * WebView/WebFrame.mm:
        (-[WebFrame _paintBehaviorForDestinationContext:]):
        (-[WebFrame _drawRect:contentsOnly:]):
        * WebView/WebHTMLView.mm:
        (imageFromRect):

2017-07-12  Daniel Bates  <dabates@apple.com>

        Rename NavigationInitiatedByMainFrame to InitiatedByMainFrame
        https://bugs.webkit.org/show_bug.cgi?id=174427

        Rubber-stamped by Brady Eidson.

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

2017-07-12  Matt Lewis  <jlewis3@apple.com>

        Unreviewed, rolling out r219401.

        This revision rolled out the previous patch, but after talking
        with reviewer, a rebaseline is what was needed.Rolling back in
        before rebaseline.

        Reverted changeset:

        "Unreviewed, rolling out r219379."
        https://bugs.webkit.org/show_bug.cgi?id=174400
        http://trac.webkit.org/changeset/219401

2017-07-12  Matt Lewis  <jlewis3@apple.com>

        Unreviewed, rolling out r219379.

        This revision caused a consistent failure in the test
        fast/dom/Window/property-access-on-cached-window-after-frame-
        removed.html.

        Reverted changeset:

        "Remove NAVIGATOR_HWCONCURRENCY"
        https://bugs.webkit.org/show_bug.cgi?id=174400
        http://trac.webkit.org/changeset/219379

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

        Remove NAVIGATOR_HWCONCURRENCY
        https://bugs.webkit.org/show_bug.cgi?id=174400

        * Configurations/FeatureDefines.xcconfig:

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

        Rolling out r219372.

        * Configurations/FeatureDefines.xcconfig:

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

        Remove NAVIGATOR_HWCONCURRENCY
        https://bugs.webkit.org/show_bug.cgi?id=174400

        * Configurations/FeatureDefines.xcconfig:

2017-07-03  Brian Burg  <bburg@apple.com>

        Web Replay: remove some unused code
        https://bugs.webkit.org/show_bug.cgi?id=173903

        Rubber-stamped by Joseph Pecoraro.

        * Configurations/FeatureDefines.xcconfig:

2017-07-09  Brady Eidson  <beidson@apple.com>

        Remove some obsolete WebKitVersionChecks.
        https://bugs.webkit.org/show_bug.cgi?id=174294

        Reviewed by Dan Bernstein.

        * Misc/WebKitVersionChecks.h:

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

        * WebView/WebView.mm:
        (shouldRespectPriorityInCSSAttributeSetters):
        (-[WebView _commonInitializationWithFrameName:groupName:]):
        (-[WebView _preferencesChanged:]):
        (shouldTransformsAffectOverflow): Deleted.
        (shouldDispatchJavaScriptWindowOnErrorEvents): Deleted.

2017-07-08  Brady Eidson  <beidson@apple.com>

        Remove some obsolete RuntimeApplicationChecks.
        https://bugs.webkit.org/show_bug.cgi?id=174293

        Reviewed by Dan Bernstein.

        * Misc/WebKitVersionChecks.h:
        * WebView/WebView.mm:
        (+[WebView enableWebThread]):
        (-[WebView _needsPreHTML5ParserQuirks]):

2017-07-08  Yusuke Suzuki  <utatane.tea@gmail.com>

        Drop NOSNIFF compile flag
        https://bugs.webkit.org/show_bug.cgi?id=174289

        Reviewed by Michael Catanzaro.

        * Configurations/FeatureDefines.xcconfig:

2017-07-06  Yusuke Suzuki  <utatane.tea@gmail.com>

        [WTF] Clean up StringStatics.cpp by using LazyNeverDestroyed<> for Atoms
        https://bugs.webkit.org/show_bug.cgi?id=174150

        Reviewed by Mark Lam.

        * DOM/DOM.mm:
        (lookupElementClass):

2017-07-06  Brady Eidson  <beidson@apple.com>

        Add logging to first attempt to use the WebIconDatabase class.
        https://bugs.webkit.org/show_bug.cgi?id=174190

        Reviewed by Andy Estes.

        * Misc/WebIconDatabase.mm:
        (+[WebIconDatabase sharedIconDatabase]): On first call, log a warning of the bleak future of this non-API.
        * Misc/WebKitVersionChecks.h:

2017-07-06  Matt Lewis  <jlewis3@apple.com>

        Unreviewed, rolling out r219178.

        This caused a consistent failure with the API test
        StringBuilderTest.ToAtomicStringOnEmpty on all Debug testers.

        Reverted changeset:

        "[WTF] Clean up StringStatics.cpp by using
        LazyNeverDestroyed<> for Atoms"
        https://bugs.webkit.org/show_bug.cgi?id=174150
        http://trac.webkit.org/changeset/219178

2017-07-05  Don Olmstead  <don.olmstead@sony.com>

        [WTF] Move SoftLinking.h into WTF
        https://bugs.webkit.org/show_bug.cgi?id=174000

        Reviewed by Alex Christensen.

        * Plugins/WebNetscapePluginView.mm:
        * Plugins/WebPluginController.mm:
        * WebCoreSupport/WebInspectorClient.mm:
        * WebView/WebFullScreenController.mm:
        * WebView/WebImmediateActionController.mm:
        * WebView/WebView.mm:

2017-07-05  Yusuke Suzuki  <utatane.tea@gmail.com>

        [WTF] Clean up StringStatics.cpp by using LazyNeverDestroyed<> for Atoms
        https://bugs.webkit.org/show_bug.cgi?id=174150

        Reviewed by Mark Lam.

        * DOM/DOM.mm:
        (lookupElementClass):

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

        Allow navigations in subframes to get a ShouldOpenExternalURLsPolicy of "ShouldAllow".
        <rdar://problem/22485589> and https://bugs.webkit.org/show_bug.cgi?id=174178

        Reviewed by Alex Christensen.

        Adopt to the new constructor for FrameLoadRequest.

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

2017-07-05  Ryosuke Niwa  <rniwa@webkit.org>

        Make WebKit's public headers on Mac and iOS C++ module safe
        https://bugs.webkit.org/show_bug.cgi?id=174175

        Reviewed by Alex Christensen.

        Fixed the header files.

        * Misc/WebDownload.h:
        * Misc/WebKitErrors.h:
        * Plugins/WebPluginContainer.h:
        * WebView/WebResourceLoadDelegate.h:

2017-07-03  Myles C. Maxfield  <mmaxfield@apple.com>

        Remove copy of ICU headers from WebKit
        https://bugs.webkit.org/show_bug.cgi?id=116407

        Reviewed by Alex Christensen.

        Use WTF's copy of ICU headers.

        * Configurations/WebKitLegacy.xcconfig:
        * icu/unicode/localpointer.h: Removed.
        * icu/unicode/parseerr.h: Removed.
        * icu/unicode/platform.h: Removed.
        * icu/unicode/ptypes.h: Removed.
        * icu/unicode/putil.h: Removed.
        * icu/unicode/uchar.h: Removed.
        * icu/unicode/uconfig.h: Removed.
        * icu/unicode/ucurr.h: Removed.
        * icu/unicode/uidna.h: Removed.
        * icu/unicode/uiter.h: Removed.
        * icu/unicode/umachine.h: Removed.
        * icu/unicode/unorm.h: Removed.
        * icu/unicode/unorm2.h: Removed.
        * icu/unicode/urename.h: Removed.
        * icu/unicode/uscript.h: Removed.
        * icu/unicode/ustring.h: Removed.
        * icu/unicode/utf.h: Removed.
        * icu/unicode/utf16.h: Removed.
        * icu/unicode/utf8.h: Removed.
        * icu/unicode/utf_old.h: Removed.
        * icu/unicode/utypes.h: Removed.
        * icu/unicode/uvernum.h: Removed.
        * icu/unicode/uversion.h: Removed.

2017-07-05  Jonathan Bedard  <jbedard@apple.com>

        Add WebKitPrivateFrameworkStubs for iOS 11
        https://bugs.webkit.org/show_bug.cgi?id=173988

        Reviewed by David Kilzer.

        * Configurations/WebKitLegacy.xcconfig: iphoneos and iphonesimulator should
        use the same directory for private framework stubs.

2017-07-03  Matt Lewis  <jlewis3@apple.com>

        Unreviewed, rolling out r219103.

        Caused multiple build failures.

        Reverted changeset:

        "Remove copy of ICU headers from WebKit"
        https://bugs.webkit.org/show_bug.cgi?id=116407
        http://trac.webkit.org/changeset/219103

2017-07-03  Myles C. Maxfield  <mmaxfield@apple.com>

        Remove copy of ICU headers from WebKit
        https://bugs.webkit.org/show_bug.cgi?id=116407

        Reviewed by Alex Christensen.

        Use WTF's copy of ICU headers.

        * Configurations/WebKitLegacy.xcconfig:
        * icu/unicode/localpointer.h: Removed.
        * icu/unicode/parseerr.h: Removed.
        * icu/unicode/platform.h: Removed.
        * icu/unicode/ptypes.h: Removed.
        * icu/unicode/putil.h: Removed.
        * icu/unicode/uchar.h: Removed.
        * icu/unicode/uconfig.h: Removed.
        * icu/unicode/ucurr.h: Removed.
        * icu/unicode/uidna.h: Removed.
        * icu/unicode/uiter.h: Removed.
        * icu/unicode/umachine.h: Removed.
        * icu/unicode/unorm.h: Removed.
        * icu/unicode/unorm2.h: Removed.
        * icu/unicode/urename.h: Removed.
        * icu/unicode/uscript.h: Removed.
        * icu/unicode/ustring.h: Removed.
        * icu/unicode/utf.h: Removed.
        * icu/unicode/utf16.h: Removed.
        * icu/unicode/utf8.h: Removed.
        * icu/unicode/utf_old.h: Removed.
        * icu/unicode/utypes.h: Removed.
        * icu/unicode/uvernum.h: Removed.
        * icu/unicode/uversion.h: Removed.

2017-07-03  Brady Eidson  <beidson@apple.com>

        Switch all WebKit API related to favicons from WebIconDatabase over to new WebCore::IconLoader mechanism.
        https://bugs.webkit.org/show_bug.cgi?id=174073

        Reviewed by Andy Estes.

        WebView now keeps a direct copy of its main frame icon as a member variable.
        It populates that variable by finding exactly one Favicon LinkIcon from WebCore and loading it.
        
        This change causes a progression in KVO observation of the mainFrameIcon property as we now
        have both the old icon and new icon at the time it changes.

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

        * WebView/WebView.mm:
        (+[WebView _setIconLoadingEnabled:]):
        (+[WebView _isIconLoadingEnabled]):
        (-[WebView mainFrameIcon]):
        (-[WebView _setMainFrameIcon:]):
        (-[WebView _receivedIconChangedNotification:]): Deleted.
        (-[WebView _registerForIconNotification:]): Deleted.
        (-[WebView _dispatchDidReceiveIconFromWebFrame:]): Deleted.
        * WebView/WebViewData.h:
        * WebView/WebViewInternal.h:
        * WebView/WebViewPrivate.h:

2017-07-03  Sam Weinig  <sam@webkit.org>

        [WebIDL] Remove more unnecessary uses of the preprocessor in idl files
        https://bugs.webkit.org/show_bug.cgi?id=174083

        Reviewed by Alex Christensen.

        * Configurations/FeatureDefines.xcconfig:
        Add ENABLE_NAVIGATOR_STANDALONE.

2017-07-03  Tim Horton  <timothy_horton@apple.com>

        Expose unobscuredSafeAreaInsets on WebView
        https://bugs.webkit.org/show_bug.cgi?id=174075
        <rdar://problem/33096997>

        Reviewed by Beth Dakin.

        * WebView/WebView.mm:
        (-[WebView _setUnobscuredSafeAreaInsets:]):
        (-[WebView _unobscuredSafeAreaInsets]):
        * WebView/WebViewPrivate.h:
        Expose unobscuredSafeAreaInsets as a new private property on WebView,
        similar to how it is exposed in WebKit2.

2017-07-03  Andy Estes  <aestes@apple.com>

        [Xcode] Add an experimental setting to build with ccache
        https://bugs.webkit.org/show_bug.cgi?id=173875

        Reviewed by Tim Horton.

        * Configurations/DebugRelease.xcconfig: Included ccache.xcconfig.

2017-07-03  Tim Horton  <timothy_horton@apple.com>

        Expose WebPreferences for viewport-fit and constant() properties
        https://bugs.webkit.org/show_bug.cgi?id=174072
        <rdar://problem/33096639>

        Reviewed by Ryosuke Niwa.

        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (-[WebPreferences viewportFitEnabled]):
        (-[WebPreferences setViewportFitEnabled:]):
        (-[WebPreferences constantPropertiesEnabled]):
        (-[WebPreferences setConstantPropertiesEnabled:]):
        * WebView/WebPreferencesPrivate.h:
        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]):

2017-07-01  Tim Horton  <timothy_horton@apple.com>

        Expose viewport-fit value to UIKit via viewport arguments dictionary
        https://bugs.webkit.org/show_bug.cgi?id=174071
        <rdar://problem/33096620>

        Reviewed by Wenson Hsieh.

        * History/WebHistoryItem.mm:
        * History/WebHistoryItemPrivate.h:
        Add another dictionary key and three values.

2017-07-01  Dan Bernstein  <mitz@apple.com>

        [iOS] Remove code only needed when building for iOS 9.x
        https://bugs.webkit.org/show_bug.cgi?id=174068

        Reviewed by Tim Horton.

        * Configurations/FeatureDefines.xcconfig:

2017-07-01  Ryosuke Niwa  <rniwa@webkit.org>

        Frame.h doesn't need to include FrameLoader.h, IntRect.h, and NavigationScheduler.h
        https://bugs.webkit.org/show_bug.cgi?id=174004

        Reviewed by Simon Fraser.

        * WebCoreSupport/WebPluginInfoProvider.mm:

2017-07-01  Dan Bernstein  <mitz@apple.com>

        [macOS] Remove code only needed when building for OS X Yosemite
        https://bugs.webkit.org/show_bug.cgi?id=174067

        Reviewed by Tim Horton.

        * Configurations/Base.xcconfig:
        * Configurations/DebugRelease.xcconfig:
        * Configurations/FeatureDefines.xcconfig:
        * Configurations/Version.xcconfig:
        * Plugins/WebBasePluginPackage.mm:
        (-[WebBasePluginPackage getPluginInfoFromPLists]):
        * WebCoreSupport/PopupMenuMac.mm:
        (PopupMenuMac::show):
        * WebCoreSupport/WebInspectorClient.mm:
        (WebInspectorFrontendClient::startWindowDrag):
        (-[WebInspectorWindowController window]):
        * WebView/WebView.mm:
        (-[WebView _animationControllerForDictionaryLookupPopupInfo:]):

2017-06-30  Daniel Bates  <dabates@apple.com>

        API::FrameInfo should know the web page that contains the frame; add API property webView to WKFrameInfo
        https://bugs.webkit.org/show_bug.cgi?id=165160
        <rdar://problem/29451999>

        Reviewed by Brady Eidson.

        Pass the document that is requesting the load to the loader.

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

2017-06-29  Jer Noble  <jer.noble@apple.com>

        Make Legacy EME API controlled by RuntimeEnabled setting.
        https://bugs.webkit.org/show_bug.cgi?id=173994

        Reviewed by Sam Weinig.

        Add a new preference used to control WebCore's new RuntimeEnabledFeature setting.

        * Configurations/FeatureDefines.xcconfig:
        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):
        (-[WebPreferences legacyEncryptedMediaAPIEnabled]):
        (-[WebPreferences setLegacyEncryptedMediaAPIEnabled:]):
        * WebView/WebPreferencesPrivate.h:
        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]):

2017-06-30  Chris Dumez  <cdumez@apple.com>

        ResourceLoadObserver does not need a ResourceLoadStatisticsStore
        https://bugs.webkit.org/show_bug.cgi?id=174013

        Reviewed by Brent Fulgham.

        ResourceLoadObserver does not need a ResourceLoadStatisticsStore. ResourceLoadStatisticsStore is too complicated for its needs.
        ResourceLoadStatisticsStore can then be moved to WebKit2/UIProcess in a follow-up.

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

2017-06-30  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS DnD] Drag caret rect is incorrectly computed when dropping in editable content in iframes
        https://bugs.webkit.org/show_bug.cgi?id=174017
        <rdar://problem/32959782>

        Reviewed by Simon Fraser.

        Use root view coordinates when computing the drag caret rect.

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

2017-06-28  Simon Fraser  <simon.fraser@apple.com>

        Mark the GraphicsContext as accelerated when the WebHTMLView's layer is drawing asynchronously
        https://bugs.webkit.org/show_bug.cgi?id=173899
        rdar://problem/32994474

        Reviewed by Tim Horton.

        When the WebHTMLView is layer-backed, and -drawsAsynchronously on its layer is YES,
        then mark the GraphicsContext that WebCore is using for drawing as accelerated, so
        that ImageBuffer::createCompatibleBuffer() creates appropriately matched buffers.

        Also clean up WebFrame a little, sharing code that checks whether the WebFrame's
        documentView is a WebHTMLView.

        * WebView/WebFrame.mm:
        (-[WebFrame _webHTMLDocumentView]):
        (-[WebFrame _paintBehaviorForDestinationContext:]):
        (-[WebFrame _drawRect:contentsOnly:]):
        (-[WebFrame setTimeoutsPaused:]):
        (-[WebFrame prepareForPause]):
        (-[WebFrame resumeFromPause]):
        (-[WebFrame resetTextAutosizingBeforeLayout]):
        * WebView/WebHTMLView.mm:
        (-[WebHTMLView drawLayer:inContext:]):
        (-[WebHTMLView _web_isDrawingIntoAcceleratedLayer]):
        * WebView/WebHTMLViewInternal.h:

2017-06-27  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS DnD] Support dragging out of contenteditable areas without a prior selection
        https://bugs.webkit.org/show_bug.cgi?id=173854
        <rdar://problem/32236827>

        Reviewed by Ryosuke Niwa and Tim Horton.

        Vends some information from the DragItem passed into -[WebView _startDrag:] through the WebView as SPI for
        WebKit1 clients. No behavior change with these changes alone -- see <rdar://problem/32991062> for more detail.

        * WebView/WebView.mm:
        (-[WebView _startDrag:]):
        (-[WebView _dragSourceAction]):
        (-[WebView _draggedLinkTitle]):
        (-[WebView _draggedLinkURL]):
        (-[WebView _draggedElementBounds]):
        (-[WebView _endedDataInteraction:global:]):
        * WebView/WebViewData.h:
        * WebView/WebViewPrivate.h:

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

        Refactor drag start codepaths to plumb a DragItem to client layers
        https://bugs.webkit.org/show_bug.cgi?id=173832
        Work towards <rdar://problem/32236827>

        Reviewed by Ryosuke Niwa and Tim Horton.

        Refactor code used to start a drag in WebKit1 to plumb a single DragItem from DragController to the client layer
        in WebDragClient that contains all the information needed to begin a drag. Also renames _setDataInteractionData:
        to _startDrag: to match logic used to start a drag on other platforms.

        No behavior change -- the same information should be propagated to AppKit and UIKit when beginning a drag, only
        through the DragItem struct.

        * WebCoreSupport/WebDragClient.h:
        * WebCoreSupport/WebDragClient.mm:
        (WebDragClient::startDrag):
        (WebDragClient::dragSourceActionMaskForPoint):
        (WebDragClient::willPerformDragSourceAction):
        (WebDragClient::beginDrag):
        * WebView/WebView.mm:
        (-[WebView _startDrag:]):
        (-[WebView _setDataInteractionData:textIndicator:atClientPosition:anchorPoint:action:]): Deleted.
        * WebView/WebViewInternal.h:

2017-06-25  Konstantin Tokarev  <annulen@yandex.ru>

        Remove excessive headers from JavaScriptCore
        https://bugs.webkit.org/show_bug.cgi?id=173812

        Reviewed by Darin Adler.

        * Plugins/Hosted/NetscapePluginInstanceProxy.mm:
        * WebView/WebView.mm:

2017-06-23  Tim Horton  <timothy_horton@apple.com>

        Remove an unused typedef from WebFrameLoaderClient
        https://bugs.webkit.org/show_bug.cgi?id=173795

        Reviewed by Simon Fraser.

        * WebCoreSupport/WebFrameLoaderClient.h:
        This unused typedef in the global namespace conflicts with one in a macOS system header.
        Also... it's unused.
        Remove it.

2017-06-23  Konstantin Tokarev  <annulen@yandex.ru>

        Remove excessive headers from WebCore/{bindings,css,dom}
        https://bugs.webkit.org/show_bug.cgi?id=173766

        Reviewed by Simon Fraser.

        * DOM/DOMInternal.mm:

2017-06-22  Daniel Bates  <dabates@apple.com>

        Make FrameLoadRequest a move-only type
        https://bugs.webkit.org/show_bug.cgi?id=173682

        Reviewed by Alex Christensen and Darin Adler.

        A FrameLoadRequest groups together the information to perform a load into a single object
        that is more manageable to pass around than its constituent parts. Code that receives a
        FrameLoadRequest is expected to extract out the information it needs to complete its task.
        And it does not make sense to re-use the same FrameLoadRequest object for more than one
        load. Therefore, it is sufficient to make FrameLoadRequest a move-only type.

        * Plugins/WebPluginController.mm:
        (-[WebPluginController webPlugInContainerLoadRequest:inFrame:]):
        * WebView/WebPDFView.mm:
        (-[WebPDFView PDFViewWillClickOnLink:withURL:]):

2017-06-21  Antoine Quint  <graouts@apple.com>

        Ensure DRT always logs rAF suspension debugging code
        https://bugs.webkit.org/show_bug.cgi?id=173681

        Reviewed by Tim "Mr. T" Horton.

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

2017-06-21  Daniel Bates  <dabates@apple.com>

        Cleanup FrameLoadRequest
        https://bugs.webkit.org/show_bug.cgi?id=173564
        <rdar://problem/32903570>

        Reviewed by Brent Fulgham.

        * WebView/WebPDFView.mm:
        (-[WebPDFView PDFViewWillClickOnLink:withURL:]): Move FrameLoadRequest instantiation
        into a local variable and use C++11 brace initialization syntax to make it easier to identify
        the arguments passed to FrameLoader::loadFrameRequest().

2017-06-21  Antoine Quint  <graouts@apple.com>

        Add logging to identify when the Page suspends scripted animations
        https://bugs.webkit.org/show_bug.cgi?id=173626

        Reviewed by Tim Horton.

        Add a new preference to control the new shouldLogScriptedAnimationControllerSuspensionChange settings
        through WebKit. This is specific to WK1 since the issue we're trying to pinpoint only occurs on WK1 bots.

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

2017-06-20  Myles C. Maxfield  <mmaxfield@apple.com>

        Disable font variations on macOS Sierra and iOS 10
        https://bugs.webkit.org/show_bug.cgi?id=173618
        <rdar://problem/32879164>

        Reviewed by Jon Lee.

        * Configurations/FeatureDefines.xcconfig:

2017-06-20  Daniel Bates  <dabates@apple.com>

        Have FrameLoadRequest takes a Frame& instead of a Frame*
        https://bugs.webkit.org/show_bug.cgi?id=173614
        <rdar://problem/32884890>

        Reviewed by Brent Fulgham.

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

2017-06-19  Frederic Wang  <fwang@igalia.com>

        [Mac] Add an experimental feature setting for async frame scrolling
        https://bugs.webkit.org/show_bug.cgi?id=173359

        Reviewed by Simon Fraser.

        * WebView/WebPreferenceKeysPrivate.h: Declare key for async frame scrolling preference.
        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]): Initialize async frame scrolling preference to false.
        (-[WebPreferences asyncFrameScrollingEnabled]): Define getter for async frame scrolling.
        (-[WebPreferences setAsyncFrameScrollingEnabled:]): Define setter for async frame scrolling.
        * WebView/WebPreferencesPrivate.h: Declare setter and getter.
        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]): Take into account preference update for async frame
        scrolling.

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

        Use WTF::Function instead of std::function in more places in WebCore/
        https://bugs.webkit.org/show_bug.cgi?id=173535

        Reviewed by Antti Koivisto.

        Use WTF::Function instead of std::function in more places in WebCore/ to avoid copying.

        * WebCoreSupport/WebFrameLoaderClient.h:
        * WebCoreSupport/WebFrameLoaderClient.mm:
        (WebFrameLoaderClient::dispatchDecidePolicyForResponse):
        (WebFrameLoaderClient::dispatchDecidePolicyForNewWindowAction):
        (WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
        (WebFrameLoaderClient::dispatchWillSubmitForm):
        (WebFrameLoaderClient::setUpPolicyListener):
        (-[WebFramePolicyListener initWithFrame:policyFunction:]):
        (-[WebFramePolicyListener initWithFrame:policyFunction:appLinkURL:]):

2017-05-14 Frederic Wang  <fwang@igalia.com>

        Add heuristic to avoid flattening "fullscreen" iframes
        https://bugs.webkit.org/show_bug.cgi?id=171914

        Reviewed by Simon Fraser.

        This commit adjusts the mac/ios preference interface to treat frame flattening as an enum.

        * WebView/WebPreferenceKeysPrivate.h: Rename the key.
        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]): Handle frame flattening as an enum.
        (-[WebPreferences isFrameFlatteningEnabled]): Ditto.
        (-[WebPreferences setFrameFlatteningEnabled:]): Ditto.
        (-[WebPreferences frameFlattening]): New function to get frame flattening as an enum.
        (-[WebPreferences setFrameFlattening:]): New function to set frame flattening as an enum.
        * WebView/WebPreferencesPrivate.h: Ditto.
        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]): Ditto.
        * WebView/WebPreferencesPrivate.h: Add new enum definition.

2017-06-17  Chris Dumez  <cdumez@apple.com>

        Use WTF::Function instead of std::function in WebKit2/
        https://bugs.webkit.org/show_bug.cgi?id=173504

        Reviewed by Darin Adler.

        Use WTF::Function instead of std::function in WebKit2/ to avoid
        unnecessary copying.

        * Plugins/Hosted/HostedNetscapePluginStream.h:
        * Plugins/Hosted/HostedNetscapePluginStream.mm:
        (WebKit::HostedNetscapePluginStream::willSendRequest):
        * Plugins/WebNetscapePluginStream.h:
        * Plugins/WebNetscapePluginStream.mm:
        (WebNetscapePluginStream::willSendRequest):
        * WebCoreSupport/WebPaymentCoordinatorClient.h:
        * WebCoreSupport/WebPaymentCoordinatorClient.mm:
        (WebPaymentCoordinatorClient::canMakePaymentsWithActiveCard):
        (WebPaymentCoordinatorClient::openPaymentSetup):

2017-06-16  Sam Weinig  <sam@webkit.org>

        [WebIDL] Remove custom bindings for HTMLDocument
        https://bugs.webkit.org/show_bug.cgi?id=173444

        Reviewed by Darin Adler.

        * DOM/DOMHTMLDocument.mm:
        (-[DOMHTMLDocument linkColor]):
        (-[DOMHTMLDocument setLinkColor:]):
        (-[DOMHTMLDocument write:]):
        (-[DOMHTMLDocument writeln:]):
        Update for new signature of write/writeln and rename of linkColor to linkColorForBindings.

2017-06-16  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS DnD] Upstream iOS drag and drop implementation into OpenSource WebKit
        https://bugs.webkit.org/show_bug.cgi?id=173366
        <rdar://problem/32767014>

        Reviewed by Tim Horton.

        Move pieces of iOS WebKit1 drag and drop implementation into OpenSource. No change in behavior.

        * Configurations/FeatureDefines.xcconfig:
        * WebCoreSupport/WebDragClient.mm:
        (WebDragClient::useLegacyDragClient):
        (WebDragClient::willPerformDragDestinationAction):
        (WebDragClient::dragSourceActionMaskForPoint):
        (WebDragClient::willPerformDragSourceAction):
        (WebDragClient::startDrag):
        (WebDragClient::beginDrag):
        (WebDragClient::declareAndWriteDragImage):
        (WebDragClient::declareAndWriteAttachment):
        (WebDragClient::didConcludeEditDrag):
        * WebView/WebView.mm:
        (-[WebView _setDataInteractionData:textIndicator:atClientPosition:anchorPoint:action:]):
        (-[WebView _getDataInteractionData]):
        (-[WebView dragDataForSession:client:global:operation:]):
        (-[WebView _enteredDataInteraction:client:global:operation:]):
        (-[WebView _updatedDataInteraction:client:global:operation:]):
        (-[WebView _exitedDataInteraction:client:global:operation:]):
        (-[WebView _performDataInteraction:client:global:operation:]):
        (-[WebView _tryToPerformDataInteraction:client:global:operation:]):
        (-[WebView _endedDataInteraction:global:]):
        (-[WebView _didConcludeEditDataInteraction]):
        (floatRectsForCGRectArray): Deleted.
        (-[WebView _createImageWithPlatterForImage:boundingRect:contentScaleFactor:clippingRects:]): Deleted.
        * WebView/WebViewData.h:
        * WebView/WebViewData.mm:
        (-[WebViewPrivate dealloc]):
        * WebView/WebViewPrivate.h:

2017-06-15  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS DnD] [WK1] Dropping links onto UIWebViews should not trigger navigation by default
        https://bugs.webkit.org/show_bug.cgi?id=173454
        <rdar://problem/31720671>

        Reviewed by Tim Horton.

        Adds -webView:dragDestinationActionMaskForSession: as SPI to WebUIDelegate.
        If unimplemented, the default UI delegate allows all actions except for URL loading.

        * DefaultDelegates/WebDefaultUIDelegate.mm:
        (-[WebDefaultUIDelegate webView:dragDestinationActionMaskForSession:]):
        * WebView/WebUIDelegatePrivate.h:
        * WebView/WebView.mm:
        (-[WebView dragDestinationActionMaskForSession:]):

2017-06-15  Wenson Hsieh  <wenson_hsieh@apple.com>

        Using -[WebItemProviderPasteboard setItemProviders:] to swap out item providers before a drop breaks item provider loading
        https://bugs.webkit.org/show_bug.cgi?id=173338
        <rdar://problem/32777720>

        Reviewed by Tim Horton.

        Rename updatePreferredTypeIdentifiers to updateSupportedTypeIdentifiers.

        * WebCoreSupport/WebPlatformStrategies.h:
        * WebCoreSupport/WebPlatformStrategies.mm:
        (WebPlatformStrategies::updateSupportedTypeIdentifiers):
        (WebPlatformStrategies::updatePreferredTypeIdentifiers): Deleted.

2017-06-13  Daniel Bates  <dabates@apple.com>

        Implement W3C Secure Contexts Draft Specification
        https://bugs.webkit.org/show_bug.cgi?id=158121
        <rdar://problem/26012994>

        Reviewed by Brent Fulgham.

        Part 4

        Adds a preference to toggle the runtime enabled feature flag isSecureContextAttributeEnabled.

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

2017-06-13  Sam Weinig  <sam@webkit.org>

        Rename JSDOMWindowShell to JSDOMWindowProxy to match the HTML5 spec.
        https://bugs.webkit.org/show_bug.cgi?id=80733

        Reviewed by Chris Dumez.

        * DOM/DOMUtility.mm:
        (createDOMWrapper):
        * Plugins/Hosted/NetscapePluginInstanceProxy.mm:
        (WebKit::NetscapePluginInstanceProxy::getWindowNPObject):
        * WebView/WebFrame.mm:
        (-[WebFrame _attachScriptDebugger]):
        (-[WebFrame _stringByEvaluatingJavaScriptFromString:withGlobalObject:inScriptWorld:]):

2017-06-12  Jiewen Tan  <jiewen_tan@apple.com>

        [WebCrypto] Remove experimental feature flag of SubtleCrypto
        https://bugs.webkit.org/show_bug.cgi?id=173197
        <rdar://problem/32688148>

        Reviewed by Brent Fulgham.

        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):
        (-[WebPreferences subtleCryptoEnabled]): Deleted.
        (-[WebPreferences setSubtleCryptoEnabled:]): Deleted.
        * WebView/WebPreferencesPrivate.h:
        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]):

2017-06-10  Dan Bernstein  <mitz@apple.com>

        Reverted r218056 because it made the IDE reindex constantly.

        * Configurations/DebugRelease.xcconfig:

2017-06-10  Dan Bernstein  <mitz@apple.com>

        [Xcode] With Xcode 9 developer beta, everything rebuilds when switching between command-line and IDE
        https://bugs.webkit.org/show_bug.cgi?id=173223

        Reviewed by Sam Weinig.

        The rebuilds were happening due to a difference in the compiler options that the IDE and
        xcodebuild were specifying. Only the IDE was passing the -index-store-path option. To make
        xcodebuild pass that option, too, set CLANG_INDEX_STORE_ENABLE to YES if it is unset, and
        specify an appropriate path in CLANG_INDEX_STORE_PATH.

        * Configurations/DebugRelease.xcconfig:

2017-06-09  Wenson Hsieh  <wenson_hsieh@apple.com>

        [iOS DnD] Add a hook to perform two-step drops in editable content
        https://bugs.webkit.org/show_bug.cgi?id=172992
        <rdar://problem/32590174>

        Reviewed by Tim Horton.

        Adds a new SPI to WebUIKitDelegate to allow WK1 clients to override default drop behavior. Returning YES from
        -performTwoStepDrop:atDestination:isMove: will prevent content from being inserted on drop in WebKit; otherwise,
        returning NO will continue with default WebKit behavior.

        * WebCoreSupport/WebEditorClient.h:
        * WebCoreSupport/WebEditorClient.mm:
        (WebEditorClient::performTwoStepDrop):

2017-06-08  Jer Noble  <jer.noble@apple.com>

        Clients of the WK2 C-API don't have their mediaContentTypesRequiringHardwareSupport setting initialized correctly.
        https://bugs.webkit.org/show_bug.cgi?id=173091

        Reviewed by Eric Carlson.

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

2017-06-07  Jer Noble  <jer.noble@apple.com>

        Clean-up: RenderElement.h includes headers it doesn't use
        https://bugs.webkit.org/show_bug.cgi?id=173046

        Reviewed by Andy Estes.

        * WebView/WebImmediateActionController.mm:

2017-06-07  Zalan Bujtas  <zalan@apple.com>

        [iOS WK1 WebThread] Do not call out to the main thread for device orientation.
        https://bugs.webkit.org/show_bug.cgi?id=173044
        <rdar://problem/32449338>

        Reviewed by Tim Horton.

        Cache the current device orientation so that we don't have to lift the WebThread lock
        to collect it.

        * WebView/WebFrame.mm:
        (-[WebFrame deviceOrientationChanged]):
        * WebView/WebView.mm:
        (-[WebView _commonInitializationWithFrameName:groupName:]):
        (-[WebView _setDeviceOrientation:]):
        (-[WebView _deviceOrientation]):
        * WebView/WebViewData.h:
        * WebView/WebViewInternal.h:

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

        [Cocoa] Set defaults for mediaContentTypesRequiringHardwareSupport setting
        https://bugs.webkit.org/show_bug.cgi?id=173008

        Reviewed by Eric Carlson.

        Add a private preference (with default) for the mediaContentTypesRequiringHardwareSupport WebCore setting.

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

2017-06-06  Youenn Fablet  <youenn@apple.com>

        Add an option to disable getUserMedia prompt in case of mock capture sources
        https://bugs.webkit.org/show_bug.cgi?id=172981
        <rdar://problem/32580325>

        Reviewed by Eric Carlson.

        Defining the option, getter and setter.

        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):
        (-[WebPreferences mockCaptureDevicesPromptEnabled]):
        (-[WebPreferences setMockCaptureDevicesPromptEnabled:]):
        * WebView/WebPreferencesPrivate.h:

2017-06-05  Dan Bernstein  <mitz@apple.com>

        Tried to fix the build when targrting macOS 10.12 using the macOS 10.13 developer beta SDK.

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

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

        Streamline handling of attributes, using references as much as possible
        https://bugs.webkit.org/show_bug.cgi?id=172899

        Reviewed by Chris Dumez.

        * WebView/WebHTMLRepresentation.mm:
        (matchLabelsAgainstElement): Added handling of nullptr since nothing guarantees the
        passed in element can't be null. Removed unnecessary conversion from NSString to String
        and then back to NSString.

2017-06-01  Andy Estes  <aestes@apple.com>

        REGRESSION (r217626): ENABLE_APPLE_PAY_SESSION_V3 was disabled by mistake
        https://bugs.webkit.org/show_bug.cgi?id=172828

        Reviewed by Beth Dakin.

        * Configurations/FeatureDefines.xcconfig:

2017-05-31  Andy Estes  <aestes@apple.com>

        Rename ENABLE_APPLE_PAY_DELEGATE to ENABLE_APPLE_PAY_SESSION_V3 and bump the supported version number
        https://bugs.webkit.org/show_bug.cgi?id=172366

        Reviewed by Daniel Bates.

        * Configurations/FeatureDefines.xcconfig:

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

        Only include DataDetectorsUI headers in iOS
        https://bugs.webkit.org/show_bug.cgi?id=172633

        Reviewed by David Kilzer.

        Enable data detectors only on iOS and not other variants of iOS.

        * WebCoreSupport/WebFrameLoaderClient.mm:

2017-05-30  Alex Christensen  <achristensen@webkit.org>

        Update libwebrtc configuration
        https://bugs.webkit.org/show_bug.cgi?id=172727

        Reviewed by Geoffrey Garen.

        * Configurations/FeatureDefines.xcconfig:

2017-05-28  Dan Bernstein  <mitz@apple.com>

        [Xcode] ALWAYS_SEARCH_USER_PATHS is set to YES
        https://bugs.webkit.org/show_bug.cgi?id=172691

        Reviewed by Tim Horton.

        * Configurations/Base.xcconfig: Set ALWAYS_SEARCH_USER_PATHS to NO.

2017-05-26  Brent Fulgham  <bfulgham@apple.com>

        [WK2] Address thread safety issues with ResourceLoadStatistics
        https://bugs.webkit.org/show_bug.cgi?id=172519
        <rdar://problem/31707642>

        Reviewed by Chris Dumez.

        Create a new WorkQueue for the ResourceLoadStatistics store to use for processing data.

        * WebView/WebView.mm:
        (WebKitInitializeApplicationStatisticsStoragePathIfNecessary): Pass WorkQueue to the observer.

2017-05-25  Myles C. Maxfield  <mmaxfield@apple.com>

        [WK1] iframes in layer-backed NSViews are not cleared between successive draws
        https://bugs.webkit.org/show_bug.cgi?id=172554
        <rdar://problem/31247133>

        Reviewed by Simon Fraser.

        Update an overridden internal AppKit function to the new signature.

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

2017-05-24  Jer Noble  <jer.noble@apple.com>

        Rename DisplaySleepDisabler -> SleepDisabler
        https://bugs.webkit.org/show_bug.cgi?id=172478

        Reviewed by Sam Weinig.

        * WebView/WebFullScreenController.h:

2017-05-23  Simon Fraser  <simon.fraser@apple.com>

        Stop consulting -viewsNeedDisplay when doing layer flushing in WebKit1
        https://bugs.webkit.org/show_bug.cgi?id=172522
        rdar://problem/31071812

        Reviewed by Tim Horton.

        There's no need to consult -[NSWindow viewsNeedDisplay] on newer OSes. It was
        added in r58623, and modified in r61204 for Carbon apps, but with more recent AppKit
        versions this synchronization is no longer required.

        * WebView/WebView.mm:
        (LayerFlushController::flushLayers):

2017-05-22  Simon Fraser  <simon.fraser@apple.com>

        Snapshotting via -renderInContext: should do synchronous image decodes
        https://bugs.webkit.org/show_bug.cgi?id=172485
        rdar://problem/32276146

        Reviewed by Tim Horton.

        Remove the _setIncludesFlattenedCompositingLayersWhenDrawingToBitmap: SPI that no longer
        has any callers.

        * Plugins/WebBaseNetscapePluginView.h:
        * Plugins/WebBaseNetscapePluginView.mm:
        (-[WebBaseNetscapePluginView inFlatteningPaint]): Deleted.
        * WebView/WebFrame.mm:
        (-[WebFrame _paintBehaviorForDestinationContext:]):
        (-[WebFrame _drawRect:contentsOnly:]):
        (-[WebFrame _shouldFlattenCompositingLayers:]): Deleted.
        * WebView/WebHTMLView.mm:
        (imageFromRect):
        * WebView/WebView.mm:
        (-[WebView _commonInitializationWithFrameName:groupName:]):
        (-[WebView _setIncludesFlattenedCompositingLayersWhenDrawingToBitmap:]): Deleted.
        (-[WebView _includesFlattenedCompositingLayersWhenDrawingToBitmap]): Deleted.
        * WebView/WebViewData.h:
        * WebView/WebViewPrivate.h:

2017-05-23  Myles C. Maxfield  <mmaxfield@apple.com>

        Remove dead ENABLE(FONT_LOAD_EVENTS) code
        https://bugs.webkit.org/show_bug.cgi?id=172517

        Rubber-stamped by Simon Fraser.

        * Configurations/FeatureDefines.xcconfig:

2017-05-23  Emilio Cobos Álvarez  <ecobos@igalia.com>

        Add a RuntimeEnabledFeature for display: contents, defaulted to false.
        https://bugs.webkit.org/show_bug.cgi?id=171984

        Reviewed by Antti Koivisto.

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

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

        Remove AVAudioCaptureSource
        https://bugs.webkit.org/show_bug.cgi?id=172360

        Reviewed by Sam Weinig.

        Removing the handling of AVAudio/CoreAudio capture source dynamic switch.

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

2017-05-22  Sam Weinig  <sam@webkit.org>

        [WebIDL] Support callbacks with arbitrary return types
        https://bugs.webkit.org/show_bug.cgi?id=172407

        Reviewed by Chris Dumez.

        * DOM/DOM.mm:
        (-[DOMNodeFilter acceptNode:]):
        Update for CallbackResult adoption in the base class.

        * DOM/DOMNodeIterator.mm:
        * DOM/DOMTreeWalker.mm:
        Update to account for new WebCore implementation return types. We return nil
        if there was an exception, since retains the existing behavior if a javascript
        NodeFilter had been used (an exception would cause all nodes to be rejected,
        thus returning nullptr).

        * DOM/ObjCNodeFilterCondition.h:
        * DOM/ObjCNodeFilterCondition.mm:
        Update to match new interface of NodeFilterCondition.

2017-05-18  Sam Weinig  <sam@webkit.org>

        [WebIDL] Remove the need for the generator to know about native type mapping
        https://bugs.webkit.org/show_bug.cgi?id=172310

        Reviewed by Darin Adler.

        * DOM/DOM.mm:
        (-[DOMNodeFilter acceptNode:]):
        Update to pass Node by reference.

2017-05-19  Yusuke Suzuki  <utatane.tea@gmail.com>

        [JSC][DFG][DOMJIT] Extend CheckDOM to CheckSubClass
        https://bugs.webkit.org/show_bug.cgi?id=172098

        Reviewed by Saam Barati.

        * Plugins/Hosted/ProxyInstance.mm:
        * Plugins/Hosted/ProxyRuntimeObject.mm:

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

        ENABLE(APPLE_PAY_DELEGATE) should be NO on macOS Sierra and earlier
        https://bugs.webkit.org/show_bug.cgi?id=172305

        Reviewed by Anders Carlsson.

        * Configurations/FeatureDefines.xcconfig:

2017-05-18  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r217031, r217032, and r217037.
        https://bugs.webkit.org/show_bug.cgi?id=172293

        cause linking errors in Windows (Requested by yusukesuzuki on
        #webkit).

        Reverted changesets:

        "[JSC][DFG][DOMJIT] Extend CheckDOM to CheckSubClass"
        https://bugs.webkit.org/show_bug.cgi?id=172098
        http://trac.webkit.org/changeset/217031

        "Unreviewed, rebaseline for newly added ClassInfo"
        https://bugs.webkit.org/show_bug.cgi?id=172098
        http://trac.webkit.org/changeset/217032

        "Unreviewed, fix debug and non-JIT build"
        https://bugs.webkit.org/show_bug.cgi?id=172098
        http://trac.webkit.org/changeset/217037

2017-05-16  Yusuke Suzuki  <utatane.tea@gmail.com>

        [JSC][DFG][DOMJIT] Extend CheckDOM to CheckSubClass
        https://bugs.webkit.org/show_bug.cgi?id=172098

        Reviewed by Saam Barati.

        * Plugins/Hosted/ProxyInstance.mm:
        * Plugins/Hosted/ProxyRuntimeObject.mm:

2017-05-17  Matt Lewis  <jlewis3@apple.com>

        Unreviewed, rolling out r216974.

        Revision caused consistent timeouts on all platforms.

        Reverted changeset:

        "Add a RuntimeEnabledFeature for display: contents, defaulted
        to false."
        https://bugs.webkit.org/show_bug.cgi?id=171984
        http://trac.webkit.org/changeset/216974

2017-05-17  Emilio Cobos Álvarez  <ecobos@igalia.com>

        Add a RuntimeEnabledFeature for display: contents, defaulted to false.
        https://bugs.webkit.org/show_bug.cgi?id=171984

        Reviewed by Antti Koivisto.

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

2017-05-16  Sam Weinig  <sam@webkit.org>

        Bring Notification.idl up to spec
        https://bugs.webkit.org/show_bug.cgi?id=172156

        Reviewed by Chris Dumez.

        * WebCoreSupport/WebNotificationClient.h:
        * WebCoreSupport/WebNotificationClient.mm:
        (generateNotificationID):
        (WebNotificationClient::show):
        (WebNotificationClient::cancel):
        (WebNotificationClient::clearNotifications):
        (WebNotificationClient::notificationObjectDestroyed):
        (WebNotificationClient::requestPermission):
        (WebNotificationClient::hasPendingPermissionRequests):
        (WebNotificationClient::checkPermission):
        (-[WebNotificationPolicyListener allow]):
        (-[WebNotificationPolicyListener deny]):
        * WebView/WebNotification.mm:
        (-[WebNotification iconURL]):
        (-[WebNotification dir]):
        Simplify #ifdefs and update for enum vs String usage.

2017-05-15  Said Abou-Hallawa  <sabouhallawa@apple.com>

        Do not delete asynchronously decoded frames for large images if their clients are in the viewport
        https://bugs.webkit.org/show_bug.cgi?id=170640

        Reviewed by Simon Fraser.

        Enable the async decoding for large images.

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

2017-05-15  Jer Noble  <jer.noble@apple.com>

        Add experimental setting to allow document gesture interaction to fulfill media playback gesture requirement
        https://bugs.webkit.org/show_bug.cgi?id=172131

        Reviewed by Eric Carlson.

        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):
        (-[WebPreferences mediaUserGestureInheritsFromDocument]):
        (-[WebPreferences setMediaUserGestureInheritsFromDocument:]):
        * WebView/WebPreferencesPrivate.h:

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

        Drop uses of PassRefPtr in WebKit/mac
        https://bugs.webkit.org/show_bug.cgi?id=172066

        Reviewed by Sam Weinig.

        * History/WebBackForwardListInternal.h:
        * History/WebHistoryItem.mm:
        (kit):
        (-[WebHistoryItem initWithWebCoreHistoryItem:]):
        * History/WebHistoryItemInternal.h:
        * Plugins/Hosted/HostedNetscapePluginStream.h:
        (WebKit::HostedNetscapePluginStream::create):
        * Plugins/Hosted/NetscapePluginHostManager.h:
        * Plugins/Hosted/NetscapePluginHostManager.mm:
        (WebKit::NetscapePluginHostManager::instantiatePlugin):
        * Plugins/Hosted/NetscapePluginInstanceProxy.h:
        * Plugins/Hosted/NetscapePluginInstanceProxy.mm:
        (WebKit::NetscapePluginInstanceProxy::PluginRequest::create):
        (WebKit::NetscapePluginInstanceProxy::create):
        (WebKit::NetscapePluginInstanceProxy::setManualStream):
        * Plugins/Hosted/ProxyInstance.h:
        (WebKit::ProxyInstance::create):
        * Plugins/Hosted/ProxyInstance.mm:
        (WebKit::ProxyInstance::ProxyInstance):
        (WebKit::ProxyInstance::newRuntimeObject):
        * Plugins/Hosted/ProxyRuntimeObject.h:
        (WebKit::ProxyRuntimeObject::create):
        * Plugins/Hosted/ProxyRuntimeObject.mm:
        (WebKit::ProxyRuntimeObject::ProxyRuntimeObject):
        * Plugins/Hosted/WebHostedNetscapePluginView.h:
        * Plugins/Hosted/WebHostedNetscapePluginView.mm:
        (-[WebHostedNetscapePluginView initWithFrame:pluginPackage:URL:baseURL:MIMEType:attributeKeys:attributeValues:loadManually:element:]):
        * Plugins/WebBaseNetscapePluginView.h:
        * Plugins/WebBaseNetscapePluginView.mm:
        (-[WebBaseNetscapePluginView initWithFrame:pluginPackage:URL:baseURL:MIMEType:attributeKeys:attributeValues:loadManually:element:]):
        * Plugins/WebNetscapePluginStream.h:
        (WebNetscapePluginStream::create):
        * Plugins/WebNetscapePluginView.h:
        * Plugins/WebNetscapePluginView.mm:
        (-[WebNetscapePluginView initWithFrame:pluginPackage:URL:baseURL:MIMEType:attributeKeys:attributeValues:loadManually:element:]):
        * WebCoreSupport/WebChromeClient.mm:
        * WebCoreSupport/WebEditorClient.mm:
        * WebCoreSupport/WebNotificationClient.mm:
        (WebNotificationClient::requestPermission):
        (-[WebNotificationPolicyListener initWithCallback:]):
        * WebCoreSupport/WebOpenPanelResultListener.mm:
        * WebCoreSupport/WebUserMediaClient.mm:
        (WebUserMediaClient::requestUserMediaAccess):
        (WebUserMediaClient::enumerateMediaDevices):
        (-[WebUserMediaPolicyListener initWithUserMediaRequest:]):
        (-[WebUserMediaPolicyCheckerListener initWithMediaDevicesEnumerationRequest:]):
        * WebView/WebArchive.mm:
        (-[WebArchivePrivate initWithCoreArchive:]):
        (-[WebArchivePrivate setCoreArchive:]):
        (-[WebArchive initWithData:]):
        (-[WebArchive subframeArchives]):
        (-[WebArchive _initWithCoreLegacyWebArchive:]):
        * WebView/WebArchiveInternal.h:
        * WebView/WebDataSource.mm:
        (WebDataSourcePrivate::WebDataSourcePrivate):
        (WebDataSourcePrivate::~WebDataSourcePrivate):
        (-[WebDataSource _initWithDocumentLoader:]):
        * WebView/WebDataSourceInternal.h:
        * WebView/WebDeviceOrientation.mm:
        (-[WebDeviceOrientation initWithCoreDeviceOrientation:]):
        * WebView/WebDeviceOrientationInternal.h:
        * WebView/WebFrame.mm:
        (-[WebFrame _convertToDOMRange:]):
        (-[WebFrame _convertToDOMRange:rangeIsRelativeTo:]):
        * WebView/WebFrameInternal.h:
        * WebView/WebFullScreenController.h:
        * WebView/WebFullScreenController.mm:
        (-[WebFullScreenController setElement:]):
        * WebView/WebGeolocationPosition.mm:
        (-[WebGeolocationPositionInternal initWithCoreGeolocationPosition:]):
        (-[WebGeolocationPosition initWithGeolocationPosition:]):
        * WebView/WebHTMLView.mm:
        (currentKeyboardEvent):
        * WebView/WebResource.mm:
        * WebView/WebScriptWorld.mm:
        (-[WebScriptWorld initWithWorld:]):
        (+[WebScriptWorld standardWorld]):
        (+[WebScriptWorld findOrCreateWorld:]):
        * WebView/WebViewData.h:
        (LayerFlushController::create):

2017-05-11  Chris Dumez  <cdumez@apple.com>

        Drop remaining uses of PassRefPtr in WebCore
        https://bugs.webkit.org/show_bug.cgi?id=172013

        Reviewed by Yusuke Suzuki.

        * Plugins/Hosted/NetscapePluginInstanceProxy.h:
        * Plugins/Hosted/NetscapePluginInstanceProxy.mm:
        (WebKit::NetscapePluginInstanceProxy::demarshalValueFromArray):
        (WebKit::NetscapePluginInstanceProxy::createBindingsInstance):
        * Plugins/Hosted/WebHostedNetscapePluginView.mm:
        (-[WebHostedNetscapePluginView createPluginBindingsInstance:]):

2017-05-11  Tim Horton  <timothy_horton@apple.com>

        Mail spins launching spell checker when typing
        https://bugs.webkit.org/show_bug.cgi?id=171986
        <rdar://problem/26305327>

        Reviewed by Beth Dakin.

        * WebView/WebView.mm:
        (-[WebView setEditable:]):
        Asynchronously pre-warm the spell checker when a WebView becomes editable.

2017-05-09  Sam Weinig  <sam@webkit.org>

        Remove support for legacy Notifications
        https://bugs.webkit.org/show_bug.cgi?id=171487

        Reviewed by Jon Lee.

        * Configurations/FeatureDefines.xcconfig:
        * WebCoreSupport/WebNotificationClient.h:
        * WebCoreSupport/WebNotificationClient.mm:
        * WebView/WebNotification.mm:
        * WebView/WebNotificationInternal.h:
        * WebView/WebView.mm:
        (-[WebView _commonInitializationWithFrameName:groupName:]):
        (-[WebView _notificationIDForTesting:]):
        Remove legacy notification specific code.

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

        Simplify relationship between Attr and Element now that Attr is childless
        https://bugs.webkit.org/show_bug.cgi?id=171909

        Reviewed by Ryosuke Niwa.

        Build fix.

        * DOM/DOMAttr.mm:
        (-[DOMAttr value]):
        (-[DOMAttr setValue:]):

2017-05-08  Chris Dumez  <cdumez@apple.com>

        Move 'style' from Element to HTMLElement / SVGElement and make it settable
        https://bugs.webkit.org/show_bug.cgi?id=171795

        Reviewed by Alex Christensen.

        Build fix.

        * DOM/DOMElement.mm:
        (-[DOMElement style]):
        * WebCoreSupport/WebEditorClient.mm:
        (WebEditorClient::shouldApplyStyle):
        * WebView/WebFrame.mm:
        (-[WebFrame _typingStyle]):

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

        Align our IDL files with the latest DOM specification
        https://bugs.webkit.org/show_bug.cgi?id=171777

        Reviewed by Sam Weinig.

        Build fix.

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

2017-05-05  Jeremy Jones  <jeremyj@apple.com>

        REGRESSION (r215951): LayoutTest media/modern-media-controls/placard-support/placard-support-pip.html is a flaky crash
        https://bugs.webkit.org/show_bug.cgi?id=171610
        <rdar://problem/31976820>

        Reviewed by Eric Carlson.

        Fullscreen state gets confused because WK1 WebChromeClient doesn't implement exitVideoFullscreenToModeWithoutAnimation.

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

2017-05-04  Commit Queue  <commit-queue@webkit.org>

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

        Multiple LayoutTests crashing in Document::page() (Requested
        by ap on #webkit).

        Reverted changeset:

        "Remove support for legacy Notifications"
        https://bugs.webkit.org/show_bug.cgi?id=171487
        http://trac.webkit.org/changeset/216206

2017-05-04  Jeremy Jones  <jeremyj@apple.com>

        UIColor +whiteColor and +clearColor are ambiguous and need to be casted when soft linked.
        https://bugs.webkit.org/show_bug.cgi?id=171704

        Reviewed by Jer Noble.

        Fix build by casting result of +whiteColor to UIColor.

        * WebView/WebView.mm:
        (-[WebView _createImageWithPlatterForImage:boundingRect:contentScaleFactor:clippingRects:]):

2017-05-04  Sam Weinig  <sam@webkit.org>

        Remove support for legacy Notifications
        https://bugs.webkit.org/show_bug.cgi?id=171487

        Reviewed by Jon Lee.

        * Configurations/FeatureDefines.xcconfig:
        * WebCoreSupport/WebNotificationClient.h:
        * WebCoreSupport/WebNotificationClient.mm:
        * WebView/WebNotification.mm:
        * WebView/WebNotificationInternal.h:
        * WebView/WebView.mm:
        (-[WebView _commonInitializationWithFrameName:groupName:]):
        (-[WebView _notificationIDForTesting:]):
        Remove legacy notification specific code.

2017-05-03  Joseph Pecoraro  <pecoraro@apple.com>

        [Cocoa] Stop exporting symbols for ivars that were made private
        https://bugs.webkit.org/show_bug.cgi?id=171631

        Reviewed by Dan Bernstein.

        * WebKit.exp:

2017-05-01  Chris Dumez  <cdumez@apple.com>

        Remove some usage of PassRefPtr in editing code
        https://bugs.webkit.org/show_bug.cgi?id=171490

        Reviewed by Darin Adler.

        * WebView/WebFrame.mm:
        (-[WebFrame dictationResultMetadataForRange:]):
        (-[WebFrame _replaceSelectionWithFragment:selectReplacement:smartReplace:matchStyle:]):

2017-05-01  Beth Dakin  <bdakin@apple.com>

        On-screen panel for candidate bar is in the wrong place when the caret is at the 
        start of a paragraph
        https://bugs.webkit.org/show_bug.cgi?id=171453
        -and corresponding-
        rdar://problem/29779764

        Reviewed by Tim Horton.

        This bug only happens when the caret is at the beginning of the paragraph, and it 
        is because Range::absoluteTextQuads() returns no quads in this case. I think it 
        might be correct that absoluteTextQuads() returns no quads in this case, so this 
        patch fixes the bug at the call site by using absoluteCaretBounds() in this case.

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

2017-04-30  Dan Bernstein  <mitz@apple.com>

        [Cocoa] Replaces uses of [get…() alloc] with alloc…Instance()
        https://bugs.webkit.org/show_bug.cgi?id=171485

        Reviewed by Geoffrey Garen.

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

2017-04-28  Youenn Fablet  <youenn@apple.com>

        Adding a runtime flag specific to MediaDevices
        https://bugs.webkit.org/show_bug.cgi?id=171433

        Reviewed by Geoffrey Garen.

        Adding a preference for MediaDevices.
        Setting media devices runtime flag to false by default.
        Setting peer connection and media stream flags to true by default.

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

2017-04-27  Chris Dumez  <cdumez@apple.com>

        Align colspan/rowspan limits with the latest HTML specification
        https://bugs.webkit.org/show_bug.cgi?id=171322

        Reviewed by Darin Adler.

        ObjC bindings build fix.

        * DOM/DOMHTMLTableCellElement.mm:
        (-[DOMHTMLTableCellElement colSpan]):
        (-[DOMHTMLTableCellElement setColSpan:]):

2017-04-27  Said Abou-Hallawa  <sabouhallawa@apple.com>

        REGRESSION(r213764): Async decoding of animated images is disabled for ImageDocument
        https://bugs.webkit.org/show_bug.cgi?id=170333

        Reviewed by Simon Fraser.

        Disbale the async decoding for large images for now.

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

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

        Modernize Frame.h
        https://bugs.webkit.org/show_bug.cgi?id=171357

        Reviewed by Andy Estes.

        * WebCoreSupport/WebEditorClient.h:
        * WebCoreSupport/WebEditorClient.mm:
        (WebEditorClient::isSelectTrailingWhitespaceEnabled):

2017-04-27  Wenson Hsieh  <wenson_hsieh@apple.com>

        [WK1] Tweak the data interaction SPI to indicate whether or not a data interaction was handled
        https://bugs.webkit.org/show_bug.cgi?id=171369
        <rdar://problem/31858853>

        Reviewed by Dan Bernstein.

        Introduce a new SPI hook intended to replace performDataInteraction:client:global:operation: that
        returns whether or not the data interaction was handled. Due to the difference only in return type
        and some staging constraints, this version is prefixed with "_tryTo".

        * WebView/WebView.mm:
        (-[WebView _tryToPerformDataInteraction:client:global:operation:]):
        * WebView/WebViewPrivate.h:

2017-04-26  Wenson Hsieh  <wenson_hsieh@apple.com>

        WebItemProviderPasteboard should not synchronously load provided data
        https://bugs.webkit.org/show_bug.cgi?id=171341
        <rdar://problem/31614010>

        Reviewed by Tim Horton.

        Adds client-layer plumbing for updatePreferredTypeIdentifiers. See WebCore ChangeLog for more details.

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

2017-04-26  Zalan Bujtas  <zalan@apple.com>

        RTL: recent searches popover is displayed in incorrect location
        https://bugs.webkit.org/show_bug.cgi?id=171338
        <rdar://problem/31377807>

        Reviewed by Dean Jackson.

        Add RTL support for the pop-under branch.

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

2017-04-25  Brent Fulgham  <bfulgham@apple.com>

        Limit allowed size of document.title to avoid locking WebKit clients
        https://bugs.webkit.org/show_bug.cgi?id=165113
        <rdar://problem/28324389>

        Reviewed by Darin Adler.

        When a web application attempts to set an extremely long title, truncate the
        title to a more reasonable size.

        We do this at at the presentation layer, rather than in the DOM, so that we do
        not affect script function. Instead, we merely limit display to a level that is
        reasonable for normal GUI widgets. Anything else needs to be truncated in the UI
        layer, so it is a waste of effort to send across IPC.

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

2017-04-25  Daniel Bates  <dabates@apple.com>

        [Cocoa][Win] Enable of X-Content-Type-Options: nosniff header
        https://bugs.webkit.org/show_bug.cgi?id=136452
        <rdar://problem/23412620>

        Reviewed by Brent Fulgham.

        Enable X-Content-Type-Options: nosniff on Mac, iOS and Windows platforms.

        * Configurations/FeatureDefines.xcconfig:

2017-04-25  Wenson Hsieh  <wenson_hsieh@apple.com>

        Support reading NSURL titles from the pasteboard when performing data interaction
        https://bugs.webkit.org/show_bug.cgi?id=171156
        <rdar://problem/31356937>

        Reviewed by Tim Horton.

        Add a new WK1 SPI property, -[WebFrame hasRichlyEditableDragCaret].

        * WebCoreSupport/WebPlatformStrategies.h:
        * WebCoreSupport/WebPlatformStrategies.mm:
        (WebPlatformStrategies::readURLFromPasteboard):
        * WebView/WebFrame.mm:
        (-[WebFrame hasRichlyEditableDragCaret]):
        * WebView/WebFramePrivate.h:

2017-04-24  Andy VanWagoner  <thetalecrafter@gmail.com>

        Clean up ICU headers
        https://bugs.webkit.org/show_bug.cgi?id=170997

        Reviewed by JF Bastien.

        Update all icu headers to 55.1

        * icu/README: Explain ICU headers for OS X better
        * icu/unicode/localpointer.h:
        (LocalPointer::LocalPointer):
        (LocalPointer::adoptInsteadAndCheckErrorCode):
        * icu/unicode/platform.h:
        * icu/unicode/putil.h:
        * icu/unicode/uchar.h:
        * icu/unicode/uconfig.h:
        * icu/unicode/ucurr.h:
        * icu/unicode/uidna.h:
        * icu/unicode/umachine.h:
        * icu/unicode/urename.h:
        * icu/unicode/uscript.h:
        * icu/unicode/ustring.h:
        * icu/unicode/utf8.h:
        * icu/unicode/utypes.h:
        * icu/unicode/uvernum.h:

2017-04-24  Wenson Hsieh  <wenson_hsieh@apple.com>

        Respect fidelity order when reading web content from item providers
        https://bugs.webkit.org/show_bug.cgi?id=171155
        <rdar://problem/31356937>

        Reviewed by Tim Horton.

        Adjusts for changes in WebCore (see WebCore/ChangeLog for more details).

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

2017-04-24  Alex Christensen  <achristensen@webkit.org>

        Reduce copies and allocations in SharedBuffer::append
        https://bugs.webkit.org/show_bug.cgi?id=170956

        Reviewed by Andreas Kling.

        * WebView/WebArchive.mm:
        (-[WebArchive initWithData:]):
        * WebView/WebFrame.mm:
        (-[WebFrame _loadData:MIMEType:textEncodingName:baseURL:unreachableURL:]):
        * WebView/WebResource.mm:
        (-[WebResource initWithCoder:]):
        (-[WebResource _initWithData:URL:MIMEType:textEncodingName:frameName:response:copyData:]):

2017-04-24  Dan Bernstein  <mitz@apple.com>

        [Cocoa] Some ivars are needlessly @protected
        https://bugs.webkit.org/show_bug.cgi?id=171208

        Reviewed by Anders Carlsson

        Made ivars @private where possible.

        * Misc/WebUserContentURLPattern.h:
        * Plugins/WebPluginDatabase.h:
        * Storage/WebDatabaseQuotaManager.h:
        * WebCoreSupport/WebSecurityOriginPrivate.h:
        * WebInspector/WebInspector.h:
        * WebView/WebDeviceOrientation.h:
        * WebView/WebDeviceOrientationProviderMock.h:
        * WebView/WebGeolocationPosition.h:
        * WebView/WebHTMLRepresentation.h:
        * WebView/WebNotification.h:

2017-04-21  Wenson Hsieh  <wenson_hsieh@apple.com>

        Support writing link titles to the pasteboard when beginning data interaction on a link
        https://bugs.webkit.org/show_bug.cgi?id=171154
        <rdar://problem/31356937>

        Reviewed by Andy Estes.

        Adjust for some changes in WebCore to introduce a separate codepath for writing PasteboardURLs. See WebCore
        and WebKit2 ChangeLogs for more details.

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

2017-04-21  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed, rolling out r215608.

        Hundreds of test failures on GTK bot

        Reverted changeset:

        "Reduce copies and allocations in SharedBuffer::append"
        https://bugs.webkit.org/show_bug.cgi?id=170956
        http://trac.webkit.org/changeset/215608

2017-04-21  Alex Christensen  <achristensen@webkit.org>

        Reduce copies and allocations in SharedBuffer::append
        https://bugs.webkit.org/show_bug.cgi?id=170956

        Reviewed by Andreas Kling.

        * WebView/WebArchive.mm:
        (-[WebArchive initWithData:]):
        * WebView/WebFrame.mm:
        (-[WebFrame _loadData:MIMEType:textEncodingName:baseURL:unreachableURL:]):
        * WebView/WebResource.mm:
        (-[WebResource initWithCoder:]):
        (-[WebResource _initWithData:URL:MIMEType:textEncodingName:frameName:response:copyData:]):

2017-04-20  Dewei Zhu  <dewei_zhu@apple.com>

        Build fix to start using C++14.
        https://bugs.webkit.org/show_bug.cgi?id=171038

        Reviewed by Alex Christensen.

        Use 'c++14' instead of 'c++11' in order to use 'auto' in lambda.

        * Configurations/WebKitLegacy.xcconfig:

2017-04-19  Youenn Fablet  <youenn@apple.com>

        [Mac] Allow customizing H264 encoder
        https://bugs.webkit.org/show_bug.cgi?id=170829

        Reviewed by Alex Christensen.

        * Configurations/FeatureDefines.xcconfig:

2017-04-19  Anders Carlsson  <andersca@apple.com>

        Stop using deprecated APIs, part 3
        https://bugs.webkit.org/show_bug.cgi?id=171003
        rdar://problem/31589635

        Reviewed by Tim Horton.

        * WebCoreSupport/WebPaymentCoordinatorClient.h:
        * WebCoreSupport/WebPaymentCoordinatorClient.mm:
        (WebPaymentCoordinatorClient::cancelPaymentSession):
        Update for WebCore changes.

2017-04-18  Wenson Hsieh  <wenson_hsieh@apple.com>

        [WK2] Support DataTransfer::files() when performing a DHTML data interaction
        https://bugs.webkit.org/show_bug.cgi?id=170880
        <rdar://problem/31314689>

        Reviewed by Tim Horton.

        Adjust for a change in PasteboardStrategy. See WebCore ChangeLog for more details.

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

2017-04-17  Youenn Fablet  <youenn@apple.com>

        Disable outdated WritableStream API
        https://bugs.webkit.org/show_bug.cgi?id=170749
        <rdar://problem/31446233>

        Reviewed by Alex Christensen.

        Replacing READABLE_STREAM_API, READABLE_BYTE_STREAM_API and WRITABLE_STREAM_API compilation flag by:
        - A STREAMS_API compilation flag.
        - A ReadableByteStreamAPI and WritableStreamAPI runtime flags, turned off except for RWT and DRT.

        * Configurations/FeatureDefines.xcconfig:
        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):
        (-[WebPreferences readableByteStreamAPIEnabled]):
        (-[WebPreferences setReadableByteStreamAPIEnabled:]):
        (-[WebPreferences writableStreamAPIEnabled]):
        (-[WebPreferences setWritableStreamAPIEnabled:]):
        * WebView/WebPreferencesPrivate.h:
        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]):

2017-04-15  Wenson Hsieh  <wenson_hsieh@apple.com>

        [WK2] Support data interaction of files into file inputs
        https://bugs.webkit.org/show_bug.cgi?id=170803
        <rdar://problem/31286130>

        Reviewed by Tim Horton.

        Add boilerplate plumbing for fetching the number of files in the pasteboard.

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

2017-04-14  Mark Lam  <mark.lam@apple.com>

        Update architectures in xcconfig files.
        https://bugs.webkit.org/show_bug.cgi?id=170867
        <rdar://problem/31628104>

        Reviewed by Joseph Pecoraro.

        * Configurations/FeatureDefines.xcconfig:

2017-04-14  Wenson Hsieh  <wenson_hsieh@apple.com>

        [WK2] Support Icon creation from file URLs on iOS
        https://bugs.webkit.org/show_bug.cgi?id=170809
        <rdar://problem/31286130>

        Reviewed by Tim Horton.

        Adjust for changes in the ChromeClient in WebCore.

        * WebCoreSupport/WebChromeClient.h:
        * WebCoreSupport/WebChromeClient.mm:
        (WebChromeClient::loadIconForFiles):
        (WebChromeClient::createIconForFiles):

2017-04-12  Dan Bernstein  <mitz@apple.com>

        [Mac] Future-proof .xcconfig files
        https://bugs.webkit.org/show_bug.cgi?id=170802

        Reviewed by Tim Horton.

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

2017-04-12  Beth Dakin  <bdakin@apple.com>

        Build fix.

        * WebView/WebViewData.h:

2017-04-12  Brian Weinstein  <bweinstein@apple.com>

        Should always override -[WebStorageManager init].
        https://bugs.webkit.org/show_bug.cgi?id=170787
        -and corresponding-
        rdar://problem/31371835

        Reviewed by Anders Carlsson.

        * Storage/WebStorageManager.mm:
        (-[WebStorageManager init]):

2017-04-12  Beth Dakin  <bdakin@apple.com>

        Speculative build fix. 

        * WebView/WebViewData.h:

2017-04-12  Beth Dakin  <bdakin@apple.com>

        Adopt AVKit name change from AVFunctionBar* to AVTouchBar*
        https://bugs.webkit.org/show_bug.cgi?id=170693
        -and corresponding-
        rdar://problem/31230018

        Reviewed by Sam Weinig.

        Since the new names only apply to some versions of macOS, this patch uses typedefs 
        for the older OS’s. SO:

        AVFunctionBarScrubber is now AVTouchBarScrubber

        AVFunctionBarPlaybackControlsProvider is now AVTouchBarPlaybackControlsProvider

        AVFunctionBarMediaSelectionOption is now AVTouchBarMediaSelectionOption

        And the protocol AVFunctionBarPlaybackControlsControlling is now 
        AVTouchBarPlaybackControlsControlling

        Soft links and allocations cannot use the typedefs.
        * WebView/WebView.mm:
        (-[WebView updateMediaTouchBar]):
        * WebView/WebViewData.h:

2017-04-11  Dean Jackson  <dino@apple.com>

        Disable outdated WritableStream API
        https://bugs.webkit.org/show_bug.cgi?id=170749
        <rdar://problem/31446233>

        Reviewed by Tim Horton.

        The API we implement is no longer accurate. Disable it until we
        are compatible with the new specification

        * Configurations/FeatureDefines.xcconfig:

2017-04-11  Dan Bernstein  <mitz@apple.com>

        [iOS] Simple HTML documents should allow non-markup JavaScript
        https://bugs.webkit.org/show_bug.cgi?id=170734

        Reviewed by Sam Weinig.

        * WebView/WebView.mm:
        (-[WebView initSimpleHTMLDocumentWithStyle:frame:preferences:groupName:]): Enabled scripting
          but disabled scripting markup.

2017-04-10  Alex Christensen  <achristensen@webkit.org>

        Revert r215217
        https://bugs.webkit.org/show_bug.cgi?id=170703

        * Configurations/FeatureDefines.xcconfig:

2017-04-10  Alex Christensen  <achristensen@webkit.org>

        Continue enabling WebRTC
        https://bugs.webkit.org/show_bug.cgi?id=170703

        Reviewed by Youenn Fablet.

        * Configurations/FeatureDefines.xcconfig:

2017-04-10  Anders Carlsson  <andersca@apple.com>

        Remove call to WKShowKeyAndMain
        https://bugs.webkit.org/show_bug.cgi?id=170691
        rdar://problem/31050032

        Reviewed by Beth Dakin.

        * Carbon/CarbonWindowAdapter.mm:
        (-[CarbonWindowAdapter makeKeyWindow]):

2017-04-10  Jeremy Jones  <jeremyj@apple.com>

        Add CoreAudioCaptureSource.
        https://bugs.webkit.org/show_bug.cgi?id=170112
        rdar://problem/30293338

        Reviewed by Eric Carlson.

        Add UseAVFoundationAudioCapture preference to switch back from the new default of CoreAudio.

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

2017-04-10  Chris Dumez  <cdumez@apple.com>

        Drop Timer::startOneShot() overload taking a double
        https://bugs.webkit.org/show_bug.cgi?id=170659

        Reviewed by Yusuke Suzuki.

        Drop Timer::startOneShot() overload taking a double as people should use Seconds type now.

        * Plugins/WebNetscapePluginView.mm:
        (PluginTimer::start):
        * Storage/WebStorageManager.mm:
        (+[WebStorageManager setStorageDatabaseIdleInterval:]):

2017-04-09  Chris Dumez  <cdumez@apple.com>

        Drop Timer::startRepeating() overload taking a double
        https://bugs.webkit.org/show_bug.cgi?id=170656

        Reviewed by Yusuke Suzuki.

        Drop Timer::startRepeating() overload taking a double as people should use Seconds type now.

        * Plugins/WebNetscapePluginView.mm:
        (PluginTimer::start):

2017-04-09  Chris Dumez  <cdumez@apple.com>

        Start dropping Timer API dealing with double
        https://bugs.webkit.org/show_bug.cgi?id=170649

        Reviewed by Yusuke Suzuki.

        Start dropping Timer API dealing with double as people should use Seconds now.

        * Plugins/Hosted/NetscapePluginInstanceProxy.mm:
        (WebKit::NetscapePluginInstanceProxy::requestTimerFired):
        (WebKit::NetscapePluginInstanceProxy::loadRequest):
        * Plugins/WebNetscapePluginStream.mm:
        (WebNetscapePluginStream::deliverData):

2017-04-08  Chris Dumez  <cdumez@apple.com>

        Drop std::chrono support from Timer class
        https://bugs.webkit.org/show_bug.cgi?id=170645

        Reviewed by Sam Weinig.

        Drop std::chrono support from Timer class now that we prefer using Seconds type.

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

2017-04-08  Youenn Fablet  <youenn@apple.com>

        WebRTC tests gardening
        https://bugs.webkit.org/show_bug.cgi?id=170508

        Reviewed by Eric Carlson.

        * Configurations/FeatureDefines.xcconfig:

2017-04-06  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r215046.

        This change broke internal builds.

        Reverted changeset:

        "WebRTC tests gardening"
        https://bugs.webkit.org/show_bug.cgi?id=170508
        http://trac.webkit.org/changeset/215046

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

        Obj-C bindings build fails with CSS_DEVICE_ADAPTATION turned on
        https://bugs.webkit.org/show_bug.cgi?id=170566

        Reviewed by Simon Fraser.

        * DOM/DOMCSS.mm:
        (kitClass):
        Use the WebCore-side enum for this, since that's actually what we're switching over.
        This allows us to handle values here without adding them to the API header.
        All of the other kitClass() functions work the same way.
        Also, unindent for style purposes.

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

        WebRTC tests gardening
        https://bugs.webkit.org/show_bug.cgi?id=170508

        Reviewed by Eric Carlson.

        * Configurations/FeatureDefines.xcconfig:

2017-04-04  Megan Gardner  <megan_gardner@apple.com>

        Fix leaks in WebUITextIndicatorData
        https://bugs.webkit.org/show_bug.cgi?id=170480

        Reviewed by Wenson Hsieh.

        Removes extraneous retains.

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

2017-04-04  Tim Horton  <timothy_horton@apple.com>

        [Mac] -[WKWebView findMatchesForString:relativeToMatch:findOptions:maxResults:resultCollector:] invokes the resultCollector with didWrap = NO even when it wraps
        https://bugs.webkit.org/show_bug.cgi?id=165801
        <rdar://problem/29649535>

        Reviewed by Wenson Hsieh.

        * WebView/WebView.mm:
        (incrementFrame):
        Adjust to the new CanWrap enum.

2017-03-27  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Saving files should not suggest the top level directory
        https://bugs.webkit.org/show_bug.cgi?id=170085
        <rdar://problem/30197794>

        Reviewed by Matt Baker.

        * WebCoreSupport/WebInspectorClient.mm:
        (WebInspectorFrontendClient::save):
        Don't set panel.directoryURL unless we have a good suggestion.

2017-03-24  Wenson Hsieh  <wenson_hsieh@apple.com>

        [WK2] Add a UI delegate SPI hook to enable or disable navigation on drop
        https://bugs.webkit.org/show_bug.cgi?id=169168
        <rdar://problem/30688374>

        Reviewed by Tim Horton.

        Refactors WebDragClient::actionMaskForDrag to take platform data only, rather than the entire DragData. See the
        WebCore ChangeLog entry for more details. Also renames WebDefaultUIDelegate.m to WebDefaultUIDelegate.mm, since
        we need to import a C++ header for linkedOnOrAfter().

        The default delegate implementation of webView:dragDestinationActionMaskForDraggingInfo: now checks if the current
        application is linking against 10.12 or earlier, and if so, will allow any drag destination action instead of
        the new default value of everything but DragDestinationActionLoad.

        * DefaultDelegates/WebDefaultUIDelegate.mm: Renamed from Source/WebKit/mac/DefaultDelegates/WebDefaultUIDelegate.m.
        (-[WebDefaultUIDelegate webView:dragDestinationActionMaskForDraggingInfo:]):
        * Misc/WebKitVersionChecks.h:
        * WebCoreSupport/WebDragClient.h:
        * WebCoreSupport/WebDragClient.mm:
        (WebDragClient::actionMaskForDrag): Deleted.
        * WebView/WebView.mm:
        (-[WebView draggingEntered:]):
        (-[WebView draggingUpdated:]):

2017-03-21  Wenson Hsieh  <wenson_hsieh@apple.com>

        Add support for showing the platform data interaction caret
        https://bugs.webkit.org/show_bug.cgi?id=169898
        <rdar://problem/31146295>

        Reviewed by Beth Dakin.

        Plumb the dataInteractionCaretRect through WebView SPI to WebKit1 clients.

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

2017-03-22  Dan Bernstein  <mitz@apple.com>

        [iOS] downloadableBinaryFontsEnabled is set to false in -initSimpleHTMLDocumentWithStyle:frame:preferences:groupName:
        https://bugs.webkit.org/show_bug.cgi?id=169967
        <rdar://problem/30406898>

        Reviewed by Anders Carlsson.

        * WebView/WebView.mm:
        (-[WebView initSimpleHTMLDocumentWithStyle:frame:preferences:groupName:]): Removed call to
          Settings::downloadableBinaryFontsEnabled. The default is true.

2017-03-22  Andy Estes  <aestes@apple.com>

        [QuickLook] Rename QuickLookHandle to PreviewLoader
        https://bugs.webkit.org/show_bug.cgi?id=169961

        Reviewed by Andreas Kling.

        * WebCoreSupport/WebFrameLoaderClient.h:
        * WebCoreSupport/WebFrameLoaderClient.mm:
        (WebFrameLoaderClient::createPreviewLoaderClient):
        (WebFrameLoaderClient::createQuickLookHandleClient): Deleted.

2017-03-21  Anders Carlsson  <andersca@apple.com>

        Remove bogus availability annotations from DOM SPI headers.
        rdar://problem/31015675

        Rubber-stamped by Dan Bernstein.

        * DOM/DOMHTMLMediaElement.h:
        * DOM/DOMHTMLVideoElement.h:
        * DOM/DOMMediaError.h:
        * DOM/DOMTextEvent.h:
        * DOM/DOMTimeRanges.h:
        * DOM/DOMTokenList.h:

2017-03-19  Wenson Hsieh  <wenson_hsieh@apple.com>

        Teach TextIndicator to estimate the background color of the given Range
        https://bugs.webkit.org/show_bug.cgi?id=169869
        <rdar://problem/31127272>

        Reviewed by Anders Carlsson and Simon Fraser.

        Plumb the estimated background color for WebKit1 clients through a new property in WebUITextIndicatorData.

        * WebView/WebView.mm:
        (-[WebUITextIndicatorData initWithImage:textIndicatorData:scale:]):
        (-[WebUITextIndicatorData dealloc]):
        * WebView/WebViewPrivate.h:

2017-03-20  Dan Bernstein  <mitz@apple.com>

        [Xcode] Incremental builds of WebKitLegacy are slow because of the Postprocess Headers phase
        https://bugs.webkit.org/show_bug.cgi?id=169861

        Reviewed by Sam Weinig.

        * MigrateHeaders.make: Touch the PrivateHeaders directory when migrating a header into it.
        * postprocess-headers.sh: Preserve the timestamp on the headers directories. Write out the
          timestamp file used by the Xcode project to determine whether to run the script.

2017-03-19  Alexey Proskuryakov  <ap@apple.com>

        WebHTMLView is useless as WebResourceHandler
        https://bugs.webkit.org/show_bug.cgi?id=169857

        Reviewed by Dan Bernstein.

        * WebView/WebHTMLView.mm:
        (-[WebHTMLView _documentFragmentFromPasteboard:forType:inContext:subresources:]):
        WebHTMLView doesnt implement any of WebResourceHandler methods.

2017-03-17  Michael Saboff  <msaboff@apple.com>

        Use USE_INTERNAL_SDK to compute ENABLE_FAST_JIT_PERMISSIONS instead of HAVE_INTERNAL_SDK
        https://bugs.webkit.org/show_bug.cgi?id=169817

        Reviewed by Filip Pizlo.

        * Configurations/FeatureDefines.xcconfig:

2017-03-17  Antti Koivisto  <antti@apple.com>

        Add a reload policy where only expired subresources are revalidated
        https://bugs.webkit.org/show_bug.cgi?id=169756

        Reviewed by Andreas Kling.

        * WebView/WebFrame.mm:
        (toWebFrameLoadType):
        (-[WebFrame reload]):
        (-[WebFrame reloadFromOrigin]):

2017-03-17  Wenson Hsieh  <wenson_hsieh@apple.com>

        [WK1] Support animated transitions when performing a data interaction operation
        https://bugs.webkit.org/show_bug.cgi?id=169805
        <rdar://problem/31045767>

        Reviewed by Beth Dakin and Megan Gardner.

        Adds WebKit1 support for animated transitions when performing a data interaction operation. See per-method changes
        for more details.

        * DOM/DOMElement.h:
        * DOM/DOMElement.mm:
        (-[DOMElement boundsInRootViewSpace]):

        Introduce -[DOMElement boundsInRootViewSpace], which returns the bounds of the element in root view coordinates.

        * WebCoreSupport/WebDragClient.h:
        (): Deleted.
        * WebCoreSupport/WebDragClient.mm:
        (WebDragClient::didConcludeEditDrag):

        Add boilerplate plumbing.

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

        Add contentImageWithoutSelection and contentImageWithoutSelectionRectInRootViewCoordinates to WebUITextIndicatorData.

        (floatRectsForCGRectArray):
        (-[WebView _createImageWithPlatterForImage:boundingRect:contentScaleFactor:clippingRects:]):

        Introduces a SPI helper method in WebView that clients can use to generate an image of a text platter given an
        image of some text, as well as clipping rects to apply to the image.

        (-[WebView _dataOperationTextIndicator]):

        Add SPI to fetch the text indicator used to drive animations for the current data operation.

        (-[WebView _didConcludeEditDataInteraction]):
        * WebView/WebViewData.h:
        * WebView/WebViewInternal.h:
        * WebView/WebViewPrivate.h:

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

        Improve the system tracing points
        https://bugs.webkit.org/show_bug.cgi?id=169790

        Reviewed by Zalan Bujtas.

        Use a more cohesive set of system trace points that give a good overview of what
        WebKit is doing. Added points for resource loading, render tree building, sync messages
        to the web process, async image decode, WASM and fetching cookies.

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

2017-03-16  Youenn Fablet  <youenn@apple.com>

        Wrap legacy WebRTC API in runtime flag
        https://bugs.webkit.org/show_bug.cgi?id=169646

        Reviewed by Alex Christensen.

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

2017-03-14  Megan Gardner  <megan_gardner@apple.com>

        Correctly export WebItemProviderPasteboard
        https://bugs.webkit.org/show_bug.cgi?id=169578

        Reviewed by Tim Horton.

        * MigrateHeaders.make:

2017-03-14  Wenson Hsieh  <wenson_hsieh@apple.com>

        [WK2] Data interaction tests occasionally hit assertions in debug builds
        https://bugs.webkit.org/show_bug.cgi?id=169002
        <rdar://problem/30994806>

        Reviewed by Tim Horton.

        Renames setIgnoreCompositionSelectionChange to setIgnoreSelectionChanges. See WebCore ChangeLog for more details.

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

2017-03-13  Anders Carlsson  <andersca@apple.com>

        Fix build warnings.

        * WebCoreSupport/WebInspectorClient.mm:
        (WebInspectorFrontendClient::save):
        (-[WebInspectorWindowController webView:runOpenPanelForFileButtonWithResultListener:allowMultipleFiles:]):

2017-03-11  Brady Eidson  <beidson@apple.com>

        Cleanup "addCookie" and its sole user.
        https://bugs.webkit.org/show_bug.cgi?id=169486

        Reviewed by Brian Burg.

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

2017-03-10  Alex Christensen  <achristensen@webkit.org>

        Fix watch and tv builds after r213294
        https://bugs.webkit.org/show_bug.cgi?id=169508

        Reviewed by Dan Bernstein.

        * Configurations/FeatureDefines.xcconfig:

2017-03-10  Alex Christensen  <achristensen@webkit.org>

        Fix CMake build.

        * WebView/WebNotification.h:
        Don't assume we have already included something that includes NSObject.h.

2017-03-09  Daniel Bates  <dabates@apple.com>

        Guard Credential Management implementation behind a runtime enabled feature flag
        https://bugs.webkit.org/show_bug.cgi?id=169364
        <rdar://problem/30957425>

        Reviewed by Brent Fulgham.

        Add WebKit preference for Credential Management (disabled by default).

        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):
        (-[WebPreferences credentialManagementEnabled]): Added.
        (-[WebPreferences setCredentialManagementEnabled:]): Added.
        * WebView/WebPreferencesPrivate.h:
        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]):

2017-03-09  Anders Carlsson  <andersca@apple.com>

        Add delegate support to WebCore
        https://bugs.webkit.org/show_bug.cgi?id=169427
        Part of rdar://problem/28880714.

        Reviewed by Geoffrey Garen.

        * Configurations/FeatureDefines.xcconfig:
        Add feature define.

2017-03-08  Megan Gardner  <megan_gardner@apple.com>

        Fix DataInteraction guards
        https://bugs.webkit.org/show_bug.cgi?id=169404

        Reviewed by Wenson Hsieh.

        * WebCoreSupport/WebDragClient.mm:

2017-03-08  Wenson Hsieh  <wenson_hsieh@apple.com>

        Add plumbing for WebCore to notify WebKit2 when an edit drag has concluded
        https://bugs.webkit.org/show_bug.cgi?id=169392
        <rdar://problem/30882974>

        Reviewed by Tim Horton.

        Add a stub implementation of WebDragClient::didConcludeEditDrag.

        * WebCoreSupport/WebDragClient.h:

2017-03-08  Anders Carlsson  <andersca@apple.com>

        Simplify the PaymentCoordinator interface
        https://bugs.webkit.org/show_bug.cgi?id=169382
        Part of rdar://problem/28880714.

        Reviewed by Tim Horton.

        Update for PaymentCoordinatorClient changes.

        * WebCoreSupport/WebPaymentCoordinatorClient.h:
        * WebCoreSupport/WebPaymentCoordinatorClient.mm:
        (WebPaymentCoordinatorClient::completeShippingMethodSelection):
        (WebPaymentCoordinatorClient::completeShippingContactSelection):
        (WebPaymentCoordinatorClient::completePaymentMethodSelection):
        (WebPaymentCoordinatorClient::completePaymentSession):

2017-03-08  Megan Gardner  <megan_gardner@apple.com>

        Fix for dependency fix
        https://bugs.webkit.org/show_bug.cgi?id=169369

        Reviewed by Beth Dakin.

        * WebView/WebViewPrivate.h:

2017-03-07  Megan Gardner  <megan_gardner@apple.com>

        Fix Project Dependency
        https://bugs.webkit.org/show_bug.cgi?id=169340

        Unreviewed Dependency Fix.

        * WebView/WebViewPrivate.h:

2017-03-07  Alexey Proskuryakov  <ap@apple.com>

        WebKitLegacy should re-export symbols from WebCore on watchos and tvos
        https://bugs.webkit.org/show_bug.cgi?id=169341
        <rdar://problem/30913788>

        Reviewed by Dan Bernstein.

        * MigrateHeaders.make:

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

        Have fixedPositionCreatesStackingContext be on by default everywhere
        https://bugs.webkit.org/show_bug.cgi?id=169334

        Reviewed by Zalan Bujtas.

        It makes no sense to have web-exposed CSS functionality be different based on setting,
        and other browser are now aligned with having position:fixed create stacking context.

        So remove the fixedPositionCreatesStackingContext setting and have StyleResolver::adjustRenderStyle()
        always force stacking context for position:fixed.

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

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

        Initialize the subpixelAntialiasedLayerTextEnabled Setting in WebKit1
        https://bugs.webkit.org/show_bug.cgi?id=169230

        Reviewed by Tim Horton.

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

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

        Enable SubpixelAntialiasedLayerTextEnabled by default on some versions of macOS
        https://bugs.webkit.org/show_bug.cgi?id=169329

        Reviewed by Tim Horton.

        If the macOS version is > 101300, enable subpixelAntialiasedLayerTextEnabled.

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

2017-03-07  Megan Gardner  <megan_gardner@apple.com>

        Additional DataInteraction Support
        https://bugs.webkit.org/show_bug.cgi?id=169316
        <rdar://problem/30884234>

        Reviewed by Wenson Hsieh.

        Add stub implementations to WebView for methods that handle data interaction

        * WebView/WebView.mm:
        (-[WebView _enteredDataInteraction:client:global:operation:]):
        (-[WebView _updatedDataInteraction:client:global:operation:]):
        (-[WebView _exitedDataInteraction:client:global:operation:]):
        (-[WebView _performDataInteraction:client:global:operation:]):
        (-[WebView _endedDataInteraction:global:]):
        * WebView/WebViewPrivate.h:

2017-03-07  Dean Jackson  <dino@apple.com>

        Some platforms won't be able to create a GPUDevice
        https://bugs.webkit.org/show_bug.cgi?id=169314
        <rdar://problems/30907521>

        Reviewed by Jon Lee.

        Disable WEB_GPU on the iOS Simulator.

        * Configurations/FeatureDefines.xcconfig:

2017-03-07  Maureen Daum  <mdaum@apple.com>

        Correctly check for an empty database file.
        <rdar://problem/30542242> Removing Website Data not working (WebSQL directories being left behind)
        https://bugs.webkit.org/show_bug.cgi?id=169256

        Reviewed by Brady Eidson.

        Check if the folder for an origin's WebSQL databases is empty after trying to delete
        all of its files. Currently we check if the deletedDatabaseFileCount matches the number
        of files that were in the folder. However, when we delete the actual database file in
        DatabaseTracker::deleteDatabaseFileIfEmpty(), the shm and wal files get deleted along with
        the database file, but deletedDatabaseFileCount only gets incremented once.

        * Storage/WebDatabaseManager.mm:
        (+[WebDatabaseManager removeEmptyDatabaseFiles]):
        Delete the folder if it is empty.

2017-03-06  Michael Saboff  <msaboff@apple.com>

        Unreviewed build fix to add
        -isystem $(SDKROOT)/System/Library/Frameworks/System.framework/PrivateHeaders
        for objective C++ files.

        * Configurations/WebKitLegacy.xcconfig:

2017-03-06  Michael Saboff  <msaboff@apple.com>

        Take advantage of fast permissions switching of JIT memory for devices that support it
        https://bugs.webkit.org/show_bug.cgi?id=169155

        Reviewed by Saam Barati.

        Updated the Xcode config files to match what is in the JavaScriptCore ones.

        * Configurations/FeatureDefines.xcconfig:

2017-03-06  Myles C. Maxfield  <mmaxfield@apple.com>

        Expand font-weight and font-stretch to take any number
        https://bugs.webkit.org/show_bug.cgi?id=168889

        Reviewed by Simon Fraser.

        Migrate off old enum types.

        * WebCoreSupport/PopupMenuMac.mm:
        (PopupMenuMac::populate):
        * WebView/WebHTMLView.mm:
        (fontNameForDescription):
        * WebView/WebView.mm:
        (-[WebView updateTextTouchBar]):

2017-03-03  Dean Jackson  <dino@apple.com>

        Add WebGPU compile flag and experimental feature flag
        https://bugs.webkit.org/show_bug.cgi?id=169161
        <rdar://problem/30846689>

        Reviewed by Tim Horton.

        Add ENABLE_WEBGPU, an experimental feature flag, a RuntimeEnabledFeature,
        and an InternalSetting.

        * Configurations/FeatureDefines.xcconfig:
        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):
        (-[WebPreferences webGPUEnabled]):
        (-[WebPreferences setWebGPUEnabled:]):
        * WebView/WebPreferencesPrivate.h:
        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]):

2017-03-03  Alexey Proskuryakov  <ap@apple.com>

        Build fix
        rdar://problem/30825660

        Suggested by Dan Bernstein.

        * Configurations/WebKitLegacy.xcconfig:

2017-03-02  Sam Weinig  <sam@webkit.org>

        Rename htmlediting.h/cpp to Editing.h/cpp
        https://bugs.webkit.org/show_bug.cgi?id=169103

        Reviewed by Alex Christensen.

        * DOM/DOMUIKitExtensions.mm:
        * WebView/WebFrame.mm:
        * WebView/WebView.mm:

2017-03-02  Megan Gardner  <megan_gardner@apple.com>

        Fix 32-bit
        https://bugs.webkit.org/show_bug.cgi?id=169114

        Reviewed by Alex Christensen.

        * WebView/WebView.mm:

2017-03-02  Megan Gardner  <megan_gardner@apple.com>

        More guard fixing
        https://bugs.webkit.org/show_bug.cgi?id=169112

        Reviewed by Alex Christensen.

        Fixed an internal build.

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

2017-03-02  Megan Gardner  <megan_gardner@apple.com>

        Data Interaction build fixes
        https://bugs.webkit.org/show_bug.cgi?id=169096

        Reviewed by Tim Horton.

        Guards weren't all correct, also missed a selector name change.

        * WebView/WebView.mm:
        (-[WebView _setDataInteractionData:textIndicator:atClientPosition:anchorPoint:action:]):
        * WebView/WebViewData.h:
        * WebView/WebViewData.mm:
        (-[WebViewPrivate dealloc]):

2017-03-02  Alex Christensen  <achristensen@webkit.org>

        Continue enabling WebRTC
        https://bugs.webkit.org/show_bug.cgi?id=169056

        Reviewed by Jon Lee.

        * Configurations/FeatureDefines.xcconfig:

2017-03-01  Megan Gardner  <megan_gardner@apple.com>

        Data interaction support for WK1
        https://bugs.webkit.org/show_bug.cgi?id=169062

        Reviewed by Wenson Hsieh.

        Support for data interaction in WebKit1

        * WebCoreSupport/WebDragClient.mm:
        * WebView/WebView.mm:
        (-[WebUITextIndicatorData initWithImage:TextIndicatorData:scale:]):
        (-[WebUITextIndicatorData initWithImage:scale:]):
        (-[WebUITextIndicatorData dealloc]):
        (-[WebView _requestStartDataInteraction:globalPosition:]):
        (-[WebView _setDataInteractionData:textIndicator:atClientPosition:anchorPoint:action:]):
        (-[WebView _getDataInteractionData]):
        * WebView/WebViewData.h:
        * WebView/WebViewData.mm:
        (-[WebViewPrivate dealloc]):
        * WebView/WebViewInternal.h:
        * WebView/WebViewPrivate.h:

2017-03-02  Youenn Fablet  <youenn@apple.com>

        [WebRTC] Activate ICE candidate privacy policy
        https://bugs.webkit.org/show_bug.cgi?id=168975

        Reviewed by Alex Christensen.

        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (-[WebPreferences enumeratingAllNetworkInterfacesEnabled]):
        (-[WebPreferences setEnumeratingAllNetworkInterfacesEnabled:]):
        (-[WebPreferences iceCandidateFilteringEnabled]):
        (-[WebPreferences setIceCandidateFilteringEnabled:]):
        * WebView/WebPreferencesPrivate.h:

2017-03-01  Alex Christensen  <achristensen@webkit.org>

        Unreviewed, rolling out r213259.

        Broke an internal build

        Reverted changeset:

        "Continue enabling WebRTC"
        https://bugs.webkit.org/show_bug.cgi?id=169056
        http://trac.webkit.org/changeset/213259

2017-03-01  Alex Christensen  <achristensen@webkit.org>

        Continue enabling WebRTC
        https://bugs.webkit.org/show_bug.cgi?id=169056

        Reviewed by Jon Lee.

        * Configurations/FeatureDefines.xcconfig:

2017-02-27  Alex Christensen  <achristensen@webkit.org>

        Begin enabling WebRTC on 64-bit
        https://bugs.webkit.org/show_bug.cgi?id=168915

        Reviewed by Eric Carlson.

        * Configurations/FeatureDefines.xcconfig:

2017-02-27  Aakash Jain  <aakash_jain@apple.com>

        Enable SUPPORTS_TEXT_BASED_API in WebKitLegacy for iOS
        https://bugs.webkit.org/show_bug.cgi?id=168919

        Reviewed by Tim Horton.

        * Configurations/WebKitLegacy.xcconfig: Enable SUPPORTS_TEXT_BASED_API.
        * migrate-headers.sh: Run the migrate-headers script for installapi phase.

2017-02-27  Alex Christensen  <achristensen@webkit.org>

        [libwebrtc] Enable WebRTC in some Production Builds
        https://bugs.webkit.org/show_bug.cgi?id=168858

        * Configurations/FeatureDefines.xcconfig:

2017-02-26  Alexey Proskuryakov  <ap@apple.com>

        Don't import RetainPtr in WebNotification.h
        https://bugs.webkit.org/show_bug.cgi?id=168876

        Reviewed by Dan Bernstein.

        This is an Objective-C SPI header.

        * WebView/WebNotification.h:
        * WebView/WebNotification.mm:
        (-[WebNotification initWithCoreNotification:notificationID:]):
        (-[WebNotification dealloc]):

2017-02-26  Aakash Jain  <aakash_jain@apple.com>

        Simplify EXPORTED_SYMBOLS_FILE variables in WebKitLegacy.xcconfig
        https://bugs.webkit.org/show_bug.cgi?id=168819

        Reviewed by Dan Bernstein.

        * Configurations/WebKitLegacy.xcconfig:

2017-02-22  Aakash Jain  <aakash_jain@apple.com>

        Export Objective-C symbols for variables in Webkit SPI
        https://bugs.webkit.org/show_bug.cgi?id=168758

        Reviewed by Alexey Proskuryakov.

        * Configurations/WebKitLegacy.xcconfig: using separate .exp file for i386.
        * WebKit.exp: Added various Objective-C symbols.

2017-02-22  Aakash Jain  <aakash_jain@apple.com>

        Move instance members from WKQuadObject to implementation file
        https://bugs.webkit.org/show_bug.cgi?id=168740

        Reviewed by Tim Horton.

        * DOM/DOM.mm: Moving instance member to implementation file.
        * DOM/DOMExtensions.h: Ditto.

2017-02-22  Aakash Jain  <aakash_jain@apple.com>

        Move iOS specific symbols to WebKit.ios.exp
        https://bugs.webkit.org/show_bug.cgi?id=168726

        Reviewed by Alexey Proskuryakov.

        * WebKit.exp:

2017-02-21  Youenn Fablet  <youenn@apple.com>

        [WebRTC][Mac] Activate libwebrtc
        https://bugs.webkit.org/show_bug.cgi?id=167293
        <rdar://problem/30401864>

        Reviewed by Alex Christensen.

        * Configurations/FeatureDefines.xcconfig:

2017-02-21  Aakash Jain  <aakash_jain@apple.com>

        Export various NSString symbols from WebFramePrivate.h
        https://bugs.webkit.org/show_bug.cgi?id=168702

        Reviewed by Alexey Proskuryakov.

        * WebKit.exp:

2017-02-21  Aakash Jain  <aakash_jain@apple.com>

        Export various NSString symbols from WebPreferencesPrivate.h
        https://bugs.webkit.org/show_bug.cgi?id=168701

        Reviewed by Alexey Proskuryakov.

        * WebKit.exp:

2017-02-21  Joseph Pecoraro  <pecoraro@apple.com>

        Add missing WebConsoleMessage string key
        https://bugs.webkit.org/show_bug.cgi?id=168690

        Reviewed by Alexey Proskuryakov.

        * WebKit.exp:
        * WebView/WebUIDelegatePrivate.h:
        This key has an implementation but was not extern / exported like the others.

2017-02-21  Aakash Jain  <aakash_jain@apple.com>

        Export various NSString symbols from WebViewPrivate.h
        https://bugs.webkit.org/show_bug.cgi?id=168689

        Reviewed by Alexey Proskuryakov.

        * WebKit.exp:

2017-02-21  Commit Queue  <commit-queue@webkit.org>

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

        Rolling out since this would break other projects. (Requested
        by aakashjain on #webkit).

        Reverted changeset:

        "[iOS] Remove old WebKit1 MemoryMeasure helper."
        https://bugs.webkit.org/show_bug.cgi?id=168675
        http://trac.webkit.org/changeset/212768

2017-02-20  Simon Fraser  <simon.fraser@apple.com>

        Add support to PlatformCALayer/GraphicsLayerCA for subpixel-antialiased text, with a Setting and a MiniBrowser switch
        https://bugs.webkit.org/show_bug.cgi?id=168620
        <rdar://problem/30617772>

        Reviewed by Tim Horton.

        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):
        (-[WebPreferences subpixelAntialiasedLayerTextEnabled]):
        (-[WebPreferences setSubpixelAntialiasedLayerTextEnabled:]):
        * WebView/WebPreferencesPrivate.h:

2017-02-21  Aakash Jain  <aakash_jain@apple.com>

        Export various NSString symbols from WebUIDelegatePrivate.h
        https://bugs.webkit.org/show_bug.cgi?id=168679

        Reviewed by Joseph Pecoraro.

        * WebKit.exp:

2017-02-21  Aakash Jain  <aakash_jain@apple.com>

        Export symbols for various classes present in webkit SPI
        https://bugs.webkit.org/show_bug.cgi?id=168674

        Reviewed by Dan Bernstein.

        * WebKit.exp:

2017-02-21  Andreas Kling  <akling@apple.com>

        [iOS] Remove old WebKit1 MemoryMeasure helper.
        <https://webkit.org/b/168675>

        Reviewed by Sam Weinig.

        * Configurations/WebKitLegacy.xcconfig:
        * Misc/WebCache.mm:
        (+[WebCache emptyInMemoryResources]):
        * WebView/WebView.mm:

2017-02-21  Andreas Kling  <akling@apple.com>

        [iOS] WebKit1 should use shared memory pressure handler code.
        <https://webkit.org/b/168653>

        Reviewed by Antti Koivisto.

        Register a WebThread-aware memory callback with the shared MemoryPressureHandler
        and get rid of the old iOS WebKit1 specific implementation. Some of it was even
        dead code since MobileSafari has been using WebKit2 for quite a while.

        * WebView/WebView.h:
        * WebView/WebView.mm:
        (WebInstallMemoryPressureHandler):
        (+[WebView _handleMemoryWarning]): Deleted.
        (+[WebView registerForMemoryNotifications]): Deleted.
        (+[WebView releaseFastMallocMemoryOnCurrentThread]): Deleted.
        (+[WebView garbageCollectNow]): Deleted.
        (+[WebView purgeInactiveFontData]): Deleted.
        (+[WebView drainLayerPool]): Deleted.
        (+[WebView discardAllCompiledCode]): Deleted.
        (+[WebView _clearMemoryPressure]): Deleted.
        (+[WebView _shouldWaitForMemoryClearMessage]): Deleted.
        * WebView/WebViewPrivate.h:

2017-02-20  Aakash Jain  <aakash_jain@apple.com>

        Stop exporting interface WebCoreScrollView on iOS
        https://bugs.webkit.org/show_bug.cgi?id=168536

        Reviewed by Dan Bernstein.

        * WebKit.exp: Moved symbol for WebCoreScrollView interface to mac specific file.
        * WebKit.mac.exp: Ditto.
        * WebView/WebHTMLView.mm: WebCoreScrollView shouldn't be defined for iOS platform.

2017-02-20  Aakash Jain  <aakash_jain@apple.com>

        Exclude various mac-specific header files from iOS build
        https://bugs.webkit.org/show_bug.cgi?id=168621

        Reviewed by Dan Bernstein.

        * Configurations/WebKitLegacy.xcconfig:

2017-02-20  Wenson Hsieh  <wenson_hsieh@apple.com>

        Add plumbing to the UI process for TextIndicatorData when computing the drag image
        https://bugs.webkit.org/show_bug.cgi?id=168583
        Work towards <rdar://problem/30313681>

        Accounts for changes in WebCore -- see Source/WebCore/ChangeLog for more details.

        Reviewed by Tim Horton.

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

2017-02-17  Anders Carlsson  <andersca@apple.com>

        Add a new drag code path and use it for dragging plain text
        https://bugs.webkit.org/show_bug.cgi?id=168534

        Reviewed by Geoffrey Garen.

        * WebCoreSupport/WebDragClient.h:
        Add new members.

        * WebCoreSupport/WebDragClient.mm:
        (WebDragClient::useLegacyDragClient):
        Return false here.

        (WebDragClient::beginDrag):
        New client member function. Create an NSDraggingItem and use it to begin a dragging session.

        * WebView/WebHTMLView.mm:
        (-[WebHTMLView draggingSession:sourceOperationMaskForDraggingContext:]):
        Get the source operation mask from WebCore.

        (-[WebHTMLView draggingSession:endedAtPoint:operation:]):
        Send a fake mouse up event.

        * WebView/WebHTMLViewInternal.h:
        Declare that WebHTMLView conforms to NSDraggingSource.

2017-02-20  Alexey Proskuryakov  <ap@apple.com>

        List of WebCore symbols to re-export from WebKitLegacy should be built automatically
        https://bugs.webkit.org/show_bug.cgi?id=168342
        rdar://problem/26182266

        Reviewed by Tim Horton.

        * MigrateHeaders.make: On iOS only, process re-exported headers to build a list of
        symbols to re-export.

2017-02-20  Aakash Jain  <aakash_jain@apple.com>

        Stop exporting DOMTokenList from WebKit
        https://bugs.webkit.org/show_bug.cgi?id=168544

        Reviewed by Alexey Proskuryakov.

        * WebKit.exp:

2017-02-20  Alexey Proskuryakov  <ap@apple.com>

        Clean up how WebKit exports _WebCreateFragment
        https://bugs.webkit.org/show_bug.cgi?id=168579

        Reviewed by Dan Bernstein.

        * WebCoreSupport/WebCreateFragmentInternal.h: Added a private header.
        * WebCoreSupport/WebEditorClient.mm: Include the new header that declares _WebCreateFragment.

2017-02-20  Aakash Jain  <aakash_jain@apple.com>

        Stop exporting DOMNodeFilter
        https://bugs.webkit.org/show_bug.cgi?id=168542

        Reviewed by Alexey Proskuryakov.

        * WebKit.exp:

2017-02-20  Manuel Rego Casasnovas  <rego@igalia.com>

        [css-grid] Remove compilation flag ENABLE_CSS_GRID_LAYOUT
        https://bugs.webkit.org/show_bug.cgi?id=167693

        Reviewed by Sergio Villar Senin.

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

2017-02-15  Brady Eidson  <beidson@apple.com>

        Stop backing up localStorage databases to iCloud by default.
        <rdar://problem/29045531> and https://bugs.webkit.org/show_bug.cgi?id=168388

        Reviewed by Geoffrey Garen.

        * Misc/WebKitVersionChecks.h:
        * Misc/WebKitVersionChecks.mm: Renamed from Source/WebKit/mac/Misc/WebKitVersionChecks.m.
        (WebKitLinkedOnOrAfter):
        (setWebKitLinkTimeVersion):
        (WebKitLinkTimeVersion):
        (linkedOnOrAfter):

        * Storage/WebStorageManager.mm:
        (WebKitInitializeStorageIfNecessary):

2017-02-16  Daniel Bates  <dabates@apple.com>

        Remove Chromium-specific code to call FrameLoaderClient::redirectDataToPlugin(nullptr)
        https://bugs.webkit.org/show_bug.cgi?id=168417
        <rdar://problem/30541748>

        Reviewed by Brent Fulgham.

        Update override of FrameLoaderClient::redirectDataToPlugin() to take a Widget& instead of a
        Widget* as it is always called with a valid Widget.

        * WebCoreSupport/WebFrameLoaderClient.h:
        * WebCoreSupport/WebFrameLoaderClient.mm:
        (WebFrameLoaderClient::redirectDataToPlugin):
        * WebKit.order: Remove symbol for WebFrameLoaderClient::redirectDataToPlugin() that took a Widget*
        as it no longer exists. I am unclear if this file is still meaningful as it was last modified in
        r180570 (2 years ago) though Xcode still references this ordering file (why?).

2017-02-16  Yusuke Suzuki  <utatane.tea@gmail.com>

        [JSC] Drop PassRefPtr in inspector/
        https://bugs.webkit.org/show_bug.cgi?id=168420

        Reviewed by Alex Christensen.

        * WebView/WebScriptDebugger.mm:
        (WebScriptDebugger::handlePause):

2017-02-16  Simon Fraser  <simon.fraser@apple.com>

        Clean up use of some CALayer-related SPI
        https://bugs.webkit.org/show_bug.cgi?id=168401

        Reviewed by Tim Horton.

        Include CALayer.h not CATiledLayer.h.

        * WebInspector/WebNodeHighlight.h:

2017-02-15  Wenson Hsieh  <wenson_hsieh@apple.com>

        Fix the build after r212379

        Rubber-stamped by Anders Carlsson.

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

2017-02-15  Anders Carlsson  <andersca@apple.com>

        Modernize DragClient::startDrag somewhat
        https://bugs.webkit.org/show_bug.cgi?id=168379

        Reviewed by Tim Horton.

        Update for WebCore changes.

        * WebCoreSupport/WebDragClient.h:
        * WebCoreSupport/WebDragClient.mm:
        (WebDragClient::startDrag):

2017-02-14  Dean Jackson  <dino@apple.com>

        Rename preferLowPowerWebGLRendering setting to forceWebGLUsesLowPower
        https://bugs.webkit.org/show_bug.cgi?id=168339

        Reviewed by Simon Fraser.

        Use a better name.

        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):
        (-[WebPreferences forceLowPowerGPUForWebGL]):
        (-[WebPreferences setForceLowPowerGPUForWebGL:]):
        (-[WebPreferences preferLowPowerWebGLRendering]): Deleted.
        (-[WebPreferences setPreferLowPowerWebGLRendering:]): Deleted.
        * WebView/WebPreferencesPrivate.h:
        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]):

2017-02-14  Chris Dumez  <cdumez@apple.com>

        HTML Form Validation bubble should take minimum font size setting into consideration
        https://bugs.webkit.org/show_bug.cgi?id=168271
        <rdar://problem/29869869>

        Reviewed by Simon Fraser.

        * WebView/WebView.mm:
        (-[WebView _contentsOfUserInterfaceItem:]):
        Return font size used in the validation bubble.

        (-[WebView showFormValidationMessage:withAnchorRect:]):
        Pass minimum font size setting when constructing the validation bubble.

2017-02-14  Anders Carlsson  <andersca@apple.com>

        Remove an unused delegate method
        https://bugs.webkit.org/show_bug.cgi?id=168328

        Reviewed by Wenson Hsieh.

        * DefaultDelegates/WebDefaultUIDelegate.m:
        (-[WebDefaultUIDelegate webView:shouldBeginDragForElement:dragImage:mouseDownEvent:mouseDraggedEvent:]): Deleted.

2017-02-14  Alexey Proskuryakov  <ap@apple.com>

        WebCore shouldn't export SystemMemory.h
        https://bugs.webkit.org/show_bug.cgi?id=168285

        Reviewed by Alex Christensen.

        * MigrateHeaders.make: And WebKit shouldn't re-export it.

2017-02-13  Alexey Proskuryakov  <ap@apple.com>

        WebKit shouldn't re-export ScrollTypes.h and WebCoreFrameView.h
        https://bugs.webkit.org/show_bug.cgi?id=168282

        Reviewed by Dan Bernstein.

        * MigrateHeaders.make:

2017-02-12  Dan Bernstein  <mitz@apple.com>

        Tried to fix USE(APPLE_INTERNAL_SDK) builds after r212211.

        * WebView/WebHTMLView.mm:
        (createShareMenuItem): Use non-deprecated method.

2017-02-12  Dan Bernstein  <mitz@apple.com>

        [Cocoa] Some -respondsToSelector: checks are unnecessary
        https://bugs.webkit.org/show_bug.cgi?id=168183

        Reviewed by Tim Horton.

        * WebView/WebFullScreenController.mm:
        (-[WebFullScreenController applicationDidResignActive:]): Removed check whether NSWindow
          responds to -isOnActiveSpace.
        (-[WebFullScreenController exitFullScreen]): Ditto.
        (-[WebFullScreenController _updateMenuAndDockForFullScreen]): Removed check whether
          NSApplication responds to -setPresentationOptions.

        * WebView/WebHTMLView.mm:
        (createShareMenuItem): Removed unnecessary -respondsToSelector: check.
        (-[WebHTMLView otherMouseDown:]): Ditto.

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

        * WebView/WebView.mm:
        (-[WebView _didStartProvisionalLoadForFrame:]): Removed redundant nil check.
        (+[WebView _setCacheModel:]): Removed unnecessary -respondsToSelector: check.

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

        Detach frame from document when entering page cache
        https://bugs.webkit.org/show_bug.cgi?id=166774
        <rdar://problem/29904368>

        Reviewed by Chris Dumez.

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

2017-02-10  Joseph Pecoraro  <pecoraro@apple.com>

        [Resource Timing] Enable Resource Timing by default in Tests
        https://bugs.webkit.org/show_bug.cgi?id=168145

        Reviewed by Ryosuke Niwa.

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

2017-02-10  Aakash Jain  <aakash_jain@apple.com>

        cleanup WebLocalizableStrings.
        https://bugs.webkit.org/show_bug.cgi?id=168078

        Reviewed by Alexey Proskuryakov.

        * Misc/WebLocalizableStrings.h: Make visibility hidden for WebLocalizableStringsBundle 
        as it's for each framework's own consumption, and never needs to be exported.

2017-02-10  Aakash Jain  <aakash_jain@apple.com>

        WebResourceLoadDelegatePrivate.h cannot be imported standalone
        https://bugs.webkit.org/show_bug.cgi?id=168096

        Reviewed by Alexey Proskuryakov.

        * WebView/WebResourceLoadDelegatePrivate.h: Change WebNSInteger to NSInteger. 

2017-02-09  Antti Koivisto  <antti@apple.com>

        Remove most cases of #if ENABLE(CACHE_PARTITIONING)
        https://bugs.webkit.org/show_bug.cgi?id=167990

        Reviewed by Sam Weinig.

        * Misc/WebCache.mm:
        (+[WebCache addImageToCache:forURL:forFrame:]):
        (+[WebCache removeImageFromCacheForURL:forFrame:]):
        * WebCoreSupport/WebSystemInterface.mm:
        (InitWebCoreSystemInterface):

2017-02-07  Alexey Proskuryakov  <ap@apple.com>

        Don't migrate WebKit DOM headers in MigrateHeaders.make
        https://bugs.webkit.org/show_bug.cgi?id=167608

        Reviewed by Darin Adler.

        Stop migrating DOM headers that are now in WebKit.

        * DOM/DOMDOMImplementation.h: Removed.
        * DOM/DOMDOMImplementation.mm: Removed.
        * DOM/DOMDOMImplementationInternal.h: Removed.
        * DOM/DOMDOMTokenList.h: Removed.
        * DOM/DOMDOMTokenList.mm: Removed.
        * DOM/DOMDOMTokenListInternal.h: Removed.
        * DOM/DOMImplementation.h: Copied from Source/WebKit/mac/DOM/DOMDOMImplementation.h.
        * DOM/DOMImplementation.mm: Copied from Source/WebKit/mac/DOM/DOMDOMImplementation.mm.
        * DOM/DOMImplementationInternal.h: Copied from Source/WebKit/mac/DOM/DOMDOMImplementationInternal.h.
        * DOM/DOMTokenList.h: Copied from Source/WebKit/mac/DOM/DOMDOMTokenList.h.
        * DOM/DOMTokenList.mm: Copied from Source/WebKit/mac/DOM/DOMDOMTokenList.mm.
        * DOM/DOMTokenListInternal.h: Copied from Source/WebKit/mac/DOM/DOMDOMTokenListInternal.h.
        As the files are not in WebCore any more, there is no need to differentiate from
        WebCore internal headers with the same name. This makes it possible to make these
        headers private using Xcode mechanisms, as opposed to copying with a shell script.

        * DOM/DOMElement.mm: Removed "using namespace WebCore". Other DOM implementation
        files don't have it.

        * DOM/DOMCore.h:
        * DOM/DOMDocument.mm:
        * DOM/DOMHTMLAnchorElement.mm:
        * DOM/DOMHTMLAreaElement.mm:
        * DOM/DOMHTMLLinkElement.mm:
        * DOM/DOMUtility.mm:
        No more "DOMDOM".

        * WebKit.exp:
        No more "DOMDOM". DOMDOMTokenList was not directly exposed via an SPI header, so
        renaming it is likely to be safe.

        * MigrateHeaders.make: Don't migrate WebKit headers.

        * Configurations/WebKitLegacy.xcconfig: Don't include two iOS specific SPI headers
        on macOS.

2017-02-08  Aakash Jain  <aakash_jain@apple.com>

        Don't re-export PluginData.h from WebKit
        https://bugs.webkit.org/show_bug.cgi?id=168020

        Reviewed by Alexey Proskuryakov.

        * MigrateHeaders.make: Removed PluginData.h

2017-02-08  Aakash Jain  <aakash_jain@apple.com>

        Don't re-export WKUtilities.h from WebKit
        https://bugs.webkit.org/show_bug.cgi?id=167977

        Reviewed by Alexey Proskuryakov.

        * MigrateHeaders.make: Removed WKUtilities.h

2017-02-06  Alex Christensen  <achristensen@webkit.org>

        credentials should be partitioned by main document domain
        https://bugs.webkit.org/show_bug.cgi?id=166998
        rdar://problem/22901123

        Reviewed by Brady Eidson.

        * Misc/WebDownload.mm:
        * Plugins/WebBaseNetscapePluginView.mm:
        (WebKit::getAuthenticationInfo):
        Don't use partitioned credentials for WebKit1 plugins or downloads.
        Downloads should be authenticated before becoming a download anyways.

2017-02-06  Said Abou-Hallawa  <sabouhallawa@apple.com>

        Rename AnimationController to CSSAnimationController
        https://bugs.webkit.org/show_bug.cgi?id=167829

        Reviewed by Simon Fraser.

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

2017-02-03  Chris Dumez  <cdumez@apple.com>

        Dismiss HTML form validation popover when pressing Escape key
        https://bugs.webkit.org/show_bug.cgi?id=167716
        <rdar://problem/29872943>

        Reviewed by Simon Fraser.

        Override ValidationMessageClient::hideAnyValidationMessage().

        * WebCoreSupport/WebValidationMessageClient.h:
        * WebCoreSupport/WebValidationMessageClient.mm:
        (WebValidationMessageClient::hideAnyValidationMessage):

2017-02-02  Wenson Hsieh  <wenson_hsieh@apple.com>

        Drag images should be anchored to the mouse location
        https://bugs.webkit.org/show_bug.cgi?id=167690
        <rdar://problem/30295261>

        Reviewed by Enrica Casucci.

        Adds some plumbing for the anchor point in the WK1 client layer.

        * WebCoreSupport/WebDragClient.h:
        * WebCoreSupport/WebDragClient.mm:
        (WebDragClient::startDrag):

2017-02-02  Chris Dumez  <cdumez@apple.com>

        Rename Node::inDocument() to isConnected()
        https://bugs.webkit.org/show_bug.cgi?id=167743

        Reviewed by Sam Weinig.

        Rename Node::inDocument() to isConnected() to match the DOM specification more closely:
        - https://dom.spec.whatwg.org/#connected

        * DOM/DOMNode.mm:
        (-[DOMNode isConnected]):
        * WebView/WebFrame.mm:
        (-[WebFrame selectNSRange:onElement:]):

2017-02-02  Chris Dumez  <cdumez@apple.com>

        [Crash] com.apple.WebKit.WebContent at WebKit: WebKit::WebPage::fromCorePage()
        https://bugs.webkit.org/show_bug.cgi?id=167738
        <rdar://problem/30229990>

        Reviewed by Andreas Kling.

        The BackForwardClient no longer needs to worry about removing HistoryItems
        from the PageCache now that WebCore takes care of it.

        * History/BackForwardList.mm:
        (BackForwardList::close):

2017-02-02  Yongjun Zhang  <yongjun_zhang@apple.com>

        In iOS, we should take background assertion when accessing localstorage databases.
        https://bugs.webkit.org/show_bug.cgi?id=165478

        Move database transaction background task handling code from WebDatabaseManager to
        WebCore's WebSQLiteDatabaseTrackerClient.

        Reviewed by Brady Eidson.

        * Storage/WebDatabaseManager.mm:
        * Storage/WebDatabaseManagerInternal.h: Remove a category for background task handling.
        * WebCoreSupport/WebApplicationCache.mm:
        (+[WebApplicationCache initializeWithBundleIdentifier:]): Use WebCore::WebSQLiteDatabaseTrackerClient.
        * WebView/WebView.mm:
        (-[WebView _commonInitializationWithFrameName:groupName:]): Ditto.

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

        [WK1] Allow the drag client to be initialized on platforms that do not support drag and drop
        https://bugs.webkit.org/show_bug.cgi?id=167695
        <rdar://problem/30305390>

        Reviewed by Sam Weinig.

        Due to the common codepath for destroying the drag client, we need to ensure that the drag client actually
        exists, even on platforms that do not support drag and drop, in order to avoid crashing when the DragController
        is destroyed.

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

2017-01-31  Joseph Pecoraro  <pecoraro@apple.com>

        ld: warning: instance method '_setAutofilled:' in category conflicts with same method from another category
        https://bugs.webkit.org/show_bug.cgi?id=167684

        Reviewed by Dan Bernstein.

        * DOM/DOMHTML.mm:
        (-[DOMHTMLInputElement _isAutofilled]): Deleted.
        (-[DOMHTMLInputElement _setAutofilled:]): Deleted.
        Consolidate in the WebDOMOperationsPrivate category.

        * DOM/DOMPrivate.h:
        Include WebDOMOperationsPrivate header to get other DOM Private categories.

        * DOM/WebDOMOperations.mm:
        (-[DOMHTMLInputElement _isAutofilled]):
        * DOM/WebDOMOperationsPrivate.h:
        Include getter alongside the setter.

2017-01-31  Jessie Berlin  <jberlin@webkit.org>

        Build fix.

        * Misc/WebNSPasteboardExtras.mm:
        (+[NSPasteboard _web_setFindPasteboardString:withOwner:]):
        (-[NSPasteboard _web_declareAndWriteDragImageForElement:URL:title:archive:source:]):
        * WebView/WebHTMLView.mm:
        (-[WebHTMLView _fontAttributesFromFontPasteboard]):
        (-[WebHTMLView copyFont:]):

2017-01-30  Andy Estes  <aestes@apple.com>

        [QuickLook] FrameLoaderClient should return the new QuickLookHandleClient it creates
        https://bugs.webkit.org/show_bug.cgi?id=167625

        Reviewed by Andreas Kling.

        * WebCoreSupport/WebFrameLoaderClient.h: Declared createQuickLookHandleClient().
        * WebCoreSupport/WebFrameLoaderClient.mm:
        (WebFrameLoaderClient::createQuickLookHandleClient): Renamed from didCreateQuickLookHandle().
        (WebFrameLoaderClient::didCreateQuickLookHandle): Renamed to createQuickLookHandleClient().

2017-01-30  Chris Dumez  <cdumez@apple.com>

        Drop legacy Attributes.isId attribute
        https://bugs.webkit.org/show_bug.cgi?id=167603

        Reviewed by Ryosuke Niwa.

        Keep Attr.isId in ObjC bindings.

        * DOM/DOMAttr.mm:
        (-[DOMAttr isId]):

2017-01-30  Andreas Kling  <akling@apple.com>

        [macOS] WebHTMLView has an internal retain cycle with its flagsChangedEventMonitor.
        <https://webkit.org/b/167580>

        Reviewed by Antti Koivisto.

        Avoid the implicit strong capture of self by keeping it in a __block variable.
        Also add code to dealloc to unregister the event monitor, since it will otherwise leak.
        This fixes huge WebHTMLView leaks seen on the leaks bot.

        * WebView/WebHTMLView.mm:
        (-[WebHTMLViewPrivate dealloc]):
        (-[WebHTMLView viewDidMoveToWindow]):

2017-01-29  Andy Estes  <aestes@apple.com>

        [QuickLook] Add a WebPreference to enable saving QuickLook documents in WebKitLegacy
        https://bugs.webkit.org/show_bug.cgi?id=167563
        <rdar://problem/30253207>

        Reviewed by Andreas Kling.

        Instead of only saving QuickLook documents to a temporary file when the client is
        MobileSafari, base this decision on a WebPreference that clients can choose to enable.

        This also changes the SPI for accessing the temporary file path and UTI. Instead of
        -[WebView quickLookContentForURL:], which requires the client to pass the response URL of
        the frame that saved the QuickLook document, the content dictionary is now stored as a
        property of WebDataSource.

        This also removes the manual lifetime management of the QLPreviewConverter from
        QuickLookDocumentWriter. The QLPreviewConverter is kept alive by DocumentLoader these days,
        which ensures it lives long enough to respond to subresource requests.

        New API test: QuickLook.LegacyQuickLookContent

        * WebCoreSupport/WebFrameLoaderClient.mm:
        (WebFrameLoaderClient::didCreateQuickLookHandle): Moved the logic of deciding whether to
        write a temporary file to here from the QuickLookDocumentWriter constructor.
        * WebView/WebDataSource.mm: Declared _quickLookContent.
        (-[WebDataSource _quickLookContent]):
        (-[WebDataSource _setQuickLookContent:]):
        * WebView/WebDataSourceInternal.h: Overrode _quickLookContent as a read/write property.
        * WebView/WebDataSourcePrivate.h: Declared _quickLookContent as a readonly property.
        * WebView/WebPreferenceKeysPrivate.h: Defined WebKitQuickLookDocumentSavingPreferenceKey.
        * WebView/WebPreferences.mm:
        (-[WebPreferences quickLookDocumentSavingEnabled]):
        (-[WebPreferences setQuickLookDocumentSavingEnabled:]):
        * WebView/WebPreferencesPrivate.h: Declared property quickLookDocumentSavingEnabled.
        * WebView/WebView.mm:
        (-[WebView quickLookContentForURL:]): Changed to always return nil.
        * WebView/WebViewPrivate.h: Added a comment stating that clients should use
        -[WebDataSource _quickLookContent] instead.

2017-01-28  Yoav Weiss  <yoav@yoav.ws>

        Add Link Preload as an off-by-default experimental feature menu item.
        https://bugs.webkit.org/show_bug.cgi?id=167201

        Reviewed by Ryosuke Niwa.

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

2017-01-28  Joseph Pecoraro  <pecoraro@apple.com>

        Add User Timing Experimental Feature
        https://bugs.webkit.org/show_bug.cgi?id=167542
        <rdar://problem/22746307>

        Reviewed by Ryosuke Niwa.

        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):
        (-[WebPreferences userTimingEnabled]):
        (-[WebPreferences setUserTimingEnabled:]):
        * WebView/WebPreferencesPrivate.h:
        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]):
        Add setting for User Timing runtime enabled feature.

2017-01-27  Wenson Hsieh  <wenson_hsieh@apple.com>

        [WK1] Do not prevent the drag client from initializing on Mac
        https://bugs.webkit.org/show_bug.cgi?id=167541

        Reviewed by Dan Bernstein.

        Fixes fallout from r211192. To ensure compability with WebKit clients, we need to ensure that WebDragClient is
        initialized everywhere when creating a WebView. Stub out method implementations as no-ops for non-Mac platforms.
        This caused certain clients, such as Mail, to crash when a webView closes due to  null dereference.

        * WebCoreSupport/WebDragClient.mm:
        (WebDragClient::WebDragClient):
        (WebDragClient::actionMaskForDrag):
        (WebDragClient::willPerformDragDestinationAction):
        (WebDragClient::dragSourceActionMaskForPoint):
        (WebDragClient::willPerformDragSourceAction):
        (WebDragClient::startDrag):
        (WebDragClient::declareAndWriteDragImage):
        (WebDragClient::declareAndWriteAttachment):
        * WebView/WebView.mm:
        (-[WebView initSimpleHTMLDocumentWithStyle:frame:preferences:groupName:]):

2017-01-26  Chris Dumez  <cdumez@apple.com>

        Crash when navigating back to a page in PacheCache when one of its frames has been removed
        https://bugs.webkit.org/show_bug.cgi?id=167421
        <rdar://problem/30188490>

        Reviewed by Darin Adler.

        Add a new setting allowing layout tests to enable PageCache in a window
        that has an opener, for convenience.

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

2017-01-26  Keith Miller  <keith_miller@apple.com>

        classInfo should take a VM so it is not materialized from the object on each call
        https://bugs.webkit.org/show_bug.cgi?id=167424

        Rubber Stamped by Michael Saboff.

        Previously, classInfo() would get the VM from the target's
        MarkedBlock.  Most callers already have a VM on hand, so it is
        wasteful to compute the VM from the marked block every time. This
        patch refactors some of the most common callers of classInfo(),
        jsDynamicCast and inherits to take a VM as well.

        * DOM/DOM.mm:
        (+[DOMNode _nodeFromJSWrapper:]):
        * DOM/DOMUtility.mm:
        (createDOMWrapper):
        * DOM/WebDOMOperations.mm:
        * Plugins/Hosted/NetscapePluginInstanceProxy.mm:
        (WebKit::getObjectID):
        (WebKit::NetscapePluginInstanceProxy::retainLocalObject):
        (WebKit::NetscapePluginInstanceProxy::releaseLocalObject):
        * Plugins/Hosted/ProxyInstance.mm:
        (WebKit::ProxyRuntimeMethod::finishCreation):
        (WebKit::ProxyInstance::invokeMethod):
        * Plugins/Hosted/ProxyRuntimeObject.mm:
        (WebKit::ProxyRuntimeObject::finishCreation):
        * WebView/WebFrame.mm:
        (-[WebFrame _stringByEvaluatingJavaScriptFromString:withGlobalObject:inScriptWorld:]):
        * WebView/WebView.mm:
        (+[WebView _reportException:inContext:]):
        (aeDescFromJSValue):
        (-[WebView _notificationIDForTesting:]):

2017-01-26  Wenson Hsieh  <wenson_hsieh@apple.com>

        REGRESSION (r207483): Touch Bar: Lists and BIU Buttons Missing from Touch Bar in HTML Notes
        https://bugs.webkit.org/show_bug.cgi?id=167472
        <rdar://problem/30149809>

        Reviewed by Beth Dakin.

        Revision 207483 caused the touch bar to stop showing up in HTML Notes due to -updateTextTouchBar not
        initializing the text touch bar and causing -makeTouchBar to return nil while processing a mouse click. The
        purpose of bailing out of the update was to prevent the text touch bar from thrashing during a selection drag.
        If the text touch bar doesn't exist yet, we don't have to worry about its appearance flickering from a different
        previous state, so we should just allow the touch bar to update instead.

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

2017-01-26  Per Arne Vollan  <pvollan@apple.com>

        Crash when setting custom scale factor.
        https://bugs.webkit.org/show_bug.cgi?id=167369

        Reviewed by Sam Weinig.

        Add null pointer check.

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

2017-01-25  Wenson Hsieh  <wenson_hsieh@apple.com>

        Refactor drag and drop implementation on Mac
        https://bugs.webkit.org/show_bug.cgi?id=167427

        Reviewed by Enrica Casucci.

        Refactor some WebKit1 code on the Mac pertaining to drag and drop. See WebCore ChangeLog for more details.

        * Misc/WebNSPasteboardExtras.h:
        * WebCoreSupport/WebDragClient.mm:
        * WebView/WebFrame.mm:
        * WebView/WebFrameInternal.h:
        * WebView/WebHTMLView.mm:
        * WebView/WebView.mm:
        (-[WebView initSimpleHTMLDocumentWithStyle:frame:preferences:groupName:]):

2017-01-24  Youenn Fablet  <youennf@gmail.com>

        [WebRTC] Introduce libwebrtc abstraction for WK1/WK2 implementations
        https://bugs.webkit.org/show_bug.cgi?id=167294

        Reviewed by Alex Christensen.

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

2017-01-25  Wenson Hsieh  <wenson_hsieh@apple.com>

        Add support for named pasteboards, pasteboard strategies and platform pasteboards
        https://bugs.webkit.org/show_bug.cgi?id=167404

        Reviewed by Enrica Casucci.

        Adds pasteboard name as an argument to pasteboard-related WebPlatformStrategy methods.

        * WebCoreSupport/WebPlatformStrategies.h:
        * WebCoreSupport/WebPlatformStrategies.mm:
        (WebPlatformStrategies::writeToPasteboard):
        (WebPlatformStrategies::getPasteboardItemsCount):
        (WebPlatformStrategies::readBufferFromPasteboard):
        (WebPlatformStrategies::readURLFromPasteboard):
        (WebPlatformStrategies::readStringFromPasteboard):

2017-01-25  Aakash Jain  <aakash_jain@apple.com>

        LoadWebLocalizedStrings method should be moved in correct file
        https://bugs.webkit.org/show_bug.cgi?id=167393

        Reviewed by Alexey Proskuryakov.

        * Misc/WebLocalizableStrings.h: Deleted LoadWebLocalizedStrings method.
        * Misc/WebLocalizableStrings.mm:
        (LoadWebLocalizedStringsTimerCallback): Deleted, moved to WebUIKitSupport.mm
        (LoadWebLocalizedStrings): Deleted, moved to WebUIKitSupport.mm

2017-01-24  Zalan Bujtas  <zalan@apple.com>

        Add simple line layout toggle to MiniBrowser
        https://bugs.webkit.org/show_bug.cgi?id=167405

        Reviewed by Andreas Kling.

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

2017-01-24  Joseph Pecoraro  <pecoraro@apple.com>

        Fold USER_TIMING into WEB_TIMING and make it a RuntimeEnabledFeature
        https://bugs.webkit.org/show_bug.cgi?id=167394

        Reviewed by Ryosuke Niwa.

        * Configurations/FeatureDefines.xcconfig:

2017-01-23  Chris Dumez  <cdumez@apple.com>

        REGRESSION (r211033): ASSERTION FAILED: m_ptr in com.apple.WebCore: WTF::RefPtr<WebCore::Element>::operator* const + 70
        https://bugs.webkit.org/show_bug.cgi?id=167308
        <rdar://problem/30144964>

        Unreviewed, do a partial revert of r211033 to fix assertion.

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

2017-01-23  Joseph Pecoraro  <pecoraro@apple.com>

        Remove allowWindowOpenWithoutUserGesture setting
        https://bugs.webkit.org/show_bug.cgi?id=167301

        Reviewed by Darin Adler.

        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]):
        Use the equivalent existing setting.

2017-01-20  Darin Adler  <darin@apple.com>

        Remove PassRefPtr from "page" directory of WebCore, also deploy references
        https://bugs.webkit.org/show_bug.cgi?id=167224

        Reviewed by Chris Dumez.

        * WebCoreSupport/WebApplicationCacheQuotaManager.mm:
        (-[WebApplicationCacheQuotaManager quota]): Pass reference.

        * WebCoreSupport/WebChromeClient.h: Updated for changes to ChromeClient.
        * WebCoreSupport/WebChromeClient.mm:
        (WebChromeClient::focusedElementChanged): Ditto.
        (WebChromeClient::createWindow): Ditto.
        (WebChromeClient::runBeforeUnloadConfirmPanel): Ditto.
        (WebChromeClient::runJavaScriptAlert): Ditto.
        (WebChromeClient::runJavaScriptConfirm): Ditto.
        (WebChromeClient::runJavaScriptPrompt): Ditto.
        (WebChromeClient::contentsSizeChanged): Ditto.
        (WebChromeClient::unavailablePluginButtonClicked): Ditto.
        (WebChromeClient::print): Ditto.
        (WebChromeClient::exceededDatabaseQuota): Ditto.
        (WebChromeClient::reachedApplicationCacheOriginQuota): Ditto.
        (WebChromeClient::createColorChooser): Ditto.
        (WebChromeClient::elementDidFocus): Ditto.
        (WebChromeClient::elementDidBlur): Ditto.
        (WebChromeClient::createPopupMenu): Ditto.
        (WebChromeClient::createSearchPopupMenu): Ditto.
        (WebChromeClient::attachRootGraphicsLayer): Ditto.
        (WebChromeClient::attachViewOverlayGraphicsLayer): Ditto.
        (WebChromeClient::supportsFullScreenForElement): Ditto.
        (WebChromeClient::enterFullScreenForElement): Ditto.
        (WebChromeClient::exitFullScreenForElement): Ditto.

        * WebView/WebFrame.mm:
        (+[WebFrame _createFrameWithPage:frameName:frameView:ownerElement:]):
        Updated for change to the appendChild function.

2017-01-21  Simon Fraser  <simon.fraser@apple.com>

        Remove -[WebFrame sendOrientationChangeEvent:] which is unused
        https://bugs.webkit.org/show_bug.cgi?id=167276

        Reviewed by Alex Christensen.
        
        It was usurped by -deviceOrientationChanged in 2014.

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

2017-01-21  Simon Fraser  <simon.fraser@apple.com>

        Remove -[WebView _contentsSizeRespectingOverflow] which is no longer needed
        https://bugs.webkit.org/show_bug.cgi?id=167271

        Reviewed by Alex Christensen.
        
        -_contentsSizeRespectingOverflow was added to try to make viewport sizing on iOS respect
        overflow:hidden on the body (webkit.org/b/146924) but that was reverted (webkit.org/b/152803),

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

2017-01-20  Joseph Pecoraro  <pecoraro@apple.com>

        Remove never changing IndexedDB RuntimeEnabledFeature
        https://bugs.webkit.org/show_bug.cgi?id=167278

        Reviewed by Darin Adler.

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

2017-01-20  Joseph Pecoraro  <pecoraro@apple.com>

        Cleanup RuntimeEnabledFeatures
        https://bugs.webkit.org/show_bug.cgi?id=167228

        Reviewed by Simon Fraser.

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

2017-01-20  Joseph Pecoraro  <pecoraro@apple.com>

        Remove outdated ENABLE(CSP_NEXT) build flag
        https://bugs.webkit.org/show_bug.cgi?id=167252

        Reviewed by Brent Fulgham.

        * Configurations/FeatureDefines.xcconfig:

2017-01-20  Antoine Quint  <graouts@apple.com>

        [Modern Media Controls] Turn modern media controls on by default
        https://bugs.webkit.org/show_bug.cgi?id=165668

        Reviewed by Dean Jackson.

        Enabled modern media controls by default in WK1.

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

2017-01-19  Chris Dumez  <cdumez@apple.com>

        iterable<> should be enabled on WK1
        https://bugs.webkit.org/show_bug.cgi?id=167221
        <rdar://problem/30108531>

        Reviewed by Youenn Fablet.

        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (-[WebPreferences setCustomElementsEnabled:]):
        (-[WebPreferences DOMIteratorEnabled]): Deleted.
        (-[WebPreferences setDOMIteratorEnabled:]): Deleted.
        * WebView/WebPreferencesPrivate.h:
        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]):

2017-01-19  Chris Dumez  <cdumez@apple.com>

        Make sure HTML validation bubble gets dismissed when its associated element's frame gets detached
        https://bugs.webkit.org/show_bug.cgi?id=167215
        <rdar://problem/29885052>

        Reviewed by Andreas Kling.

        Make sure HTML validation bubble gets dismissed when its associated
        element's frame gets detached and that we do not crash.

        * WebCoreSupport/WebValidationMessageClient.h:
        * WebCoreSupport/WebValidationMessageClient.mm:
        (WebValidationMessageClient::documentDetached):

2017-01-19  Myles C. Maxfield  <mmaxfield@apple.com>

        [Cocoa] Variation fonts are erroneously disabled on iOS
        https://bugs.webkit.org/show_bug.cgi?id=167172

        Reviewed by Simon Fraser.

        OpenSource builders don't seem to understand sdk=embedded*.

        * Configurations/FeatureDefines.xcconfig:

2017-01-19  Andreas Kling  <akling@apple.com>

        ScriptExecutionContext::topOrigin() should return a reference.
        <https://webkit.org/b/167190>

        Reviewed by Sam Weinig.

        * Misc/WebCache.mm:
        (+[WebCache addImageToCache:forURL:forFrame:]):
        (+[WebCache removeImageFromCacheForURL:forFrame:]):

2017-01-18  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed fix for the macOS build.

        * Carbon/CarbonWindowAdapter.mm:
        (-[CarbonWindowAdapter initWithCarbonWindowRef:takingOwnership:disableOrdering:carbon:]):

2017-01-18  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r210848.

        This change introduced media-related LayoutTest failures and
        crashes on macOS.

        Reverted changeset:

        "[Modern Media Controls] Turn modern media controls on by
        default"
        https://bugs.webkit.org/show_bug.cgi?id=165668
        http://trac.webkit.org/changeset/210848

2017-01-18  Andreas Kling  <akling@apple.com>

        Document::securityOrigin() should return a reference.
        <https://webkit.org/b/167124>

        Reviewed by Sam Weinig.

        * Plugins/Hosted/NetscapePluginInstanceProxy.mm:
        (WebKit::NetscapePluginInstanceProxy::loadRequest):
        * Plugins/WebNetscapePluginStream.mm:
        (WebNetscapePluginStream::WebNetscapePluginStream):
        * Plugins/WebNetscapePluginView.mm:
        (-[WebNetscapePluginView loadRequest:inTarget:withNotifyData:sendNotification:]):
        * Plugins/WebPluginContainerCheck.mm:
        (-[WebPluginContainerCheck _isForbiddenFileLoad]):
        * WebCoreSupport/WebChromeClient.mm:
        (WebChromeClient::exceededDatabaseQuota):
        * WebCoreSupport/WebFrameLoaderClient.h:
        * WebCoreSupport/WebFrameLoaderClient.mm:
        (WebFrameLoaderClient::didRunInsecureContent):
        * WebCoreSupport/WebGeolocationClient.mm:
        (WebGeolocationClient::requestPermission):
        (-[WebGeolocationProviderInitializationListener initializationAllowedWebView:]):
        * WebView/WebFrame.mm:
        (-[WebFrame _allowsFollowingLink:]):

2017-01-18  Antoine Quint  <graouts@apple.com>

        [Modern Media Controls] Turn modern media controls on by default
        https://bugs.webkit.org/show_bug.cgi?id=165668

        Reviewed by Dean Jackson.

        Enabled modern media controls by default in WK1. 

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

2017-01-15  Darin Adler  <darin@apple.com>

        Remove PassRefPtr from "loader" directory of WebCore
        https://bugs.webkit.org/show_bug.cgi?id=167055

        Reviewed by Alex Christensen.

        * WebCoreSupport/WebChromeClient.h: Updated for changes to ChromeClient.
        Also made class final and most functions private and final.
        * WebCoreSupport/WebChromeClient.mm:
        (WebChromeClient::runOpenPanel): Updated to take references.

        * WebCoreSupport/WebEditorClient.h: Updated for changes to EditorClient.
        * WebCoreSupport/WebEditorClient.mm:
        (-[WebUndoStep initWithUndoStep:]): Take reference instead of PassRefPtr.
        (+[WebUndoStep stepWithUndoStep:]): Ditto.
        (-[WebUndoStep step]): Return reference instead of pointer.
        (-[WebEditorUndoTarget undoEditing:]): Updated for the above.
        (-[WebEditorUndoTarget redoEditing:]): Ditto.
        (WebEditorClient::registerUndoOrRedoStep): Take reference instead of
        PassRefPtr.
        (WebEditorClient::registerUndoStep): Ditto.
        (WebEditorClient::registerRedoStep): Ditto.

        * WebCoreSupport/WebFrameLoaderClient.h: Updated for changes to
        FrameLoaderClient, marked functions final instead of override.
        * WebCoreSupport/WebFrameLoaderClient.mm:
        (WebFrameLoaderClient::dispatchDecidePolicyForNewWindowAction): Take
        pointer instead of PassRefPtr.
        (WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction): Ditto.
        (makeFormFieldValuesDictionary): Take a reference.
        (WebFrameLoaderClient::dispatchWillSendSubmitEvent): Take Ref&& instead
        of PassRefPtr.
        (WebFrameLoaderClient::dispatchWillSubmitForm): Take a reference instead
        of PassRefPtr.
        (WebFrameLoaderClient::actionDictionary): Take a pointer instead of PassRePtr.
        (WebFrameLoaderClient::createFrame): Take a reference instead of a pointer.
        (WebFrameLoaderClient::createPlugin): Ditto.
        (WebFrameLoaderClient::createJavaAppletWidget): Ditto.
        (WebFrameLoaderClient::createNetworkingContext): Ditto.
        (WebFrameLoaderClient::didCreateQuickLookHandle): Pass a reference.

        * WebCoreSupport/WebFrameNetworkingContext.h: Use Ref instead of PassRefPtr.
        * WebCoreSupport/WebFrameNetworkingContext.mm: Tweak style a bit.

        * WebCoreSupport/WebOpenPanelResultListener.h: Take a reference instead of
        PassRefPtr. Use RefPtr for class field.
        * WebCoreSupport/WebOpenPanelResultListener.mm:
        (-[WebOpenPanelResultListener dealloc]): Deleted. Compiler will now do it
        correctly without us declaring anything explicitly.
        (-[WebOpenPanelResultListener cancel]): Get rid of hand-written deref code,
        and let RefPtr do the work.
        (-[WebOpenPanelResultListener chooseFilename:]): Ditto.
        (-[WebOpenPanelResultListener chooseFilenames:]): Ditto.
        (-[WebOpenPanelResultListener chooseFilenames:displayString:iconImage:]):
        Rewrote to use a modern Objective-C for loop, reserveInitialCapacity,
        and uncheckedAppend.

        * WebView/WebArchive.mm:
        (-[WebArchive initWithMainResource:subresources:subframeArchives:]):
        Updated for changes to LegacyWebArchive.
        (-[WebArchive mainResource]): Ditto.
        (-[WebArchive subresources]): Ditto.
        (-[WebArchive subframeArchives]): Ditto.

        * WebView/WebDataSource.mm:
        (-[WebDataSource _addSubframeArchives:]): Use a modern Objective-C for loop
        instead of NSEnumerator.
        (-[WebDataSource _fileWrapperForURL:]): Use auto.
        (-[WebDataSource _documentFragmentWithArchive:]): Pass a reference.
        (-[WebDataSource mainResource]): Ditto.
        (-[WebDataSource subresources]): Ditto.
        (-[WebDataSource subresourceForURL:]): Ditto.
        (-[WebDataSource addSubresource:]): Ditto.

        * WebView/WebResource.mm:
        (-[WebResourcePrivate initWithCoreResource:]): Take Ref&& instead of PassRefPtr.
        (-[WebResourcePrivate dealloc]): Remove explicit deref since RefPtr will now take
        care of it
        (-[WebResource initWithCoder:]): Pass a reference.
        (-[WebResource encodeWithCoder:]): Updated since coreResource is now RefPtr.
        (-[WebResource _initWithCoreResource:]): Take Ref&& instead of PassRefPtr.
        (-[WebResource _coreResource]): Return reference rather than pointer.
        (-[WebResource _initWithData:URL:MIMEType:textEncodingName:frameName:response:copyData:]):
        Added code to handle the null case and pass a reference rather than a pointer.
        * WebView/WebResourceInternal.h: Updated for the above.

2017-01-17  Michael Catanzaro  <mcatanzaro@igalia.com>

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

        It introduced dozens of test timeouts.

        Reverted changeset:
        "[Modern Media Controls] Turn modern media controls on by default"
        https://bugs.webkit.org/show_bug.cgi?id=165668
        http://trac.webkit.org/changeset/210834

2017-01-17  Antoine Quint  <graouts@apple.com>

        [Modern Media Controls] Turn modern media controls on by default
        https://bugs.webkit.org/show_bug.cgi?id=165668

        Reviewed by Dean Jackson.

        Enabled modern media controls by default in WK1. 

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

2017-01-17  Joseph Pecoraro  <pecoraro@apple.com>

        ENABLE(USER_TIMING) Not Defined for Apple Windows or OS X Ports
        https://bugs.webkit.org/show_bug.cgi?id=116551
        <rdar://problem/13949830>

        Reviewed by Alex Christensen.

        * Configurations/FeatureDefines.xcconfig:

2017-01-17  Joseph Pecoraro  <pecoraro@apple.com>

        Crash when closing tab with debugger paused
        https://bugs.webkit.org/show_bug.cgi?id=161746
        <rdar://problem/15607819>

        Reviewed by Brian Burg and Brent Fulgham.

        * WebView/WebView.mm:
        (WebKit::DeferredPageDestructor::createDeferredPageDestructor):
        (WebKit::DeferredPageDestructor::DeferredPageDestructor):
        (WebKit::DeferredPageDestructor::tryDestruction):
        (-[WebView _close]):
        Defer destruction of the Page if we are in a nested runloop.

2017-01-16  Joseph Pecoraro  <pecoraro@apple.com>

        Remove the REQUEST_ANIMATION_FRAME flag
        https://bugs.webkit.org/show_bug.cgi?id=156980
        <rdar://problem/25906849>

        Reviewed by Simon Fraser.

        * Configurations/FeatureDefines.xcconfig:

2017-01-16  Andy Estes  <aestes@apple.com>

        [QuickLook] Do some cleanup in QuickLookHandle
        https://bugs.webkit.org/show_bug.cgi?id=166864

        Reviewed by Darin Adler.

        * WebCoreSupport/WebFrameLoaderClient.mm:
        (WebFrameLoaderClient::didCreateQuickLookHandle): Changed to pass a
        Ref<QuickLookHandleClient>&& to QuickLookHandle::setClient().

2017-01-15  Tim Horton  <timothy_horton@apple.com>

        De-duplicate more (nearly) identical code in Editor(Mac|IOS).mm
        https://bugs.webkit.org/show_bug.cgi?id=167063

        Reviewed by Dan Bernstein.

        * WebView/WebHTMLView.mm:
        (-[WebHTMLView _selectionStartFontAttributesAsRTF]):
        (-[WebHTMLView _updateFontPanel]):
        * WebView/WebView.mm:
        (-[WebView typingAttributes]):
        Adjust to fontAttributesForSelectionStart returning a RetainPtr.

2017-01-13  Joseph Pecoraro  <pecoraro@apple.com>

        Remove ENABLE(DETAILS_ELEMENT) guards
        https://bugs.webkit.org/show_bug.cgi?id=167042

        Reviewed by Alex Christensen.

        * Configurations/FeatureDefines.xcconfig:

2017-01-11  Darin Adler  <darin@apple.com>

        Remove PassRefPtr from more of "platform"
        https://bugs.webkit.org/show_bug.cgi?id=166809

        Reviewed by Sam Weinig.

        * WebCoreSupport/WebFrameLoaderClient.mm:
        (NetscapePluginWidget::handleEvent): Pass a reference.
        * WebView/WebView.mm:
        (-[WebView _addScrollerDashboardRegionsForFrameView:dashboardRegions:]):
        Updated since the children set now contains Ref instead of RefPtr.

2017-01-13  Sam Weinig  <sam@webkit.org>

        [WebIDL] Remove custom bindings for DeviceMotionEvent and DeviceOrientationEvent
        https://bugs.webkit.org/show_bug.cgi?id=167006

        Reviewed by Geoffrey Garen.

        * WebView/WebDeviceOrientation.mm:
        (convert):
        (-[WebDeviceOrientation initWithCanProvideAlpha:alpha:canProvideBeta:beta:canProvideGamma:gamma:]):
        Update for new use of std::optional.

2017-01-12  Joseph Pecoraro  <pecoraro@apple.com>

        Remove unnecessary includes of Page.h
        https://bugs.webkit.org/show_bug.cgi?id=166996

        Reviewed by Yusuke Suzuki.

        * DOM/DOMHTML.mm:
        * History/WebBackForwardList.mm:
        * Plugins/WebPluginController.mm:
        * WebCoreSupport/WebNotificationClient.mm:
        * WebCoreSupport/WebPlatformStrategies.mm:
        * WebCoreSupport/WebUserMediaClient.mm:
        * WebView/WebFullScreenController.mm:

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

        Add KEYBOARD_KEY_ATTRIBUTE / KEYBOARD_CODE_ATTRIBUTE to FeatureDefines.xcconfig
        https://bugs.webkit.org/show_bug.cgi?id=166995

        Reviewed by Jer Noble.

        Add KEYBOARD_KEY_ATTRIBUTE / KEYBOARD_CODE_ATTRIBUTE to FeatureDefines.xcconfig
        as some people are having trouble building without it.

        * Configurations/FeatureDefines.xcconfig:

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

        HTML form validation popover sometimes does not go away
        https://bugs.webkit.org/show_bug.cgi?id=166990
        <rdar://problem/29985957>

        Reviewed by Tim Horton.

        Update code using ValidationBubble now that it is RefCounted.

        * WebView/WebView.mm:
        (-[WebView showFormValidationMessage:withAnchorRect:]):

2017-01-10  Ryosuke Niwa  <rniwa@webkit.org>

        Remove pointerLockElement from DOMDocumentPrivate.h
        https://bugs.webkit.org/show_bug.cgi?id=166882

        Reviewed by Simon Fraser.

        Removed pointerLockElement declaration that was supposed to be removed in r209637.

        * DOM/DOMDocumentPrivate.h:

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

        Remove PassRefPtr use from "inspector", "platform/sql", and "platform/text"
        https://bugs.webkit.org/show_bug.cgi?id=166797

        Reviewed by Alex Christensen.

        * WebCoreSupport/WebEditorClient.h: Updated to take a reference.
        * WebCoreSupport/WebEditorClient.mm:
        (WebEditorClient::requestCheckingOfString): Take a reference
        instead of a PassRefPtr.

2017-01-05  Chris Dumez  <cdumez@apple.com>

        Turn preferLowPowerWebGLRendering setting on by default
        https://bugs.webkit.org/show_bug.cgi?id=166737
        <rdar://problem/29870033>

        Reviewed by Dean Jackson.

        Temporarily turn preferLowPowerWebGLRendering setting on by default until
        we deal better with WebGL content in background tabs.

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

2017-01-05  Enrica Casucci  <enrica@apple.com>

        Support File Promise during drag for macOS.
        https://bugs.webkit.org/show_bug.cgi?id=165204
        rdar://problem/19595567

        Reviewed by Tim Horton.

        Adds support for dropping a File Promise in a WebView.
        The implementation uses new File Promise API available in Sierra.

        * Misc/WebNSPasteboardExtras.mm:
        (+[NSPasteboard _web_dragTypesForURL]):
        * WebView/WebView.mm:
        (-[WebView performDragOperation:]):

2017-01-05  Andreas Kling  <akling@apple.com>

        Remove ChromeClient::needTouchEvents().
        <https://webkit.org/b/166723>

        Rubber-stamped by Antti Koivisto.

        * WebCoreSupport/WebChromeClient.h:

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

        Remove PassRefPtr use from the "html" directory, other improvements
        https://bugs.webkit.org/show_bug.cgi?id=166635

        Reviewed by Alex Christensen.

        * WebCoreSupport/WebChromeClient.h:
        * WebCoreSupport/WebChromeClient.mm:
        (WebChromeClient::loadIconForFiles): Take a reference instead of a pointer.

2017-01-04  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r210287.

        This change caused editing test failures on macOS.

        Reverted changeset:

        "Support File Promise during drag for macOS."
        https://bugs.webkit.org/show_bug.cgi?id=165204
        http://trac.webkit.org/changeset/210287

2017-01-04  Enrica Casucci  <enrica@apple.com>

        Support File Promise during drag for macOS.
        https://bugs.webkit.org/show_bug.cgi?id=165204
        rdar://problem/19595567

        Reviewed by Tim Horton.

        Adds support for dropping a File Promise in a WebView.
        The implementation uses new File Promise API available in Sierra.

        * Misc/WebNSPasteboardExtras.mm:
        (+[NSPasteboard _web_dragTypesForURL]):
        * WebView/WebView.mm:
        (-[WebView performDragOperation:]):

2017-01-04  Tim Horton  <timothy_horton@apple.com>

        Provide a setting for clients to always prefer low-power WebGL
        https://bugs.webkit.org/show_bug.cgi?id=166675
        <rdar://problem/29834093>

        Reviewed by Dan Bernstein.

        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):
        (-[WebPreferences preferLowPowerWebGLRendering]):
        (-[WebPreferences setPreferLowPowerWebGLRendering:]):
        * WebView/WebPreferencesPrivate.h:
        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]):
        Expose a new private preferLowPowerWebGLRendering WebKit1 preference.

2017-01-03  Tim Horton  <timothy_horton@apple.com>

        NSSpellChecker's recordResponse isn't called for unseen automatic corrections
        https://bugs.webkit.org/show_bug.cgi?id=166450
        <rdar://problem/29447824>

        Reviewed by Darin Adler.

        * WebCoreSupport/CorrectionPanel.h:
        * WebCoreSupport/CorrectionPanel.mm:
        (CorrectionPanel::recordAutocorrectionResponse):
        (CorrectionPanel::handleAcceptedReplacement):
        * WebCoreSupport/WebAlternativeTextClient.mm:
        (toCorrectionResponse):
        (WebAlternativeTextClient::recordAutocorrectionResponse):
        Funnel all calls to recordResponse:toCorrection:forWord:language:inSpellDocumentWithTag:
        through recordAutocorrectionResponse, for debugging's sake.
        Drop the NSView parameter because we don't need it, just the tag.
        Convert the new AutocorrectionResponseType value to its corresponding
        NSCorrectionResponse value.

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

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

        Reviewed by Dan Bernstein.

        * Info.plist:

2016-12-30  Darin Adler  <darin@apple.com>

        Remove PassRefPtr use from the "dom" directory, related cleanup
        https://bugs.webkit.org/show_bug.cgi?id=166569

        Reviewed by Alex Christensen.

        * WebCoreSupport/WebFrameLoaderClient.mm:
        (WebFrameLoaderClient::dispatchDidReceiveTitle): Updated to use struct.
        (WebFrameLoaderClient::updateGlobalHistory): Ditto.
        (WebFrameLoaderClient::setTitle): Ditto.
        (WebFrameLoaderClient::transitionToCommittedForNewPage): Ditto.
        * WebView/WebFrame.mm:
        (-[WebFrame _dispatchDidReceiveTitle:]): Use aggregate-style syntax for StringWithDirection.
        Not needed now, but useful later if we ever can get rid of the explicit constructors.
        (-[WebFrame loadArchive:]): Pass a reference to loadArchive.
        * WebView/WebHTMLRepresentation.mm:
        (-[WebHTMLRepresentation title]): Updated to use struct.

2016-12-25  Yusuke Suzuki  <utatane.tea@gmail.com>

        Propagate the source origin as much as possible
        https://bugs.webkit.org/show_bug.cgi?id=166348

        Reviewed by Darin Adler.

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

2016-12-23  Andy Estes  <aestes@apple.com>

        [iOS] DumpRenderTree triggers an assertion failure when calling +[WebPreferences _switchNetworkLoaderToNewTestingSession]
        https://bugs.webkit.org/show_bug.cgi?id=166471

        Reviewed by Andreas Kling.

        When DumpRenderTree starts up, it calls
        +[WebPreferences _switchNetworkLoaderToNewTestingSession] from the main thread. In Debug
        builds, this triggers the ASSERT(isMainThread()) in
        NetworkStorageSession::defaultNetworkStorageSession() because the Web thread has already
        started, we are on the main thread, and we are not holding the Web thread lock. This is
        causing all layout tests to crash in the iOS WK1 Debug configuration.

        * WebView/WebPreferences.mm: (+[WebPreferences _switchNetworkLoaderToNewTestingSession]):
        Take the Web thread lock before calling NetworkStorageSession::switchToNewTestingSession().

2016-12-22  Andy Estes  <aestes@apple.com>

        Make WebCore::EditorInsertAction an enum class
        https://bugs.webkit.org/show_bug.cgi?id=166424

        Reviewed by Brent Fulgham.

        * WebCoreSupport/WebEditorClient.mm:
        (kit):

2016-12-21  Beth Dakin  <bdakin@apple.com>

        Holding down on candidates in the TouchBar should show panel on screen
        https://bugs.webkit.org/show_bug.cgi?id=166367
        -and corresponding-
        <rdar://problem/28479236>

        Reviewed by Tim Horton.

        Stray whitespace.
        * WebCoreSupport/WebEditorClient.mm:
        (WebEditorClient::handleRequestedCandidates):

        Call the version of setCandidates: that takes a rect. We need to keep the helper 
        function in WK1 (unlike WK2) since we also use it for testing.
        * WebView/WebView.mm:
        (-[WebView showCandidates:forString:inRect:forSelectedRange:view:completionHandler:]):

2016-12-20  Dean Jackson  <dino@apple.com>

        Remove INDIE_UI
        https://bugs.webkit.org/show_bug.cgi?id=165881
        <rdar://problem/29672532>

        Reviewed by Simon Fraser.

        The Indie UI work has been discontinued.

        * Configurations/FeatureDefines.xcconfig:

2016-12-19  Yusuke Suzuki  <utatane.tea@gmail.com>

        [ES6] Enable ES6 Modules
        https://bugs.webkit.org/show_bug.cgi?id=165849

        Reviewed by Geoffrey Garen.

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

2016-12-16  Dave Hyatt  <hyatt@apple.com>

        [CSS Values] Make separate wrapper classes for the deprecated CSS Values OM
        https://bugs.webkit.org/show_bug.cgi?id=165968

        Reviewed by Andreas Kling.

        * DOM/DOMCSS.mm:
        (kitClass):
        * DOM/DOMCSSPrimitiveValue.mm:
        (-[DOMCSSPrimitiveValue getCounterValue]):
        (-[DOMCSSPrimitiveValue getRectValue]):
        (kit):
        * DOM/DOMCSSPrimitiveValueInternal.h:
        * DOM/DOMCSSStyleDeclaration.mm:
        * DOM/DOMCSSValue.mm:
        (kit):
        * DOM/DOMCSSValueInternal.h:
        * DOM/DOMCSSValueList.mm:
        * DOM/DOMCounter.mm:
        (kit):
        * DOM/DOMCounterInternal.h:
        * DOM/DOMRGBColor.mm:
        (kit):
        * DOM/DOMRGBColorInternal.h:
        * DOM/DOMRect.mm:
        (kit):
        * DOM/DOMRectInternal.h:
        * DOM/DOMUtility.mm:
        (createDOMWrapper):

2016-12-16  Chris Dumez  <cdumez@apple.com>

        HTML form validation bubble should be dismissed on navigation
        https://bugs.webkit.org/show_bug.cgi?id=165960
        <rdar://problem/29668086>

        Reviewed by Simon Fraser.

        Dismiss HTML form validation bubble on top-level navigation on Mac WK1.

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

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

        Use asString instead of toWTFString, toString, or getString when we already checked isString
        https://bugs.webkit.org/show_bug.cgi?id=165895

        Reviewed by Yusuke Suzuki.

        * Plugins/Hosted/NetscapePluginInstanceProxy.mm:
        (WebKit::NetscapePluginInstanceProxy::addValueToArray): Use asString/value instead of
        toWTFString.
        * WebView/WebView.mm:
        (aeDescFromJSValue): Use asString/value instead of getString.

2016-12-15  Chris Dumez  <cdumez@apple.com>

        Make sure HTML validation bubble's state is updated after layout
        https://bugs.webkit.org/show_bug.cgi?id=165922
        <rdar://problem/29694730>

        Reviewed by Simon Fraser.

        Make sure HTML validation bubble's state is updated after layout.
        In particular, if the validation bubble's associated element has
        moved or is no longer visible, we now hide the bubble.

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

2016-12-15  Chris Dumez  <cdumez@apple.com>

        Move charCode / keyCode / which attributes from UIEvent to KeyboardEvent
        https://bugs.webkit.org/show_bug.cgi?id=165904

        Reviewed by Sam Weinig.

        Update ObjC bindings so they keep building.

        * DOM/DOMUIEvent.mm:
        (-[DOMUIEvent keyCode]):
        (-[DOMUIEvent charCode]):

2016-12-15  Andreas Kling  <akling@apple.com>

        Always clear RenderLayer backing stores when going into page cache.
        <https://webkit.org/b/165901>

        Reviewed by Simon Fraser.

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

2016-12-12  Alex Christensen  <achristensen@webkit.org>

        Remove unused workaround for Silverlight
        https://bugs.webkit.org/show_bug.cgi?id=165773

        Reviewed by Dean Jackson.

        * Plugins/WebNetscapePluginView.mm:
        (-[WebNetscapePluginView _workaroundSilverlightFullscreenBug:]): Deleted.
        This code was introduced in January 2010.  Microsoft fixed their bug shortly thereafter.
        Allowing 6 years for users to update Silverlight is more than enough.
        Safari doesn't even use WebKit1 for this any more.
        I need this to be removed because this is the only non-WebGL code that needs to link against
        the OpenGL framework, and I'm changing how that is done to link only through ANGLE instead.

2016-12-12  Chris Dumez  <cdumez@apple.com>

        Document.visibilityState should use an IDL string enumeration
        https://bugs.webkit.org/show_bug.cgi?id=165774

        Reviewed by Daniel Bates.

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

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

        Remove implementation of legacy Mozilla-based Fullscreen API.
        https://bugs.webkit.org/show_bug.cgi?id=165689
        <rdar://problem/29603053>

        Reviewed by Eric Carlson.

        * DOM/DOMElement.mm:
        (-[DOMElement webkitRequestFullScreen:]):

2016-12-10  Filip Pizlo  <fpizlo@apple.com>

        The DOM should have an advancing wavefront opaque root barrier
        https://bugs.webkit.org/show_bug.cgi?id=165712

        Reviewed by Yusuke Suzuki.
        
        Propagate the JSDOMWindowBase::commonVM() -> commonVM() change.

        * Misc/WebCoreStatistics.mm:
        (+[WebCoreStatistics javaScriptObjectsCount]):
        (+[WebCoreStatistics javaScriptGlobalObjectsCount]):
        (+[WebCoreStatistics javaScriptProtectedObjectsCount]):
        (+[WebCoreStatistics javaScriptProtectedGlobalObjectsCount]):
        (+[WebCoreStatistics javaScriptProtectedObjectTypeCounts]):
        (+[WebCoreStatistics javaScriptObjectTypeCounts]):
        (+[WebCoreStatistics shouldPrintExceptions]):
        (+[WebCoreStatistics setShouldPrintExceptions:]):
        (+[WebCoreStatistics memoryStatistics]):
        (+[WebCoreStatistics javaScriptReferencedObjectsCount]):
        * Plugins/Hosted/NetscapePluginHostProxy.mm:
        (identifierFromIdentifierRep):
        * Plugins/Hosted/ProxyInstance.mm:
        (WebKit::ProxyInstance::getPropertyNames):
        * Plugins/WebNetscapePluginStream.mm:
        (WebNetscapePluginStream::wantsAllStreams):
        * Plugins/WebNetscapePluginView.mm:
        (-[WebNetscapePluginView sendEvent:isDrawRect:]):
        (-[WebNetscapePluginView privateBrowsingModeDidChange]):
        (-[WebNetscapePluginView setWindowIfNecessary]):
        (-[WebNetscapePluginView createPluginScriptableObject]):
        (-[WebNetscapePluginView getFormValue:]):
        (-[WebNetscapePluginView evaluateJavaScriptPluginRequest:]):
        (-[WebNetscapePluginView webFrame:didFinishLoadWithReason:]):
        (-[WebNetscapePluginView loadPluginRequest:]):
        (-[WebNetscapePluginView _printedPluginBitmap]):
        * Plugins/WebPluginController.mm:
        (-[WebPluginController plugInViewWithArguments:fromPluginPackage:]):
        (-[WebPluginController stopOnePlugin:]):
        (-[WebPluginController stopOnePluginForPageCache:]):
        (-[WebPluginController destroyOnePlugin:]):
        (-[WebPluginController startAllPlugins]):
        (-[WebPluginController addPlugin:]):

2016-12-09  Dave Hyatt  <hyatt@apple.com>

        [CSS Parser] Remove the old CSS Parser
        https://bugs.webkit.org/show_bug.cgi?id=165645

        Reviewed by Daniel Bates.

        * DOM/DOMCSS.mm:
        (kitClass):
        * DOM/DOMCSSRule.h:

2016-12-09  Eric Carlson  <eric.carlson@apple.com>

        Annotate MediaStream and WebRTC idl with EnabledAtRuntime flag
        https://bugs.webkit.org/show_bug.cgi?id=165251

        Reviewed by Dean Jackson.

        Based on a patch by Dr Alex Gouaillard <agouaillard@gmail.com>

        * WebView/WebPreferenceKeysPrivate.h: Add MediaStream and PeerConnection preferences.
        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):
        (-[WebPreferences mediaStreamEnabled]):
        (-[WebPreferences setMediaStreamEnabled:]):
        (-[WebPreferences peerConnectionEnabled]):
        (-[WebPreferences setPeerConnectionEnabled:]):
        * WebView/WebPreferencesPrivate.h:
        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]):

2016-12-09  Ryosuke Niwa  <rniwa@webkit.org>

        Don’t expose pointer lock in WebKit1 Objective-C API
        https://bugs.webkit.org/show_bug.cgi?id=165692

        Reviewed by Simon Fraser.

        * DOM/DOMDocument.mm:
        (-[DOMDocument pointerLockElement]): Deleted.
        (-[DOMDocument exitPointerLock]): Deleted.
        * DOM/DOMElement.mm:
        (-[DOMElement requestPointerLock]): Deleted.
        * DOM/DOMMouseEvent.mm:
        (-[DOMMouseEvent movementX]): Deleted.
        (-[DOMMouseEvent movementY]): Deleted.

2016-12-09  Ryosuke Niwa  <rniwa@webkit.org>

        document.webkitFullscreenElement leaks elements inside a shadow tree
        https://bugs.webkit.org/show_bug.cgi?id=158471

        Reviewed by Chris Dumez.

        Use the API for bindings to avoid exposing nodes inside a shadow tree.

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

2016-12-09  Beth Dakin  <bdakin@apple.com>

        Password fields should not show the emoji button in TouchBar
        https://bugs.webkit.org/show_bug.cgi?id=165673
        -and corresponding-
        rdar://problem/29235739

        Reviewed by Wenson Hsieh.

        This patch adds a new ivar for the password touch bar and password 
        candidateListTouchBarItem. Since this TouchBar will actually have a different set 
        of identifiers than the plain text TouchBar, it should just have its own variable.

        The candidate list should be the only item for passwords.
        * WebView/WebView.mm:
        (-[WebView _passwordTextTouchBarDefaultItemIdentifiers]):

        Account for _passwordTextTouchBar.
        (-[WebView didChangeAutomaticTextCompletion:]):
        (-[WebView setUpTextTouchBar:]):
        (-[WebView textTouchBar]):

        The empty candidates array is not needed. We can just set @[ ] as the candidates 
        for the _passwordTextCandidateListTouchBarItem. Safe guards already exist in the 
        other parts of the code to prevent us from requesting or setting other candidates 
        when in a password field. 
        (-[WebView updateTextTouchBar]):

        Account for _passwordTextTouchBar.
        (-[WebView candidateList]):
        * WebView/WebViewData.h:

2016-12-08  Filip Pizlo  <fpizlo@apple.com>

        Enable SharedArrayBuffer, remove the flag
        https://bugs.webkit.org/show_bug.cgi?id=165614

        Rubber stamped by Geoffrey Garen.

        * WebView/WebPreferencesPrivate.h:

2016-12-07  Dean Jackson  <dino@apple.com>

        Remove runtime toggle for pointer-lock
        https://bugs.webkit.org/show_bug.cgi?id=165577
        <rdar://problems/29566996>

        Reviewed by Jon Lee.

        Remove any runtime calls to check if pointer-lock is enabled. It's
        either compiled in or out.

        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (-[WebPreferences pointerLockEnabled]): Deleted.
        (-[WebPreferences setPointerLockEnabled:]): Deleted.
        * WebView/WebPreferencesPrivate.h:
        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]):

2016-12-06  Alexey Proskuryakov  <ap@apple.com>

        Correct SDKROOT values in xcconfig files
        https://bugs.webkit.org/show_bug.cgi?id=165487
        rdar://problem/29539209

        Reviewed by Dan Bernstein.

        Fix suggested by Dan Bernstein.

        * Configurations/DebugRelease.xcconfig:

2016-12-05  Simon Fraser  <simon.fraser@apple.com>

        Improve the behavior of scroll-into-view when the target is inside position:fixed
        https://bugs.webkit.org/show_bug.cgi?id=165354

        Reviewed by Zalan Bujtas.

        Plumb through 'insideFixed'. We don't get compute it, so behavior from
        these call sites won't change.

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

2016-12-06  Simon Fraser  <simon.fraser@apple.com>

        Enable visual viewports by default on Mac, and iOS Wk2
        https://bugs.webkit.org/show_bug.cgi?id=165452

        Reviewed by Zalan Bujtas.

        Turn visual viewports on by default for WK1 on Mac.

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

2016-12-05  Dean Jackson  <dino@apple.com>

        pointer lock needs to be feature detectable
        https://bugs.webkit.org/show_bug.cgi?id=165426
        <rdar://problem/29486715>

        Reviewed by Antoine Quint.

        Set the RuntimeEnabledFeature as preferences
        change.

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

2016-12-05  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r209299.

        This change appears to have caused LayoutTest failures on
        Sierra WK1.

        Reverted changeset:

        "Improve the behavior of scroll-into-view when the target is
        inside position:fixed"
        https://bugs.webkit.org/show_bug.cgi?id=165354
        http://trac.webkit.org/changeset/209299

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

        Improve the behavior of scroll-into-view when the target is inside position:fixed
        https://bugs.webkit.org/show_bug.cgi?id=165354

        Reviewed by Zalan Bujtas.

        Plumb through 'insideFixed'. We don't get compute it, so behavior from
        these call sites won't change.

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

2016-12-02  Andy Estes  <aestes@apple.com>

        [Cocoa] Adopt the PRODUCT_BUNDLE_IDENTIFIER build setting
        https://bugs.webkit.org/show_bug.cgi?id=164492

        Reviewed by Dan Bernstein.

        * Configurations/WebKitLegacy.xcconfig: Set PRODUCT_BUNDLE_IDENTIFIER to
        com.apple.$(PRODUCT_NAME:rfc1034identifier).
        * Info.plist: Changed CFBundleIdentifier's value from com.apple.${PRODUCT_NAME} to
        ${PRODUCT_BUNDLE_IDENTIFIER}.

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

        Regression(r209252): HTML interactive validation should not be enabled on iOS WK1 yet
        https://bugs.webkit.org/show_bug.cgi?id=165328

        Reviewed by Simon Fraser.

        Only enable HTML interactive form validation on Mac WK1, not iOS WK1.

        * WebView/WebViewData.mm:
        (-[WebViewPrivate init]):

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

        [Mac][WK1] Implement new HTML interactive form validation user interface
        https://bugs.webkit.org/show_bug.cgi?id=164483

        Reviewed by Simon Fraser.

        Implement new HTML interactive form validation user interface on Mac
        WK1 and enable it by default.

        * WebCoreSupport/WebValidationMessageClient.h: Added.
        * WebCoreSupport/WebValidationMessageClient.mm: Added.
        (WebValidationMessageClient::WebValidationMessageClient):
        (WebValidationMessageClient::~WebValidationMessageClient):
        (WebValidationMessageClient::showValidationMessage):
        (WebValidationMessageClient::hideValidationMessage):
        (WebValidationMessageClient::isValidationMessageVisible):
        * WebView/WebHTMLView.mm:
        (-[WebHTMLView _frameOrBoundsChanged]):
        * WebView/WebView.mm:
        (-[WebView _commonInitializationWithFrameName:groupName:]):
        (-[WebView _willStartScrollingOrZooming]):
        (-[WebView _contentsOfUserInterfaceItem:]):
        (-[WebView _scaleWebView:atOrigin:]):
        (-[WebView _didScrollDocumentInFrameView:]):
        (-[WebView _setZoomMultiplier:isTextOnly:]):
        (-[WebView showFormValidationMessage:withAnchorRect:]):
        (-[WebView hideFormValidationMessage]):
        * WebView/WebViewData.h:
        * WebView/WebViewData.mm:
        (-[WebViewPrivate init]):
        * WebView/WebViewInternal.h:
        * WebView/WebViewPrivate.h:

2016-12-01  Jiewen Tan  <jiewen_tan@apple.com>

        Add a runtime flag for SubtleCrypto
        https://bugs.webkit.org/show_bug.cgi?id=164982

        Reviewed by Brent Fulgham.

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

2016-11-30  Said Abou-Hallawa  <sabouhallawa@apple.com>

        Add separate settings and preferences to enable/disable async decoding for large images and animated images
        https://bugs.webkit.org/show_bug.cgi?id=165177

        Reviewed by Simon Fraser.
        
        Hook up the async image decoding settings for WebKit1.

        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):
        (-[WebPreferences largeImageAsyncDecodingEnabled]):
        (-[WebPreferences setLargeImageAsyncDecodingEnabled:]):
        (-[WebPreferences animatedImageAsyncDecodingEnabled]):
        (-[WebPreferences setAnimatedImageAsyncDecodingEnabled:]):
        (-[WebPreferences asyncImageDecodingEnabled]): Deleted.
        (-[WebPreferences setAsyncImageDecodingEnabled:]): Deleted.
        * WebView/WebPreferencesPrivate.h:
        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]):

2016-11-29  Andy Estes  <aestes@apple.com>

        [Cocoa] Enable two clang warnings recommended by Xcode
        https://bugs.webkit.org/show_bug.cgi?id=164498

        Reviewed by Mark Lam.

        * Configurations/Base.xcconfig: Enabled CLANG_WARN_INFINITE_RECURSION and CLANG_WARN_SUSPICIOUS_MOVE.

2016-11-26  Yusuke Suzuki  <utatane.tea@gmail.com>

        [WTF] Import std::optional reference implementation as WTF::Optional
        https://bugs.webkit.org/show_bug.cgi?id=164199

        Reviewed by Saam Barati and Sam Weinig.

        Use WTF::Optional::value_or.

        * DOM/DOMHTMLOptionsCollection.mm:
        (-[DOMHTMLOptionsCollection add:index:]):
        * Plugins/Hosted/NetscapePluginInstanceProxy.mm:
        (WebKit::NetscapePluginInstanceProxy::evaluate):
        * Plugins/WebNetscapePluginView.mm:
        (-[WebNetscapePluginView sendEvent:isDrawRect:]):
        * WebCoreSupport/WebFrameLoaderClient.h:
        * WebCoreSupport/WebFrameLoaderClient.mm:
        (WebFrameLoaderClient::dispatchDidCommitLoad):
        * WebCoreSupport/WebPaymentCoordinatorClient.h:
        * WebCoreSupport/WebPaymentCoordinatorClient.mm:
        (WebPaymentCoordinatorClient::completeShippingMethodSelection):
        (WebPaymentCoordinatorClient::completeShippingContactSelection):
        (WebPaymentCoordinatorClient::completePaymentMethodSelection):
        * WebCoreSupport/WebSecurityOrigin.mm:
        (-[WebSecurityOrigin port]):
        * WebView/WebHTMLView.mm:
        (toAction):
        (toTag):

2016-11-26  Sam Weinig  <sam@webkit.org>

        Convert IntersectionObserver over to using RuntimeEnabledFeatures so it can be properly excluded from script
        https://bugs.webkit.org/show_bug.cgi?id=164965

        Reviewed by Simon Fraser.

        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (-[WebPreferences intersectionObserverEnabled]):
        (-[WebPreferences setIntersectionObserverEnabled:]):
        * WebView/WebPreferencesPrivate.h:
        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]):
        Add a preference, defaulting to off, for enabling IntersectionObserver.

2016-11-22  Dan Bernstein  <mitz@apple.com>

        [Mac] In Legacy WebKit, pressing an arrow key in editable content doesn’t hide the mouse cursor
        https://bugs.webkit.org/show_bug.cgi?id=165036
        <rdar://problem/5708580>

        Reviewed by Alexey Proskuryakov.

        * WebView/WebHTMLView.mm:
        (-[WebHTMLView performKeyEquivalent:]): Hide the cursor if WebCore handled the event,
          similarly to what we do in -keyDown: and to what WKWebView does with all key events.

2016-11-21  Alex Christensen  <achristensen@webkit.org>

        Fix Sierra CMake build after r208452
        https://bugs.webkit.org/show_bug.cgi?id=164437

        * WebView/WebView.mm:
        (-[WebView updateMediaTouchBar]):
        I haven't enabled VIDEO_PRESENTATION_MODE in the CMake build yet.
        It's needed for playbackSessionInterface to exist.

2016-11-18  Enrica Casucci  <enrica@apple.com>

        Refactor drag and drop for WebKit2 to encode DragData message exchange.
        https://bugs.webkit.org/show_bug.cgi?id=164945

        Reviewed by Tim Horton.

        * WebCoreSupport/WebDragClient.h:
        * WebCoreSupport/WebDragClient.mm:
        (WebDragClient::actionMaskForDrag):
        (WebDragClient::willPerformDragDestinationAction):

2016-11-18  Jeremy Jones  <jeremyj@apple.com>

        Add runtime flag to enable pointer lock. Enable pointer lock feature for mac.
        https://bugs.webkit.org/show_bug.cgi?id=163801

        Reviewed by Simon Fraser.

        Plumb through PointerLockEnabled setting.

        * Configurations/FeatureDefines.xcconfig:
        * WebCoreSupport/WebChromeClient.mm:
        (WebChromeClient::requestPointerUnlock):
        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (-[WebPreferences pointerLockEnabled]):
        (-[WebPreferences setPointerLockEnabled:]):
        * WebView/WebPreferencesPrivate.h:
        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]):

2016-11-17  Dan Bernstein  <mitz@apple.com>

        Try to fix some non-macOS builds.

        * WebView/WebView.mm:

2016-11-16  Dave Hyatt  <hyatt@apple.com>

        [CSS Parser] Add @supports, @keyframe and media query parsing options
        https://bugs.webkit.org/show_bug.cgi?id=164821

        Reviewed by Sam Weinig and Zalan Bujtas.

        Fix up the create call now that fallback descriptor syntax is gone.

        * DOM/DOM.mm:
        (-[DOMHTMLLinkElement _mediaQueryMatches]):

2016-11-17  Saam Barati  <sbarati@apple.com>

        Remove async/await compile time flag and enable tests
        https://bugs.webkit.org/show_bug.cgi?id=164828
        <rdar://problem/28639334>

        Reviewed by Yusuke Suzuki.

        * Configurations/FeatureDefines.xcconfig:

2016-11-17  Yusuke Suzuki  <utatane.tea@gmail.com>

        [JSC] WTF::TemporaryChange with WTF::SetForScope
        https://bugs.webkit.org/show_bug.cgi?id=164761

        Reviewed by Saam Barati.

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

2016-11-16  Yusuke Suzuki  <utatane.tea@gmail.com>

        [ES6][WebCore] Change ES6_MODULES compile time flag to runtime flag
        https://bugs.webkit.org/show_bug.cgi?id=164827

        Reviewed by Ryosuke Niwa.

        * Configurations/FeatureDefines.xcconfig:
        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):
        (-[WebPreferences es6ModulesEnabled]):
        (-[WebPreferences setES6ModulesEnabled:]):
        * WebView/WebPreferencesPrivate.h:
        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]):

2016-11-14  Alex Christensen  <achristensen@webkit.org>

        Move SecurityOrigin::createFromDatabaseIdentifier to SecurityOriginData
        https://bugs.webkit.org/show_bug.cgi?id=164720

        Reviewed by Brady Eidson.

        * Storage/WebDatabaseManager.mm:
        (-[WebDatabaseManager origins]):
        (-[WebDatabaseManager databasesWithOrigin:]):
        (-[WebDatabaseManager deleteOrigin:]):
        (-[WebDatabaseManager deleteDatabase:withOrigin:]):
        * Storage/WebDatabaseManagerClient.h:
        * Storage/WebDatabaseManagerClient.mm:
        (DidModifyOriginData::dispatchToMainThread):
        (DidModifyOriginData::DidModifyOriginData):
        (WebDatabaseManagerClient::dispatchDidModifyOrigin):
        (WebDatabaseManagerClient::dispatchDidModifyDatabase):
        * Storage/WebDatabaseQuotaManager.mm:
        (-[WebDatabaseQuotaManager usage]):
        (-[WebDatabaseQuotaManager quota]):
        (-[WebDatabaseQuotaManager setQuota:]):
        * Storage/WebStorageManager.mm:
        (-[WebStorageManager origins]):
        (-[WebStorageManager deleteOrigin:]):
        * Storage/WebStorageTrackerClient.h:
        * Storage/WebStorageTrackerClient.mm:
        (WebStorageTrackerClient::dispatchDidModifyOrigin):
        * WebCoreSupport/WebSecurityOrigin.mm:
        (-[WebSecurityOrigin usage]):
        (-[WebSecurityOrigin quota]):
        (-[WebSecurityOrigin setQuota:]):

2016-11-13  Darin Adler  <darin@apple.com>

        Fix exception handling in SQL database code, streamline and update code
        https://bugs.webkit.org/show_bug.cgi?id=164685

        Reviewed by Sam Weinig.

        * Storage/WebDatabaseManager.mm:
        (-[WebDatabaseManager origins]): Updated to use DatabaseTracker and pass
        a reference.
        (-[WebDatabaseManager databasesWithOrigin:]): Ditto.
        (-[WebDatabaseManager detailsForDatabase:withOrigin:]): Pass reference,
        but continue to use DatabaseManager.
        (-[WebDatabaseManager deleteOrigin:]): Use DatabaseTracker and pass a
        reference.
        (-[WebDatabaseManager deleteDatabase:withOrigin:]): Ditto.

        * Storage/WebDatabaseManagerClient.h: Updated to take references.
        * Storage/WebDatabaseManagerClient.mm:
        (WebDatabaseManagerClient::WebDatabaseManagerClient): Initialize data
        members in the class definition.
        (DidModifyOriginData::dispatchToMainThread): Take references.
        (DidModifyOriginData::DidModifyOriginData): Ditto.
        (WebDatabaseManagerClient::dispatchDidModifyOrigin): Ditto.
        (WebDatabaseManagerClient::dispatchDidModifyDatabase): Ditto.
        (WebDatabaseManagerClient::dispatchDidAddNewOrigin): Ditto. Also use
        DatabaseTracker::singleton instead of tracker.

        * Storage/WebDatabaseQuotaManager.mm:
        (-[WebDatabaseQuotaManager initWithOrigin:]): Reject nil pointer argument.
        (-[WebDatabaseQuotaManager usage]): Use reference instead of pointer.
        (-[WebDatabaseQuotaManager quota]): Ditto.
        (-[WebDatabaseQuotaManager setQuota:]): Ditto.
        * WebCoreSupport/WebSecurityOrigin.mm:
        (-[WebSecurityOrigin initWithURL:]): Tweaked code a bit.
        (-[WebSecurityOrigin usage]): Use DatabaseTracker and pass a reference.
        (-[WebSecurityOrigin quota]): Ditto.
        (-[WebSecurityOrigin setQuota:]): Ditto.
        * WebView/WebFrame.mm:
        (-[WebFrame _cacheabilityDictionary]): Pass a reference.

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

        Remove a few assorted uses of ExceptionCode
        https://bugs.webkit.org/show_bug.cgi?id=164683

        Reviewed by Chris Dumez.

        * DOM/DOMDOMImplementation.mm:
        (-[DOMImplementation createDocumentType:publicId:systemId:]):
        Use raiseOnDOMError instead of much longer hand written equivalent.
        (-[DOMImplementation createDocument:qualifiedName:doctype:]): Ditto.

        * DOM/DOMDocument.mm:
        (-[DOMDocument createEntityReference:]): Use raiseNotSupportedErrorException
        so we are not using a specific exception code.

        * DOM/DOMHTMLOptionsCollection.mm:
        (-[DOMHTMLOptionsCollection add:index:]): Use raiseOnDOMError instead of
        much longer hand written equivalent.
        * DOM/DOMHTMLSelectElement.mm:
        (-[DOMHTMLSelectElement add:before:]): Ditto. Also removed unneeded return
        statement after calling a "no return" function.

        * DOM/ExceptionHandlers.h: Removed overloads of raiseDOMException and
        raiseOnDOMError functions that take ExceptionCode; keep the ones that take
        Exception and ExceptionOr. Renamed the other overload of raiseDOMException
        to raiseDOMErrorException; it is only used as the non-inline implementation
        part of the inline raiseOnDOMError function.
        * DOM/ExceptionHandlers.mm:
        (raiseDOMErrorException): Renamed. Made the ExceptionCode overload be local
        to this source file instead of in the header.
        (raiseTypeErrorException): Updated for name change.
        (raiseNotSupportedErrorException): Added.

2016-11-11  Ryosuke Niwa  <rniwa@webkit.org>

        Hovering over a slotted Text node clears hover state
        https://bugs.webkit.org/show_bug.cgi?id=164002
        <rdar://problem/29040471>

        Reviewed by Simon Fraser.

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

2016-11-11  Wenson Hsieh  <wenson_hsieh@apple.com>

        [WK2] autocorrect and autocapitalize attributes do not work in contenteditable elements
        https://bugs.webkit.org/show_bug.cgi?id=164538
        <rdar://problem/8418711>

        Reviewed by Ryosuke Niwa.

        Account for renaming HTMLElement::autocorrect to HTMLElement::shouldAutocorrect, as well as moving
        WebAutocapitalizeType to WebKit from WebCore. Additionally, moves the -autocorrect and -autocapitalize SPIs out
        of HTML(Input|Form|TextArea)ElementPrivate.h and into HTMLElementPrivate.h. This also means removing redundant
        code for interfacing with the unwrapped HTMLElement's autocorrect and autocapitalize attributes.

        * DOM/DOMHTML.mm:
        (webAutocapitalizeType):
        (-[DOMHTMLInputElement _autocapitalizeType]):
        (-[DOMHTMLTextAreaElement _autocapitalizeType]):
        * DOM/DOMHTMLElement.mm:
        (-[DOMHTMLElement autocorrect]):
        (-[DOMHTMLElement setAutocorrect:]):
        (-[DOMHTMLElement autocapitalize]):
        (-[DOMHTMLElement setAutocapitalize:]):
        * DOM/DOMHTMLElementPrivate.h: Copied from Source/WebCore/html/Autocapitalize.h.
        * DOM/DOMHTMLFormElement.mm:
        (-[DOMHTMLFormElement autocorrect]): Deleted.
        (-[DOMHTMLFormElement setAutocorrect:]): Deleted.
        (-[DOMHTMLFormElement autocapitalize]): Deleted.
        (-[DOMHTMLFormElement setAutocapitalize:]): Deleted.
        * DOM/DOMHTMLInputElement.mm:
        (-[DOMHTMLInputElement autocorrect]): Deleted.
        (-[DOMHTMLInputElement setAutocorrect:]): Deleted.
        (-[DOMHTMLInputElement autocapitalize]): Deleted.
        (-[DOMHTMLInputElement setAutocapitalize:]): Deleted.
        * DOM/DOMHTMLInputElementPrivate.h:
        * DOM/DOMHTMLTextAreaElement.mm:
        (-[DOMHTMLTextAreaElement autocorrect]): Deleted.
        (-[DOMHTMLTextAreaElement setAutocorrect:]): Deleted.
        (-[DOMHTMLTextAreaElement autocapitalize]): Deleted.
        (-[DOMHTMLTextAreaElement setAutocapitalize:]): Deleted.
        * DOM/DOMHTMLTextAreaElementPrivate.h:

        We need to import DOMHTMLElementPrivate.h here to avoid breaking UIKit. We should follow this up with a UIKit
        change to import DOMHTMLElementPrivate.h directly.

        * DOM/DOMPrivate.h:
        * DOM/WebAutocapitalizeTypes.h: Copied from Tools/WebKitTestRunner/ios/UIKitSPI.h.
        * MigrateHeaders.make:

2016-11-11  Beth Dakin  <bdakin@apple.com>

        Move to modern TouchBar methods
        https://bugs.webkit.org/show_bug.cgi?id=164655
        -and corresponding-
        rdar://problem/29226911

        Reviewed by Wenson Hsieh.

        customizationDefaultItemIdentifiers -> defaultItemIdentifiers
        itemIdentifiers -> defaultItemIdentifiers
        defaultItems -> templateItems

        * WebView/WebView.mm:
        (-[WebView _plainTextTouchBarDefaultItemIdentifiers]):
        (-[WebView _richTextTouchBarDefaultItemIdentifiers]):
        (-[WebView setUpTextTouchBar:]):
        (-[WebView updateTextTouchBar]):
        (-[WebView _plainTextTouchBarCustomizationDefaultItemIdentifiers]): Deleted.
        (-[WebView _richTextTouchBarCustomizationDefaultItemIdentifiers]): Deleted.

2016-11-11  Darin Adler  <darin@apple.com>

        Move Node from ExceptionCode to ExceptionOr
        https://bugs.webkit.org/show_bug.cgi?id=164515

        Reviewed by Sam Weinig.

        * DOM/DOMHTMLSelectElement.mm:
        (-[DOMHTMLSelectElement remove:]): Call remove instead of removeByIndex
        now that it was renamed.
        * DOM/DOMNode.mm:
        (-[DOMNode setNodeValue:]): Updated exception handling.
        (-[DOMNode setPrefix:]): Ditto.
        (-[DOMNode setTextContent:]): Ditto.
        (-[DOMNode insertBefore:refChild:]): Ditto.
        (-[DOMNode replaceChild:oldChild:]): Ditto.
        (-[DOMNode removeChild:]): Ditto.
        (-[DOMNode appendChild:]): Ditto.
        (-[DOMNode cloneNode:]): Ditto.

2016-11-11  Beth Dakin  <bdakin@apple.com>

        Get touch bar code building for open source builds
        https://bugs.webkit.org/show_bug.cgi?id=164610

        Reviewed by Wenson Hsieh.

        * WebKitPrefix.h:

2016-11-10  Alex Christensen  <achristensen@webkit.org>

        Fix assertion after r208534.
        https://bugs.webkit.org/show_bug.cgi?id=160497

        * WebView/WebView.mm:
        (-[WebView _commonInitializationWithFrameName:groupName:]):
        (WebInstallMemoryPressureHandler):
        WebInstallMemoryPressureHandler can be called before [WebView initWithFrame:frameName:groupName:]
        When this happens, we should use the same std::once_flag to make sure we install the MemoryPressureHandler::singleton
        only once, otherwise we get an assertion !m_installed in MemoryPressureHandler::setLowMemoryHandler.

2016-11-10  Alex Christensen  <achristensen@webkit.org>

        Move SecurityOrigin::databaseIdentifier() to SecurityOriginData
        https://bugs.webkit.org/show_bug.cgi?id=164573

        Reviewed by Brady Eidson.

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

2016-10-14  Carlos Garcia Campos  <cgarcia@igalia.com>

        MemoryPressureHandler shouldn't know how to release WebCore memory
        https://bugs.webkit.org/show_bug.cgi?id=160497

        Reviewed by Michael Catanzaro.

        Set the low memory handler before installing the memory pressure handler.

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

2016-11-09  Ryosuke Niwa  <rniwa@webkit.org>

        WebHTMLView's _attributeStringFromDOMRange should use HTMLConverter instead of NSAttributedString's _initWithDOMRange
        https://bugs.webkit.org/show_bug.cgi?id=164501
        <rdar://problem/29152282>

        Reviewed by Sam Weinig.

        Align what [WebHTMLView attributedString] returns to what would be used on copy & paste by using HTMLConverter
        instead of _initWithDOMRange in [WebHTMLView _attributeStringFromDOMRange].

        * WebView/WebHTMLView.mm:
        (-[WebHTMLView _attributedStringFromDOMRange:]): Renamed from _attributeStringFromDOMRange.
        (-[WebHTMLView attributedString]):
        (-[WebHTMLView selectedAttributedString]):
        (-[WebHTMLView selectedString]): Moved to reduce the number of occurrences of the if-defs.

2016-11-04  Brent Fulgham  <bfulgham@apple.com>

        Local HTML should be blocked from localStorage access unless "Disable Local File Restrictions" is checked
        https://bugs.webkit.org/show_bug.cgi?id=155185
        <rdar://problem/11101440>

        Reviewed by Brady Eidson.

        Provide SPI to access the new quirk for localStorage. The quirk defaults to 'on'. When active, this
        quirk says that localStorage access should be granted, without needing to grant universal file access.

        If the quirk is turned off, then localStorage is blocked unless the WebKit client explicitly
        grants universal file access.

        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (-[WebPreferences needsLocalStorageQuirk]): Added.
        (-[WebPreferences setNeedsLocalStorageQuirk:]): Added.
        * WebView/WebPreferencesPrivate.h:
        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]): Honor the new localStorage quirk.

2016-11-09  Alex Christensen  <achristensen@webkit.org>

        Clean up Storage code
        https://bugs.webkit.org/show_bug.cgi?id=164562

        Reviewed by Brady Eidson.

        * Storage/WebStorageManager.mm:
        (-[WebStorageManager origins]):
        (-[WebStorageManager deleteAllOrigins]):
        (-[WebStorageManager deleteOrigin:]):
        (-[WebStorageManager diskUsageForOrigin:]):
        (-[WebStorageManager syncLocalStorage]):
        (-[WebStorageManager syncFileSystemAndTrackerDatabase]):
        (+[WebStorageManager setStorageDatabaseIdleInterval:]):
        (+[WebStorageManager closeIdleLocalStorageDatabases]):
        (WebKitInitializeStorageIfNecessary):
        * WebView/WebView.mm:
        (+[WebView _applicationWillTerminate]):

2016-11-09  Beth Dakin  <bdakin@apple.com>

        Another attempted build fix.

        * WebView/WebView.mm:

2016-11-09  Beth Dakin  <bdakin@apple.com>

        Attempted build fix.

        * WebView/WebView.mm:

2016-11-09  Darin Adler  <darin@apple.com>

        Move Range from ExceptionCode to ExceptionOr
        https://bugs.webkit.org/show_bug.cgi?id=164457

        Reviewed by Alex Christensen.

        * DOM/DOMRange.mm:
        (-[DOMRange setStart:offset:]): Updated exception handling.
        (-[DOMRange setEnd:offset:]): Ditto.
        (-[DOMRange setStartBefore:]): Ditto.
        (-[DOMRange setStartAfter:]): Ditto.
        (-[DOMRange setEndBefore:]): Ditto.
        (-[DOMRange setEndAfter:]): Ditto.
        (-[DOMRange selectNode:]): Ditto.
        (-[DOMRange selectNodeContents:]): Ditto.
        (-[DOMRange compareBoundaryPoints:sourceRange:]): Ditto.
        (-[DOMRange deleteContents]): Ditto.
        (-[DOMRange extractContents]): Ditto.
        (-[DOMRange cloneContents]): Ditto.
        (-[DOMRange insertNode:]): Ditto.
        (-[DOMRange surroundContents:]): Ditto.
        (-[DOMRange createContextualFragment:]): Ditto.
        (-[DOMRange compareNode:]): Ditto.
        (-[DOMRange intersectsNode:]): Ditto.
        (-[DOMRange comparePoint:offset:]): Ditto.
        (-[DOMRange isPointInRange:offset:]): Ditto.
        (-[DOMRange expand:]): Ditto.
        * WebView/WebFrame.mm:
        (-[WebFrame _documentFragmentWithMarkupString:baseURLString:]): Ditto.
        (-[WebFrame _smartDeleteRangeForProposedRange:]): Deleted.
        This function was incorrectly implemented (set both start and end of
        the range to the computed start), not declared in any header file,
        not used anywhere inside WebKit, and I also could not find a use of it
        in outside-WebKit Apple code.
        * mac/DOM/DOMUIKitExtensions.mm:
        (-[DOMRange move:inDirection:]): Ditto.
        (-[DOMRange extend:inDirection:]): Ditto.

2016-11-09  Darin Adler  <darin@apple.com>

        Move EventTarget from ExceptionCode to ExceptionOr
        https://bugs.webkit.org/show_bug.cgi?id=164465

        Reviewed by Youenn Fablet.

        * DOM/DOMNode.mm:
        (-[DOMNode dispatchEvent:]): Updated exception handling.

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

        [Mac] Stop using deprecated AppKit enumeration values
        https://bugs.webkit.org/show_bug.cgi?id=164494

        Reviewed by Darin Adler.

        Stop using deprecated AppKit enumeration values.

        * Carbon/CarbonWindowAdapter.mm:
        (-[CarbonWindowAdapter initWithCarbonWindowRef:takingOwnership:disableOrdering:carbon:]):
        (-[CarbonWindowAdapter sendSuperEvent:]):
        * Plugins/Hosted/NetscapePluginHostProxy.mm:
        (WebKit::NetscapePluginHostProxy::beginModal):
        * Plugins/Hosted/NetscapePluginInstanceProxy.mm:
        (WebKit::NetscapePluginInstanceProxy::syntheticKeyDownWithCommandModifier):
        * Plugins/Hosted/WebHostedNetscapePluginView.mm:
        (-[WebHostedNetscapePluginView drawRect:]):
        * Plugins/WebNetscapePluginEventHandlerCocoa.mm:
        (WebNetscapePluginEventHandlerCocoa::syntheticKeyDownWithCommandModifier):
        * WebCoreSupport/PopupMenuMac.mm:
        (PopupMenuMac::populate):
        (PopupMenuMac::show):
        * WebCoreSupport/WebContextMenuClient.mm:
        (WebContextMenuClient::showContextMenu):
        * WebCoreSupport/WebFrameLoaderClient.mm:
        (WebFrameLoaderClient::actionDictionary):
        * WebCoreSupport/WebInspectorClient.mm:
        (WebInspectorFrontendClient::canAttach):
        (-[WebInspectorWindowController window]):
        * WebInspector/WebNodeHighlight.mm:
        (-[WebNodeHighlight initWithTargetView:inspectorController:]):
        * WebView/WebFrameView.mm:
        (-[WebFrameView keyDown:keyDown:]):
        * WebView/WebFullScreenController.mm:
        (-[WebFullScreenController init]):
        (createBackgroundFullscreenWindow):
        * WebView/WebHTMLView.mm:
        (-[WebHTMLView _postFakeMouseMovedEventForFlagsChangedEvent:]):
        (-[WebHTMLView _setMouseDownEvent:_setMouseDownEvent:]):
        (-[WebHTMLView _updateMouseoverWithFakeEvent]):
        (isQuickLookEvent):
        (-[WebHTMLView hitTest:]):
        (-[WebHTMLView _sendToolTipMouseExited]):
        (-[WebHTMLView _sendToolTipMouseEntered]):
        (mouseEventIsPartOfClickOrDrag):
        (-[WebHTMLView _updateMouseoverWithEvent:]):
        (-[WebHTMLView _autoscroll]):
        (-[WebHTMLView acceptsFirstResponder]):
        (-[WebHTMLView viewDidMoveToWindow]):
        (-[WebHTMLView mouseDown:mouseDown:]):
        (currentKeyboardEvent):
        (-[WebHTMLView _handleStyleKeyEquivalent:]):
        (-[WebHTMLView _interpretKeyEvent:savingCommands:]):
        * WebView/WebPDFView.mm:
        (-[WebPDFView hitTest:]):
        (-[WebPDFView PDFViewWillClickOnLink:withURL:]):
        (-[WebPDFView _fakeKeyEventWithFunctionKey:]):
        * WebView/WebTextCompletionController.mm:
        (-[WebTextCompletionController _buildUI]):
        (-[WebTextCompletionController _placePopupWindow:]):
        * WebView/WebView.mm:
        (-[WebView applicationFlags:]):

2016-11-09  Beth Dakin  <bdakin@apple.com>

        Support TouchBar in WebKit
        https://bugs.webkit.org/show_bug.cgi?id=164437
        -and corresponding-
        rdar://problem/28876524

        Reviewed by Darin Adler.

        * WebCoreSupport/WebEditorClient.mm:
        (WebEditorClient::respondToChangedSelection):
        (WebEditorClient::updateEditorStateAfterLayoutIfEditabilityChanged):
        * WebView/WebHTMLView.mm:
        (-[WebHTMLView candidateListTouchBarItem]):
        * WebView/WebView.mm:
        (-[_WebTextListTouchBarViewController initWithWebView:]):
        (-[_WebTextListTouchBarViewController _selectList:]):
        (-[_WebTextListTouchBarViewController setCurrentListType:]):
        (-[WebTextTouchBarItemController initWithWebView:]):
        (-[WebTextTouchBarItemController itemForIdentifier:]):
        (-[WebTextTouchBarItemController webTextListTouchBarViewController]):
        (-[WebTextTouchBarItemController setTextIsBold:]):
        (-[WebTextTouchBarItemController setTextIsItalic:]):
        (-[WebTextTouchBarItemController setTextIsUnderlined:]):
        (-[WebTextTouchBarItemController _webChangeTextStyle:]):
        (-[WebTextTouchBarItemController setCurrentTextAlignment:]):
        (-[WebTextTouchBarItemController _webChangeTextAlignment:]):
        (-[WebTextTouchBarItemController textColor]):
        (-[WebTextTouchBarItemController setTextColor:]):
        (-[WebTextTouchBarItemController _webChangeColor:]):
        (-[WebTextTouchBarItemController textListViewController]):
        (-[WebView _commonInitializationWithFrameName:groupName:]):
        (-[WebView showCandidates:forString:inRect:forSelectedRange:view:completionHandler:]):
        (-[WebView shouldRequestCandidates]):
        (-[WebView forceRequestCandidatesForTesting]):
        (-[WebView makeTouchBar]):
        (-[WebView touchBar:makeItemForIdentifier:]):
        (textCheckingResultFromNSTextCheckingResult):
        (-[WebView candidateListTouchBarItem:endSelectingCandidateAtIndex:]):
        (-[WebView candidateListTouchBarItem:changedCandidateListVisibility:]):
        (-[WebView _setUpPlaybackControlsManagerForMediaElement:]):
        (-[WebView _clearPlaybackControlsManager]):
        (-[WebView _dismissTextTouchBarPopoverItemWithIdentifier:]):
        (-[WebView _textTouchBarCustomizationAllowedIdentifiers]):
        (-[WebView _plainTextTouchBarCustomizationDefaultItemIdentifiers]):
        (-[WebView _richTextTouchBarCustomizationDefaultItemIdentifiers]):
        (-[WebView touchBarDidExitCustomization:]):
        (-[WebView touchBarWillEnterCustomization:]):
        (-[WebView didChangeAutomaticTextCompletion:]):
        (-[WebView setUpTextTouchBar:]):
        (-[WebView _isRichlyEditable]):
        (-[WebView textTouchBar]):
        (-[WebView updateTextTouchBar]):
        (-[WebView updateMediaTouchBar]):
        (-[WebView updateTouchBar]):
        (-[WebView prepareForMouseDown]):
        (-[WebView prepareForMouseUp]):
        (-[WebView webViewAdditionsWillDestroyView]):
        (-[WebView candidateList]):
        (-[WebView updateWebViewAdditions]): Deleted.
        * WebView/WebViewData.h:
        * WebView/WebViewInternal.h:
        * WebView/WebViewPrivate.h:

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

        Safari does not emit composition end if blurred for dead key / Japanese IME
        https://bugs.webkit.org/show_bug.cgi?id=164369
        <rdar://problem/29050439>

        Reviewed by Ryosuke Niwa.

        When canceling a composition, make sure that we clear the system IME state.

        * WebCoreSupport/WebEditorClient.h:
        * WebCoreSupport/WebEditorClient.mm:
        (WebEditorClient::canceledComposition):

2016-11-04  Said Abou-Hallawa  <sabouhallawa@apple.com>

        Add a setting and preferences to enable/disable async image decoding
        https://bugs.webkit.org/show_bug.cgi?id=164417

        Reviewed by Simon Fraser.

        Hook up the asyncImageDecodingEnabled setting for WebKit1.

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

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

        Remove PassRefPtr from DumpRenderTree
        https://bugs.webkit.org/show_bug.cgi?id=164307

        Reviewed by Sam Weinig.

        * WebView/WebGeolocationPosition.mm:
        (-[WebGeolocationPosition initWithGeolocationPosition:]):

2016-11-02  Romain Bellessort  <romain.bellessort@crf.canon.fr>

        [Readable Streams API] Enable creation of ReadableByteStreamController
        https://bugs.webkit.org/show_bug.cgi?id=164014

        Reviewed by Youenn Fablet.

        Added flag for the byte stream part of Readable Streams API.

        * Configurations/FeatureDefines.xcconfig:

2016-11-01  Ryosuke Niwa  <rniwa@webkit.org>

        Remove CUSTOM_ELEMENTS build flag
        https://bugs.webkit.org/show_bug.cgi?id=164267

        Reviewed by Antti Koivisto.

        Removed the build flag.

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

2016-11-01  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] restrict media capture secure connections
        https://bugs.webkit.org/show_bug.cgi?id=164234
        <rdar://problem/28944906>

        Reviewed by Alex Christensen.

        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]): Initialize WebKitMediaCaptureRequiresSecureConnectionPreferenceKey.
        (-[WebPreferences mediaCaptureRequiresSecureConnection]): New.
        (-[WebPreferences setMediaCaptureRequiresSecureConnection:]): New.
        * WebView/WebPreferencesPrivate.h:

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

2016-10-29  Filip Pizlo  <fpizlo@apple.com>

        JSC should support SharedArrayBuffer
        https://bugs.webkit.org/show_bug.cgi?id=163986

        Reviewed by Keith Miller.
        
        Support the RuntimeFlag.

        * WebView/WebPreferencesPrivate.h:

2016-10-31  Wenson Hsieh  <wenson_hsieh@apple.com>

        [WK1] Candidate visibility should not update as a result of selection during a dictionary lookup
        https://bugs.webkit.org/show_bug.cgi?id=164236
        <rdar://problem/28747712>

        Reviewed by Beth Dakin.

        See WebCore ChangeLog for more detail. Sets the Editor's isGettingDictionaryPopupInfo state to true during a
        dictionary lookup.

        * WebCoreSupport/WebEditorClient.mm:
        (WebEditorClient::respondToChangedSelection):
        * WebView/WebImmediateActionController.mm:
        (+[WebImmediateActionController _dictionaryPopupInfoForRange:inFrame:withLookupOptions:indicatorOptions:transition:]):

2016-10-31  Darin Adler  <darin@apple.com>

        Move ChildNode and ParentNode from ExceptionCode to Exception, add support for ExceptionOr<T&>
        https://bugs.webkit.org/show_bug.cgi?id=164214

        Reviewed by Alex Christensen.

        * DOM/DOMCSSPrimitiveValue.mm:
        (-[DOMCSSPrimitiveValue getCounterValue]): Updated since return value
        is a reference now.
        (-[DOMCSSPrimitiveValue getRectValue]): Ditto.

        * DOM/DOMDocument.mm:
        (-[DOMDocument querySelector:]): Updated exception handling.
        (-[DOMDocument querySelectorAll:]): Ditto.
        * DOM/DOMDocumentFragment.mm:
        (-[DOMDocumentFragment querySelector:]): Ditto.
        (-[DOMDocumentFragment querySelectorAll:]): Ditto.
        * DOM/DOMElement.mm:
        (-[DOMElement querySelector:]): Ditto.
        (-[DOMElement querySelectorAll:]): Ditto.

2016-10-31  Darin Adler  <darin@apple.com>

        Convert Document from ExceptionCode to Exception
        https://bugs.webkit.org/show_bug.cgi?id=164212

        Reviewed by Alex Christensen.

        * DOM/DOMDocument.mm:
        (-[DOMDocument setXmlVersion:]): Updated exception handling.
        (-[DOMDocument cookie]): Ditto.
        (-[DOMDocument setCookie:]): Ditto.
        (-[DOMDocument setBody:]): Ditto.
        (-[DOMDocument createElement:]): Ditto.
        (-[DOMDocument createCDATASection:]): Ditto.
        (-[DOMDocument createProcessingInstruction:data:]): Ditto.
        (-[DOMDocument createAttribute:]): Ditto.
        (-[DOMDocument createEntityReference:]): Ditto.
        (-[DOMDocument importNode:deep:]): Ditto.
        (-[DOMDocument createElementNS:qualifiedName:]): Ditto.
        (-[DOMDocument createAttributeNS:qualifiedName:]): Ditto.
        (-[DOMDocument getElementsByTagNameNS:localName:]): Ditto.
        (-[DOMDocument adoptNode:]): Ditto.
        (-[DOMDocument createEvent:]): Ditto.

2016-10-30  Darin Adler  <darin@apple.com>

        Move Element, NamedNodeMap, and DOMStringMap from ExceptionCode to Exception
        https://bugs.webkit.org/show_bug.cgi?id=164206

        Reviewed by Chris Dumez.

        * DOM/DOMElement.mm:
        (-[DOMElement setInnerHTML:]): Updated exception handling.
        (-[DOMElement setOuterHTML:]): Ditto.
        (-[DOMElement setAttribute:value:]): Ditto.
        (-[DOMElement setAttributeNode:]): Ditto.
        (-[DOMElement removeAttributeNode:]): Ditto.
        (-[DOMElement setAttributeNS:qualifiedName:value:]): Ditto.
        (-[DOMElement setAttributeNodeNS:]): Ditto.
        (-[DOMElement matches:]): Ditto.
        (-[DOMElement closest:]): Ditto.
        (-[DOMElement webkitMatchesSelector:]): Ditto.
        * DOM/DOMHTMLElement.mm:
        (-[DOMHTMLElement insertAdjacentElement:element:]): Ditto.
        (-[DOMHTMLElement insertAdjacentHTML:html:]): Ditto.
        (-[DOMHTMLElement insertAdjacentText:text:]): Ditto.
        * DOM/DOMNamedNodeMap.mm:
        (-[DOMNamedNodeMap setNamedItem:]): Ditto.
        (-[DOMNamedNodeMap removeNamedItem:]): Ditto.
        (-[DOMNamedNodeMap setNamedItemNS:]): Ditto.
        (-[DOMNamedNodeMap removeNamedItemNS:localName:]): Ditto.

2016-10-29  Darin Adler  <darin@apple.com>

        Convert more of DOM from ExceptionCode to Exception
        https://bugs.webkit.org/show_bug.cgi?id=164173

        Reviewed by Ryosuke Niwa.

        * DOM/DOMCharacterData.mm:
        (-[DOMCharacterData substringData:length:]): Updated since this
        now uses ExceptionOr.
        (-[DOMCharacterData insertData:data:]): Ditto.
        (-[DOMCharacterData deleteData:length:]): Ditto.
        (-[DOMCharacterData replaceData:length:data:]): Ditto.
        * DOM/DOMText.mm:
        (-[DOMText splitText:]): Ditto.
        (-[DOMText replaceWholeText:]): Removed unneeded exception code
        handling from function that does not throw an exception.

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

        Move all classes in the HTML directory from ExceptionCode to Exception
        https://bugs.webkit.org/show_bug.cgi?id=163876

        Reviewed by Sam Weinig.

        * DOM/DOMCharacterData.mm:
        (-[DOMCharacterData remove]): Updated exception handling.
        * DOM/DOMDOMTokenList.mm:
        (-[DOMDOMTokenList toggle:force:]): Ditto.
        * DOM/DOMDocumentType.mm:
        (-[DOMDocumentType remove]): Ditto.
        * DOM/DOMElement.mm:
        (-[DOMElement remove]): Ditto.
        * DOM/DOMHTML.mm:
        (-[DOMHTMLInputElement setValueAsNumberWithChangeEvent:]): Ditto.
        * DOM/DOMHTMLCanvasElement.mm:
        (-[DOMHTMLCanvasElement toDataURL:]): Ditto.
        * DOM/DOMHTMLElement.mm:
        (-[DOMHTMLElement setInnerText:]): Ditto.
        (-[DOMHTMLElement setOuterText:]): Ditto.
        (-[DOMHTMLElement setContentEditable:]): Ditto.
        * DOM/DOMHTMLInputElement.mm:
        (-[DOMHTMLInputElement setMaxLength:]): Ditto.
        (-[DOMHTMLInputElement setValueAsDate:]): Ditto.
        (-[DOMHTMLInputElement setValueAsNumber:]): Ditto.
        (-[DOMHTMLInputElement stepUp:]): Ditto.
        (-[DOMHTMLInputElement stepDown:]): Ditto.
        (-[DOMHTMLInputElement setRangeText:]): Ditto.
        (-[DOMHTMLInputElement setRangeText:start:end:selectionMode:]): Ditto.
        * DOM/DOMHTMLMarqueeElement.mm:
        (-[DOMHTMLMarqueeElement setLoop:]): Ditto.
        * DOM/DOMHTMLMediaElement.mm:
        (-[DOMHTMLMediaElement setCurrentTime:]): Ditto.
        (-[DOMHTMLMediaElement setVolume:]): Ditto.
        * DOM/DOMHTMLOptionsCollection.mm:
        (-[DOMHTMLOptionsCollection setLength:]): Ditto.
        * DOM/DOMHTMLTableElement.mm:
        (-[DOMHTMLTableElement setCaption:]): Ditto.
        (-[DOMHTMLTableElement setTHead:]): Ditto.
        (-[DOMHTMLTableElement setTFoot:]): Ditto.
        (-[DOMHTMLTableElement insertRow:]): Ditto.
        (-[DOMHTMLTableElement deleteRow:]): Ditto.
        * DOM/DOMHTMLTableRowElement.mm:
        (-[DOMHTMLTableRowElement insertCell:]): Ditto.
        (-[DOMHTMLTableRowElement deleteCell:]): Ditto.
        * DOM/DOMHTMLTableSectionElement.mm:
        (-[DOMHTMLTableSectionElement insertRow:]): Ditto.
        (-[DOMHTMLTableSectionElement deleteRow:]): Ditto.
        * DOM/DOMHTMLTextAreaElement.mm:
        (-[DOMHTMLTextAreaElement setMaxLength:]): Ditto.
        (-[DOMHTMLTextAreaElement setRangeText:]): Ditto.
        (-[DOMHTMLTextAreaElement setRangeText:start:end:selectionMode:]): Ditto.
        * DOM/DOMHTMLVideoElement.mm:
        (-[DOMHTMLVideoElement webkitEnterFullscreen]): Ditto.
        (-[DOMHTMLVideoElement webkitEnterFullScreen]): Changed to call the other named
        version (lowercase S) instead of repeating the logic from that method.
        (-[DOMHTMLVideoElement webkitExitFullScreen]): Ditto.
        * DOM/DOMTimeRanges.mm:
        (-[DOMTimeRanges start:]): Updated exception handling.
        (-[DOMTimeRanges end:]): Ditto.

2016-10-27  Chris Dumez  <cdumez@apple.com>

        Regression(r203601): Caused crashes in iBooks
        https://bugs.webkit.org/show_bug.cgi?id=164093
        <rdar://problem/28745634>

        Reviewed by Darin Adler.

        Restore pre-r203601 behavior when calling [DOMNode compareDocumentPosition:nil],
        which was to return Node::DOCUMENT_POSITION_DISCONNECTED.

        * DOM/DOMNode.mm:
        (-[DOMNode compareDocumentPosition:]):

2016-10-27  Wenson Hsieh  <wenson_hsieh@apple.com>

        Support "insertFromDrop" and "deleteByDrag" for the InputEvent spec
        https://bugs.webkit.org/show_bug.cgi?id=163948
        <rdar://problem/28921433>

        Reviewed by Darin Adler.

        Add support for new drag and drop-related EditAction enum values.

        * WebCoreSupport/WebEditorClient.mm:
        (undoNameForEditAction):

2016-10-27  Dan Bernstein  <mitz@apple.com>

        Reapplied the configuration changes from r207934 without breaking iOS builds.

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

2016-10-27  Dan Bernstein  <mitz@apple.com>

        Reverted the configuration changes from r207934 because they broke iOS builds not using the Apple-internal SDK.

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

2016-10-26  Dan Bernstein  <mitz@apple.com>

        [Xcode] WebKit fails to build when CLANG_WARN_DOCUMENTATION_COMMENTS is enabled
        https://bugs.webkit.org/show_bug.cgi?id=164048

        Reviewed by Tim Horton.

        * Configurations/Base.xcconfig: Enabled CLANG_WARN_DOCUMENTATION_COMMENTS.
        * Configurations/WebKitLegacy.xcconfig: Made the compiler treat the icu headers as system
          headers.

        * History/WebBackForwardList.h: Fixed parameter name in @param entry.
        * Misc/WebDownload.h: Removed empty entries.
        * Misc/WebIconDatabase.h: Remove incorrect @param entries.
        * Misc/WebQuotaManager.h: Added missing parameter names in @param entries.
        * WebView/WebFrameLoadDelegate.h: Corrected parameter names in @param entries.
        * WebView/WebFrameViewPrivate.h: Changed incorrect @result to @abstract.
        * WebView/WebPolicyDelegate.h: Fixed parameter name and removed incorrect @param entries.
        * WebView/WebPreferences.h: Changed @method to @property in a couple of places.
        * WebView/WebResourceLoadDelegate.h: Fixed parameter names.
        * WebView/WebUIDelegate.h: Filled in two empty @param entries. Added missing parameter name,
          Fixed a typo and removed empty @discussion entry. Fixed some parameter names.
        * WebView/WebUIDelegatePrivate.h: Fixed parameter names.
        * WebView/WebView.h: Changed @method to @property in a couple of places.
        * WebView/WebViewPrivate.h: Fixed parameter names, changed incorrect @result to @abstract.

2016-10-26  Brian Burg  <bburg@apple.com>

        Web Inspector: remove unused bool return value from FrontendChannel::sendMessageToFrontend
        https://bugs.webkit.org/show_bug.cgi?id=164046

        Reviewed by Joseph Pecoraro.

        * WebCoreSupport/WebInspectorClient.h:

2016-10-21  Alex Christensen  <achristensen@webkit.org>

        URL::port should return Optional<uint16_t>
        https://bugs.webkit.org/show_bug.cgi?id=163806

        Reviewed by Darin Adler.

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

2016-10-24  Dave Hyatt  <hyatt@apple.com>

        Remove CSSCharsetRule from the CSS OM
        https://bugs.webkit.org/show_bug.cgi?id=163891

        Reviewed by Darin Adler.

        * DOM/DOMCSSCharsetRule.mm:
        (-[DOMCSSCharsetRule encoding]):

2016-10-24  Youenn Fablet  <youenn@apple.com>

        Activate WEB_RTC compilation flags for Mac bots
        https://bugs.webkit.org/show_bug.cgi?id=163886

        Reviewed by Eric Carlson.

        * Configurations/FeatureDefines.xcconfig:

2016-10-23  Chris Dumez  <cdumez@apple.com>

        addEventListener() / removeEventListener() should use a union for last parameter
        https://bugs.webkit.org/show_bug.cgi?id=163863

        Reviewed by Darin Adler.

        Cast BOOL to bool to help to compiler construct the new variant-type parameter.

        * DOM/DOMNode.mm:
        (-[DOMNode addEventListener:listener:useCapture:]):
        (-[DOMNode addEventListener:::]):
        (-[DOMNode removeEventListener:listener:useCapture:]):
        (-[DOMNode removeEventListener:::]):

2016-10-21  Wenson Hsieh  <wenson_hsieh@apple.com>

        Support (insertFrom|deleteBy)Composition and (insert|delete)CompositionText inputTypes for InputEvents
        https://bugs.webkit.org/show_bug.cgi?id=163460
        <rdar://problem/28784142>

        Reviewed by Darin Adler.

        Handle new EditAction types for inserting/deleting pending/final compositions.

        * WebCoreSupport/WebEditorClient.mm:
        (undoNameForEditAction):

2016-10-21  Jeremy Jones  <jeremyj@apple.com>

        Implement basic pointer lock behavior for WebKit and WebKit2.
        https://bugs.webkit.org/show_bug.cgi?id=162745

        Reviewed by Simon Fraser.

        Add basic pointer lock functionality. User permission is not yet implemented.

        * WebCoreSupport/WebChromeClient.h:
        * WebCoreSupport/WebChromeClient.mm:
        (WebChromeClient::requestPointerLock):
        (WebChromeClient::requestPointerUnlock):

2016-10-19  Myles C. Maxfield  <mmaxfield@apple.com>

        [macOS] [iOS] Disable variation fonts on macOS El Capitan and iOS 9
        https://bugs.webkit.org/show_bug.cgi?id=163374

        Reviewed by Darin Adler.

        * Configurations/FeatureDefines.xcconfig:

2016-10-19  Alex Christensen  <achristensen@webkit.org>

        Revert r207151
        https://bugs.webkit.org/show_bug.cgi?id=163675

        Reviewed by Brent Fulgham.

        * Misc/WebDownload.mm:
        (-[WebDownload _initWithLoadingCFURLConnection:request:response:delegate:proxy:]):
        * Misc/WebDownloadInternal.h:
        * WebCoreSupport/WebFrameLoaderClient.mm:
        (WebFrameLoaderClient::convertMainResourceLoadToDownload):
        * WebView/WebPreferences.mm:
        (+[WebPreferences _setCurrentNetworkLoaderSessionCookieAcceptPolicy:]):
        * WebView/WebView.mm:
        (-[WebView scheduleInRunLoop:forMode:]):
        (-[WebView unscheduleFromRunLoop:forMode:]):

2016-10-19  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r207557.

        This change caused animations/font-variations tests to time
        out on pre-Sierra Macs.

        Reverted changeset:

        "[macOS] [iOS] Disable variation fonts on macOS El Capitan and
        iOS 9"
        https://bugs.webkit.org/show_bug.cgi?id=163374
        http://trac.webkit.org/changeset/207557

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

        Move HTML Interactive Form Validation behind an experimental flag
        https://bugs.webkit.org/show_bug.cgi?id=163673

        Reviewed by Daniel Bates.

        Re-disable HTML Interactive Form Validation by default on Mac WK1.

        * WebView/WebViewData.mm:
        (-[WebViewPrivate init]):

2016-10-19  Myles C. Maxfield  <mmaxfield@apple.com>

        [macOS] [iOS] Disable variation fonts on macOS El Capitan and iOS 9
        https://bugs.webkit.org/show_bug.cgi?id=163374

        Reviewed by Darin Adler.

        * Configurations/FeatureDefines.xcconfig:

2016-10-19  Simon Fraser  <simon.fraser@apple.com>

        WebView needs to initialize the visualViewportEnabled Setting from WebKit preferences
        https://bugs.webkit.org/show_bug.cgi?id=163680

        Reviewed by Dean Jackson.

        Add code to set the Setting from WebKit prefs. This code is a mess and needs to be autogenerated.

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

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

        Move XPath from ExceptionCode to Exception
        https://bugs.webkit.org/show_bug.cgi?id=163656

        Reviewed by Chris Dumez.

        * DOM/DOMDocument.mm:
        (wrap): Added. Helper function for wrapping a resolver.
        (-[DOMDocument createExpression:resolver:]): Use raiseOnDOMError.
        (-[DOMDocument evaluate:contextNode:resolver:type:inResult:]): Ditto.
        * DOM/DOMXPathExpression.mm:
        (-[DOMXPathExpression evaluate:type:inResult:]): Ditto.
        * DOM/DOMXPathResult.mm:
        (-[DOMXPathResult numberValue]): Ditto.
        (-[DOMXPathResult stringValue]): Ditto.
        (-[DOMXPathResult booleanValue]): Ditto.
        (-[DOMXPathResult singleNodeValue]): Ditto.
        (-[DOMXPathResult snapshotLength]): Ditto.
        (-[DOMXPathResult iterateNext]): Ditto.
        (-[DOMXPathResult snapshotItem:]): Ditto.

2016-10-18  Sam Weinig  <sam@webkit.org>

        Replace std::experimental::variant with WTF::Variant (or similar)
        https://bugs.webkit.org/show_bug.cgi?id=163626

        Reviewed by Chris Dumez.

        Rename std::experimental::variant, Variant. Move helpers get/holds_alternative/etc.
        into the WTF namespace.

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

2016-10-18  Simon Fraser  <simon.fraser@apple.com>

        Add a MiniBrowser menu item to apply page scale in WK1 and WK2
        https://bugs.webkit.org/show_bug.cgi?id=163627

        Reviewed by Dean Jackson.

        Add an explanatory comment about viewScaleFactor not really being viewScaleFactor.

        * WebView/WebViewPrivate.h:

2016-10-18  Dean Jackson  <dino@apple.com>

        Remove CSS_SHAPES feature definition. This should always be on.
        https://bugs.webkit.org/show_bug.cgi?id=163628
        <rdar://problem/28834613>

        Reviewed by Tim Horton.

        * Configurations/FeatureDefines.xcconfig:

2016-10-18  Chris Dumez  <cdumez@apple.com>

        Leverage new union type support for HTMLSelectElement.add() / HTMLOptionsCollection.add()
        https://bugs.webkit.org/show_bug.cgi?id=163608

        Reviewed by Ryosuke Niwa.

        Update add() call sites now that it takes std::variant types in.

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

2016-10-18  Anders Carlsson  <andersca@apple.com>

        Get rid of more WebHistoryItem cruft
        https://bugs.webkit.org/show_bug.cgi?id=163623

        Reviewed by Tim Horton.

        * History/WebHistoryItem.mm:
        (-[WebHistoryItem initFromDictionaryRepresentation:]):
        * History/WebHistoryItemPrivate.h:

2016-10-18  Wenson Hsieh  <wenson_hsieh@apple.com>

        Showing and hiding candidates list is very distracting after selecting word
        https://bugs.webkit.org/show_bug.cgi?id=163609
        <rdar://problem/28747712>

        Reviewed by Tim Horton.

        Introduce WebView hooks for mousedown and mouseup. See radar for more details.

        * WebView/WebHTMLView.mm:
        (-[WebHTMLView mouseDown:mouseDown:]):
        (-[WebHTMLView mouseUp:mouseUp:]):
        * WebView/WebView.mm:
        (-[WebView prepareForMouseDown]):
        (-[WebView prepareForMouseUp]):
        * WebView/WebViewInternal.h:

2016-10-17  Anders Carlsson  <andersca@apple.com>

        Move some history specific HistoryItem code to WebHistoryItem
        https://bugs.webkit.org/show_bug.cgi?id=163567

        Reviewed by Tim Horton.

        * History/HistoryPropertyList.mm:
        (HistoryPropertyListWriter::writeHistoryItem):
        * History/WebHistory.mm:
        (-[WebHistory _visitedURL:withTitle:method:wasFailure:]):
        * History/WebHistoryItem.mm:
        (-[WebHistoryItem initFromDictionaryRepresentation:]):
        * History/WebHistoryItemInternal.h:
        * WebCoreSupport/WebFrameLoaderClient.mm:
        (addRedirectURL):
        (WebFrameLoaderClient::updateGlobalHistoryRedirectLinks):

2016-10-18  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] Resolve constraints and enumerate devices in the UI process
        https://bugs.webkit.org/show_bug.cgi?id=162147
        <rdar://problem/28803569>

        Reviewed by Darin Adler.

        * WebCoreSupport/WebUserMediaClient.h:
        * WebCoreSupport/WebUserMediaClient.mm:
        (AddPermissionCheckToMap):
        (RemovePermissionCheckFromMap):
        (WebUserMediaClient::pageDestroyed):
        (WebUserMediaClient::requestUserMediaAccess):
        (WebUserMediaClient::enumerateMediaDevices):
        (WebUserMediaClient::cancelMediaDevicesEnumerationRequest):
        (-[WebUserMediaPolicyListener allow]):
        (-[WebUserMediaPolicyListener deny]):
        (-[WebUserMediaPolicyCheckerListener initWithMediaDevicesEnumerationRequest:]):
        (-[WebUserMediaPolicyCheckerListener cancelMediaDevicesEnumerationRequest]):
        (-[WebUserMediaPolicyCheckerListener allow]):
        (-[WebUserMediaPolicyCheckerListener deny]):
        (WebUserMediaClient::checkUserMediaPermission): Deleted.
        (WebUserMediaClient::cancelUserMediaPermissionCheck): Deleted.
        (-[WebUserMediaPolicyCheckerListener initWithUserMediaPermissionCheck:]): Deleted.
        (-[WebUserMediaPolicyCheckerListener cancelUserMediaPermissionCheck]): Deleted.

2016-10-17  Antti Koivisto  <antti@apple.com>

        Rename setNeedsStyleRecalc to invalidateStyle
        https://bugs.webkit.org/show_bug.cgi?id=163542

        Reviewed by Darin Adler.

        * Plugins/Hosted/WebHostedNetscapePluginView.mm:
        (-[WebHostedNetscapePluginView createPluginLayer]):
        * Plugins/WebNetscapePluginView.mm:
        (-[WebNetscapePluginView createPlugin]):

2016-10-17  Jeremy Jones  <jeremyj@apple.com>

        Enable keyboard in fullscreen.
        https://bugs.webkit.org/show_bug.cgi?id=163146

        Reviewed by Jer Noble.

        Allow keyboard in fullscreen.

        * WebView/WebView.mm:
        (-[WebView _supportsFullScreenForElement:withKeyboard:]):

2016-10-17  Chris Dumez  <cdumez@apple.com>

        Move form.reportValidity() behind InteractiveFormValidation setting
        https://bugs.webkit.org/show_bug.cgi?id=163550

        Reviewed by Darin Adler.

        Enable InteractiveFormValidation setting by default and link it to
        RuntimeEnabledFeatures so we can use it in the IDL.

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

2016-10-17  Anders Carlsson  <andersca@apple.com>

        Fix iOS build.

        * History/WebBackForwardList.mm:
        (-[WebBackForwardList dictionaryRepresentation]):

2016-10-17  Anders Carlsson  <andersca@apple.com>

        CTTE some of the BackForwardList member functions
        https://bugs.webkit.org/show_bug.cgi?id=163555

        Reviewed by Dan Bernstein.

        * History/BackForwardList.h:
        (BackForwardList::entries):
        * History/BackForwardList.mm:
        (BackForwardList::removeItem):
        (BackForwardList::containsItem):
        (BackForwardList::entries): Deleted.
        * History/WebBackForwardList.mm:
        (-[WebBackForwardList removeItem:]):
        (-[WebBackForwardList containsItem:]):
        (-[WebBackForwardList description]):

2016-10-17  Anders Carlsson  <andersca@apple.com>

        Remove WEBCORE_EXPORT from BackForwardList, it lives in WebKit now
        https://bugs.webkit.org/show_bug.cgi?id=163551

        Reviewed by Tim Horton.

        * History/BackForwardList.h:

2016-10-16  Darin Adler  <darin@apple.com>

        Move CSS classes from ExceptionCode to Exception
        https://bugs.webkit.org/show_bug.cgi?id=163494

        Reviewed by Sam Weinig.

        * DOM/DOMCSSMediaRule.mm:
        (-[DOMCSSMediaRule insertRule:index:]): Use raiseOnDOMError
        the new way to handle ExceptionOr instead of ExceptionCode.
        (-[DOMCSSMediaRule deleteRule:]): Ditto.
        * DOM/DOMCSSPrimitiveValue.mm:
        (-[DOMCSSPrimitiveValue setFloatValue:floatValue:]): Ditto.
        (-[DOMCSSPrimitiveValue getFloatValue:]): Ditto.
        (-[DOMCSSPrimitiveValue setStringValue:stringValue:]): Ditto.
        (-[DOMCSSPrimitiveValue getStringValue]): Ditto.
        (-[DOMCSSPrimitiveValue getCounterValue]): Ditto.
        (-[DOMCSSPrimitiveValue getRectValue]): Ditto.
        (-[DOMCSSPrimitiveValue getRGBColorValue]): Ditto.
        * DOM/DOMCSSRule.mm:
        (-[DOMCSSRule setCssText:]): Ditto.
        * DOM/DOMCSSStyleDeclaration.mm:
        (-[DOMCSSStyleDeclaration setCssText:]): Ditto.
        (-[DOMCSSStyleDeclaration removeProperty:]): Ditto.
        (-[DOMCSSStyleDeclaration setProperty:value:priority:]): Ditto.
        * DOM/DOMCSSStyleSheet.mm:
        (-[DOMCSSStyleSheet insertRule:index:]): Ditto.
        (-[DOMCSSStyleSheet deleteRule:]): Ditto.
        (-[DOMCSSStyleSheet addRule:style:index:]): Ditto.
        (-[DOMCSSStyleSheet removeRule:]): Ditto.
        * DOM/DOMCSSValue.mm:
        (-[DOMCSSValue setCssText:]): Ditto.
        * DOM/DOMMediaList.mm:
        (-[DOMMediaList setMediaText:]): Ditto.
        (-[DOMMediaList deleteMedium:]): Ditto.
        (-[DOMMediaList appendMedium:]): Ditto.

        * DOM/ExceptionHandlers.h: Added an overload of raiseDOMException
        that works with a WebCore::Exception&& and overloads of
        raiseOnDOMError that work with WebCore::ExceptionOr&&.
        * DOM/ExceptionHandlers.mm:
        (raiseDOMException): Implemented the new version.

2016-10-15  Dan Bernstein  <mitz@apple.com>

        REGRESSION (r191699): Contextual menu in Mail compose view doesn’t include any of the standard submenus
        https://bugs.webkit.org/show_bug.cgi?id=163492
        <rdar://problem/28654799>

        Reviewed by Darin Adler.

        Test: TestWebKitAPI/Tests/mac/ContextMenuDefaultItemsHaveTags.mm

        * WebView/WebHTMLView.mm:
        (createMenuItem): Set the tag for items that have submenus as well.

2016-10-14  Anders Carlsson  <andersca@apple.com>

        Clean up BackForwardClient
        https://bugs.webkit.org/show_bug.cgi?id=163454

        Reviewed by Sam Weinig.

        * History/BackForwardList.h:
        Remove override keywords.

        * History/BackForwardList.mm:
        (BackForwardList::clearAllPageCaches): Deleted.
        Remove this, it's no longer used.

        * WebView/WebView.mm:
        (-[WebView _clearBackForwardCache]): Deleted.
        * WebView/WebViewPrivate.h:
        Remove SPI that's no longer used by anyone.

2016-10-13  Anders Carlsson  <andersca@apple.com>

        Move BackForwardList from WebCore to WebKitLegacy
        https://bugs.webkit.org/show_bug.cgi?id=163418

        Reviewed by Tim Horton.

        * History/BackForwardList.h: Renamed from Source/WebCore/history/BackForwardList.h.
        (BackForwardList::create):
        (BackForwardList::webView):
        * History/BackForwardList.mm: Renamed from Source/WebCore/history/BackForwardList.cpp.
        (BackForwardList::BackForwardList):
        (BackForwardList::close):
        (BackForwardList::containsItem):
        * History/WebBackForwardList.mm:
        (kit):
        (-[WebBackForwardList initWithBackForwardList:]):
        (-[WebBackForwardList setPageCacheSize:]):
        (-[WebBackForwardList pageCacheSize]):
        * History/WebBackForwardListInternal.h:
        * WebCoreSupport/WebFrameLoaderClient.mm:
        * WebView/WebFrameView.mm:
        * WebView/WebView.mm:
        (-[WebView _commonInitializationWithFrameName:groupName:]):
        (-[WebView initSimpleHTMLDocumentWithStyle:frame:preferences:groupName:]):

2016-10-13  Anders Carlsson  <andersca@apple.com>

        Get rid of the HistoryItemVector typedef
        https://bugs.webkit.org/show_bug.cgi?id=163398

        Reviewed by Beth Dakin.

        Expand the HistoryitemVector typedef instead to make it more clear what types we are dealing with.

        * History/WebBackForwardList.mm:
        (-[WebBackForwardList dictionaryRepresentation]):
        (vectorToNSArray):
        (-[WebBackForwardList backListWithLimit:]):
        (-[WebBackForwardList forwardListWithLimit:]):
        (-[WebBackForwardList description]):
        * History/WebHistoryItem.mm:
        (-[WebHistoryItem description]):

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

        [Web IDL] Drop support for legacy [ConstructorConditional=*]
        https://bugs.webkit.org/show_bug.cgi?id=163368

        Reviewed by Ryosuke Niwa.

        Drop ENABLE_DOM4_EVENTS_CONSTRUCTOR compiler flag.

        * Configurations/FeatureDefines.xcconfig:

2016-10-12  Beth Dakin  <bdakin@apple.com>

        Adobe Contribute CS 6.5 Trial crashes on launch
        https://bugs.webkit.org/show_bug.cgi?id=163365
        -and corresponding-
        <rdar://problem/28732731>

        Reviewed by Tim Horton.

        * Carbon/CarbonWindowFrame.m:
        (-[CarbonWindowFrame contentFill]):

2016-10-11  Daniel Bates  <dabates@apple.com>

        Attempt to fix the Apple Internal Mac build following r207159
        (https://bugs.webkit.org/show_bug.cgi?id=163244)

        * WebView/WebView.mm:
        (shouldRequireUserGestureToLoadVideo):

2016-10-11  Daniel Bates  <dabates@apple.com>

        REGRESSION (r198251): -[UIWebView mediaPlaybackRequiresUserAction] defaults to NO
        https://bugs.webkit.org/show_bug.cgi?id=163259
        <rdar://problem/28680515>

        Reviewed by Jer Noble.

        In WebKit1 on iOS we want to require user action to load and play videos by default and
        allow an embedding app to change this behavior via -[UIWebView setMediaPlaybackRequiresUserAction:].
        Following r198251, -[UIWebView mediaPlaybackRequiresUserAction] defaults to NO and videos
        can load and play without being initiated by a user action.

        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]): Initialize the default value of the deprecated preference
        WebKitRequiresUserGestureForMediaPlaybackPreferenceKey to YES on iOS. The value of this
        preference takes precedence over the values of its replacement preferences
        WebKitRequiresUserGestureForVideoPlaybackPreferenceKey and WebKitRequiresUserGestureForAudioPlaybackPreferenceKey.

2016-10-11  Daniel Bates  <dabates@apple.com>

        [iOS] REGRESSION (r197953): User gesture required to load video in iOS 9-built apps
        https://bugs.webkit.org/show_bug.cgi?id=163244
        <rdar://problem/27250015>

        Reviewed by Jer Noble.

        Enable or disable the Setting::requiresUserGestureToLoadVideo() in legacy WebKit depending
        on the version of iOS SDK that the app was linked against. We require a user gesture to
        begin loading a video as of iOS 10.

        * WebView/WebView.mm:
        (shouldRequireUserGestureToLoadVideo):
        (-[WebView _preferencesChanged:]): Modified to pass the WebKit requiresUserGestureToLoadVideo
        preference to WebCore.

2016-10-11  Alex Christensen  <achristensen@webkit.org>

        Remove dead networking code
        https://bugs.webkit.org/show_bug.cgi?id=163263

        Reviewed by Daniel Bates.

        * Misc/WebDownload.mm:
        (-[WebDownload _initWithLoadingCFURLConnection:request:response:delegate:proxy:]): Deleted.
        * Misc/WebDownloadInternal.h:
        * WebCoreSupport/WebFrameLoaderClient.mm:
        (WebFrameLoaderClient::convertMainResourceLoadToDownload):
        * WebView/WebPreferences.mm:
        (+[WebPreferences _setCurrentNetworkLoaderSessionCookieAcceptPolicy:]):
        * WebView/WebView.mm:
        (-[WebView scheduleInRunLoop:forMode:]):
        (-[WebView unscheduleFromRunLoop:forMode:]):

2016-10-10  Zan Dobersek  <zdobersek@igalia.com>

        Add ENABLE_ENCRYPTED_MEDIA configuration option
        https://bugs.webkit.org/show_bug.cgi?id=163219

        Reviewed by Darin Adler.

        * Configurations/FeatureDefines.xcconfig:
        Add the ENABLE_ENCRYPTED_MEDIA configuration option. It will be used
        to enable or disable the new EME implementation at build-time.

2016-10-10  Darin Adler  <darin@apple.com>

        Move NotificationCenter from legacy to new DOM exceptions
        https://bugs.webkit.org/show_bug.cgi?id=163217

        Reviewed by Chris Dumez.

        * WebView/WebView.mm:
        (-[WebView _notificationIDForTesting:]): Pass reference to page rather than pointer.

2016-10-09  Wenson Hsieh  <wenson_hsieh@apple.com>

        Support InputEvent.inputType for the new InputEvent spec
        https://bugs.webkit.org/show_bug.cgi?id=163025
        <rdar://problem/28658092>

        Reviewed by Darin Adler.

        Accounts for some changes to the EditAction enum in nameForEditAction. See WebCore ChangeLog
        entry for more details.

        * WebCoreSupport/WebEditorClient.mm:
        (undoNameForEditAction):

2016-10-06  Darin Adler  <darin@apple.com>

        Next step on moving to modern way to return DOM exceptions
        https://bugs.webkit.org/show_bug.cgi?id=163016

        Reviewed by Ryosuke Niwa.

        * DOM/DOMDOMImplementation.mm:
        (-[DOMImplementation createDocumentType:publicId:systemId:]): Updated for
        name change from takeReturnValue to releaseReturnValue.
        (-[DOMImplementation createDocument:qualifiedName:doctype:]): Ditto.

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

        [WK1 Mac] Fix repaints of fixed-background elements in layer-backed WebViews
        https://bugs.webkit.org/show_bug.cgi?id=163154
        rdar://problem/28674216

        Reviewed by Tim Horton.
        
        r55159 added code to counteract AppKit's adjustment of dirty regions during scrolling,
        by offsetting the dirty rect in -setNeedsDisplayInRect: if the call happens during
        the NSViewBoundsDidChangeNotification handling.
        
        However, AppKit only does dirty region adjustment in the code path that blits ("copy
        on scroll"), so r55159 produces incorrect behavior in, for example, layer-backed views.
        
        Fix by overriding -[NSClipView _canCopyOnScrollForDeltaX:deltaY:] to know if a single
        scroll is going to blit, and only do adjustments in -setNeedsDisplayInRect: if it is.

        * WebView/WebClipView.h:
        * WebView/WebClipView.mm:
        (-[WebClipView _immediateScrollToPoint:]):
        (-[WebClipView _canCopyOnScrollForDeltaX:deltaY:]):
        (-[WebClipView currentScrollIsBlit]):
        * WebView/WebHTMLView.mm:
        (-[WebHTMLView setNeedsDisplayInRect:]):
        (-[WebHTMLView drawRect:]):

2016-10-06  Youenn Fablet  <youenn@apple.com>

        CachedResource client handling methods should take reference
        https://bugs.webkit.org/show_bug.cgi?id=163014

        Reviewed by Alex Christensen.

        * WebView/WebHTMLView.mm:
        (promisedDataClient):

2016-10-05  Myles C. Maxfield  <mmaxfield@apple.com>

        Put variation fonts work behind a compile-time flag
        https://bugs.webkit.org/show_bug.cgi?id=162949

        Reviewed by Simon Fraser.

        * Configurations/FeatureDefines.xcconfig:

2016-10-05  Zan Dobersek  <zdobersek@igalia.com>

        Rename ENABLE_ENCRYPTED_MEDIA_V2 to ENABLE_LEGACY_ENCRYPTED_MEDIA
        https://bugs.webkit.org/show_bug.cgi?id=162903

        Reviewed by Alex Christensen.

        Rename build guards for the remaining implementation of the legacy EME API
        to ENABLE_LEGACY_ENCRYPTED_MEDIA. This will allow for the future implementation
        of the near-finished API to be guarded with the simple ENABLE_ENCRYPTED_MEDIA guards.

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

2016-10-04  Said Abou-Hallawa  <sabouhallawa@apple.com>

        The dragged image should be the current frame only of the animated image
        https://bugs.webkit.org/show_bug.cgi?id=162109

        Reviewed by Tim Horton.

        * DOM/DOM.mm:
        (-[DOMElement image]): Call the Image function with its new name.
        (-[DOMElement _imageTIFFRepresentation]): Ditto.
        * Misc/WebElementDictionary.mm:
        (-[WebElementDictionary _image]): Call the Image function with its new name.
        * Misc/WebIconDatabase.mm:
        (-[WebIconDatabase defaultIconWithSize:]): Call snapshotNSImage() to create the icon image.
        (webGetNSImage): Call the Image function with its new name.
        * WebCoreSupport/WebContextMenuClient.mm:
        (WebContextMenuClient::imageForCurrentSharingServicePickerItem): Call snapshotNSImage() instead of nsImage()..
        (WebContextMenuClient::contextMenuForEvent): Ditto.
        * WebView/WebHTMLView.mm:
        (-[WebHTMLView pasteboard:provideDataForType:]): Call the Image function with its new name.

2016-10-02  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r206683.

        This change caused API test WebKit2.FindMatches to fail on
        Mac.

        Reverted changeset:

        "The dragged image should be the current frame only of the
        animated image"
        https://bugs.webkit.org/show_bug.cgi?id=162109
        http://trac.webkit.org/changeset/206683

2016-09-30  Said Abou-Hallawa  <sabouhallawa@apple.com>

        The dragged image should be the current frame only of the animated image
        https://bugs.webkit.org/show_bug.cgi?id=162109

        Reviewed by Tim Horton.

        * DOM/DOM.mm:
        (-[DOMElement image]): Call the Image function with its new name.
        (-[DOMElement _imageTIFFRepresentation]): Ditto.
        * Misc/WebElementDictionary.mm:
        (-[WebElementDictionary _image]): Call the Image function with its new name.
        * Misc/WebIconDatabase.mm:
        (-[WebIconDatabase defaultIconWithSize:]): Call currentFrameNSImage() to create the icon image.
        (webGetNSImage): Call the Image function with its new name.
        * WebCoreSupport/WebContextMenuClient.mm:
        (WebContextMenuClient::imageForCurrentSharingServicePickerItem): Call currentFrameNSImage() instead of nsImage()..
        (WebContextMenuClient::contextMenuForEvent): Ditto.
        * WebView/WebHTMLView.mm:
        (-[WebHTMLView pasteboard:provideDataForType:]): Call the Image function with its new name.

2016-09-27  Jer Noble  <jer.noble@apple.com>

        Remove deprecated ENCRYPTED_MEDIA implementation.
        https://bugs.webkit.org/show_bug.cgi?id=161010

        Remove ENABLE_ENCRYPTED_MEDIA.

        Reviewed by Eric Carlson.

        * Configurations/FeatureDefines.xcconfig:

2016-09-26  Daniel Bates  <dabates@apple.com>

        Rename IOS_TEXT_AUTOSIZING to TEXT_AUTOSIZING
        https://bugs.webkit.org/show_bug.cgi?id=162365

        Reviewed by Simon Fraser.

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

2016-09-25  Antti Koivisto  <antti@apple.com>

        AuthorStyleSheets shouldn't trigger synchronous style resolutions
        https://bugs.webkit.org/show_bug.cgi?id=162532

        Reviewed by Darin Adler.

        * WebView/WebHTMLView.mm:
        (-[WebHTMLView reapplyStyles]):
        (-[WebHTMLView _setPrinting:minimumPageLogicalWidth:logicalHeight:originalPageWidth:originalPageHeight:maximumShrinkRatio:adjustViewSize:paginateScreenContent:]):

2016-09-24  Antti Koivisto  <antti@apple.com>

        Move stylesheet change logic from Document to AuthorStyleSheets
        https://bugs.webkit.org/show_bug.cgi?id=162488

        Reviewed by Andreas Kling.

        * WebView/WebHTMLView.mm:
        (-[WebHTMLView reapplyStyles]):
        (-[WebHTMLView _setPrinting:minimumPageLogicalWidth:logicalHeight:originalPageWidth:originalPageHeight:maximumShrinkRatio:adjustViewSize:paginateScreenContent:]):

2016-09-23  Caitlin Potter  <caitp@igalia.com>

        [JSC] Implement parsing of Async Functions
        https://bugs.webkit.org/show_bug.cgi?id=161409

        Reviewed by Yusuke Suzuki.

        * Configurations/FeatureDefines.xcconfig:

2016-09-23  Commit Queue  <commit-queue@webkit.org>

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

        Broke internal iOS build (Requested by anttik on #webkit).

        Reverted changeset:

        "Move stylesheet change logic from Document to
        AuthorStyleSheets"
        https://bugs.webkit.org/show_bug.cgi?id=162488
        http://trac.webkit.org/changeset/206311

2016-09-23  Antoine Quint  <graouts@apple.com>

        Add a new runtime flag for work on modern media controls (off by default)
        https://bugs.webkit.org/show_bug.cgi?id=162420
        <rdar://problem/27989489>

        Reviewed by Eric Carlson.

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

2016-09-21  Anders Carlsson  <andersca@apple.com>

        Support openPaymentSetup API on ApplePaySession object
        https://bugs.webkit.org/show_bug.cgi?id=162357
        rdar://problem/26776939

        Reviewed by Tim Horton.

        Add openPaymentSetup stub.

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

2016-09-19  Daniel Bates  <dabates@apple.com>

        Remove ENABLE(TEXT_AUTOSIZING) automatic text size adjustment code
        https://bugs.webkit.org/show_bug.cgi?id=162167

        Reviewed by Simon Fraser.

        * Configurations/FeatureDefines.xcconfig:

2016-09-19  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Bring the inspected page's window forward when activating element search
        https://bugs.webkit.org/show_bug.cgi?id=162114
        <rdar://problem/28349357>

        Reviewed by Brian Burg.

        * WebCoreSupport/WebInspectorClient.mm:
        (WebInspectorClient::didSetSearchingForNode):
        When element search is activated bring the window
        containing the inspected page to the foreground.

2016-09-15  Brady Eidson  <beidson@apple.com>

        WKWebView.hasOnlySecureContent always returns "YES" after going back to a CachedPage (even if it has http resources).
        <rdar://problem/27681261> and https://bugs.webkit.org/show_bug.cgi?id=162043

        Reviewed by Brent Fulgham. 

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

2016-09-15  Anders Carlsson  <andersca@apple.com>

        This was supposed to be committed with the previous patch!

        * Plugins/WebBasePluginPackage.mm:
        (pathByResolvingSymlinksAndAliases): Deleted.

2016-09-15  Anders Carlsson  <andersca@apple.com>

        Replace use of Carbon file system APIs in plug-in loading
        https://bugs.webkit.org/show_bug.cgi?id=162040
        rdar://problem/6017896

        Reviewed by Sam Weinig.

        * Plugins/WebBasePluginPackage.mm:
        (-[WebBasePluginPackage initWithPath:]):
        Use -[NSString stringByResolvingSymlinksInPath] directly here. We already check for duplicate bundle IDs, so there's no need to try
        to resolve aliases as well (and the modern WebKit plug-in implementation doesn't do this).

2016-09-15  Beth Dakin  <bdakin@apple.com>

        Need hasMarkedText on Mac
        https://bugs.webkit.org/show_bug.cgi?id=162026
        -and corresponding-
        rdar://problem/28272353

        Reviewed by Anders Carlsson.

        * WebView/WebHTMLViewInternal.h:

2016-09-12  Dean Jackson  <dino@apple.com>

        Replace RGBA32 with Color in member variables
        https://bugs.webkit.org/show_bug.cgi?id=161856
        <rdar://problem/28254324>

        Reviewed by Simon Fraser.

        In preparation for the Color class to become more than
        just a 4-byte RGBA value, I went through a few places
        that were using the RGBA32 type directly, and replaced
        them with Color. This will make some objects a little
        bigger e.g. BorderValue and its friends.

        I mostly looked at the places that were using RGBA32 as
        a member variable. There is still a lot of RGBA32 use
        around the project, in particular the CSS parser.

        There should be no behaviour change.

        * Misc/WebKitNSStringExtras.mm:
        (-[NSString _web_drawAtPoint:font:textColor:allowingFontSmoothing:]): Explicitly
        call a Color constructor, rather than passing an RGBA32.

2016-09-13  Chris Dumez  <cdumez@apple.com>

        Drop support for <isindex>
        https://bugs.webkit.org/show_bug.cgi?id=7139

        Reviewed by Ryosuke Niwa.

        Drop references to isindex.

        * WebCoreSupport/WebEditorClient.mm:
        (attributesForAttributedStringConversion):
        * WebView/WebHTMLView.mm:
        (+[WebHTMLView _excludedElementsForAttributedStringConversion]):

2016-09-12  Chris Dumez  <cdumez@apple.com>

        Switch remaining users of Document::inPageCache() to pageCacheState()
        https://bugs.webkit.org/show_bug.cgi?id=161865

        Reviewed by Darin Adler.

        Switch remaining users of Document::inPageCache() to pageCacheState() as
        the former one is confusing (given that it returns true while the
        pagehide event is being fired).

        * WebView/WebHTMLView.mm:
        (-[WebHTMLView layoutToMinimumPageWidth:height:originalPageWidth:originalPageHeight:maximumShrinkRatio:adjustingViewSize:]):
        (-[WebHTMLView setNeedsLayout:]):
        (-[WebHTMLView setNeedsToApplyStyles:]):

2016-09-09  Tim Horton  <timothy_horton@apple.com>

        Text replacement candidates don't always overwrite the entire original string
        https://bugs.webkit.org/show_bug.cgi?id=161779
        <rdar://problem/28033492>

        Reviewed by Simon Fraser.

        * WebCoreSupport/WebEditorClient.mm:
        (WebEditorClient::requestCandidatesForSelection):
        Make use of the shared implementation of contextRangeForCandidateRequest.

2016-09-08  Said Abou-Hallawa  <sabouhallawa@apple.com>

        Move the BitmapImage platform dependent code to a new file named NativeImage[CG|Cairo].cpp
        https://bugs.webkit.org/show_bug.cgi?id=158684

        Reviewed by Simon Fraser.

        * DOM/DOM.mm:
        (-[DOMNode getPreviewSnapshotImage:andRects:]):
        * Misc/WebCache.mm:
        (+[WebCache imageForURL:]):
        Replace BitmapImage::getCGImageRef() with BitmapImage::nativeImage().

2016-09-07  Joseph Pecoraro  <pecoraro@apple.com>

        [Mac] Address some clang static analyzer warnings in WebKit
        https://bugs.webkit.org/show_bug.cgi?id=161597

        Reviewed by Darin Adler.

        * Misc/WebIconDatabase.h:
        Remove unused instance variable. It has not been used since r16005 (2006)!

        * Misc/WebSharingServicePickerController.mm:
        (-[WebSharingServicePickerController sharingServicePicker:sharingServicesForItems:mask:proposedSharingServices:]):
        Address array leak.

        * WebCoreSupport/WebSelectionServiceController.mm:
        (WebSelectionServiceController::hasRelevantSelectionServices):
        Address attachment and cell leak.

        * WebView/WebFullScreenController.h:
        * WebView/WebImmediateActionController.h:
        Remove unused instance variables.

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

        Enable the <meter> element on iOS
        https://bugs.webkit.org/show_bug.cgi?id=161714
        rdar://problem/8978410

        Reviewed by Tim Horton.

        Define ENABLE_METER_ELEMENT unconditionally now.

        * Configurations/FeatureDefines.xcconfig:

2016-09-07  Mark Lam  <mark.lam@apple.com>

        Add CatchScope and force all exception checks to be via ThrowScope or CatchScope.
        https://bugs.webkit.org/show_bug.cgi?id=161498

        Reviewed by Geoffrey Garen.

        * 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):
        * WebView/WebView.mm:
        (aeDescFromJSValue):

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

        [Streams API] Separate compile flag for ReadableStream and WritableStream
        https://bugs.webkit.org/show_bug.cgi?id=161044

        Reviewed by Alex Christensen.

        Moving from STREAMS_API to READABLE_STREAM_API and WRITABLE_STREAM_API compilation flags.

        * Configurations/FeatureDefines.xcconfig:

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

        Add support for input.minLength / textArea.minLength
        https://bugs.webkit.org/show_bug.cgi?id=161644

        Reviewed by Darin Adler.

        Update ObjC bindings to reflect method renaming.

        * DOM/DOMHTMLInputElement.mm:
        (-[DOMHTMLInputElement maxLength]):
        (-[DOMHTMLInputElement setMaxLength:]):
        * DOM/DOMHTMLTextAreaElement.mm:
        (-[DOMHTMLTextAreaElement maxLength]):
        (-[DOMHTMLTextAreaElement setMaxLength:]):

2016-09-06  Dan Bernstein  <mitz@apple.com>

        <rdar://problem/8064563> Ugly NSLog in DOMInternal.mm

        Rubber-stamped by Anders Carlsson.

        * DOM/DOMInternal.mm:
        (-[WebScriptObject _initializeScriptDOMNodeImp]): Removed useless call to NSLog.

2016-09-06  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r205407.

        Not the correct way to implement this functionality

        Reverted changeset:

        "Consult with the FrameLoaderClient about whether or not
        content extensions should be enabled when loading this URL."
        https://bugs.webkit.org/show_bug.cgi?id=161441
        http://trac.webkit.org/changeset/205407

2016-09-05  Darin Adler  <darin@apple.com>

        More bindings improvements, particularly things not needed for JavaScript bindings
        https://bugs.webkit.org/show_bug.cgi?id=161572

        Reviewed by Sam Weinig.

        * DOM/DOMDOMImplementation.mm:
        (-[DOMImplementation hasFeature:version:]): Call SVGTests::hasFeatureForLegacyBindings
        instead of DOMImplementation::hasFeature. Also removed JSMainThreadNullState
        since this does not do anything that can invoke JavaScript.

        * DOM/DOMDocument.mm:
        (-[DOMDocument defaultCharset]): Call defaultCharsetForLegacyBindings. Also removed
        JSMainThreadNullState.

        * DOM/DOMDocumentType.mm:
        (-[DOMDocumentType entities]): Changed to simply return nil; same behavior as before,
        but with no dependency on WebCore. Also removed JSMainThreadNullState.
        (-[DOMDocumentType notations]): Ditto.
        (-[DOMDocumentType internalSubset]): Ditto, except empty string rather than nil.

        * DOM/DOMNode.mm:
        (-[DOMNode isSupported:version:]): Call SVGTests::hasFeatureForLegacyBindings
        instead of Node::isSupportedForBindings. Also removed JSMainThreadNullState.

2016-09-04  Joseph Pecoraro  <pecoraro@apple.com>

        Remove unnecessary RetainPtr.

        Review comments on earlier change.

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

2016-09-03  Darin Adler  <darin@apple.com>

        Streamline DOMImplementation, and move it to our new DOM exception system
        https://bugs.webkit.org/show_bug.cgi?id=161295

        Reviewed by Ryosuke Niwa.

        * DOM/DOMDOMImplementation.mm:
        (unwrap): Added. Use this instead of the IMPL macro.
        (-[DOMImplementation dealloc]): Updated to use unwrap.
        (-[DOMImplementation hasFeature:version:]): Ditto.
        (-[DOMImplementation createDocumentType:publicId:systemId:]): Updated to work with
        ExceptionOr.
        (-[DOMImplementation createDocument:qualifiedName:doctype:]): Ditto.
        (-[DOMImplementation createCSSStyleSheet:media:]): Removed exception logic since
        this function can no longer raise an exception.
        (-[DOMImplementation createHTMLDocument:]): Updated to use unwrap.
        (-[DOMImplementation hasFeature::]): Changed to call the non-deprecated version
        rather than duplicating its implementation. Also moved into the category as defined
        in the header.
        (-[DOMImplementation createDocumentType:::]): Ditto.
        (-[DOMImplementation createDocument:::]): Ditto.
        (-[DOMImplementation createCSSStyleSheet::]): Ditto.

        * DOM/DOMDocument.mm: Removed unneeded include of DOMImplementation.h.
        (-[DOMDocument setXmlStandalone:]): Updated since setXMLStandalone no longer can
        raise an exception.

        * WebView/WebFrame.mm:
        (-[WebFrame _canProvideDocumentSource]): Updated to use isTextMIMEType in its new
        location in MIMETypeRegistry instead of in DOMImplementation.

2016-09-03  Brian Weinstein  <bweinstein@apple.com>

        Implement a stub version of FrameLoaderClient::shouldUseContentExtensionsForURL.
        https://bugs.webkit.org/show_bug.cgi?id=16144

        Reviewed by Darin Adler.

        * WebCoreSupport/WebFrameLoaderClient.h:

2016-09-02  Beth Dakin  <bdakin@apple.com>

        Need to updateEditorState if an element change edit-ability without changing 
        selection
        https://bugs.webkit.org/show_bug.cgi?id=161546
        -and corresponding-
        rdar://problem/27806012

        Reviewed by Ryosuke Niwa.

        Every time WebEditorClient::respondToChangedSelection is called, we now save 
        whether the last state was contentEditable. That way in 
        updateEditorStateAfterLayoutIfNeeded() we can assess whether or not edit-ability 
        has changed. 

        * WebCoreSupport/WebEditorClient.h:
        * WebCoreSupport/WebEditorClient.mm:
        (WebEditorClient::respondToChangedSelection):
        (WebEditorClient:: updateEditorStateAfterLayoutIfEditabilityChanged):

2016-09-02  Joseph Pecoraro  <pecoraro@apple.com>

        [Mac] RetainPtr misuse, AnimationController leaks
        https://bugs.webkit.org/show_bug.cgi?id=161552

        Reviewed by Tim Horton.

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

2016-07-08  Jer Noble  <jer.noble@apple.com>

        Refactor WebPlaybackSessionModelMediaElement to be client based.
        https://bugs.webkit.org/show_bug.cgi?id=159580

        Reviewed by Eric Carlson.

        No longer necessary to tell the models and interfaces about each other.

        * WebView/WebView.mm:
        (-[WebView _setUpPlaybackControlsManagerForMediaElement:]):
        (-[WebView _clearPlaybackControlsManager]):

2016-09-01  Dan Bernstein  <mitz@apple.com>

        Build fix.

        * Configurations/FeatureDefines.xcconfig:

2016-09-01  Myles C. Maxfield  <mmaxfield@apple.com>

        Clean up TextRun-related code
        https://bugs.webkit.org/show_bug.cgi?id=161473

        Reviewed by Simon Fraser.

        Remove unused #includes.

        * WebCoreSupport/WebDragClient.mm:
        * WebView/WebView.mm:

2016-08-31  Keith Rollin  <krollin@apple.com>

        WebKit should set a subsystem for os_log so it's easier to filter for WebKit log messages
        https://bugs.webkit.org/show_bug.cgi?id=160969
        <rdar://problem/26068734>

        Reviewed by Simon Fraser.

        Enable subsystem- and channel-related data and functions when using
        RELEASE_LOG macros. Use the DECLARE_LOG_CHANNEL, DEFINE_LOG_CHANNEL,
        and LOG_CHANNEL_ADDRESS macros that are now defined in WTF.

        * Misc/WebKitLogging.h:
        * Misc/WebKitLogging.m:
        * WebView/WebView.mm:
        (-[WebView _commonInitializationWithFrameName:groupName:]):

2016-08-31  Brady Eidson  <beidson@apple.com>

        WK2 Gamepad provider on iOS.
        https://bugs.webkit.org/show_bug.cgi?id=161412

        Reviewed by Tim Horton.

        * Configurations/FeatureDefines.xcconfig:

        * WebView/WebView.mm:
        (WebKitInitializeGamepadProviderIfNecessary):

2016-08-30  Mark Lam  <mark.lam@apple.com>

        Introduce the ThrowScope and force every throw site to instantiate a ThrowScope.
        https://bugs.webkit.org/show_bug.cgi?id=161171

        Reviewed by Filip Pizlo and Geoffrey Garen.

        * Plugins/Hosted/NetscapePluginInstanceProxy.mm:
        (WebKit::NetscapePluginInstanceProxy::moveGlobalExceptionToExecState):
        * Plugins/Hosted/ProxyInstance.mm:
        (WebKit::ProxyInstance::invokeMethod):

2016-08-28  Andreas Kling  <akling@apple.com>

        document.title setter can't throw.
        <https://webkit.org/b/161302>

        Reviewed by Antti Koivisto.

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

2016-08-28  Andreas Kling  <akling@apple.com>

        Clean up some .text attribute setters that don't throw.
        <https://webkit.org/b/161292>

        Reviewed by Darin Adler.

        * DOM/DOMHTMLTitleElement.mm:
        (-[DOMHTMLTitleElement setText:]):

2016-08-26  Sam Weinig  <sam@webkit.org>

        Remove support for ENABLE_LEGACY_WEB_AUDIO
        https://bugs.webkit.org/show_bug.cgi?id=161262

        Reviewed by Anders Carlsson.

        * Configurations/FeatureDefines.xcconfig:
        Remove ENABLE_LEGACY_WEB_AUDIO

2016-08-25  Anders Carlsson  <andersca@apple.com>

        Re-export DOMException NSStrings after r204717
        https://bugs.webkit.org/show_bug.cgi?id=161200
        <rdar://problem/27959937>

        Reviewed by Alex Christensen.

        * DOM/ExceptionHandlers.mm:
        (raiseDOMException):
        * WebKit.exp:

2016-08-22  Darin Adler  <darin@apple.com>

        Move Objective-C DOM bindings from WebCore to legacy WebKit
        https://bugs.webkit.org/show_bug.cgi?id=160654

        Reviewed by Alex Christensen.

        * DOM: Added lots of files to the directory.
        The files are just as they were in bindings/objc except that the paths of includes
        have been updated as needed, and the code no longer is defined inside the WebCore
        namespace, requring changes to various functions and their call sites. Also removed
        all the WEBCORE_EXPORT since we export differently here in legacy WebKit.

        * DOM/DOMInternal.h: Moved. Replaced createDOMWrapper with initializeDOMWrapperHooks.
        * DOM/DOMUtility.mm: Moved.
        (createDOMWrapper): Simplified to use toWrapped and not do unneeded namespace tricks.
        (disconnectWindowWrapper): Added.
        (initializeDOMWrapperHooks): Added.

        * MigrateHeaders.make: Removed all the internal headers since they are now just
        normal project headers. Added the "DOM" directory to the VPATH. Some of the headers
        from WebCore are still being migrated, so we can't remove WebCorePrivateHeaders yet.

        * WebCoreSupport/WebEditorClient.h: Updated to return RefPtr<DocumentFragment>.

        * WebCoreSupport/WebEditorClient.mm:
        (WebEditorClient::documentFragmentFromDelegate): Use RefPtr.

        * WebKit.exp: Added exports for all the classes that used to use WEBCORE_EXPORT to
        be exported from WebCore.

        * WebView/WebFrame.mm:
        (-[WebFrame innerLineHeight:]): Moved code from WebCore::Frame::innerLineHeight here.
        No longer depend on whether this node happens to be in this frame. Also removed
        unneeded null check since a node's document can't be null.

        * WebView/WebHTMLView.mm: Removed uneeded include of ExceptionHandlers.h, which
        is now here in WebKitLegacy instead of WebCore. But no need to include it at all.

        * WebView/WebView.mm:
        (-[WebView _commonInitializationWithFrameName:groupName:]): Call
        initializeDOMWrapperHooks so WebScriptObject can create DOM binding wrappers when
        making a script object for a DOM object, rather than just a generic script object.
        (+[WebView enableWebThread]): Added a call to WebCoreObjCDeallocOnWebThread here for
        DOMObject along with the other classes. This was done in WebCore before, but DOMObject is now
        defined here in legacy WebKit.
        (-[WebView styleAtSelectionStart]): Moved code from WebCore::Frame::styleAtSelectionStart here.
        Replaced incorrect code that called "new PropertySetCSSStyleDeclaration" with a misleading comment
        about reference counting; that code was leaking all the style declarations. Instead use
        MutableStyleProperties::ensureCSSStyleDeclaration, which is designed for this purpose.

2016-08-22  Youenn Fablet  <youenn@apple.com>

        [Fetch API] Activate fetch api runtime flag by default
        https://bugs.webkit.org/show_bug.cgi?id=160452

        Reviewed by Alex Christensen.

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

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

        Use Document& instead of Document* when getting cookies
        https://bugs.webkit.org/show_bug.cgi?id=161011

        Reviewed by Darin Adler.

        * Plugins/Hosted/NetscapePluginInstanceProxy.mm:
        (WebKit::NetscapePluginInstanceProxy::getCookies):
        (WebKit::NetscapePluginInstanceProxy::setCookies):
        * Plugins/WebNetscapePluginView.mm:
        (-[WebNetscapePluginView getVariable:forURL:value:length:]):
        (-[WebNetscapePluginView setVariable:forURL:value:length:]):

2016-08-16  Simon Fraser  <simon.fraser@apple.com>

        Rename didLayout(LayoutMilestones) to didReachLayoutMilestone(), and related WK2 functions
        https://bugs.webkit.org/show_bug.cgi?id=160923

        Reviewed by Tim Horton.

        * WebCoreSupport/WebFrameLoaderClient.h:
        * WebCoreSupport/WebFrameLoaderClient.mm:
        (WebFrameLoaderClient::dispatchDidReachLayoutMilestone):
        (WebFrameLoaderClient::dispatchDidLayout): Deleted.

2016-08-18  Daniel Bates  <dabates@apple.com>

        Ld warns of non-existent PrivateFrameworks directory when building WebKit with the public iOS 9.3 SDK
        https://bugs.webkit.org/show_bug.cgi?id=160979

        Rubber-stamped by Simon Fraser.

        Only add the SDK PrivateFrameworks directory to the FRAMEWORK_SEARCH_PATH when building for
        iOS Simulator, building with an iOS SDK that does not support text-based stubs, or building
        an Apple-internal build.

        * Configurations/WebKitLegacy.xcconfig:

2016-08-18  Anders Carlsson  <andersca@apple.com>

        Move an NPAPI-only function from WebCore to WebKit
        https://bugs.webkit.org/show_bug.cgi?id=160967

        Reviewed by Sam Weinig.

        * Plugins/WebNetscapePluginView.h:
        * Plugins/WebNetscapePluginView.mm:
        (-[WebNetscapePluginView getVariable:value:]):
        (-[WebNetscapePluginView _destroyPlugin]):

2016-08-18  Rawinder Singh  <rawinder.singh-webkit@cisra.canon.com.au>

        [web-animations] Add Animatable, AnimationEffect, KeyframeEffect and Animation interface
        https://bugs.webkit.org/show_bug.cgi?id=156096

        Reviewed by Dean Jackson.

        Adds:
        - Setup interface for enabling runtime flag for Web animations through preferences.

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

2016-08-17  Anders Carlsson  <andersca@apple.com>

        Remove a couple of unused WKSI function pointers
        https://bugs.webkit.org/show_bug.cgi?id=160946

        Reviewed by Dan Bernstein.

        * WebCoreSupport/WebSystemInterface.mm:
        (InitWebCoreSystemInterface): Deleted.

2016-08-16  Daniel Bates  <dabates@apple.com>

        WKSI static library should be named by major iOS revision, not individual updates
        https://bugs.webkit.org/show_bug.cgi?id=160727
        <rdar://problem/22274848>

        Reviewed by Alexey Proskuryakov.

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

2016-08-16  Darin Adler  <darin@apple.com>

        [Cocoa] Remove dependency on Objective-C bindings in WebKit2 editing code
        https://bugs.webkit.org/show_bug.cgi?id=160891

        Reviewed by Anders Carlsson.

        * WebCoreSupport/WebEditorClient.h: Removed documentFragmentFromAttributedString.

        * WebCoreSupport/WebEditorClient.mm:
        (attributesForAttributedStringConversion): Replaced the
        createExcludedElementsForAttributedStringConversion function with this one.
        No good reason to keep the array around instead of the dictionary.
        (_WebCreateFragment): Renamed from documentFragmentFromAttributedString.
        This is now a global function exported so it can be called by WebCore with
        a different way of returning its value.

        * WebKit.exp: Added _WebCreateFragment.

        * WebView/WebHTMLView.mm:
        (-[WebHTMLView _documentFragmentFromPasteboard:forType:inContext:subresources:]):
        Removed long-ago-obsolete workaround for Radar bug 5052369.

2016-08-15  Anders Carlsson  <andersca@apple.com>

        Another build fix.

        * WebKit.exp:

2016-08-15  Anders Carlsson  <andersca@apple.com>

        Fix build.

        * Configurations/WebKitLegacy.xcconfig:
        * WebKit.mac.exp:

2016-08-15  Anders Carlsson  <andersca@apple.com>

        Remove OldWebAssertions.c
        https://bugs.webkit.org/show_bug.cgi?id=160862

        Reviewed by Dan Bernstein.

        These functions were used by an old version of iWeb. The latest version of iWeb no longer uses them.

        * Misc/OldWebAssertions.c: Removed.
        (WebReportAssertionFailure): Deleted.
        (WebReportError): Deleted.

2016-08-15  Anders Carlsson  <andersca@apple.com>

        Remove WebKeyGenerator
        https://bugs.webkit.org/show_bug.cgi?id=160854

        Reviewed by Dan Bernstein.

        This SPI class is no longer used by Safari.

        * WebCoreSupport/WebKeyGenerator.h: Removed.
        * WebCoreSupport/WebKeyGenerator.mm: Removed.
        (+[WebKeyGenerator sharedGenerator]): Deleted.
        (toWebCertificateParseResult): Deleted.
        (-[WebKeyGenerator addCertificatesToKeychainFromData:]): Deleted.
        * WebView/WebFrameView.mm:

2016-08-15  Daniel Bates  <dabates@apple.com>

        Cannot build WebKit for iOS device using Xcode 7.3/iOS 9.3 public SDK due to missing
        private frameworks and libraries
        https://bugs.webkit.org/show_bug.cgi?id=155931
        <rdar://problem/25807989>

        Reviewed by Dan Bernstein.

        Add directory WebKitLibraries/WebKitPrivateFrameworkStubs/iOS/X to the framework search path
        where X is the major version of the active iOS SDK.

        * Configurations/WebKitLegacy.xcconfig:

2016-08-15  Simon Fraser  <simon.fraser@apple.com>

        Add a setting and preferences to enable visual viewport mode
        https://bugs.webkit.org/show_bug.cgi?id=160843

        Reviewed by Sam Weinig.

        Hook up the visualViewportEnabled setting for WebKit1.

        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):
        (-[WebPreferences visualViewportEnabled]):
        (-[WebPreferences setVisualViewportEnabled:]):
        * WebView/WebPreferencesPrivate.h:

2016-08-15  Joseph Pecoraro  <pecoraro@apple.com>

        Remove unused includes of wtf headers
        https://bugs.webkit.org/show_bug.cgi?id=160839

        Reviewed by Alex Christensen.

        * History/BinaryPropertyList.cpp:
        * History/WebBackForwardList.mm:
        * History/WebHistoryItemInternal.h:
        * Misc/WebNSFileManagerExtras.mm:
        * Plugins/Hosted/NetscapePluginHostProxy.h:
        * WebCoreSupport/WebPlatformStrategies.mm:
        * WebCoreSupport/WebSelectionServiceController.mm:
        * WebCoreSupport/WebUserMediaClient.h:

2016-08-12  Anders Carlsson  <andersca@apple.com>

        Move the plug-in and WebGL blacklist code to WebCore
        https://bugs.webkit.org/show_bug.cgi?id=160831

        Reviewed by Sam Weinig.

        Adopt the plug-in and WebGL blacklist code from WebCore instead of using the code from WebKitSystemInterface.

        * WebCoreSupport/WebFrameLoaderClient.mm:
        (shouldBlockPlugin):
        (WebFrameLoaderClient::createPlugin):
        (WebFrameLoaderClient::createJavaAppletWidget):
        (shouldBlockWebGL):
        (WebFrameLoaderClient::webGLPolicyForURL):
        (WebFrameLoaderClient::resolveWebGLPolicyForURL):

2016-08-14  Daniel Bates  <dabates@apple.com>

        Fix compiler errors when building iOS WebKit using the iOS 10 beta SDK
        https://bugs.webkit.org/show_bug.cgi?id=160725

        Reviewed by Sam Weinig.

        OSAtomicCompareAndSwap32() has been deprecated as of the iOS 10 beta SDK. For now,
        silence the complier warning.

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

2016-08-12  Joseph Pecoraro  <pecoraro@apple.com>

        Remove always true JSC::Debugger::needPauseHandling virtual method
        https://bugs.webkit.org/show_bug.cgi?id=160822

        Reviewed by Mark Lam.

        * WebView/WebScriptDebugger.h:

2016-08-11  Chris Dumez  <cdumez@apple.com>

        Regression(r204268): Mail crashes when trying to compose an email
        https://bugs.webkit.org/show_bug.cgi?id=160775

        Reviewed by Anders Carlsson.

        Properly initialize PageConfiguration.pluginInfoProvider in
        [WebView initSimpleHTMLDocumentWithStyle] to avoid a null
        dereference in Mail when trying to compose an email.

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

2016-08-10  Simon Fraser  <simon.fraser@apple.com>

        Sort the feature flags in the FEATURE_DEFINES lines
        https://bugs.webkit.org/show_bug.cgi?id=160742

        Reviewed by Anders Carlsson.

        * Configurations/FeatureDefines.xcconfig:

2016-08-09  Alex Christensen  <achristensen@webkit.org>

        Move NetworkStorageSession management to WebCore
        https://bugs.webkit.org/show_bug.cgi?id=160173

        Reviewed by Brady Eidson.

        * WebCoreSupport/WebFrameNetworkingContext.mm:
        (WebFrameNetworkingContext::ensurePrivateBrowsingSession):
        (WebFrameNetworkingContext::destroyPrivateBrowsingSession):
        * WebCoreSupport/WebPlatformStrategies.mm:
        * WebView/WebView.mm:

2016-08-09  Anders Carlsson  <andersca@apple.com>

        Instantiate WebKit plug-ins at layout time, instead of at style resolution time
        https://bugs.webkit.org/show_bug.cgi?id=160715

        Reviewed by Tim Horton.

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

2016-08-09  George Ruan  <gruan@apple.com>

        Implement functionality of media capture on iOS
        https://bugs.webkit.org/show_bug.cgi?id=158945
        <rdar://problem/26893343>

        Reviewed by Tim Horton.

        * Configurations/FeatureDefines.xcconfig: Enable Media Capture feature
        for iOS.

2016-08-09  Anders Carlsson  <andersca@apple.com>

        Get rid of PluginStrategy
        https://bugs.webkit.org/show_bug.cgi?id=160696

        Reviewed by Dan Bernstein.

        * WebCoreSupport/WebPlatformStrategies.h:
        * WebCoreSupport/WebPlatformStrategies.mm:
        (WebPlatformStrategies::createPluginStrategy): Deleted.
        * WebCoreSupport/WebPluginInfoProvider.h:
        * WebCoreSupport/WebPluginInfoProvider.mm:
        (WebPluginInfoProvider::setPluginLoadClientPolicy): Deleted.
        (WebPluginInfoProvider::clearPluginClientPolicies): Deleted.

2016-08-09  Anders Carlsson  <andersca@apple.com>

        Move plug-in enumeration from WebPlatformStrategies to WebPluginInfoProvider
        https://bugs.webkit.org/show_bug.cgi?id=160694

        Reviewed by Dan Bernstein.

        * WebCoreSupport/WebPlatformStrategies.h:
        * WebCoreSupport/WebPlatformStrategies.mm:
        (WebPlatformStrategies::createPluginStrategy):
        (WebPlatformStrategies::refreshPlugins): Deleted.
        (WebPlatformStrategies::getPluginInfo): Deleted.
        (WebPlatformStrategies::getWebVisiblePluginInfo): Deleted.
        (WebPlatformStrategies::setPluginLoadClientPolicy): Deleted.
        (WebPlatformStrategies::clearPluginClientPolicies): Deleted.
        * WebCoreSupport/WebPluginInfoProvider.mm:
        (WebPluginInfoProvider::refreshPlugins):
        (WebPluginInfoProvider::getPluginInfo):
        (WebPluginInfoProvider::getWebVisiblePluginInfo):

2016-08-08  Anders Carlsson  <andersca@apple.com>

        Add a new PluginInfoProvider class, to replace PluginStrategy
        https://bugs.webkit.org/show_bug.cgi?id=160670

        Reviewed by Sam Weinig.

        Add a new WebPluginInfoProvider - it just calls through to the plug-in strategy for now.

        * WebCoreSupport/WebPluginInfoProvider.h: Added.
        * WebCoreSupport/WebPluginInfoProvider.mm: Added.
        (WebPluginInfoProvider::singleton):
        (WebPluginInfoProvider::WebPluginInfoProvider):
        (WebPluginInfoProvider::~WebPluginInfoProvider):
        (WebPluginInfoProvider::refreshPlugins):
        (WebPluginInfoProvider::getPluginInfo):
        (WebPluginInfoProvider::getWebVisiblePluginInfo):
        (WebPluginInfoProvider::setPluginLoadClientPolicy):
        (WebPluginInfoProvider::clearPluginClientPolicies):
        * WebView/WebView.mm:
        (-[WebView _commonInitializationWithFrameName:groupName:]):

2016-08-02  Enrica Casucci  <enrica@apple.com>

        Allow building with content filtering disabled.
        https://bugs.webkit.org/show_bug.cgi?id=160454

        Reviewed by Simon Fraser.

        * Configurations/FeatureDefines.xcconfig:
        * WebCoreSupport/WebFrameLoaderClient.h:
        * WebCoreSupport/WebFrameLoaderClient.mm:
        (WebFrameLoaderClient::blockedByContentFilterError):

2016-08-02  Anders Carlsson  <andersca@apple.com>

        Remove more unused/uninstalled Objective-C DOM bindings
        https://bugs.webkit.org/show_bug.cgi?id=160464

        Reviewed by Darin Adler.

        Stop installing unused headers.

        * MigrateHeaders.make:

2016-08-01  Anders Carlsson  <andersca@apple.com>

        Bring back a file - it needs to be copied by WebCore.

        * MigrateHeaders.make:

2016-08-01  Anders Carlsson  <andersca@apple.com>

        Remove another file.

        * MigrateHeaders.make:

2016-08-01  Anders Carlsson  <andersca@apple.com>

        Remove a file.

        * MigrateHeaders.make:

2016-08-01  Anders Carlsson  <andersca@apple.com>

        Freeze all the DOMHTML* Objective-C bindings
        https://bugs.webkit.org/show_bug.cgi?id=160424

        Reviewed by Tim Horton.

        Don't migrate DOMHTMLEmbedElementPrivate.h - it was just an empty header.

        * MigrateHeaders.make:

2016-07-28  Myles C. Maxfield  <mmaxfield@apple.com>

        Remove deprecated SPI for video inline / fullscreen controls
        https://bugs.webkit.org/show_bug.cgi?id=160318

        Reviewed by Tim Horton.

        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]): Deleted.
        (-[WebPreferences allowsInlineMediaPlaybackWithPlaysInlineAttribute]): Deleted.
        (-[WebPreferences setAllowsInlineMediaPlaybackWithPlaysInlineAttribute:]): Deleted.
        (-[WebPreferences allowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute]): Deleted.
        (-[WebPreferences setAllowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute:]): Deleted.
        * WebView/WebPreferencesPrivate.h:
        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]): Deleted.

2016-07-28  Anders Carlsson  <andersca@apple.com>

        Move a Mail.app workaround closer to where it's actually needed
        https://bugs.webkit.org/show_bug.cgi?id=160317

        Reviewed by Tim Horton.

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

2016-07-28  Anders Carlsson  <andersca@apple.com>

        Use a RetainPtr in WebFrameLoaderClient::assignIdentifierToInitialRequest
        https://bugs.webkit.org/show_bug.cgi?id=160315

        Reviewed by Tim Horton.

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

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

        Fix the Windows debug build.
        
        WebResourceLoadScheduler's logging was a holdover from it being in WebCore,
        and prior to r203749 WebKit was actually using a WebCore log channel.
        
        For some reason this doesn't build on Windows debug, so just remove
        this logging for now.

        * Misc/WebKitLogging.h:

2016-07-26  Myles C. Maxfield  <mmaxfield@apple.com>

        [iPhone] Playing a video on tudou.com plays only sound, no video
        https://bugs.webkit.org/show_bug.cgi?id=160178
        <rdar://problem/27535468>

        Reviewed by Eric Carlson and Dan Bernstein.

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

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

        Allow LOG macros to be used outside the namespace, and other logging cleanup
        https://bugs.webkit.org/show_bug.cgi?id=160216

        Reviewed by Anders Carlsson.

        Fix some issues with the LOG macros.
        
        First, they were not usable outside the WebKit namespace in WebKit2 code. Fix by moving
        its log channels outside of the namespace (they are protected by a unique prefix anyway).
        
        Second, allow LOG_WITH_STREAM to be used in WebKit2 by moving that and a helper macro
        into LogMacros.h, which is exported from WebCore as a private header.
        
        Third, split the Logging.h header into two. Logging.h remains for framework-internal
        log channels and log macros. Add LogInitialization.h which is external, and used to
        initialize the channels.
        
        Finally unify "initializeLogChannels" and "initializeLoggingChannels" terminology everywhere.

        * Misc/WebKitLogging.h:
        * Misc/WebKitLogging.m:
        * WebView/WebView.mm:
        (-[WebView _commonInitializationWithFrameName:groupName:]):

2016-07-21  Myles C. Maxfield  <mmaxfield@apple.com>

        Remove support for deprecated SPI inlineMediaPlaybackRequiresPlaysInlineAttribute
        https://bugs.webkit.org/show_bug.cgi?id=160066

        Reviewed by Dean Jackson.

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

2016-07-21  Myles C. Maxfield  <mmaxfield@apple.com>

        [iPhone] Playing a video on tudou.com plays only sound, no video
        https://bugs.webkit.org/show_bug.cgi?id=159967
        <rdar://problem/26964090>

        Reviewed by Jon Lee, Jeremy Jones, and Anders Carlsson.

        Add the two preferences to WebPreferences.

        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):
        (-[WebPreferences allowsInlineMediaPlaybackWithPlaysInlineAttribute]):
        (-[WebPreferences setAllowsInlineMediaPlaybackWithPlaysInlineAttribute:]):
        (-[WebPreferences allowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute]):
        (-[WebPreferences setAllowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute:]):
        * WebView/WebPreferencesPrivate.h:
        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]):

2016-07-20  Commit Queue  <commit-queue@webkit.org>

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

        many iOS-simulator tests are failing (Requested by litherum on
        #webkit).

        Reverted changeset:

        "[iPhone] Playing a video on tudou.com plays only sound, no
        video"
        https://bugs.webkit.org/show_bug.cgi?id=159967
        http://trac.webkit.org/changeset/203471

2016-07-20  Myles C. Maxfield  <mmaxfield@apple.com>

        [iPhone] Playing a video on tudou.com plays only sound, no video
        https://bugs.webkit.org/show_bug.cgi?id=159967
        <rdar://problem/26964090>

        Reviewed by Jon Lee.

        Add the two preferences to WebPreferences.

        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):
        (-[WebPreferences allowsInlineMediaPlaybackWithPlaysInlineAttribute]):
        (-[WebPreferences setAllowsInlineMediaPlaybackWithPlaysInlineAttribute:]):
        (-[WebPreferences allowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute]):
        (-[WebPreferences setAllowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute:]):
        * WebView/WebPreferencesPrivate.h:
        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]):

2016-07-19  Andy Estes  <aestes@apple.com>

        Move WebKitErrorFrameLoadBlockedByContentFilter from WebKitErrors.h to WebKitErrorsPrivate.h
        https://bugs.webkit.org/show_bug.cgi?id=159956

        Reviewed by Dan Bernstein.

        * Misc/WebKitErrors.h: Moved definition of WebKitErrorFrameLoadBlockedByContentFilter from here ...
        * Misc/WebKitErrorsPrivate.h: to here.

2016-07-18  Anders Carlsson  <andersca@apple.com>

        WebKit nightly fails to build on macOS Sierra
        https://bugs.webkit.org/show_bug.cgi?id=159902
        rdar://problem/27365672

        Reviewed by Tim Horton.

        * icu/unicode/ucurr.h: Added.
        Add ucurr.h from ICU.

2016-07-17  Sam Weinig  <sam@webkit.org>

        [WebKit API] Add SPI to track multiple navigations caused by a single user gesture
        <rdar://problem/26554137>
        https://bugs.webkit.org/show_bug.cgi?id=159856

        Reviewed by Dan Bernstein.

        * Plugins/Hosted/NetscapePluginInstanceProxy.mm:
        (WebKit::NetscapePluginInstanceProxy::evaluate):
        * Plugins/WebNetscapePluginView.mm:
        (-[WebNetscapePluginView sendEvent:isDrawRect:]):
        Update for new UserGestureIndicator interface.

2016-07-16  Ryosuke Niwa  <rniwa@webkit.org>

        Rename fastGetAttribute to attributeWithoutSynchronization
        https://bugs.webkit.org/show_bug.cgi?id=159852

        Reviewed by Darin Adler.

        * WebView/WebHTMLRepresentation.mm:
        (matchLabelsAgainstElement):

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

        Use fastGetAttribute() / setAttributeWithoutSynchronization() when possible
        https://bugs.webkit.org/show_bug.cgi?id=159793

        Reviewed by Ryosuke Niwa.

        Use fastGetAttribute() / setAttributeWithoutSynchronization() when possible, for performance.

        * WebView/WebHTMLRepresentation.mm:
        (matchLabelsAgainstElement):

2016-07-14  Alex Christensen  <achristensen@webkit.org>

        Use SocketProvider to create SocketStreamHandles
        https://bugs.webkit.org/show_bug.cgi?id=159774

        Reviewed by Brady Eidson.

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

2016-07-14  Csaba Osztrogonác  <ossy@webkit.org>

        Fix the !ENABLE(WEB_SOCKETS) build after r202930
        https://bugs.webkit.org/show_bug.cgi?id=159768

        Reviewed by Alex Christensen.

        * Misc/WebSocketProvider.h:

2016-07-13  Beth Dakin  <bdakin@apple.com>

        Add more candidate tests
        https://bugs.webkit.org/show_bug.cgi?id=159730

        Reviewed by Tim Horton.

        Move shouldRequestCandidates from WebViewInternal to WebViewPrivate so that 
        we can use it in tests. 
        * WebView/WebViewInternal.h:
        * WebView/WebViewPrivate.h:

2016-07-13  Enrica Casucci  <enrica@apple.com>

        Update supported platforms in xcconfig files to match the sdk names.
        https://bugs.webkit.org/show_bug.cgi?id=159728

        Reviewed by Tim Horton.

        * Configurations/Base.xcconfig:

2016-07-12  Gyuyoung Kim  <gyuyoung.kim@webkit.org>

        Remove ENABLE_CSS3_TEXT_LINE_BREAK flag
        https://bugs.webkit.org/show_bug.cgi?id=159671

        Reviewed by Csaba Osztrogonác.

        ENABLE_CSS3_TEXT_LINE_BREAK feature was implemented without guards.
        https://bugs.webkit.org/show_bug.cgi?id=89235

        So this guard can be removed in build scripts.

        * Configurations/FeatureDefines.xcconfig:

2016-07-11  Gyuyoung Kim  <gyuyoung.kim@webkit.org>

        Purge PassRefPtr in platform/efl and platform/mac 
        https://bugs.webkit.org/show_bug.cgi?id=159548

        Reviewed by Alex Christensen.

        Remove all use of PassRefPtr and clean up unnecessary tabs and spaces.

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

2016-07-11  Enrica Casucci  <enrica@apple.com>

        Add synthetic click origin to WKNavigationAction.
        https://bugs.webkit.org/show_bug.cgi?id=159584
        rdar://problem/25610422

        Reviewed by Tim Horton.

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

2016-07-11  Anders Carlsson  <andersca@apple.com>

        Able to open multiple payment sheets in Safari at the same time
        https://bugs.webkit.org/show_bug.cgi?id=159637
        rdar://problem/26411339

        Reviewed by Beth Dakin.

        Update for WebCore changes.

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

2016-07-08  Andy Estes  <aestes@apple.com>

        [Content Filtering] Load blocked pages more like other error pages are loaded
        https://bugs.webkit.org/show_bug.cgi?id=159485
        <rdar://problem/26014076>

        Reviewed by Brady Eidson.

        * Misc/WebKitErrors.h: Defined WebKitErrorFrameLoadBlockedByContentFilter.
        * Misc/WebKitErrors.m:
        (registerErrors): Registered WebKitErrorDescriptionFrameLoadBlockedByContentFilter.
        * WebCoreSupport/WebFrameLoaderClient.h:
        * WebCoreSupport/WebFrameLoaderClient.mm:
        (WebFrameLoaderClient::blockedByContentFilterError): Returned a ResourceError for WebKitErrorFrameLoadBlockedByContentFilter.

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

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

        caused some tests to crash under GuardMalloc (Requested by
        estes on #webkit).

        Reverted changeset:

        "[Content Filtering] Load blocked pages more like other error
        pages are loaded"
        https://bugs.webkit.org/show_bug.cgi?id=159485
        http://trac.webkit.org/changeset/202944

2016-07-08  Jiewen Tan  <jiewen_tan@apple.com>

        Define DYLD_MACOSX_VERSION_10_12
        https://bugs.webkit.org/show_bug.cgi?id=159525
        <rdar://problem/26250296>

        Reviewed by Brent Fulgham.

        * WebView/WebView.mm:
        (shouldConvertInvalidURLsToBlank):
        Replace 0x000A0C00 with DYLD_MACOSX_VERSION_10_12.

2016-07-07  Beth Dakin  <bdakin@apple.com>

        API Test DoNotLeakWebView.ViewThatLoadsEditableArea times out on macOS Sierra
        https://bugs.webkit.org/show_bug.cgi?id=159532
        -and corresponding-
        rdar://problem/27177179

        Reviewed by Tim Horton.

        * WebView/WebView.mm:
        (-[WebView showCandidates:forString:inRect:forSelectedRange:view:completionHandler:]):
        (-[WebView forceRequestCandidatesForTesting]):
        (-[WebView shouldRequestCandidates]):
        * WebView/WebViewPrivate.h:

2016-07-07  Andy Estes  <aestes@apple.com>

        [Content Filtering] Load blocked pages more like other error pages are loaded
        https://bugs.webkit.org/show_bug.cgi?id=159485
        <rdar://problem/26014076>

        Reviewed by Brady Eidson.

        * Misc/WebKitErrors.h: Defined WebKitErrorFrameLoadBlockedByContentFilter.
        * Misc/WebKitErrors.m:
        (registerErrors): Registered WebKitErrorDescriptionFrameLoadBlockedByContentFilter.
        * WebCoreSupport/WebFrameLoaderClient.h:
        * WebCoreSupport/WebFrameLoaderClient.mm:
        (WebFrameLoaderClient::blockedByContentFilterError): Returned a ResourceError for WebKitErrorFrameLoadBlockedByContentFilter.

2016-07-07  Alex Christensen  <achristensen@webkit.org>

        Use SocketProvider to create WebSocketChannels
        https://bugs.webkit.org/show_bug.cgi?id=158776

        Reviewed by Brent Fulgham.

        * Misc/WebSocketProvider.mm: Copied from Source/WebCore/Modules/websockets/ThreadableWebSocketChannel.cpp.
        (WebSocketProvider::createWebSocketChannel):
        (WebCore::ThreadableWebSocketChannel::create): Deleted.
        * Misc/WebSocketProvider.h:
        * WebView/WebView.mm:
        (-[WebView _commonInitializationWithFrameName:groupName:]):
        (-[WebView initSimpleHTMLDocumentWithStyle:frame:preferences:groupName:]):

2016-07-06  Benjamin Poulain  <bpoulain@apple.com>

        [JSC] Unify how we throw TypeError from C++
        https://bugs.webkit.org/show_bug.cgi?id=159500

        Reviewed by Saam Barati.

        * Plugins/Hosted/ProxyInstance.mm:
        (WebKit::ProxyInstance::invokeMethod):

2016-07-01  Youenn Fablet  <youennf@gmail.com>

        Add a runtime flag for DOM iterators
        https://bugs.webkit.org/show_bug.cgi?id=159300

        Reviewed by Alex Christensen.

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

2016-06-30  Jiewen Tan  <jiewen_tan@apple.com>

        Create a generic "linked-on-or-after" check for new CSP Rules
        https://bugs.webkit.org/show_bug.cgi?id=159322
        <rdar://problem/27117220>

        Reviewed by Brent Fulgham.

        * WebView/WebView.mm:
        (shouldAllowContentSecurityPolicySourceStarToMatchAnyProtocol):

2016-06-30  Anders Carlsson  <andersca@apple.com>

        Mail crashes on launch at WebCore::PaymentCoordinator::~PaymentCoordinator() + 20
        https://bugs.webkit.org/show_bug.cgi?id=159306
        rdar://problem/27092107

        Reviewed by Tim Horton.

        * WebView/WebView.mm:
        (-[WebView initSimpleHTMLDocumentWithStyle:frame:preferences:groupName:]):
        Create a WebPaymentCoordinatorClient. Remove an unneeded #import.

        (-[WebView _commonInitializationWithFrameName:groupName:]):
        Remove an unneeded #import.

2016-06-27  Anders Carlsson  <andersca@apple.com>

        WebKit::WebPaymentCoordinator leak
        https://bugs.webkit.org/show_bug.cgi?id=159168
        rdar://problem/26929772

        Reviewed by Beth Dakin.

        Update for WebCore changes.

        * WebCoreSupport/WebPaymentCoordinatorClient.h:
        * WebCoreSupport/WebPaymentCoordinatorClient.mm:
        (WebPaymentCoordinatorClient::paymentCoordinatorDestroyed):
        (WebPaymentCoordinatorClient::mainFrameDestroyed): Deleted.

2016-06-27  Tim Horton  <timothy_horton@apple.com>

        REGRESSION (r189052): Clipping occurs when using context menu to Look Up words within the Dictionary app
        https://bugs.webkit.org/show_bug.cgi?id=159184
        <rdar://problem/26370206>

        Reviewed by Beth Dakin.

        * WebView/WebHTMLView.mm:
        (-[WebHTMLView _lookUpInDictionaryFromMenu:]):
        * WebView/WebImmediateActionController.h:
        * WebView/WebImmediateActionController.mm:
        (+[WebImmediateActionController _dictionaryPopupInfoForRange:inFrame:withLookupOptions:indicatorOptions:transition:]):
        (-[WebImmediateActionController _animationControllerForText]):
        (dictionaryPopupInfoForRange): Deleted.
        WebImmediateActionController's code to make a DictionaryPopupInfo and TextIndicator
        from a Range in WebKit1 is much better than WebHTMLView's; use it in both cases.

2016-06-24  Jer Noble  <jer.noble@apple.com>

        Playback controls refer to wrong element when playing multiple items in a page.
        https://bugs.webkit.org/show_bug.cgi?id=159076
        <rdar://problem/26953532>

        Reviewed by Beth Dakin.

        clearPlaybackControlsManager() no longer takes a parameter.

        * WebCoreSupport/WebChromeClient.h:
        * WebCoreSupport/WebChromeClient.mm:
        (WebChromeClient::clearPlaybackControlsManager):
        * WebView/WebView.mm:
        (-[WebView _clearPlaybackControlsManager]): Renamed from _clearPlaybackControlsManagerForMediaElement:.
        * WebView/WebViewInternal.h:

2016-06-23  Alex Christensen  <achristensen@webkit.org>

        Remove unused didCancelAuthenticationChallenge
        https://bugs.webkit.org/show_bug.cgi?id=158819

        Reviewed by David Kilzer.

        * Misc/WebDownload.mm:
        (-[WebDownloadInternal download:didCancelAuthenticationChallenge:]): Deleted.
        * WebCoreSupport/WebFrameLoaderClient.h:
        * WebCoreSupport/WebFrameLoaderClient.mm:
        (WebFrameLoaderClient::dispatchDidCancelAuthenticationChallenge): Deleted.
        * WebView/WebDelegateImplementationCaching.h:
        * WebView/WebView.mm:
        (-[WebView _cacheResourceLoadDelegateImplementations]):

2016-06-23  John Wilander  <wilander@apple.com>

        Enable window.open() for existing versions of Secret Society app
        https://bugs.webkit.org/show_bug.cgi?id=159049
        <rdar://problem/26528349>

        Reviewed by Andy Estes.

        The Secret Society Hidden Mystery app has a broken version check treating iOS 10
        as iOS 1 on iPads. Therefore it believes it can use window.open() in a tap
        handler. We should allow the existing versions of the app to do this to not break
        them.

        * WebView/WebView.mm:
        (shouldAllowWindowOpenWithoutUserGesture):
            Added.
        (shouldConvertInvalidURLsToBlank):
            Changed hex number to constant DYLD_IOS_VERSION_10_0.

2016-06-22  Anders Carlsson  <andersca@apple.com>

        Move the WebKitLegacy Apple Pay code to the open source repository
        https://bugs.webkit.org/show_bug.cgi?id=159035

        Reviewed by Tim Horton.

        * WebCoreSupport/WebPaymentCoordinatorClient.h: Added.
        * WebCoreSupport/WebPaymentCoordinatorClient.mm: Added.
        (WebPaymentCoordinatorClient::WebPaymentCoordinatorClient):
        (WebPaymentCoordinatorClient::~WebPaymentCoordinatorClient):
        (WebPaymentCoordinatorClient::supportsVersion):
        (WebPaymentCoordinatorClient::canMakePayments):
        (WebPaymentCoordinatorClient::canMakePaymentsWithActiveCard):
        (WebPaymentCoordinatorClient::showPaymentUI):
        (WebPaymentCoordinatorClient::completeMerchantValidation):
        (WebPaymentCoordinatorClient::completeShippingMethodSelection):
        (WebPaymentCoordinatorClient::completeShippingContactSelection):
        (WebPaymentCoordinatorClient::completePaymentMethodSelection):
        (WebPaymentCoordinatorClient::completePaymentSession):
        (WebPaymentCoordinatorClient::abortPaymentSession):
        (WebPaymentCoordinatorClient::mainFrameDestroyed):
        * WebKitAdditions.mm: Removed.
        * WebView/WebView.mm:
        (-[WebView _commonInitializationWithFrameName:groupName:]):

2016-06-21  Anders Carlsson  <andersca@apple.com>

        Fix build.

        * Configurations/FeatureDefines.xcconfig:

2016-06-21  Anders Carlsson  <andersca@apple.com>

        Begin moving the Apple Pay code to the open source repository
        https://bugs.webkit.org/show_bug.cgi?id=158998

        Reviewed by Tim Horton.

        * Configurations/FeatureDefines.xcconfig:
        Add ENABLE_APPLE_PAY.

2016-06-20  Simon Fraser  <simon.fraser@apple.com>

        Focus event dispatched in iframe causes parent document to scroll incorrectly
        https://bugs.webkit.org/show_bug.cgi?id=158629
        rdar://problem/26521616

        Reviewed by Tim Horton.
        
        Pass SelectionRevealMode::Reveal in existing code.

        * WebView/WebFrame.mm:
        (-[WebFrame _scrollDOMRangeToVisible:]):
        (-[WebFrame _scrollDOMRangeToVisible:withInset:]):
        (-[WebFrame revealSelectionAtExtent:]):
        * WebView/WebHTMLView.mm:
        (-[WebHTMLView jumpToSelection:]):
        (-[WebHTMLView centerSelectionInVisibleArea:]):

2016-06-21  Amir Alavi  <aalavi@apple.com>

        Upstream WKHTTPCookiesForURL from WebKitSystemInterface to OpenSource
        https://bugs.webkit.org/show_bug.cgi?id=158967

        Reviewed by Brent Fulgham.

        * WebCoreSupport/WebSystemInterface.mm:
        (InitWebCoreSystemInterface): Deleted.

2016-06-20  Commit Queue  <commit-queue@webkit.org>

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

        Broke Windows build and iOS tests (Requested by ap on
        #webkit).

        Reverted changeset:

        "Focus event dispatched in iframe causes parent document to
        scroll incorrectly"
        https://bugs.webkit.org/show_bug.cgi?id=158629
        http://trac.webkit.org/changeset/202243

2016-06-20  Simon Fraser  <simon.fraser@apple.com>

        Focus event dispatched in iframe causes parent document to scroll incorrectly
        https://bugs.webkit.org/show_bug.cgi?id=158629
        rdar://problem/26521616

        Reviewed by Tim Horton.
        
        Pass SelectionRevealMode::Reveal in existing code.

        * WebView/WebFrame.mm:
        (-[WebFrame _scrollDOMRangeToVisible:]):
        (-[WebFrame _scrollDOMRangeToVisible:withInset:]):
        (-[WebFrame revealSelectionAtExtent:]):
        * WebView/WebHTMLView.mm:
        (-[WebHTMLView jumpToSelection:]):
        (-[WebHTMLView centerSelectionInVisibleArea:]):

2016-06-20  Keith Rollin  <krollin@apple.com>

        Remove RefPtr::release() and change calls sites to use WTFMove()
        https://bugs.webkit.org/show_bug.cgi?id=158369

        Reviewed by Chris Dumez.

        RefPtr::release() releases its managed pointer awkwardly. It's more
        direct and clearer to use WTFMove to transfer ownership of the managed
        pointer.

        As part of this cleanup, also change a lot of explicit data types to
        'auto'.

        * Plugins/Hosted/NetscapePluginHostManager.mm:
        (WebKit::NetscapePluginHostManager::instantiatePlugin):
        * Plugins/Hosted/NetscapePluginInstanceProxy.mm:
        (WebKit::NetscapePluginInstanceProxy::create):
        (WebKit::NetscapePluginInstanceProxy::loadRequest):
        (WebKit::NetscapePluginInstanceProxy::demarshalValueFromArray):
        * WebCoreSupport/WebFrameLoaderClient.mm:
        (-[WebFramePolicyListener receivedPolicyDecision:]):
        * WebCoreSupport/WebSecurityOrigin.mm:
        (-[WebSecurityOrigin initWithURL:]):
        * WebView/WebArchive.mm:
        (-[WebArchive initWithMainResource:subresources:subframeArchives:]):
        (-[WebArchive initWithData:]):
        * WebView/WebDataSource.mm:
        (-[WebDataSource mainResource]):
        * WebView/WebFrame.mm:
        (-[WebFrame _documentFragmentWithNodesAsParagraphs:]):

2016-06-15  Alexey Proskuryakov  <ap@apple.com>

        +[WebHTMLRepresentation supportedMIMETypes] leaks
        https://bugs.webkit.org/show_bug.cgi?id=158683

        Reviewed by Darin Adler.

        The problem occurred when chaining newArrayByConcatenatingArrays calls.

        Also refactored the code to avoid returning NSMutableArrays disguised as NSArrays,
        and removed __unsafe_unretained modifiers that were added in http://trac.webkit.org/r149453
        for no apparent reason.

        * WebView/WebHTMLRepresentation.mm:
        (newArrayWithStrings):
        (+[WebHTMLRepresentation supportedMIMETypes]):
        (+[WebHTMLRepresentation supportedMediaMIMETypes]):
        (+[WebHTMLRepresentation supportedNonImageMIMETypes]):
        (+[WebHTMLRepresentation supportedImageMIMETypes]):
        (+[WebHTMLRepresentation unsupportedTextMIMETypes]):
        (newArrayByConcatenatingArrays): Deleted.

2016-06-15  Dean Jackson  <dino@apple.com>

        RTL <select> forms are misplaced
        https://bugs.webkit.org/show_bug.cgi?id=158810
        <rdar://problem/24847541>

        Reviewed by Eric Carlson.

        AppKit made a change in Sierra that causes popup menus
        to snap to a different point when the system language is RTL.
        We need to be more explicit about what directionality
        we want, and override the location of the popup based
        on the text direction.

        I also made a small tweak to the fudge offsets we use
        in order to make button text and menu text to be
        more consistent.

        Unfortunately since this is just about the location
        of the popup menu, it's unable to be tested in our
        current infrastructure.

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

2016-06-15  Chris Dumez  <cdumez@apple.com>

        Drop some unnecessary header includes
        https://bugs.webkit.org/show_bug.cgi?id=158788

        Reviewed by Alexey Proskuryakov.

        Drop some unnecessary header includes in headers to speed up build time.

        * WebCoreSupport/WebFrameLoaderClient.mm:

2016-06-15  Romain Bellessort  <romain.bellessort@crf.canon.fr>

        Enabling Shadow DOM for all platforms
        https://bugs.webkit.org/show_bug.cgi?id=158738

        Reviewed by Ryosuke Niwa.

        Removed Shadow DOM from options (enabled by default)

        * Configurations/FeatureDefines.xcconfig:
        * WebView/WebPreferences.mm:
        * WebView/WebView.mm:

2016-06-15  Antti Koivisto  <antti@apple.com>

        Vary:Cookie validation doesn't work in private browsing
        https://bugs.webkit.org/show_bug.cgi?id=158616
        <rdar://problem/26755067>

        Reviewed by Andreas Kling.

        * WebCoreSupport/WebFrameNetworkingContext.h:
        (WebFrameNetworkingContext::create):
        * WebCoreSupport/WebFrameNetworkingContext.mm:
        (privateSession):
        (WebFrameNetworkingContext::ensurePrivateBrowsingSession):

            Expose the private browsing session.

        (WebFrameNetworkingContext::destroyPrivateBrowsingSession):
        * WebCoreSupport/WebPlatformStrategies.h:
        * WebCoreSupport/WebPlatformStrategies.mm:
        (WebPlatformStrategies::cookieRequestHeaderFieldValue):

            Implement SessionID version of the function.

        (WebPlatformStrategies::getRawCookies):

2016-06-13  Alex Christensen  <achristensen@webkit.org>

        Add WebSocketProvider stub
        https://bugs.webkit.org/show_bug.cgi?id=158702

        Reviewed by Brady Eidson.

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

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

        Introduce WTF::UniqueRef
        https://bugs.webkit.org/show_bug.cgi?id=158596

        Reviewed by Brady Eidson.

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

2016-06-09  Alex Christensen  <achristensen@webkit.org>

        Clean up EditorClient lifetime
        https://bugs.webkit.org/show_bug.cgi?id=158588

        Reviewed by Anders Carlsson.

        * WebCoreSupport/WebEditorClient.h:
        * WebCoreSupport/WebEditorClient.mm:
        (WebEditorClient::WebEditorClient):
        (WebEditorClient::pageDestroyed): Deleted.
        * WebView/WebView.mm:
        (-[WebView _commonInitializationWithFrameName:groupName:]):
        (-[WebView initSimpleHTMLDocumentWithStyle:frame:preferences:groupName:]):

2016-06-09  Andy Estes  <aestes@apple.com>

        Define printing{Minimum,Maximum}ShrinkFactor in only one place
        https://bugs.webkit.org/show_bug.cgi?id=158580

        Reviewed by Tim Horton.

        * WebView/WebHTMLView.mm: Initialized _WebHTMLViewPrintingMinimumShrinkFactor and
        _WebHTMLViewPrintingMaximumShrinkFactor with PrintContext::minimumShrinkFactor() and
        PrintContext::maximumShrinkFactor() instead of with duplicated float literals.

2016-06-09  Commit Queue  <commit-queue@webkit.org>

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

        breaks build without ENABLE_WEB_ANIMATION (Requested by
        mcatanzaro on #webkit).

        Reverted changeset:

        "[web-animations] Add Animatable, AnimationEffect,
        KeyframeEffect and Animation interface"
        https://bugs.webkit.org/show_bug.cgi?id=156096
        http://trac.webkit.org/changeset/201810

2016-06-08  Rawinder Singh  <rawinder.singh-webkit@cisra.canon.com.au>

        [web-animations] Add Animatable, AnimationEffect, KeyframeEffect and Animation interface
        https://bugs.webkit.org/show_bug.cgi?id=156096

        Reviewed by Dean Jackson.

        Adds:
        - Setup interface for enabling runtime flag for Web animations through preferences.

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

2016-06-07  David Kilzer  <ddkilzer@apple.com>

        [iOS WK1] Remove unused -_webkit_unescapedQueryValue and -_webkit_queryKeysAndValues NSString category methods
        <https://webkit.org/b/158485>
        <rdar://problem/16960445>

        Reviewed by Dan Bernstein.

        * Misc/WebNSURLExtras.h:
        (-[NSString _webkit_unescapedQueryValue]): Deleted declaration.
        (-[NSString _webkit_queryKeysAndValues]): Deleted declaration.
        * Misc/WebNSURLExtras.mm:
        (-[NSString _webkit_unescapedQueryValue]): Deleted.
        (-[NSString _webkit_queryKeysAndValues]): Deleted.

2016-06-07  Alex Christensen  <achristensen@webkit.org>

        Adopt [PDFView documentScrollView]
        https://bugs.webkit.org/show_bug.cgi?id=158454
        rdar://problem/25875390

        Reviewed by Tim Horton.

        * WebView/PDFViewSPI.h: Added.
        * WebView/WebPDFView.mm:
        (-[WebPDFView _clipViewForPDFDocumentView]):

2016-06-05  Anders Carlsson  <andersca@apple.com>

        Attempt to fix plug-in hangs by adding back empty slots for the removed messages.

        * Plugins/Hosted/WebKitPluginClient.defs:
        * Plugins/Hosted/WebKitPluginHost.defs:

2016-06-04  Anders Carlsson  <andersca@apple.com>

        Remove NPSPI that is no longer used
        https://bugs.webkit.org/show_bug.cgi?id=158384

        Reviewed by Sam Weinig.

        * Configurations/WebKitLegacy.xcconfig:
        * Plugins/Hosted/NetscapePluginHostProxy.mm:
        (WKPCCheckIfAllowedToLoadURL): Deleted.
        (WKPCCancelCheckIfAllowedToLoadURL): Deleted.
        (WKPCResolveURL): Deleted.
        * Plugins/Hosted/NetscapePluginInstanceProxy.h:
        * Plugins/Hosted/NetscapePluginInstanceProxy.mm:
        (WebKit::NetscapePluginInstanceProxy::NetscapePluginInstanceProxy): Deleted.
        (WebKit::NetscapePluginInstanceProxy::checkIfAllowedToLoadURL): Deleted.
        (WebKit::NetscapePluginInstanceProxy::cancelCheckIfAllowedToLoadURL): Deleted.
        (WebKit::NetscapePluginInstanceProxy::checkIfAllowedToLoadURLResult): Deleted.
        (WebKit::NetscapePluginInstanceProxy::resolveURL): Deleted.
        * Plugins/Hosted/WebHostedNetscapePluginView.h:
        * Plugins/Hosted/WebHostedNetscapePluginView.mm:
        (-[WebHostedNetscapePluginView _webPluginContainerCancelCheckIfAllowedToLoadRequest:]): Deleted.
        (-[WebHostedNetscapePluginView _containerCheckResult:contextInfo:]): Deleted.
        * Plugins/Hosted/WebKitPluginClient.defs:
        * Plugins/WebBaseNetscapePluginView.h:
        * Plugins/WebBaseNetscapePluginView.mm:
        (-[WebBaseNetscapePluginView resolvedURLStringForURL:target:]): Deleted.
        * Plugins/WebNetscapeContainerCheckContextInfo.h: Removed.
        * Plugins/WebNetscapeContainerCheckContextInfo.mm: Removed.
        (-[WebNetscapeContainerCheckContextInfo initWithCheckRequestID:callbackFunc:context:]): Deleted.
        (-[WebNetscapeContainerCheckContextInfo checkRequestID]): Deleted.
        (-[WebNetscapeContainerCheckContextInfo callback]): Deleted.
        (-[WebNetscapeContainerCheckContextInfo context]): Deleted.
        * Plugins/WebNetscapeContainerCheckPrivate.h: Removed.
        * Plugins/WebNetscapeContainerCheckPrivate.mm: Removed.
        (browserContainerCheckFuncs): Deleted.
        * Plugins/WebNetscapePluginView.h:
        * Plugins/WebNetscapePluginView.mm:
        (-[WebNetscapePluginView checkIfAllowedToLoadURL:frame:callbackFunc:context:]): Deleted.
        (-[WebNetscapePluginView _containerCheckResult:contextInfo:]): Deleted.
        (-[WebNetscapePluginView cancelCheckIfAllowedToLoadURL:]): Deleted.
        (-[WebNetscapePluginView _webPluginContainerCancelCheckIfAllowedToLoadRequest:]): Deleted.
        (-[WebNetscapePluginView fini]): Deleted.
        (-[WebNetscapePluginView getVariable:value:]): Deleted.
        (-[WebNetscapePluginView resolveURL:forTarget:]): Deleted.
        * Plugins/npapi.mm:
        (WKN_CheckIfAllowedToLoadURL): Deleted.
        (WKN_CancelCheckIfAllowedToLoadURL): Deleted.
        (WKN_ResolveURL): Deleted.

2016-06-04  Anders Carlsson  <andersca@apple.com>

        Temporary build fix. (This function is going away).

        * Plugins/Hosted/NetscapePluginInstanceProxy.mm:
        (WebKit::NetscapePluginInstanceProxy::checkIfAllowedToLoadURLResult): Deleted.
        * Plugins/Hosted/WebKitPluginHost.defs:

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

        Unreviewed, roll out r196633 as it broke PageCache on iOS for WebKit.org
        <rdar://problem/26521101>

        * WebCoreSupport/WebVisitedLinkStore.mm:
        (WebVisitedLinkStore::removeAllVisitedLinks):
        (WebVisitedLinkStore::removeVisitedLink):
        (WebVisitedLinkStore::addVisitedLinkHash):

2016-06-02  Youenn Fablet  <youenn.fablet@crf.canon.fr>

        Add WebIDL special operation support: serializer
        https://bugs.webkit.org/show_bug.cgi?id=156293

        Reviewed by Darin Adler.

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

2016-05-31  Darin Adler  <darin@apple.com>

        Audit RenderObject casts and fix problems and style issues found
        https://bugs.webkit.org/show_bug.cgi?id=158221

        Reviewed by Chris Dumez.

        * Misc/WebNSPasteboardExtras.mm:
        (imageFromElement): Use auto and tighten the logic a bit.
        (-[NSPasteboard _web_declareAndWriteDragImageForElement:URL:title:archive:source:]):
        Use auto and added a comment about this not using imageFromElement.

        * Plugins/WebBaseNetscapePluginView.mm:
        (-[WebBaseNetscapePluginView _windowClipRect]): Consistently cast to
        RenderEmbeddedObject, which is the class used for renderers for plug-ins.
        (-[WebBaseNetscapePluginView inFlatteningPaint]): Ditto.
        (-[WebBaseNetscapePluginView invalidatePluginContentRect:]): Ditto.
        (-[WebBaseNetscapePluginView actualVisibleRectInWindow]): Ditto.

        * WebCoreSupport/WebFrameLoaderClient.mm:
        (WebFrameLoaderClient::createPlugin): Changed code so it does a null check
        rather than assuming the renderer is non-null.
        (WebFrameLoaderClient::createJavaAppletWidget): Ditto.

2016-05-31  Yusuke Suzuki  <utatane.tea@gmail.com>

        Unreviewed, roll out r201481, r201523: 0.3% regression in Octane code-load
        https://bugs.webkit.org/show_bug.cgi?id=158249

        * WebView/WebPreferencesPrivate.h:

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

        callOnMainThread() should not copy captured lambda variables
        https://bugs.webkit.org/show_bug.cgi?id=158166

        Reviewed by Brady Eidson.

        callOnMainThread() should not copy captured lambda variables. This 
        function is usually called cross-thread with a lambda and copying
        the lambda (and its captured variables) can lead to thread-safety
        issues.

        This patch updates callOnMainThread() to take a NoncopyableFunction&&
        in parameter instead of a std::function. The call sites of
        callOnMainThread() have also been updated to use C++14's lambda
        capture with initializer.

        * Storage/WebDatabaseManagerClient.mm:
        (DidModifyOriginData::dispatchToMainThread):
        (DidModifyOriginData::DidModifyOriginData): Deleted.
        * Storage/WebStorageTrackerClient.mm:
        (WebStorageTrackerClient::dispatchDidModifyOrigin):

2016-05-27  Caitlin Potter  <caitp@igalia.com>

        [JSC] implement async functions proposal
        https://bugs.webkit.org/show_bug.cgi?id=156147

        Reviewed by Yusuke Suzuki.

        * WebView/WebPreferencesPrivate.h:

2016-05-26  Darin Adler  <darin@apple.com>

        Media queries and platform screen modernization and streamlining
        https://bugs.webkit.org/show_bug.cgi?id=158067

        Reviewed by Alex Christensen.

        * WebView/WebFrame.mm:
        (-[WebFrame _dragSourceEndedAt:operation:]): Updated to use the new version of
        globalPoint, which returns an NSPoint.

2016-05-26  Myles C. Maxfield  <mmaxfield@apple.com>

        Build fix

        Rubber stamped by Lucas Forschler.

        * Configurations/DebugRelease.xcconfig:

2016-05-24  Beth Dakin  <bdakin@apple.com>

        Candidates should work with input methods
        https://bugs.webkit.org/show_bug.cgi?id=158042
        -and corresponding-
        rdar://problem/26205228

        Reviewed by Tim Horton.

        * WebView/WebHTMLView.mm:
        * WebView/WebView.mm:
        (-[WebView candidateList]):
        * WebView/WebViewInternal.h:

2016-05-22  Brady Eidson  <beidson@apple.com>

        Move to C++14.
        https://bugs.webkit.org/show_bug.cgi?id=157948

        Reviewed by Michael Catanzaro.

        * Configurations/Base.xcconfig:

2016-05-20  Enrica Casucci  <enrica@apple.com>

        Drag cannot start if no drag data or custom data is available in the Pasteboard.
        https://bugs.webkit.org/show_bug.cgi?id=157911
        rdar://problem/24577706

        Reviewed by Tim Horton.

        We need to make sure there is always one item in common between source and target
        of the drag and drop operation.

        * WebView/WebHTMLView.mm:
        (-[WebHTMLView dragImage:at:offset:event:pasteboard:source:slideBack:]):

2016-05-19  Enrica Casucci  <enrica@apple.com>

        Drag cannot start if no drag data is available in the Pasteboard.
        https://bugs.webkit.org/show_bug.cgi?id=157911
        rdar://problem/24577706

        Reviewed by Tim Horton.

        * WebView/WebHTMLView.mm:
        (+[WebHTMLView _dummyPasteboardType]):
        (-[WebHTMLView dragImage:at:offset:event:pasteboard:source:slideBack:]):
        * WebView/WebHTMLViewPrivate.h:
        * WebView/WebView.mm:
        (-[WebView _registerDraggedTypes]):

2016-05-19  Jer Noble  <jer.noble@apple.com>

        [IOS] Add setting to allow playback to continue inline after exiting fullscreen.
        https://bugs.webkit.org/show_bug.cgi?id=157912

        Reviewed by Eric Carlson.

        Add a preference to control whether media should be allowed to continue playing inline when
        exiting fullscreen.

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

2016-05-18  Brady Eidson  <beidson@apple.com>

        Modern IDB: Make TestRunner.clearAllDatabases also delete IndexedDB databases (once doing so is supported).
        https://bugs.webkit.org/show_bug.cgi?id=157823

        Reviewed by Alex Christensen.

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

2016-05-17  Beth Dakin  <bdakin@apple.com>

        Make handleAcceptedCandidate a public function
        https://bugs.webkit.org/show_bug.cgi?id=157763
        -and corresponding-
        rdar://problem/26206397

        Reviewed by Tim Horton.

        This patch re-names handleAcceptedCandidate to 
        handleAcceptedCandidateWithSoftSpaces. The function now takes a 
        WebCore::TextCheckingResult instead of an NSTextCheckingResult and it can be 
        called from outside of WebEditorClient.

        * WebCoreSupport/WebEditorClient.h:
        * WebCoreSupport/WebEditorClient.mm:
        (WebEditorClient::handleRequestedCandidates):
        (WebEditorClient::handleAcceptedCandidateWithSoftSpaces):
        (textCheckingResultFromNSTextCheckingResult): Deleted.
        (WebEditorClient::handleAcceptedCandidate): Deleted.

        Move showCandidates to WebViewPrivate so that it can be overridden by a test.
        * WebView/WebViewInternal.h:
        * WebView/WebViewPrivate.h:

2016-05-17  Dean Jackson  <dino@apple.com>

        Remove ES6_GENERATORS flag
        https://bugs.webkit.org/show_bug.cgi?id=157815
        <rdar://problem/26332894>

        Reviewed by Geoffrey Garen.

        This flag isn't needed. Generators are enabled everywhere and
        part of a stable specification.

        * Configurations/FeatureDefines.xcconfig:

2016-05-17  Filip Pizlo  <fpizlo@apple.com>

        WTF should know about Language
        https://bugs.webkit.org/show_bug.cgi?id=157756

        Reviewed by Geoffrey Garen.

        Rewires a bunch of includes/imports.

        * WebCoreSupport/PopupMenuMac.mm:
        * WebCoreSupport/WebChromeClient.mm:
        * WebCoreSupport/WebFrameLoaderClient.mm:
        * WebCoreSupport/WebGeolocationClient.mm:
        * WebCoreSupport/WebNotificationClient.mm:
        * WebCoreSupport/WebPlatformStrategies.mm:
        * WebCoreSupport/WebUserMediaClient.mm:
        * WebCoreSupport/WebVisitedLinkStore.mm:
        * WebView/WebHTMLView.mm:

2016-05-13  Enrica Casucci  <enrica@apple.com>

        Remove unused initializer for WebEvent on iOS.
        https://bugs.webkit.org/show_bug.cgi?id=157689

        Reviewed by Anders Carlsson.

        Removing use of characterSet property.

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


2016-05-13  Commit Queue  <commit-queue@webkit.org>

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

        This change broke the iOS build (Requested by ryanhaddad on
        #webkit).

        Reverted changeset:

        "Remove unused initializer for WebEvent on iOS."
        https://bugs.webkit.org/show_bug.cgi?id=157689
        http://trac.webkit.org/changeset/200894

2016-05-13  Enrica Casucci  <enrica@apple.com>

        Remove unused initializer for WebEvent on iOS.
        https://bugs.webkit.org/show_bug.cgi?id=157689

        Reviewed by Anders Carlsson.

        Removing use of characterSet property.

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

2016-05-13  Beth Dakin  <bdakin@apple.com>

        Build fix.

        * WebView/WebView.mm:

2016-05-13  Beth Dakin  <bdakin@apple.com>

        Add dyldSPI.h for linked on or after checks, and add one for link preview
        https://bugs.webkit.org/show_bug.cgi?id=157401
        -and corresponding-
        rdar://problem/26253396

        Reviewed by Darin Adler.

        This patch removes DynamicLinkerSPI.h and replaces it with 
        wtf/spi/darwin/dyldSPI.h

        * WebView/WebView.mm:

2016-05-13  Tina Liu  <iting_liu@apple.com>

        Revert r199691.
        https://bugs.webkit.org/show_bug.cgi?id=157645
        <rdar://problem/26235373>

        Reviewed by Darin Adler.

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

2016-05-12  Jiewen Tan  <jiewen_tan@apple.com>

        Unreviewed build fix for r200799.

        * WebView/WebView.mm:

2016-05-12  Jiewen Tan  <jiewen_tan@apple.com>

        REGRESSION (r199313): ICBC app: text field In the webview is not tappable
        https://bugs.webkit.org/show_bug.cgi?id=157396
        <rdar://problem/25931513>

        Reviewed by David Kilzer.

        Add a quirk for WebKit1 apps.

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

2016-05-12  Beth Dakin  <bdakin@apple.com>

        WebKitAdditions needs to be notified before the WebView is dealloc'd
        https://bugs.webkit.org/show_bug.cgi?id=157633
        -and corresponding-
        rdar://problem/26134539

        Reviewed by Anders Carlsson.

        * WebView/WebView.mm:
        (-[WebView dealloc]):
        * WebView/WebViewInternal.h:

2016-05-12  Konstantin Tokarev  <annulen@yandex.ru>

        Use reference instead of pointer in FrameLoaderClient::saveViewStateToItem.
        https://bugs.webkit.org/show_bug.cgi?id=157624

        Reviewed by Darin Adler.

        * WebCoreSupport/WebFrameLoaderClient.h:
        * WebCoreSupport/WebFrameLoaderClient.mm:
        (WebFrameLoaderClient::saveViewStateToItem):
        * WebView/WebFrame.mm:
        (-[WebFrame _saveViewState]):

2016-05-12  Csaba Osztrogonác  <ossy@webkit.org>

        Remove ENABLE(ES6_ARROWFUNCTION_SYNTAX) guards
        https://bugs.webkit.org/show_bug.cgi?id=157564

        Reviewed by Darin Adler.

        * Configurations/FeatureDefines.xcconfig:

2016-05-11  Chris Dumez  <cdumez@apple.com>

        Update Node::appendChild() / replaceChild() / removeChild() / insertBefore() to take references instead of pointers
        https://bugs.webkit.org/show_bug.cgi?id=157556

        Reviewed by Darin Adler.

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

2016-05-10  Shaw rich  <richshaw@126.com>

        [OS X] Compatible with gnu sed grammar due to compile error with gnu sed
        https://bugs.webkit.org/show_bug.cgi?id=157526

        Reviewed by Darin Adler.

        * MigrateHeaders.make:

2016-05-10  Simon Fraser  <simon.fraser@apple.com>

        [iOS WK1] text autosizing was on for all layout tests
        https://bugs.webkit.org/show_bug.cgi?id=157541

        Reviewed by Tim Horton.

        Make sure that we transfer the WK1 text autosizing preference to Settings.

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

2016-05-09  Tim Horton  <timothy_horton@apple.com>

        [WebKit1] Invoking a link preview on a complex link (e.g. an image) results in an empty TextIndicator
        https://bugs.webkit.org/show_bug.cgi?id=157497
        <rdar://problem/25872773>

        Reviewed by Anders Carlsson.

        * WebView/WebImmediateActionController.mm:
        (-[WebImmediateActionController _defaultAnimationController]):
        r198578 fixed this for WebKit2, but forgot about WebKit1.

2016-05-08  Myles C. Maxfield  <mmaxfield@apple.com>

        [OS X] Migrate our Font classes entirely off of NSFont
        https://bugs.webkit.org/show_bug.cgi?id=157464

        Reviewed by Darin Adler.

        * WebCoreSupport/PopupMenuMac.mm:
        (PopupMenuMac::populate):
        (PopupMenuMac::show):
        * WebView/WebHTMLView.mm:
        (fontNameForDescription):
        (-[WebHTMLView _addToStyle:fontA:fontB:]):

2016-05-06  Joseph Pecoraro  <pecoraro@apple.com>

        Rename HitTestRequest DisallowShadowContent to DisallowUserAgentShadowContent
        https://bugs.webkit.org/show_bug.cgi?id=157447

        Reviewed by Ryosuke Niwa.

        * WebView/WebFrame.mm:
        (-[WebFrame elementAtPoint:]):
        * WebView/WebHTMLView.mm:
        (-[WebHTMLView elementAtPoint:allowShadowContent:]):

2016-05-06  Simon Fraser  <simon.fraser@apple.com>

        Enable IOS_TEXT_AUTOSIZING on Mac and make it testable
        https://bugs.webkit.org/show_bug.cgi?id=157432
        rdar://problem/16406720

        Reviewed by Dean Jackson.

        Enable IOS_TEXT_AUTOSIZING on Mac so it can be tested.

        Make the setTextAutosizingEnabled() Setting work, and plumb it through WK1 and WK2
        preferences for WTR and DRT. Make textAutosizingWindowSizeOverride() work, for layout tests.
        These two settings are shared with TEXT_AUTOSIZING.

        Add a TextAutosizing log channel, which is useful for generated -expected.html results.

        Move adjustComputedFontSizesOnBlocks() and related code from RenderObject to RenderElement
        without changes.

        An implication of this set of changes is that the way clients enable text autosizing
        has changed. Previously, they set the "MinimumZoomFontSize" preference to 0.
        Settings::defaultMinimumZoomFontSize() used to do this in order to enable text autosizing
        on iPhone only, not iPad.

        Now the preferred technique is to leave minimumZoomFontSize alone, and to use textAutosizingEnabled()
        instead. Settings::defaultTextAutosizingEnabled() now does the check for iPhone.

        UIWebView calls WebKitGetMinimumZoomFontSize() to setup the default minimum font zoom size,
        which will now always return 15, but had no other code that toggled this. So it's safe to just rely
        on Settings::defaultTextAutosizingEnabled() doing the right thing for iPhone/iPad.

        * Configurations/FeatureDefines.xcconfig:
        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):
        (-[WebPreferences _setTextAutosizingEnabled:]):
        (-[WebPreferences _textAutosizingEnabled]):
        * WebView/WebPreferencesPrivate.h:

2016-05-06  Dean Jackson  <dino@apple.com>

        Regions, Shapes and Tracks don't need runtime features
        https://bugs.webkit.org/show_bug.cgi?id=157426
        <rdar://problem/26146262>

        Reviewed by Simon Fraser.

        The following RuntimeEnabledFeatures can be removed since
        we have no need to disable them (they are stable and have
        shipped for a while):
        - CSS Regions
        - CSS Shapes
        - Media tracks

        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]): Deleted.
        (-[WebPreferences cssRegionsEnabled]): Deleted.
        (-[WebPreferences setCSSRegionsEnabled:]): Deleted.
        (-[WebPreferences cssCompositingEnabled]): Deleted.
        (-[WebPreferences setCSSCompositingEnabled:]): Deleted.
        * WebView/WebPreferencesPrivate.h:
        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]): Deleted.

2016-05-06  Daniel Bates  <dabates@apple.com>

        Remove workaround for Apple Internal bots
        <rdar://problem/25989808>

        Reverts the workaround added in r200211 as it is no longer needed.

        * WebView/WebPDFView.h:

2016-05-02  Daniel Bates  <dabates@apple.com>

        CSP: Add workaround for XtraMath
        https://bugs.webkit.org/show_bug.cgi?id=157252

        Reviewed by Andy Estes.

        * WebView/WebView.mm:
        (shouldAllowContentSecurityPolicySourceStarToMatchAnyProtocol): Allow * to match any protocol for
        applicable versions of app XtraMath.

2016-05-02  Daniel Bates  <dabates@apple.com>

        DatabaseTracker::closeAllDatabases calls Database::close from the wrong thread
        https://bugs.webkit.org/show_bug.cgi?id=147672
        <rdar://problem/22357464>

        Reviewed by Brady Eidson.

        Update the background assertion expiration callback to call DatabaseTracker::closeAllDatabases()
        with CurrentQueryBehavior::Interrupt so that we abort a long running query and close the database
        immediately to avoid holding a locked file when the process is suspended.

        * Storage/WebDatabaseManager.mm:
        (+[WebDatabaseManager startBackgroundTask]):

2016-04-29  Dean Jackson  <dino@apple.com>

        RTL <select> popup menu is in the wrong location
        https://bugs.webkit.org/show_bug.cgi?id=157159
        <rdar://problem/25894451>

        Reapply http://trac.webkit.org/changeset/200217
        but with changes that will allow it to build on Yosemite.

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

2016-04-29  Commit Queue  <commit-queue@webkit.org>

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

        This change broke the Yosemite build. (Requested by ryanhaddad
        on #webkit).

        Reverted changeset:

        "RTL <select> popup menu is in the wrong location"
        https://bugs.webkit.org/show_bug.cgi?id=157159
        http://trac.webkit.org/changeset/200217

2016-04-28  Dean Jackson  <dino@apple.com>

        RTL <select> popup menu is in the wrong location
        https://bugs.webkit.org/show_bug.cgi?id=157159
        <rdar://problem/25894451>

        Reviewed by Simon Fraser.

        Make sure both the NSPopupMenuCell and the NSPopupMenu take
        the text direction into account, and offset the position
        of the menu slightly if we're in RTL mode.

        Unfortunately our test infrastructure is unable to exercise
        this because it runs without a window, and the popup menu
        is not captured in the screenshot.

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

2016-04-28  Manuel Rego Casasnovas  <rego@igalia.com>

        [css-grid] Add CSS Grid Layout runtime flag
        https://bugs.webkit.org/show_bug.cgi?id=157134

        Reviewed by Simon Fraser.

        Add CSS Grid Layout runtime flag based on preferences,
        enabled by default.

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

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

        Another fix for the Apple Internal OS X build
        <rdar://problem/25989808>

        Reviewed by Anders Carlsson.

        * WebView/WebPDFView.h:

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

        Fix the Apple Internal OS X build

        * WebView/WebPDFView.h: Import PDFKit for definition of protocol PDFViewDelegate.
        Forward declare protocol PDFViewDelegate as appropriate. Mark WebPDFView as implementing
        protocol PDFViewDelegate.
        * WebView/WebPDFView.mm: Move import of PDFKit from here to the header.

2016-04-27  Daniel Bates  <dabates@apple.com>

        CSP: Add app-specific workaround for Ecobee and Quora
        https://bugs.webkit.org/show_bug.cgi?id=157005
        <rdar://problem/25560776>

        Reviewed by Brent Fulgham.

        * Misc/WebKitVersionChecks.h:
        * WebView/WebView.mm:
        (shouldAllowContentSecurityPolicySourceStarToMatchAnyProtocol): Added.
        (-[WebView _preferencesChanged:]): Enable setting allowContentSecurityPolicySourceStarToMatchAnyProtocol
        if applicable.

2016-04-26  Joseph Pecoraro  <pecoraro@apple.com>

        Uncaught Exception: SecurityError: DOM Exception 18: An attempt was made to break through the security policy of the user agent.
        https://bugs.webkit.org/show_bug.cgi?id=156991
        <rdar://problem/25913475>

        Reviewed by Timothy Hatcher.

        * WebCoreSupport/WebInspectorClient.mm:
        (-[WebInspectorWindowController init]):
        Apply the same universal file access to WebKit1 Web Inspector views that
        we apply to WebKit2 views. Explicitly always allow access to storage
        for Web Inspector content just in case as we already allow universal
        file access.

2016-04-26  Beth Dakin  <bdakin@apple.com>

        Check to make sure shouldRequestCandidates() before requesting candidates
        https://bugs.webkit.org/show_bug.cgi?id=157038
        -and corresponding-
        rdar://problem/25910418

        Reviewed by Tim Horton.

        This patch limits requesting and showing candidates to cases where 
        shouldRequestCandidates() is true. This patch also caches the sequence number 
        returned by [NSSpellChecker requestCandidatesForSelectedRange:] to make sure 
        it is equal to the sequence number sent to the callback handler so that we do 
        not show candidates for old requests.

        * WebCoreSupport/WebEditorClient.h:
        * WebCoreSupport/WebEditorClient.mm:
        (WebEditorClient::requestCandidatesForSelection):
        (WebEditorClient::handleRequestedCandidates):
        * WebView/WebView.mm:
        (-[WebView showCandidates:forString:inRect:forSelectedRange:view:completionHandler:]):
        (-[WebView shouldRequestCandidates]):
        * WebView/WebViewInternal.h:

2016-04-25  Ryosuke Niwa  <rniwa@webkit.org>

        Remove the build flag for template elements
        https://bugs.webkit.org/show_bug.cgi?id=157022

        Reviewed by Daniel Bates.

        * Configurations/FeatureDefines.xcconfig:

2016-04-25  Myles C. Maxfield  <mmaxfield@apple.com>

        [Cocoa] Guarantee FontPlatformData's m_cgFont is never nullptr
        https://bugs.webkit.org/show_bug.cgi?id=156929

        Reviewed by Darin Adler.

        * Misc/WebKitNSStringExtras.mm:
        (-[NSString _web_drawAtPoint:font:textColor:allowingFontSmoothing:]): Drawing
        a string with a null font shouldn't do anything.
        * Misc/WebStringTruncator.mm: We can't truncate a string if we don't have a font
        to use.
        (+[WebStringTruncator centerTruncateString:toWidth:]):
        (+[WebStringTruncator centerTruncateString:toWidth:withFont:]):
        (+[WebStringTruncator rightTruncateString:toWidth:withFont:]):
        (+[WebStringTruncator widthOfString:font:]):

2016-04-25  Beth Dakin  <bdakin@apple.com>

        WebEditorClient should properly write to m_rangeForCandidates
        https://bugs.webkit.org/show_bug.cgi?id=157003
        -and corresponding-
        rdar://problem/25910418

        Reviewed by Tim Horton.

        Actually write to m_rangeForCandidates instead of declaring a local variable 
        of the same name. :-/
        * WebCoreSupport/WebEditorClient.mm:
        (WebEditorClient::requestCandidatesForSelection):

2016-04-23  Andy Estes  <aestes@apple.com>

        Fix issues found by the clang static analyzer
        https://bugs.webkit.org/show_bug.cgi?id=156956

        Reviewed by Alexey Proskuryakov.

        * WebView/WebDeviceOrientationProviderMock.mm:
        (-[WebDeviceOrientationProviderMock dealloc]): [super dealloc] should be called last.

2016-04-21  Tim Horton  <timothy_horton@apple.com>

        Fix the iOS build: WAKView may not respond to drawLayer:inContext:
        https://bugs.webkit.org/show_bug.cgi?id=156879
        <rdar://problem/25772661>

        Reviewed by Beth Dakin.

        * WebView/WebHTMLView.mm:
        WebHTMLView on iOS never uses drawLayer:inContext:, and WAKView
        doesn't implement it, so this would have thrown an exception
        if called, anyway. Fix the build with stricter CA protocols.

2016-04-21  Jer Noble  <jer.noble@apple.com>

        [WK1] Add WebPlaybackSession support to WebKit
        https://bugs.webkit.org/show_bug.cgi?id=156854

        Reviewed by Beth Dakin.

        Add support for WebPlaybackSession and the ChromeClient methods setUpPlaybackControlsManager() and
        clearPlaybackControlsManager() to WebKit.

        * WebCoreSupport/WebChromeClient.h:
        * WebCoreSupport/WebChromeClient.mm:
        (WebChromeClient::setUpPlaybackControlsManager):
        (WebChromeClient::clearPlaybackControlsManager):
        * WebView/WebView.mm:
        (-[WebView _hasActiveVideoForControlsInterface]):
        (-[WebView _setUpPlaybackControlsManagerForMediaElement:]):
        (-[WebView _clearPlaybackControlsManagerForMediaElement:]):
        * WebView/WebViewData.h:
        * WebView/WebViewData.mm:
        * WebView/WebViewInternal.h:

2016-04-21  Anders Carlsson  <andersca@apple.com>

        Stop using ApplicationCacheStorage::singleton() in WebKitLegacy
        https://bugs.webkit.org/show_bug.cgi?id=156859

        Reviewed by Tim Horton.

        * WebCoreSupport/WebApplicationCache.mm:
        (+[WebApplicationCache initializeWithBundleIdentifier:]):
        Change this to just store the bundle identifier.

        (applicationCacheBundleIdentifier):
        Helper function that returns the bundle identifier for the app cache.

        (applicationCachePath):
        Return the application cache path.

        (webApplicationCacheStorage):
        Create a new ApplicationCacheStorage object.

        * WebView/WebView.mm:
        (-[WebView _commonInitializationWithFrameName:groupName:]):
        (-[WebView initSimpleHTMLDocumentWithStyle:frame:preferences:groupName:]):
        Set pageConfiguration.applicationCacheStorage to webApplicationCacheStorage().

        (WebKitInitializeApplicationCachePathIfNecessary): Deleted.

2016-04-21  Beth Dakin  <bdakin@apple.com>

        showCandidates() should take a range and the string should be the whole 
        paragraph
        https://bugs.webkit.org/show_bug.cgi?id=156813
        -and corresponding-
        rdar://problem/25760533

        Reviewed by Tim Horton.

        Cache the range and the paragraph since we compute them in 
        requestCandidatesForSelection, and then we can use them again in 
        handleRequestedCandidates.
        * WebCoreSupport/WebEditorClient.h:
        * WebCoreSupport/WebEditorClient.mm:
        (WebEditorClient::requestCandidatesForSelection):
        (WebEditorClient::handleRequestedCandidates):
        * WebView/WebView.mm:
        (-[WebView updateWebViewAdditions]):
        (-[WebView showCandidates:forString:inRect:forSelectedRange:view:completionHandler:]):
        (-[WebView showCandidates:forString:inRect:view:completionHandler:]): Deleted.
        * WebView/WebViewInternal.h:

2016-04-21  Chris Dumez  <cdumez@apple.com>

        Drop [UsePointersEvenForNonNullableObjectArguments] from Range
        https://bugs.webkit.org/show_bug.cgi?id=156805

        Reviewed by Youenn Fablet.

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

2016-04-20  Brady Eidson  <beidson@apple.com>

        Modern IDB (Workers): Enable INDEXED_DATABASE_IN_WORKERS compile time flag, but disabled in RuntimeEnabledFeatures.
        https://bugs.webkit.org/show_bug.cgi?id=156782

        Reviewed by Alex Christensen.

        * Configurations/FeatureDefines.xcconfig:

2016-04-18  Anders Carlsson  <andersca@apple.com>

        Fix build with newer versions of clang.
        rdar://problem/25749769

        * WebCoreSupport/WebContextMenuClient.mm:
        * WebView/WebHTMLView.mm:
        Forward declare some AppKit IPI.

2016-04-18  Tina Liu  <iting_liu@apple.com>

        Overrode a virtual function of WebCore::PluginStrategy
        https://bugs.webkit.org/show_bug.cgi?id=156540

        Reviewed by Anders Carlsson.

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

2016-04-18  Brent Fulgham  <bfulgham@apple.com>

        CSP: Remove stubs for dynamically-added favicons (via link rel="icon")
        https://bugs.webkit.org/show_bug.cgi?id=153151
        <rdar://problem/24383176>

        Reviewed by Darin Adler.

        Remove the unused dynamic favicon code and tests.

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

2016-04-15  Darin Adler  <darin@apple.com>

        Reduce use of Deprecated::ScriptXXX classes
        https://bugs.webkit.org/show_bug.cgi?id=156632

        Reviewed by Alex Christensen.

        * WebView/WebFrame.mm:
        (-[WebFrame _stringByEvaluatingJavaScriptFromString:forceUserGesture:]): Use references instead
        of pointers.
        (-[WebFrame _stringByEvaluatingJavaScriptFromString:withGlobalObject:inScriptWorld:]): Updated
        since return value is a JSValue.
        * WebView/WebView.mm:
        (-[WebView aeDescByEvaluatingJavaScriptFromString:]): Ditto.

2016-04-14  Brent Fulgham  <bfulgham@apple.com>

        Make <a download> a runtime enabled option
        https://bugs.webkit.org/show_bug.cgi?id=156583
        <rdar://problem/25733449>

        Reviewed by Alex Christensen.

        Add a download attribute runtime flag based on preferences.
        Disable the download attribute by default.

        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):
        (-[WebPreferences setFetchAPIEnabled:]):
        (-[WebPreferences downloadAttributeEnabled]):
        (-[WebPreferences setDownloadAttributeEnabled:]):
        * WebView/WebPreferencesPrivate.h:
        * WebView/WebView.mm:
        (-[WebView _preferencesChanged]): Set the runtime flag properly
        based on the user preferences.

2016-04-09  Gavin Barraclough  <barraclough@apple.com>

        WebKit should adopt journal_mode=wal for all SQLite databases.
        https://bugs.webkit.org/show_bug.cgi?id=133496

        Reviewed by Darin Adler.

        * Storage/WebDatabaseManagerPrivate.h:
            - renamed deleteAllDatabases -> deleteAllDatabasesImmediately.

2016-04-05  Oliver Hunt  <oliver@apple.com>

        Remove compile time define for SEPARATED_HEAP
        https://bugs.webkit.org/show_bug.cgi?id=155508

        Reviewed by Mark Lam.

        * Configurations/FeatureDefines.xcconfig:

2016-04-08  Sam Weinig  <sam@webkit.org>

        Remove support for custom target picker actions
        <rdar://problem/24987783>
        https://bugs.webkit.org/show_bug.cgi?id=156434

        Reviewed by Eric Carlson.

        This mostly entailed rolling out r197429 and r197569.

        * WebCoreSupport/WebChromeClient.h:
        * WebCoreSupport/WebChromeClient.mm:
        (WebChromeClient::removePlaybackTargetPickerClient):
        (WebChromeClient::showPlaybackTargetPicker):
        * WebView/WebMediaPlaybackTargetPicker.h:
        * WebView/WebMediaPlaybackTargetPicker.mm:
        (WebMediaPlaybackTargetPicker::removePlaybackTargetPickerClient):
        (WebMediaPlaybackTargetPicker::showPlaybackTargetPicker):
        (WebMediaPlaybackTargetPicker::playbackTargetPickerClientStateDidChange):
        (WebMediaPlaybackTargetPicker::setShouldPlayToPlaybackTarget):
        (WebMediaPlaybackTargetPicker::invalidate):
        (WebMediaPlaybackTargetPicker::customPlaybackActionSelected): Deleted.
        * WebView/WebView.mm:
        (-[WebView _showPlaybackTargetPicker:location:hasVideo:]):
        (-[WebView _playbackTargetPickerClientStateDidChange:state:]):

2016-04-07  Joseph Pecoraro  <pecoraro@apple.com>

        Remove ENABLE(ENABLE_ES6_CLASS_SYNTAX) guards
        https://bugs.webkit.org/show_bug.cgi?id=156384

        Reviewed by Ryosuke Niwa.

        * Configurations/FeatureDefines.xcconfig:

2016-04-07  Brian Burg  <bburg@apple.com>

        CookieJar should support adding synthetic cookies for developer tools
        https://bugs.webkit.org/show_bug.cgi?id=156091
        <rdar://problem/25581340>

        Reviewed by Timothy Hatcher.

        * WebCoreSupport/WebPlatformStrategies.h:
        * WebCoreSupport/WebPlatformStrategies.mm:
        (WebPlatformStrategies::addCookie):
        Add new method override.

2016-04-06  Alex Christensen  <achristensen@webkit.org>

        Fix CMake DumpRenderTree
        https://bugs.webkit.org/show_bug.cgi?id=156305

        Reviewed by Daniel Bates.

        * WebKitPrefix.h:

2016-04-05  Beth Dakin  <bdakin@apple.com>

        Make requestCandidatesForSelection available on any EditorClient
        https://bugs.webkit.org/show_bug.cgi?id=156253
        -and corresponding-
        rdar://problem/24661147

        Reviewed by Dean Jackson.

        * WebCoreSupport/WebEditorClient.h:

2016-04-05  Youenn Fablet  <youenn.fablet@crf.canon.fr>

        [Fetch API] Add a runtime flag to fetch API and related constructs
        https://bugs.webkit.org/show_bug.cgi?id=156113
 
        Reviewed by Alex Christensen.

        Add a fetch API runtime flag based on preferences.
        Disable fetch API by default.
 
        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):
        (-[WebPreferences setCustomElementsEnabled:]):
        (-[WebPreferences fetchAPIEnabled]):
        (-[WebPreferences setFetchAPIEnabled:]):
        * WebView/WebPreferencesPrivate.h:
        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]):
        (-[WebView preferencesIdentifier]):
        (-[WebView setUIDelegate:]):

2016-04-05  Antoine Quint  <graouts@apple.com>

        [WebGL2] Turn the ENABLE_WEBGL2 flag on
        https://bugs.webkit.org/show_bug.cgi?id=156061
        <rdar://problem/25463193>

        Reviewed by Alex Christensen.

        * Configurations/FeatureDefines.xcconfig:

2016-04-05  Antoine Quint  <graouts@apple.com>

        [WebGL2] Allow enabling WebGL2 with a runtime flag
        https://bugs.webkit.org/show_bug.cgi?id=156166
        <rdar://problem/25526929>

        Set the WebGL2 runtime flag based on preferences, disabled by default.

        Reviewed by Dean Jackson.

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

2016-04-01  Alex Christensen  <achristensen@webkit.org>

        Compile DumpRenderTree with CMake on Mac
        https://bugs.webkit.org/show_bug.cgi?id=156088

        Reviewed by Brent Fulgham.

        * Misc/WebKit.h:
        Alphabetize headers.

2016-03-31  Jeremy Jones  <jeremyj@apple.com>

        mediaShouldUsePersistentCache() is redundant. Use Page::usesEphemeralSession() instead.
        https://bugs.webkit.org/show_bug.cgi?id=155924

        Reviewed by Simon Fraser.

        Remove mediaShouldUsePersistentCache machinery as it is redundant.

        * WebCoreSupport/WebChromeClient.h:
        * WebCoreSupport/WebChromeClient.mm:
        (WebChromeClient::mediaShouldUsePersistentCache): Deleted.

2016-03-30  Ada Chan  <adachan@apple.com>

        Add the new "toggle enhanced fullscreen" context menu item to the video context menu on supporting platforms.
        https://bugs.webkit.org/show_bug.cgi?id=156031

        Reviewed by Eric Carlson.

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

2016-03-24  Said Abou-Hallawa  <sabouhallawa@apple,com>

        Change NativeImagePtr for CG to be RetainPtr<CGImageRef>
        https://bugs.webkit.org/show_bug.cgi?id=155412

        Reviewed by Darin Adler.

        * Misc/WebCache.mm:
        (+[WebCache addImageToCache:forURL:forFrame:]):
        WebCore::MemoryCache() is taking an rvalue NativeImagePtr. We need to create
        NativeImagePtr from the image raw pointer when calling this function.

2016-03-24  Tim Horton  <timothy_horton@apple.com>

        Fix some new PDFKit-related warnings
        https://bugs.webkit.org/show_bug.cgi?id=155847
        <rdar://problem/25340312>

        Reviewed by Anders Carlsson.

        * WebView/WebPDFView.mm:
        (-[WebPDFView setViewState:]):
        * WebView/WebPreferences.mm:
        (-[WebPreferences PDFDisplayMode]):
        PDFDisplayMode is now a real enum.

2016-03-23  Anders Carlsson  <andersca@apple.com>

        Crash when using KVO from within -[WebView initWithCoder:]
        https://bugs.webkit.org/show_bug.cgi?id=155816
        rdar://problem/17073265

        Reviewed by Dan Bernstein.

        Get rid of the observationInfo getter and setter. It's not clear why they were added (in 2003),
        and the methods on NSObject are good enough for us.

        * WebView/WebView.mm:
        (-[WebView setObservationInfo:]): Deleted.
        (-[WebView observationInfo]): Deleted.
        * WebView/WebViewData.h:

2016-03-22  Beth Dakin  <bdakin@apple.com>

        Advanced spell checking should be guarded behind 
        HAVE(ADVANCED_SPELL_CHECKING)
        https://bugs.webkit.org/show_bug.cgi?id=155738

        Reviewed by Geoff Garen.

        * WebCoreSupport/WebEditorClient.mm:
        (insertionPointFromCurrentSelection):
        (WebEditorClient::checkTextOfParagraph):
        (WebEditorClient::getGuessesForWord):
        (WebEditorClient::requestCandidatesForSelection):
        (WebEditorClient::handleRequestedCandidates):
        (WebEditorClient::requestCheckingOfString):
        * WebKitPrefix.h:
        * WebView/WebHTMLView.mm:
        (-[WebHTMLView insertText:]):

2016-03-20  Dan Bernstein  <mitz@apple.com>

        [Mac] Determine TARGET_MAC_OS_X_VERSION_MAJOR from MACOSX_DEPLOYMENT_TARGET rather than from MAC_OS_X_VERSION_MAJOR
        https://bugs.webkit.org/show_bug.cgi?id=155707
        <rdar://problem/24980691>

        Reviewed by Darin Adler.

        * Configurations/Base.xcconfig: Set TARGET_MAC_OS_X_VERSION_MAJOR based on the last
          component of MACOSX_DEPLOYMENT_TARGET.
        * Configurations/DebugRelease.xcconfig: For engineering builds, preserve the behavior of
          TARGET_MAC_OS_X_VERSION_MAJOR being the host’s OS version.

2016-03-20  Darin Adler  <darin@apple.com>

        Disable Caches in Safari's Develop menu does not disable caches.
        https://bugs.webkit.org/show_bug.cgi?id=64483

        Reviewed by Antti Koivisto.

        Removed unneeded WebPreferences property; we don't need this for Legacy WebKit.

        * WebView/WebPreferenceKeysPrivate.h: Removed
        WebKitResourceCachingDisabledPreferenceKey.
        * WebView/WebPreferences.mm:
        (-[WebPreferences isResourceCachingDisabled]): Deleted.
        (-[WebPreferences setResourceCachingDisabled:]): Deleted.
        * WebView/WebPreferencesPrivate.h: Removed resourceCachingDisabled property.
        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]): Removed code to update resourceCachingDisabled.

2016-03-20  Dan Bernstein  <mitz@apple.com>

        Update build settings

        Rubber-stamped by Andy Estes.

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

2016-03-18  Darin Adler  <darin@apple.com>

        Disable Caches in Safari's Develop menu does not disable caches.
        https://bugs.webkit.org/show_bug.cgi?id=64483

        Reviewed by Antti Koivisto.

        * WebView/WebPreferenceKeysPrivate.h: Added ResourceCachingDisabled.
        * WebView/WebPreferences.mm:
        (-[WebPreferences isResourceCachingDisabled]): Added.
        (-[WebPreferences setResourceCachingDisabled:]): Added.
        * WebView/WebPreferencesPrivate.h: Added resourceCachingDisabled.
        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]): Push resourceCachingDisabled into WebCore.

2016-03-17  Csaba Osztrogonác  <ossy@webkit.org>

        [cmake][Mac] Unreviewed speculative buildfix after r198088. Just for fun.

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

2016-03-17  Andy Estes  <aestes@apple.com>

        [Mac] Enable Content-Disposition: attachment sandbox
        https://bugs.webkit.org/show_bug.cgi?id=155578
        <rdar://problem/21886326>

        Reviewed by Dan Bernstein.

        Covered by the existing set of attachment sandbox tests, which have always been run on Mac.

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

2016-03-16  Beth Dakin  <bdakin@apple.com>

        Provide NSSpellChecker spellChecking methods with the current insertion point
        https://bugs.webkit.org/show_bug.cgi?id=155532
        -and corresponding-
        rdar://problem/24066952

        Reviewed by Simon Fraser.

        Extract the insertion point from the VisibleSelection that WebCore has 
        passed. 
        * WebCoreSupport/WebEditorClient.h:
        (WebEditorClient::getGuessesForWord):
        * WebCoreSupport/WebEditorClient.mm:
        (WebEditorClient::checkTextOfParagraph):
        (insertionPointFromCurrentSelection):
        (WebEditorClient::getGuessesForWord):
        (WebEditorClient::requestCheckingOfString):

2016-03-16  Chris Dumez  <cdumez@apple.com>

        Unreviewed, rolling out r198235, r198240, r198241, and
        r198252.

        Causing crashes on ARM

        Reverted changesets:

        "Remove compile time define for SEPARATED_HEAP"
        https://bugs.webkit.org/show_bug.cgi?id=155508
        http://trac.webkit.org/changeset/198235

        "Gardening: build fix after r198235."
        http://trac.webkit.org/changeset/198240

        "Build fix."
        http://trac.webkit.org/changeset/198241

        "Rename performJITMemcpy to something more inline with our
        normal webkit function names"
        https://bugs.webkit.org/show_bug.cgi?id=155525
        http://trac.webkit.org/changeset/198252

2016-03-16  Jiewen Tan  <jiewen_tan@apple.com>

        URL Parsing should signal failure for illegal IDN
        https://bugs.webkit.org/show_bug.cgi?id=154945
        <rdar://problem/8014795>

        Reviewed by Brent Fulgham.

        In this patch, we add new SPIs _webkit_URLWithUserTypedString, _webkit_decodeHostName and
        _webkit_encodeHostName which will return nil while dealing with illegal IDN.

        Old SPIs _web_URLWithUserTypedString, _web_decodeHostName and _web_encodeHostName are marked
        deprecated as they ignore URL parsing failure.

        * History/WebHistoryItem.mm:
        (-[WebHistoryItem initFromDictionaryRepresentation:]):
        * Misc/WebKitErrors.m:
        (+[NSError _webKitErrorWithCode:failingURL:]):
        * Misc/WebNSFileManagerExtras.mm:
        (-[NSFileManager _webkit_setMetadataURL:referrer:atPath:]):
        * Misc/WebNSPasteboardExtras.mm:
        (-[NSPasteboard _web_bestURL]):
        * Misc/WebNSURLExtras.h:
        * Misc/WebNSURLExtras.mm:
        (+[NSURL _web_URLWithUserTypedString:]):
        (+[NSURL _webkit_URLWithUserTypedString:relativeToURL:]):
        (+[NSURL _webkit_URLWithUserTypedString:]):
        (-[NSString _web_decodeHostName]):
        (-[NSString _web_encodeHostName]):
        (-[NSString _webkit_decodeHostName]):
        (-[NSString _webkit_encodeHostName]):
        * Panels/WebAuthenticationPanel.m:
        (-[WebAuthenticationPanel setUpForChallenge:]):
        * WebCoreSupport/WebEditorClient.mm:
        (WebEditorClient::canonicalizeURLString):

2016-03-15  Jer Noble  <jer.noble@apple.com>

        [ios-sim debug] API test WebKit1.AudioSessionCategoryIOS timing out
        https://bugs.webkit.org/show_bug.cgi?id=155275

        Reviewed by Alexey Proskuryakov.

        The videoPlaybackRequiresUserGesture and audioPlaybackRequiresUserGesture should both defalut to
        NO, so that legacy clients of -[UIWebView setMediaPlaybackRequiresUserAction:] continue to work
        as expected.

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

2016-03-15  Oliver Hunt  <oliver@apple.com>

        Remove compile time define for SEPARATED_HEAP
        https://bugs.webkit.org/show_bug.cgi?id=155508

        Reviewed by Mark Lam.

        Remove the feature define.

        * Configurations/FeatureDefines.xcconfig:

2016-03-15  Chris Dumez  <cdumez@apple.com>

        Unreviewed, rolling out r198203.

        Favorites view is no longer loading on iOS

        Reverted changeset:

        "URL Parsing should signal failure for illegal IDN"
        https://bugs.webkit.org/show_bug.cgi?id=154945
        http://trac.webkit.org/changeset/198203

2016-03-15  Jiewen Tan  <jiewen_tan@apple.com>

        URL Parsing should signal failure for illegal IDN
        https://bugs.webkit.org/show_bug.cgi?id=154945
        <rdar://problem/8014795>

        Reviewed by Brent Fulgham.

        In this patch, we add new SPIs _webkit_URLWithUserTypedString, _webkit_decodeHostName and
        _webkit_encodeHostName which will return nil while dealing with illegal IDN.

        Old SPIs _web_URLWithUserTypedString, _web_decodeHostName and _web_encodeHostName are marked
        deprecated as they ignore URL parsing failure.

        * History/WebHistoryItem.mm:
        (-[WebHistoryItem initFromDictionaryRepresentation:]):
        * Misc/WebKitErrors.m:
        (+[NSError _webKitErrorWithCode:failingURL:]):
        * Misc/WebNSFileManagerExtras.mm:
        (-[NSFileManager _webkit_setMetadataURL:referrer:atPath:]):
        * Misc/WebNSPasteboardExtras.mm:
        (-[NSPasteboard _web_bestURL]):
        * Misc/WebNSURLExtras.h:
        * Misc/WebNSURLExtras.mm:
        (+[NSURL _web_URLWithUserTypedString:]):
        (+[NSURL _webkit_URLWithUserTypedString:relativeToURL:]):
        (+[NSURL _webkit_URLWithUserTypedString:]):
        (-[NSString _web_decodeHostName]):
        (-[NSString _web_encodeHostName]):
        (-[NSString _webkit_decodeHostName]):
        (-[NSString _webkit_encodeHostName]):
        * Panels/WebAuthenticationPanel.m:
        (-[WebAuthenticationPanel setUpForChallenge:]):
        * WebCoreSupport/WebEditorClient.mm:
        (WebEditorClient::canonicalizeURLString):

2016-03-14  Chris Dumez  <cdumez@apple.com>

        Unreviewed, rolling out r197981.

        Caused a massive PLT regression on Mac.

        Reverted changeset:

        "Font antialiasing (smoothing) changes when elements are
        rendered into compositing layers"
        https://bugs.webkit.org/show_bug.cgi?id=23364
        http://trac.webkit.org/changeset/197981

2016-03-14  Sam Weinig  <sam@webkit.org>

        Add a baseURL parameter to _WKUserStyleSheet
        https://bugs.webkit.org/show_bug.cgi?id=155219

        Reviewed by Tim Horton.

        * WebView/WebView.mm:
        (-[WebView _commonInitializationWithFrameName:groupName:]):
        (-[WebView initSimpleHTMLDocumentWithStyle:frame:preferences:groupName:]):
        (-[WebView setGroupName:]):
        Update to account for the name change from UserContentController -> UserContentProvider.

2016-03-14  Joonghun Park  <jh718.park@samsung.com>

        Purge PassRefPtr from ArrayBuffer, ArchiveResource, Pasteboard, LegacyWebArchive and DataObjectGtk
        https://bugs.webkit.org/show_bug.cgi?id=150497

        Reviewed by Darin Adler.

        * DOM/WebDOMOperations.mm:
        (-[DOMNode webArchive]):
        (-[DOMNode webArchiveByFilteringSubframes:]):
        * WebCoreSupport/WebPlatformStrategies.h:
        * WebCoreSupport/WebPlatformStrategies.mm:
        (WebPlatformStrategies::bufferForType):
        (WebPlatformStrategies::readBufferFromPasteboard):
        * WebView/WebArchive.mm:
        (-[WebArchive initWithData:]):
        * WebView/WebDataSource.mm:
        (-[WebDataSource webArchive]):
        (-[WebDataSource addSubresource:]):
        * WebView/WebResource.mm:
        (-[WebResource encodeWithCoder:]):
        (-[WebResource data]):
        (-[WebResource _stringValue]):
        (-[WebResource _initWithCoreResource:]): Deleted.

2016-03-14  Oliver Hunt  <oliver@apple.com>

        Temporarily disable the separated heap.
        https://bugs.webkit.org/show_bug.cgi?id=155472

        Reviewed by Geoffrey Garen.

        Temporarily disable this.

        * Configurations/FeatureDefines.xcconfig:

2016-03-14  Anders Carlsson  <andersca@apple.com>

        Fix build.

        Ignore nullability warnings, create an empty PDF selection.

        * WebView/WebPDFView.mm:
        (-[WebPDFView centerSelectionInVisibleArea:]):
        (-[WebPDFView searchFor:direction:caseSensitive:wrap:startInSelection:]):
        (+[WebPDFView _PDFSelectionClass]):
        (-[WebPDFView _nextMatchFor:direction:caseSensitive:wrap:fromSelection:startInSelection:]):

2016-03-13  Joseph Pecoraro  <pecoraro@apple.com>

        Remove ENABLE(ES6_TEMPLATE_LITERAL_SYNTAX) guards
        https://bugs.webkit.org/show_bug.cgi?id=155417

        Reviewed by Yusuke Suzuki.

        * Configurations/FeatureDefines.xcconfig:

2016-03-13  Dean Jackson  <dino@apple.com>

        <attachment> should be a runtime-enabled feature
        https://bugs.webkit.org/show_bug.cgi?id=155413
        <rdar://problem/25120753>

        Reviewed by Sam Weinig and Anders Carlsson.

        Add an internal setting on WebPreferences
        to enable the <attachment> element support.

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

2016-03-12  Sam Weinig  <sam@webkit.org>

        WebKit can easily crash below NetworkSession::dataTaskForIdentifier() with NSURLSession enabled
        <rdar://problem/25129946>
        https://bugs.webkit.org/show_bug.cgi?id=155401

        Reviewed by Alex Christensen.

        * WebCoreSupport/WebFrameNetworkingContext.mm:
        (WebFrameNetworkingContext::ensurePrivateBrowsingSession):
        Pass a SessionID to NetworkStorageSession::createPrivateBrowsingSession().

2016-03-12  Myles C. Maxfield  <mmaxfield@apple.com>

        Delete dead SVG Font code
        https://bugs.webkit.org/show_bug.cgi?id=154718

        Reviewed by Antti Koivisto.

        * Configurations/FeatureDefines.xcconfig:

2016-03-11  Yusuke Suzuki  <utatane.tea@gmail.com>

        [ES6] Implement Reflect.set without receiver support
        https://bugs.webkit.org/show_bug.cgi?id=155024

        Reviewed by Geoffrey Garen.

        As the same to NPJSObject, we just propagate the returned value of NetscapePluginInstanceProxy::setProperty.

        * Plugins/Hosted/ProxyInstance.h:
        * Plugins/Hosted/ProxyInstance.mm:
        (WebKit::ProxyField::setValueToInstance):
        (WebKit::ProxyInstance::setFieldValue):

2016-03-10  Jeremy Jones  <jeremyj@apple.com>

        Set AVURLAssetUsesNoPersistentCacheKey on AVAsset to match caching policy.
        https://bugs.webkit.org/show_bug.cgi?id=155117
        rdar://problem/6802240

        Reviewed by Simon Fraser.

        Implement mediaShouldUsePersistentCache to disable media caching when NSURLCache is disabled.

        * WebCoreSupport/WebChromeClient.h:
        * WebCoreSupport/WebChromeClient.mm:
        (WebChromeClient::mediaShouldUsePersistentCache): Added.

2016-03-10  Simon Fraser  <simon.fraser@apple.com>

        Font antialiasing (smoothing) changes when elements are rendered into compositing layers
        https://bugs.webkit.org/show_bug.cgi?id=23364

        Reviewed by Tim Horton.

        Allow internal clients to turn off smoothed layer text, so that WebKitTestRunner
        can disable it.

        * WebView/WebView.mm:
        (+[WebView _setSmoothedLayerTextEnabled:]):
        (+[WebView _smoothedLayerTextEnabled]):
        * WebView/WebViewPrivate.h:

2016-03-10  Jer Noble  <jer.noble@apple.com>

        Add WebCore, WebKit, & WebKit2 preference/setting to enable Main Content heuristic.
        https://bugs.webkit.org/show_bug.cgi?id=155326
        <rdar://problem/25095408>

        Reviewed by Beth Dakin.

        Add SPI to get and set the new preference.

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

2016-03-07  Jer Noble  <jer.noble@apple.com>

        Add separate WK and WK2 preferences for requiring user gestures for video media, distinct from user gestures for media generally
        https://bugs.webkit.org/show_bug.cgi?id=155141

        Reviewed by Beth Dakin.

        Deprecate WebPreferences.mediaPlaybackRequiresUserGesture property in favor of .videoPlaybackRequiresUserGesture.

        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):
        (-[WebPreferences mediaPlaybackRequiresUserGesture]):
        (-[WebPreferences setMediaPlaybackRequiresUserGesture:]):
        (-[WebPreferences videoPlaybackRequiresUserGesture]):
        (-[WebPreferences setVideoPlaybackRequiresUserGesture:]):
        * WebView/WebPreferencesPrivate.h:
        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]):

2016-03-10  Alexey Proskuryakov  <ap@apple.com>

        Build fix for deprecated constant names.

        * Carbon/CarbonWindowAdapter.mm:
        (-[CarbonWindowAdapter initWithCarbonWindowRef:takingOwnership:disableOrdering:carbon:]):
        (-[CarbonWindowAdapter sendSuperEvent:]):

2016-03-10  Commit Queue  <commit-queue@webkit.org>

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

        This change broke Windows, WinCairo, GTK and EFL builds
        (Requested by ryanhaddad on #webkit).

        Reverted changeset:

        "Add a baseURL parameter to _WKUserStyleSheet"
        https://bugs.webkit.org/show_bug.cgi?id=155219
        http://trac.webkit.org/changeset/197943

2016-03-08  Sam Weinig  <sam@webkit.org>

        Add a baseURL parameter to _WKUserStyleSheet
        https://bugs.webkit.org/show_bug.cgi?id=155219

        Reviewed by Tim Horton.

        * WebView/WebView.mm:
        (-[WebView _commonInitializationWithFrameName:groupName:]):
        (-[WebView initSimpleHTMLDocumentWithStyle:frame:preferences:groupName:]):
        (-[WebView setGroupName:]):
        Update to account for the name change from UserContentController -> UserContentProvider.

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

        Enable AVFoundationNSURLSessionEnabled by default
        https://bugs.webkit.org/show_bug.cgi?id=154469

        Reviewed by Sam Weinig.

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

2016-03-09  Ryosuke Niwa  <rniwa@webkit.org>

        Add runtime flags for shadow DOM and custom elements
        https://bugs.webkit.org/show_bug.cgi?id=155213

        Reviewed by Dean Jackson.

        Set the runtime flag based on preferences. Enable shadow DOM and disable custom elements by default.

        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):
        (-[WebPreferences shadowDOMEnabled]):
        (-[WebPreferences setShadowDOMEnabled:]):
        (-[WebPreferences customElementsEnabled]):
        (-[WebPreferences setCustomElementsEnabled:]):
        * WebView/WebPreferencesPrivate.h:
        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]):

2016-03-09  David Kilzer  <ddkilzer@apple.com>

        REGRESSION (r197149): Missing availability checks when soft-linking DataDetectors.framework
        <http://webkit.org/b/155258>

        Reviewed by Andy Estes.

        * WebView/WebImmediateActionController.mm:
        (-[WebImmediateActionController _clearImmediateActionState]):
        (-[WebImmediateActionController immediateActionRecognizerWillBeginAnimation:]):
        (-[WebImmediateActionController _animationControllerForDataDetectedText]):
        (-[WebImmediateActionController _animationControllerForDataDetectedLink]):
        - Add check that returns early if DataDetectors.framework is not
          available.

2016-03-08  Oliver Hunt  <oliver@apple.com>

        Start moving to separated writable and executable mappings in the JIT
        https://bugs.webkit.org/show_bug.cgi?id=155178

        Reviewed by Fil Pizlo.

        Update feature defines.

        * Configurations/FeatureDefines.xcconfig:

2016-03-08  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r197793 and r197799.
        https://bugs.webkit.org/show_bug.cgi?id=155195

        something weird happened while landing this and everything
        broke (Requested by olliej on #webkit).

        Reverted changesets:

        "Start moving to separated writable and executable mappings in
        the JIT"
        https://bugs.webkit.org/show_bug.cgi?id=155178
        http://trac.webkit.org/changeset/197793

        "arm64 build fix after r197793."
        http://trac.webkit.org/changeset/197799

2016-03-08  Oliver Hunt  <oliver@apple.com>

        Start moving to separated writable and executable mappings in the JIT
        https://bugs.webkit.org/show_bug.cgi?id=155178

        Reviewed by Filip Pizlo.

        Update feature defines.

        * Configurations/FeatureDefines.xcconfig:

2016-03-08  Anders Carlsson  <andersca@apple.com>

        Ignore deprecation warnings.

        * Misc/WebNSEventExtras.m:
        (-[NSEvent _web_isKeyEvent:]):
        (-[NSEvent _web_isOptionTabKeyEvent]):
        * Misc/WebNSViewExtras.m:
        (-[NSView _web_dragShouldBeginFromMouseDown:withExpiration:xHysteresis:yHysteresis:]):
        * Plugins/Hosted/NetscapePluginHostProxy.mm:
        (WebKit::NetscapePluginHostProxy::beginModal):
        * Plugins/Hosted/NetscapePluginInstanceProxy.mm:
        (WebKit::NetscapePluginInstanceProxy::syntheticKeyDownWithCommandModifier):
        * Plugins/Hosted/WebHostedNetscapePluginView.mm:
        (-[WebHostedNetscapePluginView drawRect:]):
        * Plugins/WebNetscapePluginEventHandlerCocoa.mm:
        (WebNetscapePluginEventHandlerCocoa::syntheticKeyDownWithCommandModifier):
        * WebCoreSupport/PopupMenuMac.mm:
        (PopupMenuMac::populate):
        (PopupMenuMac::show):
        * WebCoreSupport/WebContextMenuClient.mm:
        (WebContextMenuClient::showContextMenu):
        * WebCoreSupport/WebFrameLoaderClient.mm:
        (WebFrameLoaderClient::actionDictionary):
        * WebCoreSupport/WebInspectorClient.mm:
        (WebInspectorFrontendClient::canAttach):
        (-[WebInspectorWindowController window]):
        * WebInspector/WebNodeHighlight.mm:
        (-[WebNodeHighlight initWithTargetView:inspectorController:]):
        * WebView/WebFrameView.mm:
        (-[WebFrameView keyDown:keyDown:]):
        * WebView/WebFullScreenController.mm:
        (-[WebFullScreenController init]):
        (createBackgroundFullscreenWindow):
        * WebView/WebHTMLView.mm:
        (-[WebHTMLView _postFakeMouseMovedEventForFlagsChangedEvent:]):
        (-[WebHTMLView _setMouseDownEvent:_setMouseDownEvent:]):
        (isQuickLookEvent):
        (-[WebHTMLView hitTest:]):
        (-[WebHTMLView _sendToolTipMouseExited]):
        (-[WebHTMLView _sendToolTipMouseEntered]):
        (mouseEventIsPartOfClickOrDrag):
        (-[WebHTMLView _updateMouseoverWithEvent:]):
        (-[WebHTMLView acceptsFirstResponder]):
        (-[WebHTMLView viewDidMoveToWindow]):
        (currentKeyboardEvent):
        (-[WebHTMLView _handleStyleKeyEquivalent:]):
        (-[WebHTMLView _interpretKeyEvent:savingCommands:]):
        * WebView/WebPDFView.mm:
        (-[WebPDFView hitTest:]):
        (-[WebPDFView PDFViewWillClickOnLink:withURL:]):
        (-[WebPDFView _fakeKeyEventWithFunctionKey:]):
        * WebView/WebTextCompletionController.mm:
        (-[WebTextCompletionController _buildUI]):
        (-[WebTextCompletionController _placePopupWindow:]):
        * WebView/WebView.mm:
        (-[WebView applicationFlags:]):

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

        Reduce startup and shutdown cost of resource load statistics
        https://bugs.webkit.org/show_bug.cgi?id=155120
        <rdar://problem/25010167>

        Reviewed by Andy Estes.

        Remove the Resource Load Statistics stuff from WK1, now that it is up and
        running in WK2.

        * WebView/WebView.mm:
        (-[WebView _preferencesChanged:]): Remove call to read resource load
        statistics from disk.
        (+[WebView _applicationWillTerminate]): Remove call to write resource load
        statistics to disk.

2016-03-06  Andreas Kling  <akling@apple.com>

        Reduce page cache capacity from 3 to 2.
        <https://webkit.org/b/155087>

        Reviewed by Antti Koivisto.

        Trim WebKit1 page cache capacities consistently with WebKit2.

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

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

        Consolidate RuntimeApplicationChecks and RuntimeApplicationChecksIOS
        https://bugs.webkit.org/show_bug.cgi?id=155035

        Reviewed by Darin Adler.

        Update runtime application checks.

        * Plugins/WebPluginController.mm:
        (initializeAudioSession):
        * WebCoreSupport/WebFrameLoaderClient.mm:
        * WebView/WebFrame.mm:
        (needsMicrosoftMessengerDOMDocumentWorkaround):
        * WebView/WebImmediateActionController.mm:
        (-[WebImmediateActionController _updateImmediateActionItem]):
        * WebView/WebView.mm:
        (WebKitInitializeApplicationCachePathIfNecessary):
        (shouldEnableLoadDeferring):
        (shouldRestrictWindowFocus):
        (needsOutlookQuirksScript):
        (shouldTransformsAffectOverflow):
        (shouldDispatchJavaScriptWindowOnErrorEvents):
        (shouldUseLegacyBackgroundSizeShorthandBehavior):
        (-[WebView _commonInitializationWithFrameName:groupName:]):
        (+[WebView enableWebThread]):
        (+[WebView registerForMemoryNotifications]):
        (-[WebView _needsKeyboardEventDisambiguationQuirks]):
        (needsSelfRetainWhileLoadingQuirk):
        (-[WebView _needsPreHTML5ParserQuirks]):

2016-03-05  Yusuke Suzuki  <utatane.tea@gmail.com>

        [ES6] Support Reflect.construct
        https://bugs.webkit.org/show_bug.cgi?id=147330

        Reviewed by Saam Barati.

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

2016-03-04  Brent Fulgham  <bfulgham@apple.com>

        Unreviewed test fix for null global WebResourceLoadStatisticsStore.

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

2016-03-04  Brent Fulgham  <bfulgham@apple.com>

        [WK2] Gather resource load statistics
        https://bugs.webkit.org/show_bug.cgi?id=154278
        <rdar://problem/24702892>

        Reviewed by Andy Estes.

        Switch to maintaining a global WebCore::ResourceLoadStatisticsStore in the WebKit process,
        and hand it off to the WebCore layer to use during data gathering. The ResourceLoadStatisticsStore
        is now responsible for reading/writing to disk, and tracking the collection of load data.

        * WebView/WebView.mm:
        (WebKitInitializeApplicationStatisticsStoragePathIfNecessary): Initialize singleton
        ResourceLoadStatisticsStore object for tracking state.
        (-[WebView _preferencesChanged:]): Revise for new singleton.
        (+[WebView _applicationWillTerminate]): Ditto.

2016-02-29  Ada Chan  <adachan@apple.com>

        Adopt the new version of AVOutputDeviceMenuController's showMenuForRect method.
        https://bugs.webkit.org/show_bug.cgi?id=154823

        Reviewed by Tim Horton.

        * WebCoreSupport/WebChromeClient.h:
        * WebCoreSupport/WebChromeClient.mm:
        (WebChromeClient::showPlaybackTargetPicker):
        * WebView/WebMediaPlaybackTargetPicker.h:
        * WebView/WebMediaPlaybackTargetPicker.mm:
        (WebMediaPlaybackTargetPicker::showPlaybackTargetPicker):
        (WebMediaPlaybackTargetPicker::customPlaybackActionSelected):
        * WebView/WebView.mm:
        (-[WebView _showPlaybackTargetPicker:location:hasVideo:]):

2016-03-01  Tim Horton  <timothy_horton@apple.com>

        Expose MediaElement and VideoElement to the Objective-C DOM bindings
        https://bugs.webkit.org/show_bug.cgi?id=154830

        Reviewed by Sam Weinig.

        * MigrateHeaders.make:

2016-02-29  Simon Fraser  <simon.fraser@apple.com>

        Remove the experimental feature of antialiased font dilation
        https://bugs.webkit.org/show_bug.cgi?id=154843

        Reviewed by Zalan Bujtas.

        Remove the "antialiased font dilation" code path, and related prefs.

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

2016-02-26  Dan Bernstein  <mitz@apple.com>

        Build fix for when WK_OVERRIDE_FRAMEWORKS_DIR contains spaces.

        * Configurations/WebKitLegacy.xcconfig: Added quotes.

2016-02-25  Ada Chan  <adachan@apple.com>

        Update the definition of ENABLE_VIDEO_PRESENTATION_MODE for Mac platform
        https://bugs.webkit.org/show_bug.cgi?id=154702

        Reviewed by Dan Bernstein.

        * Configurations/FeatureDefines.xcconfig:

2016-02-25  Jiewen Tan  <jiewen_tan@apple.com>

        Restrict information passed with navigation action which is triggered by untrusted event
        https://bugs.webkit.org/show_bug.cgi?id=154571
        <rdar://problem/15967937>

        Reviewed by Andy Estes.

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

2016-02-25  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] MediaDeviceInfo deviceId and groupId must be unique to the page's origin
        https://bugs.webkit.org/show_bug.cgi?id=153163
        <rdar://problem/24334526>

        Reviewed by Tim Horton.

        * WebCoreSupport/WebUserMediaClient.mm:
        (WebUserMediaClient::requestUserMediaAccess):
        (WebUserMediaClient::checkUserMediaPermission):
        (-[WebUserMediaPolicyCheckerListener allow]):
        (-[WebUserMediaPolicyCheckerListener deny]):

2016-02-24  Nikos Andronikos  <nikos.andronikos-webkit@cisra.canon.com.au>

        [web-animations] Add AnimationTimeline, DocumentTimeline and add extensions to Document interface
        https://bugs.webkit.org/show_bug.cgi?id=151688

        Reviewed by Dean Jackson.

        Enables the WEB_ANIMATIONS compiler switch.

        * Configurations/FeatureDefines.xcconfig:

2016-02-23  Dan Bernstein  <mitz@apple.com>

        [Xcode] Linker errors display mangled names, but no longer should
        https://bugs.webkit.org/show_bug.cgi?id=154632

        Reviewed by Sam Weinig.

        * Configurations/Base.xcconfig: Stop setting LINKER_DISPLAYS_MANGLED_NAMES to YES.

2016-02-23  Gavin Barraclough  <barraclough@apple.com>

        Remove HIDDEN_PAGE_DOM_TIMER_THROTTLING feature define
        https://bugs.webkit.org/show_bug.cgi?id=112323

        Reviewed by Chris Dumez.

        This feature is controlled by a runtime switch, and defaults off.

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

2016-02-22  Commit Queue  <commit-queue@webkit.org>

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

        This change causes timeouts and crashes in LayoutTests
        (Requested by ryanhaddad on #webkit).

        Reverted changeset:

        "Enable AVFoundationNSURLSessionEnabled by default"
        https://bugs.webkit.org/show_bug.cgi?id=154469
        http://trac.webkit.org/changeset/196935

2016-02-22  Keith Rollin  <krollin@apple.com>

        Add mechanism to disable memory pressure handling
        https://bugs.webkit.org/show_bug.cgi?id=154254
        <rdar://problem/24662616>

        Reviewed by Chris Dumez.

        Add a mechanism to disable WebKit's response to memory pressure
        triggers. This was asked for by another group for testing purposes.

        In order to disable WebKit's memory pressure handling, execute the
        following from the command line:

            defaults write com.apple.Safari WebKitSuppressMemoryPressureHandler -bool true

        To revert to standard behavior, delete the key or set it to False.

        This flag is used when a new sub-process is being spawned. The value
        is read and stored in an initialization parameter block, which is then
        sent to the new sub-process.

        In actuality, only the UI, WebContent, and Network processes heed the
        flag. The Plugin process isn't instrumented to heed this flag for
        three reasons. First, the Plugin process installs its memory pressure
        handler in initializeProcess, not initializePluginProcess. This is
        contrary to when the other processes install their handlers, which is
        in initialize<PluginType>Process, not initializeProcess. So in order
        to accomodate the Plugin process, we'd need to modify
        ChildProcessInitializationParameters. Doing this is awkward at best,
        but also seems to be opposed to what's supposed to be done in
        initializeProcess and conveyed in
        ChildProcessInitializationParameters. And even if we did add a boolean
        to this structure and added support for conveying it through the XPC
        port, it would end up being a Plugin process-only boolean in a general
        parameter block, which seems asymmetric with the other processes.
        Second, there's no convenient Cocoa function called in the flow that
        spawns the Plugin process, meaning that there's no convenient place to
        call NSUserDefaults to get the flag's value. And third, the Plugin
        process doesn't elegantly respond to the memory pressure trigger
        anyway. It might terminate itself, but that's it. As for the Database
        process, it doesn't seem to support responding to memory pressure at
        all, so we don't send it a flag telling it to ignore it.

        Internally, the memory pressure handler is suppressed by not calling
        MemoryPressureHandler::install() if the flag is set. In the case of
        the Network process, the flag is saved so that it can be checked later
        in other places that manually kick off the memory pressure handling
        procedure.

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

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

        Enable AVFoundationNSURLSessionEnabled by default
        https://bugs.webkit.org/show_bug.cgi?id=154469

        Reviewed by Sam Weinig.

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

2016-02-15  Brent Fulgham  <bfulgham@apple.com>

        [Mac] Gather some rudimentary statistics during resource load 
        https://bugs.webkit.org/show_bug.cgi?id=153575
        <rdar://problem/24075254>

        Reviewed by Brady Eidson.

        * Misc/WebKitNSStringExtras.h:
        * Misc/WebKitNSStringExtras.mm:
        (+[NSString _webkit_localStorageDirectoryWithBundleIdentifier:]): Added.
        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):
        (-[WebPreferences resourceLoadStatisticsEnabled]): Added.
        (-[WebPreferences setResourceLoadStatisticsEnabled:]): Added.
        * WebView/WebPreferencesPrivate.h:
        * WebView/WebView.mm:
        (WebKitInitializeApplicationCachePathIfNecessary):
        (WebKitInitializeApplicationStatisticsStoragePathIfNecessary): Added.
        (-[WebView _commonInitializationWithFrameName:groupName:]): Add call to new
        initialization method.
        (-[WebView _preferencesChanged:]): Track changes in the user's desire to
        monitor resource load statistics.
        (+[WebView _applicationWillTerminate]): Write statistics to disk (if preferences
        say to do so.)

2016-02-13  Mark Lam  <mark.lam@apple.com>

        Add thread violation checks to WebView public APIs.
        https://bugs.webkit.org/show_bug.cgi?id=154183

        Reviewed by Timothy Hatcher.

        Re-landing r196527 with a newly added WebCoreThreadViolationCheckRoundThree().
        Previously was using WebCoreThreadViolationCheckRoundTwo().

        * Misc/WebKitVersionChecks.h:
        * WebView/WebFrameView.mm:
        (-[WebFrameView initWithFrame:]):
        * WebView/WebView.mm:
        (-[WebView setCustomTextEncodingName:]):
        (-[WebView stringByEvaluatingJavaScriptFromString:]):
        (-[WebView windowScriptObject]):
        (-[WebView setGroupName:]):
        (-[WebView setMainFrameURL:]):
        (-[WebView mainFrameTitle]):
        (-[WebView mainFrameIcon]):
        (-[WebView setDrawsBackground:]):
        (-[WebView setShouldUpdateWhileOffscreen:]):

2016-02-12  Commit Queue  <commit-queue@webkit.org>

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

        "Need to redo as WebCoreThreadViolationCheckRoundThree"
        (Requested by mlam on #webkit).

        Reverted changeset:

        "Add thread violation checks to WebView public APIs."
        https://bugs.webkit.org/show_bug.cgi?id=154183
        http://trac.webkit.org/changeset/196527

2016-02-12  Mark Lam  <mark.lam@apple.com>

        Add thread violation checks to WebView public APIs.
        https://bugs.webkit.org/show_bug.cgi?id=154183

        Reviewed by Geoffrey Garen.

        This will help clients of the API detect the violations sooner rather than
        having to debug mysterious crashes / failures later.

        To that end, I've added thread violation checks to the following functions
        because ...

        * WebView/WebView.mm:
        (-[WebView setCustomTextEncodingName:]):
        - Uses the FrameLoader (which is for the main thread only).

        (-[WebView stringByEvaluatingJavaScriptFromString:]):
        - Invokes JavaScript (which is for the main thread only).

        (-[WebView windowScriptObject]):
        - Invokes ScriptController::windowScriptObject() which requires the JSLock.

        (-[WebView setGroupName:]):
        - Manipulates the PageGroup and Page (which is for the main thread only).

        (-[WebView setMainFrameURL:]):
        - Uses the FrameLoader (which is for the main thread only).

        (-[WebView mainFrameTitle]):
        - Uses the FrameLoader::documentLoader() (via [WebFrame _dataSource]) which
          is RefPtr, and therefore not safe for other threads to access.

        (-[WebView mainFrameIcon]):
        - Uses the FrameLoader::documentLoader() (via [WebFrame _dataSource]) which
          is RefPtr, and therefore not safe for other threads to access.
        - Uses [WebIconDatabase sharedIconDatabase] which does a singleton
          instantiation but is not protected by a lock.

        (-[WebView setDrawsBackground:]):
        - Potentially manipulates a RenderView (via FrameView::setBaseBackgroundColor,
          via [WebFrame _updateBackgroundAndUpdatesWhileOffscreen]), and RenderView
          is for main thread only use.

        (-[WebView setShouldUpdateWhileOffscreen:]):
        - Uses [WebFrame _updateBackgroundAndUpdatesWhileOffscreen].  Hence, for the
          main thread only.

2016-02-12  Sukolsak Sakshuwong  <sukolsak@gmail.com>

        Update ICU header files to version 52
        https://bugs.webkit.org/show_bug.cgi?id=154160

        Reviewed by Alex Christensen.

        Update ICU header files to version 52 to allow the use of newer APIs.

        * icu/unicode/localpointer.h:
        * icu/unicode/platform.h:
        * icu/unicode/ptypes.h:
        * icu/unicode/putil.h:
        * icu/unicode/uchar.h:
        * icu/unicode/uconfig.h:
        * icu/unicode/uidna.h:
        * icu/unicode/uiter.h:
        * icu/unicode/umachine.h:
        * icu/unicode/unorm2.h:
        * icu/unicode/urename.h:
        * icu/unicode/uscript.h:
        * icu/unicode/ustring.h:
        * icu/unicode/utf.h:
        * icu/unicode/utf16.h:
        * icu/unicode/utf8.h:
        * icu/unicode/utf_old.h:
        * icu/unicode/utypes.h:
        * icu/unicode/uvernum.h:
        * icu/unicode/uversion.h:

2016-02-12  Beth Dakin  <bdakin@apple.com>

        NSRangeIsRelativeTo should not have NS prefix
        https://bugs.webkit.org/show_bug.cgi?id=154174

        Reviewed by Tim Horton.

        NSRangeIsRelativeTo -> WebRangeIsRelativeTo
        * WebView/WebFrame.mm:
        (-[WebFrame _convertToDOMRange:]):
        (-[WebFrame _convertToDOMRange:rangeIsRelativeTo:]):
        * WebView/WebFrameInternal.h:
        * WebView/WebHTMLView.mm:
        (-[WebHTMLView insertText:]):

2016-02-11  Beth Dakin  <bdakin@apple.com>

        EditingRangeIsRelativeTo::Document and NSRangeIsRelativeTo::Document should 
        be called EditableRoot instead
        https://bugs.webkit.org/show_bug.cgi?id=154138

        Reviewed by Alexey Proskuryakov.

        EditableRoot is much more accurate than Document.
        * WebView/WebFrame.mm:
        (-[WebFrame _convertToDOMRange:]):
        (-[WebFrame _convertToDOMRange:rangeIsRelativeTo:]):
        * WebView/WebFrameInternal.h:
        * WebView/WebHTMLView.mm:
        (-[WebHTMLView insertText:]):

2016-02-11  Beth Dakin  <bdakin@apple.com>

        Soft spaces are often tracked in the wrong spot
        https://bugs.webkit.org/show_bug.cgi?id=154127
        -and corresponding-
        rdar://problem/24493140

        Reviewed by Sam Weinig.

        Soft spaces are in the wrong space now for two reasons. First of all, the 
        NSRange we get from the accepted candidate is relative to the paragraph 
        start, so without this patch, soft spaces are only ever right for the first 
        paragraph. Secondly, if focus changes for any reason other than text 
        insertion, soft spaces are also wrong because they need to be re-set.

        New version of _convertToDOMRange takes a NSRangeIsRelativeTo so that it can 
        handle ranges relative to both the document and the paragraph. 
        * WebView/WebFrame.mm:
        (-[WebFrame _convertToDOMRange:rangeIsRelativeTo:]):
        (-[WebFrame _convertNSRangeToDOMRange:]):

        New enum NSRangeIsRelativeTo.
        * WebView/WebFrameInternal.h:

        Re-set the softSpaceRange on selection changes so long as the WebCore::Editor 
        is not currently handling an accepted candidate.
        * WebView/WebHTMLView.mm:
        (-[WebHTMLView _selectionChanged]):

        If needToRemoveSoftSpace is true, then the replacementRange is 
        relative to the paragraph.
        (-[WebHTMLView insertText:]):

2016-02-10  Mark Lam  <mark.lam@apple.com>

        WebFrame _stringByEvaluatingJavaScriptFromString:forceUserGesture: should assert that it is being called from the "main" thread.
        https://bugs.webkit.org/show_bug.cgi?id=154059

        Reviewed by Geoffrey Garen.

        This makes it so that misbehaving clients which call it (indirectly) from another
        thread (not the main thread) will fail faster.  Otherwise, we get potential
        memory corruption that results in strange crashes elsewhere later.

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

2016-02-04  Jer Noble  <jer.noble@apple.com>

        [Mac] Adopt NSURLSession properties in AVAssetResourceLoader
        https://bugs.webkit.org/show_bug.cgi?id=153873

        Reviewed by Eric Carlson.

        Add a WebKit preference to control the WebCore isAVFoundationNSURLSessionEnabled()
        setting.

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

2016-02-09  Eric Carlson  <eric.carlson@apple.com>

        checkValidity() sometimes asserts in WebUserMediaClient::pageDestroyed
        https://bugs.webkit.org/show_bug.cgi?id=154029
        <rdar://problem/24065022>

        Reviewed by Alex Christensen.

        * WebCoreSupport/WebUserMediaClient.mm:
        (WebUserMediaClient::pageDestroyed): Copy map keys to a vector and clear the map before
          enumerating the vector and canceling the requests. ASSERT that the map is not modified
          during cleanup. Clean up the permission check map.
        (WebUserMediaClient::requestUserMediaAccess): Add the request to the map before calling the
          UI delegate in case it works synchronously (as it does in DRT).
        (WebUserMediaClient::checkUserMediaPermission): Ditto.
        (WebUserMediaClient::cancelUserMediaPermissionCheck): White-space cleanup.
        (-[WebUserMediaPolicyListener allow]): Ditto.

2016-02-08  Anders Carlsson  <andersca@apple.com>

        Crash when trying to chain to the old -[NSView setNeedsDisplayInRect:]
        https://bugs.webkit.org/show_bug.cgi?id=154001
        rdar://problem/24519975

        Reviewed by Dan Bernstein.

        If our replaced -[NSView setNeedsDisplayInRect:] is called before the old IMP has been initialized,
        we can end up trying to call a null pointer. 
        
        Fix this by using method_exchangeImplementations instead of method_setImplementation, since the former is done
        atomically.

        * WebView/WebHTMLView.mm:
        (-[NSView _web_setNeedsDisplayInRect:]):
        (+[WebHTMLViewPrivate initialize]):
        (setNeedsDisplayInRect): Deleted.

2016-02-07  Dan Bernstein  <mitz@apple.com>

        [Cocoa] Replace __has_include guards around inclusion of Apple-internal-SDK headers with USE(APPLE_INTERNAL_SDK)
        https://bugs.webkit.org/show_bug.cgi?id=153963

        Reviewed by Sam Weinig.

        * WebView/WebPDFView.mm:

2016-02-06  Darin Adler  <darin@apple.com>

        Finish auditing call sites of upper() and lower(), eliminate many, and rename the functions
        https://bugs.webkit.org/show_bug.cgi?id=153905

        Reviewed by Sam Weinig.

        * Plugins/WebBasePluginPackage.mm:
        (-[WebBasePluginPackage getPluginInfoFromPLists]): Use modern for loops.
        (-[WebBasePluginPackage supportsExtension:]): Use convertToASCIILowercase for extension assert.
        Also use modern for loop.
        (-[WebBasePluginPackage supportsMIMEType:]): Ditto.
        (-[WebBasePluginPackage MIMETypeForExtension:]): Ditto.

2016-02-03  Jessie Berlin  <jberlin@webkit.org>

        Build fix.

        [NSEvent context] has always returned nil. Replace uses with nullptr.

        * WebView/WebHTMLView.mm:
        (-[WebHTMLView _postFakeMouseMovedEventForFlagsChangedEvent:]):
        (-[WebHTMLView _updateMouseoverWithFakeEvent]):
        (-[WebHTMLView _updateMouseoverWithEvent:]):
        (-[WebHTMLView _autoscroll]):
        (-[WebHTMLView draggedImage:endedAt:operation:]):

2016-02-01  Dave Hyatt  <hyatt@apple.com>

        Add a line grid pagination SPI to WebKit.
        https://bugs.webkit.org/show_bug.cgi?id=153757
        <rdar://problem/23041598>

        Reviewed by Anders Carlsson.

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

2016-02-01  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: High Level Memory Overview Instrument
        https://bugs.webkit.org/show_bug.cgi?id=153516
        <rdar://problem/24356378>

        Reviewed by Brian Burg.

        * Configurations/FeatureDefines.xcconfig:

2016-01-31  Darin Adler  <darin@apple.com>

        Cut down on calls to String::lower; mostly replace with convertToASCIILowercase
        https://bugs.webkit.org/show_bug.cgi?id=153732

        Reviewed by Dean Jackson.

        * WebView/WebHTMLRepresentation.mm:
        (newArrayWithStrings): Updated to use HashSet<String, ASCIICaseInsensitiveHash>
        and also to use a modern for loop.

2016-01-31  Dan Bernstein  <mitz@apple.com>

        [Cocoa] Remove __has_include guards around use of WebKitAdditions
        https://bugs.webkit.org/show_bug.cgi?id=153728

        Reviewed by Andy Estes.

        Guard WebKitAdditions includes with #if USE(APPLE_INTERNAL_SDK) rather than with __has_include.

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

2016-01-29  Ada Chan  <adachan@apple.com>

        Enable VIDEO_PRESENTATION_MODE only in Debug and Release builds on Mac
        https://bugs.webkit.org/show_bug.cgi?id=153665

        Reviewed by Dan Bernstein.

        * Configurations/FeatureDefines.xcconfig:

2016-01-28  Darin Adler  <darin@apple.com>

        Remove equalIgnoringCase since all callers really wanted equalIgnoringASCIICase
        https://bugs.webkit.org/show_bug.cgi?id=153411

        Reviewed by Ryosuke Niwa.

        * WebCoreSupport/WebFrameLoaderClient.mm:
        (parameterValue): Use equalIgnoringASCIICase. No behavior change because the
        only name we ever search for with this is "pluginspage".

2016-01-27  Enrica Casucci  <enrica@apple.com>

        Cache results of data detection in the UI process when load completes.
        https://bugs.webkit.org/show_bug.cgi?id=153560

        Reviewed by Tim Horton.

        Adding empty implementation for WK1.

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

2016-01-27  Anders Carlsson  <andersca@apple.com>

        Add WebKitAdditions extension points to WebCore, WebKit and WebKitLegacy
        https://bugs.webkit.org/show_bug.cgi?id=153550

        Reviewed by Sam Weinig.

        * Configurations/WebKitLegacy.xcconfig:
        Add WKA header search paths.

        * WebKitAdditions.mm: Added.
        Add addition files.

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

2016-01-27  Chris Dumez  <cdumez@apple.com>

        window.atob() should ignore spaces in input
        https://bugs.webkit.org/show_bug.cgi?id=153522
        <rdar://problem/24357822>

        Reviewed by Benjamin Poulain.

        * WebCoreSupport/WebInspectorClient.mm:
        (WebInspectorFrontendClient::save):

2016-01-27  Alexey Proskuryakov  <ap@apple.com>

        Remove ENABLE_CURRENTSRC
        https://bugs.webkit.org/show_bug.cgi?id=153545

        Reviewed by Simon Fraser.

        * Configurations/FeatureDefines.xcconfig:

2016-01-25  Beth Dakin  <bdakin@apple.com>

        Build fix.

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

2016-01-25  Beth Dakin  <bdakin@apple.com>

        WK1: Handle soft spaces after accepted candidates
        https://bugs.webkit.org/show_bug.cgi?id=153442
        -and corresponding-
        rdar://problem/23958418

        Reviewed by Tim Horton.

        The space at the end of candidates is a soft space. If that space exists, 
        cache the range of the space in m_softSpaceRange.
        * WebCoreSupport/WebEditorClient.mm:
        (WebEditorClient::handleAcceptedCandidate):

        New ivar in WebHTMLViewPrivate softSpaceRange keeps track to the NSRange of a 
        soft space if the last text that was inserted has a soft space at the end.
        * WebView/WebHTMLView.mm:
        (-[WebHTMLView initWithFrame:]):
        (-[WebHTMLView _setSoftSpaceRange:]):

        When new text is inserted, find out if it is being inserted right after a 
        soft space. If it is, then [NSSpellChecker deletesAutospaceBeforeString] will 
        tell us if the space needs to be removed. If that is the case, then set the 
        replacementString to the soft space.
        (-[WebHTMLView insertText:]):
        * WebView/WebHTMLViewInternal.h:

2016-01-17  Ada Chan  <adachan@apple.com>

        Add a mode parameter to MediaControllerInterface::supportsFullscreen() and ChromeClient::supportsVideoFullscreen().
        https://bugs.webkit.org/show_bug.cgi?id=153220

        Reviewed by Eric Carlson.

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

2016-01-22  Darin Adler  <darin@apple.com>

        Reduce use of equalIgnoringCase to just ignore ASCII case
        https://bugs.webkit.org/show_bug.cgi?id=153266

        Reviewed by Ryosuke Niwa.

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

2016-01-21  Brent Fulgham  <bfulgham@apple.com>

        [Mac] Tooltips do not honor some types of obscuring windows
        https://bugs.webkit.org/show_bug.cgi?id=153263
        <rdar://problem/21423972>

        Reviewed by Simon Fraser.

        * WebView/WebHTMLView.mm:
        (-[WebHTMLView _updateMouseoverWithEvent:]): When the WebView is not the key window, don't
        display tooltips.

2016-01-19  Ada Chan  <adachan@apple.com>

        Make it possible to enable VIDEO_PRESENTATION_MODE on other Cocoa platforms.
        https://bugs.webkit.org/show_bug.cgi?id=153218

        Reviewed by Eric Carlson.

        * Configurations/FeatureDefines.xcconfig:

2016-01-19  Beth Dakin  <bdakin@apple.com>

        32-bit build fix.

        * WebView/WebView.mm:
        (-[WebView updateWebViewAdditions]):
        (-[WebView showCandidates:forString:inRect:view:completionHandler:]):
        * WebView/WebViewInternal.h:

2016-01-19  Beth Dakin  <bdakin@apple.com>

        Move away from NSSpellChecker's showCandidates method
        https://bugs.webkit.org/show_bug.cgi?id=153254
        -and corresponding-
        rdar://problem/24216292

        Reviewed by Tim Horton.

        * WebCoreSupport/WebEditorClient.mm:
        (WebEditorClient::handleRequestedCandidates):
        * WebView/WebView.mm:
        (-[WebView updateWebViewAdditions]):
        (-[WebView showCandidates:forString:inRect:view:completionHandler:]):
        * WebView/WebViewInternal.h:

2016-01-19  Enrica Casucci  <enrica@apple.com>

        Add support for DataDetectors in WK (iOS).
        https://bugs.webkit.org/show_bug.cgi?id=152989
        rdar://problem/22855960

        Reviewed by Tim Horton.

        Adding feature definition for data detection.

        * Configurations/FeatureDefines.xcconfig:

2016-01-19  Commit Queue  <commit-queue@webkit.org>

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

        enrica wants more time to fix Windows (Requested by thorton on
        #webkit).

        Reverted changeset:

        "Add support for DataDetectors in WK (iOS)."
        https://bugs.webkit.org/show_bug.cgi?id=152989
        http://trac.webkit.org/changeset/195300

2016-01-19  Enrica Casucci  <enrica@apple.com>

        Add support for DataDetectors in WK (iOS).
        https://bugs.webkit.org/show_bug.cgi?id=152989
        rdar://problem/22855960

        Reviewed by Tim Horton.

        Adding feature definition for data detection.

        * Configurations/FeatureDefines.xcconfig:

2016-01-16  Myles C. Maxfield  <mmaxfield@apple.com>

        Remove TextRun::allowsRoundingHacks()
        https://bugs.webkit.org/show_bug.cgi?id=153185

        Reviewed by Simon Fraser.

        * Misc/WebKitNSStringExtras.mm:
        (-[NSString _web_drawAtPoint:font:textColor:allowingFontSmoothing:]): Deleted.
        (-[NSString _web_widthWithFont:]): Deleted.
        * WebView/WebView.mm:
        (+[WebView _setAllowsRoundingHacks:]): Deleted.
        (+[WebView _allowsRoundingHacks]): Deleted.
        * WebView/WebViewPrivate.h:

2016-01-15  Tim Horton  <timothy_horton@apple.com>

        Data detector yellow highlight location is vertically mirrored in WebKit1
        https://bugs.webkit.org/show_bug.cgi?id=152216
        <rdar://problem/23848003>

        Reviewed by Beth Dakin.

        * WebView/WebImmediateActionController.mm:
        (-[WebImmediateActionController _animationControllerForDataDetectedText]):
        (-[WebImmediateActionController _animationControllerForDataDetectedLink]):
        These assignments have no effect because they're operating on a copy, because
        TextIndicator::data() does not return a reference... so remove them.

        * WebView/WebView.mm:
        (-[WebView _setTextIndicator:withLifetime:]):
        Convert textBoundingRectInRootViewCoordinates to WebView coordinates before
        converting to Window coordinates from WebView coordinates so we get flipping right.

        (-[WebView _animationControllerForDictionaryLookupPopupInfo:]):
        (-[WebView _showDictionaryLookupPopup:]):
        Ditto for these, except in the aforementioned conversion callback.

2016-01-14  Brady Eidson  <beidson@apple.com>

        Modern IDB: Support opening and deleting SQLite databases on disk.
        https://bugs.webkit.org/show_bug.cgi?id=153084

        Reviewed by Alex Christensen, Sam Weinig and Andy Estes (oh my!).

        * Storage/WebDatabaseProvider.mm: Copied from Source/WebKit/Storage/WebDatabaseProvider.cpp.
        (WebDatabaseProvider::indexedDatabaseDirectoryPath):

2016-01-14  Beth Dakin  <bdakin@apple.com>

        WK1 and WK2 should share more candidate request code
        https://bugs.webkit.org/show_bug.cgi?id=153108

        Reviewed by Simon Fraser.

        requestCandidatesForSelection() does not need to be exposed as an 
        EditorClient function. WK1 can just call invoke this code from the existing 
        respondToChangedSelection EditorClient function, which is what WK2 does.
        * WebCoreSupport/WebEditorClient.h:
        * WebCoreSupport/WebEditorClient.mm:
        (WebEditorClient::respondToChangedSelection):

        Cleanup — use some code that was moved to WebCore::Editor.
        (WebEditorClient::requestCandidatesForSelection):
        (WebEditorClient::handleRequestedCandidates):
        (textCheckingResultFromNSTextCheckingResult):
        (WebEditorClient::handleAcceptedCandidate):
        (candidateRangeForSelection): Deleted.
        (candidateWouldReplaceText): Deleted.

2016-01-13  Chris Dumez  <cdumez@apple.com>

        Unreviewed, rolling out r194900.

        Roll back in as this did not actually regress PLT

        Reverted changeset:

        "Unreviewed, rolling out r194826."
        https://bugs.webkit.org/show_bug.cgi?id=153020
        http://trac.webkit.org/changeset/194900

2016-01-12  Ryosuke Niwa  <rniwa@webkit.org>

        Add a build flag for custom element
        https://bugs.webkit.org/show_bug.cgi?id=153005

        Reviewed by Alex Christensen.

        * Configurations/FeatureDefines.xcconfig:

2016-01-12  Commit Queue  <commit-queue@webkit.org>

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

        Appears to have regressed PLT (Requested by kling on #webkit).

        Reverted changeset:

        "Use NeverDestroyed instead of DEPRECATED_DEFINE_STATIC_LOCAL
        cont'd"
        https://bugs.webkit.org/show_bug.cgi?id=152902
        http://trac.webkit.org/changeset/194826

2016-01-11  Anders Carlsson  <andersca@apple.com>

        Get rid of CFMakeCollectable, it is a no-op
        https://bugs.webkit.org/show_bug.cgi?id=152988

        Reviewed by Sam Weinig.

        * Misc/WebNSDataExtras.m:
        (-[NSString _web_capitalizeRFC822HeaderFieldName]):
        (-[NSData _webkit_parseRFC822HeaderFields]):
        * Plugins/WebPluginController.mm:
        (-[WebPluginController initWithDocumentView:]):

2016-01-10  Andreas Kling  <akling@apple.com>

        Use NeverDestroyed instead of DEPRECATED_DEFINE_STATIC_LOCAL cont'd
        <https://webkit.org/b/152902>

        Reviewed by Andy Estes.

        Convert some more of the remaining clients to use NeverDestroyed.

        * History/WebBackForwardList.mm:
        (backForwardLists):
        * History/WebHistoryItem.mm:
        (historyItemWrappers):
        * Misc/WebNSPasteboardExtras.mm:
        (+[NSPasteboard _web_writableTypesForURL]):
        (_writableTypesForImageWithoutArchive):
        (_writableTypesForImageWithArchive):
        * Plugins/Hosted/NetscapePluginHostManager.mm:
        (WebKit::NetscapePluginHostManager::singleton):
        * Plugins/Hosted/NetscapePluginHostProxy.mm:
        (WebKit::pluginProxyMap):
        * Plugins/Hosted/NetscapePluginInstanceProxy.mm:
        (WebKit::globalExceptionString):
        * Plugins/Hosted/ProxyInstance.mm:
        (WebKit::proxyClass):
        * Plugins/WebNetscapePluginStream.mm:
        (streams):
        * Storage/WebDatabaseManager.mm:
        (transactionBackgroundTaskIdentifierLock):
        * WebCoreSupport/WebUserMediaClient.mm:
        (userMediaCheckMap):
        * WebView/WebHTMLRepresentation.mm:
        (regExpForLabels):
        * WebView/WebView.mm:
        (aeDescFromJSValue):

2016-01-09  Dan Bernstein  <mitz@apple.com>

        [Cocoa] Allow overriding the frameworks directory independently of using a staging install path
        https://bugs.webkit.org/show_bug.cgi?id=152926

        Reviewed by Tim Horton.

        Introduce a new build setting, WK_OVERRIDE_FRAMEWORKS_DIR. When not empty, it determines
        where the frameworks are installed. Setting USE_STAGING_INSTALL_PATH to YES sets
        WK_OVERRIDE_FRAMEWORKS_DIR to $(SYSTEM_LIBRARY_DIR)/StagedFrameworks/Safari.

        Account for the possibility of WK_OVERRIDE_FRAMEWORKS_DIR containing spaces.

        * Configurations/WebKitLegacy.xcconfig:
        - Replace STAGED_FRAMEWORKS_SEARCH_PATH in FRAMEWORK_SEARCH_PATHS with
          WK_OVERRIDE_FRAMEWORKS_DIR and add quotes to account for spaces.
        - Define WEBKIT_LEGACY_FRAMEWORKS_DIR, PRODUCTION_FRAMEWORKS_DIR, and
          WEBCORE_PRIVATE_HEADERS_DIR based on WK_OVERRIDE_FRAMEWORKS_DIR.

        * MigrateHeaders.make:
          Use a symlink under BUILT_PRODUCTS_DIR to the WebCore Private Headers. Use a
          BUILT_PRODUCTS_DIR-based path to the framework instead of a TARGET_BUILD_DIR-based one in
          order to avoid spaces.
        * migrate-headers.sh:
          Make the symlink to WEBCORE_PRIVATE_HEADERS_DIR that the makefile now uses.

2016-01-07  Tim Horton  <timothy_horton@apple.com>

        Can't play inline video in a stock WK1 WebView on Mac
        https://bugs.webkit.org/show_bug.cgi?id=152860

        Rubber-stamped by Jer Noble.

        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):
        The default for this preference is supposed to be NO on Mac. It is in
        Settings.in, and in WebKit2, but this one place got it wrong.

2016-01-06  Simon Fraser  <simon.fraser@apple.com>

        Add a setting and preferences to enable display-list drawing. Does nothing yet.
        https://bugs.webkit.org/show_bug.cgi?id=152807

        Reviewed by Zalan Bujtas.
        
        WK1 pref for display-list drawing, defaults to off.

        * WebView/WebPreferenceKeysPrivate.h:
        * WebView/WebPreferences.mm:
        (+[WebPreferences initialize]):
        (-[WebPreferences displayListDrawingEnabled]):
        (-[WebPreferences setDisplayListDrawingEnabled:]):
        * WebView/WebPreferencesPrivate.h:
        * WebView/WebView.mm:
        (-[WebView initSimpleHTMLDocumentWithStyle:frame:preferences:groupName:]):
        (-[WebView _preferencesChanged:]):

2016-01-06  Simon Fraser  <simon.fraser@apple.com>

        [iOS] Revert overflow:hidden on the body affecting viewport scale (r186786)
        https://bugs.webkit.org/show_bug.cgi?id=152803
        rdar://problem/22242515

        Reviewed by Tim Horton.

        * WebView/WebView.mm:
        (-[WebView _contentsSizeRespectingOverflow]): Keep this function which is used
        by UIKit, but change the implementation to just return the document size.

2016-01-04  Tim Horton  <timothy_horton@apple.com>

        Turn on gesture events when building for Yosemite
        https://bugs.webkit.org/show_bug.cgi?id=152704
        rdar://problem/24042472

        Reviewed by Anders Carlsson.

        * Configurations/FeatureDefines.xcconfig:

2015-12-31  Andy Estes  <aestes@apple.com>

        Replace WTF::move with WTFMove
        https://bugs.webkit.org/show_bug.cgi?id=152601

        Reviewed by Brady Eidson.

        * History/WebHistoryItem.mm:
        (-[WebHistoryItem initFromDictionaryRepresentation:]):
        * Plugins/Hosted/HostedNetscapePluginStream.mm:
        (WebKit::HostedNetscapePluginStream::willSendRequest):
        * Plugins/Hosted/NetscapePluginInstanceProxy.h:
        (WebKit::NetscapePluginInstanceProxy::setCurrentReply):
        * Plugins/WebNetscapePluginStream.mm:
        (WebNetscapePluginStream::willSendRequest):
        * Plugins/WebNetscapePluginView.mm:
        (-[WebNetscapePluginView scheduleTimerWithInterval:repeat:timerFunc:]):
        * WebCoreSupport/WebContextMenuClient.mm:
        (WebContextMenuClient::imageForCurrentSharingServicePickerItem):
        * WebCoreSupport/WebFrameLoaderClient.mm:
        (WebFrameLoaderClient::dispatchDecidePolicyForResponse):
        (WebFrameLoaderClient::dispatchDecidePolicyForNewWindowAction):
        (WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
        (WebFrameLoaderClient::dispatchWillSubmitForm):
        (WebFrameLoaderClient::createDocumentLoader):
        * WebCoreSupport/WebInspectorClient.mm:
        (WebInspectorFrontendClient::WebInspectorFrontendClient):
        * WebView/WebArchive.mm:
        (-[WebArchive initWithMainResource:subresources:subframeArchives:]):
        * WebView/WebFrame.mm:
        (-[WebFrame _documentFragmentWithNodesAsParagraphs:]):
        * WebView/WebHTMLView.mm:
        (-[WebHTMLView _applyEditingStyleToSelection:withUndoAction:]):
        * WebView/WebMediaPlaybackTargetPicker.mm:
        (WebMediaPlaybackTargetPicker::setPlaybackTarget):
        * WebView/WebView.mm:
        (-[WebView _loadBackForwardListFromOtherView:]):
        (+[WebView _addUserScriptToGroup:world:source:url:whitelist:blacklist:injectionTime:injectedFrames:]):
        (+[WebView _addUserStyleSheetToGroup:world:source:url:whitelist:blacklist:injectedFrames:]):

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

        Fix the iOS and EFL builds, after an over-eager commit-queue commit.

        * History/WebHistoryItem.mm:
        (-[WebHistoryItem initFromDictionaryRepresentation:]):

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

        Fix naming in HistoryItem to refer to scrollPositions
        https://bugs.webkit.org/show_bug.cgi?id=152646

        Reviewed by Zalan Bujtas.

        HistoryItem stores a scrollPosition, so call it that.

        * History/WebHistoryItem.mm:
        (-[WebHistoryItem scrollPoint]):

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

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

        Reviewed by Alexey Proskuryakov.

        * Info.plist:

2015-12-31  David Kilzer  <ddkilzer@apple.com>

        Stop using USE(CFNETWORK) path on iOS
        https://bugs.webkit.org/show_bug.cgi?id=142540

        Step 1/2: Do everything but turn off USE(CFNETWORK) internally.

        Original patch by Antti Koivisto <antti@apple.com> on 2015-03-10
        Reviewed by Daniel Bates.

        * Misc/WebDownload.h: Add header guard to make
        NSURLDownloadSPI.h work when pre-declaring NSURLDownload object.
        * Misc/WebKitVersionChecks.h: Define
        WEBKIT_FIRST_VERSION_WITH_LOADING_DURING_COMMON_RUNLOOP_MODES
        for iOS.
        * WebView/WebView.mm:
        (-[WebView _commonInitializationWithFrameName:groupName:]): Use
        the correct runloop on iOS.
        * WebView/WebViewPrivate.h:
        (-[WebView(WebPendingPublic) scheduleInRunLoop:forMode:]):
        (-[WebView(WebPendingPublic) unscheduleFromRunLoop:forMode:]):
        - These are available on iOS now.

2015-12-31  Simon Fraser  <simon.fraser@apple.com>

        Clarify that scrollPositionChangedViaPlatformWidget takes offsets
        https://bugs.webkit.org/show_bug.cgi?id=152606

        Reviewed by Zalan Bujtas.

        scrollPositionChangedViaPlatformWidget actually gets scroll offsets, since the
        values we get from AppKit are zero-based, so rename to scrollOffsetChangedViaPlatformWidget().
        
        Change ScrollableArea's setScrollPosition() and requestScrollPositionUpdate() to take
        ScrollPositions.
        
        Add a FIXME noting that willRevealEdge events are probably broken in RTL documents.

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

2015-12-22  Andy Estes  <aestes@apple.com>

        [CF] Replace CFNetwork-related WebKitSystemInterface calls with SPI
        https://bugs.webkit.org/show_bug.cgi?id=152463

        Reviewed by Alexey Proskuryakov.

        Replaced WebkitSystemInterface calls that wrapped CFNetwork SPI with direct calls to SPI that is now forward
        declared in CFNetworkSPI.h.

        * Plugins/Hosted/HostedNetscapePluginStream.mm:
        (WebKit::HostedNetscapePluginStream::didReceiveResponse):
        * Plugins/WebNetscapePluginStream.mm:
        (WebNetscapePluginStream::didReceiveResponse):
        * WebCoreSupport/WebSystemInterface.mm:
        (InitWebCoreSystemInterface): Deleted.
        * WebView/WebPreferences.mm:
        (+[WebPreferences _setCurrentNetworkLoaderSessionCookieAcceptPolicy:]):

2015-12-20  Dan Bernstein  <mitz@apple.com>

        Remove unused setToolbarHeight
        https://bugs.webkit.org/show_bug.cgi?id=152466

        Reviewed by Darin Adler.

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

2015-12-19  Dan Bernstein  <mitz@apple.com>

        [Mac] WebKit contains dead source code for OS X Mavericks and earlier
        https://bugs.webkit.org/show_bug.cgi?id=152462

        Reviewed by Alexey Proskuryakov.

        - Removed build setting definitions for OS X 10.9 and earlier, and simplified defintions
          that became uniform across all OS X versions as a result:

        * Configurations/DebugRelease.xcconfig:
        * Configurations/FeatureDefines.xcconfig:
        * Configurations/Version.xcconfig:
        * Configurations/WebKitLegacy.xcconfig:

        - Simplified expressions involving __MAC_OS_X_VERSION_MIN_REQUIRED and removed code that was
          never getting compiled:

        * WebCoreSupport/WebInspectorClient.mm:
        * WebView/WebDynamicScrollBarsView.mm:
        * WebView/WebHTMLView.mm:
        * WebView/WebImmediateActionController.h:
        * WebView/WebImmediateActionController.mm:
        * WebView/WebView.mm:
        * WebView/WebViewData.h:
        * WebView/WebViewData.mm:
        * WebView/WebViewInternal.h:

2015-12-17  Tim Horton  <timothy_horton@apple.com>

        Data detector yellow highlight location is vertically mirrored in WebKit1
        https://bugs.webkit.org/show_bug.cgi?id=152216
        <rdar://problem/23848003>

        Reviewed by Darin Adler.

        * WebView/WebImmediateActionController.mm:
        (-[WebImmediateActionController _animationControllerForDataDetectedText]):
        Match the conversion we do at every other WK1 TextIndicator construction.

2015-12-16  Youenn Fablet  <youenn.fablet@crf.canon.fr>

        [Fetch API] Add fetch API compile time flag
        https://bugs.webkit.org/show_bug.cgi?id=152254

        Reviewed by Darin Adler.

        * Configurations/FeatureDefines.xcconfig:

2015-12-13  Tim Horton  <timothy_horton@apple.com>

        Adopt CGIOSurfaceContextCreateImageReference to avoid unnecessary readback
        https://bugs.webkit.org/show_bug.cgi?id=150988
        <rdar://problem/18993594>

        Reviewed by Darin Adler.

        * WebCoreSupport/WebContextMenuClient.mm:
        (WebContextMenuClient::imageForCurrentSharingServicePickerItem):
        Adopt sinkIntoImage and drawConsumingImageBuffer in a few places.

2015-12-11  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] Add a setting to allow the mock media capture devices to be enabled and disabled
        https://bugs.webkit.org/show_bug.cgi?id=152197

        Reviewed by Dean Jackson.

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

2015-12-11  Beth Dakin  <bdakin@apple.com>

        _touchEventRegions should return regions in the view's coordinates
        https://bugs.webkit.org/show_bug.cgi?id=152189
        -and corresponding-
        rdar://problem/23188605

        Reviewed by Dan Bernstein.

        The comment here was actually out of date. It claimed that touch rectangles 
        are in the coordinate system of the document, but we had actually changed 
        them to be in the view’s coordinate system in order to fix issues with 
        handling touch events in UIWebView. But now we are going back to having the 
        touch rectangles be in the document’s coordinate system, so we should fix the 
        rtl bugs here by converting to view coordinates before handing the rects off 
        to iOS WK1 clients.
        * WebView/WebView.mm:
        (-[WebView _touchEventRegions]):

2015-12-10  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] Expose media capture devices persistent permissions to WebCore
        https://bugs.webkit.org/show_bug.cgi?id=152087

        Reviewed by Chris Dumez.

        Add methods and helpers for WK1 permission checker interface.
        * WebCoreSupport/WebUserMediaClient.h:
        * WebCoreSupport/WebUserMediaClient.mm:
        (userMediaRequestsMap):
        (AddRequestToRequestMap):
        (RemoveRequestFromRequestMap):
        (userMediaCheckMap):
        (AddPermissionCheckToMap):
        (RemovePermissionCheckFromMap):
        (WebUserMediaClient::WebUserMediaClient):
        (WebUserMediaClient::requestUserMediaAccess):
        (WebUserMediaClient::cancelUserMediaAccessRequest):
        (WebUserMediaClient::checkUserMediaPermission):
        (WebUserMediaClient::cancelUserMediaPermissionCheck):
        (-[WebUserMediaPolicyListener allow]):
        (-[WebUserMediaPolicyListener deny]):
        (-[WebUserMediaPolicyCheckerListener initWithUserMediaPermissionCheck:]):
        (-[WebUserMediaPolicyCheckerListener cancelUserMediaPermissionCheck]):
        (-[WebUserMediaPolicyCheckerListener allow]):
        (-[WebUserMediaPolicyCheckerListener deny]):
        (-[WebUserMediaPolicyCheckerListener denyOnlyThisRequest]):
        (-[WebUserMediaPolicyCheckerListener shouldClearCache]):
        (AddRequestToMap): Deleted.
        (RemoveRequestFromMap): Deleted.
        * WebView/WebUIDelegatePrivate.h:

2015-12-08  Beth Dakin  <bdakin@apple.com>

        Follow-up to:
        Add support for WebViewAdditions
        https://bugs.webkit.org/show_bug.cgi?id=151967

        Rubber-stamped by Dan Bernstein.

        We should use the Web prefix for all category names.
        * WebView/WebView.mm:
        (-[WebView updateWebViewAdditions]):
        * WebView/WebViewInternal.h:

2015-12-08  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] Rename UserMediaClient and UserMediaController methods
        https://bugs.webkit.org/show_bug.cgi?id=152001

        Reviewed by Brady Eidson.

        * WebCoreSupport/WebUserMediaClient.h:
        * WebCoreSupport/WebUserMediaClient.mm:
        (WebUserMediaClient::pageDestroyed):
        (WebUserMediaClient::requestUserMediaAccess):
        (WebUserMediaClient::cancelUserMediaAccessRequest):
        (-[WebUserMediaPolicyListener initWithUserMediaRequest:]):
        (-[WebUserMediaPolicyListener cancelUserMediaAccessRequest]):
        (WebUserMediaClient::requestPermission): Deleted.
        (WebUserMediaClient::cancelRequest): Deleted.
        (-[WebUserMediaPolicyListener cancelRequest]): Deleted.

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

        Build fix after r193675.

        * WebView/WebViewData.h:

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

        Build fix after r193661.

        Reviewed by Beth Dakin.

        * WebView/WebViewData.h:

2015-12-07  Beth Dakin  <bdakin@apple.com>

        Add support for WebViewAdditions
        https://bugs.webkit.org/show_bug.cgi?id=151967

        Reviewed by Sam Weinig.

        * WebCoreSupport/WebEditorClient.mm:
        (WebEditorClient::respondToChangedSelection):
        * WebView/WebView.mm:
        (-[WebView _commonInitializationWithFrameName:groupName:]):
        (-[WebView updateWebViewAdditions]):
        * WebView/WebViewData.h:
        * WebView/WebViewInternal.h:

2015-12-07  Beth Dakin  <bdakin@apple.com>

        Hook up request and show for typing candidates in WK1
        https://bugs.webkit.org/show_bug.cgi?id=151831
        -and corresponding-
        <rdar://problem/23751214>

        Reviewed by Enrica Casucci.

        Add member variables to WebEditorClient. One is a WeakPtrFactory for the 
        asynchronous handlers, and the other caches the VisibleSelection at the time 
        candidates were requested so that we can make sure the candidates are still 
        valid once we receive them.
        * WebCoreSupport/WebEditorClient.h:
        * WebCoreSupport/WebEditorClient.mm:
        (WebEditorClient::WebEditorClient):

        Call [NSSpellChecker requestCandidatesForSelectedRange] with the appropriate 
        parameters.
        (WebEditorClient::requestCandidatesForSelection):

        Two helpers to compute information that we need for both of the handlers 
        below.
        (candidateRangeForSelection):
        (candidateWouldReplaceText):

        In this handler, we just need to call [NSSpellChecker showCandidates] with 
        the appropriate parameters.
        (WebEditorClient::handleRequestedCandidates):

        Once a candidate is accepted, it should be inserted in the right way.
        (WebEditorClient::handleAcceptedCandidate):

2015-12-03  Jer Noble  <jer.noble@apple.com>

        Expose WebCore's InvisibleAutoplayNotPermitted setting to WebKit & WebKit2
        https://bugs.webkit.org/show_bug.cgi?id=151830

        Reviewed by Anders Carlsson.

        Add a new WebPreferences property invisibleAutoplayNotPermitted.

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

2015-12-03  Anders Carlsson  <andersca@apple.com>

        Remove Objective-C GC support
        https://bugs.webkit.org/show_bug.cgi?id=151819
        rdar://problem/23746991

        Reviewed by Dan Bernstein.

        * Carbon/CarbonWindowAdapter.mm:
        (+[CarbonWindowAdapter initialize]): Deleted.
        (-[CarbonWindowAdapter finalize]): Deleted.
        * Configurations/Base.xcconfig:
        * History/WebBackForwardList.mm:
        (+[WebBackForwardList initialize]): Deleted.
        (-[WebBackForwardList finalize]): Deleted.
        * History/WebHistory.mm:
        (-[WebHistoryPrivate finalize]): Deleted.
        (-[WebHistory finalize]): Deleted.
        * History/WebHistoryItem.mm:
        (+[WebHistoryItem initialize]): Deleted.
        (-[WebHistoryItem finalize]): Deleted.
        * Misc/WebElementDictionary.mm:
        (+[WebElementDictionary initialize]): Deleted.
        (-[WebElementDictionary finalize]): Deleted.
        * Plugins/Hosted/WebHostedNetscapePluginView.mm:
        (+[WebHostedNetscapePluginView initialize]): Deleted.
        * Plugins/WebBaseNetscapePluginView.mm:
        (-[WebBaseNetscapePluginView finalize]): Deleted.
        * Plugins/WebBasePluginPackage.mm:
        (-[WebBasePluginPackage finalize]): Deleted.
        * Plugins/WebNetscapePluginView.mm:
        (+[WebNetscapePluginView initialize]): Deleted.
        (-[WebNetscapePluginView finalize]): Deleted.
        * Plugins/WebPluginContainerCheck.mm:
        (-[WebPluginContainerCheck finalize]): Deleted.
        * WebCoreSupport/WebEditorClient.mm:
        (+[WebUndoStep initialize]): Deleted.
        (-[WebUndoStep finalize]): Deleted.
        * WebCoreSupport/WebFrameLoaderClient.mm:
        * WebCoreSupport/WebOpenPanelResultListener.mm:
        (-[WebOpenPanelResultListener finalize]): Deleted.
        * WebCoreSupport/WebSecurityOrigin.mm:
        (-[WebSecurityOrigin finalize]): Deleted.
        * WebView/WebArchive.mm:
        (+[WebArchivePrivate initialize]): Deleted.
        * WebView/WebDataSource.mm:
        (+[WebDataSource initialize]): Deleted.
        (-[WebDataSource finalize]): Deleted.
        * WebView/WebDynamicScrollBarsView.mm:
        (-[WebDynamicScrollBarsView finalize]): Deleted.
        * WebView/WebFrame.mm:
        (-[WebFramePrivate setWebFrameView:]):
        (-[WebFramePrivate finalize]): Deleted.
        (-[WebFrame finalize]): Deleted.
        * WebView/WebFrameView.mm:
        (-[WebFrameView finalize]): Deleted.
        * WebView/WebHTMLRepresentation.mm:
        (-[WebHTMLRepresentation finalize]): Deleted.
        * WebView/WebHTMLView.mm:
        (+[WebHTMLViewPrivate initialize]):
        (-[WebHTMLViewPrivate finalize]): Deleted.
        (+[WebHTMLView initialize]): Deleted.
        (-[WebHTMLView finalize]): Deleted.
        * WebView/WebResource.mm:
        (+[WebResourcePrivate initialize]): Deleted.
        (-[WebResourcePrivate finalize]): Deleted.
        * WebView/WebTextIterator.mm:
        (+[WebTextIteratorPrivate initialize]): Deleted.
        * WebView/WebView.mm:
        (-[WebView finalize]): Deleted.
        * WebView/WebViewData.mm:
        (+[WebViewPrivate initialize]): Deleted.
        (-[WebViewPrivate init]): Deleted.
        (-[WebViewPrivate finalize]): Deleted.

2015-12-02  Antti Koivisto  <antti@apple.com>

        Move ResourceLoadScheduler to WebKit1
        https://bugs.webkit.org/show_bug.cgi?id=151743

        Reviewed by Alex Christensen.

        * Plugins/Hosted/HostedNetscapePluginStream.mm:
        (WebKit::HostedNetscapePluginStream::start):
        (WebKit::HostedNetscapePluginStream::stop):
        * Plugins/WebNetscapePluginStream.mm:
        (WebNetscapePluginStream::start):
        (WebNetscapePluginStream::stop):
        * WebCoreSupport/WebPlatformStrategies.h:
        * WebCoreSupport/WebPlatformStrategies.mm:
        (WebPlatformStrategies::createLoaderStrategy):
        (WebPlatformStrategies::createPasteboardStrategy):
        (WebPlatformStrategies::createPluginStrategy):
        (WebPlatformStrategies::createBlobRegistry):
        (WebPlatformStrategies::cookiesForDOM):
        * WebView/WebView.mm:
        (-[WebView _dispatchPendingLoadRequests]):
        (+[WebView _setLoadResourcesSerially:]):
        (+[WebView _HTTPPipeliningEnabled]):

2015-12-01  Yusuke Suzuki  <utatane.tea@gmail.com>

        [ES6] Implement LLInt/Baseline Support for ES6 Generators and enable this feature
        https://bugs.webkit.org/show_bug.cgi?id=150792

        Reviewed by Saam Barati.

        * Configurations/FeatureDefines.xcconfig:

2015-12-01  Commit Queue  <commit-queue@webkit.org>

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

        JSC tests for this change are failing on 32 and 64-bit bots
        (Requested by ryanhaddad on #webkit).

        Reverted changeset:

        "[ES6] Implement LLInt/Baseline Support for ES6 Generators and
        enable this feature"
        https://bugs.webkit.org/show_bug.cgi?id=150792
        http://trac.webkit.org/changeset/192914

2015-12-01  Yusuke Suzuki  <utatane.tea@gmail.com>

        [ES6] Implement LLInt/Baseline Support for ES6 Generators and enable this feature
        https://bugs.webkit.org/show_bug.cgi?id=150792

        Reviewed by Saam Barati.

        * Configurations/FeatureDefines.xcconfig:

2015-11-30  Katlyn Graff  <kgraff@apple.com>

        Rename ActiveDOMObject/DOMWindow PageCacheSuspension code to support more reasons for suspension
        https://bugs.webkit.org/show_bug.cgi?id=151677

        Reviewed by Ryosuke Niwa.

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

2015-11-30  Jiewen Tan  <jiewen_tan@apple.com>

        Null dereference loading Blink layout test http/tests/misc/detach-during-notifyDone.html
        https://bugs.webkit.org/show_bug.cgi?id=149309
        <rdar://problem/22748363>

        Reviewed by Brent Fulgham.

        * WebView/WebDataSource.mm:
        (WebDataSourcePrivate::~WebDataSourcePrivate):
        Refine the assertion to treat <rdar://problem/9673866>.

== Rolled over to ChangeLog-2015-11-21 ==
