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