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