Rename EventHandler::freeDataTransfer to invalidateDataTransfer
[WebKit-https.git] / Source / WebCore / ChangeLog
index a2db2af..2d48f53 100644 (file)
@@ -1,3 +1,895 @@
+2017-02-16  Anders Carlsson  <andersca@apple.com>
+
+        Rename EventHandler::freeDataTransfer to invalidateDataTransfer
+        https://bugs.webkit.org/show_bug.cgi?id=168472
+
+        Reviewed by Tim Horton.
+
+        The code doesn't necessarily free the data transfer object, so rename the member function
+        to reflect that. Also, get rid of a goto.
+
+        * page/EventHandler.cpp:
+        (WebCore::EventHandler::invalidateDataTransfer):
+        (WebCore::EventHandler::dragSourceEndedAt):
+        (WebCore::EventHandler::handleDrag):
+        (WebCore::EventHandler::freeDataTransfer): Deleted.
+        * page/EventHandler.h:
+
+2017-02-16  Alex Christensen  <achristensen@webkit.org>
+
+        Special URLs without a host are invalid
+        https://bugs.webkit.org/show_bug.cgi?id=168461
+
+        Reviewed by Tim Horton.
+
+        http://? should be invalid.  This matches Chrome and the spec and the intent of my implementation
+        of URLParser which already fails with urls like http:// and this was just an oversight.
+        Covered by newly passing web platform tests.  Updated API tests.
+
+        * platform/URLParser.cpp:
+        (WebCore::URLParser::parse):
+
+2017-02-16  Zalan Bujtas  <zalan@apple.com>
+
+        Simple line layout: Add support for pagination.
+        https://bugs.webkit.org/show_bug.cgi?id=168355
+        <rdar://problem/30119769>
+
+        Reviewed by David Hyatt.
+
+        This patch adds basic support for paginated content including widows and orphans.
+
+        This is based on the normal line layout pagination logic. However there are 2 major
+        advantages here (and they allow us to have a much simpler logic):
+        1. all the lines are positioned by the time we start paginating them and
+        2. lines always have uniform heights. 
+
+        This is not enabled yet.
+
+        * rendering/RenderBlockFlow.h:
+        * rendering/SimpleLineLayout.cpp:
+        (WebCore::SimpleLineLayout::computeLineTopAndBottomWithOverflow):
+        (WebCore::SimpleLineLayout::computeLineBreakIndex):
+        (WebCore::SimpleLineLayout::setPageBreakForLine):
+        (WebCore::SimpleLineLayout::computeOffsetAfterLineBreak):
+        (WebCore::SimpleLineLayout::updateMinimumPageHeight):
+        (WebCore::SimpleLineLayout::adjustLinePositionsForPagination):
+        (WebCore::SimpleLineLayout::create):
+        (WebCore::SimpleLineLayout::Layout::create):
+        (WebCore::SimpleLineLayout::Layout::Layout):
+        * rendering/SimpleLineLayout.h:
+        (WebCore::SimpleLineLayout::Layout::isPaginated):
+        (WebCore::SimpleLineLayout::Layout::struts):
+        * rendering/SimpleLineLayoutFunctions.h:
+        (WebCore::SimpleLineLayout::computeFlowHeight):
+        * rendering/SimpleLineLayoutResolver.h:
+        (WebCore::SimpleLineLayout::RunResolver::Run::computeBaselinePosition):
+
+2017-02-11  Filip Pizlo  <fpizlo@apple.com>
+
+        The collector thread should only start when the mutator doesn't have heap access
+        https://bugs.webkit.org/show_bug.cgi?id=167737
+
+        Reviewed by Keith Miller.
+
+        Added new tests in JSTests and LayoutTests.
+        
+        The WebCore changes involve:
+        
+        - Refactoring around new header discipline.
+        
+        - Adding crazy GC APIs to window.internals to enable us to test the GC's runloop discipline.
+
+        * ForwardingHeaders/heap/GCFinalizationCallback.h: Added.
+        * ForwardingHeaders/heap/IncrementalSweeper.h: Added.
+        * ForwardingHeaders/heap/MachineStackMarker.h: Added.
+        * ForwardingHeaders/heap/RunningScope.h: Added.
+        * bindings/js/CommonVM.cpp:
+        * testing/Internals.cpp:
+        (WebCore::Internals::parserMetaData):
+        (WebCore::Internals::isReadableStreamDisturbed):
+        (WebCore::Internals::isGCRunning):
+        (WebCore::Internals::addGCFinalizationCallback):
+        (WebCore::Internals::stopSweeping):
+        (WebCore::Internals::startSweeping):
+        * testing/Internals.h:
+        * testing/Internals.idl:
+
+2017-02-16  Jiewen Tan  <jiewen_tan@apple.com>
+
+        [WebCrypto] remove toJSValueFromJsonWebKey from custom SubtleCrypto binding codes
+        https://bugs.webkit.org/show_bug.cgi?id=167026
+
+        Reviewed by Chris Dumez.
+
+        Covered by existing tests.
+
+        * bindings/js/JSSubtleCryptoCustom.cpp:
+        (WebCore::jsSubtleCryptoFunctionExportKeyPromise):
+        (WebCore::jsSubtleCryptoFunctionWrapKeyPromise):
+        (WebCore::toJSValueFromJsonWebKey): Deleted.
+        * crypto/JsonWebKey.h:
+        * crypto/JsonWebKey.idl:
+        * crypto/RsaOtherPrimesInfo.idl:
+        Change std::optional<String> to String in order to use toJS<IDLDictionary<JsonWebKey>>.
+        * crypto/algorithms/CryptoAlgorithmAES_CBC.cpp:
+        (WebCore::CryptoAlgorithmAES_CBC::importKey):
+        * crypto/algorithms/CryptoAlgorithmAES_KW.cpp:
+        (WebCore::CryptoAlgorithmAES_KW::importKey):
+        * crypto/algorithms/CryptoAlgorithmHMAC.cpp:
+        (WebCore::CryptoAlgorithmHMAC::importKey):
+        * crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.cpp:
+        (WebCore::CryptoAlgorithmRSAES_PKCS1_v1_5::importKey):
+        * crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.cpp:
+        (WebCore::CryptoAlgorithmRSASSA_PKCS1_v1_5::importKey):
+        * crypto/algorithms/CryptoAlgorithmRSA_OAEP.cpp:
+        (WebCore::CryptoAlgorithmRSA_OAEP::importKey):
+        * crypto/keys/CryptoKeyAES.cpp:
+        (WebCore::CryptoKeyAES::importJwk):
+        Only check if key_ops contains all of the specified usages when key_ops field of jwk is present,
+        as per the specification: https://www.w3.org/TR/WebCryptoAPI/#aes-cbc-operations
+        * crypto/keys/CryptoKeyAES.h:
+        * crypto/keys/CryptoKeyHMAC.cpp:
+        (WebCore::CryptoKeyHMAC::importJwk):
+        * crypto/keys/CryptoKeyHMAC.h:
+        * crypto/keys/CryptoKeyRSA.cpp:
+        (WebCore::CryptoKeyRSA::importJwk):
+        Accommodate the change from std::optional<String> to String.
+        * crypto/mac/CryptoKeyRSAMac.cpp:
+        (WebCore::CryptoKeyRSA::create):
+        Add a null check for p.
+
+2017-02-16  Antti Koivisto  <antti@apple.com>
+
+        Execute pending scripts asynchronously after stylesheet loads complete
+        https://bugs.webkit.org/show_bug.cgi?id=168367
+        rdar://problem/30561379
+
+        Reviewed by Andreas Kling.
+
+        The current synchronous execution is fragile and creates various problems.
+
+        * css/StyleSheetContents.cpp:
+        (WebCore::StyleSheetContents::checkLoaded):
+        * dom/ContainerNode.cpp:
+        (WebCore::ContainerNode::takeAllChildrenFrom):
+        (WebCore::ContainerNode::notifyChildInserted):
+        (WebCore::ContainerNode::removeChild):
+        (WebCore::ContainerNode::parserRemoveChild):
+        (WebCore::ContainerNode::removeChildren):
+
+            Remove various places where we would trigger delayed synchronous execution.
+
+        * dom/Document.cpp:
+        (WebCore::Document::Document):
+        (WebCore::Document::recalcStyle):
+
+            Trigger scroll to anchor at the end of style resolution instead of when style sheet load completes.
+
+        (WebCore::Document::didRemoveAllPendingStylesheet):
+
+            Call asynchronous script execution function.
+
+        * dom/Document.h:
+        (WebCore::Document::setNeedsNotifyRemoveAllPendingStylesheet): Deleted.
+        (WebCore::Document::notifyRemovePendingSheetIfNeeded): Deleted.
+        * dom/ScriptableDocumentParser.cpp:
+        (WebCore::ScriptableDocumentParser::ScriptableDocumentParser):
+        (WebCore::ScriptableDocumentParser::executeScriptsWaitingForStylesheetsSoon):
+        (WebCore::ScriptableDocumentParser::scriptsWaitingForStylesheetsExecutionTimerFired):
+
+            Add a timer for executing pending scripts.
+
+        (WebCore::ScriptableDocumentParser::detach):
+        * dom/ScriptableDocumentParser.h:
+        (WebCore::ScriptableDocumentParser::executeScriptsWaitingForStylesheets):
+        * html/HTMLLinkElement.cpp:
+        (WebCore::HTMLLinkElement::removedFrom):
+        (WebCore::HTMLLinkElement::removePendingSheet):
+        * html/HTMLLinkElement.h:
+        * html/parser/HTMLDocumentParser.cpp:
+        (WebCore::HTMLDocumentParser::detach):
+        * loader/DocumentLoader.cpp:
+        (WebCore::DocumentLoader::isLoadingInAPISense):
+
+            Stay in loading state if we have a pending script. This matches existing behavior.
+
+        * style/StyleScope.cpp:
+        (WebCore::Style::Scope::removePendingSheet):
+        * style/StyleScope.h:
+
+2017-02-16  Anders Carlsson  <andersca@apple.com>
+
+        Set the DHTML drag image in the DHTML type check
+        https://bugs.webkit.org/show_bug.cgi?id=168451
+
+        Reviewed by Wenson Hsieh.
+
+        * page/DragController.cpp:
+        (WebCore::DragController::startDrag):
+
+2017-02-16  Anders Carlsson  <andersca@apple.com>
+
+        Begin removing EFL code from WebCore.
+
+        Rubber-stamped by Alex Christensen.
+
+        * PlatformEfl.cmake: Removed.
+        * editing/efl/EditorEfl.cpp: Removed.
+        * page/efl/DragControllerEfl.cpp: Removed.
+        * page/efl/EventHandlerEfl.cpp: Removed.
+        * platform/audio/efl/AudioBusEfl.cpp: Removed.
+        * platform/efl/CursorEfl.cpp: Removed.
+        * platform/efl/DefaultTheme/CMakeLists.txt: Removed.
+        * platform/efl/DefaultTheme/default.edc: Removed.
+        * platform/efl/DefaultTheme/widget/button/button.edc: Removed.
+        * platform/efl/DefaultTheme/widget/button/img_button_focus.png: Removed.
+        * platform/efl/DefaultTheme/widget/button/img_button_hover.png: Removed.
+        * platform/efl/DefaultTheme/widget/button/img_button_normal.png: Removed.
+        * platform/efl/DefaultTheme/widget/button/img_button_press.png: Removed.
+        * platform/efl/DefaultTheme/widget/check/check.edc: Removed.
+        * platform/efl/DefaultTheme/widget/check/img_check_bg_disabled.png: Removed.
+        * platform/efl/DefaultTheme/widget/check/img_check_bg_enabled.png: Removed.
+        * platform/efl/DefaultTheme/widget/check/img_check_off.png: Removed.
+        * platform/efl/DefaultTheme/widget/check/img_check_off_focus.png: Removed.
+        * platform/efl/DefaultTheme/widget/check/img_check_off_hover.png: Removed.
+        * platform/efl/DefaultTheme/widget/check/img_check_on.png: Removed.
+        * platform/efl/DefaultTheme/widget/check/img_check_on_focus.png: Removed.
+        * platform/efl/DefaultTheme/widget/check/img_check_on_hover.png: Removed.
+        * platform/efl/DefaultTheme/widget/combo/combo.edc: Removed.
+        * platform/efl/DefaultTheme/widget/combo/combo_focus.png: Removed.
+        * platform/efl/DefaultTheme/widget/combo/combo_focus_button.png: Removed.
+        * platform/efl/DefaultTheme/widget/combo/combo_focus_button_transparent.png: Removed.
+        * platform/efl/DefaultTheme/widget/combo/combo_focus_transparent.png: Removed.
+        * platform/efl/DefaultTheme/widget/combo/combo_hover.png: Removed.
+        * platform/efl/DefaultTheme/widget/combo/combo_hover_button.png: Removed.
+        * platform/efl/DefaultTheme/widget/combo/combo_hover_button_transparent.png: Removed.
+        * platform/efl/DefaultTheme/widget/combo/combo_hover_transparent.png: Removed.
+        * platform/efl/DefaultTheme/widget/combo/combo_normal.png: Removed.
+        * platform/efl/DefaultTheme/widget/combo/combo_normal_button.png: Removed.
+        * platform/efl/DefaultTheme/widget/combo/combo_normal_button_transparent.png: Removed.
+        * platform/efl/DefaultTheme/widget/combo/combo_normal_transparent.png: Removed.
+        * platform/efl/DefaultTheme/widget/combo/combo_press.png: Removed.
+        * platform/efl/DefaultTheme/widget/combo/combo_press_button.png: Removed.
+        * platform/efl/DefaultTheme/widget/combo/combo_press_button_transparent.png: Removed.
+        * platform/efl/DefaultTheme/widget/combo/combo_press_transparent.png: Removed.
+        * platform/efl/DefaultTheme/widget/combo/icon.png: Removed.
+        * platform/efl/DefaultTheme/widget/entry/entry.edc: Removed.
+        * platform/efl/DefaultTheme/widget/entry/img_focused.png: Removed.
+        * platform/efl/DefaultTheme/widget/entry/img_hovered.png: Removed.
+        * platform/efl/DefaultTheme/widget/entry/img_normal.png: Removed.
+        * platform/efl/DefaultTheme/widget/progressbar/bt_base.png: Removed.
+        * platform/efl/DefaultTheme/widget/progressbar/progressbar.edc: Removed.
+        * platform/efl/DefaultTheme/widget/progressbar/shelf_inset.png: Removed.
+        * platform/efl/DefaultTheme/widget/radio/img_radio_bg_disabled.png: Removed.
+        * platform/efl/DefaultTheme/widget/radio/img_radio_bg_enabled.png: Removed.
+        * platform/efl/DefaultTheme/widget/radio/img_radio_off.png: Removed.
+        * platform/efl/DefaultTheme/widget/radio/img_radio_off_focus.png: Removed.
+        * platform/efl/DefaultTheme/widget/radio/img_radio_off_hover.png: Removed.
+        * platform/efl/DefaultTheme/widget/radio/img_radio_on.png: Removed.
+        * platform/efl/DefaultTheme/widget/radio/img_radio_on_focus.png: Removed.
+        * platform/efl/DefaultTheme/widget/radio/img_radio_on_hover.png: Removed.
+        * platform/efl/DefaultTheme/widget/radio/radio.edc: Removed.
+        * platform/efl/DefaultTheme/widget/scrollbar/scrollbar.edc: Removed.
+        * platform/efl/DefaultTheme/widget/scrollbar/scrollbar_bg_horizontal.png: Removed.
+        * platform/efl/DefaultTheme/widget/scrollbar/scrollbar_bg_vertical.png: Removed.
+        * platform/efl/DefaultTheme/widget/scrollbar/scrollbar_thumb_horizontal.png: Removed.
+        * platform/efl/DefaultTheme/widget/scrollbar/scrollbar_thumb_vertical.png: Removed.
+        * platform/efl/DefaultTheme/widget/search/cancel/cancel_normal_button.png: Removed.
+        * platform/efl/DefaultTheme/widget/search/cancel/cancel_normal_button2.png: Removed.
+        * platform/efl/DefaultTheme/widget/search/cancel/search_cancel.edc: Removed.
+        * platform/efl/DefaultTheme/widget/search/decoration/decoration_normal_button.png: Removed.
+        * platform/efl/DefaultTheme/widget/search/decoration/search_decoration.edc: Removed.
+        * platform/efl/DefaultTheme/widget/search/field/field_focused.png: Removed.
+        * platform/efl/DefaultTheme/widget/search/field/field_hovered.png: Removed.
+        * platform/efl/DefaultTheme/widget/search/field/field_normal.png: Removed.
+        * platform/efl/DefaultTheme/widget/search/field/search_field.edc: Removed.
+        * platform/efl/DefaultTheme/widget/slider/slider.edc: Removed.
+        * platform/efl/DefaultTheme/widget/slider/slider_fill_h.png: Removed.
+        * platform/efl/DefaultTheme/widget/slider/slider_fill_v.png: Removed.
+        * platform/efl/DefaultTheme/widget/slider/slider_h.png: Removed.
+        * platform/efl/DefaultTheme/widget/slider/slider_thumb_h.png: Removed.
+        * platform/efl/DefaultTheme/widget/slider/slider_thumb_press_h.png: Removed.
+        * platform/efl/DefaultTheme/widget/slider/slider_thumb_press_v.png: Removed.
+        * platform/efl/DefaultTheme/widget/slider/slider_thumb_v.png: Removed.
+        * platform/efl/DefaultTheme/widget/slider/slider_v.png: Removed.
+        * platform/efl/DefaultTheme/widget/spinner/sp_bg.png: Removed.
+        * platform/efl/DefaultTheme/widget/spinner/sp_down_default.png: Removed.
+        * platform/efl/DefaultTheme/widget/spinner/sp_down_hover.png: Removed.
+        * platform/efl/DefaultTheme/widget/spinner/sp_down_pressed.png: Removed.
+        * platform/efl/DefaultTheme/widget/spinner/sp_up_default.png: Removed.
+        * platform/efl/DefaultTheme/widget/spinner/sp_up_hover.png: Removed.
+        * platform/efl/DefaultTheme/widget/spinner/sp_up_pressed.png: Removed.
+        * platform/efl/DefaultTheme/widget/spinner/spinner.edc: Removed.
+        * platform/efl/DragDataEfl.cpp: Removed.
+        * platform/efl/DragImageEfl.cpp: Removed.
+        * platform/efl/EflInspectorUtilities.cpp: Removed.
+        * platform/efl/EflInspectorUtilities.h: Removed.
+        * platform/efl/EflKeyboardUtilities.cpp: Removed.
+        * platform/efl/EflKeyboardUtilities.h: Removed.
+        * platform/efl/EflScreenUtilities.cpp: Removed.
+        * platform/efl/EflScreenUtilities.h: Removed.
+        * platform/efl/ErrorsEfl.cpp: Removed.
+        * platform/efl/ErrorsEfl.h: Removed.
+        * platform/efl/EventLoopEfl.cpp: Removed.
+        * platform/efl/FileSystemEfl.cpp: Removed.
+        * platform/efl/LocalizedStringsEfl.cpp: Removed.
+        * platform/efl/MIMETypeRegistryEfl.cpp: Removed.
+        * platform/efl/MainThreadSharedTimerEfl.cpp: Removed.
+        * platform/efl/PasteboardEfl.cpp: Removed.
+        * platform/efl/PlatformKeyboardEventEfl.cpp: Removed.
+        * platform/efl/PlatformMouseEventEfl.cpp: Removed.
+        * platform/efl/PlatformScreenEfl.cpp: Removed.
+        * platform/efl/PlatformSpeechSynthesisProviderEfl.cpp: Removed.
+        * platform/efl/PlatformSpeechSynthesisProviderEfl.h: Removed.
+        * platform/efl/PlatformSpeechSynthesizerEfl.cpp: Removed.
+        * platform/efl/PlatformWheelEventEfl.cpp: Removed.
+        * platform/efl/ScrollbarThemeEfl.cpp: Removed.
+        * platform/efl/ScrollbarThemeEfl.h: Removed.
+        * platform/efl/SoundEfl.cpp: Removed.
+        * platform/efl/TemporaryLinkStubs.cpp: Removed.
+        * platform/efl/UserAgentEfl.cpp: Removed.
+        * platform/efl/WidgetEfl.cpp: Removed.
+        * platform/gamepad/efl/GamepadsEfl.cpp: Removed.
+        * platform/graphics/efl/CairoUtilitiesEfl.cpp: Removed.
+        * platform/graphics/efl/CairoUtilitiesEfl.h: Removed.
+        * platform/graphics/efl/EvasGLContext.cpp: Removed.
+        * platform/graphics/efl/EvasGLContext.h: Removed.
+        * platform/graphics/efl/EvasGLSurface.cpp: Removed.
+        * platform/graphics/efl/EvasGLSurface.h: Removed.
+        * platform/graphics/efl/GraphicsContext3DEfl.cpp: Removed.
+        * platform/graphics/efl/GraphicsContext3DPrivate.cpp: Removed.
+        * platform/graphics/efl/GraphicsContext3DPrivate.h: Removed.
+        * platform/graphics/efl/IconEfl.cpp: Removed.
+        * platform/graphics/efl/ImageBufferEfl.cpp: Removed.
+        * platform/graphics/efl/ImageEfl.cpp: Removed.
+        * platform/graphics/efl/IntPointEfl.cpp: Removed.
+        * platform/graphics/efl/IntRectEfl.cpp: Removed.
+        * platform/graphics/surfaces/efl/GraphicsSurfaceCommon.cpp: Removed.
+        * platform/network/efl/NetworkStateNotifierEfl.cpp: Removed.
+        * rendering/RenderThemeEfl.cpp: Removed.
+        * rendering/RenderThemeEfl.h: Removed.
+
+2017-02-16  Joseph Pecoraro  <pecoraro@apple.com>
+
+        [Resource Timing] Support Resource Timing in Workers
+        https://bugs.webkit.org/show_bug.cgi?id=168086
+        <rdar://problem/30430117>
+
+        Reviewed by Alex Christensen.
+
+        Worker's load resources through the Document that loaded them. However,
+        their PerformanceResourceTiming entries should be added to the Performance
+        object inside the Worker context, not the Document's context.
+
+        This change adds an InitiatorContext to ResourceLoadOptions so that loaders
+        can determine if the load was initiated by the Document or a Worker. This
+        allows loaders to then know if the ResourceTiming data they collect should
+        be added to the Document's Performance object or forwarded on to the Worker's.
+
+        This adds a new ThreadableLoaderClient method intended only for the purpose
+        of adding the ResourceTiming information to the Worker's Performance object.
+        Unlike other ThreadableLoaderClient methods that are bridged and forwarded
+        on to a client inside the worker (e.g. XMLHttpRequest or FetchLoader) this
+        method never needs to be handled by clients and can be uniformly handled by
+        the WorkerThreadableLoader itself.
+
+        We also add a new ResourceTiming object that encapsulates all of the data
+        ultimately needed for a PerformanceResourceTimingEntry object. This allows
+        for all of the information to be gathered while loading on the Document
+        before serializing across to the Worker. That includes the Timing-Allow-Origin
+        check which uses the SecurityOrigin of the Worker.
+
+        This also modernizes and addresses issues in the Resource Timing implementation.
+        Better handling cases like loading from the Cache, Synchronous Loads, and
+        improving initiatorType information.
+
+        Tests: imported/w3c/web-platform-tests/resource-timing/rt-cors.html
+               imported/w3c/web-platform-tests/resource-timing/rt-cors.worker.html
+               imported/w3c/web-platform-tests/resource-timing/rt-initiatorType-css.html
+               imported/w3c/web-platform-tests/resource-timing/rt-initiatorType-element.html
+               imported/w3c/web-platform-tests/resource-timing/rt-initiatorType-fetch.html
+               imported/w3c/web-platform-tests/resource-timing/rt-initiatorType-media.html
+               imported/w3c/web-platform-tests/resource-timing/rt-initiatorType-other.html
+               imported/w3c/web-platform-tests/resource-timing/rt-initiatorType-script-module.html
+               imported/w3c/web-platform-tests/resource-timing/rt-initiatorType-xmlhttprequest.html
+               imported/w3c/web-platform-tests/resource-timing/rt-initiatorType.worker.html
+               imported/w3c/web-platform-tests/resource-timing/rt-performance-extensions.html
+               imported/w3c/web-platform-tests/resource-timing/rt-performance-extensions.worker.html
+               imported/w3c/web-platform-tests/resource-timing/rt-resource-errors.html
+               imported/w3c/web-platform-tests/resource-timing/rt-resource-ignored.html
+               imported/w3c/web-platform-tests/resource-timing/rt-resources-per-frame.html
+               imported/w3c/web-platform-tests/resource-timing/rt-resources-per-worker.html
+               imported/w3c/web-platform-tests/resource-timing/rt-serialization.html
+               imported/w3c/web-platform-tests/resource-timing/rt-shared-resource-in-frames.html
+               imported/w3c/web-platform-tests/resource-timing/rt-shared-resource-in-workers.html
+               performance-api/resource-timing-apis.html
+
+        * CMakeLists.txt:
+        * WebCore.xcodeproj/project.pbxproj:
+        New files.
+
+        * platform/network/NetworkLoadTiming.h:
+        (WebCore::NetworkLoadTiming::reset): Deleted.
+        We no longer need to reset.
+
+        * loader/ResourceTiming.cpp: Added.
+        (WebCore::passesTimingAllowCheck):
+        (WebCore::ResourceTiming::fromCache):
+        (WebCore::ResourceTiming::fromLoad):
+        (WebCore::ResourceTiming::fromSynchronousLoad):
+        (WebCore::ResourceTiming::ResourceTiming):
+        (WebCore::ResourceTiming::isolatedCopy):
+        * loader/ResourceTiming.h: Added.
+        (WebCore::ResourceTiming::url):
+        (WebCore::ResourceTiming::initiator):
+        (WebCore::ResourceTiming::loadTiming):
+        (WebCore::ResourceTiming::networkLoadTiming):
+        (WebCore::ResourceTiming::allowTimingDetails):
+        (WebCore::ResourceTiming::overrideInitiatorName):
+        (WebCore::ResourceTiming::ResourceTiming):
+        Class that encapsulates all of the data needed for a PerformanceResourceTiming entry.
+        There are three static constructors indicating the different ways this object can
+        be constructed and the different data available at the time of construction.
+
+        * loader/ResourceLoaderOptions.h:
+        Add the new InitiatorContext, default to Document.
+
+        * loader/ThreadableLoaderClient.h:
+        (WebCore::ThreadableLoaderClient::didFinishTiming):
+        New client method only used by WorkerThreadableLoader.
+
+        * loader/WorkerThreadableLoader.h:
+        * loader/WorkerThreadableLoader.cpp:
+        (WebCore::WorkerThreadableLoader::MainThreadBridge::MainThreadBridge):
+        (WebCore::WorkerThreadableLoader::MainThreadBridge::didFinishTiming):
+        All loads initiated in a WorkerThreadableLoader get identified as InitiatorContext::Worker.
+        Add timing information to the Performance object when received. No need to inform clients.
+
+        * loader/DocumentThreadableLoader.h:
+        * loader/DocumentThreadableLoader.cpp:
+        (WebCore::DocumentThreadableLoader::finishedTimingForWorkerLoad):
+        (WebCore::DocumentThreadableLoader::loadRequest):
+        Provide APIs to pass timing data on to a WorkerThreadableLoader.
+        Create ResourceTiming data for synchronous loads.
+
+        * loader/LoadTiming.h:
+        * loader/LoadTiming.cpp:
+        (WebCore::LoadTiming::isolatedCopy):
+        Add isolatedCopy to allow this data to be passed across to a Worker.
+
+        * loader/ResourceTimingInformation.h:
+        * loader/ResourceTimingInformation.cpp:
+        (WebCore::ResourceTimingInformation::shouldAddResourceTiming):
+        (WebCore::ResourceTimingInformation::addResourceTiming):
+        (WebCore::ResourceTimingInformation::storeResourceTimingInitiatorInformation):
+        Refactor to remove unused / unnecessary bits. Extract out some helpful code.
+        Changed this to match when Blink decides when to add or ignore entries, however
+        this may change over time.
+
+        * loader/SubresourceLoader.cpp:
+        (WebCore::SubresourceLoader::didFinishLoading):
+        (WebCore::SubresourceLoader::notifyDone):
+        (WebCore::SubresourceLoader::reportResourceTiming):
+        * loader/SubresourceLoader.h:
+        * loader/cache/CachedRawResource.cpp:
+        (WebCore::CachedRawResource::finishedTimingForWorkerLoad):
+        * loader/cache/CachedRawResource.h:
+        * loader/cache/CachedRawResourceClient.h:
+        (WebCore::CachedRawResourceClient::finishedTimingForWorkerLoad):
+        Plumbing to report timing information to Worker if this resource was loaded for a Worker.
+
+        * loader/cache/CachedResource.cpp:
+        (WebCore::CachedResource::CachedResource):
+        * loader/cache/CachedResource.h:
+        (WebCore::CachedResource::initiatorName):
+        Store the initiator name on the CachedResource like other data added to the original
+        CachedResourceRequest. This is a bit of a hack but follows an existing pattern, and
+        cleans up other hacks that worked around this later on.
+
+        * loader/cache/CachedResourceLoader.h:
+        * loader/cache/CachedResourceLoader.cpp:
+        (WebCore::CachedResourceLoader::requestResource):
+        (WebCore::CachedResourceLoader::revalidateResource):
+        (WebCore::CachedResourceLoader::loadResource):
+        Simply the creation of a ResourceTiming object for cache hits.
+        Report timing information to Worker if this resource was loaded for a Worker.
+
+        (WebCore::CachedResourceLoader::loadDone):
+        Eliminate this redundant point attempting to add a ResourceTiming entry.
+
+        * loader/cache/CachedResourceRequest.cpp:
+        (WebCore::CachedResourceRequest::initiatorName):
+        Update to match the spec. The fallback is "other".
+
+        * page/Performance.h:
+        * page/Performance.cpp:
+        (WebCore::Performance::setResourceTimingBufferSize):
+        (WebCore::Performance::addResourceTiming):
+        Update to support PerformanceObservers.
+        Update to match spec (event should bubble).
+
+        * page/PerformanceResourceTiming.h:
+        * page/PerformanceResourceTiming.cpp:
+        (WebCore::PerformanceResourceTiming::create):
+        (WebCore::PerformanceResourceTiming::PerformanceResourceTiming):
+        (WebCore::PerformanceResourceTiming::fetchStart):
+        (WebCore::PerformanceResourceTiming::domainLookupStart):
+        (WebCore::PerformanceResourceTiming::domainLookupEnd):
+        (WebCore::PerformanceResourceTiming::connectStart):
+        (WebCore::PerformanceResourceTiming::connectEnd):
+        (WebCore::PerformanceResourceTiming::secureConnectionStart):
+        (WebCore::PerformanceResourceTiming::requestStart):
+        (WebCore::PerformanceResourceTiming::responseStart):
+        (WebCore::PerformanceResourceTiming::responseEnd):
+        (WebCore::PerformanceResourceTiming::networkLoadTimeToDOMHighResTimeStamp):
+        Construct with a ResourceTiming object containing all the data we need for the entry.
+        Update to match spec for what is required, should fallback, should be zero, etc.
+
+        (WebCore::passesTimingAllowCheck): Deleted.
+        Extracted this to ResourceTiming creation time in the loading context,
+        since this can't be determined on the Worker context without also having
+        all of the header information from each resource response.
+
+        * page/PerformanceResourceTiming.idl:
+        Expose to Workers!
+
+2017-02-16  Yusuke Suzuki  <utatane.tea@gmail.com>
+
+        [JSC] Drop PassRefPtr in inspector/
+        https://bugs.webkit.org/show_bug.cgi?id=168420
+
+        Reviewed by Alex Christensen.
+
+        Use Ref<Inspector::ScriptArguments> and Ref<ScriptCallStack> as much as possible.
+        It drops some unnecessary null checks.
+
+        * bindings/scripts/CodeGeneratorJS.pm:
+        (GenerateCallWith):
+        * bindings/scripts/test/JS/JSTestObj.cpp:
+        (WebCore::jsTestObjPrototypeFunctionWithScriptArgumentsAndCallStackCaller):
+        * dom/ScriptExecutionContext.cpp:
+        (WebCore::ScriptExecutionContext::PendingException::PendingException):
+        * inspector/InspectorInstrumentation.cpp:
+        (WebCore::InspectorInstrumentation::consoleCountImpl):
+        (WebCore::InspectorInstrumentation::stopConsoleTimingImpl):
+        (WebCore::InspectorInstrumentation::consoleTimeStampImpl):
+        * inspector/InspectorInstrumentation.h:
+        (WebCore::InspectorInstrumentation::consoleCount):
+        (WebCore::InspectorInstrumentation::stopConsoleTiming):
+        (WebCore::InspectorInstrumentation::consoleTimeStamp):
+        * inspector/InspectorNetworkAgent.cpp:
+        (WebCore::InspectorNetworkAgent::buildInitiatorObject):
+        * inspector/TimelineRecordFactory.cpp:
+        (WebCore::TimelineRecordFactory::createGenericRecord):
+        * inspector/WebInjectedScriptManager.cpp:
+        (WebCore::WebInjectedScriptManager::WebInjectedScriptManager):
+        * inspector/WebInjectedScriptManager.h:
+        * page/DOMWindow.cpp:
+        (WebCore::DOMWindow::postMessageTimerFired):
+        We dispatch appropriate addMessage function according to whether
+        `timer.stackTrace()` is nullptr.
+
+        * page/PageConsoleClient.cpp:
+        (WebCore::PageConsoleClient::addMessage):
+        (WebCore::PageConsoleClient::messageWithTypeAndLevel):
+        (WebCore::PageConsoleClient::count):
+        (WebCore::PageConsoleClient::timeEnd):
+        (WebCore::PageConsoleClient::timeStamp):
+        * page/PageConsoleClient.h:
+        * workers/WorkerConsoleClient.cpp:
+        (WebCore::WorkerConsoleClient::messageWithTypeAndLevel):
+        (WebCore::WorkerConsoleClient::count):
+        (WebCore::WorkerConsoleClient::timeEnd):
+        (WebCore::WorkerConsoleClient::timeStamp):
+        * workers/WorkerConsoleClient.h:
+        * workers/WorkerGlobalScope.cpp:
+        (WebCore::WorkerGlobalScope::addMessage):
+
+2017-02-16  Chris Fleizach  <cfleizach@apple.com>
+
+        AX: Make form validation accessible on iOS
+        https://bugs.webkit.org/show_bug.cgi?id=168400
+
+        Reviewed by Chris Dumez.
+
+        Hide the popover content of form validation from accessibility (since its not interactable)
+        and instead announce the message.
+
+        * platform/ios/ValidationBubbleIOS.mm:
+        (WebCore::ValidationBubble::show):
+
+2017-02-16  Simon Fraser  <simon.fraser@apple.com>
+
+        Clean up use of some CALayer-related SPI
+        https://bugs.webkit.org/show_bug.cgi?id=168401
+
+        Reviewed by Tim Horton.
+
+        Use -setDrawsAsynchronously: rather than the old -setAcceleratesDrawing: SPI.
+
+        Remove CATiledLayer-related stuff from QuartzCoreSPI.h, since we don't use it any more.
+
+        * platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm:
+        (PlatformCALayerCocoa::acceleratesDrawing):
+        (PlatformCALayerCocoa::setAcceleratesDrawing):
+        * platform/graphics/ca/cocoa/WebTiledBackingLayer.mm:
+        (-[WebTiledBackingLayer setDrawsAsynchronously:]): This override passes the state
+        onto the TileController.
+        (-[WebTiledBackingLayer setAcceleratesDrawing:]): Deleted.
+        * platform/ios/LegacyTileGridTile.mm:
+        (WebCore::LegacyTileGridTile::LegacyTileGridTile):
+        * platform/spi/cocoa/QuartzCoreSPI.h:
+
+2017-02-16  Yusuke Suzuki  <utatane.tea@gmail.com>
+
+        Web Inspector: allow import() inside the inspector
+        https://bugs.webkit.org/show_bug.cgi?id=167457
+
+        Reviewed by Ryosuke Niwa.
+
+        When evaluating `import("...")`, we need the caller's context to resolve
+        the module specifier correctly. For example, if `import("./cocoa.js")` is
+        evaluated in the script "drinks/hot.js", this module name is resolved to
+        "drinks/cocoa.js". If the same import operator is evaluated in the script
+        "menu/all.js", the module specifier becomes "menu/cocoa.js".
+
+        Previously we reject the import operator if the caller does not have such
+        a context. These context is SourceOrigin and its ScriptFetcher. While they
+        are offered in the script tag and other code evaluations, the inspector
+        console does not offer that. These class are offered in the WebCore side
+        and we should not touch these classes in the JSC's inspector code.
+
+        Now we relax the above restriction. If the above caller information is not
+        offered, we fallback to the default one. In the web page, we use the page's
+        URL as the caller's source origin. This allows us to evaluate the import
+        operator in the inspector console.
+
+        And as of r167698, the console recognizes `await import("...")` form. We use
+        this to test this `import()` in the console functionality.
+
+        Test: inspector/controller/runtime-controller-import.html
+
+        * bindings/js/ScriptModuleLoader.cpp:
+        (WebCore::ScriptModuleLoader::importModule):
+
+2017-02-16  Miguel Gomez  <magomez@igalia.com>
+
+        [GTK] scroll with transparent background not repainted after scrollY >= 32768
+        https://bugs.webkit.org/show_bug.cgi?id=154283
+
+        Reviewed by Carlos Garcia Campos.
+
+        Due to a limitation of the pixman backend, which uses 16 bits to hold signed integers, cairo is
+        not able to draw anything when using transformation matrices with values bigger than 32768. When
+        drawing patterns into large pages, the matrices values can overflow those 16 bits, so cairo doesn't
+        draw anything in, which causes the reported transparent backgrounds.
+
+        The patch modifies the transformation matrices both from the current context and the pattern we
+        are painting, to avoid them to hold values that cannot stored in 16 bits.
+
+        There's still the possibility that this happens, but it would require using a pattern with a size
+        bigger than 32768.
+
+        Based on a previous patch by Gwang Yoon Hwang  <yoon@igalia.com>.
+
+        Test: fast/backgrounds/background-repeat-long-scroll.html
+
+        * platform/graphics/cairo/CairoUtilities.cpp:
+        (WebCore::drawPatternToCairoContext):
+
+2017-02-16  Carlos Garcia Campos  <cgarcia@igalia.com>
+
+        [GTK] Images are never read from the clipboard
+        https://bugs.webkit.org/show_bug.cgi?id=168419
+
+        Reviewed by Sergio Villar Senin.
+
+        We write images in the clipboard, but we don't read them.
+
+        Fixes: editing/pasteboard/paste-image-using-image-data.html
+
+        * editing/Editor.cpp:
+        (WebCore::Editor::createFragmentForImageAndURL): Moved from EditorMac.mm since it's cross-platform code.
+        * editing/Editor.h:
+        * editing/gtk/EditorGtk.cpp:
+        (WebCore::createFragmentFromPasteboardData): Check if there's an image in the selection, and use
+        Editor::createFragmentForImageAndURL in that case.
+        * editing/mac/EditorMac.mm:
+        (WebCore::Editor::createFragmentForImageAndURL): Deleted.
+        * platform/gtk/PasteboardHelper.cpp:
+        (WebCore::PasteboardHelper::getClipboardContents): Check also if there's an image in the clipboard.
+
+2017-02-15  Jer Noble  <jer.noble@apple.com>
+
+        REGRESSION (r212311): NULL-dereference in HTMLMediaElement::prepareToPlay()
+        https://bugs.webkit.org/show_bug.cgi?id=168404
+        <rdar://problem/30547188>
+
+        Reviewed by Brian Weinstein.
+
+        Prior to r212311, m_player was always guaranteed to be initialized when calling
+        prepareToPlay(). r212311 began calling prepareToPlay() on a subsequent run-loop iteration
+        after creating m_player. So now check whether m_player is NULL before calling methods on it.
+
+        * html/HTMLMediaElement.cpp:
+        (WebCore::HTMLMediaElement::prepareToPlay):
+
+2017-02-15  Eric Carlson  <eric.carlson@apple.com>
+
+        [MediaStream] delete CaptureDeviceInfo struct
+        https://bugs.webkit.org/show_bug.cgi?id=168395
+
+        The CaptureDeviceInfo struct and CaptureDevice class were almost identical, so
+        add an "enabled" field to the later, delete the former, and switch all uses of
+        CaptureDeviceInfo to CaptureDevice.
+
+        Do some minor drive-by cleanup of AVCaptureDeviceManager::refreshCaptureDevices
+        and CaptureDeviceManager::captureDeviceFromDeviceID.
+        
+        Reviewed by Sam Weinig.
+
+        No new tests, no behavior change.
+
+        * Modules/mediastream/MediaDevicesRequest.cpp:
+        (WebCore::MediaDevicesRequest::start): SourceKind -> DeviceType
+        * platform/mediastream/CaptureDevice.h:
+        (WebCore::CaptureDevice::CaptureDevice):
+        (WebCore::CaptureDevice::type): Renamed from kind.
+        (WebCore::CaptureDevice::setType):
+        (WebCore::CaptureDevice::enabled): Added.
+        (WebCore::CaptureDevice::setEnabled):
+        (WebCore::CaptureDevice::kind): Deleted.
+        (WebCore::CaptureDevice::setKind): Deleted.
+
+        * platform/mediastream/CaptureDeviceManager.cpp:
+        (CaptureDeviceManager::getSourcesInfo):
+        (CaptureDeviceManager::captureDeviceFromDeviceID): Don't call sourceWithUID.
+        (CaptureDeviceManager::bestSourcesForTypeAndConstraints):
+        (CaptureDeviceManager::sourceWithUID):
+        * platform/mediastream/CaptureDeviceManager.h:
+        (WebCore::CaptureDeviceManager::refreshCaptureDevices):
+        (WebCore::CaptureDeviceManager::refreshCaptureDeviceList): Deleted.
+
+        * platform/mediastream/mac/AVCaptureDeviceManager.h:
+        * platform/mediastream/mac/AVCaptureDeviceManager.mm:
+        (WebCore::AVCaptureDeviceManager::captureDevices):
+        (WebCore::deviceIsAvailable):
+        (WebCore::AVCaptureDeviceManager::refreshCaptureDevices):
+        (WebCore::AVCaptureDeviceManager::createMediaSourceForCaptureDeviceWithConstraints):
+        (WebCore::AVCaptureDeviceManager::deviceConnected):
+        (WebCore::AVCaptureDeviceManager::deviceDisconnected):
+        (WebCore::AVCaptureDeviceManager::captureDeviceList): Deleted.
+        (WebCore::shouldConsiderDeviceInDeviceList): Deleted.
+        (WebCore::AVCaptureDeviceManager::refreshCaptureDeviceList): Deleted.
+        * platform/mock/MockRealtimeMediaSource.cpp:
+        (WebCore::MockRealtimeMediaSource::audioDeviceInfo):
+        (WebCore::MockRealtimeMediaSource::videoDeviceInfo):
+
+2017-02-15  Sam Weinig  <sam@webkit.org>
+
+        [WebIDL] Remove custom conversion from FontFace code by using a Variant
+        https://bugs.webkit.org/show_bug.cgi?id=168384
+
+        Reviewed by Alex Christensen.
+
+        Match the font face spec and use a union rather than any in the FontFace constructor.
+
+        Test: Added additional cases to fast/text/font-face-javascript.html.
+
+        * css/FontFace.cpp:
+        (WebCore::FontFace::create):
+        * css/FontFace.h:
+        * css/FontFace.idl:
+
+2017-02-15  Jer Noble  <jer.noble@apple.com>
+
+        Disabled Media Sources should render black/silence
+        https://bugs.webkit.org/show_bug.cgi?id=168281
+
+        Reviewed by Eric Carlson.
+
+        Test: webrtc/video-disabled-black.html
+
+        Pass the enabled flag setting down from the MediaStreamTrackPrivate to its underlying
+        source, including RealtimeMediaSource and RealtimeOutgoingAudio/VideoSource. When either
+        enabled is cleared or muted is set, generate empty (black or silent) media, as opposed to
+        pausing media or (worse) continuing to send generated media.
+
+        * platform/mediastream/MediaStreamTrackPrivate.cpp:
+        (WebCore::MediaStreamTrackPrivate::setEnabled):
+        (WebCore::MediaStreamTrackPrivate::sourceEnabledChanged):
+        * platform/mediastream/MediaStreamTrackPrivate.h:
+        * platform/mediastream/RealtimeMediaSource.cpp:
+        (WebCore::RealtimeMediaSource::setEnabled):
+        * platform/mediastream/RealtimeMediaSource.h:
+        (WebCore::RealtimeMediaSource::enabled):
+        * platform/mediastream/mac/AudioTrackPrivateMediaStreamCocoa.h:
+        * platform/mediastream/mac/MockRealtimeAudioSourceMac.mm:
+        (WebCore::MockRealtimeAudioSourceMac::render):
+        * platform/mediastream/mac/RealtimeOutgoingAudioSource.cpp:
+        (WebCore::RealtimeOutgoingAudioSource::sourceMutedChanged):
+        (WebCore::RealtimeOutgoingAudioSource::sourceEnabledChanged):
+        (WebCore::RealtimeOutgoingAudioSource::pullAudioData):
+        * platform/mediastream/mac/RealtimeOutgoingAudioSource.h:
+        * platform/mediastream/mac/RealtimeOutgoingVideoSource.cpp:
+        (WebCore::RealtimeOutgoingVideoSource::sourceMutedChanged):
+        (WebCore::RealtimeOutgoingVideoSource::sourceEnabledChanged):
+        (WebCore::RealtimeOutgoingVideoSource::videoSampleAvailable):
+        * platform/mediastream/mac/RealtimeOutgoingVideoSource.h:
+        * platform/mock/MockRealtimeVideoSource.cpp:
+        (WebCore::MockRealtimeVideoSource::generateFrame):
+
+2017-02-15  Wenson Hsieh  <wenson_hsieh@apple.com>
+
+        Editing history scripts should not add the contenteditable attribute or override key events
+        https://bugs.webkit.org/show_bug.cgi?id=168389
+        <rdar://problem/30529945>
+
+        Reviewed by Dan Bernstein.
+
+        Clients that hook into editing history tracking should handle setting the contenteditable attribute on the body
+        rather than have the script add it to the body. Additionally, this script should NOT be overriding any keydown
+        events. These were initially added for compatibility with a test harness early on, and should have been removed
+        earlier.
+
+        * Scripts/DumpEditingHistory.js:
+
+2017-02-15  Jer Noble  <jer.noble@apple.com>
+
+        Pass "RequiresCustomURLLoading" in AVURLAsset options dictionary
+        https://bugs.webkit.org/show_bug.cgi?id=168381
+
+        Reviewed by Eric Carlson.
+
+        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
+        (WebCore::MediaPlayerPrivateAVFoundationObjC::createAVAssetForURL):
+
+2017-02-15  Anders Carlsson  <andersca@apple.com>
+
+        Fix build.
+
+        * page/DragController.cpp:
+        (WebCore::DragController::doSystemDrag):
+
+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.
+
+        Change DragClient::startDrag to take a DragImage instead of a DragImageRef, and to pass along the source action
+        instead of whether it's a link or not.
+
+        * loader/EmptyClients.cpp:
+        * page/DragClient.h:
+        * page/DragController.cpp:
+        (WebCore::DragController::startDrag):
+        (WebCore::DragController::doImageDrag):
+        (WebCore::DragController::doSystemDrag):
+        * page/DragController.h:
+
+2017-02-15  Chris Dumez  <cdumez@apple.com>
+
+        Expose Symbol.toPrimitive / valueOf on Location instances
+        https://bugs.webkit.org/show_bug.cgi?id=168295
+
+        Reviewed by Geoffrey Garen, Keith Miller and Mark Lam.
+
+        Expose Symbol.toPrimitive / valueOf on Location instances as per:
+        - https://html.spec.whatwg.org/#the-location-interface
+
+        Firefox and Chrome already comply with the specification.
+
+        Tests: fast/dom/location-valueOf-after-object-prototype-update.html
+               fast/dom/location-valueOf-after-object-prototype-update2.html
+               imported/w3c/web-platform-tests/html/browsers/history/the-location-interface/location-symbol-toprimitive.html
+               imported/w3c/web-platform-tests/html/browsers/history/the-location-interface/location-valueof.html
+
+        * bindings/scripts/CodeGeneratorJS.pm:
+        (GenerateImplementation):
+
 2017-02-15  Aakash Jain  <aakash_jain@apple.com>
 
         Remove WebIOSEvent interface