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