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