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