Cursor is not visible after exiting full screen video
[WebKit-https.git] / Source / WebCore / ChangeLog
index b01d6fc..a650b4b 100644 (file)
+2017-12-04  Antoine Quint  <graouts@apple.com>
+
+        Cursor is not visible after exiting full screen video
+        https://bugs.webkit.org/show_bug.cgi?id=180247
+        <rdar://problem/33885922>
+
+        Reviewed by Dean Jackson.
+
+        There is a dedicated NSCursor method to temporarily hide the mouse cursor while the mouse is idle,
+        so we use this platform functionality, already exposed through the page chrome, instead which
+        implements the expected behavior. Now, the mouse cursor is hidden while the mouse is stationary
+        when a <video> is fullscreen, as before, but as soon as the user exits fullscreen, the mouse cursor
+        reappears.
+
+        No test provided as I don't believe this platform behavior can be tested, there is no API to query
+        whether the cursor is visible.
+
+        * page/EventHandler.cpp:
+        (WebCore::EventHandler::cancelAutoHideCursorTimer):
+        (WebCore::EventHandler::autoHideCursorTimerFired):
+
+2017-12-04  Chris Dumez  <cdumez@apple.com>
+
+        ServiceWorkerGlobalScope::skipWaiting(Ref<DeferredPromise>&&) is unsafe
+        https://bugs.webkit.org/show_bug.cgi?id=180372
+
+        Reviewed by Youenn Fablet.
+
+        Ref the WorkerThread and capture it in the lambda. Keep the pending promises in
+        a HashMap on the ServiceWorkerGlobalScope so that they stay on the worker thread.
+
+        * workers/service/ServiceWorkerGlobalScope.cpp:
+        (WebCore::ServiceWorkerGlobalScope::skipWaiting):
+        * workers/service/ServiceWorkerGlobalScope.h:
+
+2017-12-04  Brady Eidson  <beidson@apple.com>
+
+        Get a directory path to SWServers for storing ServiceWorker registrations.
+        https://bugs.webkit.org/show_bug.cgi?id=180362
+
+        Reviewed by Chris Dumez.
+
+        No new tests (No observable behavior change yet).
+
+        * workers/service/server/SWServer.cpp:
+        (WebCore::SWServer::SWServer):
+        * workers/service/server/SWServer.h:
+
+2017-12-04  Devin Rousso  <webkit@devinrousso.com>
+
+        Web Inspector: provide method for recording CanvasRenderingContext2D from JavaScript
+        https://bugs.webkit.org/show_bug.cgi?id=175166
+        <rdar://problem/34040740>
+
+        Reviewed by Joseph Pecoraro.
+
+        No new tests, updated existing tests.
+
+        * inspector/InspectorCanvas.h:
+        * inspector/InspectorCanvas.cpp:
+        (WebCore::InspectorCanvas::resetRecordingData):
+
+        * inspector/InspectorCanvasAgent.h:
+        * inspector/InspectorCanvasAgent.cpp:
+        (WebCore::InspectorCanvasAgent::didFinishRecordingCanvasFrame):
+        (WebCore::InspectorCanvasAgent::consoleStartRecordingCanvas):
+
+        * inspector/InspectorInstrumentation.h:
+        * inspector/InspectorInstrumentation.cpp:
+        (WebCore::InspectorInstrumentation::consoleStartRecordingCanvas):
+        (WebCore::InspectorInstrumentation::consoleStartRecordingCanvasImpl):
+
+        * page/PageConsoleClient.h:
+        * page/PageConsoleClient.cpp:
+        (WebCore::PageConsoleClient::record):
+        (WebCore::PageConsoleClient::recordEnd):
+
+        * workers/WorkerConsoleClient.h:
+        * workers/WorkerConsoleClient.cpp:
+        (WebCore::WorkerConsoleClient::record):
+        (WebCore::WorkerConsoleClient::recordEnd):
+
+2017-12-04  Youenn Fablet  <youenn@apple.com>
+
+        Call "Terminate Service Worker" on all workers when all their clients are gone
+        https://bugs.webkit.org/show_bug.cgi?id=179552
+
+        Reviewed by Chris Dumez.
+
+        Tested manually.
+
+        When SWServer detects that there is no longer any client for a given client origin,
+        it iterates through the running workers to terminate them if they have the given client origin.
+        A timer of 60 seconds is used in case a user closes a tab or a window, and reopens one with the same origin shortly after.
+
+        * workers/service/server/SWServer.cpp:
+        (WebCore::SWServer::findClientByIdentifier):
+        (WebCore::SWServer::matchAll):
+        (WebCore::SWServer::registerServiceWorkerClient):
+        (WebCore::SWServer::unregisterServiceWorkerClient):
+        * workers/service/server/SWServer.h:
+
+2017-12-04  Antti Koivisto  <antti@apple.com>
+
+        Enable selector filtering for ::before and ::after pseudo element resolution
+        https://bugs.webkit.org/show_bug.cgi?id=180364
+
+        Reviewed by Ryosuke Niwa.
+
+        Since these pseudo elements are now resolved by TreeResolver we can use selector filter for them.
+
+        This is 10%+ progression in StyleBench pseudo element subtest.
+
+        * css/StyleResolver.cpp:
+        (WebCore::StyleResolver::pseudoStyleForElement):
+        * css/StyleResolver.h:
+        * style/StyleTreeResolver.cpp:
+        (WebCore::Style::TreeResolver::resolvePseudoStyle):
+
+2017-12-04  Youenn Fablet  <youenn@apple.com>
+
+        Add support https://w3c.github.io/ServiceWorker/#on-client-unload-algorithm
+        https://bugs.webkit.org/show_bug.cgi?id=180359
+
+        Reviewed by Chris Dumez.
+
+        This algorithm is needed for implementation of claim.
+        As per specification, it is run for every client unload, hence why this is put in removeClientUsingRegistration.
+
+        * workers/service/server/SWServerRegistration.cpp:
+        (WebCore::SWServerRegistration::removeClientUsingRegistration):
+        (WebCore::SWServerRegistration::handleClientUnload):
+        * workers/service/server/SWServerRegistration.h:
+
+2017-12-04  Antti Koivisto  <antti@apple.com>
+
+        Remove duplicates from selector filter hashes
+        https://bugs.webkit.org/show_bug.cgi?id=180354
+
+        Reviewed by Simon Fraser.
+
+        We have only four slots for hashes in RuleSet and adding more regresses performance. To use the limited slots
+        better we should eliminate duplicates.
+
+        This patch also switches to using std::array instead of a C array for the hashes.
+
+        The patch reduces the number of selectors passing through the selector filter in StyleBench by ~0.4%.
+
+        * css/ElementRuleCollector.cpp:
+        (WebCore::ElementRuleCollector::collectMatchingRulesForList):
+        * css/RuleSet.cpp:
+        (WebCore::RuleData::RuleData):
+        * css/RuleSet.h:
+        (WebCore::RuleData::descendantSelectorIdentifierHashes const):
+        * css/SelectorFilter.cpp:
+        (WebCore::collectDescendantSelectorIdentifierHashes):
+        (WebCore::SelectorFilter::collectIdentifierHashes):
+        * css/SelectorFilter.h:
+        (WebCore::SelectorFilter::fastRejectSelector const):
+
+2017-12-04  Youenn Fablet  <youenn@apple.com>
+
+        WorkerCacheStorageConnection should handle the case of terminated workers
+        https://bugs.webkit.org/show_bug.cgi?id=180304
+
+        Reviewed by Chris Dumez.
+
+        No web page observable change of behavior.
+
+        Reworked WorkerCacheStorageConnection hopping.
+        Instead of refing/unrefing itself, it refs the worker thread and the main thread connection.
+        This worker thread is then used on the way back from the main thread.
+
+        * Modules/cache/WorkerCacheStorageConnection.cpp:
+        (WebCore::WorkerCacheStorageConnection::create):
+        (WebCore::WorkerCacheStorageConnection::WorkerCacheStorageConnection):
+        (WebCore::WorkerCacheStorageConnection::doOpen):
+        (WebCore::WorkerCacheStorageConnection::doRemove):
+        (WebCore::WorkerCacheStorageConnection::doRetrieveCaches):
+        (WebCore::WorkerCacheStorageConnection::reference):
+        (WebCore::WorkerCacheStorageConnection::dereference):
+        (WebCore::WorkerCacheStorageConnection::doRetrieveRecords):
+        (WebCore::WorkerCacheStorageConnection::doBatchDeleteOperation):
+        (WebCore::WorkerCacheStorageConnection::doBatchPutOperation):
+        * Modules/cache/WorkerCacheStorageConnection.h:
+        * workers/WorkerGlobalScope.cpp:
+        (WebCore::WorkerGlobalScope::cacheStorageConnection):
+        * workers/WorkerGlobalScope.h:
+
+2017-12-04  Frederic Wang  <fwang@igalia.com>
+
+        Make ScrollingTreeNode::enclosingFrameNode return the node itself for frame nodes
+        https://bugs.webkit.org/show_bug.cgi?id=180353
+
+        Reviewed by Antonio Gomes.
+
+        This function was introduced in bug 175135 to solve a rendering bug with fixed positioned
+        nodes in overflow nodes. For a frame node, the reference frame to use for fixed nodes is
+        actually the frame node itself or otherwise we will get the same rendering bug. This patch
+        makes enclosingFrameNode return the node itself when it is a frame node and renames it to
+        clarify this behavior. Currently, enclosingFrameNode is not used for frame nodes so the
+        behavior is unchanged.
+
+        No new tests, behavior is unchanged.
+
+        * page/scrolling/ScrollingTreeNode.cpp:
+        (WebCore::ScrollingTreeNode::enclosingFrameNodeIncludingSelf): Start the search from a frame
+        scrolling node from the node itself. Renamed to make explicit that this function may include
+        the node itself.
+        * page/scrolling/ScrollingTreeNode.h: Renamed.
+
+2017-12-04  Michael Catanzaro  <mcatanzaro@igalia.com>
+
+        [WPE][GTK] Implement PAL::SleepDisabler
+        https://bugs.webkit.org/show_bug.cgi?id=178485
+
+        Reviewed by Carlos Garcia Campos.
+
+        Add a comment to warn about some odd use of SleepDisabler in HTMLMediaElement.
+
+        * html/HTMLMediaElement.cpp:
+        (WebCore::HTMLMediaElement::shouldDisableSleep const):
+
+2017-12-04  Frederic Wang  <fwang@igalia.com>
+
+        Bug 161300 - Move RenderMathMLRoot:RootType and RenderMathMLScripts:ScriptsType to element classes
+        https://bugs.webkit.org/show_bug.cgi?id=161300
+
+        Reviewed by Darin Adler.
+
+        RenderMathMLRoot::m_kind and RenderMathMLScripts::m_scriptType are initialized in the
+        constructors of the renderer classes from the tag name of the corresponding elements.
+        This patch moves them into the corresponding element classes and makes them const members
+        parsed in the constructors. It also introduces a MathMLRootElement class deriving from
+        MathMLRowElement to store the new member. Finally, the types are redefined as enum classes.
+
+        No new tests, behavior unchanged and already covered by existing tests.
+
+        * Sources.txt: Add MathMLRootElement files.
+        * WebCore.xcodeproj/project.pbxproj: Ditto.
+        * mathml/MathMLAllInOne.cpp: Ditto.
+        * mathml/MathMLRootElement.cpp:
+        (WebCore::element): Override this function to downcast to MathMLRootElement.
+        (WebCore::rootTypeOf): Helper function to parse the root type, moved from RenderMathMLRoot.
+        (WebCore::MathMLRootElement::MathMLRootElement): Initialize the root type.
+        (WebCore::MathMLRootElement::create):
+        (WebCore::MathMLRootElement::createElementRenderer): Moved from MathMLRowElement.
+        * mathml/MathMLRootElement.h: New class deriving from MathMLRowElement, with a RootType
+        member exposed to the renderer class.
+        * mathml/MathMLRowElement.cpp: Remove header for RenderMathMLRoot.h.
+        (WebCore::MathMLRowElement::createElementRenderer): Moved to MathMLRootElement.
+        * mathml/MathMLScriptsElement.cpp: Introduce a script type.
+        (WebCore::scriptTypeOf): Helper function to parse the script type, moved from
+        RenerMathMLScripts.
+        (WebCore::MathMLScriptsElement::MathMLScriptsElement): Initialize the script type.
+        * mathml/MathMLScriptsElement.h: Add new script type member.
+        (WebCore::MathMLScriptsElement::scriptType const): Expose the script type to the renderer
+        class.
+        * mathml/mathtags.in: Map <msqrt> and <mroot> to MathMLRootElement.
+        * rendering/mathml/RenderMathMLRoot.cpp:
+        (WebCore::RenderMathMLRoot::RenderMathMLRoot): Use MathMLRootElement and remove parsing of
+        the root type.
+        (WebCore::RenderMathMLRoot::rootType const): Helper function to access the root type from
+        the element class.
+        (WebCore::RenderMathMLRoot::isValid const): Use rootType() and add prefix for enum class
+        values.
+        (WebCore::RenderMathMLRoot::getBase const): Ditto.
+        (WebCore::RenderMathMLRoot::getIndex const): Ditto.
+        (WebCore::RenderMathMLRoot::horizontalParameters): Ditto.
+        (WebCore::RenderMathMLRoot::verticalParameters): Ditto.
+        (WebCore::RenderMathMLRoot::computePreferredLogicalWidths): Ditto.
+        (WebCore::RenderMathMLRoot::layoutBlock): Ditto.
+        (WebCore::RenderMathMLRoot::paint): Ditto.
+        * rendering/mathml/RenderMathMLRoot.h: Define root type as an enum class, replace
+        MathMLRowElement with MathMLRootElement, declare and use new rootType() function and remove
+        the m_kind member.
+        * rendering/mathml/RenderMathMLScripts.cpp:
+        (WebCore::RenderMathMLScripts::RenderMathMLScripts): Remove parsing of script type.
+        (WebCore::RenderMathMLScripts::scriptType const): Helper function to access the script type
+        from the element class.
+        (WebCore::RenderMathMLScripts::validateAndGetReferenceChildren): Use scriptType() and add
+        prefix for enum class values.
+        (WebCore::RenderMathMLScripts::computePreferredLogicalWidths): Ditto.
+        (WebCore::RenderMathMLScripts::verticalMetrics): Ditto.
+        (WebCore::RenderMathMLScripts::layoutBlock): Ditto.
+        * rendering/mathml/RenderMathMLScripts.h: Define root type as an enum class, declare the
+        scriptType() function and remove the m_scriptType member.
+        * rendering/mathml/RenderMathMLUnderOver.cpp:
+        (WebCore::RenderMathMLUnderOver::isValid const): Use scriptType() and add prefix for enum
+        class values.
+        (WebCore::RenderMathMLUnderOver::under const): Ditto.
+        (WebCore::RenderMathMLUnderOver::over const): Ditto.
+        (WebCore::RenderMathMLUnderOver::computePreferredLogicalWidths): Ditto.
+        (WebCore::RenderMathMLUnderOver::hasAccent const): Ditto.
+        (WebCore::RenderMathMLUnderOver::layoutBlock): Ditto.
+
+2017-12-04  Carlos Garcia Campos  <cgarcia@igalia.com>
+
+        [GStreamer] More leaks in TextCombinerGStreamer
+        https://bugs.webkit.org/show_bug.cgi?id=180331
+
+        Reviewed by Michael Catanzaro.
+
+        I've noticed more leaks reading the code, but I couldn't check them with valgrind, because I don't know how to
+        trigger that code path. This patch cleans up the file using smart pointer everywhere.
+
+        * platform/graphics/gstreamer/TextCombinerGStreamer.cpp:
+        (webkit_text_combiner_pad_init):
+        (webkitTextCombinerPadEvent):
+        (webkitTextCombinerReleasePad):
+
+2017-12-04  Jer Noble  <jer.noble@apple.com>
+
+        Include 'video/*' in image request Accept header if browser supports video media in image contexts.
+        https://bugs.webkit.org/show_bug.cgi?id=179178
+
+        Reviewed by Alex Christensen.
+
+        Test: http/tests/images/image-supports-video.html
+
+        Ensure that 'video/*' is included in the Accept header by asking the ImageDecoder whether "Video"
+        media is supported. The ImageDecoder will ask all it's constituent decoders, which aside from
+        ImageDecoderAVFObjC will say only support the "Image" media type.
+
+        Drive-by fix: Make sure the MIMETypeRegistry includes all the types supported by AVFoundation when
+        ImageDecoderAVFObjC is enabled. Also, now that Image reports it can support video mime types, check
+        whether MediaDocument can support a given mime type before asking ImageDocument.
+
+        * html/HTMLImageElement.cpp:
+        (WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
+        * loader/LinkLoader.cpp:
+        (WebCore::LinkLoader::isSupportedType):
+        * loader/cache/CachedResourceRequest.cpp:
+        (WebCore::acceptHeaderValueFromType):
+        * platform/MIMETypeRegistry.cpp:
+        (WebCore::MIMETypeRegistry::isSupportedImageVideoOrSVGMIMEType):
+        (WebCore::MIMETypeRegistry::isSupportedImageOrSVGMIMEType): Deleted.
+        * platform/MIMETypeRegistry.h:
+        * platform/graphics/ImageDecoder.cpp:
+        (WebCore::ImageDecoder::supportsMediaType):
+        * platform/graphics/ImageDecoder.h:
+        * platform/graphics/avfoundation/objc/ImageDecoderAVFObjC.h:
+        (WebCore::ImageDecoderAVFObjC::supportsMediaType):
+        * platform/graphics/avfoundation/objc/ImageDecoderAVFObjC.mm:
+        (WebCore::ImageDecoderAVFObjC::supportsContentType):
+        * platform/graphics/cg/ImageDecoderCG.h:
+        * platform/graphics/win/ImageDecoderDirect2D.h:
+        * platform/image-decoders/ScalableImageDecoder.h:
+        (WebCore::ScalableImageDecoder::supportsMediaType):
+        * html/parser/HTMLPreloadScanner.cpp:
+        (WebCore::TokenPreloadScanner::StartTagScanner::processAttribute):
+
+2017-12-03  Yusuke Suzuki  <utatane.tea@gmail.com>
+
+        WTF shouldn't have both Thread and ThreadIdentifier
+        https://bugs.webkit.org/show_bug.cgi?id=180308
+
+        Reviewed by Darin Adler.
+
+        No behavior change.
+
+        * Modules/indexeddb/IDBActiveDOMObject.h:
+        (WebCore::IDBActiveDOMObject::originThread const):
+        (WebCore::IDBActiveDOMObject::performCallbackOnOriginThread):
+        (WebCore::IDBActiveDOMObject::callFunctionOnOriginThread):
+        (WebCore::IDBActiveDOMObject::originThreadID const): Deleted.
+        * Modules/indexeddb/IDBCursor.cpp:
+        (WebCore::IDBCursor::IDBCursor):
+        (WebCore::IDBCursor::~IDBCursor):
+        (WebCore::IDBCursor::sourcesDeleted const):
+        (WebCore::IDBCursor::transaction const):
+        (WebCore::IDBCursor::update):
+        (WebCore::IDBCursor::advance):
+        (WebCore::IDBCursor::continueFunction):
+        (WebCore::IDBCursor::uncheckedIterateCursor):
+        (WebCore::IDBCursor::deleteFunction):
+        (WebCore::IDBCursor::setGetResult):
+        * Modules/indexeddb/IDBDatabase.cpp:
+        (WebCore::IDBDatabase::~IDBDatabase):
+        (WebCore::IDBDatabase::hasPendingActivity const):
+        (WebCore::IDBDatabase::name const):
+        (WebCore::IDBDatabase::version const):
+        (WebCore::IDBDatabase::objectStoreNames const):
+        (WebCore::IDBDatabase::renameObjectStore):
+        (WebCore::IDBDatabase::renameIndex):
+        (WebCore::IDBDatabase::createObjectStore):
+        (WebCore::IDBDatabase::transaction):
+        (WebCore::IDBDatabase::deleteObjectStore):
+        (WebCore::IDBDatabase::close):
+        (WebCore::IDBDatabase::connectionToServerLost):
+        (WebCore::IDBDatabase::maybeCloseInServer):
+        (WebCore::IDBDatabase::activeDOMObjectName const):
+        (WebCore::IDBDatabase::canSuspendForDocumentSuspension const):
+        (WebCore::IDBDatabase::stop):
+        (WebCore::IDBDatabase::startVersionChangeTransaction):
+        (WebCore::IDBDatabase::didStartTransaction):
+        (WebCore::IDBDatabase::willCommitTransaction):
+        (WebCore::IDBDatabase::didCommitTransaction):
+        (WebCore::IDBDatabase::willAbortTransaction):
+        (WebCore::IDBDatabase::didAbortTransaction):
+        (WebCore::IDBDatabase::didCommitOrAbortTransaction):
+        (WebCore::IDBDatabase::fireVersionChangeEvent):
+        (WebCore::IDBDatabase::dispatchEvent):
+        (WebCore::IDBDatabase::didCreateIndexInfo):
+        (WebCore::IDBDatabase::didDeleteIndexInfo):
+        * Modules/indexeddb/IDBIndex.cpp:
+        (WebCore::IDBIndex::IDBIndex):
+        (WebCore::IDBIndex::~IDBIndex):
+        (WebCore::IDBIndex::name const):
+        (WebCore::IDBIndex::setName):
+        (WebCore::IDBIndex::objectStore):
+        (WebCore::IDBIndex::keyPath const):
+        (WebCore::IDBIndex::unique const):
+        (WebCore::IDBIndex::multiEntry const):
+        (WebCore::IDBIndex::rollbackInfoForVersionChangeAbort):
+        (WebCore::IDBIndex::openCursor):
+        (WebCore::IDBIndex::openKeyCursor):
+        (WebCore::IDBIndex::doCount):
+        (WebCore::IDBIndex::doGet):
+        (WebCore::IDBIndex::doGetKey):
+        (WebCore::IDBIndex::getAll):
+        (WebCore::IDBIndex::getAllKeys):
+        (WebCore::IDBIndex::markAsDeleted):
+        * Modules/indexeddb/IDBObjectStore.cpp:
+        (WebCore::IDBObjectStore::IDBObjectStore):
+        (WebCore::IDBObjectStore::~IDBObjectStore):
+        (WebCore::IDBObjectStore::name const):
+        (WebCore::IDBObjectStore::setName):
+        (WebCore::IDBObjectStore::keyPath const):
+        (WebCore::IDBObjectStore::indexNames const):
+        (WebCore::IDBObjectStore::transaction):
+        (WebCore::IDBObjectStore::autoIncrement const):
+        (WebCore::IDBObjectStore::openCursor):
+        (WebCore::IDBObjectStore::openKeyCursor):
+        (WebCore::IDBObjectStore::get):
+        (WebCore::IDBObjectStore::getKey):
+        (WebCore::IDBObjectStore::putOrAdd):
+        (WebCore::IDBObjectStore::doDelete):
+        (WebCore::IDBObjectStore::clear):
+        (WebCore::IDBObjectStore::createIndex):
+        (WebCore::IDBObjectStore::index):
+        (WebCore::IDBObjectStore::deleteIndex):
+        (WebCore::IDBObjectStore::doCount):
+        (WebCore::IDBObjectStore::getAll):
+        (WebCore::IDBObjectStore::getAllKeys):
+        (WebCore::IDBObjectStore::markAsDeleted):
+        (WebCore::IDBObjectStore::rollbackForVersionChangeAbort):
+        * Modules/indexeddb/IDBOpenDBRequest.cpp:
+        (WebCore::IDBOpenDBRequest::~IDBOpenDBRequest):
+        (WebCore::IDBOpenDBRequest::onError):
+        (WebCore::IDBOpenDBRequest::versionChangeTransactionDidFinish):
+        (WebCore::IDBOpenDBRequest::fireSuccessAfterVersionChangeCommit):
+        (WebCore::IDBOpenDBRequest::fireErrorAfterVersionChangeCompletion):
+        (WebCore::IDBOpenDBRequest::dispatchEvent):
+        (WebCore::IDBOpenDBRequest::onSuccess):
+        (WebCore::IDBOpenDBRequest::onUpgradeNeeded):
+        (WebCore::IDBOpenDBRequest::onDeleteDatabaseSuccess):
+        (WebCore::IDBOpenDBRequest::requestCompleted):
+        (WebCore::IDBOpenDBRequest::requestBlocked):
+        * Modules/indexeddb/IDBRequest.cpp:
+        (WebCore::IDBRequest::~IDBRequest):
+        (WebCore:: const):
+        (WebCore::IDBRequest::setSource):
+        (WebCore::IDBRequest::setVersionChangeTransaction):
+        (WebCore::IDBRequest::transaction const):
+        (WebCore::IDBRequest::sourceObjectStoreIdentifier const):
+        (WebCore::IDBRequest::sourceIndexIdentifier const):
+        (WebCore::IDBRequest::requestedObjectStoreRecordType const):
+        (WebCore::IDBRequest::requestedIndexRecordType const):
+        (WebCore::IDBRequest::eventTargetInterface const):
+        (WebCore::IDBRequest::activeDOMObjectName const):
+        (WebCore::IDBRequest::canSuspendForDocumentSuspension const):
+        (WebCore::IDBRequest::hasPendingActivity const):
+        (WebCore::IDBRequest::stop):
+        (WebCore::IDBRequest::enqueueEvent):
+        (WebCore::IDBRequest::dispatchEvent):
+        (WebCore::IDBRequest::uncaughtExceptionInEventHandler):
+        (WebCore::IDBRequest::setResult):
+        (WebCore::IDBRequest::setResultToStructuredClone):
+        (WebCore::IDBRequest::setResultToUndefined):
+        (WebCore::IDBRequest::resultCursor):
+        (WebCore::IDBRequest::willIterateCursor):
+        (WebCore::IDBRequest::didOpenOrIterateCursor):
+        (WebCore::IDBRequest::completeRequestAndDispatchEvent):
+        (WebCore::IDBRequest::onError):
+        (WebCore::IDBRequest::onSuccess):
+        * Modules/indexeddb/IDBTransaction.cpp:
+        (WebCore::IDBTransaction::IDBTransaction):
+        (WebCore::IDBTransaction::~IDBTransaction):
+        (WebCore::IDBTransaction::objectStoreNames const):
+        (WebCore::IDBTransaction::db):
+        (WebCore::IDBTransaction::error const):
+        (WebCore::IDBTransaction::objectStore):
+        (WebCore::IDBTransaction::abortDueToFailedRequest):
+        (WebCore::IDBTransaction::transitionedToFinishing):
+        (WebCore::IDBTransaction::abort):
+        (WebCore::IDBTransaction::internalAbort):
+        (WebCore::IDBTransaction::abortOnServerAndCancelRequests):
+        (WebCore::IDBTransaction::activeDOMObjectName const):
+        (WebCore::IDBTransaction::canSuspendForDocumentSuspension const):
+        (WebCore::IDBTransaction::hasPendingActivity const):
+        (WebCore::IDBTransaction::stop):
+        (WebCore::IDBTransaction::isActive const):
+        (WebCore::IDBTransaction::isFinishedOrFinishing const):
+        (WebCore::IDBTransaction::addRequest):
+        (WebCore::IDBTransaction::removeRequest):
+        (WebCore::IDBTransaction::scheduleOperation):
+        (WebCore::IDBTransaction::schedulePendingOperationTimer):
+        (WebCore::IDBTransaction::pendingOperationTimerFired):
+        (WebCore::IDBTransaction::operationCompletedOnServer):
+        (WebCore::IDBTransaction::scheduleCompletedOperationTimer):
+        (WebCore::IDBTransaction::completedOperationTimerFired):
+        (WebCore::IDBTransaction::commit):
+        (WebCore::IDBTransaction::commitOnServer):
+        (WebCore::IDBTransaction::finishAbortOrCommit):
+        (WebCore::IDBTransaction::didStart):
+        (WebCore::IDBTransaction::notifyDidAbort):
+        (WebCore::IDBTransaction::didAbort):
+        (WebCore::IDBTransaction::didCommit):
+        (WebCore::IDBTransaction::fireOnComplete):
+        (WebCore::IDBTransaction::fireOnAbort):
+        (WebCore::IDBTransaction::enqueueEvent):
+        (WebCore::IDBTransaction::dispatchEvent):
+        (WebCore::IDBTransaction::createObjectStore):
+        (WebCore::IDBTransaction::createObjectStoreOnServer):
+        (WebCore::IDBTransaction::didCreateObjectStoreOnServer):
+        (WebCore::IDBTransaction::renameObjectStore):
+        (WebCore::IDBTransaction::renameObjectStoreOnServer):
+        (WebCore::IDBTransaction::didRenameObjectStoreOnServer):
+        (WebCore::IDBTransaction::createIndex):
+        (WebCore::IDBTransaction::createIndexOnServer):
+        (WebCore::IDBTransaction::didCreateIndexOnServer):
+        (WebCore::IDBTransaction::renameIndex):
+        (WebCore::IDBTransaction::renameIndexOnServer):
+        (WebCore::IDBTransaction::didRenameIndexOnServer):
+        (WebCore::IDBTransaction::requestOpenCursor):
+        (WebCore::IDBTransaction::doRequestOpenCursor):
+        (WebCore::IDBTransaction::openCursorOnServer):
+        (WebCore::IDBTransaction::didOpenCursorOnServer):
+        (WebCore::IDBTransaction::iterateCursor):
+        (WebCore::IDBTransaction::iterateCursorOnServer):
+        (WebCore::IDBTransaction::didIterateCursorOnServer):
+        (WebCore::IDBTransaction::requestGetAllObjectStoreRecords):
+        (WebCore::IDBTransaction::requestGetAllIndexRecords):
+        (WebCore::IDBTransaction::getAllRecordsOnServer):
+        (WebCore::IDBTransaction::didGetAllRecordsOnServer):
+        (WebCore::IDBTransaction::requestGetRecord):
+        (WebCore::IDBTransaction::requestGetValue):
+        (WebCore::IDBTransaction::requestGetKey):
+        (WebCore::IDBTransaction::requestIndexRecord):
+        (WebCore::IDBTransaction::getRecordOnServer):
+        (WebCore::IDBTransaction::didGetRecordOnServer):
+        (WebCore::IDBTransaction::requestCount):
+        (WebCore::IDBTransaction::getCountOnServer):
+        (WebCore::IDBTransaction::didGetCountOnServer):
+        (WebCore::IDBTransaction::requestDeleteRecord):
+        (WebCore::IDBTransaction::deleteRecordOnServer):
+        (WebCore::IDBTransaction::didDeleteRecordOnServer):
+        (WebCore::IDBTransaction::requestClearObjectStore):
+        (WebCore::IDBTransaction::clearObjectStoreOnServer):
+        (WebCore::IDBTransaction::didClearObjectStoreOnServer):
+        (WebCore::IDBTransaction::requestPutOrAdd):
+        (WebCore::IDBTransaction::putOrAddOnServer):
+        (WebCore::IDBTransaction::didPutOrAddOnServer):
+        (WebCore::IDBTransaction::deleteObjectStore):
+        (WebCore::IDBTransaction::deleteObjectStoreOnServer):
+        (WebCore::IDBTransaction::didDeleteObjectStoreOnServer):
+        (WebCore::IDBTransaction::deleteIndex):
+        (WebCore::IDBTransaction::deleteIndexOnServer):
+        (WebCore::IDBTransaction::didDeleteIndexOnServer):
+        (WebCore::IDBTransaction::operationCompletedOnClient):
+        (WebCore::IDBTransaction::establishOnServer):
+        (WebCore::IDBTransaction::activate):
+        (WebCore::IDBTransaction::deactivate):
+        * Modules/indexeddb/client/IDBConnectionProxy.cpp:
+        (WebCore::IDBClient::removeItemsMatchingCurrentThread):
+        * Modules/indexeddb/client/TransactionOperation.h:
+        (WebCore::IDBClient::TransactionOperation::~TransactionOperation):
+        (WebCore::IDBClient::TransactionOperation::perform):
+        (WebCore::IDBClient::TransactionOperation::transitionToCompleteOnThisThread):
+        (WebCore::IDBClient::TransactionOperation::transitionToComplete):
+        (WebCore::IDBClient::TransactionOperation::doComplete):
+        (WebCore::IDBClient::TransactionOperation::originThread const):
+        (WebCore::IDBClient::TransactionOperation::originThreadID const): Deleted.
+        * Modules/webaudio/AudioContext.cpp:
+        (WebCore::AudioContext::AudioContext):
+        (WebCore::AudioContext::lock):
+        (WebCore::AudioContext::tryLock):
+        (WebCore::AudioContext::unlock):
+        (WebCore::AudioContext::isAudioThread const):
+        (WebCore::AudioContext::isGraphOwner const):
+        * Modules/webaudio/AudioContext.h:
+        (WebCore::AudioContext::setAudioThread):
+        (WebCore::AudioContext::audioThread const):
+        * Modules/webaudio/AudioDestinationNode.cpp:
+        (WebCore::AudioDestinationNode::render):
+        * Modules/webdatabase/Database.cpp:
+        (WebCore::Database::performClose):
+        (WebCore::Database::securityOrigin):
+        * Modules/webdatabase/DatabaseDetails.h:
+        (WebCore::DatabaseDetails::DatabaseDetails):
+        (WebCore::DatabaseDetails::operator=):
+        (WebCore::DatabaseDetails::thread const):
+        (WebCore::DatabaseDetails::threadID const): Deleted.
+        * Modules/webdatabase/DatabaseManager.cpp:
+        (WebCore::DatabaseManager::detailsForNameAndOrigin):
+        * Modules/webdatabase/DatabaseThread.cpp:
+        (WebCore::DatabaseThread::databaseThread):
+        (WebCore::DatabaseThread::recordDatabaseOpen):
+        (WebCore::DatabaseThread::recordDatabaseClosed):
+        * Modules/webdatabase/DatabaseThread.h:
+        (WebCore::DatabaseThread::getThread):
+        (WebCore::DatabaseThread::getThreadID): Deleted.
+        * Modules/webdatabase/SQLTransaction.cpp:
+        (WebCore::SQLTransaction::checkAndHandleClosedDatabase):
+        * Modules/webdatabase/SQLTransactionBackend.cpp:
+        (WebCore::SQLTransactionBackend::doCleanup):
+        (WebCore::SQLTransactionBackend::notifyDatabaseThreadIsShuttingDown):
+        * bindings/js/JSCallbackData.h:
+        (WebCore::JSCallbackData::JSCallbackData):
+        (WebCore::JSCallbackData::~JSCallbackData):
+        * bindings/js/ScheduledAction.cpp:
+        (WebCore::ScheduledAction::execute):
+        * dom/ScriptExecutionContext.cpp:
+        (WebCore::ScriptExecutionContext::createdMessagePort):
+        (WebCore::ScriptExecutionContext::destroyedMessagePort):
+        * page/ResourceUsageOverlay.h:
+        * page/scrolling/ScrollingThread.cpp:
+        (WebCore::ScrollingThread::isCurrentThread):
+        * platform/Supplementable.h:
+        (WebCore::Supplementable::provideSupplement):
+        (WebCore::Supplementable::removeSupplement):
+        (WebCore::Supplementable::requireSupplement):
+        (WebCore::Supplementable::Supplementable): Deleted.
+        * platform/Timer.cpp:
+        (WebCore::TimerBase::TimerBase):
+        (WebCore::TimerBase::start):
+        (WebCore::TimerBase::stop):
+        (WebCore::TimerBase::setNextFireTime):
+        * platform/Timer.h:
+        (WebCore::TimerBase::isActive const):
+        * platform/graphics/cocoa/FontCacheCoreText.cpp:
+        (WebCore::shouldAutoActivateFontIfNeeded):
+        * platform/graphics/texmap/TextureMapperPlatformLayerProxy.cpp:
+        (WebCore::TextureMapperPlatformLayerProxy::activateOnCompositingThread):
+        (WebCore::TextureMapperPlatformLayerProxy::invalidate):
+        (WebCore::TextureMapperPlatformLayerProxy::getAvailableBuffer):
+        (WebCore::TextureMapperPlatformLayerProxy::appendToUnusedBuffers):
+        (WebCore::TextureMapperPlatformLayerProxy::swapBuffer):
+        * platform/graphics/texmap/TextureMapperPlatformLayerProxy.h:
+        (): Deleted.
+        * platform/ios/wak/WebCoreThread.mm:
+        (RunWebThread):
+        (StartWebThread):
+        * platform/sql/SQLiteDatabase.cpp:
+        (WebCore::SQLiteDatabase::open):
+        (WebCore::SQLiteDatabase::close):
+        * platform/sql/SQLiteDatabase.h:
+        (WebCore::SQLiteDatabase::sqlite3Handle const):
+        * workers/WorkerGlobalScope.cpp:
+        (WebCore::WorkerGlobalScope::~WorkerGlobalScope):
+        (WebCore::WorkerGlobalScope::isContextThread const):
+        * workers/WorkerMessagingProxy.cpp:
+        (WebCore::WorkerMessagingProxy::WorkerMessagingProxy):
+        (WebCore::WorkerMessagingProxy::~WorkerMessagingProxy):
+        * workers/WorkerRunLoop.cpp:
+        (WebCore::WorkerRunLoop::runInMode):
+        (WebCore::WorkerRunLoop::runCleanupTasks):
+        * workers/WorkerThread.h:
+        (WebCore::WorkerThread::thread const):
+        (WebCore::WorkerThread::threadID const): Deleted.
+        * workers/service/ServiceWorkerContainer.cpp:
+        (WebCore::ServiceWorkerContainer::~ServiceWorkerContainer):
+        (WebCore::ServiceWorkerContainer::scheduleJob):
+        (WebCore::ServiceWorkerContainer::jobFailedWithException):
+        (WebCore::ServiceWorkerContainer::scheduleTaskToFireUpdateFoundEvent):
+        (WebCore::ServiceWorkerContainer::jobResolvedWithRegistration):
+        (WebCore::ServiceWorkerContainer::jobResolvedWithUnregistrationResult):
+        (WebCore::ServiceWorkerContainer::startScriptFetchForJob):
+        (WebCore::ServiceWorkerContainer::jobFinishedLoadingScript):
+        (WebCore::ServiceWorkerContainer::jobFailedLoadingScript):
+        (WebCore::ServiceWorkerContainer::jobDidFinish):
+        (WebCore::ServiceWorkerContainer::addRegistration):
+        (WebCore::ServiceWorkerContainer::removeRegistration):
+        (WebCore::ServiceWorkerContainer::scheduleTaskToFireControllerChangeEvent):
+        (WebCore::ServiceWorkerContainer::contextIdentifier):
+        * workers/service/ServiceWorkerContainer.h:
+        * workers/service/ServiceWorkerJob.cpp:
+        (WebCore::ServiceWorkerJob::~ServiceWorkerJob):
+        (WebCore::ServiceWorkerJob::failedWithException):
+        (WebCore::ServiceWorkerJob::resolvedWithRegistration):
+        (WebCore::ServiceWorkerJob::resolvedWithUnregistrationResult):
+        (WebCore::ServiceWorkerJob::startScriptFetch):
+        (WebCore::ServiceWorkerJob::fetchScriptWithContext):
+        (WebCore::ServiceWorkerJob::didReceiveResponse):
+        (WebCore::ServiceWorkerJob::notifyFinished):
+        * workers/service/ServiceWorkerJob.h:
+        * xml/parser/XMLDocumentParserLibxml2.cpp:
+        (WebCore::matchFunc):
+        (WebCore::openFunc):
+        (WebCore::initializeXMLParser):
+        (WebCore::XMLParserContext::createStringParser):
+        (WebCore::XMLParserContext::createMemoryParser):
+
+2017-12-03  Youenn Fablet  <youenn@apple.com>
+
+        WebSocketChannel should ensure its client is live when calling it in error case
+        https://bugs.webkit.org/show_bug.cgi?id=180285
+
+        Reviewed by Darin Adler.
+
+        No observable change of behavior.
+        This makes it consistent with other calls of didReceiveMessageError.
+
+        * Modules/websockets/WebSocketChannel.cpp:
+        (WebCore::WebSocketChannel::fail):
+
+2017-12-03  Alexey Proskuryakov  <ap@apple.com>
+
+        WebArchiveResourceWebResourceHandler leaks when pasting
+        https://bugs.webkit.org/show_bug.cgi?id=180339
+
+        Reviewed by Joseph Pecoraro.
+
+        * editing/cocoa/WebContentReaderCocoa.mm:
+        (WebCore::attributesForAttributedStringConversion):
+
+2017-12-03  Chris Dumez  <cdumez@apple.com>
+
+        Support serviceWorker.postMessage() inside service workers
+        https://bugs.webkit.org/show_bug.cgi?id=180328
+
+        Reviewed by Darin Adler.
+
+        Support serviceWorker.postMessage() inside service workers.
+
+        No new tests, unskipped and rebaselined existing test that is
+        now passing.
+
+        * workers/service/SWClientConnection.h:
+        * workers/service/ServiceWorker.cpp:
+        (WebCore::ServiceWorker::postMessage):
+        * workers/service/context/SWContextManager.cpp:
+        (WebCore::SWContextManager::postMessageToServiceWorker):
+        * workers/service/context/SWContextManager.h:
+        * workers/service/context/ServiceWorkerThread.cpp:
+        (WebCore::fireMessageEvent):
+        (WebCore::ServiceWorkerThread::postMessageToServiceWorker):
+        * workers/service/context/ServiceWorkerThread.h:
+
+2017-12-03  Chris Dumez  <cdumez@apple.com>
+
+        Implement self.skipWaiting() inside service workers
+        https://bugs.webkit.org/show_bug.cgi?id=180329
+
+        Reviewed by Darin Adler.
+
+        Implement self.skipWaiting() inside service workers:
+        - https://w3c.github.io/ServiceWorker/#service-worker-global-scope-skipwaiting
+
+        Also fixes a bug where tryActivate() was calling activate() even though the
+        registration's active worker was "in use":
+        - https://w3c.github.io/ServiceWorker/#try-activate-algorithm
+
+        No new tests, rebaselined existing tests.
+
+        * workers/service/ServiceWorkerGlobalScope.cpp:
+        (WebCore::ServiceWorkerGlobalScope::skipWaiting):
+        * workers/service/context/SWContextManager.h:
+        * workers/service/server/SWServerRegistration.cpp:
+        (WebCore::SWServerRegistration::tryActivate):
+        * workers/service/server/SWServerToContextConnection.cpp:
+        (WebCore::SWServerToContextConnection::skipWaiting):
+        * workers/service/server/SWServerToContextConnection.h:
+        * workers/service/server/SWServerWorker.cpp:
+        (WebCore::SWServerWorker::skipWaiting):
+        * workers/service/server/SWServerWorker.h:
+        (WebCore::SWServerWorker::isSkipWaitingFlagSet const):
+
+2017-12-03  Carlos Garcia Campos  <cgarcia@igalia.com>
+
+        [GStreamer] GstPad leaked in WebKitTextCombiner
+        https://bugs.webkit.org/show_bug.cgi?id=180314
+
+        Reviewed by Michael Catanzaro.
+
+        gst_element_get_static_pad() returns a full reference that si never freed, because gst_ghost_pad_new doesn't
+        take the ownership of the given pad.
+
+        * platform/graphics/gstreamer/TextCombinerGStreamer.cpp:
+        (webkit_text_combiner_init):
+
+2017-12-03  Carlos Garcia Campos  <cgarcia@igalia.com>
+
+        [GStreamer] GstCaps leaked in MediaPlayerPrivateGStreamer::createGSTPlayBin
+        https://bugs.webkit.org/show_bug.cgi?id=180311
+
+        Reviewed by Michael Catanzaro.
+
+        gst_caps_new_empty_simple() is passed directly to g_object_set(). The returned caps should be freed with
+        gst_caps_unref().
+
+        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
+        (WebCore::MediaPlayerPrivateGStreamer::createGSTPlayBin):
+
+2017-12-02  Youenn Fablet  <youenn@apple.com>
+
+        Move registration activation and clearing from SWServerJobQueue to SWServerRegistration
+        https://bugs.webkit.org/show_bug.cgi?id=180325
+
+        Reviewed by Chris Dumez.
+
+        No change of behavior.
+
+        These algorithms fit naturally in SWServerRegistration and will be used as part of clients.claim.
+
+        * workers/service/server/SWServer.cpp:
+        (WebCore::SWServer::clearAll):
+        (WebCore::SWServer::didFinishActivation):
+        * workers/service/server/SWServerJobQueue.cpp:
+        (WebCore::SWServerJobQueue::scriptFetchFinished):
+        (WebCore::SWServerJobQueue::scriptContextFailedToStart):
+        (WebCore::SWServerJobQueue::didFinishInstall):
+        (WebCore::SWServerJobQueue::runUnregisterJob):
+        (WebCore::SWServerJobQueue::tryActivate): Deleted.
+        (WebCore::SWServerJobQueue::activate): Deleted.
+        (WebCore::SWServerJobQueue::didFinishActivation): Deleted.
+        (WebCore::SWServerJobQueue::tryClearRegistration): Deleted.
+        (WebCore::clearRegistrationWorker): Deleted.
+        (WebCore::SWServerJobQueue::clearRegistration): Deleted.
+        * workers/service/server/SWServerJobQueue.h:
+        * workers/service/server/SWServerRegistration.cpp:
+        (WebCore::SWServerRegistration::tryClear):
+        (WebCore::clearRegistrationWorker):
+        (WebCore::SWServerRegistration::clear):
+        (WebCore::SWServerRegistration::tryActivate):
+        (WebCore::SWServerRegistration::activate):
+        (WebCore::SWServerRegistration::didFinishActivation):
+        * workers/service/server/SWServerRegistration.h:
+
+2017-12-02  Chris Dumez  <cdumez@apple.com>
+
+        Support container.register() / registration.unregister() /  inside service workers
+        https://bugs.webkit.org/show_bug.cgi?id=180326
+
+        Reviewed by Youenn Fablet.
+
+        Support container.register() / registration.unregister() /  inside service workers.
+        This is mostly about removing the is<Document>() checks and adding testing given
+        that most of the work was done in r225455.
+
+        Test: http/tests/workers/service/ServiceWorkerGlobalScope_register.html
+
+        * workers/service/ServiceWorkerContainer.cpp:
+        (WebCore::ServiceWorkerContainer::addRegistration):
+        * workers/service/ServiceWorkerRegistration.cpp:
+        (WebCore::ServiceWorkerRegistration::update):
+        (WebCore::ServiceWorkerRegistration::unregister):
+
+2017-12-02  Chris Dumez  <cdumez@apple.com>
+
+        Support serviceWorkerRegistration.update() inside service workers
+        https://bugs.webkit.org/show_bug.cgi?id=180215
+
+        Reviewed by Darin Adler.
+
+        Support serviceWorkerRegistration.update() inside service workers. The code paths
+        for job scheduling and resolution have been made thread safe by hopping to the right
+        thread when necessary. In particular, ServiceWorkerContainer always makes sure to to
+        a callOnMainThread() before calling methods on the SWClientConnection. Also, the
+        SWClientConnection relies on a new postTaskTo() method before calling methods on the
+        job.
+
+        Test: http/tests/workers/service/self_registration_update.html
+
+        * workers/service/SWClientConnection.cpp:
+        (WebCore::SWClientConnection::scheduleJob):
+        (WebCore::SWClientConnection::finishedFetchingScript):
+        (WebCore::SWClientConnection::failedFetchingScript):
+        (WebCore::SWClientConnection::jobRejectedInServer):
+        (WebCore::SWClientConnection::registrationJobResolvedInServer):
+        (WebCore::SWClientConnection::unregistrationJobResolvedInServer):
+        (WebCore::SWClientConnection::startScriptFetchForServer):
+        (WebCore::SWClientConnection::postMessageToServiceWorkerClient):
+        (WebCore::SWClientConnection::updateRegistrationState):
+        (WebCore::SWClientConnection::updateWorkerState):
+        (WebCore::SWClientConnection::fireUpdateFoundEvent):
+        (WebCore::SWClientConnection::notifyClientsOfControllerChange):
+        (WebCore::SWClientConnection::clearPendingJobs):
+        (WebCore::SWClientConnection::postTaskTo):
+        * workers/service/SWClientConnection.h:
+        * workers/service/ServiceWorkerContainer.cpp:
+        (WebCore::ServiceWorkerContainer::scheduleJob):
+        (WebCore::ServiceWorkerContainer::jobFailedWithException):
+        (WebCore::ServiceWorkerContainer::scheduleTaskToFireUpdateFoundEvent):
+        (WebCore::ServiceWorkerContainer::jobResolvedWithRegistration):
+        (WebCore::ServiceWorkerContainer::jobResolvedWithUnregistrationResult):
+        (WebCore::ServiceWorkerContainer::startScriptFetchForJob):
+        (WebCore::ServiceWorkerContainer::jobFinishedLoadingScript):
+        (WebCore::ServiceWorkerContainer::jobFailedLoadingScript):
+        (WebCore::ServiceWorkerContainer::jobDidFinish):
+        (WebCore::ServiceWorkerContainer::addRegistration):
+        (WebCore::ServiceWorkerContainer::removeRegistration):
+        (WebCore::ServiceWorkerContainer::scheduleTaskToFireControllerChangeEvent):
+        (WebCore::ServiceWorkerContainer::contextIdentifier):
+        * workers/service/ServiceWorkerContainer.h:
+        * workers/service/ServiceWorkerJob.cpp:
+        (WebCore::ServiceWorkerJob::ServiceWorkerJob):
+        * workers/service/ServiceWorkerJob.h:
+        (WebCore::ServiceWorkerJob::contextIdentifier):
+        * workers/service/ServiceWorkerJobClient.h:
+        * workers/service/ServiceWorkerRegistration.cpp:
+        (WebCore::ServiceWorkerRegistration::update):
+        * workers/service/ServiceWorkerTypes.h:
+
+2017-12-02  Simon Fraser  <simon.fraser@apple.com>
+
+        Make IOSurface::Locker and use it in ImageBufferDataCG
+        https://bugs.webkit.org/show_bug.cgi?id=180317
+
+        Reviewed by Zalan Bujtas.
+
+        Add an RAII IOSurface::Locker which can lock readonly or readwrite. Access
+        to the IOSurface base address is through the locker.
+        
+        Add IOSurface::bytesPerRow() to wrap IOSurfaceGetBytesPerRow().
+        
+        After this, there is only one location where we access the IOSurfaceRef
+        directly, in WebGL code.
+
+        * platform/graphics/cg/ImageBufferDataCG.cpp:
+        (WebCore::ImageBufferData::toBGRAData const):
+        (WebCore::ImageBufferData::getData const):
+        (WebCore::ImageBufferData::putData):
+        * platform/graphics/cocoa/IOSurface.h:
+        * platform/graphics/cocoa/IOSurface.mm:
+        (WebCore::IOSurface::bytesPerRow const):
+
+2017-12-02  Simon Fraser  <simon.fraser@apple.com>
+
+        Add an AlphaPremultiplication enum and use it consistently
+        https://bugs.webkit.org/show_bug.cgi?id=180316
+
+        Reviewed by Zalan Bujtas.
+
+        ImageBuffer-related code sometimes used the 'Multiply' enum, and sometimes
+        a bool to represent alpha premultiplication. Make an enum class and use it
+        everywhere. Re-order and rename some parameters to clarify the meaning of this
+        argument.
+
+        * html/canvas/CanvasRenderingContext2D.cpp:
+        (WebCore::CanvasRenderingContext2D::putImageData):
+        * platform/graphics/GraphicsTypes.cpp:
+        (WebCore::operator<<):
+        * platform/graphics/GraphicsTypes.h:
+        * platform/graphics/ImageBuffer.cpp:
+        (WebCore::ImageBuffer::genericConvertToLuminanceMask):
+        * platform/graphics/ImageBuffer.h:
+        * platform/graphics/ShadowBlur.cpp:
+        (WebCore::ShadowBlur::blurShadowBuffer):
+        * platform/graphics/cairo/ImageBufferCairo.cpp:
+        (WebCore::getImageData):
+        (WebCore::ImageBuffer::getUnmultipliedImageData const):
+        (WebCore::ImageBuffer::getPremultipliedImageData const):
+        (WebCore::ImageBuffer::putByteArray):
+        * platform/graphics/cg/ImageBufferCG.cpp:
+        (WebCore::ImageBuffer::getUnmultipliedImageData const):
+        (WebCore::ImageBuffer::getPremultipliedImageData const):
+        (WebCore::ImageBuffer::putByteArray):
+        * platform/graphics/cg/ImageBufferDataCG.cpp:
+        (WebCore::ImageBufferData::getData const):
+        (WebCore::ImageBufferData::putData):
+        * platform/graphics/cg/ImageBufferDataCG.h:
+        * platform/graphics/filters/FEColorMatrix.cpp:
+        (WebCore::FEColorMatrix::platformApplySoftware):
+        * platform/graphics/filters/FEDropShadow.cpp:
+        (WebCore::FEDropShadow::platformApplySoftware):
+        * platform/graphics/filters/FilterEffect.cpp:
+        (WebCore::FilterEffect::imageBufferResult):
+        * platform/graphics/win/ImageBufferDataDirect2D.cpp:
+        (WebCore::ImageBufferData::getData const):
+        (WebCore::ImageBufferData::putData):
+        * platform/graphics/win/ImageBufferDataDirect2D.h:
+        * platform/graphics/win/ImageBufferDirect2D.cpp:
+        (WebCore::ImageBuffer::getUnmultipliedImageData const):
+        (WebCore::ImageBuffer::getPremultipliedImageData const):
+        (WebCore::ImageBuffer::putByteArray):
+
+2017-12-02  Youenn Fablet  <youenn@apple.com>
+
+        Implement https://w3c.github.io/ServiceWorker/#clients-getall
+        https://bugs.webkit.org/show_bug.cgi?id=180276
+
+        Reviewed by Chris Dumez.
+
+        Test: http/tests/workers/service/serviceworkerclients-matchAll.https.html
+
+        Move Clients QueryOptions to its own class since it is used by various parties.
+        Add encoder/decoder routines.
+
+        Add a ServieWorkerClientInformation which replaces SWServer::ClientInformation structure.
+        This is what is sent back as a result to matchAll requests.
+        Add encoder/decoder routines.
+
+        Implement matchAll by hopping to the main thread, making IPC to the storage process.
+        SWServer in storage process then iterates through the relevant service workers and does some filtering.
+        Additional filtering and information should be gathered in future patches to fully implement the algorithm.
+
+        Add to SWServer a HashMap to easily identify by which service worker a client is controlled, if any.
+        This map is updated at the same time registrations are updated.
+
+        matchAll is given a callback as in the future, window client information will be retrieved asynchronously.
+
+        * WebCore.xcodeproj/project.pbxproj:
+        * workers/service/ServiceWorkerClientInformation.h: Added.
+        (WebCore::ServiceWorkerClientInformation::isolatedCopy const):
+        (WebCore::ServiceWorkerClientInformation::encode const):
+        (WebCore::ServiceWorkerClientInformation::decode):
+        * workers/service/ServiceWorkerClientQueryOptions.h: Added.
+        (WebCore::ServiceWorkerClientQueryOptions::encode const):
+        (WebCore::ServiceWorkerClientQueryOptions::decode):
+        * workers/service/ServiceWorkerClients.cpp:
+        (WebCore::ServiceWorkerClients::matchAll):
+        * workers/service/ServiceWorkerClients.h:
+        * workers/service/context/SWContextManager.h:
+        * workers/service/server/SWServer.cpp:
+        (WebCore::SWServer::matchAll):
+        (WebCore::SWServer::registerServiceWorkerClient):
+        * workers/service/server/SWServer.h:
+        * workers/service/server/SWServerToContextConnection.cpp:
+        (WebCore::SWServerToContextConnection::matchAll):
+        * workers/service/server/SWServerToContextConnection.h:
+        * workers/service/server/SWServerWorker.cpp:
+        (WebCore::SWServerWorker::matchAll):
+        * workers/service/server/SWServerWorker.h:
+
+2017-12-02  Brady Eidson  <beidson@apple.com>
+
+        Factor out the "databaseTaskQueue" parts of IDBServer into something reusable.
+        https://bugs.webkit.org/show_bug.cgi?id=180298
+
+        Reviewed by Chris Dumez.
+
+        No new tests (Refactor only).
+
+        * Modules/indexeddb/server/IDBServer.cpp:
+        (WebCore::IDBServer::IDBServer::IDBServer):
+        (WebCore::IDBServer::IDBServer::postDatabaseTask):
+        (WebCore::IDBServer::IDBServer::postDatabaseTaskReply):
+        (WebCore::IDBServer::IDBServer::databaseRunLoop): Deleted.
+        (WebCore::IDBServer::IDBServer::handleTaskRepliesOnMainThread): Deleted.
+        * Modules/indexeddb/server/IDBServer.h:
+        (): Deleted.
+
+2017-12-02  Simon Fraser  <simon.fraser@apple.com>
+
+        Add a log channel for viewports
+        https://bugs.webkit.org/show_bug.cgi?id=180295
+
+        Reviewed by Zalan Bujtas.
+
+        Add a "Viewports" log channel to log viewport scaling information, and enhance the
+        WebKit "VisibleRects" channel to log additional data for the same reason.
+
+        * dom/Document.cpp:
+        (WebCore::Document::processViewport):
+        * loader/FrameLoader.cpp:
+        (WebCore::FrameLoader::finishedParsing):
+        (WebCore::FrameLoader::completed):
+        * page/FrameView.cpp:
+        (WebCore::FrameView::resetScrollbarsAndClearContentsSize):
+        (WebCore::FrameView::scrollToAnchor):
+        (WebCore::FrameView::maintainScrollPositionAtAnchor):
+        (WebCore::FrameView::setScrollPosition):
+        (WebCore::FrameView::autoSizeIfEnabled):
+        (WebCore::FrameView::setWasScrolledByUser):
+        * page/LayoutContext.cpp:
+        (WebCore::LayoutContext::layout):
+        * page/Page.cpp:
+        (WebCore::Page::setPageScaleFactor):
+        * page/ViewportConfiguration.cpp:
+        (WebCore::ViewportConfiguration::setContentsSize):
+        (WebCore::ViewportConfiguration::setViewportArguments):
+        (WebCore::ViewportConfiguration::updateConfiguration):
+        (WebCore::operator<<):
+        (WebCore::ViewportConfiguration::description const):
+        (WebCore::ViewportConfiguration::dump const):
+        * page/ViewportConfiguration.h:
+        * platform/Logging.h:
+        * platform/ScrollView.cpp:
+        (WebCore::ScrollView::setFixedLayoutSize):
+
+2017-12-01  Alicia Boya GarcĂ­a  <aboya@igalia.com>
+
+        [MSE] Use correct range end checks in sourceBufferPrivateDidReceiveSample()
+        https://bugs.webkit.org/show_bug.cgi?id=179690
+
+        Reviewed by Jer Noble.
+
+        The Coded Frame Processing algorithm as defined in
+        https://www.w3.org/TR/media-source/#sourcebuffer-coded-frame-processing states:
+
+        1.14. Remove existing coded frames in track buffer:
+         -> If highest end timestamp for track buffer is not set:
+               [...]
+         -> If highest end timestamp for track buffer is set and less than or
+            equal to presentation timestamp:
+               Remove all coded frames from track buffer that have a
+               presentation timestamp greater than or equal to highest end
+               timestamp and less than frame end timestamp.
+
+        Note the removal range is closed-open [a, b). WebKit is actually removing
+        frames using an open-closed range (a, b], which causes frames not to be removed
+        in situations where they should and frames to be removed in situations when
+        they should not.
+
+        Tests: media/media-source/media-source-range-end-frame-not-removed.html
+               media/media-source/media-source-range-start-frame-replaced.html
+
+        * Modules/mediasource/SampleMap.cpp:
+        (WebCore::PresentationOrderSampleMap::findSamplesBetweenPresentationTimesFromEnd):
+        * Modules/mediasource/SampleMap.h:
+        * Modules/mediasource/SourceBuffer.cpp:
+        (WebCore::SourceBuffer::sourceBufferPrivateDidReceiveSample):
+
+2017-12-01  Simon Fraser  <simon.fraser@apple.com>
+
+        Reduce the number of calls to ViewportConfiguration::updateConfiguration()
+        https://bugs.webkit.org/show_bug.cgi?id=180299
+
+        Reviewed by Zalan Bujtas.
+
+        There are several calls to ViewportConfiguration::setDefaultConfiguration() during loading
+        with the same arguments. We can avoid unnecessary calls to updateConfiguration() by returning
+        early if the configuration hasn't changed.
+
+        * page/ViewportConfiguration.cpp:
+        (WebCore::ViewportConfiguration::setDefaultConfiguration):
+        * page/ViewportConfiguration.h:
+        (WebCore::ViewportConfiguration::Parameters::operator== const):
+
+2017-12-01  Aishwarya Nirmal  <anirmal@apple.com>
+
+        [Touch Bar Web API] Object representing Touch Bar Menu to send between Web and UI Processes
+        https://bugs.webkit.org/show_bug.cgi?id=179714
+
+        Reviewed by Wenson Hsieh.
+
+        These changes allow the HTMLMenuElement and HTMLMenuItemElement to parse attributes relating
+        to the touch bar and convey changes to the elements that will eventually be propogated to the
+        UI process.
+
+        No new tests at this point because the changes to HTMLMenuElement and HTMLMenuItemElement are
+        new properties, which might not be worth testing, and overriden methods for insertedIntoAncestor
+        and removedFromAncestor, which are involved in sending a message to a UI process but might be
+        difficult to test at this point since the UI process only receives (and does not yet process)
+        the message.
+
+        * html/HTMLMenuElement.cpp:
+        (WebCore::HTMLMenuElement::insertedIntoAncestor):
+        (WebCore::HTMLMenuElement::removedFromAncestor):
+        (WebCore::HTMLMenuElement::parseAttribute):
+        * html/HTMLMenuElement.h:
+        * html/HTMLMenuItemElement.cpp:
+        (WebCore::HTMLMenuItemElement::insertedIntoAncestor):
+        (WebCore::HTMLMenuItemElement::removedFromAncestor):
+        * html/HTMLMenuItemElement.h:
+        * page/ChromeClient.h:
+
+2017-12-01  Daniel Bates  <dabates@apple.com>
+
+        AlternativePresentationButtonSubstitution::unapply() may not undo substitution
+        https://bugs.webkit.org/show_bug.cgi?id=180279
+        <rdar://problem/35800599>
+
+        Reviewed by Simon Fraser.
+
+        Fixes an issue where removing an alternative presentation button substituted for a non-HTML input
+        element did not restore the original appearance of the element before the substitution.
+
+        To substitute the alternative presentation button for a non-HTML input element we attach a
+        user-agent shadow root to it. Adding a shadow root, including a user-agent shadow root,
+        tears down the existing renderers for the element. Currently when we unapply such a substitution
+        we ultimately just remove the shadow root and do not create new renderers for the subtree
+        that the shadow root was removed from. We need to create new renderers for this subtree
+        to restore the original appearance of the element before the substitution.
+
+        * editing/cocoa/AlternativePresentationButtonSubstitution.cpp:
+        (WebCore::AlternativePresentationButtonSubstitution::unapply):
+
+2017-12-01  Christopher Reid  <chris.reid@sony.com>
+
+        Move DateComponents into WTF
+        https://bugs.webkit.org/show_bug.cgi?id=180211
+
+        Reviewed by Myles C. Maxfield.
+
+        No new tests no change in behavior.
+
+        Moved DateComponents from platform into WTF.
+
+        * Sources.txt: Removed DateComponents
+        * WebCore.xcodeproj/project.pbxproj: Removed DateComponents
+        * dom/Document.cpp:
+        * html/BaseDateAndTimeInputType.h:
+        * html/DateTimeInputType.h: Fixed a call to the wrong parent constructor
+        * html/HTMLInputElement.h:
+        * html/InputType.cpp:
+        * html/InputType.h:
+        * platform/text/PlatformLocale.cpp:
+        * platform/text/PlatformLocale.h:
+        * platform/text/ios/LocalizedDateCache.h:
+        * platform/text/mac/LocaleMac.h:
+        * platform/text/win/LocaleWin.cpp:
+        * platform/text/win/LocaleWin.h:
+        * rendering/RenderThemeIOS.mm:
+
+2017-12-01  Daniel Bates  <dabates@apple.com>
+
+        Alternative Presentation Button: Provide a way to query for the replaced elements
+        https://bugs.webkit.org/show_bug.cgi?id=180114
+        <rdar://problem/35710539>
+
+        Reviewed by Tim Horton.
+
+        Add SPI to query for the elements that were replaced by an Alternative Presentation Button.
+
+        Test: fast/forms/alternative-presentation-button/replaced-elements.html
+
+        * editing/Editor.cpp:
+        (WebCore::Editor::elementsReplacedByAlternativePresentationButton): Added.
+        * editing/Editor.h:
+        * editing/cocoa/AlternativePresentationButtonSubstitution.cpp:
+        (WebCore::AlternativePresentationButtonSubstitution::replacedElements): Added.
+        * editing/cocoa/AlternativePresentationButtonSubstitution.h:
+        * testing/Internals.cpp:
+        (WebCore::Internals::elementsReplacedByAlternativePresentationButton): Added.
+        * testing/Internals.h:
+        * testing/Internals.idl: Expose internals function elementsReplacedByAlternativePresentationButton()
+        so as to test Editor::elementsReplacedByAlternativePresentationButton().
+
+2017-12-01  Said Abou-Hallawa  <sabouhallawa@apple.com>
+
+        Rename ImageFrameCache to ImageSource
+        https://bugs.webkit.org/show_bug.cgi?id=180172
+
+        Reviewed by Per Arne Vollan.
+
+        This is a follow-up for r225300. ImageSource is the intended name after
+        merging ImageFrameCache and ImageSource.
+
+        * Sources.txt:
+        * WebCore.xcodeproj/project.pbxproj:
+        * platform/graphics/BitmapImage.cpp:
+        (WebCore::BitmapImage::BitmapImage):
+        * platform/graphics/BitmapImage.h:
+        * platform/graphics/ImageFrame.h:
+        * platform/graphics/ImageFrameCache.cpp: Removed.
+        * platform/graphics/ImageFrameCache.h: Removed.
+        * platform/graphics/ImageSource.cpp: Added.
+        (WebCore::ImageSource::ImageSource):
+        (WebCore::ImageSource::~ImageSource):
+        (WebCore::ImageSource::ensureDecoderAvailable):
+        (WebCore::ImageSource::setData):
+        (WebCore::ImageSource::resetData):
+        (WebCore::ImageSource::dataChanged):
+        (WebCore::ImageSource::isAllDataReceived):
+        (WebCore::ImageSource::destroyDecodedData):
+        (WebCore::ImageSource::destroyIncompleteDecodedData):
+        (WebCore::ImageSource::clearFrameBufferCache):
+        (WebCore::ImageSource::decodedSizeChanged):
+        (WebCore::ImageSource::decodedSizeIncreased):
+        (WebCore::ImageSource::decodedSizeDecreased):
+        (WebCore::ImageSource::decodedSizeReset):
+        (WebCore::ImageSource::didDecodeProperties):
+        (WebCore::ImageSource::growFrames):
+        (WebCore::ImageSource::setNativeImage):
+        (WebCore::ImageSource::cacheMetadataAtIndex):
+        (WebCore::ImageSource::cacheNativeImageAtIndex):
+        (WebCore::ImageSource::cacheNativeImageAtIndexAsync):
+        (WebCore::ImageSource::decodingQueue):
+        (WebCore::ImageSource::frameRequestQueue):
+        (WebCore::ImageSource::canUseAsyncDecoding):
+        (WebCore::ImageSource::startAsyncDecodingQueue):
+        (WebCore::ImageSource::requestFrameAsyncDecodingAtIndex):
+        (WebCore::ImageSource::isAsyncDecodingQueueIdle const):
+        (WebCore::ImageSource::stopAsyncDecodingQueue):
+        (WebCore::ImageSource::frameAtIndexCacheIfNeeded):
+        (WebCore::ImageSource::clearMetadata):
+        (WebCore::ImageSource::sourceURL const):
+        (WebCore::ImageSource::mimeType const):
+        (WebCore::ImageSource::expectedContentLength const):
+        (WebCore::ImageSource::metadata):
+        (WebCore::ImageSource::frameMetadataAtIndex):
+        (WebCore::ImageSource::frameMetadataAtIndexCacheIfNeeded):
+        (WebCore::ImageSource::encodedDataStatus):
+        (WebCore::ImageSource::frameCount):
+        (WebCore::ImageSource::repetitionCount):
+        (WebCore::ImageSource::uti):
+        (WebCore::ImageSource::filenameExtension):
+        (WebCore::ImageSource::hotSpot):
+        (WebCore::ImageSource::size):
+        (WebCore::ImageSource::sizeRespectingOrientation):
+        (WebCore::ImageSource::singlePixelSolidColor):
+        (WebCore::ImageSource::maximumSubsamplingLevel):
+        (WebCore::ImageSource::frameIsBeingDecodedAndIsCompatibleWithOptionsAtIndex):
+        (WebCore::ImageSource::frameDecodingStatusAtIndex):
+        (WebCore::ImageSource::frameHasAlphaAtIndex):
+        (WebCore::ImageSource::frameHasFullSizeNativeImageAtIndex):
+        (WebCore::ImageSource::frameHasDecodedNativeImageCompatibleWithOptionsAtIndex):
+        (WebCore::ImageSource::frameSubsamplingLevelAtIndex):
+        (WebCore::ImageSource::frameSizeAtIndex):
+        (WebCore::ImageSource::frameBytesAtIndex):
+        (WebCore::ImageSource::frameDurationAtIndex):
+        (WebCore::ImageSource::frameOrientationAtIndex):
+        (WebCore::ImageSource::setTargetContext):
+        (WebCore::ImageSource::createFrameImageAtIndex):
+        (WebCore::ImageSource::frameImageAtIndex):
+        (WebCore::ImageSource::frameImageAtIndexCacheIfNeeded):
+        (WebCore::ImageSource::dump):
+        * platform/graphics/ImageSource.h: Added.
+        (WebCore::ImageSource::create):
+        (WebCore::ImageSource::decodedSize const):
+        (WebCore::ImageSource::destroyAllDecodedData):
+        (WebCore::ImageSource::destroyAllDecodedDataExcludeFrame):
+        (WebCore::ImageSource::destroyDecodedDataBeforeFrame):
+        (WebCore::ImageSource::clearImage):
+        (WebCore::ImageSource::requestFrameAsyncDecodingAtIndex):
+        (WebCore::ImageSource::hasAsyncDecodingQueue const):
+        (WebCore::ImageSource::isSizeAvailable):
+        (WebCore::ImageSource::isDecoderAvailable const):
+        (WebCore::ImageSource::frameAtIndexCacheIfNeeded):
+        (WebCore::ImageSource::ImageFrameRequest::operator== const):
+        * platform/graphics/cairo/GraphicsContext3DCairo.cpp:
+        (WebCore::GraphicsContext3D::ImageExtractor::extractImage):
+        * platform/graphics/cg/GraphicsContext3DCG.cpp:
+        (WebCore::GraphicsContext3D::ImageExtractor::extractImage):
+
+2017-12-01  Youenn Fablet  <youenn@apple.com>
+
+        Implement https://w3c.github.io/ServiceWorker/#clients-get
+        https://bugs.webkit.org/show_bug.cgi?id=180167
+
+        Reviewed by Chris Dumez.
+
+        Test: http/tests/workers/service/serviceworkerclients-get.https.html
+
+        Implement clients get by having service worker clients do the following:
+        - Go to main thread to query the SWClientConnection for getting the client.
+        - SWClientConnection requests it through IPC to StorageProcess SWServer.
+        - SWServer looks at its client map and returns client data based on the given identifier.
+        - SWClientConnection sends it back to the right clients for resolving the promise.
+
+        Identifier is parsed at service worker process level.
+
+        Made ServiceWorkerClients no longer an ActiveDOMObject since it is owned by ServiceWorkerGlobalScope
+        and is only exposed in service workers.
+
+        * workers/service/ServiceWorkerClientIdentifier.h:
+        (WebCore::ServiceWorkerClientIdentifier::fromString):
+        * workers/service/ServiceWorkerClients.cpp:
+        (WebCore::ServiceWorkerClients::ServiceWorkerClients):
+        (WebCore::ServiceWorkerClients::get):
+        * workers/service/ServiceWorkerClients.h:
+        (WebCore::ServiceWorkerClients::create):
+        * workers/service/context/SWContextManager.cpp:
+        (WebCore::SWContextManager::postTaskToServiceWorker):
+        * workers/service/context/SWContextManager.h:
+        * workers/service/server/SWServer.cpp:
+        (WebCore::SWServer::getClientFromId):
+        * workers/service/server/SWServer.h:
+        * workers/service/server/SWServerToContextConnection.cpp:
+        (WebCore::SWServerToContextConnection::findClientByIdentifier):
+        * workers/service/server/SWServerToContextConnection.h:
+        * workers/service/server/SWServerWorker.cpp:
+        (WebCore::SWServerWorker::origin const):
+        (WebCore::SWServerWorker::findClientByIdentifier):
+        * workers/service/server/SWServerWorker.h:
+
+2017-12-01  Brian Burg  <bburg@apple.com>
+
+        Web Inspector: move Inspector::Protocol::Array<T> to JSON namespace
+        https://bugs.webkit.org/show_bug.cgi?id=173662
+
+        Reviewed by Joseph Pecoraro.
+
+        Adopt new type names.
+
+        * inspector/InspectorCanvas.cpp:
+        (WebCore::InspectorCanvas::recordAction):
+        (WebCore::InspectorCanvas::releaseFrames):
+        (WebCore::InspectorCanvas::releaseData):
+        (WebCore::InspectorCanvas::indexForData):
+        (WebCore::buildArrayForAffineTransform):
+        (WebCore::buildArrayForVector):
+        (WebCore::InspectorCanvas::buildInitialState):
+        (WebCore::InspectorCanvas::buildAction):
+        (WebCore::InspectorCanvas::buildArrayForCanvasGradient):
+        (WebCore::InspectorCanvas::buildArrayForCanvasPattern):
+        (WebCore::InspectorCanvas::buildArrayForImageData):
+        (WebCore::InspectorCanvas::buildArrayForImageBitmap):
+        * inspector/InspectorCanvas.h:
+        * inspector/InspectorController.cpp:
+        (WebCore::InspectorController::buildObjectForHighlightedNodes const):
+        * inspector/InspectorController.h:
+        * inspector/InspectorOverlay.cpp:
+        (WebCore::buildObjectForHighlight):
+        (WebCore::InspectorOverlay::drawPaintRects):
+        (WebCore::buildArrayForRendererFragments):
+        (WebCore::buildObjectForElementData):
+        (WebCore::InspectorOverlay::buildHighlightObjectForNode const):
+        (WebCore::InspectorOverlay::buildObjectForHighlightedNodes const):
+        * inspector/InspectorOverlay.h:
+        * inspector/InspectorStyleSheet.cpp:
+        (WebCore::fillMediaListChain):
+        (WebCore::InspectorStyle::buildArrayForComputedStyle const):
+        (WebCore::InspectorStyle::styleWithProperties const):
+        (WebCore::buildObjectForSelectorHelper):
+        (WebCore::selectorsFromSource):
+        (WebCore::InspectorStyleSheet::buildObjectForSelectorList):
+        (WebCore::InspectorStyleSheet::buildObjectForRule):
+        (WebCore::InspectorStyleSheet::buildObjectForStyle):
+        (WebCore::InspectorStyleSheet::buildArrayForRuleList):
+        * inspector/InspectorStyleSheet.h:
+        * inspector/agents/InspectorApplicationCacheAgent.cpp:
+        (WebCore::InspectorApplicationCacheAgent::getFramesWithManifests):
+        (WebCore::InspectorApplicationCacheAgent::buildArrayForApplicationCacheResources):
+        * inspector/agents/InspectorApplicationCacheAgent.h:
+        * inspector/agents/InspectorCSSAgent.cpp:
+        (WebCore::InspectorCSSAgent::getMatchedStylesForNode):
+        (WebCore::InspectorCSSAgent::getComputedStyleForNode):
+        (WebCore::InspectorCSSAgent::getAllStyleSheets):
+        (WebCore::InspectorCSSAgent::getSupportedCSSProperties):
+        (WebCore::InspectorCSSAgent::getSupportedSystemFontFamilyNames):
+        (WebCore::InspectorCSSAgent::buildArrayForMatchedRuleList):
+        * inspector/agents/InspectorCSSAgent.h:
+        * inspector/agents/InspectorCanvasAgent.cpp:
+        (WebCore::InspectorCanvasAgent::requestCSSCanvasClientNodes):
+        * inspector/agents/InspectorCanvasAgent.h:
+        * inspector/agents/InspectorDOMAgent.cpp:
+        (WebCore::InspectorDOMAgent::querySelectorAll):
+        (WebCore::InspectorDOMAgent::pushNodePathToFrontend):
+        (WebCore::InspectorDOMAgent::getEventListenersForNode):
+        (WebCore::InspectorDOMAgent::getSearchResults):
+        (WebCore::InspectorDOMAgent::getAttributes):
+        (WebCore::InspectorDOMAgent::buildObjectForNode):
+        (WebCore::InspectorDOMAgent::buildArrayForElementAttributes):
+        (WebCore::InspectorDOMAgent::buildArrayForContainerChildren):
+        (WebCore::InspectorDOMAgent::buildArrayForPseudoElements):
+        (WebCore::InspectorDOMAgent::processAccessibilityChildren):
+        (WebCore::InspectorDOMAgent::buildObjectForAccessibilityProperties):
+        (WebCore::InspectorDOMAgent::styleAttributeInvalidated):
+        * inspector/agents/InspectorDOMAgent.h:
+        * inspector/agents/InspectorDOMStorageAgent.cpp:
+        (WebCore::InspectorDOMStorageAgent::getDOMStorageItems):
+        * inspector/agents/InspectorDOMStorageAgent.h:
+        * inspector/agents/InspectorDatabaseAgent.cpp:
+        (WebCore::InspectorDatabaseAgent::getDatabaseTableNames):
+        * inspector/agents/InspectorDatabaseAgent.h:
+        * inspector/agents/InspectorIndexedDBAgent.cpp:
+        (WebCore::Inspector::keyPathFromIDBKeyPath):
+        (WebCore::InspectorIndexedDBAgent::requestDatabaseNames):
+        * inspector/agents/InspectorLayerTreeAgent.cpp:
+        (WebCore::InspectorLayerTreeAgent::layersForNode):
+        (WebCore::InspectorLayerTreeAgent::gatherLayersUsingRenderObjectHierarchy):
+        (WebCore::InspectorLayerTreeAgent::gatherLayersUsingRenderLayerHierarchy):
+        * inspector/agents/InspectorLayerTreeAgent.h:
+        * inspector/agents/InspectorMemoryAgent.cpp:
+        (WebCore::InspectorMemoryAgent::collectSample):
+        * inspector/agents/InspectorNetworkAgent.cpp:
+        (WebCore::InspectorNetworkAgent::searchOtherRequests):
+        (WebCore::InspectorNetworkAgent::searchInRequest):
+        * inspector/agents/InspectorNetworkAgent.h:
+        * inspector/agents/InspectorPageAgent.cpp:
+        (WebCore::buildArrayForCookies):
+        (WebCore::InspectorPageAgent::getCookies):
+        (WebCore::InspectorPageAgent::searchInResource):
+        (WebCore::InspectorPageAgent::searchInResources):
+        (WebCore::InspectorPageAgent::buildObjectForFrameTree):
+        * inspector/agents/InspectorPageAgent.h:
+        * inspector/agents/WebConsoleAgent.cpp:
+        (WebCore::WebConsoleAgent::getLoggingChannels):
+        * inspector/agents/WebConsoleAgent.h:
+
+2017-12-01  Wenson Hsieh  <wenson_hsieh@apple.com>
+
+        [Attachment Support] Implement SPI for clients to update a given attachment's data
+        https://bugs.webkit.org/show_bug.cgi?id=180184
+        <rdar://problem/35355731>
+
+        Reviewed by Tim Horton.
+
+        Add native API support for Mail to update the data (and optionally, the name and type) of a given attachment
+        element. See per-method comments below for more detail.
+
+        Test: WKAttachmentTests.ChangeAttachmentDataAndFileInformation
+              WKAttachmentTests.ChangeAttachmentDataUpdatesWithInPlaceDisplay
+
+        * editing/Editor.cpp:
+        (WebCore::Editor::insertAttachment):
+        * html/HTMLAttachmentElement.cpp:
+        (WebCore::HTMLAttachmentElement::setFile):
+        (WebCore::HTMLAttachmentElement::invalidateShadowRootChildrenIfNecessary):
+
+        Pull out logic to hide and reset shadow DOM state into a separate helper, and additionally hide both the image
+        and video child elements if they exist. This prevents us from getting into a state where both image and video
+        elements may appear side-by-side when changing data from an image to a video or vice versa.
+
+        (WebCore::HTMLAttachmentElement::updateFileWithData):
+
+        Add a new helper to update the backing File of an attachment element from data, optionally updating the filename
+        and content type as well.
+
+        (WebCore::HTMLAttachmentElement::populateShadowRootIfNecessary):
+        * html/HTMLAttachmentElement.h:
+
 2017-12-01  Chris Dumez  <cdumez@apple.com>
 
         Get rid of microtask in ServiceWorkerContainer::jobResolvedWithRegistration()