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

        Web Inspector: rework frontend agent construction to allow commands/events to be controlled by the related target's type
        https://bugs.webkit.org/show_bug.cgi?id=200384
        <rdar://problem/53850352>

        Reviewed by Joseph Pecoraro.

        * WebCoreSupport/WebInspectorClient.h:
        (WebInspectorFrontendClient::debuggableType const): Added.
        Split the `Web` debuggable type into `Page` (WebCore::Page) and `WebPage` (WebKit::WebPageProxy).

2019-10-16  Chris Dumez  <cdumez@apple.com>

        Rename PageCache to BackForwardCache
        https://bugs.webkit.org/show_bug.cgi?id=203048

        Reviewed by Alex Christensen.

        Rename PageCache to BackForwardCache for clarity and consistency with the UIProcess's WebBackForwardCache.

        * BackForwardList.cpp:
        (BackForwardList::addItem):
        (BackForwardList::setCapacity):
        * WebCoreStatistics.cpp:
        (WebCoreStatistics::cachedPageCount):
        (WebCoreStatistics::cachedFrameCount):
        * WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebFrameLoaderClient::didRestoreFromBackForwardCache):
        * WebCoreSupport/WebFrameLoaderClient.h:
        * WebCoreSupport/WebVisitedLinkStore.cpp:
        * WebFrame.cpp:
        (WebFrame::accessible const):
        * WebView.cpp:
        (WebView::setCacheModel):
        (WebView::notifyPreferencesChanged):

2019-10-15  Wenson Hsieh  <wenson_hsieh@apple.com>

        REGRESSION: editing/async-clipboard/clipboard-interfaces.html is failing in WebKit1
        https://bugs.webkit.org/show_bug.cgi?id=202940
        <rdar://problem/56262298>

        Reviewed by Ryosuke Niwa.

        Add support for the asyncClipboardAPIEnabled feature flag in legacy WebKit on Windows.

        * Interfaces/IWebPreferencesPrivate.idl:
        * WebPreferenceKeysPrivate.h:
        * WebPreferences.cpp:
        (WebPreferences::initializeDefaultSettings):
        (WebPreferences::asyncClipboardAPIEnabled):
        (WebPreferences::setAsyncClipboardAPIEnabled):
        * WebPreferences.h:
        * WebView.cpp:
        (WebView::notifyPreferencesChanged):

2019-10-14  Chris Dumez  <cdumez@apple.com>

        [WK2] Have WebBackForwardCache class coordinate page caching in all WebProcesses
        https://bugs.webkit.org/show_bug.cgi?id=202929
        <rdar://problem/56250421>

        Reviewed by Alex Christensen.

        * WebCoreSupport/WebFrameLoaderClient.cpp:
        * WebCoreSupport/WebFrameLoaderClient.h:

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

        requestIdleCallback is not enabled in DumpRenderTree on Windows
        https://bugs.webkit.org/show_bug.cgi?id=202876

        Address the forgotten review comment.

        * WebPreferenceKeysPrivate.h:

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

        requestIdleCallback is not enabled in DumpRenderTree on Windows
        https://bugs.webkit.org/show_bug.cgi?id=202876

        Reviewed by Wenson Hsieh.

        Added the missing plumbing to enable requestIdleCallback.

        * Interfaces/IWebPreferencesPrivate.idl:
        * WebPreferenceKeysPrivate.h:
        * WebPreferences.cpp:
        (WebPreferences::initializeDefaultSettings):
        (WebPreferences::requestIdleCallbackEnabled):
        (WebPreferences::setRequestIdleCallbackEnabled):
        * WebPreferences.h:
        * WebView.cpp:
        (WebView::notifyPreferencesChanged):

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

        Rename SchemeRegistry to LegacySchemeRegistry
        https://bugs.webkit.org/show_bug.cgi?id=202586

        Reviewed by Tim Horton.

        * WebView.cpp:
        (WebView::registerURLSchemeAsLocal):
        (WebView::setDomainRelaxationForbiddenForURLScheme):
        (WebView::registerURLSchemeAsSecure):
        (WebView::registerURLSchemeAsAllowingDatabaseAccessInPrivateBrowsing):

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

        Pages using WebGLRenderingContext fail to enter the back/forward cache
        https://bugs.webkit.org/show_bug.cgi?id=202318
        <rdar://problem/55783612>

        Reviewed by Tim Horton.

        * WebView.cpp:
        (WindowCloseTimer::WindowCloseTimer):
        (WindowCloseTimer::contextDestroyed):
        * WebView.h:

2019-09-25  Fujii Hironori  <Hironori.Fujii@sony.com>

        Unreviewed build fix for Windows ports.
        https://bugs.webkit.org/show_bug.cgi?id=202125
        <rdar://problem/14944104>

        * WebCoreSupport/WebEditorClient.h: Added missing subFrameScrollPositionChanged.

2019-09-24  Fujii Hironori  <Hironori.Fujii@sony.com>

        Remove SchemeRegistry's list of URL schemes allowing local storage in private browsing, which is unused
        https://bugs.webkit.org/show_bug.cgi?id=202181

        Unreviewed build fix for Windows ports.

        ..\..\Source\WebKitLegacy\win\WebView.cpp(7342): error C2039: 'registerURLSchemeAsAllowingLocalStorageAccessInPrivateBrowsing': is not a member of 'WebCore::SchemeRegistry'

        * WebView.cpp:
        (WebView::registerURLSchemeAsAllowingLocalStorageAccessInPrivateBrowsing): Removed calling the removed function.

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

        Reduce use of SessionID::defaultSessionID() in WebKit
        https://bugs.webkit.org/show_bug.cgi?id=202080

        Reviewed by Alex Christensen.

        * WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebFrameLoaderClient::convertMainResourceLoadToDownload):
        * WebCoreSupport/WebFrameLoaderClient.h:

2019-09-18  Chris Dumez  <cdumez@apple.com>

        BlobRegistry no longer needs SessionIDs
        https://bugs.webkit.org/show_bug.cgi?id=201936

        Reviewed by Geoffrey Garen.

        BlobRegistry no longer needs SessionIDs, now that we have a single session per WebProcess.

        * WebCoreSupport/WebPlatformStrategies.cpp:

2019-09-16  Fujii Hironori  <Hironori.Fujii@sony.com>

        [WinCairo][curl] Don't compile unused CertificateCFWin.cpp
        https://bugs.webkit.org/show_bug.cgi?id=201860

        Reviewed by Alex Christensen.

        * WebMutableURLRequest.cpp: Include <WebCore/CertificateCFWin.h> only if USE(CFURLCONNECTION).
        (WebMutableURLRequest::setClientCertificate): Don't use PCCERT_CONTEXT for curl port which is defined in WinCrypt.

2019-09-13  Fujii Hironori  <Hironori.Fujii@sony.com>

        [WinCairo][WK1] Accelerated Compositing can't be disabled by using WebPreferences::setAcceleratedCompositingEnabled
        https://bugs.webkit.org/show_bug.cgi?id=201749

        Reviewed by Don Olmstead.

        WebPreferences::acceleratedCompositingEnabled always returned TRUE
        for !USE(CA). It should reflect the pref value set by
        setAcceleratedCompositingEnabled.

        * WebPreferences.cpp:
        (WebPreferences::initializeDefaultSettings): Set kCFBooleanTrue to WebKitAcceleratedCompositingEnabledPreferenceKey even for !USE(CG).
        (WebPreferences::acceleratedCompositingEnabled): Return the pref value for !USE(CA).

2019-09-12  Fujii Hironori  <Hironori.Fujii@sony.com>

        [Win][WK1] Invert Colors inverts a part of the viewport in high DPI
        https://bugs.webkit.org/show_bug.cgi?id=201719

        Reviewed by Don Olmstead.

        * WebView.cpp:
        (WebView::paintWithDirect2D):
        (WebView::paintIntoBackingStore):
        Call gc.restore() after inverting the dirty rect.

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

        [Win][WebKitLegacy][Clang] WebKit.h warning: 'IWebEditingDelegate2::shouldInsertNode' hides overloaded virtual function [-Woverloaded-virtual]
        https://bugs.webkit.org/show_bug.cgi?id=192581
        <rdar://problem/46651605>

        Reviewed by Alex Christensen.

        WebKitLegacy COM interfaces have same name methods within the old
        and new interfaces. For example, both IWebEditingDelegate and
        IWebEditingDelegate2 interfaces have 'shouldInsertNode' method.
        This is a part of public API, can't be renamed.

        * Interfaces/IWebEditingDelegate.idl:
        * Interfaces/IWebViewPrivate.idl:
        Added #pragma to ignore the warning.

2019-09-09  Fujii Hironori  <Hironori.Fujii@sony.com>

        [Win][WebKitLegacy] WebKitDLL.h(53,37): warning: 'gClassNameCount' has C-linkage specified, but returns user-defined type 'HashCountedSet<WTF::String> &' which is incompatible with C [-Wreturn-type-c-linkage]
        https://bugs.webkit.org/show_bug.cgi?id=201601

        Reviewed by Ross Kirsling.

        Fixed a clang-cl warning. Names which aren't dllexport-ed don't
        need to be in a extern "C" scope because they aren't exported to
        other DLLs.

        * WebKitDLL.h: Moved some variables and gClassNameCount() out of extern "C" scope.

2019-09-06  Alex Christensen  <achristensen@webkit.org>

        When disabling legacy private browsing for testing, change the SessionID back to what it was, not the defaultSessionID
        https://bugs.webkit.org/show_bug.cgi?id=201480

        Reviewed by Youenn Fablet.

        * WebView.cpp:
        (WebView::notifyPreferencesChanged):

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

        Add runtime flag for lazy image loading
        https://bugs.webkit.org/show_bug.cgi?id=199794

        Reviewed by Frédéric Wang.

        Remove parts of r248409 that were meant for WK1 since
        lazy image loading is WK2 only.

        * Interfaces/IWebPreferencesPrivate.idl:
        * WebPreferenceKeysPrivate.h:
        * WebPreferences.cpp:
        (WebPreferences::initializeDefaultSettings):
        (WebPreferences::setResizeObserverEnabled):
        (WebPreferences::lazyImageLoadingEnabled): Deleted.
        (WebPreferences::setLazyImageLoadingEnabled): Deleted.
        * WebPreferences.h:
        * WebView.cpp:
        (WebView::notifyPreferencesChanged):

2019-09-05  Fujii Hironori  <Hironori.Fujii@sony.com>

        [WinCairo][WK1] ASSERTION FAILED: !isAcceleratedCompositing() in WebView::updateBackingStore
        https://bugs.webkit.org/show_bug.cgi?id=201493

        Reviewed by Don Olmstead.

        WebView::paint switches painting code path by checking accelerated
        compositing enabled. However, accelerated compositing could be
        enabled after the checking.

        WebView::paint called WebView::paintCompositedContentToHDC and
        WebCore::Page::updateRendering.
        WebView::paintCompositedContentToHDC checks accelerated
        compositing enabled. Then, WebCore::Page::updateRendering executes
        JavaScript and accelerated compositing could be enabled.

        * WebView.cpp:
        (WebView::paint): Call WebCore::Page::updateRendering the
        beginning of the function.

2019-09-03  Antti Koivisto  <antti@apple.com>

        Remove redundant painting phase arguments from GraphicsLayerClient functions
        https://bugs.webkit.org/show_bug.cgi?id=201443

        Reviewed by Simon Fraser.

        * WebView.cpp:
        (WebView::paintContents):
        * WebView.h:

2019-08-27  Mark Lam  <mark.lam@apple.com>

        Refactor to use VM& instead of VM* at as many places as possible.
        https://bugs.webkit.org/show_bug.cgi?id=201172

        Reviewed by Yusuke Suzuki.

        * WebFrame.cpp:
        (WebFrame::stringByEvaluatingJavaScriptInScriptWorld):

2019-08-21  Ryosuke Niwa  <rniwa@webkit.org>

        Put keygen element behind a runtime flag and disable it by default
        https://bugs.webkit.org/show_bug.cgi?id=200850

        Reviewed by Antti Koivisto.

        * Interfaces/IWebPreferencesPrivate.idl:
        * WebPreferenceKeysPrivate.h:
        * WebPreferences.cpp:
        (WebPreferences::keygenElementEnabled):
        (WebPreferences::setKeygenElementEnabled):
        * WebPreferences.h:
        * WebView.cpp:
        (WebView::notifyPreferencesChanged):

2019-08-19  Fujii Hironori  <Hironori.Fujii@sony.com>

        [WinCairo][WK1] A browser window starts as an inactive window because AcceleratedCompositingContext::acceleratedCompositingAvailable creates temporary window
        https://bugs.webkit.org/show_bug.cgi?id=200493

        Reviewed by Ross Kirsling.

        Reverted r179962.

        * WebCoreSupport/AcceleratedCompositingContext.cpp:
        (AcceleratedCompositingContext::acceleratedCompositingAvailable): Deleted.
        * WebCoreSupport/AcceleratedCompositingContext.h:
        * WebView.cpp:
        (WebView::notifyPreferencesChanged):

2019-08-19  Sihui Liu  <sihui_liu@apple.com>

        Remove IDB-specific quota
        https://bugs.webkit.org/show_bug.cgi?id=196545
        <rdar://problem/54201783>

        Reviewed by Youenn Fablet.

        * Interfaces/IWebDatabaseManager.idl:
        * WebDatabaseManager.cpp:
        (WebDatabaseManager::setIDBPerOriginQuota): Deleted.
        * WebDatabaseManager.h:

2019-08-18  Yusuke Suzuki  <ysuzuki@apple.com>

        [WTF] Add makeUnique<T>, which ensures T is fast-allocated, makeUnique / makeUniqueWithoutFastMallocCheck part
        https://bugs.webkit.org/show_bug.cgi?id=200620

        Reviewed by Geoffrey Garen.

        * FullscreenVideoController.cpp:
        (FullscreenVideoController::FullscreenVideoController):
        * Plugins/PluginStream.cpp:
        (WebCore::PluginStream::didReceiveData):
        * Plugins/PluginView.cpp:
        (WebCore::PluginView::load):
        * Plugins/PluginViewWin.cpp:
        (WebCore::PluginView::wndProc):
        * WebCoreSupport/WebChromeClient.cpp:
        (WebChromeClient::WebChromeClient):
        * WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebFrameLoaderClient::WebFrameLoaderClient):
        (WebFrameLoaderClient::savePlatformDataToCachedFrame):
        * WebCoreSupport/WebInspectorClient.cpp:
        (WebInspectorClient::openLocalFrontend):
        (WebInspectorClient::highlight):
        * WebElementPropertyBag.cpp:
        (WebElementPropertyBag::WebElementPropertyBag):
        * WebHistoryItem.cpp:
        (WebHistoryItem::initFromDictionaryRepresentation):
        * WebKitQuartzCoreAdditions/CAD3DRenderer.cpp:
        (WKQCA::CAD3DRenderer::createD3DPostProcessingContext):
        * WebNotificationCenter.cpp:
        (WebNotificationCenter::WebNotificationCenter):
        * WebView.cpp:
        (WebView::handleMouseEvent):
        (WebView::registerEmbeddedViewMIMEType):
        (WebView::enterVideoFullscreenForVideoElement):
        (WebView::addUserScriptToGroup):
        (WebView::addUserStyleSheetToGroup):
        (WebView::setAcceleratedCompositing):

2019-08-15  Yusuke Suzuki  <ysuzuki@apple.com>

        [WTF] Add makeUnique<T>, which ensures T is fast-allocated, WTF_MAKE_FAST_ALLOCATED annotation part
        https://bugs.webkit.org/show_bug.cgi?id=200620

        Reviewed by Geoffrey Garen.

        * FullscreenVideoController.cpp:
        * FullscreenVideoController.h:
        * Plugins/PluginMessageThrottlerWin.h:
        * WebCachedFramePlatformData.h:
        * WebCoreSupport/AcceleratedCompositingContext.h:
        * WebCoreSupport/WebChromeClient.h:
        * WebCoreSupport/WebContextMenuClient.h:
        * WebCoreSupport/WebDesktopNotificationsDelegate.h:
        * WebCoreSupport/WebDragClient.h:
        * WebCoreSupport/WebEditorClient.h:
        * WebCoreSupport/WebFrameLoaderClient.cpp:
        * WebCoreSupport/WebGeolocationClient.h:
        * WebCoreSupport/WebInspectorClient.h:
        * WebDatabaseManager.cpp:
        * WebKitQuartzCoreAdditions/CAD3DRenderer.h:
        * WebNodeHighlight.h:
        * WebNotificationCenter.cpp:
        * WebNotificationCenter.h:

2019-08-15  Brent Fulgham  <bfulgham@apple.com>

        [FTW] Enable CoreFoundation use if building for Apple target
        https://bugs.webkit.org/show_bug.cgi?id=200799

        Reviewed by Alex Christensen.

        * FullscreenVideoController.cpp:
        (FullscreenVideoController::FullscreenVideoController):
        (FullscreenVideoController::enterFullscreen):
        (FullscreenVideoController::exitFullscreen):
        (FullscreenVideoController::createHUDWindow):
        * FullscreenVideoController.h:
        * WebView.cpp:
        (WebView::exitFullscreenIfNeeded):

2019-08-15  Youenn Fablet  <youenn@apple.com>

        Always create a Document with a valid SessionID
        https://bugs.webkit.org/show_bug.cgi?id=200727

        Reviewed by Alex Christensen.

        Implement WebKit1 sessionID getter like done for WebKit2.
        Either the loader client has a page in which case the page session ID is used
        or the client has no page, in which case the default session ID is used.
        This is the same behavior as CachedResourceLoader.

        * WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebFrameLoaderClient::sessionID const):

2019-08-14  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r248526.

        Caused two IndexedDB perf tests to fail

        Reverted changeset:

        "Remove IDB-specific quota"
        https://bugs.webkit.org/show_bug.cgi?id=196545
        https://trac.webkit.org/changeset/248526

2019-08-14  Youenn Fablet  <youenn@apple.com>

        ThreadableBlobRegistry::blobSize should take a SessionID as parameter
        https://bugs.webkit.org/show_bug.cgi?id=200671

        Reviewed by Alex Christensen.

        * WebCoreSupport/WebPlatformStrategies.cpp:

2019-08-13  Youenn Fablet  <youenn@apple.com>

        Blob registries should be keyed by session IDs
        https://bugs.webkit.org/show_bug.cgi?id=200567
        <rdar://problem/54120212>

        Reviewed by Alex Christensen.

        * WebCoreSupport/WebPlatformStrategies.cpp:
        (WebPlatformStrategies::createBlobRegistry):

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

        Remove IDB-specific quota
        https://bugs.webkit.org/show_bug.cgi?id=196545

        Reviewed by Alex Christensen.

        * Interfaces/IWebDatabaseManager.idl:
        * WebDatabaseManager.cpp:
        (WebDatabaseManager::setIDBPerOriginQuota): Deleted.
        * WebDatabaseManager.h:

2019-08-09  Per Arne Vollan  <pvollan@apple.com>

        [Win] Remove compiler workaround for VS2013
        https://bugs.webkit.org/show_bug.cgi?id=200582

        Reviewed by Don Olmstead.

        A VS2013 compiler workaround can be removed now.

        * WebKitQuartzCoreAdditions/API/WebKitQuartzCoreAdditions.cpp:
        (DllMain):

2019-08-08  Per Arne Vollan  <pvollan@apple.com>

        [Win] Fix internal build
        https://bugs.webkit.org/show_bug.cgi?id=200519

        Reviewed by Alex Christensen.

        Switch to the String::wideCharacers method, since its return type is compatible with the Win32 api.

        * WebDownloadCFNet.cpp:
        (WebDownload::didFinish):

2019-08-08  Brent Fulgham  <bfulgham@apple.com>

        [FTW] Get WebKit, WebKit2, and MiniBrowser building and executing
        https://bugs.webkit.org/show_bug.cgi?id=200539
        <rdar://problem/54082550>

        Reviewed by Dean Jackson.

        * AccessibleBase.cpp:
        (AccessibleBase::get_locale):
        * CFDictionaryPropertyBag.cpp:
        (ConvertCFTypeToVariant):
        (CFDictionaryPropertyBag::Read):
        (CFDictionaryPropertyBag::Write):
        * CFDictionaryPropertyBag.h:
        * COMPropertyBag.h:
        (HashType>::Read):
        (HashType>::GetPropertyInfo):
        * MarshallingHelpers.cpp:
        * MarshallingHelpers.h:
        * WebApplicationCache.cpp:
        * WebArchive.cpp:
        * WebArchive.h:
        * WebCache.cpp:
        * WebCoreSupport/WebFrameLoaderClient.cpp:
        * WebDatabaseManager.cpp:
        * WebHistory.cpp:
        * WebHistoryItem.cpp:
        * WebKitCOMAPI.cpp:
        * WebKitCOMAPI.h:
        * WebKitDLL.cpp:
        * WebLocalizableStrings.cpp:
        * WebLocalizableStrings.h:
        * WebMutableURLRequest.cpp:
        * WebPreferences.cpp:
        * WebPreferences.h:
        * WebView.cpp:
        * WebView.h:

2019-08-08  Rob Buis  <rbuis@igalia.com>

        Add runtime flag for lazy image loading
        https://bugs.webkit.org/show_bug.cgi?id=199794

        Reviewed by Darin Adler.

        Set lazyImageLoading runtime flag if preference is set.

        * Interfaces/IWebPreferencesPrivate.idl:
        * WebPreferenceKeysPrivate.h:
        * WebPreferences.cpp:
        (WebPreferences::initializeDefaultSettings):
        (WebPreferences::lazyImageLoadingEnabled):
        (WebPreferences::setLazyImageLoadingEnabled):
        * WebPreferences.h:
        * WebView.cpp:
        (WebView::notifyPreferencesChanged):

2019-07-28  Fujii Hironori  <Hironori.Fujii@sony.com>

        [Win][WK1] Can't change Web Inspector frontend height in high DPI
        https://bugs.webkit.org/show_bug.cgi?id=200153

        Reviewed by Don Olmstead.

        * WebCoreSupport/WebInspectorClient.cpp:
        (WebInspectorFrontendClient::setAttachedWindowHeight):
        Applied deviceScaleFactor to the argument height.

2019-07-26  Konstantin Tokarev  <annulen@yandex.ru>

        [Win] Remove unused methods from WebPluginInfoProvider
        https://bugs.webkit.org/show_bug.cgi?id=200178

        Reviewed by Brent Fulgham.

        These methods are guarded with PLATFORM(MAC) and have no definitions.
        Also remove unused friend declaration.

        * WebCoreSupport/WebPluginInfoProvider.h:

2019-07-25  Fujii Hironori  <Hironori.Fujii@sony.com>

        [Win][WK1] The inspected webview window is misplaced after changing Web Inspector frontend window height
        https://bugs.webkit.org/show_bug.cgi?id=200152

        Reviewed by Brent Fulgham.

        In WebInspectorFrontendClient::setAttachedWindowHeight, the size
        of m_inspectedWebViewHwnd was changed to the whole host window
        size. But, it's too tall because MiniBrowser's host window has a
        toolbar. The toolbar height should be taken into account.

        Change to the height of m_inspectedWebViewHwnd to the sum of
        inspected WebView and inspector frontend WebView heights.

        * WebCoreSupport/WebInspectorClient.cpp:
        (WebInspectorFrontendClient::setAttachedWindowHeight):

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

        [macOS 10.15] Web process crashes when attempting to show the font panel via Font > Show Fonts
        https://bugs.webkit.org/show_bug.cgi?id=200021
        <rdar://problem/53301325>

        Reviewed by Ryosuke Niwa.

        Implement a new editing client hook.

        * WebCoreSupport/WebEditorClient.h:

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

        Cannot bring up custom media controls at all on v.youku.com
        https://bugs.webkit.org/show_bug.cgi?id=199699
        <rdar://problem/51835327>

        Reviewed by Simon Fraser.

        * WebActionPropertyBag.cpp:
        (WebActionPropertyBag::Read):
        * WebView.cpp:
        (WebView::handleContextMenuEvent):
        (WebView::elementAtPoint):

2019-07-08  Fujii Hironori  <Hironori.Fujii@sony.com>

        [WinCairo] ASSERTION FAILED: info.bmBitsPixel == 32 in createCairoContextWithHDC
        https://bugs.webkit.org/show_bug.cgi?id=198323

        Reviewed by Per Arne Vollan.

        WebView::paint binds m_backingStoreBitmap to a DC by using
        SelectObject. WebView::paint can be called recursively, but
        m_backingStoreBitmap can't be bound to multiple DCs at the same
        time. Then, SelectObject was failing in such case.

        Call WebCore::Page::updateRendering before binding
        m_backingStoreBitmap instead of after it.

        Reverted r202744 change which won't be needed since this change.

        * WebView.cpp:
        (WebView::scrollBackingStore): Removed r202744's change.
        (WebView::updateBackingStore): Removed m_page->updateRendering().
        (WebView::paint): Do m_page->updateRendering() before binding m_backingStoreBitmap.
        * WebView.h: Removed unused WebView::isPainting.

2019-07-02  Devin Rousso  <drousso@apple.com>

        Web Inspector: Debug: "Reset Web Inspector" should also clear the saved window size and attachment side
        https://bugs.webkit.org/show_bug.cgi?id=198956

        Reviewed by Matt Baker.

        * WebCoreSupport/WebInspectorClient.h:
        * WebCoreSupport/WebInspectorClient.cpp:
        (WebInspectorFrontendClient::resetWindowState): Added.

2019-06-30  Fujii Hironori  <Hironori.Fujii@sony.com>

        [Win] Multiline mode of tooltip control does word-wrapping very slowly
        https://bugs.webkit.org/show_bug.cgi?id=198989

        Reviewed by Ross Kirsling.

        * WebView.cpp:
        (truncatedString): Added.
        (WebView::setToolTip): Use truncatedString.

2019-06-16  Darin Adler  <darin@apple.com>

        Rename AtomicString to AtomString
        https://bugs.webkit.org/show_bug.cgi?id=195276

        Reviewed by Michael Catanzaro.

        * many files: Let do-webcore-rename do the renaming.

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

        [CMake] Add WebKit::WTF target
        https://bugs.webkit.org/show_bug.cgi?id=198400

        Reviewed by Konstantin Tokarev.

        Use the WebKit::WTF target.

        * WebKitQuartzCoreAdditions/CMakeLists.txt:

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

        Use an OptionSet<> for GraphicsLayerPaintingPhase
        https://bugs.webkit.org/show_bug.cgi?id=198404

        Reviewed by Tim Horton.

        Replace GraphicsLayerPaintingPhase with OptionSet<GraphicsLayerPaintingPhase>.

        No behavior change.

        * WebCoreSupport/AcceleratedCompositingContext.cpp:
        (AcceleratedCompositingContext::paintContents):
        * WebCoreSupport/AcceleratedCompositingContext.h:
        * WebView.cpp:
        (WebView::paintContents):
        * WebView.h:

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

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

        Reviewed by Tim Horton.

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

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

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

        Reviewed by Wenson Hsieh.

        * WebCoreSupport/WebEditorClient.cpp:
        (WebEditorClient::handleKeyboardEvent):
        (WebEditorClient::handleInputMethodKeydown):
        * WebCoreSupport/WebEditorClient.h:
        * WebView.cpp:
        (WebView::handleEditingKeyboardEvent):
        * WebView.h:

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

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

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

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

        Reviewed by Rob Buis.

        * Interfaces/IWebPreferencesPrivate.idl:
        * WebPreferenceKeysPrivate.h:
        * WebPreferences.cpp:
        (WebPreferences::initializeDefaultSettings):
        (WebPreferences::coreMathMLEnabled):
        (WebPreferences::setCoreMathMLEnabled):
        * WebPreferences.h:
        * WebView.cpp:
        (WebView::notifyPreferencesChanged):

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

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

        Reviewed by Tim Horton.

        * WebCoreSupport/WebChromeClient.cpp:
        (WebChromeClient::intrinsicContentsSizeChanged const):
        * WebCoreSupport/WebChromeClient.h:

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

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

        Reviewed by Sam Weinig.

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

        Convert RenderAsTextBehavior to an OptionSet<RenderAsTextFlag>.

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

        Some cleanup of the TestRunners, using member initializers.

        * Interfaces/IWebFramePrivate.idl:
        * WebFrame.cpp:
        (toRenderAsTextFlags):
        (WebFrame::renderTreeAsExternalRepresentation):
        (WebFrame::renderTreeAsExternalRepresentationForPrinting):
        * WebFrame.h:

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

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

        Reviewed by Alex Christensen.

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

2019-04-20  Don Olmstead  <don.olmstead@sony.com>

        [CMake][Win] Use target oriented design for WebKitLegacy
        https://bugs.webkit.org/show_bug.cgi?id=197112

        Reviewed by Konstantin Tokarev.

        Fix an include directory.

        * WebKitQuartzCoreAdditions/CMakeLists.txt:

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

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

        Reviewed by Eric Carlson.

        * WebCoreSupport/WebChromeClient.cpp:
        (WebChromeClient::createWindow):
        * WebView.cpp:
        (WebView::fullScreenClientWillEnterFullScreen):
        (WebView::fullScreenClientDidEnterFullScreen):
        (WebView::fullScreenClientWillExitFullScreen):
        (WebView::fullScreenClientDidExitFullScreen):

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

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

        Reviewed by Simon Fraser.

        * WebView.cpp:
        (WebView::updateBackingStore):
        (WebView::flushPendingGraphicsLayerChangesSoon):
        (WebView::flushPendingGraphicsLayerChanges):
        Call Page::updateRendering() which implements "Update the rendering"
        step of the HTML Event Loop specification.

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

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

        Reviewed by Timothy Hatcher.

        * WebCoreSupport/WebInspectorClient.h:
        * WebCoreSupport/WebInspectorClient.cpp:
        (WebInspectorFrontendClient::setSheetRect): Added.

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

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

        Reviewed by Brady Eidson.

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

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

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

        This change breaks build of WPE and GTK ports (Requested by
        annulen on #webkit).

        Reverted changeset:

        "[CMake][WTF] Mirror XCode header directories"
        https://bugs.webkit.org/show_bug.cgi?id=191662
        https://trac.webkit.org/changeset/243833

2019-04-03  Don Olmstead  <don.olmstead@sony.com>

        [CMake][WTF] Mirror XCode header directories
        https://bugs.webkit.org/show_bug.cgi?id=191662

        Reviewed by Konstantin Tokarev.

        * WebKitQuartzCoreAdditions/CMakeLists.txt:

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

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

        Reviewed by Simon Fraser.

        * Interfaces/IWebPreferencesPrivate.idl:
        * WebPreferenceKeysPrivate.h:
        * WebPreferences.cpp:
        (WebPreferences::initializeDefaultSettings):
        (WebPreferences::resizeObserverEnabled):
        (WebPreferences::setResizeObserverEnabled):
        * WebPreferences.h:
        * WebView.cpp:
        (WebView::notifyPreferencesChanged):

2019-03-17  Fujii Hironori  <Hironori.Fujii@sony.com>

        [Win][WK1] Null dereference in WebFrameNetworkingContext::storageSession
        https://bugs.webkit.org/show_bug.cgi?id=195741

        Reviewed by Ross Kirsling.

        * WebCoreSupport/WebFrameNetworkingContext.cpp:
        (WebFrameNetworkingContext::storageSession const): Added a null check of frame()->page() as well as Mac port does (Bug 183455).

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

        Unreviewed attempt to fix the Windows build after r242920.

        * WebCoreSupport/WebFrameLoaderClient.h:

2019-03-12  Ross Kirsling  <ross.kirsling@sony.com>

        [Win] Fix a slew of simple clang-cl warnings.
        https://bugs.webkit.org/show_bug.cgi?id=195652

        Reviewed by Don Olmstead.

        * Interfaces/AccessibleComparable.idl: -Wmissing-braces
        * Plugins/PluginDatabaseWin.cpp: -Wunused-function
        (WebCore::addJavaPluginDirectory): Deleted.
        * WebCoreSupport/AcceleratedCompositingContext.cpp:
        (AcceleratedCompositingContext::AcceleratedCompositingContext): -Wreorder
        * WebCoreSupport/WebEditorClient.cpp:
        (WebEditorUndoCommand::WebEditorUndoCommand): -Wreorder
        (undoNameForEditAction): -Wswitch
        * WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebFrameLoaderClient::WebFrameLoaderClient): -Wswitch
        (WebFrameLoaderClient::updateGlobalHistoryRedirectLinks): -Wunused-variable
        * WebCoreSupport/WebInspectorClient.cpp:
        (WebInspectorFrontendClient::WebInspectorFrontendClient): -Wreorder
        * WebCoreSupport/WebInspectorClient.h: -Winconsistent-missing-override
        * WebError.cpp:
        (WebError::WebError): -Wreorder
        * WebFrame.cpp:
        (WebFrame::stringByEvaluatingJavaScriptInScriptWorld): -Wlogical-op-parentheses
        * WebHistory.cpp: -Wunused-function (x5)
        (areEqualOrClose): Deleted.
        (addDayToSystemTime): Deleted.
        (getDayBoundaries): Deleted.
        (beginningOfDay): Deleted.
        (dateKey): Deleted.
        * WebNotificationCenter.cpp:
        (WebNotificationCenter::removeObserver): -Wunused-variable
        * WebView.cpp: -Wunused-function, -Wreorder
        (WebView::addVisitedLinks): -Wunused-variable

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

        Unreviewed, rolling out r242688, r242643, r242624.

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

        Reverted changeset:

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

        * WebView.cpp:
        (WebView::updateBackingStore):
        (WebView::flushPendingGraphicsLayerChangesSoon):
        (WebView::flushPendingGraphicsLayerChanges):

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

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

        Reviewed by Simon Fraser.

        * WebView.cpp:
        (WebView::updateBackingStore):
        (WebView::flushPendingGraphicsLayerChangesSoon):
        (WebView::flushPendingGraphicsLayerChanges):
        Call Page::renderingUpdate() which implements  "Update the rendering"
        step of the HTML Event Loop specification.

2019-03-06  Ross Kirsling  <ross.kirsling@sony.com>

        [Win] Remove -DUCHAR_TYPE=wchar_t stopgap and learn to live with char16_t.
        https://bugs.webkit.org/show_bug.cgi?id=195346

        Reviewed by Fujii Hironori.

        * COMPropertyBag.h:
        (HashType>::GetPropertyInfo):
        (HashType>::LoadObject):
        * DOMCoreClasses.cpp:
        (DOMNode::addEventListener):
        (DOMNode::removeEventListener):
        (DOMWindow::addEventListener):
        (DOMWindow::removeEventListener):
        (DOMElement::font):
        * DOMHTMLClasses.cpp:
        (DOMHTMLInputElement::setValueForUser):
        (DOMHTMLInputElement::replaceCharactersInRange):
        * Plugins/PluginDatabaseWin.cpp:
        (WebCore::addPluginPathsFromRegistry):
        (WebCore::PluginDatabase::getPluginPathsInDirectories const):
        (WebCore::addMozillaPluginDirectories):
        (WebCore::addWindowsMediaPlayerPluginDirectory):
        (WebCore::addAdobeAcrobatPluginDirectory):
        (WebCore::addJavaPluginDirectory):
        (WebCore::safariPluginsDirectory):
        (WebCore::addMacromediaPluginDirectories):
        * Plugins/PluginPackageWin.cpp:
        (WebCore::getVersionInfo):
        (WebCore::PluginPackage::fetchInfo):
        (WebCore::PluginPackage::load):
        * Plugins/PluginViewWin.cpp:
        (WebCore::PluginView::handlePostReadFile):
        * WebCoreSupport/WebChromeClient.cpp:
        (WebChromeClient::runOpenPanel):
        * WebCoreSupport/WebEditorClient.cpp:
        (WebEditorClient::checkSpellingOfString):
        (WebEditorClient::checkGrammarOfString):
        * WebCoreSupport/WebInspectorClient.cpp:
        (WebInspectorFrontendClient::updateWindowTitle):
        * WebLocalizableStrings.cpp:
        (LocalizedString::operator LPCTSTR const):
        * WebView.cpp:
        (createContextMenuFromItems):
        (WebView::setToolTip):
        Use wchar helpers as needed.

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

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

        Reviewed by Ryosuke Niwa.

        * WebCoreSupport/WebEditorClient.h:

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

        Finish removing String::format
        https://bugs.webkit.org/show_bug.cgi?id=194893

        Reviewed by Daniel Bates.

        * FullscreenVideoController.cpp:
        (timeToString): Use makeString and pad.

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

        Roll out r242014; it caused crashes in compositing logging (webkit.org/b/195141)

        * FullscreenVideoController.cpp:
        (timeToString):

2019-02-26  Philippe Normand  <pnormand@igalia.com>

        [WPE] Add API for webview background color configuration
        https://bugs.webkit.org/show_bug.cgi?id=192305

        Reviewed by Michael Catanzaro.

        * WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebFrameLoaderClient::transitionToCommittedForNewPage): Create
        FrameView with background color.

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

        Finish removing String::format
        https://bugs.webkit.org/show_bug.cgi?id=194893

        Reviewed by Daniel Bates.

        * FullscreenVideoController.cpp:
        (timeToString): Use makeString and pad.

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

        Input type "formatSetInlineTextDirection" is dispatched when changing paragraph-level text direction
        https://bugs.webkit.org/show_bug.cgi?id=194703
        <rdar://problem/48111775>

        Reviewed by Ryosuke Niwa.

        * WebCoreSupport/WebEditorClient.cpp:
        (undoNameForEditAction):

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

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

        Reviewed by Tim Horton.

        * WebCoreSupport/WebEditorClient.cpp:
        (WebEditorClient::replacementURLForResource): Deleted.
        * WebCoreSupport/WebEditorClient.h:

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

        Replace more uses of String::format with StringConcatenate (mostly non-Apple platform-specific cases)
        https://bugs.webkit.org/show_bug.cgi?id=194487

        Reviewed by Daniel Bates.

        * WebView.cpp:
        (webKitVersionString): Use makeString instead of String::format.

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

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

        Reviewed by Ryosuke Niwa.

        * WebCoreSupport/WebEditorClient.h:

2019-02-06  Daniel Bates  <dabates@apple.com>

        Standardize on ControlKey instead of CtrlKey
        https://bugs.webkit.org/show_bug.cgi?id=194317

        Reviewed by Tim Horton.

        * AccessibleBase.cpp:
        (AccessibleBase::get_accKeyboardShortcut):
        * WebView.cpp:
        (WebView::keyDown):

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

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

        Reviewed by Tim Horton.

        Expose PageOverlayController::hasDocumentOverlays() and hasViewOverlays()
        and use them to only parent the overlay-hosting layers when necessary.

        For document overlays, RenderLayerCompositor::appendDocumentOverlayLayers() can
        simply do nothing if there are none. Updates are triggered via Page::installedPageOverlaysChanged(),
        which calls FrameView::setNeedsCompositingConfigurationUpdate() to trigger the root layer
        compositing updates that parents the layerWithDocumentOverlays().

        View overlays are added to the layer tree via the DrawingArea. When we go between having
        none and some view overlays, Page::installedPageOverlaysChanged() calls attachViewOverlayGraphicsLayer()
        on the ChromeClient, and the DrawingArea responds by calling updateRootLayers() and scheduling a
        compositing flush (this has to be done manually because view overlay layers are outside the
        subtree managed by RenderLayerCompositor).
        
        Now that GraphicsLayers are ref-counted, we can let the DrawingArea simply retain its m_viewOverlayRootLayer;
        there is no need for RenderLayerCompositor::attachRootLayer()/detachRootLayer() to do anything with view
        overlay layers. This implies that a page can navigate (new FrameView) and view overlays will persist, without
        having to be manually removed and re-added. We can also remove the Frame argument to attachViewOverlayGraphicsLayer().

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

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

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

        Reviewed by Geoffrey Garen.

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

        * WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebFrameLoaderClient::dispatchDecidePolicyForResponse):
        (WebFrameLoaderClient::dispatchDecidePolicyForNewWindowAction):
        (WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
        (WebFrameLoaderClient::dispatchWillSubmitForm):
        (WebFrameLoaderClient::setUpPolicyListener):
        * WebCoreSupport/WebFrameLoaderClient.h:

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

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

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

2019-01-31  Takashi Komori  <Takashi.Komori@sony.com>

        [Curl] Fix DRT crash related to private browsing.
        https://bugs.webkit.org/show_bug.cgi?id=193816

        Reviewed by Alex Christensen.

        * WebCoreSupport/WebFrameNetworkingContext.cpp:
        (WebFrameNetworkingContext::ensurePrivateBrowsingSession):

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

        Remove unnecessary `using namespace WTF`s (or at least restrict their scope).
        https://bugs.webkit.org/show_bug.cgi?id=193941

        Reviewed by Alex Christensen.

        * Plugins/PluginMessageThrottlerWin.cpp:
        * Plugins/PluginView.cpp:
        * Plugins/PluginViewWin.cpp:

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

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

        Reviewed by Yusuke Suzuki.

        * Plugins/PluginDatabase.cpp:
        * Plugins/PluginPackage.h:
        * Plugins/PluginStream.h:
        * WebApplicationCache.cpp:
        * WebDatabaseManager.cpp:
        * WebDownloadCurl.cpp:
        * WebPreferences.cpp:
        * WebView.cpp:

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

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

        Reviewed by Geoff Garen.

        * WebCoreSupport/WebFrameNetworkingContext.cpp:
        (WebFrameNetworkingContext::setCookieAcceptPolicyForAllContexts):
        (WebFrameNetworkingContext::ensurePrivateBrowsingSession):
        (WebFrameNetworkingContext::destroyPrivateBrowsingSession):
        (WebFrameNetworkingContext::storageSession const):
        * WebDownloadCFNet.cpp:
        (WebDownload::didReceiveAuthenticationChallenge):
        * WebPreferences.cpp:
        (WebPreferences::clearNetworkLoaderSession):
        (WebPreferences::switchNetworkLoaderToNewTestingSession):

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

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

        Reviewed by Daniel Bates.

        * Plugins/PluginView.cpp:
        (WebCore::PluginView::startOrAddToUnstartedList): Pass a reference.
        (WebCore::PluginView::~PluginView): Ditto.
        * WebView.cpp:
        (WebView::fullScreenClientWillEnterFullScreen): Ditto.
        (WebView::fullScreenClientDidEnterFullScreen): Ditto.
        (WebView::fullScreenClientDidExitFullScreen): Ditto.

2019-01-17  Per Arne Vollan  <pvollan@apple.com>

        [Win][HighDPI] Repaint glitches when scrolling.
        https://bugs.webkit.org/show_bug.cgi?id=173152
        <rdar://problem/45269953>

        Reviewed by Brent Fulgham.

        Non-integral device scale factors are causing repaint glitches, because the computation of the scroll
        delta in pixel coordinates from the scroll delta in logical coordinates will not always be correct.
        Instead of blitting the scroll rectangle, repaint the entire region affected by scrolling.

        * WebView.cpp:
        (WebView::scrollBackingStore):

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

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

        Reviewed by Tim Horton.

        * WebView.cpp:
        (WebView::initWithFrame):

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

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

        Reviewed by Geoff Garen.

        * WebDownloadCFNet.cpp:
        (WebDownload::didReceiveAuthenticationChallenge):

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

        Fix Windows build after r240014
        https://bugs.webkit.org/show_bug.cgi?id=161106

        * WebView.cpp:

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

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

        Reviewed by Don Olmstead and Antti Koivisto.

        * Plugins/PluginView.cpp:
        (WebCore::PluginView::getValueForURL):
        (WebCore::PluginView::setValueForURL):
        * WebCoreSupport/WebPlatformStrategies.cpp:
        (WebPlatformStrategies::createBlobRegistry):
        (WebPlatformStrategies::createCookiesStrategy): Deleted.
        (WebPlatformStrategies::cookiesForDOM): Deleted.
        (WebPlatformStrategies::setCookiesFromDOM): Deleted.
        (WebPlatformStrategies::cookiesEnabled): Deleted.
        (WebPlatformStrategies::cookieRequestHeaderFieldValue): Deleted.
        (WebPlatformStrategies::getRawCookies): Deleted.
        (WebPlatformStrategies::deleteCookie): Deleted.
        * WebCoreSupport/WebPlatformStrategies.h:
        * WebView.cpp:
        (WebView::initWithFrame):

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

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

        Reviewed by Don Olmstead.

        * WebCoreSupport/WebFrameNetworkingContext.cpp:
        (WebFrameNetworkingContext::storageSession const):
        * WebCoreSupport/WebFrameNetworkingContext.h:
        * WebCoreSupport/WebPlatformStrategies.cpp:
        (WebPlatformStrategies::cookiesForDOM):
        (WebPlatformStrategies::setCookiesFromDOM):
        (WebPlatformStrategies::cookiesEnabled):
        (WebPlatformStrategies::cookieRequestHeaderFieldValue):
        (WebPlatformStrategies::getRawCookies):
        (WebPlatformStrategies::deleteCookie):
        * WebCoreSupport/WebPlatformStrategies.h:

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

        Unreviewed, rolling out r239727.

        Broke API tests

        Reverted changeset:

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

2018-12-24  Fujii Hironori  <Hironori.Fujii@sony.com>

        Remove "using namespace std;"
        https://bugs.webkit.org/show_bug.cgi?id=192973

        Reviewed by Alex Christensen.

        * FullscreenVideoController.cpp:
        * WebFrame.cpp:
        (WebFrame::drawFooter):
        * WebHistory.cpp:
        * WebKitQuartzCoreAdditions/CAD3DRenderer.cpp:
        * WebKitQuartzCoreAdditions/CAView.cpp:
        * WebView.cpp:
        (PreferencesChangedOrRemovedObserver::notifyPreferencesChanged):
        (PreferencesChangedOrRemovedObserver::notifyPreferencesRemoved):
        (WebView::setCacheModel):
        (WebView::maxCacheModelInAnyInstance):

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

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

        Reviewed by Alex Christensen.

        * Plugins/PluginDatabase.cpp:
        (WebCore::PluginDatabase::refresh):
        * Plugins/PluginView.cpp:
        (WebCore::PluginView::mediaCanStart):
        (WebCore::PluginView::performRequest):
        (WebCore::PluginView::bindingInstance):
        * Plugins/PluginView.h:
        * WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebFrameLoaderClient::dispatchDidFailToStartPlugin const):
        (WebFrameLoaderClient::createPlugin):
        (WebFrameLoaderClient::createJavaAppletWidget):
        * WebCoreSupport/WebFrameLoaderClient.h:
        * WebFrame.cpp:
        (WebFrame::loadData):
        (WebFrame::loadPlainTextString):
        (WebFrame::loadHTMLString):
        * WebFrame.h:
        * WebKitQuartzCoreAdditions/CAView.cpp:
        (WKQCA::CAView::create):
        * WebKitQuartzCoreAdditions/CAView.h:
        * WebKitQuartzCoreAdditions/CVDisplayLink.cpp:
        (WKQCA::CVDisplayLink::create):
        * WebKitQuartzCoreAdditions/CVDisplayLink.h:
        * WebKitQuartzCoreAdditions/ImageConversion.cpp:
        (WKQCA::getImageCopy):
        * WebView.cpp:
        (WebView::addUserScriptToGroup):
        (WebView::addUserStyleSheetToGroup):

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

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

        Reviewed by Geoffrey Garen.

        * WebSecurityOrigin.cpp:
        (WebSecurityOrigin::port):

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

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

        Reviewed by Geoff Garen.

        * Plugins/*:
        * WebCoreSupport/*:

2018-12-12  Fujii Hironori  <Hironori.Fujii@sony.com>

        [Win][Clang][WebKitLegacy] warning: expected a qualified name after 'typename' of COMEnumVariant and COMPropertyBag
        https://bugs.webkit.org/show_bug.cgi?id=192617

        Reviewed by Alex Christensen.

        * COMEnumVariant.h:
        (COMEnumVariant<ContainerType>::adopt): Removed 'typename' from non dependent names.
        (COMEnumVariant<ContainerType>::createInstance): Ditto.
        (COMEnumVariant<ContainerType>::Next): Prepend 'typename' for dependent names.
        * COMPropertyBag.h:
        (HashType>::createInstance): Removed 'typename' from non dependent names.
        (HashType>::adopt): Ditto.
        (HashType>::Read): Replaced dependent name 'HashMapType::const_iterator' with 'auto'.
        (HashType>::GetPropertyInfo): Ditto.

2018-12-12  Fujii Hironori  <Hironori.Fujii@sony.com>

        [Win][Clang][WebKitLegacy] WebFrame.cpp: warning: delete called on non-final 'WebFrame' that has virtual functions but non-virtual destructor [-Wdelete-non-virtual-dtor]
        https://bugs.webkit.org/show_bug.cgi?id=192618

        Reviewed by Alex Christensen.

        Classes which implement COM interface usually doesn't need the
        virtual destructor because it has Release() virtual method to
        destruct itself.

        Marked 'final' such classes to suppress clang-cl's compilation
        warnings.

        * COMEnumVariant.h:
        * COMPropertyBag.h:
        * DefaultDownloadDelegate.h:
        * DefaultPolicyDelegate.h:
        * MemoryStream.h:
        * WebActionPropertyBag.h:
        * WebApplicationCache.h:
        * WebArchive.h:
        * WebBackForwardList.h:
        * WebCache.h:
        * WebCoreStatistics.h:
        * WebCoreSupport/WebEditorClient.cpp:
        * WebCoreSupport/WebInspectorDelegate.h:
        * WebDataSource.h:
        * WebDatabaseManager.cpp:
        * WebDatabaseManager.h:
        * WebDownload.h:
        * WebDropSource.h:
        * WebElementPropertyBag.h:
        * WebError.h:
        * WebFrame.cpp:
        * WebFrame.h:
        * WebFramePolicyListener.h:
        * WebGeolocationPolicyListener.h:
        * WebGeolocationPosition.h:
        * WebHTMLRepresentation.h:
        * WebHistory.h:
        * WebHistoryItem.h:
        * WebInspector.h:
        * WebJavaScriptCollector.h:
        * WebKitClassFactory.h:
        * WebKitMessageLoop.h:
        * WebKitStatistics.h:
        * WebMutableURLRequest.h:
        * WebNavigationData.h:
        * WebNotification.h:
        * WebNotificationCenter.h:
        * WebPreferences.h:
        * WebResource.h:
        * WebScriptWorld.h:
        * WebSecurityOrigin.h:
        * WebSerializedJSValue.h:
        * WebTextRenderer.h:
        * WebURLAuthenticationChallenge.h:
        * WebURLAuthenticationChallengeSender.h:
        * WebURLCredential.h:
        * WebURLProtectionSpace.h:
        * WebURLResponse.h:
        * WebUserContentURLPattern.h:
        * WebView.cpp:
        * WebView.h:
        * WebWorkersPrivate.h:

2018-12-11  Fujii Hironori  <Hironori.Fujii@sony.com>

        [Win][Clang] Fix warning -Wmissing-field-initializers
        https://bugs.webkit.org/show_bug.cgi?id=192584

        Reviewed by Yusuke Suzuki.

        Initialize a struct with '{ }' instead of '= {0}'.

        * WebKitMessageLoop.cpp:
        (WebKitMessageLoop::run):
        * WebView.cpp:
        (WebView::onMenuCommand):
        (WebView::gesture):
        (WebView::setShouldInvertColors):
        (WebView::initializeToolTipWindow):
        (WebView::setToolTip):
        (WebView::fullScreenClientForceRepaint):

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

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

        Reviewed by Dan Bernstein.

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

        * WebFrame.cpp:
        (WebFrame::setTextDirection):

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

        Use WallTime for file time
        https://bugs.webkit.org/show_bug.cgi?id=192287

        Reviewed by Darin Adler.

        * Plugins/PluginDatabase.cpp:
        (WebCore::PluginDatabase::refresh):

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

        Fix Windows build.

        * WebView.cpp:

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

        Fix Windows build.

        * WebCoreSupport/WebFrameLoaderClient.h:

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

        Fix Windows build.

        * WebCoreSupport/WebFrameLoaderClient.h:

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

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

        Reviewed by Keith Miller.

        * MarshallingHelpers.cpp:
        * MarshallingHelpers.h:
        * Plugins/PluginDatabase.cpp:
        * Plugins/PluginDatabase.h:
        * Plugins/PluginDatabaseWin.cpp:
        * Plugins/PluginStream.h:
        * Plugins/PluginView.h:
        * WebCoreSupport/WebContextMenuClient.h:
        * WebCoreSupport/WebDesktopNotificationsDelegate.cpp:
        * WebCoreSupport/WebDesktopNotificationsDelegate.h:
        * WebCoreSupport/WebFrameLoaderClient.h:
        * WebCoreSupport/WebPlatformStrategies.h:
        * WebCoreSupport/WebPluginInfoProvider.cpp:
        (WebPluginInfoProvider::webVisiblePluginInfo):
        * WebCoreSupport/WebPluginInfoProvider.h:
        * WebCoreSupport/WebVisitedLinkStore.h:
        * WebDataSource.cpp:
        * WebDownload.h:
        * WebElementPropertyBag.cpp:
        * WebFrame.h:
        * WebHistory.cpp:
        * WebHistory.h:
        * WebHistoryItem.cpp:
        * WebResource.cpp:
        (WebResource::WebResource):
        * WebResource.h:
        * WebSecurityOrigin.cpp:
        * WebURLResponse.cpp:
        (WebURLResponse::createInstance):
        * WebUserContentURLPattern.cpp:
        * WebView.h:

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

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

        Reviewed by Chris Dumez.

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

2018-11-26  Fujii Hironori  <Hironori.Fujii@sony.com>

        [Clang][WebKitLegacy][Win] MarshallingHelpers.h(65,47): warning: extra qualification on member 'windowsEpochAbsoluteTime' [-Wmicrosoft-extra-qualification]
        https://bugs.webkit.org/show_bug.cgi?id=191959

        Reviewed by Alex Christensen.

        * MarshallingHelpers.h: Removed extra "MarshallingHelpers::" of windowsEpochAbsoluteTime declaration.

2018-11-26  Brent Fulgham  <bfulgham@apple.com>

        [Win] Reduce the use of WKSI library calls: CoreAnimation
        https://bugs.webkit.org/show_bug.cgi?id=191777
        <rdar://problem/46140542>

        Reviewed by Zalan Bujtas.

        Update the Windows build of WebKit to refer to the SPI headers, rather than WebKitSystemInterface.
        Move a small amount of glue code from WKSI to WebCore, and remove any includes or link
        directives for WebKitSystemInterface.lib.

        * FullscreenVideoController.cpp:
        * WebKitGraphics.cpp:
        * WebPreferences.cpp:

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

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

        Reviewed by Ryosuke Niwa.

        * AccessibleTextImpl.cpp:
        (AccessibleText::replaceText):

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

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

        Reviewed by Devin Rousso.

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

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

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

        Reviewed by Joseph Pecoraro.

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

2018-11-16  Brent Fulgham  <bfulgham@apple.com>

        [Win] Reduce the use of WKSI library calls: CFNetwork
        https://bugs.webkit.org/show_bug.cgi?id=191718
        <rdar://problem/46108732>

        Reviewed by Alex Christensen.

        Remove custom WKSI CFNetwork calls, since the SPI is already documented in PAL. Just
        make the same calls on Windows, like we did for iOS and macOS back in 2017.

        * WebCache.cpp:
        (WebCache::cacheFolder):
        * WebCoreSupport/WebFrameNetworkingContext.cpp:
        * WebCoreSupport/WebPlatformStrategies.cpp:
        * WebError.cpp:
        (WebError::localizedDescription):
        (WebError::sslPeerCertificate):
        * WebURLResponse.cpp:
        (WebURLResponse::sslPeerCertificate):
        (WebURLResponse::certificateDictionary const):
        * WebView.cpp:
        (WebView::setCacheModel):

2018-11-15  Brent Fulgham  <bfulgham@apple.com>

        [Win] Reduce the use of WKSI library calls: Font Handling
        https://bugs.webkit.org/show_bug.cgi?id=191701
        <rdar://problem/46104809>

        Reviewed by Myles C. Maxfield.

        Update to use the old font handling routines moved from WKSI to FontCascade.

        * WebPreferences.cpp:
        (WebPreferences::setFontSmoothing):
        (WebPreferences::setFontSmoothingContrast):
        * WebView.cpp:
        (systemParameterChanged):

2018-11-14  Timothy Hatcher  <timothy@apple.com>

        Default the view background color and text color to different values when in dark mode.
        https://bugs.webkit.org/show_bug.cgi?id=191607
        rdar://problem/46045854

        Reviewed by Dean Jackson.

        * WebFrame.cpp:
        (WebFrame::updateBackground): Drop backgroundColor.
        * WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebFrameLoaderClient::transitionToCommittedForNewPage): Drop backgroundColor.

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

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

        Reviewed by Matt Baker.

        * WebCoreSupport/WebInspectorClient.cpp:
        (WebInspectorFrontendClient::destroyInspectorView):

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

        Shipped PNGs include bad profiles: iCCP: known incorrect sRGB profile
        https://bugs.webkit.org/show_bug.cgi?id=189230
        <rdar://problem/44050379>

        Reviewed by Joseph Pecoraro.

        Runs all png images through zopflipng. This results in a smaller file
        size and takes care of this issue as a byproduct.

        * WebKit.resources/deleteButton.png:
        * WebKit.resources/deleteButtonPressed.png:
        * WebKit.resources/fsVideoAudioVolumeHigh.png:
        * WebKit.resources/fsVideoAudioVolumeLow.png:
        * WebKit.resources/fsVideoExitFullscreen.png:
        * WebKit.resources/fsVideoPause.png:
        * WebKit.resources/fsVideoPlay.png:
        * WebKit.resources/missingImage.png:
        * WebKit.resources/nullplugin.png:
        * WebKit.resources/panEastCursor.png:
        * WebKit.resources/panIcon.png:
        * WebKit.resources/panNorthCursor.png:
        * WebKit.resources/panNorthEastCursor.png:
        * WebKit.resources/panNorthWestCursor.png:
        * WebKit.resources/panSouthCursor.png:
        * WebKit.resources/panSouthEastCursor.png:
        * WebKit.resources/panSouthWestCursor.png:
        * WebKit.resources/panWestCursor.png:
        * WebKit.resources/searchCancel.png:
        * WebKit.resources/searchCancelPressed.png:
        * WebKit.resources/searchMagnifier.png:
        * WebKit.resources/searchMagnifierResults.png:
        * WebKit.resources/textAreaResizeCorner.png:
        * WebKit.resources/verticalTextCursor.png:
        * WebKit.resources/zoomInCursor.png:
        * WebKit.resources/zoomOutCursor.png:

2018-11-09  Ross Kirsling  <ross.kirsling@sony.com>

        Unreviewed Windows build fix for r238049.

        * WebView.cpp:
        (WebView::initWithFrame):

2018-11-09  Ross Kirsling  <ross.kirsling@sony.com>

        Unreviewed MSVC build fix after r238039 (and r238046).

        * WebDocumentLoader.h:
        * WebView.cpp:
        (WebView::setShouldApplyMacFontAscentHack):

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

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

        Reviewed by Dean Jackson.

        * WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebFrameLoaderClient::dispatchDidReachLayoutMilestone):
        * WebCoreSupport/WebFrameLoaderClient.h:

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

        WebHistory.h: warning: 'QueryInterface' overrides a member function but is not marked 'override' [-Winconsistent-missing-override]
        https://bugs.webkit.org/show_bug.cgi?id=191455

        Reviewed by Brent Fulgham.

        * WebHistory.h: Marked with 'override' and removed 'virtual'.

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

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

        Reviewed by Chris Dumez.

        * Interfaces/IWebDatabaseManager.idl:
        * WebDatabaseManager.cpp:
        (WebDatabaseManager::setIDBPerOriginQuota):
        * WebDatabaseManager.h:

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

        [Win][WKL] DOMHTMLDocument::setNodeValue does infinite recursion
        https://bugs.webkit.org/show_bug.cgi?id=191105

        Reviewed by Brent Fulgham.

        * DOMHTMLClasses.h:
        (DOMHTMLDocument::setNodeValue): Call DOMDocument::setNodeValue
        instead of own setNodeValue.

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

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

        Reviewed by Dean Jackson.

        * WebPreferences.cpp:
        (WebPreferences::initializeDefaultSettings):

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

        [Win][Clang] WebView.h: warning: 'QueryInterface' overrides a member function but is not marked 'override' [-Winconsistent-missing-override]
        https://bugs.webkit.org/show_bug.cgi?id=190744

        Reviewed by Alex Christensen.

        clang-cl reports compilation warnings for inconsistent 'override'
        keyword usage.

        WebView::flushPendingGraphicsLayerChanges is used only if USE(CA).
        This can't be marked 'override' if !USE(CA).

        * WebView.cpp:
        (WebView::flushPendingGraphicsLayerChanges): Define flushPendingGraphicsLayerChanges only if USE(CA).
        * WebView.h: Marked all overriding member function declarations of WebView 'override'.
        Declare flushPendingGraphicsLayerChanges only if USE(CA).

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

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

        Reviewed by Chris Dumez.

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

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

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

        Reviewed by Chris Dumez.

        * BackForwardList.cpp:
        (BackForwardList::backItem):
        (BackForwardList::currentItem):
        (BackForwardList::forwardItem):
        (BackForwardList::backListCount const):
        (BackForwardList::forwardListCount const):
        (BackForwardList::itemAtIndex):
        * BackForwardList.h:

2018-10-16  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed attempt to fix the Windows build after r237112.

        * Plugins/PluginView.cpp:
        (WebCore::PluginView::performRequest):

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

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

        Reviewed by Chris Dumez.

        * BackForwardList.cpp:
        (BackForwardList::goToItem):
        * BackForwardList.h:
        * WebBackForwardList.cpp:
        (WebBackForwardList::goToItem):

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

        Fix Windows build.

        * WebView.cpp:
        (WebView::loadBackForwardListFromOtherView):

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

        Fix WinCairo build.

        * WebView.cpp:
        (WebView::backForwardList):

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

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

        Reviewed by Chris Dumez.

        * BackForwardList.cpp:
        (BackForwardList::backListCount const):
        (BackForwardList::forwardListCount const):
        (BackForwardList::backListCount): Deleted.
        (BackForwardList::forwardListCount): Deleted.
        * BackForwardList.h:
        * WebView.cpp:
        (WebView::initWithFrame):
        (WebView::backForwardList):

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

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

        Reviewed by Chris Dumez.

        * WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebFrameLoaderClient::updateGlobalHistoryItemForPage): Deleted.
        * WebCoreSupport/WebFrameLoaderClient.h:
        * WebView.cpp:
        (WebView::globalHistoryItem):
        (WebView::setGlobalHistoryItem): Deleted.
        * WebView.h:

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

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

        Reviewed by Chris Dumez.

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

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

        Unreviewed Windows build fix after r237112.

        * Plugins/PluginView.cpp:
        (WebCore::PluginView::performRequest):
        (WebCore::PluginView::load):

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

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

        Reviewed by Chris Dumez.

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

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

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

        Reviewed by Chris Dumez.

        * WebDownloadCurl.cpp:
        (WebDownload::initWithRequest):
        * WebURLResponse.cpp:
        (WebURLResponse::createInstance):

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

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

        Reviewed by Ryosuke Niwa.

        * WebPreferenceKeysPrivate.h:
        * WebPreferences.cpp:
        (WebPreferences::initializeDefaultSettings):
        (WebPreferences::crossOriginWindowPolicySupportEnabled):
        (WebPreferences::setCrossOriginWindowPolicySupportEnabled):
        * WebView.cpp:
        (WebView::notifyPreferencesChanged):

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

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

        Reviewed by Dean Jackson.

        * WebPreferences.cpp:
        (WebPreferences::initializeDefaultSettings):

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

        Use a Variant for FormDataElement
        https://bugs.webkit.org/show_bug.cgi?id=189777

        Reviewed by Chris Dumez.

        * WebMutableURLRequest.cpp:
        (WebMutableURLRequest::setHTTPBody):

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

        [Win][Clang][WebKitLegacy] error: cannot pass object of non-trivial type through variadic function
        https://bugs.webkit.org/show_bug.cgi?id=189612

        Reviewed by Alex Christensen.

        Non-trivial types can't be used as aruguments of LOG_ERROR and
        ASSERT_WITH_MESSAGE.

        * DefaultPolicyDelegate.cpp:
        (DefaultPolicyDelegate::unableToImplementPolicyWithError): Apply
        static_cast<BSTR> to convert BString.
        * WebLocalizableStrings.cpp:
        (copyLocalizedStringFromBundle): Convert 'key' from WTF::String to
        char* by using 'key.utf8().data()'.

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

        Unreviewed, rolling out r235953.

        Caused layout test crashes under GuardMalloc.

        Reverted changeset:

        "Make GraphicsLayers ref-counted, so their tree can persist
        when disconnected from RenderLayerBackings"
        https://bugs.webkit.org/show_bug.cgi?id=189521
        https://trac.webkit.org/changeset/235953

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

        [Win][Clang][WebKitLegacy] Fix compilation errors and warnings of WebPreferences.cpp
        https://bugs.webkit.org/show_bug.cgi?id=189538

        Reviewed by Per Arne Vollan.

        * WebPreferences.cpp:
        Changed the type of CFNumberTraits::Type from unsigned int to CFNumberType.
        (WebPreferences::migrateWebKitPreferencesToCFPreferences):
        Apply static_cast to the result of OR-ed CFPropertyListFormat.
        (WebPreferences::screenFontSubstitutionEnabled):
        Assign false to the content of the out variable 'enabled', not assigning 0 to the variable.

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

        [Win][Clang][WebKitLegacy] error: 'static' is invalid in friend declarations
        https://bugs.webkit.org/show_bug.cgi?id=189539

        Reviewed by Alex Christensen.

        * WebCoreSupport/WebInspectorClient.h: Removed 'static' of WebInspectorWndProc friend declaration.
        * WebCoreSupport/WebInspectorClient.cpp:
        (WebInspectorWndProc): Ditto.
        * WebNodeHighlight.cpp: Added OverlayWndProc declaration to be called before the definition.
        * WebNodeHighlight.h: Removed 'static` of OverlayWndProc friend declaration.

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

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

        Reviewed by Dan Bernstein.

        * WebCoreSupport/WebEditorClient.cpp:
        (undoNameForEditAction):

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

        Add basic support for ScrollIntoViewOptions
        https://bugs.webkit.org/show_bug.cgi?id=189258

        Reviewed by Simon Fraser.

        * DOMCoreClasses.cpp: Add ScrollIntoViewOptions header so that this file
        can build despite the new scrollIntoView function.

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

        Unreviewed Windows build fix after r235562.

        * WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebFrameLoaderClient::dispatchWillSubmitForm):

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

        Assertion hit in ~CompletionHandler() from ~WebFrame()
        https://bugs.webkit.org/show_bug.cgi?id=189199
        <rdar://problem/42657233>

        Reviewed by Youenn Fablet.

        * WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebFrameLoaderClient::dispatchWillSubmitForm):
        * WebCoreSupport/WebFrameLoaderClient.h:

2018-08-31  Frederic Wang  <fwang@igalia.com>

        Bug 182053 - [CSSOM View] Implement standard behavior for scrollingElement
        https://bugs.webkit.org/show_bug.cgi?id=182053

        Reviewed by Simon Fraser.

        Add developer flag to use standard behavior for scrolling* attributes.

        * Interfaces/IWebPreferencesPrivate.idl:
        * WebPreferenceKeysPrivate.h:
        * WebPreferences.cpp:
        (WebPreferences::initializeDefaultSettings):
        (WebPreferences::CSSOMViewScrollingAPIEnabled):
        (WebPreferences::setCSSOMViewScrollingAPIEnabled):
        * WebPreferences.h:
        * WebView.cpp:
        (WebView::notifyPreferencesChanged):

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

        [CMake] Replace AVFoundationSupport.py using CMake
        https://bugs.webkit.org/show_bug.cgi?id=182891

        Reviewed by Per Arne Vollan.

        Remove references to the config.h contained in WebCore as it should
        not be accessible from outside of WebCore.

        * WebKitPrefix.h:

2018-08-21  Wenson Hsieh  <wenson_hsieh@apple.com>

        [Attachment Support] Augment _WKAttachment SPI to handle NSFileWrappers in addition to NSData
        https://bugs.webkit.org/show_bug.cgi?id=188496
        <rdar://problem/43216836>

        Reviewed by Tim Horton.

        Adjust for changing PromisedAttachmentInfo.h to forward declare WebCore::SharedBuffer rather than include the
        header directly.

        * WebCoreSupport/WebDragClient.cpp:

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

        Add some plumbing for safe browsing
        https://bugs.webkit.org/show_bug.cgi?id=188709

        Reviewed by Tim Horton.

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

2018-08-02  David Fenton  <david_fenton@apple.com>

        Unreviewed, rolling out r234489.

        Caused 50+ crashes and 60+ API failures on iOS

        Reverted changeset:

        "[WTF] Rename String::format to String::deprecatedFormat"
        https://bugs.webkit.org/show_bug.cgi?id=188191
        https://trac.webkit.org/changeset/234489

2018-08-01  Tomas Popela  <tpopela@redhat.com>

        [WTF] Rename String::format to String::deprecatedFormat
        https://bugs.webkit.org/show_bug.cgi?id=188191

        Reviewed by Darin Adler.

        It should be replaced with string concatenation.

        * FullscreenVideoController.cpp:
        (timeToString):
        * WebView.cpp:
        (webKitVersionString):

2018-07-30  Rob Buis  <rbuis@igalia.com>

        https://bugs.webkit.org/show_bug.cgi?id=188137
        Merge PlatformCookieJar functions into NetworkStorageSession

        Adapt callsites to use NetworkStorageSession instead of CookieJar functions.

        Reviewed by Alex Christensen.

        * WebCoreSupport/WebPlatformStrategies.cpp:
        (WebPlatformStrategies::cookiesForDOM):
        (WebPlatformStrategies::setCookiesFromDOM):
        (WebPlatformStrategies::cookiesEnabled):
        (WebPlatformStrategies::cookieRequestHeaderFieldValue):
        (WebPlatformStrategies::getRawCookies):
        (WebPlatformStrategies::deleteCookie):
        * WebPreferences.cpp:
        (WebPreferences::clearNetworkLoaderSession):

2018-07-26  Ross Kirsling  <ross.kirsling@sony.com>

        String(View) should have a splitAllowingEmptyEntries function instead of a flag parameter
        https://bugs.webkit.org/show_bug.cgi?id=187963

        Reviewed by Alex Christensen.

        * Plugins/PluginPackageWin.cpp:
        (WebCore::PluginPackage::fetchInfo):
        Update split/splitAllowingEmptyEntries usage.

2018-07-18  Antoine Quint  <graouts@apple.com>

        [Web Animations] Interpolation between font-styles with a keyword value should be discrete
        https://bugs.webkit.org/show_bug.cgi?id=187722

        Reviewed by Myles Maxfield.

        Use isItalic() since that function knows how to handle an std::optional<FontSelectionValue>.

        * DOMCoreClasses.cpp:
        (DOMElement::font):

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

        Disable cross-origin-window-policy by default
        https://bugs.webkit.org/show_bug.cgi?id=187509

        Reviewed by Chris Dumez.

        * WebPreferences.cpp:
        (WebPreferences::initializeDefaultSettings):

2018-06-23  Yusuke Suzuki  <utatane.tea@gmail.com>

        [WTF] Add user-defined literal for ASCIILiteral
        https://bugs.webkit.org/show_bug.cgi?id=186839

        Reviewed by Darin Adler.

        * Plugins/PluginStream.cpp:
        (WebCore::PluginStream::startStream):
        * WebCoreSupport/WebContextMenuClient.cpp:
        (WebContextMenuClient::searchWithGoogle):

2018-06-14  Basuke Suzuki  <Basuke.Suzuki@sony.com>

        [Win] Fix build break after r232815 (SupportedPluginIdentifier)
        https://bugs.webkit.org/show_bug.cgi?id=186623

        Reviewed by Youenn Fablet.

        * WebCoreSupport/WebPluginInfoProvider.cpp:
        (WebPluginInfoProvider::pluginInfo):
        (WebPluginInfoProvider::webVisiblePluginInfo):
        * WebCoreSupport/WebPluginInfoProvider.h:

2018-06-13  Chris Dumez  <cdumez@apple.com>

        PSON: http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-top-frame-redirect-collusion.html ASSERTS with process swap enabled
        https://bugs.webkit.org/show_bug.cgi?id=186545

        Reviewed by Brady Eidson.

        Update client delegate now that parameter type has changed.

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

2018-06-11  Chris Dumez  <cdumez@apple.com>

        http/tests/security/cors-post-redirect-307.html fails with PSON enabled
        https://bugs.webkit.org/show_bug.cgi?id=186441

        Reviewed by Brady Eidson.

        Rename existing flag to something a bit more generic, now that it is used for
        more things than bypassing the navigation policy check.

        * WebView.cpp:
        (WebView::goToBackForwardItem):
        (WebView::loadBackForwardListFromOtherView):

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

        Rename "Cross-Origin-Options" HTTP header to "Cross-Origin-Window-Policy"
        https://bugs.webkit.org/show_bug.cgi?id=186287
        <rdar://problem/40783352>

        Reviewed by Youenn Fablet.

        * Interfaces/IWebPreferencesPrivate.idl:
        * WebPreferenceKeysPrivate.h:
        * WebPreferences.cpp:
        (WebPreferences::initializeDefaultSettings):
        (WebPreferences::crossOriginWindowPolicySupportEnabled):
        (WebPreferences::setCrossOriginWindowPolicySupportEnabled):
        * WebPreferences.h:
        * WebView.cpp:
        (WebView::notifyPreferencesChanged):

2018-05-30  Yusuke Suzuki  <utatane.tea@gmail.com>

        [JSC] Pass VM& parameter as much as possible
        https://bugs.webkit.org/show_bug.cgi?id=186085

        Reviewed by Saam Barati.

        * Plugins/PluginPackage.cpp:
        (WebCore::NPN_Invoke):

2018-05-30  Fujii Hironori  <Hironori.Fujii@sony.com>

        REGRESSION(r232316) [Win] error C2039: 'event': is not a member of 'WebCore::NavigationAction'
        https://bugs.webkit.org/show_bug.cgi?id=186125

        Unreviewed build fix

        * WebActionPropertyBag.cpp:
        (WebActionPropertyBag::Read):
        (findMouseEvent): Deleted.

2018-05-27  Fujii Hironori  <Hironori.Fujii@sony.com>

        REGRESSION(r232198) [WinCairo] cannot convert from 'WTF::StringView' to 'const WTF::String'
        https://bugs.webkit.org/show_bug.cgi?id=186027

        Unreviewed build fix

        * WebMutableURLRequest.cpp:
        (WebMutableURLRequest::setAllowsAnyHTTPSCertificate):
        (WebMutableURLRequest::setClientCertificate):

2018-05-25  Chris Dumez  <cdumez@apple.com>

        Minor ApplicationCacheStorage clean up
        https://bugs.webkit.org/show_bug.cgi?id=185984

        Reviewed by Youenn Fablet.

        * WebApplicationCache.cpp:
        (WebApplicationCache::originsWithCache):

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

        Reduce copying of FontCascadeDescription objects by moving them around
        https://bugs.webkit.org/show_bug.cgi?id=185963

        Reviewed by Simon Fraser.

        Reduce copying of FontCascadeDescription objects by moving them around when possible.

        * FullscreenVideoController.cpp:
        (FullscreenVideoController::draw):

2018-05-15  Antoine Quint  <graouts@apple.com>

        [Web Animations] Expose Web Animations CSS integration as an experimental feature
        https://bugs.webkit.org/show_bug.cgi?id=185647

        Reviewed by Dean Jackson.

        Rename the Web Animations CSS integration flag.

        * Interfaces/IWebPreferencesPrivate.idl:
        * WebPreferenceKeysPrivate.h:
        * WebPreferences.cpp:
        (WebPreferences::initializeDefaultSettings):
        (WebPreferences::webAnimationsCSSIntegrationEnabled):
        (WebPreferences::setWebAnimationsCSSIntegrationEnabled):
        (WebPreferences::cssAnimationsAndCSSTransitionsBackedByWebAnimationsEnabled): Deleted.
        (WebPreferences::setCSSAnimationsAndCSSTransitionsBackedByWebAnimationsEnabled): Deleted.
        * WebPreferences.h:
        * WebView.cpp:
        (WebView::notifyPreferencesChanged):

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

        REGRESSION(r231622) [Win] Crashes for null dereference of prefsPrivate in WebView::notifyPreferencesChanged
        https://bugs.webkit.org/show_bug.cgi?id=185505

        Unreviewed serious crash fix

        Windows port crashes soon since Bug 184996.

        * WebPreferences.cpp:
        (WebPreferences::QueryInterface): Added IID_IWebPreferencesPrivate7.
        * WebPreferences.h: Inherit IWebPreferencesPrivate7 instead of IWebPreferencesPrivate6.

2018-05-07  Daniel Bates  <dabates@apple.com>

        Substitute CrossOriginPreflightResultCache::clear() for CrossOriginPreflightResultCache::empty()
        https://bugs.webkit.org/show_bug.cgi?id=185170

        Reviewed by Per Arne Vollan.

        * WebCache.cpp:
        (WebCache::empty):

2018-04-27  Chris Dumez  <cdumez@apple.com>

        Use WindowProxy instead of DOMWindow in our IDL
        https://bugs.webkit.org/show_bug.cgi?id=185022

        Reviewed by Sam Weinig.

        * DOMCoreClasses.cpp:
        (DOMDocument::getComputedStyle):

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.cpp:
        (WebPlatformStrategies::cookiesForDOM):
        (WebPlatformStrategies::setCookiesFromDOM):
        (WebPlatformStrategies::cookieRequestHeaderFieldValue):
        (WebPlatformStrategies::getRawCookies):
        * WebCoreSupport/WebPlatformStrategies.h:

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.cpp:
        (WebPlatformStrategies::cookiesForDOM):
        (WebPlatformStrategies::setCookiesFromDOM):
        (WebPlatformStrategies::cookieRequestHeaderFieldValue):
        (WebPlatformStrategies::getRawCookies):
        * WebCoreSupport/WebPlatformStrategies.h:

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.cpp:
        (WebPluginInfoProvider::pluginInfo):
        (WebPluginInfoProvider::webVisiblePluginInfo):
        * WebCoreSupport/WebPluginInfoProvider.h:

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.

        * WebFrame.cpp:
        (WebFrame::stringByEvaluatingJavaScriptInScriptWorld):

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.

        * WebPreferences.cpp:
        (WebPreferences::initializeDefaultSettings):

2018-04-17  Chris Dumez  <cdumez@apple.com>

        Unreviewed attempt to fix the Windows build after r230721

        * WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):

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.cpp:
        (WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
        * WebCoreSupport/WebFrameLoaderClient.h:

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.

        Make sure Web Animations and CSS Animations and CSS Transitions are enabled by default on Windows.

        * WebPreferences.cpp:

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.

        * WebKitQuartzCoreAdditions/CAView.cpp:
        (WKQCA::CAView::releaseAllD3DResources):
        * WebLocalizableStrings.cpp:

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/AcceleratedCompositingContext.cpp:
        * WebCoreSupport/WebContextMenuClient.cpp:
        * WebCoreSupport/WebDragClient.cpp:
        * WebDropSource.cpp:
        * WebFrame.cpp:
        * WebView.cpp:

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().

        * WebDatabaseManager.cpp:
        (WebDatabaseManager::databasesWithOrigin):
        (WebDatabaseManager::deleteOrigin):
        (WebDatabaseManager::deleteDatabase):
        (WebDatabaseManager::setQuota):
        * WebSecurityOrigin.cpp:
        (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.cpp:
        (WebView::WebView):

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().

        * WebDatabaseManager.cpp:
        (WebDatabaseManager::databasesWithOrigin):
        (WebDatabaseManager::deleteOrigin):
        (WebDatabaseManager::deleteDatabase):
        (WebDatabaseManager::setQuota):
        * WebSecurityOrigin.cpp:
        (WebSecurityOrigin::usage):
        (WebSecurityOrigin::quota):
        (WebSecurityOrigin::setQuota):

2018-03-23  Chris Dumez  <cdumez@apple.com>

        Unreviewed attempt to fix Windows build after r229926.

        * WebView.cpp:

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.cpp:
        (WebView::goToBackForwardItem):
        (WebView::loadBackForwardListFromOtherView):

2018-03-23  Miguel Gomez  <magomez@igalia.com>

        [GTK][WPE] Avoid software color conversion inside BitmapTextureGL
        https://bugs.webkit.org/show_bug.cgi?id=183892

        Remove the UpdateContentsFlag parameter as it's not used anymore.

        Reviewed by Žan Doberšek.

        * WebCoreSupport/AcceleratedCompositingContext.cpp:
        (AcceleratedCompositingContext::acceleratedCompositingAvailable):

2018-03-15  Yousuke Kimoto  <yousuke.kimoto@sony.com>

        [WinCairo] Fix build errors when ENABLE_NETSCAPE_PLUGIN_API is turned off
        https://bugs.webkit.org/show_bug.cgi?id=183335

        Reviewed by Alex Christensen.

        * Plugins/PluginDatabaseWin.cpp:
        * Plugins/PluginMessageThrottlerWin.cpp:
        (WebCore::PluginMessageThrottlerWin::processQueuedMessage):
        * Plugins/PluginPackageWin.cpp:
        (WebCore::PluginPackage::load):
        * Plugins/PluginView.h:
        * Plugins/PluginViewWin.cpp:
        * Plugins/npapi.cpp:
        * WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebFrameLoaderClient::createPlugin):
        (WebFrameLoaderClient::createJavaAppletWidget):
        * WebView.cpp:
        (WebView::WebViewWndProc):

2018-03-13  Ross Kirsling  <ross.kirsling@sony.com>

        [Win] Layout Test fast/html/menuitem-element.html is failing.
        https://bugs.webkit.org/show_bug.cgi?id=179299

        Reviewed by Per Arne Vollan.

        * Interfaces/IWebPreferencesPrivate.idl:
        * WebPreferenceKeysPrivate.h:
        * WebPreferences.cpp:
        (WebPreferences::menuItemElementEnabled):
        (WebPreferences::setMenuItemElementEnabled):
        * WebPreferences.h:
        * WebView.cpp:
        (WebView::notifyPreferencesChanged):
        Add private web preference "menuItemElementEnabled".

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.

        * Interfaces/IWebPreferencesPrivate.idl:
        * WebPreferences.cpp:
        (WebPreferences::cssAnimationsAndCSSTransitionsBackedByWebAnimationsEnabled):
        (WebPreferences::setCSSAnimationsAndCSSTransitionsBackedByWebAnimationsEnabled):
        * WebPreferenceKeysPrivate.h
        * WebPreferences.h:
        * WebView.cpp:
        (WebView::notifyPreferencesChanged):

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.

        * WebFrame.cpp:
        (WebFrame::stringByEvaluatingJavaScriptInScriptWorld):

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.

        * FullscreenVideoController.cpp:

2018-03-05  Yusuke Suzuki  <utatane.tea@gmail.com>

        Fix std::make_unique / new[] using system malloc
        https://bugs.webkit.org/show_bug.cgi?id=182975

        Reviewed by JF Bastien.

        Use Vector instead.

        * MarshallingHelpers.cpp:
        (MarshallingHelpers::safeArrayToStringArray):
        (MarshallingHelpers::safeArrayToIntArray):
        * Plugins/PluginPackageWin.cpp:
        (WebCore::PluginPackage::fetchInfo):
        * WebPreferences.cpp:
        (WebPreferences::copyWebKitPreferencesToCFPreferences):
        * WebView.cpp:
        (WebView::onMenuCommand):

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.

        * WebDownload.cpp:
        * WebDownloadCFNet.cpp:
        * WebDropSource.cpp:

2018-03-01  Yusuke Suzuki  <utatane.tea@gmail.com>

        Remove monotonicallyIncreasingTime
        https://bugs.webkit.org/show_bug.cgi?id=182911

        Reviewed by Michael Catanzaro.

        * FullscreenVideoController.cpp:
        (FullscreenVideoController::LayerClient::platformCALayerAnimationStarted):
        * Plugins/PluginMessageThrottlerWin.cpp:
        (WebCore::PluginMessageThrottlerWin::PluginMessageThrottlerWin):
        (WebCore::PluginMessageThrottlerWin::appendMessage):
        * Plugins/PluginMessageThrottlerWin.h:
        * WebView.cpp:
        (WebView::notifyAnimationStarted):
        * WebView.h:

2018-03-01  Ross Kirsling  <ross.kirsling@sony.com>

        [Win][DRT] Implement setSpatialNavigationEnabled.
        https://bugs.webkit.org/show_bug.cgi?id=183166

        Reviewed by Per Arne Vollan.

        Create a non-dummy implementation of the private preference in Win WKL to support layout tests.

        * Interfaces/IWebPreferencesPrivate.idl:
        * WebPreferenceKeysPrivate.h:
        * WebPreferences.cpp:
        (WebPreferences::initializeDefaultSettings):
        (WebPreferences::spatialNavigationEnabled):
        (WebPreferences::setSpatialNavigationEnabled):
        * WebPreferences.h:
        * WebView.cpp:
        (WebView::notifyPreferencesChanged):

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/PluginView.cpp:
        (WebCore::PluginView::getValueForURL):

2018-02-26  Don Olmstead  <don.olmstead@sony.com>

        Fix WebCore includes within WebKitLegacy
        https://bugs.webkit.org/show_bug.cgi?id=183147

        Reviewed by Tim Horton.

        * Plugins/PluginDatabase.cpp:
        * Plugins/PluginDatabaseWin.cpp:
        * Plugins/PluginDebug.cpp:
        * Plugins/PluginDebug.h:
        * Plugins/PluginMainThreadScheduler.cpp:
        * Plugins/PluginMessageThrottlerWin.cpp:
        * Plugins/PluginMessageThrottlerWin.h:
        * Plugins/PluginPackage.cpp:
        * Plugins/PluginPackage.h:
        * Plugins/PluginPackageWin.cpp:
        * Plugins/PluginStream.cpp:
        * Plugins/PluginStream.h:
        * Plugins/PluginView.cpp:
        * Plugins/PluginView.h:
        * Plugins/PluginViewWin.cpp:
        * Plugins/npapi.cpp:
        * WebCoreSupport/WebChromeClient.cpp:
        * WebCoreSupport/WebContextMenuClient.cpp:
        * WebCoreSupport/WebFrameLoaderClient.cpp:
        * WebCoreSupport/WebInspectorClient.cpp:
        * WebCoreSupport/WebPlatformStrategies.cpp:
        * WebFrame.cpp:
        * WebKitMessageLoop.cpp:
        * WebView.cpp:
        * storage/WebDatabaseProvider.cpp:

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.cpp:
        (WebFrameLoaderClient::dispatchWillPerformClientRedirect):
        * WebCoreSupport/WebFrameLoaderClient.h:
        * WebDownload.h:
        * WebDownloadCFNet.cpp:
        (WebDownload::didStart):
        (WebDownload::didReceiveData):
        (WebDownload::didFinish):

2018-02-21  Don Olmstead  <don.olmstead@sony.com>

        [CMake][Win] Use cmakeconfig.h rather than config.h and Platform.h
        https://bugs.webkit.org/show_bug.cgi?id=182883

        Reviewed by Per Arne Vollan.

        * WebKitPrefix.h:

2018-02-16  Dean Jackson  <dino@apple.com>

        Use OPENGL macros to be more clear about which OpenGL/ES WebGL uses on Cocoa
        https://bugs.webkit.org/show_bug.cgi?id=182894

        Reviewed by Tim Horton.

        Rename OPENGL_ES_2 to OPENGL_ES.

        * WebCoreSupport/AcceleratedCompositingContext.cpp:

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.cpp:
        (WebPluginInfoProvider::getPluginInfo):
        * WebCoreSupport/WebPluginInfoProvider.h:

2018-02-15  Don Olmstead  <don.olmstead@sony.com>

        WebCore headers should not be included relatively within dependent projects
        https://bugs.webkit.org/show_bug.cgi?id=182805

        Reviewed by Chris Dumez.

        * FullscreenVideoController.h:

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

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

        Regressed CMake build stability (Requested by dolmstead on
        #webkit).

        Reverted changeset:

        "[CMake] Make WebCore headers copies"
        https://bugs.webkit.org/show_bug.cgi?id=182512
        https://trac.webkit.org/changeset/228431

2018-02-13  Don Olmstead  <don.olmstead@sony.com>

        [CMake] Make WebCore headers copies
        https://bugs.webkit.org/show_bug.cgi?id=182512

        Reviewed by Keith Miller.

        * FullscreenVideoController.h:
        * Plugins/PluginDatabase.cpp:
        * Plugins/PluginDatabaseWin.cpp:
        * Plugins/PluginDebug.cpp:
        * Plugins/PluginMainThreadScheduler.cpp:
        * Plugins/PluginMessageThrottlerWin.cpp:
        * Plugins/PluginPackage.cpp:
        * Plugins/PluginPackageWin.cpp:
        * Plugins/PluginStream.cpp:
        * Plugins/PluginView.cpp:
        * Plugins/PluginViewWin.cpp:
        * Plugins/npapi.cpp:
        * WebKitMessageLoop.cpp:
        * WebKitPrefix.h:
        * storage/WebDatabaseProvider.cpp:

2018-01-13  Darin Adler  <darin@apple.com>

        Event improvements
        https://bugs.webkit.org/show_bug.cgi?id=179591

        Reviewed by Chris Dumez.

        * Plugins/PluginView.cpp: Removed include of ScriptValue.h.
        * WebFrame.cpp: Ditto.

        * WebScriptWorld.cpp:
        (WebScriptWorld::scriptWorldForGlobalContext): Pass reference to currentWorld.

        * WebView.cpp: Removed include of ScriptValue.h.
        (WebView::handleEditingKeyboardEvent): Updated for name change from
        keyEvent to underlyingPlatformEvent.

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.

        * Plugins/PluginView.cpp:
        * Plugins/PluginViewWin.cpp:
        * WebCoreSupport/WebInspectorClient.cpp:
        * WebCoreSupport/WebInspectorClient.h:
        * WebFrame.cpp:
        * WebJavaScriptCollector.cpp:
        * WebView.cpp:

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

        Unreviewed, another attempt to fix the Windows build after r227479.

        * WebFrame.cpp:
        (WebFrame::elementWithName):

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

        Unreviewed, try to fix the Windows build after r227479.

        Tweak some Windows WebKitLegacy code to use updated HTMLFormElement methods.

        * WebFrame.cpp:
        (WebFrame::elementWithName):
        (WebFrame::controlsInForm):

2018-01-19  Per Arne Vollan  <pvollan@apple.com>

        [Win] Compile error: 'WebKitQuartzCoreAdditionsBase.h' not found.
        https://bugs.webkit.org/show_bug.cgi?id=181859
        <rdar://problem/36659886>

        Reviewed by Alex Christensen.
        
        Use local include patch.

        * WebKitQuartzCoreAdditions/API/WKCACFImage.h:
        * WebKitQuartzCoreAdditions/API/WKCACFView.h:
        * WebKitQuartzCoreAdditions/API/WKCACFViewPrivate.h:

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.

        * WebPreferences.cpp:
        (WebPreferences::fetchAPIKeepAliveEnabled):
        (WebPreferences::setFetchAPIKeepAliveEnabled):
        * WebPreferences.h:
        * WebView.cpp:
        (WebView::notifyPreferencesChanged):

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.cpp:
        (WebEditorClient::replacementURLForResource):
        * WebCoreSupport/WebEditorClient.h:

2017-12-28  Yusuke Suzuki  <utatane.tea@gmail.com>

        Remove std::chrono completely
        https://bugs.webkit.org/show_bug.cgi?id=181186

        Reviewed by Alex Christensen.

        * Plugins/PluginStream.cpp:
        (WebCore::lastModifiedDateMS):

2018-01-02  Fujii Hironori  <Hironori.Fujii@sony.com>

        [Win] Web Inspector: Wrongly placed inspector highlight in HiDPI
        https://bugs.webkit.org/show_bug.cgi?id=181173

        Reviewed by Alex Christensen.

        * WebNodeHighlight.cpp:
        (WebNodeHighlight::update): Scale the GraphicsContext.

2017-12-26  Carlos Alberto Lopez Perez  <clopez@igalia.com>

        REGRESSION(r225769): Build error with constexpr std::max // std::min in libdstdc++4
        https://bugs.webkit.org/show_bug.cgi?id=181160

        Reviewed by Myles C. Maxfield.

        * Plugins/PluginView.cpp:
        (WebCore::PluginView::handlePost): Disambiguate usage of min (Use the version from stdlib).

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.cpp:
        (WebChromeClient::enterVideoFullscreenForVideoElement):
        * WebCoreSupport/WebChromeClient.h:

2017-12-18  Fujii Hironori  <Hironori.Fujii@sony.com>

        [Win] SHOULD NEVER BE REACHED in WebFrameLoaderClient::pageID
        https://bugs.webkit.org/show_bug.cgi?id=180926

        Reviewed by Tim Horton.

        Apply the same change of mac/WebCoreSupport/WebFrameLoaderClient.mm
        of r225934 to win/WebCoreSupport/WebFrameLoaderClient.cpp.

        * WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebFrameLoaderClient::frameID const): Removed RELEASE_ASSERT_NOT_REACHED.
        (WebFrameLoaderClient::pageID const): Ditto.

2017-12-16  Yusuke Suzuki  <utatane.tea@gmail.com>

        Remove unnecessary boolean result of start() functions
        https://bugs.webkit.org/show_bug.cgi?id=180856

        Reviewed by Darin Adler.

        It always returns true.

        * WebDownloadCurl.cpp:
        (WebDownload::start):

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.cpp:
        (WebFrameLoaderClient::pageID const):
        (WebFrameLoaderClient::frameID const):
            Now return an optional.
        * WebCoreSupport/WebFrameLoaderClient.h:
        * WebCoreSupport/WebPlatformStrategies.cpp:
        (WebPlatformStrategies::cookiesForDOM):
        (WebPlatformStrategies::setCookiesFromDOM):
        (WebPlatformStrategies::cookieRequestHeaderFieldValue):
        (WebPlatformStrategies::getRawCookies):
        * WebCoreSupport/WebPlatformStrategies.h:

2017-12-12  Yusuke Suzuki  <utatane.tea@gmail.com>

        [WTF] Thread::create should have Thread::tryCreate
        https://bugs.webkit.org/show_bug.cgi?id=180333

        Reviewed by Darin Adler.

        * WebKitQuartzCoreAdditions/CVDisplayLink.cpp:
        (WKQCA::CVDisplayLink::start):

2017-12-08  Yusuke Suzuki  <utatane.tea@gmail.com>

        Use StaticLock and Lock instead of Mutex in Windows WebKitLegacy
        https://bugs.webkit.org/show_bug.cgi?id=180572

        Reviewed by Mark Lam.

        Use StaticLock and drop DEPRECATED_DEFINE_STATIC_LOCAL.
        Also we use Lock instead of Mutex.

        * WebKitQuartzCoreAdditions/CAD3DRenderer.cpp:
        (WKQCA::CAD3DRenderer::swapChain):
        (WKQCA::CAD3DRenderer::renderAndPresent):
        (WKQCA::CAD3DRenderer::renderToImage):
        (WKQCA::CAD3DRenderer::setDeviceIsLost):
        (WKQCA::CAD3DRenderer::renderInternal):
        * WebKitQuartzCoreAdditions/CAD3DRenderer.h:
        * WebKitQuartzCoreAdditions/CAView.cpp:
        (WKQCA::CAView::Handle::create):
        Return Ref<Handle> instead of RefPtr<>.

        (WKQCA::CAView::Handle::lock):
        (WKQCA::CAView::Handle::view const):
        (WKQCA::CAView::Handle::clear):
        (WKQCA::views):
        (WKQCA::viewsNeedingUpdate):
        (WKQCA::CAView::releaseAllD3DResources):
        (WKQCA::CAView::CAView):
        (WKQCA::CAView::~CAView):
        (WKQCA::CAView::setLayer):
        (WKQCA::CAView::update):
        (WKQCA::CAView::drawToWindow):
        (WKQCA::CAView::drawToWindowInternal):
        (WKQCA::CAView::drawToImage):
        (WKQCA::CAView::willDraw):
        (WKQCA::CAView::drawIntoDC):
        (WKQCA::CAView::setShouldInvertColors):
        (WKQCA::CAView::scheduleNextDraw):
        (WKQCA::CAView::displayLinkReachedCAMediaTime):
        (WKQCA::CAView::contextDidChange):
        (WKQCA::CAView::updateSoon):
        (WKQCA::CAView::updateViewsNow):
        (WKQCA::CAView::d3dDevice9):
        (WKQCA::CAView::Handle::mutex): Deleted.
        (WKQCA::globalStateMutex): Deleted.
        (): Deleted.
        * WebKitQuartzCoreAdditions/CAView.h:

2017-12-07  Yusuke Suzuki  <utatane.tea@gmail.com>

        Use StaticLock instead of NeverDestroyed<Lock>
        https://bugs.webkit.org/show_bug.cgi?id=180507

        Reviewed by Saam Barati.

        * WebLocalizableStrings.cpp:
        (findCachedString):
        (cacheString):
        (mainBundleLocStrings): Deleted.
        (frameworkLocStringsMutex): Deleted.

2017-12-05  Per Arne Vollan  <pvollan@apple.com>

        [Win] Scrollbars are sometimes not rendered in accelerated compositing mode.
        https://bugs.webkit.org/show_bug.cgi?id=180431
        <rdar://problem/34531264>

        Reviewed by Simon Fraser.

        Fix the signatures of GraphicsLayerClient that should have been overridden, and use
        'override' to make sure this doesn't break in the future.

        * WebView.cpp:
        (WebView::notifyAnimationStarted):
        (WebView::paintContents):
        * WebView.h:

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.cpp:
        (WebView::searchFor): Use |= instead of | to build FindOptions.
        (WebView::markAllMatchesForText): Create FindOptions with |= instead of |.
        (WebView::findString): Create FindOptions with |=; the old code just passed a
        WebKit FindOptions through without converting to WebCore::FindOptions.

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.

        * Plugins/PluginDatabaseWin.cpp:
        (WebCore::PluginDatabase::getPluginPathsInDirectories const): Use
        startsWithLettersIgnoringASCIICase and endsWithIgnoringASCIICase.
        * WebDownloadCFNet.cpp:
        (WebDownload::initToResumeWithBundle): Use endsWithIgnoringASCIICase.

        * WebView.cpp:
        (WebView::markAllMatchesForText): Fix old code that was passing TextCaseSensitivity
        to a function that actually takes FindOptions. By luck, TextCaseSensitive happens to
        be 0, which is correct FindOptions for case sensitive matching, and TextCaseInsensitive
        happens to be 1, which is correct FindOptions for case insensitive matching, so fixing
        the code does not cause any change in behavior.

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.

        * Interfaces/IWebPreferencesPrivate.idl:
        * WebPreferenceKeysPrivate.h:
        * WebPreferences.cpp:
        (WebPreferences::initializeDefaultSettings):
        (WebPreferences::visualViewportAPIEnabled):
        (WebPreferences::setVisualViewportAPIEnabled):
        * WebPreferences.h:
        * WebView.cpp:
        (WebView::notifyPreferencesChanged):

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.

        * Interfaces/IWebPreferencesPrivate.idl:
        * WebPreferenceKeysPrivate.h:
        * WebPreferences.cpp:
        (WebPreferences::initializeDefaultSettings):
        (WebPreferences::visualViewportAPIEnabled):
        (WebPreferences::setVisualViewportAPIEnabled):
        * WebPreferences.h:
        * WebView.cpp:
        (WebView::notifyPreferencesChanged):

2017-11-14  Alex Christensen  <achristensen@webkit.org>

        Clean up old URL parser remnants
        https://bugs.webkit.org/show_bug.cgi?id=179573

        Reviewed by Darin Adler.

        * WebCoreSupport/WebContextMenuClient.cpp:
        (WebContextMenuClient::searchWithGoogle):
        Use https if we do end up searching with google.

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.

        * WebView.cpp:
        (WebView::handleEditingKeyboardEvent): Use downcast.

2017-11-09  Christopher Reid  <chris.reid@sony.com>

        Use enum classes within FileSystem
        https://bugs.webkit.org/show_bug.cgi?id=175172

        Reviewed by Darin Adler.

        * Plugins/PluginDatabase.cpp:

2017-11-06  Per Arne Vollan  <pvollan@apple.com>

        [Win] Add WebKitQuartzCoreAdditions library.
        https://bugs.webkit.org/show_bug.cgi?id=179331

        Reviewed by Alex Christensen.

        * WebKitQuartzCoreAdditions: Added.
        * WebKitQuartzCoreAdditions/API: Added.
        * WebKitQuartzCoreAdditions/API/WKCACFImage.cpp: Added.
        (toImage):
        (WKCACFImageGetWidth):
        (WKCACFImageGetHeight):
        (WKCACFImageCopyFileMapping):
        (WKCACFImageCreateWithImage):
        (WKCACFImageFinalize):
        (WKCACFImageCopyFormattingDescription):
        (WKCACFImageCopyDebugDescription):
        (WKCACFImageGetTypeID):
        * WebKitQuartzCoreAdditions/API/WKCACFImage.h: Added.
        * WebKitQuartzCoreAdditions/API/WKCACFImageInternal.h: Added.
        * WebKitQuartzCoreAdditions/API/WKCACFView.cpp: Added.
        (toView):
        (toImpl):
        (WKCACFViewCreate):
        (WKCACFViewSetLayer):
        (WKCACFViewUpdate):
        (WKCACFViewFlushContext):
        (WKCACFViewInvalidateRects):
        (WKCACFViewCanDraw):
        (WKCACFViewDraw):
        (WKCACFViewCopyDrawnImage):
        (WKCACFViewDrawIntoDC):
        (contextDidChangeCallback):
        (WKCACFViewSetContextDidChangeCallback):
        (WKCACFViewGetLastCommitTime):
        (WKCACFViewSetContextUserData):
        (WKCACFViewGetContext):
        (WKCACFViewFinalize):
        (WKCACFViewCopyFormattingDescription):
        (WKCACFViewCopyDebugDescription):
        (WKCACFViewGetTypeID):
        (WKCACFViewSetShouldInvertColors):
        (WKCACFViewGetD3DDevice9):
        * WebKitQuartzCoreAdditions/API/WKCACFView.h: Added.
        * WebKitQuartzCoreAdditions/API/WKCACFViewPrivate.h: Added.
        * WebKitQuartzCoreAdditions/API/WebKitQuartzCoreAdditions.cpp: Added.
        (WKQCA::dllInstance):
        (DllMain):
        (WKCACFShutDown):
        * WebKitQuartzCoreAdditions/API/WebKitQuartzCoreAdditionsBase.h: Added.
        * WebKitQuartzCoreAdditions/CAD3DRenderer.cpp: Added.
        (WKQCA::D3DPostProcessingContext::D3DPostProcessingContext):
        (WKQCA::d3d):
        (WKQCA::initialPresentationParameters):
        (WKQCA::CAD3DRenderer::shared):
        (WKQCA::CAD3DRenderer::CAD3DRenderer):
        (WKQCA::CAD3DRenderer::swapChain):
        (WKQCA::CAD3DRenderer::createD3DPostProcessingContext):
        (WKQCA::hardwareCapabilitiesIndicateCoreAnimationSupport):
        (WKQCA::CAD3DRenderer::initialize):
        (WKQCA::D3DMatrixOrthoOffCenterRH):
        (WKQCA::prepareDevice):
        (WKQCA::updateBounds):
        (WKQCA::CAD3DRenderer::renderAndPresent):
        (WKQCA::CAD3DRenderer::renderToImage):
        (WKQCA::CAD3DRenderer::setDeviceIsLost):
        (WKQCA::CAD3DRenderer::renderInternal):
        (WKQCA::CAD3DRenderer::postProcess):
        (WKQCA::CAD3DRenderer::resetD3DDevice):
        (WKQCA::CAD3DRenderer::createShaderIfNeeded):
        (WKQCA::CAD3DRenderer::release):
        * WebKitQuartzCoreAdditions/CAD3DRenderer.h: Added.
        (WKQCA::D3DPostProcessingContext::sceneTexture const):
        (WKQCA::D3DPostProcessingContext::overlayQuad const):
        (WKQCA::CAD3DRenderer::d3dDevice9 const):
        * WebKitQuartzCoreAdditions/CAView.cpp: Added.
        (WKQCA::CAView::Handle::create):
        (WKQCA::CAView::Handle::~Handle):
        (WKQCA::CAView::Handle::mutex):
        (WKQCA::CAView::Handle::view const):
        (WKQCA::CAView::Handle::clear):
        (WKQCA::CAView::Handle::Handle):
        (WKQCA::globalStateMutex):
        (WKQCA::registerMessageWindowClass):
        (WKQCA::createMessageWindow):
        (WKQCA::CAView::releaseAllD3DResources):
        (WKQCA::CAView::CAView):
        (WKQCA::CAView::~CAView):
        (WKQCA::CAView::create):
        (WKQCA::CAView::setContextDidChangeCallback):
        (WKQCA::CAView::setLayer):
        (WKQCA::CAView::update):
        (WKQCA::CAView::invalidateRects):
        (WKQCA::CAView::drawToWindow):
        (WKQCA::CAView::drawToWindowInternal):
        (WKQCA::CAView::drawToImage):
        (WKQCA::CAView::willDraw):
        (WKQCA::CAView::didDraw):
        (WKQCA::CAView::drawIntoDC):
        (WKQCA::CAView::setShouldInvertColors):
        (WKQCA::CAView::scheduleNextDraw):
        (WKQCA::CAView::displayLinkReachedCAMediaTime):
        (WKQCA::CAView::contextDidChangeCallback):
        (WKQCA::CAView::contextDidChange):
        (WKQCA::CAView::updateSoon):
        (WKQCA::CAView::updateViewsNow):
        (WKQCA::CAView::d3dDevice9):
        * WebKitQuartzCoreAdditions/CAView.h: Added.
        (WKQCA::CAView::context const):
        (WKQCA::CAView::canDraw const):
        (WKQCA::CAView::ContextDidChangeCallback::ContextDidChangeCallback):
        * WebKitQuartzCoreAdditions/CMakeLists.txt: Added.
        * WebKitQuartzCoreAdditions/CVDisplayLink.cpp: Added.
        (WKQCA::CVDisplayLink::CVDisplayLink):
        (WKQCA::CVDisplayLink::~CVDisplayLink):
        (WKQCA::CVDisplayLink::create):
        (WKQCA::CVDisplayLink::start):
        (WKQCA::CVDisplayLink::stop):
        (WKQCA::CVDisplayLink::setPaused):
        (WKQCA::CVDisplayLink::runIOThread):
        * WebKitQuartzCoreAdditions/CVDisplayLink.h: Added.
        * WebKitQuartzCoreAdditions/CVDisplayLinkClient.h: Added.
        (WKQCA::CVDisplayLinkClient::~CVDisplayLinkClient):
        * WebKitQuartzCoreAdditions/Image.cpp: Added.
        (WKQCA::numBytesForSize):
        (WKQCA::Image::create):
        (WKQCA::Image::Image):
        (WKQCA::Image::~Image):
        (WKQCA::bitmapInfo):
        (WKQCA::Image::createDIB const):
        (WKQCA::Image::copyFileMapping):
        * WebKitQuartzCoreAdditions/Image.h: Added.
        (WKQCA::Image::size const):
        * WebKitQuartzCoreAdditions/ImageConversion.cpp: Added.
        (WKQCA::getBackBufferRectAsRenderTarget):
        (WKQCA::getSystemMemoryCopy):
        (WKQCA::copyRectToBitmap):
        (WKQCA::getImageCopy):
        (WKQCA::getBackBufferRectAsImage):
        * WebKitQuartzCoreAdditions/ImageConversion.h: Added.
        * WebKitQuartzCoreAdditions/InvertColorPS.hlsl: Added.
        * WebKitQuartzCoreAdditions/WebKitQuartzCoreAdditionsInternal.h: Added.
        * WebKitQuartzCoreAdditions/WebKitQuartzCoreAdditionsPrefix.cpp: Added.
        * WebKitQuartzCoreAdditions/WebKitQuartzCoreAdditionsPrefix.h: Added.

2017-11-06  Christopher Reid  <chris.reid@sony.com>

        Use enum classes within FileSystem
        https://bugs.webkit.org/show_bug.cgi?id=175172

        Reviewed by Myles C. Maxfield.

        * Plugins/PluginDatabase.cpp:

2017-11-02  Maciej Stachowiak  <mjs@apple.com>

        Don't try to guess plugin MIME type from a file extension in a URL (no observable effect)
        https://bugs.webkit.org/show_bug.cgi?id=178333

        Reviewed by Darin Adler.

        * WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebFrameLoaderClient::objectContentType): Remove unnecessary call to mimeTypeFromURL

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/PluginStream.cpp:
        (WebCore::PluginStream::willSendRequest):
        * Plugins/PluginStream.h:
        (WebCore::PluginStreamClient::~PluginStreamClient):
        (WebCore::PluginStreamClient::streamDidFinishLoading):
        (WebCore::PluginStream::create):
        (WebCore::PluginStream::setLoadManually):

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.

        * Plugins/PluginDatabase.cpp:
        * Plugins/PluginPackage.cpp:
        * Plugins/PluginStream.cpp:
        * Plugins/PluginStream.h:
        * WebApplicationCache.cpp:
        * WebDatabaseManager.cpp:
        * WebDownloadCurl.cpp:
        * WebPreferences.cpp:
        * WebView.cpp:

2017-10-31  Alex Christensen  <achristensen@webkit.org>

        Fix Windows build after r224260

        * WebView.cpp:
        (WebView::gesture):

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.

        * WebFrame.cpp:
        (WebFrame::layout):

2017-10-26  Alex Christensen  <achristensen@webkit.org>

        Fix Windows build
        https://bugs.webkit.org/show_bug.cgi?id=178892

        * AccessibleBase.cpp:
        (MSAARole):

2017-10-26  Alex Christensen  <achristensen@webkit.org>

        Fix Windows build
        https://bugs.webkit.org/show_bug.cgi?id=178892

        * AccessibleBase.cpp:
        (AccessibleBase::state const):
        (MSAARole):

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.

        Added implementation to the new getters.
        They are noop in the context of WK1.

        * WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebFrameLoaderClient::pageID const):
        (WebFrameLoaderClient::frameID const):
        (WebFrameLoaderClient::sessionID const):
        * WebCoreSupport/WebFrameLoaderClient.h:

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.

        * WebView.cpp:
        (WebView::notifyPreferencesChanged):

2017-10-20  Basuke Suzuki  <Basuke.Suzuki@sony.com>

        [Curl] Clean up old style code in old curl files.
        https://bugs.webkit.org/show_bug.cgi?id=178569

        Reviewed by Ryosuke Niwa.

        * WebCache.cpp:
        (WebCache::cacheFolder):
        (WebCache::setCacheFolder):
        * WebView.cpp:
        (WebView::setCacheModel):

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.

        * WebView.cpp:
        (WebView::initWithFrame):

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.

        * WebView.cpp:
        (WebView::handleEditingKeyboardEvent):
        Change the type of node as toNode() is changed to return RefPtr.

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.cpp:
        (WebView::notifyPreferencesChanged):
            
            Update for naming changes of FrameFlattening now that it is an enum class.

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.cpp:
        (WebGeolocationClient::lastPosition):
        * WebCoreSupport/WebGeolocationClient.h:
        * WebGeolocationPosition.cpp:
        (WebGeolocationPosition::initWithTimestamp):
        (core):
        * WebGeolocationPosition.h:
        (WebGeolocationPosition::impl const):

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.cpp:
        (WebPlatformStrategies::cookiesEnabled):
        * WebCoreSupport/WebPlatformStrategies.h:

2017-10-03  Basuke Suzuki  <Basuke.Suzuki@sony.com>

        [Curl] Reimplement CurlDownload with CurlRequest
        https://bugs.webkit.org/show_bug.cgi?id=177779

        Reviewed by Alex Christensen.

        * WebDownload.h:
        * WebDownloadCurl.cpp:
        (WebDownload::init):
        (WebDownload::didReceiveResponse):

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.cpp:
        (WebVisitedLinkStore::addVisitedLink):
        (WebVisitedLinkStore::isLinkVisited):
        (WebVisitedLinkStore::addVisitedLinkHash):
        * WebCoreSupport/WebVisitedLinkStore.h:

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.

        * WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebFrameLoaderClient::dispatchDecidePolicyForResponse):
        (WebFrameLoaderClient::dispatchDecidePolicyForNewWindowAction):
        (WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
        * WebFramePolicyListener.cpp:
        (WebFramePolicyListener::use):
        (WebFramePolicyListener::download):
        (WebFramePolicyListener::ignore):
        (WebFramePolicyListener::continueSubmit):

2017-09-07  Per Arne Vollan  <pvollan@apple.com>

        [Win] fast/canvas/2d.getPath.modification.html is failing.
        https://bugs.webkit.org/show_bug.cgi?id=176534

        Reviewed by Alex Christensen.

        We need to enable Inspector additions at runtime in order to expose the getPath function.

        * Interfaces/IWebPreferencesPrivate.idl:
        * WebPreferenceKeysPrivate.h:
        * WebPreferences.cpp:
        (WebPreferences::initializeDefaultSettings):
        (WebPreferences::setDataTransferItemsEnabled):
        (WebPreferences::inspectorAdditionsEnabled):
        (WebPreferences::setInspectorAdditionsEnabled):
        * WebPreferences.h:
        * WebView.cpp:
        (WebView::notifyPreferencesChanged):

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.cpp:
        (WebGeolocationClient::requestPermission):
        * WebCoreSupport/WebGeolocationClient.h:
        (WebGeolocationClient::setEnableHighAccuracy): Deleted.
        (WebGeolocationClient::cancelPermissionRequest): Deleted.
        * WebGeolocationPolicyListener.h:
        * WebView.cpp:
        (WebView::initWithFrame):
        (WebView::geolocationDidFailWithError):

2017-09-07  Per Arne Vollan  <pvollan@apple.com>

        [Win] Enable DatatransferItems in DRT.
        https://bugs.webkit.org/show_bug.cgi?id=176424

        Reviewed by Brent Fulgham.

        * Interfaces/IWebPreferencesPrivate.idl:
        * WebPreferenceKeysPrivate.h:
        * WebPreferences.cpp:
        (WebPreferences::initializeDefaultSettings):
        (WebPreferences::QueryInterface):
        (WebPreferences::isSecureContextAttributeEnabled):
        (WebPreferences::dataTransferItemsEnabled):
        (WebPreferences::setDataTransferItemsEnabled):
        * WebPreferences.h:
        * WebView.cpp:
        (WebView::notifyPreferencesChanged):

2017-08-28  Brent Fulgham  <bfulgham@apple.com>

        Unreviewed build fix #2 after r221275.

        * WebCoreSupport/WebPlatformStrategies.cpp:
        (WebPlatformStrategies::cookieRequestHeaderFieldValue): Correct return type and arguments
        to match new API.
        * WebCoreSupport/WebPlatformStrategies.h: Update signatures.

2017-08-28  Brent Fulgham  <bfulgham@apple.com>

        Unreviewed build fix after r221275.

        * WebCoreSupport/WebPlatformStrategies.cpp:
        (WebPlatformStrategies::cookieRequestHeaderFieldValue): Correct return type and arguments
        to match new API.

2017-08-28  Per Arne Vollan  <pvollan@apple.com>

        [Win] The test http/tests/misc/policy-delegate-called-twice.html is crashing.
        https://bugs.webkit.org/show_bug.cgi?id=176031

        Reviewed by Brent Fulgham.

        When the function in the FramePolicyFunction parameter is called, it has already been moved
        to an internal member by the setUpPolicyListener method, and is no longer valid. Invoke the
        function by using the stored member instead.

        * WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebFrameLoaderClient::dispatchDecidePolicyForResponse):
        (WebFrameLoaderClient::dispatchDecidePolicyForNewWindowAction):
        (WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):

2017-08-22  Wenson Hsieh  <wenson_hsieh@apple.com>

        Unreviewed, try to fix the Windows build after r221064

        didEndUserTriggeredSelectionChanges is virtual, and needs to be overridden in WebEditorClient.

        * WebCoreSupport/WebEditorClient.h:

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  Brent Fulgham  <bfulgham@apple.com>

        Unreviewed build fix after r221017.

        Correct copy/paste error.

        * WebCoreSupport/WebPlatformStrategies.cpp:
        (WebPlatformStrategies::cookiesForDOM):

2017-08-22  Brent Fulgham  <bfulgham@apple.com>

        Unreviewed build fix after r221017.

        * WebCoreSupport/WebPlatformStrategies.cpp:
        (WebPlatformStrategies::cookiesForDOM): Update for new signature.
        * WebCoreSupport/WebPlatformStrategies.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.cpp:
        (WebChromeClient::hasOpenedPopup const): Deleted.
        * WebCoreSupport/WebChromeClient.h:

2017-08-18  Per Arne Vollan  <pvollan@apple.com>

        [Win] accessibility/heading-crash-after-hidden.html is a flaky crash.
        https://bugs.webkit.org/show_bug.cgi?id=173536

        Reviewed by Brent Fulgham.

        If the tree state is dirty, accessible objects are deleted while iterating over children
        under AccessibilityNodeObject::textUnderElement when the style is updated. Make sure the
        style is updated before this method is called.

        * AccessibleBase.cpp:
        (AccessibleBase::getAccessibilityObjectForChild):

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.

        * WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebFrameLoaderClient::convertMainResourceLoadToDownload):
        * WebCoreSupport/WebFrameLoaderClient.h:
        * WebCoreSupport/WebFrameNetworkingContext.cpp:
        (WebFrameNetworkingContext::setCookieAcceptPolicyForAllContexts):
        (WebFrameNetworkingContext::ensurePrivateBrowsingSession):
        (WebFrameNetworkingContext::destroyPrivateBrowsingSession):
        (WebFrameNetworkingContext::storageSession const):
        * WebCoreSupport/WebPlatformStrategies.cpp:
        (WebPlatformStrategies::cookieRequestHeaderFieldValue):
        * WebCoreSupport/WebPlatformStrategies.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.cpp:
        (WebView::initWithFrame):

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.cpp:
        (WebView::setCompositionForTesting): Use text color for
        composition underline.

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.cpp:
        (WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
        * WebCoreSupport/WebFrameLoaderClient.h:

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.

        * FullscreenVideoController.cpp:
        (FullscreenVideoController::LayerClient::platformCALayerPaintContents):
        * WebCoreSupport/AcceleratedCompositingContext.cpp:
        (AcceleratedCompositingContext::paintContents):
        * WebCoreSupport/AcceleratedCompositingContext.h:

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.

        * Plugins/PluginDatabase.cpp:
        (WebCore::persistentPluginMetadataCachePath): Use NeverDestroyed
        instead of DEPRECATED_DEFINE_STATIC_LOCAL.
        * Plugins/PluginMainThreadScheduler.cpp:
        (WebCore::PluginMainThreadScheduler::scheduler): Ditto.
        * Plugins/PluginMainThreadScheduler.h: Ditto.
        * WebCoreSupport/WebPlatformStrategies.cpp:
        (WebPlatformStrategies::initialize): Ditto.
        * WebCoreSupport/WebPlatformStrategies.h: Ditto.
        * WebHistory.cpp:
        (sharedHistoryStorage): Ditto.
        * WebLocalizableStrings.cpp:
        (mainBundleLocStrings): Ditto.
        (frameworkLocStringsMutex): Ditto.
        (frameworkLocStrings): Ditto.
        * WebView.cpp:
        (WebView::standardUserAgentWithApplicationName): Ditto.
        Also changed to keep one global string with the prefix of the user agent string
        instead of keeping two globals with pieces of that prefix.

2017-07-24  Chris Dumez  <cdumez@apple.com>

        Make ExceptionCode a proper enumeration
        https://bugs.webkit.org/show_bug.cgi?id=174771

        Reviewed by Sam Weinig.

        Make ExceptionCode a proper enumeration instead of a typedef to uint8_t.

        * DOMCoreClasses.cpp:
        (DOMDocument::createEvent):
        * WebView.cpp:
        (WebView::prepareCandidateWindow):

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.

        * DOMEventsClasses.cpp:
        (WebEventListener::handleEvent):
        * DOMEventsClasses.h:
        * Plugins/PluginView.cpp:
        (WebCore::PluginView::handleEvent):
        * Plugins/PluginView.h:

2017-07-20  Brady Eidson  <beidson@apple.com>

        Remove WebIconDatabase from WebKitLegacy/win.
        https://bugs.webkit.org/show_bug.cgi?id=174608

        Reviewed by Alex Christensen.

        It is unused.
        
        * ForEachCoClass.h:

        * Interfaces/IWebIconDatabase.idl: Removed.

        * Interfaces/WebKit.idl:

        * WebCoreStatistics.cpp:
        (WebCoreStatistics::iconPageURLMappingCount):
        (WebCoreStatistics::iconRetainedPageURLCount):
        (WebCoreStatistics::iconRecordCount):
        (WebCoreStatistics::iconsWithDataCount):

        * WebIconDatabase.cpp: Removed.
        * WebIconDatabase.h: Removed.
        * WebKitClassFactory.cpp:

        * WebKitDLL.cpp:
        (shutDownWebKit):

        * WebKitLogging.h:

        * WebView.cpp:
        (WebView::close):
        (WebView::notifyDidAddIcon):
        (WebView::registerForIconNotification):
        (WebView::dispatchDidReceiveIconFromWebFrame):
        (WebView::onNotify):

2017-07-18  Matt Lewis  <jlewis3@apple.com>

        Unreviewed, rolling out r219610.

        This caused an api failure on all platforms for the test
        SnapshotImageLargeAsyncDecoding

        Reverted changeset:

        "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
        http://trac.webkit.org/changeset/219610

2017-07-18  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

        Reviewed by Simon Fraser.

        * FullscreenVideoController.cpp:
        (FullscreenVideoController::LayerClient::platformCALayerPaintContents):
        * WebCoreSupport/AcceleratedCompositingContext.cpp:
        (AcceleratedCompositingContext::paintContents):
        * WebCoreSupport/AcceleratedCompositingContext.h:

2017-07-14  Basuke Suzuki  <Basuke.Suzuki@sony.com>

        [Curl] Don't start downloading more than once for same request
        https://bugs.webkit.org/show_bug.cgi?id=174172

        Reviewed by Alex Christensen.

        * WebDownloadCurl.cpp:
        (WebDownload::init):

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.

        * Plugins/PluginView.cpp:
        (WebCore::PluginView::start):
        (WebCore::PluginView::getURLNotify):
        (WebCore::PluginView::getURL):
        (WebCore::PluginView::handlePost):

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.

        * WebKitClassFactory.cpp:
        * WebView.cpp:

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.

        * Plugins/PluginView.cpp:
        (WebCore::PluginView::start):
        (WebCore::PluginView::getURLNotify):
        (WebCore::PluginView::getURL):
        (WebCore::PluginView::handlePost):

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.

        * WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebFrameLoaderClient::dispatchDidReceiveIcon): Deleted.
        (WebFrameLoaderClient::registerForIconNotification): Deleted.
        * WebCoreSupport/WebFrameLoaderClient.h:

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/WebFrameLoaderClient.cpp:
        (WebFrameLoaderClient::transitionToCommittedForNewPage):

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.

        * Plugins/PluginView.cpp:
        (WebCore::PluginView::start):
        (WebCore::PluginView::getURLNotify):
        (WebCore::PluginView::getURL):
        (WebCore::PluginView::handlePost):

2017-06-27  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.

        Adjust for changes to WebDragClient::startDrag by pulling information out of DragItem.

        * WebCoreSupport/WebDragClient.cpp:
        (WebDragClient::startDrag):
        * WebCoreSupport/WebDragClient.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/PluginPackage.cpp:

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/PluginView.cpp:
        (WebCore::PluginView::start):
        (WebCore::PluginView::performRequest):
        (WebCore::PluginView::load):
        (WebCore::PluginView::getURLNotify):
        (WebCore::PluginView::getURL):
        (WebCore::PluginView::handlePost):
        * Plugins/PluginView.h:
        (WebCore::PluginRequest::PluginRequest):

2017-06-22  Daniel Bates  <dabates@apple.com>

        [Win] Cleanup: Remove unnecessary include of header FrameLoadRequest.h
        https://bugs.webkit.org/show_bug.cgi?id=173683

        Reviewed by Alex Christensen.

        Neither file PluginViewWin.cpp nor WebContextMenuClient.cpp need to include
        header FrameLoadRequest.h. The former includes FrameLoadRequest.h indirectly
        by including PluginView.h. The latter does not make use of the functionality
        provided by FrameLoadRequest.h.

        * Plugins/PluginViewWin.cpp:
        * WebCoreSupport/WebContextMenuClient.cpp:

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.

        * Plugins/PluginView.cpp:
        (WebCore::PluginView::start): Explicitly pass an empty ResourceRequest (we populate it after
        we instantiate the FrameLoadRequest) and pass the null-string for the target frame name as
        we do not have one. Use C++11 brace initialization syntax.
        (WebCore::PluginView::getURLNotify): Explicitly pass the null-string for the target frame
        name as we do not have one. Use C++11 brace initialization syntax.
        (WebCore::PluginView::getURL): Ditto.
        (WebCore::PluginView::handlePost): Move instantiation of FrameLoadRequest from the top of the
        function to closer to where it is actually used. Explicitly pass the null-string for the target
        frame name as we do not have one. Use C++11 brace initialization syntax.

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/PluginView.cpp:
        (WebCore::PluginView::performRequest):
        * WebFrame.cpp:
        (WebFrame::loadRequest):

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.cpp:
        (WebFrameLoaderClient::dispatchDecidePolicyForResponse):
        (WebFrameLoaderClient::dispatchDecidePolicyForNewWindowAction):
        (WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
        (WebFrameLoaderClient::dispatchWillSubmitForm):
        (WebFrameLoaderClient::setUpPolicyListener):
        (WebFrameLoaderClient::receivedPolicyDecision):
        * WebCoreSupport/WebFrameLoaderClient.h:

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 ajusts the window port to internally use the new preference type for frame flattening.
        However, the "partial frame flattening" value is not exposed yet.

        * WebView.cpp:
        (WebView::notifyPreferencesChanged): Use the new type for frame flattening.

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/PluginStream.cpp:
        (WebCore::PluginStream::willSendRequest):
        * Plugins/PluginStream.h:

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.

        * DOMHTMLClasses.cpp:
        (DOMHTMLDocument::write):
        (DOMHTMLDocument::writeln):
        Update for new signature of write/writeln.

2017-06-16  Daniel Bates  <dabates@apple.com>

        Cleanup: WebContextMenuClient::searchWithGoogle() should parse URL using URL { URL { }, ... }
        instead of URL { ParsedURLString, ... }
        https://bugs.webkit.org/show_bug.cgi?id=173495
        <rdar://problem/32827445>

        Reviewed by Alex Christensen.

        URL(ParsedURLString, ...) should only be used with a string that was the result of URL::string().
        Otherwise, it will cause an assertion failure if the canonicalized URL differs from the string.
        Although it is unlikely that the hardcoded string in WebContextMenuClient::searchWithGoogle()
        would differ from the canonicalized URL it is best practice to use URL(URL(), ...) to
        parse an arbitrary string that looks like a URL.

        Also modernize the code using C++14 idioms.

        * WebCoreSupport/WebContextMenuClient.cpp:
        (WebContextMenuClient::searchWithGoogle):

2017-06-15  Fujii Hironori  <Hironori.Fujii@sony.com>

        [Win] WebKit shouldn't include the forwarding header of WebKit itself
        https://bugs.webkit.org/show_bug.cgi?id=173352

        Reviewed by Alex Christensen.

        * WebKitPrefix.h: Include WebKit.h of DerivedSources/WebKit instead of DerivedSources/ForwardingHeaders.

2017-06-14  Per Arne Vollan  <pvollan@apple.com>

        [Win] WebKit fails to paint the bottom lines of the window at 125% scale.
        https://bugs.webkit.org/show_bug.cgi?id=173318

        Reviewed by Darin Adler.

        The logical frame size is currently calculated by scaling the frame size in pixels,
        and rounding the coordinates to the nearest integers. The computed logical frame
        size will in some cases be smaller than the scaled frame size in pixels, since it is
        represented as an IntSize. In these cases, the bottom line will not be painted.
        Instead of calculating the logical frame size by rounding the scaled frame in
        pixels, find the enclosing rectangle of the scaled frame rectangle in pixels.

        * WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebFrameLoaderClient::transitionToCommittedForNewPage):

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.

        * Interfaces/IWebPreferencesPrivate.idl: Bump the version.
        * WebPreferenceKeysPrivate.h:
        * WebPreferences.cpp:
        (WebPreferences::initializeDefaultSettings):
        (WebPreferences::QueryInterface):
        (WebPreferences::setIsSecureContextAttributeEnabled):
        (WebPreferences::isSecureContextAttributeEnabled):
        * WebPreferences.h:
        * WebView.cpp:
        (WebView::notifyPreferencesChanged):

2017-06-13  Per Arne Vollan  <pvollan@apple.com>

        [Win] WebKit fails to paint the bottom lines of the window at 125% scale.
        https://bugs.webkit.org/show_bug.cgi?id=173318

        Reviewed by Alex Christensen.

        The logical frame size is currently calculated by scaling the frame size in pixels,
        and rounding the coordinates to the nearest integers. The computed logical frame
        size will in some cases be smaller than the scaled frame size in pixels, since it is
        represented as an IntSize. In these cases, the bottom line will not be painted.
        Instead of calculating the logical frame size by rounding the scaled frame in
        pixels, find the enclosing rectangle of the scaled frame rectangle in pixels.
 
        * WebView.cpp:
        (WebView::sizeChanged):

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.

        * WebFrame.cpp:
        (WebFrame::stringByEvaluatingJavaScriptInScriptWorld):

2017-06-12  Daewoong Jang  <daewoong.jang@navercorp.com>

        Remove WebCore::unloadModule and related data types
        https://bugs.webkit.org/show_bug.cgi?id=173231

        Reviewed by Darin Adler.

        * Plugins/PlatformModule.h: Added.
        (WebCore::PlatformModuleVersion::PlatformModuleVersion):
        * Plugins/PluginPackage.cpp:
        (WebCore::PluginPackage::freeLibraryTimerFired):
        * Plugins/PluginPackage.h:

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.

        Add a stub implementation for performTwoStepDrop on Windows.

        * WebCoreSupport/WebEditorClient.h:

2017-06-04  Konstantin Tokarev  <annulen@yandex.ru>

        Fix build of Windows-specific code with ICU 59.1
        https://bugs.webkit.org/show_bug.cgi?id=172729

        Reviewed by Darin Adler.

        Fix conversions from WTF::String to wchar_t* and vice versa.

        * Plugins/PluginDatabaseWin.cpp:
        (WebCore::addPluginPathsFromRegistry):
        (WebCore::PluginDatabase::getPluginPathsInDirectories):
        (WebCore::addMozillaPluginDirectories):
        (WebCore::addWindowsMediaPlayerPluginDirectory):
        (WebCore::addAdobeAcrobatPluginDirectory):
        (WebCore::addJavaPluginDirectory):
        (WebCore::safariPluginsDirectory):
        (WebCore::addMacromediaPluginDirectories):
        * Plugins/PluginPackageWin.cpp:
        (WebCore::getVersionInfo):
        (WebCore::PluginPackage::fetchInfo):
        (WebCore::PluginPackage::load):
        * Plugins/PluginViewWin.cpp:
        (WebCore::PluginView::handlePostReadFile):

2017-05-30  Per Arne Vollan  <pvollan@apple.com>

        [Win] fast/shadow-dom/fullscreen-in-slot-fullscreenElement.html is flaky.
        https://bugs.webkit.org/show_bug.cgi?id=172709

        Reviewed by Brent Fulgham.

        Add method to exit fullscreen mode.

        * Interfaces/IWebViewPrivate.idl:
        * WebView.cpp:
        (WebView::exitFullscreenIfNeeded):
        * WebView.h:

2017-05-24  Per Arne Vollan  <pvollan@apple.com>

        [Win] Create unique network storage session for each DRT.
        https://bugs.webkit.org/show_bug.cgi?id=172540

        Reviewed by Brent Fulgham.

        During layout testing, each DRT instance should have its own network storage session.

        * Interfaces/IWebPreferencesPrivate.idl:
        * WebPreferences.cpp:
        (WebPreferences::switchNetworkLoaderToNewTestingSession):
        * WebPreferences.h:

2017-05-24  Fujii Hironori  <Hironori.Fujii@sony.com>

        [WinCairo] AcceleratedCompositingContext.h: error C3668: 'AcceleratedCompositingContext::paintContents': method with override specifier 'override' did not override any base class methods
        https://bugs.webkit.org/show_bug.cgi?id=172535

        Reviewed by Konstantin Tokarev.

        * WebCoreSupport/AcceleratedCompositingContext.cpp:
        (AcceleratedCompositingContext::paintContents): Append the fifth argument.
        * WebCoreSupport/AcceleratedCompositingContext.h: Ditto.

2017-05-14  Per Arne Vollan  <pvollan@apple.com>

        [Win] fast/cookies/local-file-can-set-cookies.html is flaky.
        https://bugs.webkit.org/show_bug.cgi?id=172071

        Reviewed by Alexey Proskuryakov.

        We need to delete all cookies after each test.

        * Interfaces/IWebPreferencesPrivate.idl:
        * WebPreferences.cpp:
        (WebPreferences::linkPreloadEnabled):
        (WebPreferences::clearNetworkLoaderSession):
        * WebPreferences.h:

2017-05-13  Chris Dumez  <cdumez@apple.com>

        Stop using RefPtr::release()
        https://bugs.webkit.org/show_bug.cgi?id=172074

        Reviewed by Geoffrey Garen.

        * WebFrame.cpp:
        (WebFrame::loadPlainTextString):
        (WebFrame::loadHTMLString):
        * WebFramePolicyListener.cpp:
        (WebFramePolicyListener::receivedPolicyDecision):

2017-05-13  Chris Dumez  <cdumez@apple.com>

        Drop uses of PassRefPtr in WebKit/win
        https://bugs.webkit.org/show_bug.cgi?id=172067

        Reviewed by Yusuke Suzuki.

        * DOMEventsClasses.cpp:
        (DOMEvent::DOMEvent):
        (DOMEvent::createInstance):
        * DOMEventsClasses.h:
        (DOMUIEvent::DOMUIEvent):
        (DOMKeyboardEvent::DOMKeyboardEvent):
        (DOMMouseEvent::DOMMouseEvent):
        (DOMMutationEvent::DOMMutationEvent):
        (DOMOverflowEvent::DOMOverflowEvent):
        (DOMWheelEvent::DOMWheelEvent):
        * MemoryStream.cpp:
        (MemoryStream::MemoryStream):
        (MemoryStream::createInstance):
        * MemoryStream.h:
        * Plugins/PluginDatabase.cpp:
        (WebCore::PluginDatabase::refresh):
        (WebCore::PluginDatabase::add):
        (WebCore::PluginDatabase::loadPersistentMetadataCache):
        * Plugins/PluginDatabase.h:
        * Plugins/PluginPackage.cpp:
        (WebCore::PluginPackage::createPackage):
        (WebCore::PluginPackage::createPackageFromCache):
        * Plugins/PluginPackage.h:
        * Plugins/PluginStream.h:
        (WebCore::PluginStream::create):
        * WebActionPropertyBag.cpp:
        (WebActionPropertyBag::WebActionPropertyBag):
        (WebActionPropertyBag::createInstance):
        * WebActionPropertyBag.h:
        * WebArchive.cpp:
        (WebArchive::createInstance):
        (WebArchive::WebArchive):
        * WebArchive.h:
        * WebBackForwardList.cpp:
        (WebBackForwardList::WebBackForwardList):
        (WebBackForwardList::createInstance):
        * WebBackForwardList.h:
        * WebCoreSupport/EmbeddedWidget.cpp:
        (EmbeddedWidget::create):
        * WebCoreSupport/EmbeddedWidget.h:
        * WebCoreSupport/WebChromeClient.h:
        * WebFrame.cpp:
        (WebFrame::loadData):
        (WebFrame::createSubframeWithOwnerElement):
        * WebFrame.h:
        * WebFramePolicyListener.cpp:
        (WebFramePolicyListener::WebFramePolicyListener):
        (WebFramePolicyListener::createInstance):
        * WebFramePolicyListener.h:
        * WebGeolocationPolicyListener.cpp:
        (WebGeolocationPolicyListener::createInstance):
        (WebGeolocationPolicyListener::WebGeolocationPolicyListener):
        * WebGeolocationPolicyListener.h:
        * WebHistoryItem.cpp:
        (WebHistoryItem::WebHistoryItem):
        (WebHistoryItem::createInstance):
        * WebHistoryItem.h:
        * WebMutableURLRequest.cpp:
        (WebMutableURLRequest::setFormData):
        (WebMutableURLRequest::formData):
        * WebMutableURLRequest.h:
        * WebResource.cpp:
        (WebResource::createInstance):
        * WebResource.h:
        * WebScriptWorld.cpp:
        (WebScriptWorld::WebScriptWorld):
        (WebScriptWorld::createInstance):
        * WebScriptWorld.h:
        * WebURLAuthenticationChallengeSender.cpp:
        (WebURLAuthenticationChallengeSender::WebURLAuthenticationChallengeSender):
        (WebURLAuthenticationChallengeSender::createInstance):
        * WebURLAuthenticationChallengeSender.h:
        * WebView.cpp:
        (WebView::setFullScreenElement):
        * WebView.h:

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/PluginView.cpp:
        (WebCore::PluginView::bindingInstance):

2017-05-11  Chris Dumez  <cdumez@apple.com>

        Stop using PassRefPtr in platform/graphics
        https://bugs.webkit.org/show_bug.cgi?id=171977

        Reviewed by Alex Christensen.

        Build fix.

        * FullscreenVideoController.cpp:
        (FullscreenVideoController::enterFullscreen):
        * WebKitDLL.cpp:
        (loadResourceIntoBuffer):

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.

        * WebCoreSupport/WebChromeClient.cpp:
        (WebChromeClient::WebChromeClient):
        * WebCoreSupport/WebChromeClient.h:
        * WebCoreSupport/WebDesktopNotificationsDelegate.cpp:
        * WebCoreSupport/WebDesktopNotificationsDelegate.h:
        Remove legacy notification specific code.

2017-05-09  Dean Jackson  <dino@apple.com>

        Fix Windows build.

        * Plugins/PluginView.h:
        * Plugins/PluginViewWin.cpp:
        (WebCore::PluginView::paint):

2017-05-06  Alexey Proskuryakov  <ap@apple.com>

        REGRESSION (r216294): The new test fails on WebKit1
        https://bugs.webkit.org/show_bug.cgi?id=171780

        Rolling back https://trac.webkit.org/r216294, https://trac.webkit.org/r216296,
        https://trac.webkit.org/216299, https://trac.webkit.org/216330

        * Plugins/PluginView.h:
        * Plugins/PluginViewWin.cpp:
        (WebCore::PluginView::paint):

2017-05-06  Simon Fraser  <simon.fraser@apple.com>

        Fix Windows build after r216294.

        * Plugins/PluginView.h:
        * Plugins/PluginViewWin.cpp:
        (WebCore::PluginView::paint):

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  Don Olmstead  <don.olmstead@am.sony.com>

        [Win] Remove redundant macros that are set in the CMake config
        https://bugs.webkit.org/show_bug.cgi?id=171571

        Reviewed by Brent Fulgham.

        * COMEnumVariant.h:
        * COMPropertyBag.h:
        * WebKitPrefix.h:

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.

        * WebCoreSupport/WebChromeClient.cpp:
        (WebChromeClient::WebChromeClient):
        * WebCoreSupport/WebChromeClient.h:
        * WebCoreSupport/WebDesktopNotificationsDelegate.cpp:
        * WebCoreSupport/WebDesktopNotificationsDelegate.h:
        Remove legacy notification specific code.

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.cpp:
        (WebEditorClient::isSelectTrailingWhitespaceEnabled):
        * WebCoreSupport/WebEditorClient.h:

2017-04-20  Fujii Hironori  <Hironori.Fujii@sony.com>

        [WinCairo] Fix build break after updating ANGLE
        https://bugs.webkit.org/show_bug.cgi?id=170980

        Reviewed by Brent Fulgham.

        * WebCoreSupport/AcceleratedCompositingContext.cpp: Define GL_GLEXT_PROTOTYPES.

2017-04-19  Brent Fulgham  <bfulgham@apple.com>

        [Win] REGRESSION(r215486): Windows Release build is broken
        https://bugs.webkit.org/show_bug.cgi?id=171024
        <rdar://problem/31722618>

        Reviewed by Mark Lam.

        Windows WebKit refers to a handful of JSC methods that are always
        inline. We need to include 'HeapInlines.h' to get the implementation
        of these methods.

        * Plugins/PluginPackage.cpp:
        * WebFrame.cpp:
        * WebView.cpp:

2017-04-15  Wenson Hsieh  <wenson_hsieh@apple.com>

        Unreviewed, fix the Windows build after r215385

        r215385 introduced a new virtual method on ChromeClient that needs to be implemented in WebChromeClient for
        Windows in WebKit1.

        * WebCoreSupport/WebChromeClient.cpp:
        (WebChromeClient::createIconForFiles):
        * WebCoreSupport/WebChromeClient.h:

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/PluginMessageThrottlerWin.cpp:
        (WebCore::PluginMessageThrottlerWin::appendMessage):
        (WebCore::PluginMessageThrottlerWin::messageThrottleTimerFired):
        * Plugins/PluginViewWin.cpp:
        (WebCore::PluginView::invalidateRect):
        * WebCoreSupport/AcceleratedCompositingContext.cpp:
        (AcceleratedCompositingContext::scheduleLayerFlush):

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.

        * FullscreenVideoController.cpp:

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/PluginPackage.cpp:
        (WebCore::PluginPackage::freeLibrarySoon):
        * Plugins/PluginStream.cpp:
        (WebCore::PluginStream::deliverData):
        * Plugins/PluginView.cpp:
        (WebCore::PluginView::requestTimerFired):
        (WebCore::PluginView::scheduleRequest):
        (WebCore::PluginView::setJavaScriptPaused):
        (WebCore::PluginView::keepAlive):
        * Plugins/PluginViewWin.cpp:
        (WebCore::PluginView::wndProc):
        * WebView.cpp:
        (WebView::closeWindowSoon):

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.cpp:
        (WebView::setCacheModel):

2017-03-31  Fujii Hironori  <Hironori.Fujii@sony.com>

        [WinCairo] WebCore::PlatformDisplay::terminateEGLDisplay causes a crash in libGLESv2.dll while processing atexit
        https://bugs.webkit.org/show_bug.cgi?id=170331

        Reviewed by Michael Catanzaro.

        * WebKitDLL.cpp:
        (shutDownWebKit): Call PlatformDisplay::shutDownEglDisplays in shutDownWebKit.

2017-03-30  James Craig  <jcraig@apple.com>

        AX: Expose a new AXSubrole for explicit ARIA "group" role
        https://bugs.webkit.org/show_bug.cgi?id=169810
        <rdar://problem/31039693>

        Reviewed by Chris Fleizach.

        Account for Windows platform role mapping.

        * AccessibleBase.cpp:
        (MSAARole):

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.

        Minor tweak to adjust for a changed interface. See WebKit and WebCore ChangeLogs for more information.

        * WebCoreSupport/WebDragClient.cpp:
        (WebDragClient::actionMaskForDrag):
        * WebCoreSupport/WebDragClient.h:

2017-03-13  Per Arne Vollan  <pvollan@apple.com>

        [Win] Compile fix.
        https://bugs.webkit.org/show_bug.cgi?id=169545

        Reviewed by Brent Fulgham.

        Fix inconsistent dll linkage warnings.
 
        * WebKitDLL.cpp:
        * WebKitDLL.h:

2017-03-13  Per Arne Vollan  <pvollan@apple.com>

        Unreviewed Win build fix.
        
        WebCore::CookiesStrategy::addCookie has been removed, we should also remove the override.

        * WebCoreSupport/WebPlatformStrategies.cpp:
        (WebPlatformStrategies::addCookie): Deleted.
        (WebPlatformStrategies::addCookie): Deleted.
        * WebCoreSupport/WebPlatformStrategies.h:

2017-03-10  Brent Fulgham  <bfulgham@apple.com>

        [Win] Re-export a few symbols for backwards compatibility
        https://bugs.webkit.org/show_bug.cgi?id=169490
        <rdar://problem/30983623>

        Reviewed by Dean Jackson.

        Re-introduce a workaround that re-exports a few JavaScriptCore functions
        that had been erroneously exported by WebKit in older builds. This
        is needed so that we do not break certain old software still being used.

        * WebKitDLL.cpp:
        (DllMain): Bind functions at startup.
        (bindJavaScriptTrampoline): Find JavaScriptCore library functions and
        re-export them from WebKit.dll.
        * WebKitDLL.h: Only advertise these functions when building WebKt itself.

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.

        * WebKitGraphics.cpp:
        (makeFont):

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.

        * AccessibleTextImpl.cpp:

2017-03-01  Alex Christensen  <achristensen@webkit.org>

        Actually fix Windows build.

        * WebFrame.cpp:
        (WebFrame::invalidate):
        r213266 changed Style::Force to ResolveStyleType::Rebuild, so I did so here.

2017-03-01  Alex Christensen  <achristensen@webkit.org>

        Fix Windows build after r213266
        https://bugs.webkit.org/show_bug.cgi?id=169049

        * WebFrame.cpp:
        (WebFrame::invalidate):

2017-02-27  Per Arne Vollan  <pvollan@apple.com>

        [Win] Http preload tests are failing.
        https://bugs.webkit.org/show_bug.cgi?id=168910

        Reviewed by Alex Christensen.

        The feature is not enabled.

        * WebView.cpp:
        (WebView::notifyPreferencesChanged):

2017-02-22  Carlos Garcia Campos  <cgarcia@igalia.com>

        Better handle Thread and RunLoop initialization
        https://bugs.webkit.org/show_bug.cgi?id=167828

        Reviewed by Yusuke Suzuki.

        Remove unnecessary call to WTF::initializeMainThread().

        * WebView.cpp:
        (WebView::WebView):

2017-02-20  Per Arne Vollan  <pvollan@apple.com>

        [Win] Custom scale factor is not applied in all cases.
        https://bugs.webkit.org/show_bug.cgi?id=168117

        Reviewed by Brent Fulgham.

        We should not call the function deviceScaleFactorForWindow directly, since this
        will return the system scale factor, and ignore the custom scale factor.

        * WebView.cpp:
        (WebView::handleContextMenuEvent):
        (WebView::handleMouseEvent):
        (WebView::setAcceleratedCompositing):

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.cpp:
        (WebFrameLoaderClient::redirectDataToPlugin):
        * WebCoreSupport/WebFrameLoaderClient.h:

2017-02-15  Anders Carlsson  <andersca@apple.com>

        Another attempt at fixing the Windows build.

        * WebCoreSupport/WebDragClient.cpp:
        (WebDragClient::startDrag):

2017-02-15  Anders Carlsson  <andersca@apple.com>

        Try to fix the Windows build.

        * WebCoreSupport/WebDragClient.h:

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.cpp:
        (WebDragClient::startDrag):

2017-02-10  Daniel Bates  <dabates@apple.com>

        Attempt to fix the WinCairo 64-Bit Release build following <https://trac.webkit.org/changeset/212173>
        (https://bugs.webkit.org/show_bug.cgi?id=166774)

        Touch WebKit.idl in the hopes that it will cause CMake to regenerate the COM interface files.

        * Interfaces/WebKit.idl:

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.

        * Interfaces/IWebPreferencesPrivate.idl:
        * WebPreferenceKeysPrivate.h:
        * WebPreferences.cpp:
        (WebPreferences::initializeDefaultSettings):
        (WebPreferences::setAllowsPageCacheWithWindowOpener): Deleted.
        (WebPreferences::allowsPageCacheWithWindowOpener): Deleted.
        * WebPreferences.h:
        * WebView.cpp:
        (WebView::notifyPreferencesChanged):

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.

        * Interfaces/IWebPreferencesPrivate.idl:
        * WebPreferenceKeysPrivate.h:
        * WebPreferences.cpp:
        (WebPreferences::initializeDefaultSettings):
        (WebPreferences::setResourceTimingEnabled):
        (WebPreferences::resourceTimingEnabled):
        * WebPreferences.h:
        * WebView.cpp:
        (WebView::notifyPreferencesChanged):

2017-02-06  Alex Christensen  <achristensen@webkit.org>

        More build fixes after r211751
        https://bugs.webkit.org/show_bug.cgi?id=166998

        * WebDownloadCFNet.cpp:
        (WebDownload::didReceiveAuthenticationChallenge):

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.

        * WebFrame.cpp:

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.cpp:
        (WebDragClient::startDrag):
        * WebCoreSupport/WebDragClient.h:

2017-02-02  Per Arne Vollan  <pvollan@apple.com>

        [Win][HiDPI] Scale factor is applied twice in accelerated compositing mode.
        https://bugs.webkit.org/show_bug.cgi?id=167732

        Reviewed by Brent Fulgham.

        Backing layer should not be scaled when CACFLayerSetContentsScale is used for scaling.

        * WebView.cpp:
        (WebView::setAcceleratedCompositing):

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.

        * BackForwardList.cpp:
        (BackForwardList::close):

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.

        * WebPreferenceKeysPrivate.h:
        * WebPreferences.cpp:
        (WebPreferences::initializeDefaultSettings):
        (WebPreferences::valueForKey):
        (WebPreferences::setLinkPreloadEnabled):
        (WebPreferences::linkPreloadEnabled):
        * WebPreferences.h:
        * Interfaces/IWebPreferencesPrivate.idl:

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.

        * Interfaces/IWebPreferencesPrivate.idl:
        * WebPreferenceKeysPrivate.h:
        * WebPreferences.cpp:
        (WebPreferences::initializeDefaultSettings):
        (WebPreferences::setUserTimingEnabled):
        (WebPreferences::userTimingEnabled):
        * WebPreferences.h:
        * WebView.cpp:
        (WebView::notifyPreferencesChanged):
        Add setting for User Timing runtime enabled feature.

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.

        * WebPreferenceKeysPrivate.h:
        * WebPreferences.cpp:
        (WebPreferences::initializeDefaultSettings):
        * WebPreferences.h:

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.

        * WebFrame.cpp:
        (WebFrame::stringByEvaluatingJavaScriptInScriptWorld):
        * WebView.cpp:
        (WebView::elementFromJS):

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.cpp:
        (WebView::setCustomBackingScaleFactor):

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.cpp:
        (WebView::initWithFrame):

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.cpp:
        (WebChromeClient::exitFullScreenForElement):

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.

        * Plugins/PluginView.cpp:
        (WebCore::PluginView::status): Pass reference.
        (WebCore::PluginView::focusPluginElement): Ditto.

        * WebCoreSupport/WebChromeClient.cpp:
        (WebChromeClient::createWindow): Updated for change to ChromeClient.
        (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::attachRootGraphicsLayer): Ditto.
        (WebChromeClient::attachViewOverlayGraphicsLayer): Ditto.
        (WebChromeClient::enterVideoFullscreenForVideoElement): Ditto.
        (WebChromeClient::createPopupMenu): Ditto.
        (WebChromeClient::createSearchPopupMenu): Ditto.
        (WebChromeClient::supportsFullScreenForElement): Ditto.
        (WebChromeClient::enterFullScreenForElement): Ditto.
        (WebChromeClient::exitFullScreenForElement): Ditto.
        (WebChromeClient::shouldUseTiledBackingForFrameView): Ditto.
        * WebCoreSupport/WebChromeClient.h: Ditto.

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.cpp:
        (WebView::notifyPreferencesChanged):

2017-01-20  Joseph Pecoraro  <pecoraro@apple.com>

        Cleanup RuntimeEnabledFeatures
        https://bugs.webkit.org/show_bug.cgi?id=167228

        Reviewed by Simon Fraser.

        * WebView.cpp:
        (WebView::notifyPreferencesChanged):

2017-01-20  Alex Christensen  <achristensen@webkit.org>

        Build Fix for Windows DumpRenderTree after r210976
        https://bugs.webkit.org/show_bug.cgi?id=167115

        * WebPreferences.h:
        Remove extra space.
        * IWebPreferencesPrivate.idl:
        Add new interface functions.
        * WebView.cpp:
        We use new functions that are only in IWebPreferencesPrivate4,
        so instantiate that COM object instead of version 3.

2017-01-20  Joseph Pecoraro  <pecoraro@apple.com>

        Build Fix for Windows DumpRenderTree after r210976

        * WebPreferenceKeysPrivate.h:
        * WebPreferences.cpp:
        (WebPreferences::initializeDefaultSettings):
        (WebPreferences::setWebAnimationsEnabled):
        (WebPreferences::webAnimationsEnabled):
        * WebPreferences.h:
        * WebView.cpp:
        Add toggle APIs for WebAnimations.

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.

        * Interfaces/IWebPreferencesPrivate.idl:
        * WebPreferenceKeysPrivate.h:
        * WebPreferences.cpp:
        (WebPreferences::setDOMIteratorEnabled): Deleted.
        (WebPreferences::domIteratorEnabled): Deleted.
        * WebPreferences.h:
        * WebView.cpp:
        (WebView::notifyPreferencesChanged):

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

        Fix WinCairo build after r210845.
        https://bugs.webkit.org/show_bug.cgi?id=167055

        * WebCoreSupport/WebFrameLoaderClient.cpp:
        * WebCoreSupport/WebFrameLoaderClient.h:
        shouldCacheResponse isn't used when loading with libcurl.
        It was dead code before Darin added "override".
        WebCore/FrameLoaderClient.h has this inside of USE(CFURLCONNECTION) macros, now we have them here, too.

2017-01-18  Andreas Kling  <akling@apple.com>

        Document::securityOrigin() should return a reference.
        <https://webkit.org/b/167124>

        Reviewed by Sam Weinig.

        * Plugins/PluginView.cpp:
        (WebCore::PluginView::load):
        * WebCoreSupport/WebChromeClient.cpp:
        (WebChromeClient::exceededDatabaseQuota):
        * WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebFrameLoaderClient::didRunInsecureContent):
        * WebCoreSupport/WebFrameLoaderClient.h:
        * WebCoreSupport/WebGeolocationClient.cpp:
        (WebGeolocationClient::requestPermission):
        * WebFrame.cpp:
        (WebFrame::allowsFollowingLink):

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.

        * Plugins/PluginView.cpp:
        (WebCore::PluginView::mediaCanStart): Fix call to dispatchDidFailToStartPlugin
        by calling it directly on WebFrameLoaderClient. If my theory is correct, the old
        call has been broken and doing nothing since r177941, two years ago, which made
        the argument types different between FrameLoaderClient and WebFrameLoaderClient,
        leaving WebFrameLoaderClient::dispatchDidFailToStartPlugin as dead code.

        * WebCoreSupport/WebChromeClient.cpp:
        (WebChromeClient::runOpenPanel): Updated for change to ChromeClient.
        * WebCoreSupport/WebChromeClient.h: Ditto.

        * WebCoreSupport/WebEditorClient.cpp:
        (WebEditorUndoCommand::WebEditorUndoCommand): Take a reference instead of
        a PassRefPtr. Also use Ref instead of RefPtr.
        (WebEditorClient::shouldChangeTypingStyle): Deleted. Empty function that was
        never called.
        (WebEditorClient::webViewDidChangeTypingStyle): Ditto.
        (WebEditorClient::webViewDidChangeSelection): Ditto.
        (WebEditorClient::registerUndoStep):  Take reference instead of PassRefPtr.
        (WebEditorClient::registerRedoStep): Ditto.
        * WebCoreSupport/WebEditorClient.h: Updated for the above. Also marked the
        class and member functions final and made them all private, which will
        help us catch if there are any that don't correctly match WebCore.

        * WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebFrameLoaderClient::dispatchDecidePolicyForNewWindowAction): Updated
        for change to ChromeClient.
        (WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction): Ditto.
        (WebFrameLoaderClient::dispatchWillSendSubmitEvent): Ditto.
        (WebFrameLoaderClient::dispatchWillSubmitForm): Ditto.
        (WebFrameLoaderClient::createFrame): Ditto. Also merged two functions into
        one because one was private and only called by the other.
        (WebFrameLoaderClient::createPlugin): Ditto.
        (WebFrameLoaderClient::createJavaAppletWidget): Ditto.
        (WebFrameLoaderClient::createNetworkingContext): Ditto.
        * WebCoreSupport/WebFrameLoaderClient.h: Ditto.

        * WebCoreSupport/WebFrameNetworkingContext.h:
        (WebFrameNetworkingContext::create): Return a Ref instead of a PassRefPtr.

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.

        * AccessibleTextImpl.cpp:
        * BackForwardList.cpp:

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: Update argument to take a reference
        instead of a PassRefPtr.

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.cpp:
        (WebChromeClient::loadIconForFiles): Take a reference instead of a pointer.
        * WebCoreSupport/WebChromeClient.h: Updated for the above.

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.cpp:
        (WebFrameLoaderClient::dispatchDidReceiveTitle): Updated since StringWithDirection::title
        is now a data member, not a function member.
        (WebFrameLoaderClient::updateGlobalHistory): Ditto.
        (WebFrameLoaderClient::setTitle): Ditto.
        * WebDataSource.cpp:
        (WebDataSource::pageTitle): Ditto.

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/PluginPackage.cpp:
        (WebCore::NPN_Evaluate):
        (WebCore::makeSource): Deleted.

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.cpp:
        (kit):
        (WebEditorClient::shouldInsertNode):
        (WebEditorClient::shouldInsertText):

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.

        * Interfaces/IWebPreferencesPrivate.idl:
        * WebPreferenceKeysPrivate.h:
        * WebPreferences.cpp:
        (WebPreferences::setES6ModulesEnabled): Deleted.
        (WebPreferences::es6ModulesEnabled): Deleted.
        * WebPreferences.h:
        * WebView.cpp:
        (WebView::notifyPreferencesChanged):

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.

        * Plugins/PluginView.cpp:
        (WebCore::PluginView::start):
        (WebCore::PluginView::stop):
        (WebCore::PluginView::performRequest):
        (WebCore::PluginView::npObject):
        (WebCore::PluginView::privateBrowsingStateChanged):
        * Plugins/PluginViewWin.cpp:
        (WebCore::PluginView::dispatchNPEvent):
        (WebCore::PluginView::handleKeyboardEvent):
        (WebCore::PluginView::handleMouseEvent):
        (WebCore::PluginView::setNPWindowRect):
        * WebCoreStatistics.cpp:
        (WebCoreStatistics::javaScriptObjectsCount):
        (WebCoreStatistics::javaScriptGlobalObjectsCount):
        (WebCoreStatistics::javaScriptProtectedObjectsCount):
        (WebCoreStatistics::javaScriptProtectedGlobalObjectsCount):
        (WebCoreStatistics::javaScriptProtectedObjectTypeCounts):
        (WebCoreStatistics::javaScriptObjectTypeCounts):
        (WebCoreStatistics::shouldPrintExceptions):
        (WebCoreStatistics::setShouldPrintExceptions):
        (WebCoreStatistics::memoryStatistics):
        * WebJavaScriptCollector.cpp:
        (WebJavaScriptCollector::objectCount):

2016-12-09  Geoffrey Garen  <ggaren@apple.com>

        TextPosition and OrdinalNumber should be more like idiomatic numbers
        https://bugs.webkit.org/show_bug.cgi?id=165678

        Reviewed by Filip Pizlo.

        Adopt default constructor.

        * Plugins/PluginPackage.cpp:
        (WebCore::makeSource):

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.

        * Interfaces/IWebPreferencesPrivate.idl:

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.

        * Plugins/PluginView.cpp:
        (WebCore::PluginView::performRequest):
        * WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebFrameLoaderClient::dispatchDidCommitLoad):
        * WebCoreSupport/WebFrameLoaderClient.h:
        * WebSecurityOrigin.cpp:
        (WebSecurityOrigin::port):

2016-11-19  Simon Fraser  <simon.fraser@apple.com>

        [iOS WK2] When zoomed in and panning on pages with fixed bars, parts of the bars are sometimes missing
        https://bugs.webkit.org/show_bug.cgi?id=164855

        Reviewed by Sam Weinig.
        
        Remove the "inStableState" parameter from flushCompositingState() etc.

        * WebCoreSupport/AcceleratedCompositingContext.cpp:
        (AcceleratedCompositingContext::flushPendingLayerChanges):
        * WebView.cpp:
        (WebView::flushPendingGraphicsLayerChanges):

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.

        * Interfaces/IWebPreferencesPrivate.idl:
        * WebPreferenceKeysPrivate.h:
        * WebPreferences.cpp:
        (WebPreferences::setES6ModulesEnabled):
        (WebPreferences::es6ModulesEnabled):
        * WebPreferences.h:
        * WebView.cpp:
        (WebView::notifyPreferencesChanged):

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.

        * WebDatabaseManager.cpp:
        (DidModifyOriginData::dispatchToMainThread):
        (DidModifyOriginData::DidModifyOriginData):
        (WebDatabaseManager::dispatchDidModifyOrigin):
        (WebDatabaseManager::dispatchDidModifyDatabase):
        * WebDatabaseManager.h:
        * WebSecurityOrigin.cpp:
        (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.

        * WebDatabaseManager.cpp:
        (WebDatabaseManager::origins): Use DatabaseTracker.
        (WebDatabaseManager::databasesWithOrigin): Ditto.
        (WebDatabaseManager::detailsForDatabase): Use reference.
        (WebDatabaseManager::deleteAllDatabases): Use DatabaseTracker.
        (WebDatabaseManager::deleteOrigin): Ditto.
        (WebDatabaseManager::deleteDatabase): Ditto.
        (WebDatabaseManager::dispatchDidModifyOrigin): Use reference
        and DatabaseTracker.
        (WebDatabaseManager::setQuota): Ditto.
        (WebDatabaseManager::dispatchDidModifyDatabase): Ditto.
        * WebDatabaseManager.h: Updated client functions to take a reference.

        * WebSecurityOrigin.cpp:
        (WebSecurityOrigin::usage): Update to use DatabaseTracker.
        (WebSecurityOrigin::quota): Ditto.
        (WebSecurityOrigin::setQuota): Ditto.

2016-11-11  Eric Carlson  <eric.carlson@apple.com>

        [MediaStream] defer resolution of getUserMedia promise made in a background tab
        https://bugs.webkit.org/show_bug.cgi?id=164643
        <rdar://problem/29048317>

        Unreviewed build fix after r208606.

        * Plugins/PluginView.cpp:
        (WebCore::PluginView::mediaCanStart):
        * Plugins/PluginView.h:

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.

        * DOMCoreClasses.cpp:
        (DOMNode::insertBefore): Update exception handling.
        (DOMNode::removeChild): Ditto.

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.cpp:
        (WebView::initWithFrame):

2016-11-09  Alex Christensen  <achristensen@webkit.org>

        Fix Windows build after r208499
        https://bugs.webkit.org/show_bug.cgi?id=164562

        * WebKitDLL.cpp:
        (shutDownWebKit):

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.

        * WebView.cpp:
        (WebView::onIMERequestCharPosition): Updated for new exception handling.

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.

        * DOMCoreClasses.cpp:
        (DOMNode::dispatchEvent): Updated exception handling.
        (DOMWindow::dispatchEvent): Ditto.

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.

        Add a stub implementation of canceledComposition.

        * WebCoreSupport/WebEditorClient.cpp:
        (WebEditorClient::canceledComposition):
        * WebCoreSupport/WebEditorClient.h:

2016-11-04  Per Arne Vollan  <pvollan@apple.com>

        [Win] Page visibility tests are timing out.
        https://bugs.webkit.org/show_bug.cgi?id=164363

        Reviewed by Brent Fulgham.

        Add method to set page visibility.

        * Interfaces/IWebViewPrivate.idl:
        * WebView.cpp:
        (WebView::QueryInterface):
        (WebView::findString):
        (WebView::setVisibilityState):
        * WebView.h:

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.

        * WebView.cpp:
        (WebView::notifyPreferencesChanged):

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.

        * Interfaces/IWebPreferencesPrivate.idl:

2016-10-31  Joseph Pecoraro  <pecoraro@apple.com>

        Use #pragma once in WebCore
        https://bugs.webkit.org/show_bug.cgi?id=164194

        Rubber-stamped by Sam Weinig.

        * WebCoreSupport/WebContextMenuClient.cpp:
        (WebContextMenuClient::isSpeaking):
        (WebContextMenuClient::shareMenuItem): Deleted.
        * WebCoreSupport/WebContextMenuClient.h:
        Remove this dead code since r192333.

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.

        * DOMCoreClasses.cpp:
        (DOMDocument::createElement): Updated exception handling.
        (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.

        * DOMCoreClasses.cpp:
        (DOMElement::setAttribute): Updated exception handling.
        * DOMHTMLClasses.cpp:
        (DOMHTMLElement::setInnerHTML): Ditto.

2016-10-30  Brent Fulgham  <bfulgham@apple.com>

        Unreviewed build fix (Direct2D)

        * WebView.cpp:
        (WebView::paintWithDirect2D): Update for revised GraphicsContext
        begin/end draw behavior.

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.

        * DOMHTMLClasses.cpp:
        (DOMHTMLElement::setInnerText): Update exception handling.
        * FullscreenVideoController.cpp:
        (FullscreenVideoController::setVolume): Ditto.

2016-10-27  Brent Fulgham  <bfulgham@apple.com>

        Unreviewed build fix.

        * WebView.cpp:
        (WebView::paintWithDirect2D): Correct merge error.

2016-10-25  Brent Fulgham  <bfulgham@apple.com>

        [Win][Direct2D] Create a RAII Helper Class for the Render Target
        https://bugs.webkit.org/show_bug.cgi?id=164005

        Reviewed by Alex Christensen.

        * WebView.cpp:
        (WebView::sizeChanged): Construct RenderTarget with higher-resolution display timer.
        (WebView::paintWithDirect2D): Revise to use new RenderTargetHelper class.

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.cpp:
        (undoNameForEditAction):

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-19  Alex Christensen  <achristensen@webkit.org>

        Revert r207151
        https://bugs.webkit.org/show_bug.cgi?id=163675

        Reviewed by Brent Fulgham.

        * DefaultDownloadDelegate.h:
        * WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebFrameLoaderClient::savePlatformDataToCachedFrame):
        * WebCoreSupport/WebFrameNetworkingContext.cpp:
        (WebFrameNetworkingContext::ensurePrivateBrowsingSession):
        * WebCoreSupport/WebFrameNetworkingContext.h:
        * WebCoreSupport/WebPlatformStrategies.cpp:
        * WebDownload.h:
        * WebError.cpp:
        (WebError::localizedDescription):
        (WebError::sslPeerCertificate):
        * WebError.h:
        * WebMutableURLRequest.cpp:
        (WebMutableURLRequest::mutableCopy):
        * WebURLAuthenticationChallenge.cpp:
        (WebURLAuthenticationChallenge::initWithProtectionSpace):
        (WebURLAuthenticationChallenge::initWithAuthenticationChallenge):
        * WebURLResponse.cpp:
        (WebURLResponse::sslPeerCertificate):
        * WebURLResponse.h:
        * WebView.cpp:
        (WebView::setCacheModel):
        (WebView::canHandleRequest):
        (WebView::notifyPreferencesChanged):
        (updateSharedSettingsFromPreferencesIfNeeded):

2016-10-18  Darin Adler  <darin@apple.com>

        Move many miscellaneous classes from ExceptionCode to Exception
        https://bugs.webkit.org/show_bug.cgi?id=163645

        Reviewed by Ryosuke Niwa.

        * DOMCoreClasses.cpp:
        (DOMDocument::getComputedStyle): Use ptr instead of get since the return
        value is now Ref instead of RefPtr.

2016-10-18  Anders Carlsson  <andersca@apple.com>

        Try to fix the Windows build.

        * WebHistoryItem.cpp:
        (WebHistoryItem::redirectURLs):

2016-10-18  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.

        Remove these, they aren't used.

        * WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebFrameLoaderClient::updateGlobalHistoryRedirectLinks):
        * WebHistory.cpp:
        (WebHistory::visitedURL):
        * WebHistoryItem.cpp:
        (WebHistoryItem::initFromDictionaryRepresentation):
        (WebHistoryItem::dictionaryRepresentation):

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.

        * DOMCSSClasses.cpp:
        (DOMCSSStyleDeclaration::setCssText): Remove ExceptionCode handling.
        (DOMCSSStyleDeclaration::setProperty): Ditto.

2016-10-12  Anders Carlsson  <andersca@apple.com>

        Copy BackForwardList from WebCore to WebKit/win
        https://bugs.webkit.org/show_bug.cgi?id=163360

        Reviewed by Alex Christensen.

        Use our local BackForwardList class instead of WebCore::BackForwardList.

        * BackForwardList.cpp: Added.
        * BackForwardList.h: Added.
        * WebBackForwardList.h:
        * WebView.cpp:
        (WebView::initWithFrame):
        (WebView::backForwardList):

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.

        * WebBackForwardList.cpp:
        (WebBackForwardList::backListWithLimit):
        (WebBackForwardList::forwardListWithLimit):
        * WebHistoryItem.cpp:
        (WebHistoryItem::children):

2016-10-12  Brent Fulgham  <bfulgham@apple.com>

        [Win] Unreviewed build fix after r207218.

        The CQ-landed patch used the old USE(CFNETWORK) compiler guard.
        It should be using USE(CFURLCONNECTION).

        * WebCache.cpp: Missed one!

2016-10-12  Brent Fulgham  <bfulgham@apple.com>

        [Win] Unreviewed build fix after r207218.

        The CQ-landed patch used the old USE(CFNETWORK) compiler guard.
        It should be using USE(CFURLCONNECTION).

        * WebCache.cpp:
        (WebCache::cacheFolder):
        (WebCache::setCacheFolder):

2016-10-12  Per Arne Vollan  <pvollan@apple.com>

        [Win] Parallel DRTs are sharing preferences and cache.
        https://bugs.webkit.org/show_bug.cgi?id=163013

        Reviewed by Brent Fulgham.

        Make it possible for a WebKit client to use separate preferences and cache.

        * Interfaces/IWebPreferencesPrivate.idl:
        * WebApplicationCache.cpp:
        (applicationCachePath):
        * WebCache.cpp:
        (WebCache::cacheFolder):
        (WebCache::setCacheFolder):
        * WebDatabaseManager.cpp:
        (databasesDirectory):
        * WebPreferences.cpp:
        (WebPreferences::applicationId):
        (WebPreferences::valueForKey):
        (WebPreferences::setValueForKey):
        (WebPreferences::save):
        (WebPreferences::QueryInterface):
        (WebPreferences::modernMediaControlsEnabled):
        (WebPreferences::setApplicationId):
        * WebPreferences.h:
        * WebView.cpp:
        (WebView::setCacheModel):

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.

        * DefaultDownloadDelegate.h:
        * WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebFrameLoaderClient::savePlatformDataToCachedFrame):
        * WebCoreSupport/WebFrameNetworkingContext.cpp:
        (WebFrameNetworkingContext::ensurePrivateBrowsingSession):
        * WebCoreSupport/WebFrameNetworkingContext.h:
        * WebCoreSupport/WebPlatformStrategies.cpp:
        * WebDownload.h:
        * WebError.cpp:
        (WebError::localizedDescription):
        (WebError::sslPeerCertificate):
        * WebError.h:
        * WebMutableURLRequest.cpp:
        (WebMutableURLRequest::mutableCopy):
        * WebURLAuthenticationChallenge.cpp:
        (WebURLAuthenticationChallenge::initWithProtectionSpace):
        (WebURLAuthenticationChallenge::initWithAuthenticationChallenge):
        * WebURLResponse.cpp:
        (WebURLResponse::sslPeerCertificate):
        * WebURLResponse.h:
        * WebView.cpp:
        (WebView::setCacheModel):
        (WebView::canHandleRequest):
        (WebView::notifyPreferencesChanged):
        (updateSharedSettingsFromPreferencesIfNeeded):

2016-10-11  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r207067.

        This change caused webkitpy test failures.

        Reverted changeset:

        "[Win] Parallel DRTs are sharing preferences and cache."
        https://bugs.webkit.org/show_bug.cgi?id=163013
        http://trac.webkit.org/changeset/207067

2016-10-11  Per Arne Vollan  <pvollan@apple.com>

        [Win] Parallel DRTs are sharing preferences and cache.
        https://bugs.webkit.org/show_bug.cgi?id=163013

        Reviewed by Brent Fulgham.

        Make it possible for a WebKit client to use separate preferences and cache.

        * Interfaces/IWebPreferencesPrivate.idl:
        * WebApplicationCache.cpp:
        (applicationCachePath):
        * WebCache.cpp:
        (WebCache::cacheFolder):
        (WebCache::setCacheFolder):
        * WebDatabaseManager.cpp:
        (databasesDirectory):
        * WebPreferences.cpp:
        (WebPreferences::applicationId):
        (WebPreferences::valueForKey):
        (WebPreferences::setValueForKey):
        (WebPreferences::save):
        (WebPreferences::QueryInterface):
        (WebPreferences::modernMediaControlsEnabled):
        (WebPreferences::setApplicationId):
        * WebPreferences.h:
        * WebView.cpp:
        (WebView::setCacheModel):

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.

        * WebCoreSupport/WebEditorClient.cpp:
        (undoNameForEditAction):

2016-10-04  Brent Fulgham  <bfulgham@apple.com>

        [Win][Direct2D] Connect WebCore/WebKit Drawing
        https://bugs.webkit.org/show_bug.cgi?id=162924

        Reviewed by Alex Christensen.

        Update the Windows WebKit layer to optionally use the Direct2D
        backend.

        * FullscreenVideoController.cpp: Disable some CoreAnimation-based
        accelerated compositing logic.
        * FullscreenVideoController.h:
        * WebFrame.cpp:
        (WebFrame::spoolPages): Disable in Direct2D.
        * WebView.cpp:
        (WebView::ensureBackingStore): Add Direct2D logic.
        (WebView::scrollBackingStore): Ditto.
        (WebView::sizeChanged): Ditto.
        (WebView::paintWithDirect2D): Added.
        (WebView::WebViewWndProc): Call Direct2D paint routine.
        * WebView.h:

2016-10-02  Darin Adler  <darin@apple.com>

        Rename ExceptionCode-based exception handling to "legacy"
        https://bugs.webkit.org/show_bug.cgi?id=162859

        Reviewed by Chris Dumez.

        * Interfaces/DOMEvents.idl: Let the script rename here (in a comment).

2016-09-29  Konstantin Tokarev  <annulen@yandex.ru>

        Fixed compilation of PluginView when NETSCAPE_PLUGIN_API is disabled
        https://bugs.webkit.org/show_bug.cgi?id=162725

        Reviewed by Alex Christensen.

        Fix for r206460, streamDidFinishLoading() does not override anything
        when NETSCAPE_PLUGIN_API is disabled because PlugivView does not
        inherit PluginStreamClient in this case.

        * Plugins/PluginView.h:

2016-09-27  Konstantin Tokarev  <annulen@yandex.ru>

        Use override specifiers in PluginView
        https://bugs.webkit.org/show_bug.cgi?id=162628

        Reviewed by Alex Christensen.

        * Plugins/PluginView.h:

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.

        * Interfaces/IWebPreferencesPrivate.idl:
        * WebPreferenceKeysPrivate.h:
        * WebPreferences.cpp:
        (WebPreferences::setModernMediaControlsEnabled):
        (WebPreferences::modernMediaControlsEnabled):
        (WebPreferences::setCustomElementsEnabled): Deleted.
        * WebPreferences.h:
        * WebView.cpp:
        (WebView::notifyPreferencesChanged):

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.cpp:
        (WebFrameLoaderClient::dispatchDidCommitLoad):
        * WebCoreSupport/WebFrameLoaderClient.h:

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/PluginPackage.cpp:
        (WebCore::NPN_Evaluate):
        (WebCore::NPN_Invoke):

2016-09-06  Per Arne Vollan  <pvollan@apple.com>

        [Win] Null pointer crash under WebView::scrollOffset.
        https://bugs.webkit.org/show_bug.cgi?id=161620

        Reviewed by Darin Adler.

        Added null pointer checks.

        * WebView.cpp:
        (WebView::scrollOffset):
        (WebView::scrollBy):
        (WebView::visibleContentRect):

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.

        * WebFrame.cpp:
        (WebFrame::canProvideDocumentSource): Updated to use isXMLMIMEType in its new
        location in MIMETypeRegistry instead of in DOMImplementation.

2016-09-02  Ryosuke Niwa  <rniwa@webkit.org>

        Build fix attempt after r205381.

        * WebCoreSupport/WebEditorClient.h:

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.

        * WebKitLogging.cpp:
        * WebKitLogging.h:
        * WebView.cpp:
        (WebView::initWithFrame):

2016-08-16  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Accelerated compositing does not work in Wayland
        https://bugs.webkit.org/show_bug.cgi?id=115803

        Reviewed by Michael Catanzaro.

        Update to the new GLContext API.

        * WebCoreSupport/AcceleratedCompositingContext.cpp:
        (AcceleratedCompositingContext::initialize):
        (AcceleratedCompositingContext::acceleratedCompositingAvailable):

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/PluginView.cpp:
        (WebCore::PluginView::getValueForURL):

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.

        didLayout(LayoutMilestones) -> didReachLayoutMilestone(LayoutMilestones)
        dispatchDidLayout(LayoutMilestones) -> dispatchDidReachLayoutMilestone(LayoutMilestones)

        * WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebFrameLoaderClient::dispatchDidReachLayoutMilestone):
        (WebFrameLoaderClient::dispatchDidLayout): Deleted.
        * WebCoreSupport/WebFrameLoaderClient.h:

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/PluginView.cpp:
        (WebCore::PluginView::~PluginView):
        (WebCore::PluginView::PluginView):
        (WebCore::PluginView::getValue):
        * Plugins/PluginView.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.

        * WebFrame.h:

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.cpp:
        (identifierBase):
        (WebFrameNetworkingContext::setCookieAcceptPolicyForAllContexts):
        (WebFrameNetworkingContext::ensurePrivateBrowsingSession):
        (WebFrameNetworkingContext::destroyPrivateBrowsingSession):
        (WebFrameNetworkingContext::blockedError):
        (WebFrameNetworkingContext::storageSession):
        (privateSession): Deleted.
        * WebCoreSupport/WebPlatformStrategies.cpp:
        (WebPlatformStrategies::createPasteboardStrategy):
        (WebPlatformStrategies::createBlobRegistry):

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.cpp:
        (WebFrameLoaderClient::objectContentType):

2016-08-09  Per Arne Vollan  <pvollan@apple.com>

        [Win] Crash in MiniBrowser.
        https://bugs.webkit.org/show_bug.cgi?id=160686

        Reviewed by Sam Weinig.

        We need to specify a plugin info provider object in the page configuration.

        * WebView.cpp:
        (WebView::initWithFrame):

2016-08-09  Anders Carlsson  <andersca@apple.com>

        Fix build.

        * WebCoreSupport/WebPlatformStrategies.h:

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.cpp:
        (WebPlatformStrategies::createPluginStrategy): 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.cpp:
        (WebPlatformStrategies::createPluginStrategy):
        (WebPlatformStrategies::refreshPlugins): Deleted.
        (WebPlatformStrategies::getPluginInfo): Deleted.
        (WebPlatformStrategies::getWebVisiblePluginInfo): Deleted.
        * WebCoreSupport/WebPlatformStrategies.h:
        * WebCoreSupport/WebPluginInfoProvider.cpp:
        (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.cpp: Added.
        (WebPluginInfoProvider::singleton):
        (WebPluginInfoProvider::WebPluginInfoProvider):
        (WebPluginInfoProvider::~WebPluginInfoProvider):
        (WebPluginInfoProvider::refreshPlugins):
        (WebPluginInfoProvider::getPluginInfo):
        (WebPluginInfoProvider::getWebVisiblePluginInfo):
        * WebCoreSupport/WebPluginInfoProvider.h: Added.

2016-07-29  Csaba Osztrogonác  <ossy@webkit.org>

        Remove PassRef.h after r177259
        https://bugs.webkit.org/show_bug.cgi?id=160348

        Reviewed by Andreas Kling.

        * WebCoreSupport/WebVisitedLinkStore.h:

2016-07-27  Alex Christensen  <achristensen@webkit.org>

        Fix Win debug build after r203749.

        * WebView.cpp:

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.

        * WebKitLogging.cpp:
        * WebKitLogging.h:
        * WebView.cpp:
        (WebView::initWithFrame):

2016-07-23  Chris Dumez  <cdumez@apple.com>

        Unreviewed, fix Windows build after r203623.

        * DOMCoreClasses.cpp:
        (DOMDocument::getComputedStyle):

2016-07-22  Per Arne Vollan  <pvollan@apple.com>

        IWebView::mainFrame crashes if called after IWebView::close
        https://bugs.webkit.org/show_bug.cgi?id=32868

        Reviewed by Brent Fulgham.

        After deleting the page in WebView::close the mainframe object may be deleted. 
         
        Test: Tools/TestWebKitAPI/Tests/WebKit/win/WebViewDestruction.cpp (CloseThenGetMainFrame).

        * WebView.cpp:
        (WebView::close): set mainframe pointer member to null. 

2016-07-19  Per Arne Vollan  <pvollan@apple.com>

        [Win] The test fast/scrolling/overflow-scroll-past-max.html is timing out.
        https://bugs.webkit.org/show_bug.cgi?id=159342

        Reviewed by Darin Adler.

        * WebFrame.h: Link fix. 

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/PluginView.cpp:
        (WebCore::PluginView::performRequest):
        * WebCoreSupport/WebContextMenuClient.cpp:
        (WebContextMenuClient::searchWithGoogle):
        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.

        * DOMHTMLClasses.cpp:
        (DOMHTMLElement::idName):

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.

        * DOMHTMLClasses.cpp:
        (DOMHTMLElement::idName):

2016-07-14  Chris Dumez  <cdumez@apple.com>

        Use emptyString() instead of "" when possible
        https://bugs.webkit.org/show_bug.cgi?id=159789

        Reviewed by Alex Christensen.

        Use emptyString() instead of "" when possible to reduce String allocations.

        * Plugins/PluginView.cpp:
        (WebCore::parseRFC822HeaderFields):

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.

        * WebSocketProvider.cpp: Removed.
        * WebSocketProvider.h: Removed.
        * WebView.cpp: Replaced WebSocketProvider with SocketProvider as we did in WebCore.

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.

        * WebSocketProvider.h:

2016-07-11  Enrica Casucci  <enrica@apple.com>

        Build fix.

        Unreviewed.

        * WebDropSource.cpp:
        (generateMouseEvent):

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.

        * WebDropSource.cpp:
        (generateMouseEvent):

2016-07-07  Alex Christensen  <achristensen@webkit.org>

        Fix Windows build after r202930.
        https://bugs.webkit.org/show_bug.cgi?id=158776

        * WebView.cpp:
        (WebView::initWithFrame):

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.

        * WebSocketProvider.cpp: Copied from Source/WebCore/Modules/websockets/ThreadableWebSocketChannel.cpp.
        (WebSocketProvider::createWebSocketChannel):
        (WebCore::ThreadableWebSocketChannel::create): Deleted.
        * WebSocketProvider.h:

2016-07-06  Per Arne Vollan  <pvollan@apple.com>

        [Win] Add null pointer check in gesture handling.
        https://bugs.webkit.org/show_bug.cgi?id=159454

        Reviewed by Brent Fulgham.

        * WebView.cpp:
        (WebView::gesture):

2016-07-01  Per Arne Vollan  <pvollan@apple.com>

        ASSERTION FAILED: info.bmBitsPixel == 32
        https://bugs.webkit.org/show_bug.cgi?id=17737

        Reviewed by Brent Fulgham.

        The ::SelectObject call will fail if m_backingStoreBitmap is already selected into a device context.
        This happens when this method is called indirectly from WebView::updateBackingStore during normal
        painting. There is no point continuing, since we would just be scrolling a 1x1 bitmap which is
        selected into the device context by default. We can just scroll by repainting the scroll rectangle.

        * WebView.cpp:
        (WebView::scrollBackingStore): Invalidate the scroll rectangle if the ::SelectObject call fails.

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.

        * WebPreferenceKeysPrivate.h:
        * WebPreferences.cpp:
        (WebPreferences::domIteratorEnabled):
        (WebPreferences::setDOMIteratorEnabled):
        (WebView::notifyPreferencesChanged):
        * WebPreferencesreferences.h:
        * WebView.cpp:
        (WebView::notifyPreferencesChanged):

2016-06-28  Per Arne Vollan  <pvollan@apple.com>

        [Win] Custom elements tests are failing.
        https://bugs.webkit.org/show_bug.cgi?id=159139

        Reviewed by Alex Christensen.

        Add preference for enabling custom element API.

        * Interfaces/IWebPreferencesPrivate.idl:
        * WebPreferenceKeysPrivate.h:
        * WebPreferences.cpp:
        (WebPreferences::initializeDefaultSettings):
        (WebPreferences::customElementsEnabled):
        (WebPreferences::setCustomElementsEnabled):
        * WebPreferences.h:
        * WebView.cpp:
        (WebView::notifyPreferencesChanged):

2016-06-23  Per Arne Vollan  <pvollan@apple.com>

        [Win] The test accessibility/aria-labelledby-overrides-label.html is failing.
        https://bugs.webkit.org/show_bug.cgi?id=159057

        Reviewed by Brent Fulgham.

        The test expects the label to have a static text role, but currently it has a
        group role.
 
        * AccessibleBase.cpp:
        (MSAARole): Change the role of labels to static text.

2016-06-23  Alex Christensen  <achristensen@webkit.org>

        Remove unused didCancelAuthenticationChallenge
        https://bugs.webkit.org/show_bug.cgi?id=158819

        Reviewed by David Kilzer.

        * WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebFrameLoaderClient::dispatchDidCancelAuthenticationChallenge): Deleted.
        * WebCoreSupport/WebFrameLoaderClient.h:

2016-06-22  Per Arne Vollan  <pvollan@apple.com>

        [Win] The test storage/indexeddb/modern/handle-user-delete.html is timing out.
        https://bugs.webkit.org/show_bug.cgi?id=158934

        Reviewed by Brent Fulgham.

        Add a method to delete all indexed databases.

        * Interfaces/IWebDatabaseManager.idl:
        * WebDatabaseManager.cpp:
        (WebDatabaseManager::QueryInterface):
        (WebDatabaseManager::deleteAllIndexedDatabases):
        * WebDatabaseManager.h:

2016-06-17  Per Arne Vollan  <pvollan@apple.com>

        [Win] Rendering is not scaled correctly if process is DPI aware.
        https://bugs.webkit.org/show_bug.cgi?id=158781

        Reviewed by Brent Fulgham.

        Scale the root graphics layer with the device scale factor.

        * WebView.cpp:
        (WebView::setAcceleratedCompositing):

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.

        * Plugins/PluginView.cpp:

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)
        (comprises removal of corresponding preprocessor directives)

        * WebView.cpp:

2016-06-13  Alex Christensen  <achristensen@webkit.org>

        Add WebSocketProvider stub
        https://bugs.webkit.org/show_bug.cgi?id=158702

        Reviewed by Brady Eidson.

        * WebSocketProvider.h: Added.
        * WebView.cpp:
        (WebView::initWithFrame):

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.cpp:
        (WebView::initWithFrame):

2016-06-09  Alex Christensen  <achristensen@webkit.org>

        Fix Windows build.

        * WebKit.resources/resource.h: Removed.
        * resource.h: Copied from WebKit.resources/resource.h.

2016-06-09  Alex Christensen  <achristensen@webkit.org>

        Actually fix Windows build after r201894
        https://bugs.webkit.org/show_bug.cgi?id=158588

        * WebView.cpp:
        (WebView::initWithFrame):

2016-06-09  Alex Christensen  <achristensen@webkit.org>

        Clean up WebKit.vcxproj directory after switching to CMake.

        * WebKit.resources/resource.h: Copied from WebKit.vcxproj/WebKit/resource.h.

2016-06-09  Alex Christensen  <achristensen@webkit.org>

        Unreviewed build fix after r201894
        https://bugs.webkit.org/show_bug.cgi?id=158588

        * WebCoreSupport/WebEditorClient.cpp:
        (WebEditorClient::~WebEditorClient):
        (WebEditorClient::isContinuousSpellCheckingEnabled):
        (WebEditorClient::pageDestroyed): Deleted.
        * WebCoreSupport/WebEditorClient.h:
        * WebView.cpp:
        (WebView::initWithFrame):

2016-06-08  Per Arne Vollan  <pvollan@apple.com>

        [Win] Shadow DOM tests are failing.
        https://bugs.webkit.org/show_bug.cgi?id=158524

        Reviewed by Brent Fulgham.

        Add preference for enabling Shadow DOM.

        * Interfaces/IWebPreferencesPrivate.idl:
        * WebPreferenceKeysPrivate.h:
        * WebPreferences.cpp:
        (WebPreferences::initializeDefaultSettings):
        (WebPreferences::shadowDOMEnabled):
        (WebPreferences::setShadowDOMEnabled):
        * WebPreferences.h:
        * WebView.cpp:
        (WebView::notifyPreferencesChanged):

2016-06-07  Per Arne Vollan  <pvollan@apple.com>

        [Win][IndexedDB] Crash when running worker test.
        https://bugs.webkit.org/show_bug.cgi?id=158434

        Reviewed by Alex Christensen.

        Initialize main runloop, otherwise RunLoop::main() will return nullptr.

        * WebView.cpp:
        (WebView::WebView):

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.cpp:
        (WebVisitedLinkStore::removeAllVisitedLinks):
        (WebVisitedLinkStore::addVisitedLinkHash):

2016-06-03  Per Arne Vollan  <pvollan@apple.com>

        [Win] Implement WebView::removeAllUserContentFromGroup
        https://bugs.webkit.org/show_bug.cgi?id=158343

        Reviewed by Brent Fulgham.

        * WebView.cpp:
        (WebView::removeAllUserContentFromGroup):

2016-06-02  Per Arne Vollan  <pvollan@apple.com>

        [Win] Fetch API tests are failing.
        https://bugs.webkit.org/show_bug.cgi?id=158296

        Reviewed by Alex Christensen.

        Add preference for enabling Fetch API.

        * Interfaces/IWebPreferencesPrivate.idl:
        * WebPreferenceKeysPrivate.h:
        * WebPreferences.cpp:
        (WebPreferences::initializeDefaultSettings):
        (WebPreferences::fetchAPIEnabled):
        (WebPreferences::setFetchAPIEnabled):
        * WebPreferences.h:
        * WebView.cpp:
        (WebView::notifyPreferencesChanged):

2016-06-02  Youenn Fablet  <youenn.fablet@crf.canon.fr>

        Use more references in ResourceLoader related code
        https://bugs.webkit.org/show_bug.cgi?id=158222

        Reviewed by Darin Adler.

        * Plugins/PluginStream.cpp:
        (WebCore::PluginStream::start):

2016-06-01  Per Arne Vollan  <pvollan@apple.com>

        [Win] Potential null pointer crash when setting cursor.
        https://bugs.webkit.org/show_bug.cgi?id=158225

        Reviewed by Alex Christensen.

        Check return value of Cursor::platformCursor().

        * WebCoreSupport/WebChromeClient.cpp:
        (WebChromeClient::setCursor):

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

        * Interfaces/IWebPreferencesPrivate.idl:

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.

        * Interfaces/IWebPreferencesPrivate.idl:

2016-05-23  Chris Dumez  <cdumez@apple.com>

        Generate bindings code for EventTarget.addEventListener() / removeEventListener()
        https://bugs.webkit.org/show_bug.cgi?id=157882

        Reviewed by Darin Adler.

        Generate bindings code for EventTarget.addEventListener() / removeEventListener()
        instead of hardcoding them in the bindings generator.

        * DOMEventsClasses.cpp:
        (WebEventListener::operator==):
        * DOMEventsClasses.h:

2016-05-20  Joseph Pecoraro  <pecoraro@apple.com>

        Remove LegacyProfiler
        https://bugs.webkit.org/show_bug.cgi?id=153565

        Reviewed by Saam Barati.

        * Interfaces/IWebInspector.idl:
        * WebCoreStatistics.cpp:
        * WebInspector.cpp:
        (WebInspector::isJavaScriptProfilingEnabled): Deleted.
        (WebInspector::setJavaScriptProfilingEnabled): Deleted.
        * WebInspector.h:
        * WebView.cpp:

2016-05-16  Joseph Pecoraro  <pecoraro@apple.com>

        Unreviewed rollout r200924. Caused js/regress/string-replace-generic.html to fail.

        * Interfaces/IWebInspector.idl:
        * WebCoreStatistics.cpp:
        * WebInspector.cpp:
        (WebInspector::isJavaScriptProfilingEnabled):
        (WebInspector::setJavaScriptProfilingEnabled):
        * WebInspector.h:
        * WebView.cpp:

2016-05-14  Joseph Pecoraro  <pecoraro@apple.com>

        Remove LegacyProfiler
        https://bugs.webkit.org/show_bug.cgi?id=153565

        Reviewed by Mark Lam.

        * Interfaces/IWebInspector.idl:
        * WebView.cpp:
        * WebInspector.cpp:
        (WebInspector::isJavaScriptProfilingEnabled): Deleted.
        (WebInspector::setJavaScriptProfilingEnabled): Deleted.
        * WebInspector.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.cpp:
        (WebFrameLoaderClient::saveViewStateToItem):
        * WebCoreSupport/WebFrameLoaderClient.h:

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.

        * DOMCoreClasses.cpp:
        (DOMNode::insertBefore):
        (DOMNode::removeChild):

2016-05-11  Joanmarie Diggs  <jdiggs@igalia.com>

        [GTK] accessibility/aria-readonly.html is failing
        https://bugs.webkit.org/show_bug.cgi?id=98357

        Reviewed by Chris Fleizach.

        Call AccessibilityNode::canSetValueAttribute() to determine if STATE_SYSTEM_READONLY
        should be added and if editable text should be supported.

        * AccessibleBase.cpp:
        (AccessibleBase::state):
        * AccessibleTextImpl.cpp:
        (AccessibleText::deleteText):
        (AccessibleText::insertText):
        (AccessibleText::cutText):
        (AccessibleText::pasteText):
        (AccessibleText::replaceText):

2016-05-09  Fujii Hironori  <Hironori.Fujii@sony.com>

        [wincairo] web inspector failed to launch in MiniBrowser
        https://bugs.webkit.org/show_bug.cgi?id=156184
        <rdar://problem/25539297>

        Reviewed by Alex Christensen.

        * WebCoreSupport/WebInspectorClient.cpp:
        (WebInspectorClient::openLocalFrontend): Enable
        AllowFileAccessFromFileURLs and AllowUniversalAccessFromFileURLs
        of WebPreferences for Web Inspector.

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.cpp:
        (WebView::gestureNotify):

2016-05-04  Joanmarie Diggs  <jdiggs@igalia.com>

        AX: ARIA 'region' role is now a landmark; HTML 'section' element should be a landmark only if named
        https://bugs.webkit.org/show_bug.cgi?id=157331

        Reviewed by Chris Fleizach.

        As part of this change, the WebCore DocumentRegionRole AccessibilityRole has
        been renamed to LandmarkRegionRole. Update MSAARole() to use the new name.

        * AccessibleBase.cpp:
        (MSAARole):

2016-04-25  Per Arne Vollan  <peavo@outlook.com>

        [Win][IndexedDB] Fix build errors.
        https://bugs.webkit.org/show_bug.cgi?id=156713

        Reviewed by Alex Christensen.

        Fix compile and link errors when building with IndexedDB enabled.

        * WebView.cpp:
        (WebView::notifyPreferencesChanged):
        * storage: Added.
        * storage/WebDatabaseProvider.cpp: Added.
        (WebDatabaseProvider::indexedDatabaseDirectoryPath):

2016-04-22  Brent Fulgham  <bfulgham@apple.com>

        Unreviewed build fix after 4199841.

        * WebApplicationCache.cpp:
        (WebApplicationCache::WebApplicationCache): Provide missing preference key definition.

2016-04-21  Anders Carlsson  <andersca@apple.com>

        Add a missing space, as noticed by Darin.

        * WebApplicationCache.cpp:
        (applicationCachePath):

2016-04-21  Anders Carlsson  <andersca@apple.com>

        Stop using ApplicationCacheStorage::singleton() on Windows
        https://bugs.webkit.org/show_bug.cgi?id=156861

        Reviewed by Darin Adler.

        * WebApplicationCache.cpp:
        (applicationCachePath):
        (WebApplicationCache::storage):
        * WebApplicationCache.h:
        * WebCache.cpp:
        (WebCache::empty):
        * WebView.cpp:
        (WebView::initWithFrame):
        (WebKitSetApplicationCachePathIfNecessary): Deleted.

2016-04-15  Brent Fulgham  <bfulgham@apple.com>

        CSP: Make dynamically-added favicons (via link rel="icon") obey Content-Security-Policy
        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.cpp:
        (WebFrameLoaderClient::dispatchDidChangeIcons): Deleted.
        * WebCoreSupport/WebFrameLoaderClient.h:

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.

        * Plugins/PluginView.cpp:
        (WebCore::PluginView::performRequest): Use JSValue.
        * WebFrame.cpp:
        (WebFrame::stringByEvaluatingJavaScriptInScriptWorld): Ditto.
        * WebView.cpp:
        (WebView::stringByEvaluatingJavaScriptFromString): Ditto.

2016-04-11  Darin Adler  <darin@apple.com>

        Remove UsePointersEvenForNonNullableObjectArguments from HTMLSelectElement
        https://bugs.webkit.org/show_bug.cgi?id=156458

        Reviewed by Chris Dumez.

        * DOMCoreClasses.cpp: Added now-needed include.

2016-04-11  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.

        * WebDatabaseManager.cpp:
        (WebDatabaseManager::deleteAllDatabases):
            - renamed deleteAllDatabases -> deleteAllDatabasesImmediately.

2016-04-08  Joanmarie Diggs  <jdiggs@igalia.com>

        AX: "AXLandmarkApplication" is an inappropriate subrole for ARIA "application" since it's no longer a landmark
        https://bugs.webkit.org/show_bug.cgi?id=155403

        Reviewed by Chris Fleizach.

        The new subrole is AXWebApplication and the new role description is "web application".
        As part of the fix, the WebCore AccessibilityRole for ARIA's "application" role was
        renamed from LandmarkApplicationRole to WebApplicationRole.

        The roles-exposed.html and aria-grouping-roles.html test expectations were also updated.

        * AccessibleBase.cpp: Update the rolename
        (MSAARole):

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.cpp:
        Add new method override.

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.

        * Plugins/PluginView.h:
        * Plugins/PluginViewWin.cpp:
        (WebCore::PluginView::snapshot):
        Replace PassRefPtr with RefPtr.

2016-03-22  Per Arne Vollan  <peavo@outlook.com>

        [Win] [64-bit] Remove MSVC 2013 FMA3 Bug Workaround
        https://bugs.webkit.org/show_bug.cgi?id=141499

        Reviewed by Brent Fulgham.

        As we have moved on to VS2015, this workaround is no longer needed.

        * WebKitDLL.cpp:
        (DllMain):

2016-03-21  Hyungwook Lee  <hyungwook.lee@navercorp.com> 

        [Win] Connect layoutTestController.findString() to support testing 
        https://bugs.webkit.org/show_bug.cgi?id=50234

        Reviewed by Alex Christensen.

        Implement WebView::findString to support testing efforts.

        * Interfaces/IWebViewPrivate.idl: Add API declaration.
        * WebView.cpp:
        * WebView.h:

2016-03-16  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed, rolling out r196951 and r197031.

        Revert also WinCairo follow ups after r196803

        Reverted changesets:

        "[WinCairo] Compile fix."
        https://bugs.webkit.org/show_bug.cgi?id=154545
        http://trac.webkit.org/changeset/196951

        "[WinCairo] Mark layer as non composited."
        https://bugs.webkit.org/show_bug.cgi?id=154640
        http://trac.webkit.org/changeset/197031

2016-03-16  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed, rolling out r197693.

        197031

        Reverted changeset:

        "[WinCairo][AcceleratedCompositing] Rendering issues on
        www.bbc.com."
        https://bugs.webkit.org/show_bug.cgi?id=154912
        http://trac.webkit.org/changeset/197693

2016-03-15  Brent Fulgham  <bfulgham@apple.com>

        [Win] Correct double-release of CFURLConnectionRef
        https://bugs.webkit.org/show_bug.cgi?id=155515
        <rdar://problem/25159143>

        Reviewed by Tim Horton.

        Tested by http/tests/download suite.

        * WebDownloadCFNet.cpp: Remove extra CFRelease.

2016-03-14  Per Arne Vollan  <peavo@outlook.com>

        [WinCairo] Compile fix.
        https://bugs.webkit.org/show_bug.cgi?id=155463

        Reviewed by Alex Christensen.

        Get the NetworkStorageSession object from the document in the same way as other platforms do.

        * WebCoreSupport/WebFrameNetworkingContext.cpp:
        (WebFrameNetworkingContext::storageSession):
        * WebCoreSupport/WebFrameNetworkingContext.h:
        (WebFrameNetworkingContext::storageSession):

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.

        * WebArchive.cpp:
        (WebArchive::initWithNode):

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.cpp:
        (WebFrameNetworkingContext::ensurePrivateBrowsingSession):
        Pass a SessionID to NetworkStorageSession::createPrivateBrowsingSession().

2016-03-10  Jer Noble  <jer.noble@apple.com>

        Unreviewed build fix after r197953; correct the settings added in r197953.

        * WebView.cpp:
        (WebView::notifyPreferencesChanged):

2016-03-10  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.

        * WebView.cpp:
        (WebView::notifyPreferencesChanged):

2016-03-07  Per Arne Vollan  <peavo@outlook.com>

        [WinCairo][AcceleratedCompositing] Rendering issues on www.bbc.com.
        https://bugs.webkit.org/show_bug.cgi?id=154912

        Reviewed by Michael Catanzaro.

        If we have a scroll layer, we should not include the scroll position in the visible rectangle,
        since the scroll position is already reflected in the position of the scroll layer.

        * WebCoreSupport/AcceleratedCompositingContext.cpp:
        (AcceleratedCompositingContext::flushPendingLayerChanges):

2016-03-06  Gavin Barraclough  <barraclough@apple.com>

        Convert DOMTimer to std::chrono::milliseconds
        https://bugs.webkit.org/show_bug.cgi?id=155085

        Reviewed by Andreas Kling.

        DOMTimer currently uses a mix of millisecond (was int, now std::chrono) and second (as double)
        time values. Constant conversion back and forth is a complete mess. Stop that.

        * WebView.cpp:
        (WebView::setMinimumTimerInterval):
            - Convert double argument into std::chrono::milliseconds.

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/PluginPackage.cpp:
        (WebCore::NPN_Invoke):

2016-02-24  Per Arne Vollan  <peavo@outlook.com>

        [WinCairo] Mark layer as non composited.
        https://bugs.webkit.org/show_bug.cgi?id=154640

        Reviewed by Alex Christensen.

        We need to mark the non composited layer as being non composited.

        * WebCoreSupport/AcceleratedCompositingContext.cpp:
        (AcceleratedCompositingContext::initialize):
        (AcceleratedCompositingContext::flushPendingLayerChanges):

2016-02-22  Per Arne Vollan  <peavo@outlook.com>

        [WinCairo] Compile fix.
        https://bugs.webkit.org/show_bug.cgi?id=154545

        Reviewed by Alex Christensen.

        Add missing parameter to GraphicsLayerTextureMapper::updateBackingStoreIncludingSubLayers().

        * WebCoreSupport/AcceleratedCompositingContext.cpp:
        (AcceleratedCompositingContext::flushPendingLayerChanges):

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

        Refactor LazyEventListener creation to separate Element and Document cases
        https://bugs.webkit.org/show_bug.cgi?id=154231

        Reviewed by Andreas Kling.

        * WebView.h: Forward declare KeyboardEvent.

2016-02-16  Andreas Kling  <akling@apple.com>

        Drop StyleResolver and SelectorQueryCache when entering PageCache.
        <https://webkit.org/b/154238>

        Reviewed by Antti Koivisto.

        * WebCoreSupport/WebVisitedLinkStore.cpp:
        (WebVisitedLinkStore::removeAllVisitedLinks): Deleted.
        (WebVisitedLinkStore::addVisitedLinkHash): Deleted.

2016-02-14  Chris Dumez  <cdumez@apple.com>

        Unreviewed Window build fix.

        * WebCoreStatistics.cpp:
        * WebJavaScriptCollector.cpp:

2016-02-12  Jiewen Tan  <jiewen_tan@apple.com>

        WebKit should expose the DOM 4 Event.isTrusted property
        https://bugs.webkit.org/show_bug.cgi?id=76121
        <rdar://problem/22558494>

        Reviewed by Darin Adler.

        * DOMCoreClasses.cpp:
        (DOMNode::dispatchEvent):
        (DOMWindow::dispatchEvent):

2016-02-11  Antti Koivisto  <antti@apple.com>

        Try to fix windows build.

        * DOMCoreClasses.cpp:
        (DOMElement::style):
        (DOMElement::offsetLeft):

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/PluginDatabase.cpp:
        (WebCore::PluginDatabase::pluginForMIMEType): Use ASCII case-insensitive map rather
        than lowercasing the MIME type.
        (WebCore::PluginDatabase::setPreferredPluginForMIMEType): Ditto.

        * Plugins/PluginDatabase.h: Make m_preferredPlugins use an ASCII case-insensitive hash.

        * Plugins/PluginPackage.h: Use ASCII case-insensitive hash for maps keyed by MIME type.

        * Plugins/PluginPackageWin.cpp:
        (WebCore::PluginPackage::fetchInfo): Use convertToASCIILowercase to lowercase a MIME type.

2016-02-04  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: InspectorTimelineAgent doesn't need to recompile functions because it now uses the sampling profiler
        https://bugs.webkit.org/show_bug.cgi?id=153500
        <rdar://problem/24352458>

        Reviewed by Timothy Hatcher.

        * WebInspector.cpp:
        (WebInspector::isJavaScriptProfilingEnabled):
        (WebInspector::setJavaScriptProfilingEnabled):
        Switch to the new API names.

2016-01-31  Darin Adler  <darin@apple.com>

        Replace CaseFoldingHash with ASCIICaseInsensitiveHash
        https://bugs.webkit.org/show_bug.cgi?id=153639

        Reviewed by Filip Pizlo.

        * WebCoreStatistics.cpp:
        (WebCoreStatistics::memoryStatistics): Use ASCIICaseInsensitiveHash for field names.
        These names are all ASCII.

        * WebURLResponse.cpp:
        (WebURLResponse::allHeaderFields): Use ASCIICaseInsensitiveHash for HTTP header
        field names. These names are all ASCII.

2016-01-30  Commit Queue  <commit-queue@webkit.org>

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

        Caused frequent assertion failures on bots (Requested by ap on
        #webkit).

        Reverted changeset:

        "Replace CaseFoldingHash with ASCIICaseInsensitiveHash"
        https://bugs.webkit.org/show_bug.cgi?id=153639
        http://trac.webkit.org/changeset/195911

2016-01-30  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r195799 and r195828.
        https://bugs.webkit.org/show_bug.cgi?id=153722

        Caused assertion failures, severely affecting EWS (Requested
        by ap on #webkit).

        Reverted changesets:

        "Web Inspector: InspectorTimelineAgent doesn't need to
        recompile functions because it now uses the sampling profiler"
        https://bugs.webkit.org/show_bug.cgi?id=153500
        http://trac.webkit.org/changeset/195799

        "Attempt to fix the Windows build after r195799"
        http://trac.webkit.org/changeset/195828

2016-01-30  Darin Adler  <darin@apple.com>

        Replace CaseFoldingHash with ASCIICaseInsensitiveHash
        https://bugs.webkit.org/show_bug.cgi?id=153639

        Reviewed by Filip Pizlo.

        * WebCoreStatistics.cpp:
        (WebCoreStatistics::memoryStatistics): Use ASCIICaseInsensitiveHash for field names.
        These names are all ASCII.

        * WebURLResponse.cpp:
        (WebURLResponse::allHeaderFields): Use ASCIICaseInsensitiveHash for HTTP header
        field names. These names are all ASCII.

2016-01-29  Ryan Haddad  <ryanhaddad@apple.com>

        Attempt to fix the Windows build after r195799

        Unreviewed build fix.

        * WebInspector.cpp:
        (WebInspector::isJavaScriptProfilingEnabled):
        (WebInspector::setJavaScriptProfilingEnabled):

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.

        * Plugins/PluginDatabase.cpp:
        (WebCore::PluginDatabase::MIMETypeForExtension): Use equalIgnoringASCIICase to compare
        file extensions.
        * Plugins/PluginDatabaseWin.cpp:
        (WebCore::PluginDatabase::getPluginPathsInDirectories): Use equalLettersIgnoringASCIICase
        to compare filenames.
        * Plugins/PluginPackageWin.cpp:
        (WebCore::PluginPackage::isPluginBlacklisted): Use equalLettersIgnoringASCIICase to
        compare DLL filenames.
        * Plugins/PluginStream.cpp:
        (WebCore::PluginStream::destroyStream): Use equalLettersIgnoringASCIICase to check HTTP method.
        * Plugins/PluginView.cpp:
        (WebCore::PluginView::setParameters): Use equalLettersIgnoringASCIICase to check
        plug-in parameter name.
        * WebView.cpp:
        (WebView::canHandleRequest): Use URL::protocolIs instead of equalIgnoringCase.

2016-01-22  Ryosuke Niwa  <rniwa@webkit.org>

        document.createElement should be able to create a custom element
        https://bugs.webkit.org/show_bug.cgi?id=153173

        Reviewed by Darin Adler.

        Use createElementForBindings here since this is a C++ binding for Windows.

        * DOMCoreClasses.cpp:
        (DOMDocument::createElement):

2016-01-24  Gyuyoung Kim  <gyuyoung.kim@webkit.org>

        Reduce PassRefPtr uses in dom - 4
        https://bugs.webkit.org/show_bug.cgi?id=153270

        Reviewed by Darin Adler.

        As a step to remove PassRefPtr uses, this patch reduces the uses in WebCore/dom.

        * Plugins/PluginView.cpp:
        (WebCore::PluginView::focusPluginElement):

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.cpp:
        (WebChromeClient::supportsVideoFullscreen):
        * WebCoreSupport/WebChromeClient.h:

2016-01-22  Youenn Fablet  <youenn.fablet@crf.canon.fr>

        Remove PassRefPtr from ResourceRequest and FormData
        https://bugs.webkit.org/show_bug.cgi?id=153229

        Reviewed by Chris Dumez.

        * WebMutableURLRequest.cpp:
        (WebMutableURLRequest::setHTTPBody):

2016-01-15  Simon Fraser  <simon.fraser@apple.com>

        Remove GraphicsContext::drawConvexPolygon() and GraphicsContext::clipConvexPolygon()
        https://bugs.webkit.org/show_bug.cgi?id=153174

        Reviewed by Zalan Bujtas.

        GraphicsContext::drawConvexPolygon() and GraphicsContext::clipConvexPolygon() were
        poorly named (non-convex polygons are allowed), and just syntactic sugar over
        clipPath() and drawPath().
        
        Remove them, but add a convenience function to create a Path from a Vector of 
        points. For CG, we can use the more efficient CGPathAddLines().

        * FullscreenVideoController.cpp:
        (HUDSlider::draw):

2016-01-05  Per Arne Vollan  <peavo@outlook.com>

        [WinCairo] Download should use header values from provided request object.
        https://bugs.webkit.org/show_bug.cgi?id=152694

        Reviewed by Alex Christensen.

        Copy header values from request object parameter.

        * WebDownloadCurl.cpp:
        (WebDownload::initWithRequest):

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.

        * Plugins/PluginStream.cpp:
        (WebCore::PluginStream::willSendRequest):
        * Plugins/PluginView.cpp:
        (WebCore::PluginView::requestTimerFired):
        (WebCore::PluginView::scheduleRequest):
        (WebCore::PluginView::handlePost):
        * WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebFrameLoaderClient::createDocumentLoader):
        * WebCoreSupport/WebInspectorClient.cpp:
        (WebInspectorFrontendClient::WebInspectorFrontendClient):
        * WebHistory.cpp:
        (createUserInfoFromArray):
        * WebHistoryItem.cpp:
        (WebHistoryItem::initFromDictionaryRepresentation):
        * WebView.cpp:
        (WebView::addToDirtyRegion):
        (WebView::scrollBackingStore):
        (WebView::loadBackForwardListFromOtherView):
        (WebView::addUserScriptToGroup):
        (WebView::addUserStyleSheetToGroup):

2015-12-29  Simon Fraser  <simon.fraser@apple.com>

        Fix Windows build.

        * WebView.cpp:
        (WebView::scrollOffset):

2015-12-25  David Kilzer  <ddkilzer@apple.com>

        ResourceError should store failingURL as URL instead of String to avoid reparsing and to address FIXME comments in ResourceErrorCF.cpp and ResourceErrorMac.mm
        <http://webkit.org/b/146391>

        Reviewed by Antti Koivisto.

        * WebCoreSupport/WebFrameLoaderClient.cpp:
        (WebFrameLoaderClient::cancelledError):
        (WebFrameLoaderClient::blockedError):
        (WebFrameLoaderClient::cannotShowURLError):
        (WebFrameLoaderClient::interruptedForPolicyChangeError):
        (WebFrameLoaderClient::cannotShowMIMETypeError):
        (WebFrameLoaderClient::fileDoesNotExistError):
        (WebFrameLoaderClient::pluginWillHandleLoadError):
        (WebFrameLoaderClient::dispatchDidFailToStartPlugin):
        (WebFrameLoaderClient::createJavaAppletWidget):
        * WebDownloadCFNet.cpp:
        (WebDownload::cancelAuthenticationChallenge):
        * WebError.cpp:
        (WebError::init):
        - Update for type change of 'failingURL' argument to
          ResourceError().

2015-12-23  Brent Fulgham  <bfulgham@apple.com>

        Web Inspector: add support for running protocol-test.js tests on Windows
        https://bugs.webkit.org/show_bug.cgi?id=148037
        <rdar://problem/22292237>

        Reviewed by Simon Fraser.

        Provide API for WebKit.dll clients to request its CFBundleRef.
        
        * WebKitCOMAPI.cpp:
        (webKitBundle): Added.
        * WebKitCOMAPI.h:

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.cpp:
        (WebInspectorFrontendClient::setToolbarHeight): Deleted.
        * WebCoreSupport/WebInspectorClient.h:

2015-12-15  Zan Dobersek  <zdobersek@igalia.com>

        [TexMap] Operate with a reference to the TextureMapper wherever possible
        https://bugs.webkit.org/show_bug.cgi?id=152118

        Reviewed by Martin Robinson.

        * WebCoreSupport/AcceleratedCompositingContext.cpp:
        (AcceleratedCompositingContext::compositeLayersToContext): TextureMapper object
        is now operated with through a reference.

2015-12-01  Darin Adler  <darin@apple.com>

        Fix anomaly where isMouseEvent returns false for wheel events
        https://bugs.webkit.org/show_bug.cgi?id=151685

        Reviewed by Alexey Proskuryakov.

        * DOMEventsClasses.cpp:
        (DOMEvent::createInstance): Use eventInterface instead of isMouseEvent to create the appropriate
        wrapper class.

2015-11-24  Per Arne Vollan  <peavo@outlook.com>

        [Win] Implement methods to get and set inner html.
        https://bugs.webkit.org/show_bug.cgi?id=151569

        Reviewed by Alex Christensen.

        * DOMHTMLClasses.cpp:
        (DOMHTMLElement::innerHTML):
        (DOMHTMLElement::setInnerHTML):
        (DOMHTMLElement::innerText):

== Rolled over to ChangeLog-2015-11-21 ==
