WebKit-https.git
22 months ago[DFG] Define defs for MapSet/SetAdd to participate in CSE
utatane.tea@gmail.com [Thu, 4 Jan 2018 15:57:04 +0000 (15:57 +0000)]
[DFG] Define defs for MapSet/SetAdd to participate in CSE
https://bugs.webkit.org/show_bug.cgi?id=179911

Reviewed by Saam Barati.

JSTests:

In addition to these tests, map-set-cse.js and set-add-cse.js work.

* stress/map-set-change-get.js: Added.
(shouldBe):
(test):
* stress/map-set-create-bucket.js: Added.
(shouldBe):
(test):
* stress/set-add-create-bucket.js: Added.
(shouldBe):

Source/JavaScriptCore:

With this patch, our MapSet and SetAdd DFG nodes participate in CSE.
To handle a bit tricky DFG Map operation nodes, MapSet and SetAdd
produce added bucket as its result. Subsequent GetMapBucket will
be removed by CSE.

* dfg/DFGAbstractInterpreterInlines.h:
(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):
* dfg/DFGClobberize.h:
(JSC::DFG::clobberize):
* dfg/DFGNodeType.h:
* dfg/DFGOperations.cpp:
* dfg/DFGOperations.h:
* dfg/DFGPredictionPropagationPhase.cpp:
* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compileSetAdd):
(JSC::DFG::SpeculativeJIT::compileMapSet):
* dfg/DFGSpeculativeJIT.h:
(JSC::DFG::SpeculativeJIT::callOperation):
* ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::compileSetAdd):
(JSC::FTL::DFG::LowerDFGToB3::compileMapSet):
* jit/JITOperations.h:
* runtime/HashMapImpl.h:
(JSC::HashMapImpl::addNormalized):
(JSC::HashMapImpl::addNormalizedInternal):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226408 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months ago[JSC] Remove LocalScope
utatane.tea@gmail.com [Thu, 4 Jan 2018 15:54:40 +0000 (15:54 +0000)]
[JSC] Remove LocalScope
https://bugs.webkit.org/show_bug.cgi?id=181206

Reviewed by Geoffrey Garen.

The last user of HandleStack and LocalScope is JSON. But MarkedArgumentBuffer is enough for their use.
This patch changes JSON parsing and stringifying to using MarkedArgumentBuffer. And remove HandleStack
and LocalScope.

We make Stringifier and Walker WTF_FORBID_HEAP_ALLOCATION to place them on the stack. So they can hold
JSObject* directly in their fields.

* JavaScriptCore.xcodeproj/project.pbxproj:
* Sources.txt:
* heap/HandleStack.cpp: Removed.
* heap/HandleStack.h: Removed.
* heap/Heap.cpp:
(JSC::Heap::addCoreConstraints):
* heap/Heap.h:
(JSC::Heap::handleSet):
(JSC::Heap::handleStack): Deleted.
* heap/Local.h: Removed.
* heap/LocalScope.h: Removed.
* runtime/JSONObject.cpp:
(JSC::Stringifier::Holder::object const):
(JSC::gap):
(JSC::Stringifier::Stringifier):
(JSC::Stringifier::stringify):
(JSC::Stringifier::appendStringifiedValue):
(JSC::Stringifier::Holder::Holder):
(JSC::Stringifier::Holder::appendNextProperty):
(JSC::Walker::Walker):
(JSC::Walker::callReviver):
(JSC::Walker::walk):
(JSC::JSONProtoFuncParse):
(JSC::JSONProtoFuncStringify):
(JSC::JSONParse):
(JSC::JSONStringify):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226407 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months ago[FTL] Optimize ObjectAllocationSinking mergePointerSets by using removeIf
utatane.tea@gmail.com [Thu, 4 Jan 2018 15:51:49 +0000 (15:51 +0000)]
[FTL] Optimize ObjectAllocationSinking mergePointerSets by using removeIf
https://bugs.webkit.org/show_bug.cgi?id=180238

Reviewed by Saam Barati.

We can optimize ObjectAllocationSinking a bit by using removeIf.

* dfg/DFGObjectAllocationSinkingPhase.cpp:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226406 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months ago[JSC] Create parallel SlotVisitors apriori
utatane.tea@gmail.com [Thu, 4 Jan 2018 15:42:06 +0000 (15:42 +0000)]
[JSC] Create parallel SlotVisitors apriori
https://bugs.webkit.org/show_bug.cgi?id=180907

Reviewed by Saam Barati.

The number of SlotVisitors are capped with the number of HeapHelperPool's threads + 2.
If we create these SlotVisitors apriori, we do not need to create SlotVisitors dynamically.
Then we do not need to grab locks while iterating all the SlotVisitors.

In addition, we do not need to consider the case that the number of SlotVisitors increases
after setting up VisitCounters in MarkingConstraintSolver since the number of SlotVisitors
does not increase any more.

* heap/Heap.cpp:
(JSC::Heap::Heap):
(JSC::Heap::runBeginPhase):
* heap/Heap.h:
* heap/HeapInlines.h:
(JSC::Heap::forEachSlotVisitor):
(JSC::Heap::numberOfSlotVisitors): Deleted.
* heap/MarkingConstraintSolver.cpp:
(JSC::MarkingConstraintSolver::didVisitSomething const):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226405 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months ago[GTK] Issues with Ahem's ex / x-height
carlosgc@webkit.org [Thu, 4 Jan 2018 10:04:31 +0000 (10:04 +0000)]
[GTK] Issues with Ahem's ex / x-height
https://bugs.webkit.org/show_bug.cgi?id=180581

Reviewed by Michael Catanzaro.

Source/WebCore:

Get the x-height value from the TT_OS2 table if available.

Fixes: fast/text/break-word-pre-wrap.html
       imported/w3c/web-platform-tests/css/css-shapes-1/shape-outside/values/shape-outside-shape-arguments-000.html

* platform/graphics/freetype/SimpleFontDataFreeType.cpp:
(WebCore::Font::platformInit):

LayoutTests:

Unskip two tests that are now passing and rebaseline others.

* platform/gtk/TestExpectations:
* platform/gtk/css1/font_properties/font_size-expected.png:
* platform/gtk/css1/font_properties/font_size-expected.txt:
* platform/gtk/css1/text_properties/letter_spacing-expected.png:
* platform/gtk/css1/text_properties/letter_spacing-expected.txt:
* platform/gtk/css1/text_properties/line_height-expected.png:
* platform/gtk/css1/text_properties/line_height-expected.txt:
* platform/gtk/css1/text_properties/text_indent-expected.png:
* platform/gtk/css1/text_properties/text_indent-expected.txt:
* platform/gtk/css1/text_properties/word_spacing-expected.png:
* platform/gtk/css1/text_properties/word_spacing-expected.txt:
* platform/gtk/css1/units/length_units-expected.png:
* platform/gtk/css1/units/length_units-expected.txt:
* platform/gtk/css2.1/t040302-c61-ex-len-00-b-a-expected.png:
* platform/gtk/css2.1/t040302-c61-ex-len-00-b-a-expected.txt:
* platform/gtk/css2.1/t040302-c61-rel-len-00-b-ag-expected.png:
* platform/gtk/css2.1/t040302-c61-rel-len-00-b-ag-expected.txt:
* platform/gtk/css2.1/t1008-c44-ln-box-02-d-ag-expected.png:
* platform/gtk/css2.1/t1008-c44-ln-box-02-d-ag-expected.txt:
* platform/gtk/css2.1/t100801-c544-valgn-01-d-ag-expected.png:
* platform/gtk/css2.1/t100801-c544-valgn-01-d-ag-expected.txt:
* platform/gtk/css2.1/t100801-c544-valgn-03-d-agi-expected.png:
* platform/gtk/css2.1/t100801-c544-valgn-03-d-agi-expected.txt:
* platform/gtk/css2.1/t100801-c548-ln-ht-02-b-ag-expected.png:
* platform/gtk/css2.1/t100801-c548-ln-ht-02-b-ag-expected.txt:
* platform/gtk/css2.1/t1507-c526-font-sz-02-b-a-expected.png:
* platform/gtk/css2.1/t1507-c526-font-sz-02-b-a-expected.txt:
* platform/gtk/css2.1/t1601-c547-indent-00-b-a-expected.png:
* platform/gtk/css2.1/t1601-c547-indent-00-b-a-expected.txt:
* platform/gtk/css2.1/t1604-c542-letter-sp-00-b-a-expected.png:
* platform/gtk/css2.1/t1604-c542-letter-sp-00-b-a-expected.txt:
* platform/gtk/editing/selection/caret-ltr-2-expected.png:
* platform/gtk/editing/selection/caret-ltr-2-expected.txt:
* platform/gtk/editing/selection/caret-ltr-2-left-expected.png:
* platform/gtk/editing/selection/caret-ltr-2-left-expected.txt:
* platform/gtk/editing/selection/caret-ltr-expected.png:
* platform/gtk/editing/selection/caret-ltr-expected.txt:
* platform/gtk/editing/selection/caret-ltr-right-expected.png:
* platform/gtk/editing/selection/caret-ltr-right-expected.txt:
* platform/gtk/editing/selection/caret-rtl-2-expected.png:
* platform/gtk/editing/selection/caret-rtl-2-expected.txt:
* platform/gtk/editing/selection/caret-rtl-2-left-expected.png:
* platform/gtk/editing/selection/caret-rtl-2-left-expected.txt:
* platform/gtk/editing/selection/caret-rtl-expected.png:
* platform/gtk/editing/selection/caret-rtl-expected.txt:
* platform/gtk/editing/selection/caret-rtl-right-expected.png:
* platform/gtk/editing/selection/caret-rtl-right-expected.txt:
* platform/gtk/editing/selection/select-across-readonly-input-1-expected.png:
* platform/gtk/editing/selection/select-across-readonly-input-1-expected.txt:
* platform/gtk/editing/selection/select-across-readonly-input-2-expected.png:
* platform/gtk/editing/selection/select-across-readonly-input-2-expected.txt:
* platform/gtk/editing/selection/select-across-readonly-input-3-expected.png:
* platform/gtk/editing/selection/select-across-readonly-input-3-expected.txt:
* platform/gtk/editing/selection/select-across-readonly-input-4-expected.png:
* platform/gtk/editing/selection/select-across-readonly-input-4-expected.txt:
* platform/gtk/editing/selection/select-across-readonly-input-5-expected.png:
* platform/gtk/editing/selection/select-across-readonly-input-5-expected.txt:
* platform/gtk/editing/selection/vertical-lr-ltr-extend-line-backward-br-expected.png:
* platform/gtk/editing/selection/vertical-lr-ltr-extend-line-backward-br-expected.txt:
* platform/gtk/editing/selection/vertical-lr-ltr-extend-line-forward-br-expected.png:
* platform/gtk/editing/selection/vertical-lr-ltr-extend-line-forward-br-expected.txt:
* platform/gtk/editing/selection/vertical-rl-ltr-extend-line-backward-br-expected.png:
* platform/gtk/editing/selection/vertical-rl-ltr-extend-line-backward-br-expected.txt:
* platform/gtk/editing/selection/vertical-rl-ltr-extend-line-backward-p-expected.png:
* platform/gtk/editing/selection/vertical-rl-ltr-extend-line-backward-p-expected.txt:
* platform/gtk/editing/selection/vertical-rl-ltr-extend-line-forward-br-expected.png:
* platform/gtk/editing/selection/vertical-rl-ltr-extend-line-forward-br-expected.txt:
* platform/gtk/editing/selection/vertical-rl-ltr-extend-line-forward-p-expected.png:
* platform/gtk/editing/selection/vertical-rl-ltr-extend-line-forward-p-expected.txt:
* platform/gtk/editing/selection/vertical-rl-rtl-extend-line-backward-br-expected.png:
* platform/gtk/editing/selection/vertical-rl-rtl-extend-line-backward-br-expected.txt:
* platform/gtk/editing/selection/vertical-rl-rtl-extend-line-backward-p-expected.png:
* platform/gtk/editing/selection/vertical-rl-rtl-extend-line-backward-p-expected.txt:
* platform/gtk/editing/selection/vertical-rl-rtl-extend-line-forward-br-expected.png:
* platform/gtk/editing/selection/vertical-rl-rtl-extend-line-forward-br-expected.txt:
* platform/gtk/editing/selection/vertical-rl-rtl-extend-line-forward-p-expected.png:
* platform/gtk/editing/selection/vertical-rl-rtl-extend-line-forward-p-expected.txt:
* platform/gtk/fast/css/bidi-override-in-anonymous-block-expected.png:
* platform/gtk/fast/css/bidi-override-in-anonymous-block-expected.txt:
* platform/gtk/fast/css/ex-after-font-variant-expected.png:
* platform/gtk/fast/css/ex-after-font-variant-expected.txt:
* platform/gtk/fast/forms/auto-fill-button/input-strong-confirmation-password-auto-fill-button-expected.txt:
* platform/gtk/fast/forms/auto-fill-button/input-strong-password-auto-fill-button-expected.txt:
* platform/gtk/fast/forms/minWidthPercent-expected.png:
* platform/gtk/fast/forms/minWidthPercent-expected.txt:
* platform/gtk/fast/lists/008-expected.png:
* platform/gtk/fast/lists/008-expected.txt:
* platform/gtk/fast/lists/008-vertical-expected.png:
* platform/gtk/fast/lists/008-vertical-expected.txt:
* platform/gtk/fast/overflow/overflow-rtl-expected.png:
* platform/gtk/fast/overflow/overflow-rtl-expected.txt:
* platform/gtk/fast/overflow/overflow-rtl-vertical-expected.png:
* platform/gtk/fast/overflow/overflow-rtl-vertical-expected.txt:
* platform/gtk/fast/text/vertical-rl-rtl-linebreak-expected.png:
* platform/gtk/fast/text/vertical-rl-rtl-linebreak-expected.txt:
* platform/gtk/svg/W3C-SVG-1.1-SE/coords-units-03-b-expected.png:
* platform/gtk/svg/W3C-SVG-1.1-SE/coords-units-03-b-expected.txt:
* platform/gtk/svg/W3C-SVG-1.1/coords-units-03-b-expected.png:
* platform/gtk/svg/W3C-SVG-1.1/coords-units-03-b-expected.txt: Added.
* platform/gtk/svg/custom/alignment-baseline-modes-expected.png:
* platform/gtk/svg/custom/alignment-baseline-modes-expected.txt:
* platform/gtk/svg/custom/dominant-baseline-modes-expected.png:
* platform/gtk/svg/custom/dominant-baseline-modes-expected.txt:
* platform/gtk/tables/mozilla/bugs/bug55527-expected.png:
* platform/gtk/tables/mozilla/bugs/bug55527-expected.txt:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226404 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months agoAdd a test to ensure <mo> paints its leading and trailing space as specified in its...
commit-queue@webkit.org [Thu, 4 Jan 2018 09:48:50 +0000 (09:48 +0000)]
Add a test to ensure <mo> paints its leading and trailing space as specified in its attributes.
https://bugs.webkit.org/show_bug.cgi?id=170272

Patch by Minsheng Liu <lambda@liu.ms> on 2018-01-04
Reviewed by Frédéric Wang.

A reference test is added to ensure <mo> paints its leading and trailing space as specified in its attributes.

The bug itself is fixed as a part of 179682.
https://bugs.webkit.org/show_bug.cgi?id=179682

* mathml/presentation/mo-paint-lspace-rspace-expected.html: Added.
* mathml/presentation/mo-paint-lspace-rspace.html: Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226403 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months agoUnreviewed, GTK build fix attempt after r226357
philn@webkit.org [Thu, 4 Jan 2018 09:41:10 +0000 (09:41 +0000)]
Unreviewed, GTK build fix attempt after r226357

* platform/graphics/gstreamer/GStreamerUtilities.h: The
GST_BUFFER_DTS_OR_PTS macro was added in GStreamer 1.8 but old
versions of Debian might not have this release yet.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226402 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months agoImplement Cache API partitioning based on ClientOrigin
commit-queue@webkit.org [Thu, 4 Jan 2018 08:49:12 +0000 (08:49 +0000)]
Implement Cache API partitioning based on ClientOrigin
https://bugs.webkit.org/show_bug.cgi?id=181240

Patch by Youenn Fablet <youenn@apple.com> on 2018-01-04
Reviewed by Alex Christensen.

Source/WebCore:

Covered by updated tests.

Previously, cache storage was partitioned according the origin of the client, represented as a String.
We now partition according both client and top origins, represented as a ClientOrigin

Minor refactoring to use more makePendingActivity.
Added support for IPC serialization of ClientOrigin.
Added SecurityOriginData::toString which is used by WebKit2 Cache Storage implementation.

* Modules/cache/CacheStorageConnection.cpp:
(WebCore::CacheStorageConnection::open):
(WebCore::CacheStorageConnection::retrieveCaches):
* Modules/cache/CacheStorageConnection.h:
(WebCore::CacheStorageConnection::clearMemoryRepresentation):
(WebCore::CacheStorageConnection::doOpen):
(WebCore::CacheStorageConnection::doRetrieveCaches):
* Modules/cache/DOMCacheStorage.cpp:
(WebCore::DOMCacheStorage::origin const):
(WebCore::DOMCacheStorage::retrieveCaches):
(WebCore::DOMCacheStorage::open):
(WebCore::DOMCacheStorage::remove):
* Modules/cache/DOMCacheStorage.h:
* Modules/cache/WorkerCacheStorageConnection.cpp:
(WebCore::WorkerCacheStorageConnection::doOpen):
(WebCore::WorkerCacheStorageConnection::doRetrieveCaches):
* Modules/cache/WorkerCacheStorageConnection.h:
* page/ClientOrigin.h:
(WebCore::ClientOrigin::isolatedCopy const):
(WebCore::ClientOrigin::encode const):
(WebCore::ClientOrigin::decode):
* page/SecurityOriginData.cpp:
(WebCore::SecurityOriginData::toString const):
(WebCore::SecurityOriginData::debugString const): Deleted.
* page/SecurityOriginData.h:
(WebCore::SecurityOriginData::debugString const):
* testing/Internals.cpp:
(WebCore::Internals::clearCacheStorageMemoryRepresentation):

Source/WebKit:

open and retrieveCaches now take a ClientOrigin instead of a String.
Updated cache filesystem path computation to take both client origin and top origin.

When clearing an origin, caches whose client origin or top origin matches the origin are cleared.
Caches are added to the web site data of their client origin with their corresponding cache size.
Caches are added to the web site data of their top origin with a size equal to 0.

Updated memory representation dumping used for test to include both top and client origins.

* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::deleteWebsiteDataForOrigins):
* NetworkProcess/cache/CacheStorageEngine.cpp:
(WebKit::CacheStorage::Engine::cachesRootPath):
(WebKit::CacheStorage::Engine::open):
(WebKit::CacheStorage::Engine::remove):
(WebKit::CacheStorage::Engine::retrieveCaches):
(WebKit::CacheStorage::Engine::readCachesFromDisk):
(WebKit::CacheStorage::Engine::removeCaches):
(WebKit::CacheStorage::Engine::fetchEntries):
(WebKit::CacheStorage::Engine::clearCachesForOrigin):
(WebKit::CacheStorage::Engine::clearMemoryRepresentation):
(WebKit::CacheStorage::Engine::representation):
* NetworkProcess/cache/CacheStorageEngine.h:
* NetworkProcess/cache/CacheStorageEngineCache.cpp:
(WebKit::CacheStorage::Cache::Cache):
* NetworkProcess/cache/CacheStorageEngineCaches.cpp:
(WebKit::CacheStorage::Caches::retrieveOriginFromDirectory):
(WebKit::CacheStorage::Caches::Caches):
(WebKit::CacheStorage::Caches::storeOrigin):
(WebKit::CacheStorage::Caches::readOrigin):
(WebKit::CacheStorage::Caches::open):
* NetworkProcess/cache/CacheStorageEngineCaches.h:
(WebKit::CacheStorage::Caches::create):
(WebKit::CacheStorage::Caches::origin const):
* NetworkProcess/cache/CacheStorageEngineConnection.cpp:
(WebKit::CacheStorageEngineConnection::open):
(WebKit::CacheStorageEngineConnection::caches):
(WebKit::CacheStorageEngineConnection::clearMemoryRepresentation):
* NetworkProcess/cache/CacheStorageEngineConnection.h:
* NetworkProcess/cache/CacheStorageEngineConnection.messages.in:
* WebProcess/Cache/WebCacheStorageConnection.cpp:
(WebKit::WebCacheStorageConnection::doOpen):
(WebKit::WebCacheStorageConnection::doRetrieveCaches):
(WebKit::WebCacheStorageConnection::clearMemoryRepresentation):
* WebProcess/Cache/WebCacheStorageConnection.h:

LayoutTests:

Beefing up test to ensure that client and top origins are taken into consideration.

* http/tests/cache-storage/cache-origins.https-expected.txt:
* http/tests/cache-storage/cache-origins.https.html:
* http/tests/cache-storage/cache-clearing-origin.https-expected.txt:
* http/tests/cache-storage/cache-clearing-origin.https.html:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226401 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months agoService Worker should expose redirect mode for navigation loads as manual
commit-queue@webkit.org [Thu, 4 Jan 2018 08:39:55 +0000 (08:39 +0000)]
Service Worker should expose redirect mode for navigation loads as manual
https://bugs.webkit.org/show_bug.cgi?id=181067

Patch by Youenn Fablet <youenn@apple.com> on 2018-01-04
Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

Updating test to match the latest fetch spec.

* web-platform-tests/service-workers/service-worker/navigation-redirect-to-http.https-expected.txt:
* web-platform-tests/service-workers/service-worker/request-end-to-end.https-expected.txt:
* web-platform-tests/service-workers/service-worker/request-end-to-end.https.html:

Source/WebCore:

Covered by rebased tests.

* loader/CrossOriginAccessControl.cpp: Removing ContentType header only if affecting CORS checks.
This allows extending header filtering in service worker to all modes, including Navigate.
* workers/service/context/ServiceWorkerFetch.cpp:
(WebCore::ServiceWorkerFetch::dispatchFetchEvent): Ideally, document loading code should set redirect to manual.
Since it is not the case yet and that would require changes to various places, manual is set before exposing the corresponding fetch event.

Source/WebKit:

* WebProcess/Storage/ServiceWorkerClientFetch.cpp:
(WebKit::ServiceWorkerClientFetch::didReceiveResponse):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226400 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months agoServiceWorkerThreadProxy::postTaskForModeToWorkerGlobalScope should be a no-op if...
commit-queue@webkit.org [Thu, 4 Jan 2018 08:26:17 +0000 (08:26 +0000)]
ServiceWorkerThreadProxy::postTaskForModeToWorkerGlobalScope should be a no-op if worker is being terminated
https://bugs.webkit.org/show_bug.cgi?id=181245

Patch by Youenn Fablet <youenn@apple.com> on 2018-01-04
Reviewed by Alex Christensen.

Stop appending tasks to a terminating worker and returning false in that case.
This mirrors what is done for regular workers.

* workers/service/context/SWContextManager.cpp:
(WebCore::SWContextManager::terminateWorker):
* workers/service/context/ServiceWorkerThreadProxy.cpp:
(WebCore::ServiceWorkerThreadProxy::postTaskForModeToWorkerGlobalScope):
* workers/service/context/ServiceWorkerThreadProxy.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226399 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months agoCancel pending script loads when service worker is being terminated
commit-queue@webkit.org [Thu, 4 Jan 2018 08:26:01 +0000 (08:26 +0000)]
Cancel pending script loads when service worker is being terminated
https://bugs.webkit.org/show_bug.cgi?id=181250

Patch by Youenn Fablet <youenn@apple.com> on 2018-01-04
Reviewed by Alex Christensen.

Covered by service worker tests no longer crashing in ASAN builds.

* workers/WorkerScriptLoader.cpp:
(WebCore::WorkerScriptLoader::notifyFinished): Clearing loader when finished.
(WebCore::WorkerScriptLoader::cancel): Implementing cancel of a script loader by cancelling the underlying threadable loader.
* workers/WorkerScriptLoader.h:
* workers/service/ServiceWorkerContainer.cpp: Canceling loads of all pending jobs.
(WebCore::ServiceWorkerContainer::stop):
* workers/service/ServiceWorkerJob.cpp:
(WebCore::ServiceWorkerJob::cancelPendingLoad):
* workers/service/ServiceWorkerJob.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226398 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months agoImplement https://fetch.spec.whatwg.org/#main-fetch default referrer policy setting
commit-queue@webkit.org [Thu, 4 Jan 2018 08:24:54 +0000 (08:24 +0000)]
Implement  https://fetch.spec.whatwg.org/#main-fetch default referrer policy setting
https://bugs.webkit.org/show_bug.cgi?id=181239

Patch by Youenn Fablet <youenn@apple.com> on 2018-01-04
Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

Updated test to output more tests for better error reporting.
Also updated to relax the settings so that HTTP loads are done even though the page is HTTPS.
Updated referrer computation since it should be done based on the fetch context and not its parent context.

* web-platform-tests/service-workers/service-worker/fetch-event-referrer-policy.https-expected.txt:
* web-platform-tests/service-workers/service-worker/fetch-event-referrer-policy.https.html:

Source/WebCore:

Covered by updated and rebased test.

Setting the request referrer policy to the Document referrer policy if no one is set.
If Document has no referrer policy, use no-referrer-when-downgrade as per the spec.

* loader/cache/CachedResourceLoader.cpp:
(WebCore::CachedResourceLoader::updateHTTPRequestHeaders):
(WebCore::CachedResourceLoader::requestResource):
* loader/cache/CachedResourceLoader.h:
* loader/cache/CachedResourceRequest.cpp:
(WebCore::CachedResourceRequest::updateReferrerPolicy):
(WebCore::CachedResourceRequest::updateReferrerOriginAndUserAgentHeaders):
* loader/cache/CachedResourceRequest.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226397 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months ago[Attachment Support] Create attachment elements when dropping files on iOS
wenson_hsieh@apple.com [Thu, 4 Jan 2018 07:44:55 +0000 (07:44 +0000)]
[Attachment Support] Create attachment elements when dropping files on iOS
https://bugs.webkit.org/show_bug.cgi?id=181192
<rdar://problem/36280945>

Reviewed by Tim Horton.

Source/WebCore:

Implements support for dropping data as attachment elements on iOS. See comments below for more detail.

Tests:  WKAttachmentTests.InsertDroppedRichAndPlainTextFilesAsAttachments
        WKAttachmentTests.InsertDroppedZipArchiveAsAttachment
        WKAttachmentTests.InsertDroppedItemProvidersInOrder

* WebCore.xcodeproj/project.pbxproj:
* editing/WebContentReader.cpp:
(WebCore::WebContentReader::ensureFragment):

Add a new helper to create the WebContentReader's fragment, if it hasn't already been created.

* editing/WebContentReader.h:
* editing/cocoa/WebContentReaderCocoa.mm:
(WebCore::WebContentReader::readFilePaths):

Rename readFilenames to readFilePaths (which better reflects its parameters, which are file paths). Also, move
the implementation of readFilePaths to shared iOS/macOS code in WebContentReaderCocoa, and remove the stub
implementation on iOS.

There's a bit of code here that I kept macOS-only which deals with inserting file paths as plain text in
editable areas, but it's unclear to me why and if WebKit clients currently find this useful, so I left a FIXME
to investigate removing this altogether. Code for handling this plain text insertion of file paths on Mac was
introduced in r67403.

* editing/ios/WebContentReaderIOS.mm:
(WebCore::WebContentReader::readFilenames): Deleted.
* editing/mac/WebContentReaderMac.mm:
(WebCore::WebContentReader::readFilenames): Deleted.
* page/mac/DragControllerMac.mm:
(WebCore::DragController::updateSupportedTypeIdentifiersForDragHandlingMethod const):

Teach DragController to accept all types conforming to "public.item" and "public.content" on iOS, only when
attachment elements are enabled. This allows us to load content from item providers that we otherwise would not
have loaded, since we now have the ability to fall back to attachment element insertion if the type is not have
a default representation using standard web content.

* platform/Pasteboard.h:
* platform/PasteboardItemInfo.h: Added.
(WebCore::PasteboardItemInfo::encode const):
(WebCore::PasteboardItemInfo::decode):

Add PasteboardItemInfo, a struct that describes an item on the pasteboard. Also, implement encoding and decoding
support for PasteboardItemInfo. So far, the item info only describes file information about the pasteboard item,
and flags indicating whether the item prefers attachment or inline presentation.

* platform/PasteboardStrategy.h:

Replace getFilenamesForDataInteraction with informationForItemAtIndex. Instead of returning all of the file
paths associated with any item on the pasteboard, fetch a PasteboardItemInfo at a given item index, which
includes information about the file path as well as some other metadata we'll need when deciding how to read
pasteboard contents as a document fragment.

* platform/PlatformPasteboard.h:
* platform/cocoa/PasteboardCocoa.mm:
(WebCore::Pasteboard::read):
* platform/ios/AbstractPasteboard.h:
* platform/ios/PasteboardIOS.mm:
(WebCore::Pasteboard::read):
(WebCore::Pasteboard::readRespectingUTIFidelities):

Teach the iOS Pasteboard to read web content using attachment elements, if enabled. There are two scenarios in
which we would want to insert an attachment element:
(1) The item provider uses a preferred presentation style of attachment, in which case we bail out of trying to
    handle the drop using the default mechanisms, and simply insert it as an attachment. We need this to deal
    with the case where we drop text or HTML files from the Files app, so that we don't try and insert the
    contents of the text or HTML as inline web content.
(2) The item provider doesn't have a preferred attachment presentation style, but there's nothing WebKit would
    otherwise do with the dropped content, so insert an attachment element as a fallback. Examples where this is
    relevant are dropping a PDF or ZIP archive without attachment presentation style explicitly set.
We first check if we fall into case (1). If so, we can bail early by inserting an attachment; otherwise, we
proceed normally and see if we can read the contents of the drop as web content. If, at the end of default drop
handling, we don't still have a way to represent the dropped content, enter case (2).

(WebCore::Pasteboard::readFilePaths):
(WebCore::Pasteboard::readFilenames): Deleted.

Rename readFilenames to readFilePaths, and reimplement it using informationForItemAtIndex.

* platform/ios/PlatformPasteboardIOS.mm:
(WebCore::pasteboardItemPresentationStyle):
(WebCore::PlatformPasteboard::informationForItemAtIndex):
(WebCore::PlatformPasteboard::filenamesForDataInteraction): Deleted.

Implement informationForItemAtIndex and remove filenamesForDataInteraction. As before, we ask the pasteboard
(i.e. WebItemProviderPasteboard) for information about dropped file URLs. This time, we limit this to a single
file, so we don't end up creating multiple attachment elements for each representation of a single item
provider. See below for -preferredFileUploadURLAtIndex:fileType: for more detail.

* platform/ios/WebItemProviderPasteboard.h:
* platform/ios/WebItemProviderPasteboard.mm:
(-[WebItemProviderLoadResult initWithItemProvider:typesToLoad:]):
(-[WebItemProviderLoadResult canBeRepresentedAsFileUpload]):

Remove this synthesized instance variable and instead just check the item provider's preferredPresentationStyle.

(-[WebItemProviderLoadResult description]):

Add a verbose -description to the load result object. Useful for debugging what was content was loaded from an
item provider on drop.

(-[WebItemProviderPasteboard preferredFileUploadURLAtIndex:fileType:]):

Return the highest fidelity loaded type identifier for a given item.

(-[WebItemProviderPasteboard allDroppedFileURLs]):
(-[WebItemProviderPasteboard typeIdentifiersToLoadForRegisteredTypeIdentfiers:]):

Prefer flat RTFD to RTFD. In the case where attachments are enabled and we're accepting all types of content
using attachment elements as a fallback representation, if the source writes attributed strings to the
pasteboard with com.apple.rtfd at a higher fidelity than com.apple.flat-rtfd, we'll end up loading only
com.apple.rtfd and dropping the text as an attachment element because we cannot convert the dropped content to
markup. Instead, if flat RTFD is present in the item provider, always prefer that over RTFD so that dropping as
regular web content isn't overridden when attachment elements are enabled.

(-[WebItemProviderPasteboard doAfterLoadingProvidedContentIntoFileURLs:synchronousTimeout:]):
(-[WebItemProviderPasteboard droppedFileURLs]): Deleted.
* platform/mac/DragDataMac.mm:
(WebCore::DragData::containsCompatibleContent const):

DragData::containsCompatibleContent should be true when attachment elements are enabled, and there are files we
can drop as attachment elements.

* platform/mac/PasteboardMac.mm:
(WebCore::Pasteboard::read):
(WebCore::Pasteboard::readFilePaths):
(WebCore::Pasteboard::readFilenames): Deleted.

Source/WebKit:

Make some minor adjustments for changes to the pasteboard in WebCore. See WebCore/ChangeLog for more detail.
Teaches WebPasteboardProxy et. al. to plumb PasteboardItemInfo from the UI process to the web process via the
new `InformationForItemAtIndex` codepath.

* UIProcess/Cocoa/WebPasteboardProxyCocoa.mm:
(WebKit::WebPasteboardProxy::informationForItemAtIndex):
(WebKit::WebPasteboardProxy::getFilenamesForDataInteraction): Deleted.
* UIProcess/WebPasteboardProxy.h:
* UIProcess/WebPasteboardProxy.messages.in:
* WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
(WebKit::WebPlatformStrategies::informationForItemAtIndex):
(WebKit::WebPlatformStrategies::getFilenamesForDataInteraction): Deleted.
* WebProcess/WebCoreSupport/WebPlatformStrategies.h:

Source/WebKitLegacy/mac:

Make some minor adjustments for changes to the pasteboard in WebCore. See WebCore/ChangeLog for more detail.

* WebCoreSupport/WebPlatformStrategies.h:
* WebCoreSupport/WebPlatformStrategies.mm:
(WebPlatformStrategies::informationForItemAtIndex):
(WebPlatformStrategies::getFilenamesForDataInteraction): Deleted.

Tools:

Adds 3 new API tests to exercise different use cases of dropping content as attachment elements when the runtime
switch is enabled. See below for more details.

* TestWebKitAPI/Tests/WebKitCocoa/WKAttachmentTests.mm:
(-[NSItemProvider registerData:type:]):
(platformCopyPNG):
(TestWebKitAPI::TEST):
* TestWebKitAPI/Tests/ios/DataInteractionTests.mm:

Fix some currently failing iOS drag and drop tests. In this case, there's no reason RTFD should appear in the
source item provider when dragging rich text *without* attachments, so this should have been a check for just
kUTTypeRTF instead.

(TestWebKitAPI::TEST):

Tests a few cases of inserting attachment elements via drop:
1.  We should distinguish between drops containing rich/plain text files from just dropping rich/plain text.
    Instead of inserting the contents as inline web content, this should generate attachment elements.
2.  Test the fallback mechanism for inserting attachment elements. If the preferred presentation style is not
    explicitly set, but there's nothing WebKit would otherwise do with the dropped content, then we should fall
    back to inserting the content as an attachment.
3.  Test that if multiple attachments and inline item providers are present, WebKit will respect the order in
    which they were inserted by the source (as opposed to, for instance, putting all of the attachments in front
    or at the end).

* TestWebKitAPI/cocoa/TestWKWebView.h:
* TestWebKitAPI/cocoa/TestWKWebView.mm:
(-[TestWKWebView objectByEvaluatingJavaScript:]):

Add a helper method to return an object that represents the result of evaluating some given script, and rewrite
-stringByEvaluatingJavaScript to just turn around and call this.

(-[TestWKWebView stringByEvaluatingJavaScript:]):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226396 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months agoReplace hard-coded paths in shebangs with #!/usr/bin/env
commit-queue@webkit.org [Thu, 4 Jan 2018 07:18:18 +0000 (07:18 +0000)]
Replace hard-coded paths in shebangs with #!/usr/bin/env
https://bugs.webkit.org/show_bug.cgi?id=181040

Patch by Ting-Wei Lan <lantw44@gmail.com> on 2018-01-03
Reviewed by Alex Christensen.

.:

* Source/cmake/tools/scripts/auto-version.pl:
* Source/cmake/tools/scripts/feature-defines.pl:
* Source/cmake/tools/scripts/version-stamp.pl:

Source/JavaScriptCore:

* Scripts/UpdateContents.py:
* Scripts/cssmin.py:
* Scripts/generate-combined-inspector-json.py:
* Scripts/xxd.pl:
* create_hash_table:
* generate-bytecode-files:
* wasm/generateWasm.py:
* wasm/generateWasmOpsHeader.py:
* yarr/generateYarrCanonicalizeUnicode:

Source/WebCore:

* bindings/scripts/InFilesCompiler.pm:
* bindings/scripts/InFilesParser.pm:
* bindings/scripts/generate-bindings-all.pl:
* bindings/scripts/generate-bindings.pl:
* bindings/scripts/preprocess-idls.pl:
* css/make-css-file-arrays.pl:
* css/makeprop.pl:
* css/makevalues.pl:
* dom/make_event_factory.pl:
* dom/make_names.pl:
* extract-localizable-strings.pl:
* make-hash-tools.pl:

Source/WebCore/PAL:

* AVFoundationSupport.py:

Source/WebInspectorUI:

* Scripts/combine-resources.pl:
* Scripts/copy-user-interface-resources-dryrun.rb:
* Scripts/copy-user-interface-resources.pl:
* Scripts/fix-worker-imports-for-optimized-builds.pl:
* Scripts/remove-console-asserts-dryrun.rb:
* Scripts/remove-console-asserts.pl:
* Scripts/update-LegacyInspectorBackendCommands.rb:
* Scripts/update-codemirror-resources.rb:
* WebInspectorUI.vcxproj/build-webinspectorui.pl:

Source/WebKit:

* Scripts/generate-forwarding-headers.pl:

Source/WebKitLegacy:

* scripts/generate-webkitversion.pl:

Tools:

* BuildSlaveSupport/build-launcher-app:
* BuildSlaveSupport/build-launcher-dmg:
* BuildSlaveSupport/build.webkit.org-config/steps_unittest.py:
* BuildSlaveSupport/built-product-archive:
* BuildSlaveSupport/clean-build:
* BuildSlaveSupport/delete-stale-build-files:
* BuildSlaveSupport/download-built-product:
* BuildSlaveSupport/gtk/buildbot/log/run:
* BuildSlaveSupport/gtk/buildbot/run:
* BuildSlaveSupport/gtk/pulseaudio/run:
* BuildSlaveSupport/kill-old-processes:
* BuildSlaveSupport/test-result-archive:
* BuildSlaveSupport/win/kill-old-processes:
* Scripts/SpacingHeuristics.pm:
* Scripts/add-include:
* Scripts/build-api-tests:
* Scripts/build-dumprendertree:
* Scripts/build-imagediff:
* Scripts/build-jsc:
* Scripts/build-webkit:
* Scripts/build-webkittestrunner:
* Scripts/check-Xcode-source-file-types:
* Scripts/check-dom-results:
* Scripts/check-for-exit-time-destructors:
* Scripts/check-for-global-initializers:
* Scripts/check-for-inappropriate-objc-class-names:
* Scripts/check-for-weak-vtables-and-externals:
* Scripts/clean-header-guards:
* Scripts/compare-timing-files:
* Scripts/configure-xcode-for-ios-development:
* Scripts/copy-webkitlibraries-to-product-directory:
* Scripts/create-exports:
* Scripts/debug-minibrowser:
* Scripts/debug-safari:
* Scripts/debug-test-runner:
* Scripts/do-file-rename:
* Scripts/do-webcore-rename:
* Scripts/dump-webkit-tests-run:
* Scripts/ensure-valid-python:
* Scripts/execAppWithEnv:
* Scripts/extract-localizable-js-strings:
* Scripts/filter-build-webkit:
* Scripts/find-extra-includes:
* Scripts/fix-blink-patch:
* Scripts/generate-coverage-data:
* Scripts/git-add-reviewer:
* Scripts/jsc-stress-test-helpers/js-exception-fuzz:
* Scripts/jsc-stress-test-helpers/js-executable-allocation-fuzz:
* Scripts/jsc-stress-test-helpers/js-osr-exit-fuzz:
* Scripts/make-new-script-test:
* Scripts/make-script-test-wrappers:
* Scripts/package-root:
* Scripts/parse-malloc-history:
* Scripts/report-include-statistics:
* Scripts/resolve-ChangeLogs:
* Scripts/run-api-tests:
* Scripts/run-bindings-tests:
* Scripts/run-content-extension-tester:
* Scripts/run-iexploder-tests:
* Scripts/run-javascriptcore-tests:
* Scripts/run-jsc:
* Scripts/run-leaks:
* Scripts/run-mangleme-tests:
* Scripts/run-minibrowser:
* Scripts/run-pageloadtest:
* Scripts/run-regexp-tests:
* Scripts/run-safari:
* Scripts/run-sunspider:
* Scripts/run-test-runner:
* Scripts/run-webkit-app:
* Scripts/run-webkit-httpd:
* Scripts/run-webkit-websocketserver:
* Scripts/set-webkit-configuration:
* Scripts/show-pretty-diff:
* Scripts/sort-Xcode-project-file:
* Scripts/split-file-by-class:
* Scripts/sunspider-compare-results:
* Scripts/svn-apply:
* Scripts/svn-unapply:
* Scripts/test-webkit-scripts:
* Scripts/test-webkitperl:
* Scripts/update-iexploder-cssproperties:
* Scripts/update-javascriptcore-test-results:
* Scripts/update-webkit:
* Scripts/update-webkit-auxiliary-libs:
* Scripts/update-webkit-dependency:
* Scripts/update-webkit-libs-jhbuild:
* Scripts/update-webkit-localizable-strings:
* Scripts/update-webkit-support-libs:
* Scripts/update-webkitgtk-libs:
* Scripts/update-webkitwpe-libs:
* Scripts/webkit-build-directory:
* Scripts/webkitperl/LoadAsModule.pm:
* Scripts/webkitperl/VCSUtils_unittest/decodeGitBinaryPatch.pl:
* Scripts/webkitperl/VCSUtils_unittest/fixChangeLogPatch.pl:
* Scripts/webkitperl/VCSUtils_unittest/fixChangeLogPatchThenSetChangeLogDateAndReviewer.pl:
* Scripts/webkitperl/VCSUtils_unittest/fixSVNPatchForAdditionWithHistory.pl:
* Scripts/webkitperl/VCSUtils_unittest/generatePatchCommand.pl:
* Scripts/webkitperl/VCSUtils_unittest/mergeChangeLogs.pl:
* Scripts/webkitperl/VCSUtils_unittest/parseChunkRange.pl:
* Scripts/webkitperl/VCSUtils_unittest/parseDiff.pl:
* Scripts/webkitperl/VCSUtils_unittest/parseDiffHeader.pl:
* Scripts/webkitperl/VCSUtils_unittest/parseDiffWithMockFiles.pl:
* Scripts/webkitperl/VCSUtils_unittest/parseFirstEOL.pl:
* Scripts/webkitperl/VCSUtils_unittest/parseGitDiffHeader.pl:
* Scripts/webkitperl/VCSUtils_unittest/parsePatch.pl:
* Scripts/webkitperl/VCSUtils_unittest/parseSvnDiffFooter.pl:
* Scripts/webkitperl/VCSUtils_unittest/parseSvnDiffHeader.pl:
* Scripts/webkitperl/VCSUtils_unittest/parseSvnProperty.pl:
* Scripts/webkitperl/VCSUtils_unittest/parseSvnPropertyValue.pl:
* Scripts/webkitperl/VCSUtils_unittest/parseUnifiedDiffHeader.pl:
* Scripts/webkitperl/VCSUtils_unittest/prepareParsedPatch.pl:
* Scripts/webkitperl/VCSUtils_unittest/removeEOL.pl:
* Scripts/webkitperl/VCSUtils_unittest/runCommand.pl:
* Scripts/webkitperl/VCSUtils_unittest/runPatchCommand.pl:
* Scripts/webkitperl/VCSUtils_unittest/setChangeLogDateAndReviewer.pl:
* Scripts/webkitperl/auto-version_unittest/autoVersionTests.pl:
* Scripts/webkitperl/auto-version_unittest/versionStampTests.pl:
* Scripts/webkitperl/filter-build-webkit_unittest/shouldIgnoreLine_unittests.pl:
* Scripts/webkitperl/prepare-ChangeLog_unittest/extractLineRangeBeforeAndAfterChange.pl:
* Scripts/webkitperl/prepare-ChangeLog_unittest/fetchRadarURLFromBugXMLData.pl:
* Scripts/webkitperl/prepare-ChangeLog_unittest/generateFunctionLists.pl:
* Scripts/webkitperl/prepare-ChangeLog_unittest/parser_unittests.pl:
* Scripts/webkitperl/prepare-ChangeLog_unittest/resources/perl_unittests.pl:
* Scripts/webkitperl/run-leaks_unittest/run-leaks-report-v1.0.pl:
* Scripts/webkitperl/run-leaks_unittest/run-leaks-report-v2.0-new.pl:
* Scripts/webkitperl/run-leaks_unittest/run-leaks-report-v2.0-old.pl:
* Scripts/webkitperl/webkitdirs_unittest/appendToEnvironmentVariableList.pl:
* Scripts/webkitperl/webkitdirs_unittest/checkForArgumentAndRemoveFromArrayRef.pl:
* Scripts/webkitperl/webkitdirs_unittest/checkForArgumentAndRemoveFromArrayRefGettingValue.pl:
* Scripts/webkitperl/webkitdirs_unittest/extractNonMacOSHostConfiguration.pl:
* Scripts/webkitperl/webkitdirs_unittest/prependToEnvironmentVariableList.pl:
* Scripts/webkitpy/layout_tests/servers/run_webkit_httpd.py:
* ccache/ccache-clang:
* ccache/ccache-clang++:
* ccache/ccache-wrapper:
* gtk/install-dependencies:
* iExploder/iexploder-1.3.2/htdocs/iexploder.cgi:
* iExploder/iexploder-1.3.2/htdocs/webserver.rb:
* iExploder/iexploder-1.3.2/tools/lasthit.rb:
* iExploder/iexploder-1.3.2/tools/osx_last_crash.rb:
* iExploder/iexploder-1.3.2/tools/showtest.rb:
* iExploder/iexploder-1.7.2/src/browser_harness.rb:
* iExploder/iexploder-1.7.2/src/iexploder.cgi:
* iExploder/iexploder-1.7.2/src/webserver.rb:
* iExploder/iexploder-1.7.2/tools/lasthit.rb:
* iExploder/iexploder-1.7.2/tools/osx_last_crash.rb:
* wpe/install-dependencies:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226395 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months agoWeb Inspector: "Log Value" context menu is sometimes unavailable
commit-queue@webkit.org [Thu, 4 Jan 2018 05:58:24 +0000 (05:58 +0000)]
Web Inspector: "Log Value" context menu is sometimes unavailable
https://bugs.webkit.org/show_bug.cgi?id=181278
<rdar://problem/36281649>

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2018-01-03
Reviewed by Devin Rousso.

* UserInterface/Views/ObjectPreviewView.css:
(.object-preview > .title):
* UserInterface/Views/ObjectTreeView.css:
(.object-tree.expanded > .title):
Make the expanded object title information 16px tall to match ObjectTree
tree element row heights. This eliminates the floating console message
location from overlapping the first ObjectTree's TreeElement and causing
truncation and other behavior issues (like Context Menu identification).

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226394 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months ago[Attachment Support] Add plumbing for starting a drag with promised blob data
wenson_hsieh@apple.com [Thu, 4 Jan 2018 05:58:03 +0000 (05:58 +0000)]
[Attachment Support] Add plumbing for starting a drag with promised blob data
https://bugs.webkit.org/show_bug.cgi?id=181201

Reviewed by Tim Horton.

Source/WebCore:

Adds logic to allow dragging an attachment element as a file by sending promised blob information to the UI
process. See comments below for more detail.

The only change in behavior is that dragging an attachment element will no longer write web content and injected
bundle data to the pasteboard if the attachment element's file attribute is nonnull. This will cause one
existing WK1 layout test to fail, but will otherwise not affect any attachment editing clients. On iOS,
attachment elements in the Mail viewer can be dragged, but each attachment's file is null, so we fall back to
current behavior; on macOS, Mail currently overrides the drag completely, beginning at -mouseDown:, so this
doesn't make a difference to macOS Mail either.

* editing/Editor.h:
* editing/cocoa/EditorCocoa.mm:
(WebCore::Editor::getPasteboardTypesAndDataForAttachment):

Add a helper method to retrieve an attachment element as web archive data, for moving attachments within the
same document. Also gives the injected editor bundle a chance to supply custom pasteboard types.

* loader/EmptyClients.cpp:
* page/DragClient.h:
(WebCore::DragClient::prepareToDragPromisedBlob):

Add new DragClient methods to send information about a promised blob to the UI process.

* page/DragController.cpp:
(WebCore::DragController::startDrag):

Call dragAttachmentElement when starting a drag on an attachment element.

(WebCore::DragController::dragAttachmentElement):

Try to begin dragging a given attachment element, propagating promised blob information to the client layers.
Returns true iff the attachment is backed by blob data (i.e. the file is nonnull).

* platform/PromisedBlobInfo.h:

Add a list of additional types and data to PromisedBlobInfo. In addition to the promised blob info, this would
allow injected bundle data and other private types alongside the main attachment data on the pasteboard.

Source/WebKit:

Add boilerplate plumbing for PrepareToDragPromisedBlob, which delivers blob promises to the UI process when
dragging, respectively.

* Scripts/webkit/messages.py:
(headers_for_type):
* Shared/WebCoreArgumentCoders.cpp:
(IPC::encodeTypesAndData):
(IPC::decodeTypesAndData):
(IPC::ArgumentCoder<PasteboardWebContent>::encode):
(IPC::ArgumentCoder<PasteboardWebContent>::decode):
(IPC::ArgumentCoder<PasteboardImage>::encode):
(IPC::ArgumentCoder<PasteboardImage>::decode):
(IPC::ArgumentCoder<PromisedBlobInfo>::encode):
(IPC::ArgumentCoder<PromisedBlobInfo>::decode):

Add IPC support PromisedBlobInfo's additionalTypes and additionalData.

(IPC::encodeClientTypesAndData): Deleted.
(IPC::decodeClientTypesAndData): Deleted.

Rename these helper functions and move them to the top of the file.

* UIProcess/Cocoa/WebViewImpl.h:
* UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::prepareToDragPromisedBlob):
* UIProcess/PageClient.h:
(WebKit::PageClient::prepareToDragPromisedBlob):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::prepareToDragPromisedBlob):
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* UIProcess/ios/PageClientImplIOS.h:
* UIProcess/ios/PageClientImplIOS.mm:
(WebKit::PageClientImpl::prepareToDragPromisedBlob):
* UIProcess/ios/WKContentViewInteraction.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _prepareToDragPromisedBlob:]):
* UIProcess/mac/PageClientImplMac.h:
* UIProcess/mac/PageClientImplMac.mm:
(WebKit::PageClientImpl::prepareToDragPromisedBlob):
* WebProcess/WebCoreSupport/WebDragClient.cpp:
(WebKit::WebDragClient::prepareToDragPromisedBlob):
* WebProcess/WebCoreSupport/WebDragClient.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::prepareToDragPromisedBlob):
* WebProcess/WebPage/WebPage.h:

Source/WebKitLegacy/mac:

Minor adjustment to account for a DragClient interface change. See WebCore ChangeLog for more details.

* WebCoreSupport/WebDragClient.h:

LayoutTests:

Remove a WK1 LayoutTest testing drag and drop of an attachment element into a contenteditable. This test no
longer passes because the implementation of attachment dragging on macOS is not yet implemented. Subsequent
patches will test this scenario once again, but as a WK2 macOS drag and drop API test.

* editing/pasteboard/drag-and-drop-attachment-contenteditable-expected.txt: Removed.
* editing/pasteboard/drag-and-drop-attachment-contenteditable.html: Removed.
* platform/gtk/TestExpectations:
* platform/ios/TestExpectations:
* platform/mac-wk2/TestExpectations:
* platform/win/TestExpectations:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226393 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months agoWeb Inspector: RTL - DOM Tree Element selection doesn't work
commit-queue@webkit.org [Thu, 4 Jan 2018 05:57:23 +0000 (05:57 +0000)]
Web Inspector: RTL - DOM Tree Element selection doesn't work
https://bugs.webkit.org/show_bug.cgi?id=181275
<rdar://problem/36290450>

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2018-01-03
Reviewed by Devin Rousso.

* UserInterface/Views/TreeOutline.js:
(WI.TreeOutline.prototype.treeElementFromEvent):
Provide a better explanation for why we are making the `x` adjustment here,
to detect the inner most tree element along the horizontal. Fix the algorithm
for RTL, since the intent is to adjust to the trailing edge of the container
which is on the opposite side in RTL.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226392 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months agoREGRESSION (r212929): WKSnapshotConfiguration may leak an NSNumber when deallocated
ddkilzer@apple.com [Thu, 4 Jan 2018 05:23:54 +0000 (05:23 +0000)]
REGRESSION (r212929): WKSnapshotConfiguration may leak an NSNumber when deallocated
<https://webkit.org/b/181274>

Reviewed by Joseph Pecoraro.

* UIProcess/API/Cocoa/WKSnapshotConfiguration.mm:
(-[WKSnapshotConfiguration dealloc]): Implement method and
release _snapshotWidth.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226391 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months agoRemove the 'resolutionScale' parameter from ImageBufferDataCG get/putBytes
simon.fraser@apple.com [Thu, 4 Jan 2018 04:39:33 +0000 (04:39 +0000)]
Remove the 'resolutionScale' parameter from ImageBufferDataCG get/putBytes
https://bugs.webkit.org/show_bug.cgi?id=181268

Reviewed by Alex Christensen.

These functions were always called with resolutionScale=1.

* 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):
(WebCore::affineWarpBufferData): Deleted.
* platform/graphics/cg/ImageBufferDataCG.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226390 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months agoStorage Access API: Refactor XPC for access removal to go straight from the web proce...
wilander@apple.com [Thu, 4 Jan 2018 04:21:58 +0000 (04:21 +0000)]
Storage Access API: Refactor XPC for access removal to go straight from the web process to the network process
https://bugs.webkit.org/show_bug.cgi?id=181270
<rdar://problem/36289544>

Reviewed by Alex Christensen.

Source/WebCore:

No new tests. Existing test re-enabled.

This change refactors how the web process tells the network process
to remove storage access. Previously, this was done over the UI process
just like requests for storage access. But since no further reasoning
is needed, the message should go straight from the web process to the
network process for performance reasons and to minimize the risk of a
race.

As a consequence, the XPC code for storage access removal in the UI
process is deleted.

* platform/network/cf/NetworkStorageSessionCFNet.cpp:
(WebCore::NetworkStorageSession::cookieStoragePartition const):
    Removes the storageAccessAPIEnabled check since the flag
    doesn't get propagated when the network process is created.
    Figuring this out will take some work which is unnecessary
    when we already gate access to the feature in Document.idl.

Source/WebKit:

This change refactors how the web process tells the network process
to remove storage access. Previously, this was done over the UI process
just like requests for storage access. But since no further reasoning
is needed, the message should go straight from the web process to the
network process for performance reasons and to minimize the risk of a
race.

As a consequence, the XPC code for storage access removal in the UI
process is deleted.

* NetworkProcess/NetworkConnectionToWebProcess.cpp:
(WebKit::NetworkConnectionToWebProcess::removeStorageAccess):
* NetworkProcess/NetworkConnectionToWebProcess.h:
* NetworkProcess/NetworkConnectionToWebProcess.messages.in:
* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::removeStorageAccess): Deleted.
* NetworkProcess/NetworkProcess.h:
* NetworkProcess/NetworkProcess.messages.in:
* UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::removeStorageAccess): Deleted.
* UIProcess/Network/NetworkProcessProxy.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::requestStorageAccess):
(WebKit::WebPageProxy::removeStorageAccess): Deleted.
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::requestStorageAccess):
(WebKit::WebsiteDataStore::removeStorageAccess): Deleted.
* UIProcess/WebsiteData/WebsiteDataStore.h:
* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::detachedFromParent2):
(WebKit::WebFrameLoaderClient::dispatchWillChangeDocument):

LayoutTests:

This change refactors how the web process tells the network process
to remove storage access. Previously, this was done over the UI process
just like requests for storage access. But since no further reasoning
is needed, the message should go straight from the web process to the
network process for performance reasons and to minimize the risk of a
race.

As a consequence, the XPC code for storage access removal in the UI
process is deleted.

* platform/mac-wk2/TestExpectations:
    Re-enables the test for this code path.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226389 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months ago[Win] WebKitLegacy compile error.
pvollan@apple.com [Thu, 4 Jan 2018 04:21:29 +0000 (04:21 +0000)]
[Win] WebKitLegacy compile error.
https://bugs.webkit.org/show_bug.cgi?id=181257
rdar://problem/36273774

Reviewed by Alex Christensen.

The include file 'pal/text/UnencodableHandling.h' is not found. Add folder to list of forwarding
headers directories.

* pal/PlatformWin.cmake:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226388 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months agocom.apple.WebKit.Networking crash in com.apple.Foundation: -[__NSOperationInternal...
ddkilzer@apple.com [Thu, 4 Jan 2018 04:18:53 +0000 (04:18 +0000)]
com.apple.WebKit.Networking crash in com.apple.Foundation: -[__NSOperationInternal _start:]
<https://webkit.org/b/181272>
<rdar://problem/35657310>

Reviewed by Alex Christensen.

* NetworkProcess/cocoa/NetworkSessionCocoa.mm:
(downgradeRequest): Remove unnecessary -autorelease.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226387 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months agoDisable SharedArrayBuffers from Web API
msaboff@apple.com [Thu, 4 Jan 2018 01:53:41 +0000 (01:53 +0000)]
Disable SharedArrayBuffers from Web API
https://bugs.webkit.org/show_bug.cgi?id=181266

Reviewed by Saam Barati.

JSTests:

Disabled SharedArrayBuffer tests.

* stress/SharedArrayBuffer-opt.js:
* stress/SharedArrayBuffer.js:
* stress/array-buffer-byte-length.js:
* stress/atomics-add-uint32.js:
* stress/atomics-known-int-use.js:
* stress/atomics-neg-zero.js:
* stress/atomics-store-return.js:
* stress/lars-sab-workers.js:
* stress/regress-159779-1.js:
* stress/regress-159779-2.js:
* stress/regress-170473.js:
* test262.yaml:

Source/JavaScriptCore:

Removed SharedArrayBuffer prototype and structure from GlobalObject creation
to disable.

* runtime/JSGlobalObject.cpp:
(JSC::JSGlobalObject::init):
(JSC::JSGlobalObject::visitChildren):
* runtime/JSGlobalObject.h:
(JSC::JSGlobalObject::arrayBufferPrototype const):
(JSC::JSGlobalObject::arrayBufferStructure const):

Source/WTF:

Turn off SharedArrayBuffers using a compile time flag ENABLE_SHARED_ARRAY_BUFFER.

* wtf/Platform.h:

LayoutTests:

Disabled SharedArrayBuffer tests.

* TestExpectations:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226386 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months ago2018-01-03 James Craig <jcraig@apple.com>
jcraig@apple.com [Thu, 4 Jan 2018 01:44:15 +0000 (01:44 +0000)]
2018-01-03  James Craig  <jcraig@apple.com>

        AX: when invert colors is on, double-invert certain media elements in UserAgentStyleSheet
        https://bugs.webkit.org/show_bug.cgi?id=168447
        <rdar://problem/30559874>

        Reviewed by Simon Fraser.

        Double-invert video when platform 'invert colors' setting is enabled. Behavior matches
        current 'Smart Invert' feature of Safari Reader on macOS/iOS and other iOS native apps.

        Tests: accessibility/smart-invert-reference.html
               accessibility/smart-invert.html

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226385 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months agoAdd "noInline" to $vm
msaboff@apple.com [Thu, 4 Jan 2018 00:55:41 +0000 (00:55 +0000)]
Add "noInline" to $vm
https://bugs.webkit.org/show_bug.cgi?id=181265

Reviewed by Mark Lam.

This would be useful for web based tests.

* tools/JSDollarVM.cpp:
(JSC::getExecutableForFunction):
(JSC::functionNoInline):
(JSC::JSDollarVM::finishCreation):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226384 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months agoLayoutTest http/tests/media/media-stream/disconnected-frame.html to consistently...
commit-queue@webkit.org [Thu, 4 Jan 2018 00:51:00 +0000 (00:51 +0000)]
LayoutTest http/tests/media/media-stream/disconnected-frame.html to consistently fail an assertion: !m_adoptionIsRequired
https://bugs.webkit.org/show_bug.cgi?id=181264

Patch by Youenn Fablet <youenn@apple.com> on 2018-01-03
Reviewed by Eric Carlson.

Covered by http/tests/media/media-stream/disconnected-frame.html not crashing anymore in Debug builds.
Calling suspendIfNeeded in create method instead of constructor.

* Modules/mediastream/UserMediaRequest.cpp:
(WebCore::UserMediaRequest::create):
(WebCore::UserMediaRequest::UserMediaRequest):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226383 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months agoRemove DeprecatedCSSOMValue::equals
antti@apple.com [Thu, 4 Jan 2018 00:49:48 +0000 (00:49 +0000)]
Remove DeprecatedCSSOMValue::equals
https://bugs.webkit.org/show_bug.cgi?id=181241

Reviewed by Zalan Bujtas.

This is dead code.

* css/DeprecatedCSSOMValue.cpp:
(WebCore::compareCSSOMValues): Deleted.
(WebCore::DeprecatedCSSOMValue::equals const): Deleted.
* css/DeprecatedCSSOMValue.h:
(WebCore::DeprecatedCSSOMValue::operator== const): Deleted.
(WebCore::DeprecatedCSSOMComplexValue::equals const): Deleted.
* css/DeprecatedCSSOMValueList.cpp:
(WebCore::DeprecatedCSSOMValueList::equals const): Deleted.
* css/DeprecatedCSSOMValueList.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226382 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months agoRemove unnecessary flushing of Butterfly pointer in functionCpuClflush()
msaboff@apple.com [Thu, 4 Jan 2018 00:47:15 +0000 (00:47 +0000)]
Remove unnecessary flushing of Butterfly pointer in functionCpuClflush()
https://bugs.webkit.org/show_bug.cgi?id=181263

Reviewed by Mark Lam.

Flushing the butterfly pointer provides no benefit and slows this function.

* tools/JSDollarVM.cpp:
(JSC::functionCpuClflush):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226381 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months agoWeb Inspector: Find banner sometimes does not work (when already populated and shown...
commit-queue@webkit.org [Thu, 4 Jan 2018 00:46:52 +0000 (00:46 +0000)]
Web Inspector: Find banner sometimes does not work (when already populated and shown for first time on resource)
https://bugs.webkit.org/show_bug.cgi?id=181255
<rdar://problem/36248855>

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2018-01-03
Reviewed by Matt Baker.

* UserInterface/Views/TextEditor.js:
(WI.TextEditor.prototype.set string):
Defer any early searches until the initial content of a TextEditor has been set.
Such searches can happen when the FindBanner already has content when a
ContentView is first opened and needs to load its content from the backend.
Further, even though the content may be loaded from the backend before the
search results, microtask hops might cause the content to get to the TextEditor
after the search results.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226380 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months agoFix BytecodeParser op_catch assert to work with useProfiler=1
sbarati@apple.com [Thu, 4 Jan 2018 00:44:37 +0000 (00:44 +0000)]
Fix BytecodeParser op_catch assert to work with useProfiler=1
https://bugs.webkit.org/show_bug.cgi?id=181260

Reviewed by Keith Miller.

op_catch was asserting that the current block was empty. This is only true
if the profiler isn't enabled. When the profiler is enabled, we will
insert a CountExecution node before each bytecode. This patch fixes the
assert to work with the profiler.

* dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::parseBlock):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226379 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months agofilter-build-webkit filters out useful compiler error lines
simon.fraser@apple.com [Thu, 4 Jan 2018 00:42:21 +0000 (00:42 +0000)]
filter-build-webkit filters out useful compiler error lines
https://bugs.webkit.org/show_bug.cgi?id=179864

Reviewed by Tim Horton.

Don't filter out lines that contain information about build errors by always showing lines
after a line that contains "note:" or "error:".

* Scripts/filter-build-webkit:
(shouldShowSubsequentLine):
(shouldIgnoreLine):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226378 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months ago[ESNext][BigInt] Failing test stress/big-int-constructor-oom.js into MIPS
ticaiolima@gmail.com [Thu, 4 Jan 2018 00:32:57 +0000 (00:32 +0000)]
[ESNext][BigInt] Failing test stress/big-int-constructor-oom.js into MIPS
https://bugs.webkit.org/show_bug.cgi?id=181258

Reviewed by Antonio Gomes.

* stress/big-int-constructor-gc.js:
* stress/big-int-constructor-oom.js:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226377 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months agoREGRESSION(r226366): [GTK] Broke TestBackForwardList and TestWebKitWebView
mcatanzaro@igalia.com [Thu, 4 Jan 2018 00:32:37 +0000 (00:32 +0000)]
REGRESSION(r226366): [GTK] Broke TestBackForwardList and TestWebKitWebView
https://bugs.webkit.org/show_bug.cgi?id=173915

Unreviewed follow-up. Fix /webkit2/WebKitWebView/session-state-with-form-data and
/webkit2/WebKitWebView/submit-form. The form ID may be NULL, but we can't put NULL into a
GVariant unless we use maybe types, and maybe types are incompatible with D-Bus. So use an
empty string in this case.

* TestWebKitAPI/Tests/WebKitGLib/WebExtensionTest.cpp:
(emitFormSubmissionEvent):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226376 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months agoUpdate expectations for some range tests.
ap@apple.com [Wed, 3 Jan 2018 23:52:03 +0000 (23:52 +0000)]
Update expectations for some range tests.
Cf. https://bugs.webkit.org/show_bug.cgi?id=144682 and rdar://problem/34716163

* platform/ios-wk1/TestExpectations:
* platform/mac-wk1/TestExpectations:
* platform/mac/TestExpectations:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226375 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months agoREGRESSION: Web Inspector: Debugger tab doesn't restore selected resource on reload
commit-queue@webkit.org [Wed, 3 Jan 2018 22:46:33 +0000 (22:46 +0000)]
REGRESSION: Web Inspector: Debugger tab doesn't restore selected resource on reload
https://bugs.webkit.org/show_bug.cgi?id=181253
<rdar://problem/36280564>

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2018-01-03
Reviewed by Matt Baker.

* UserInterface/Views/DebuggerSidebarPanel.js:
(WI.DebuggerSidebarPanel.prototype.restoreStateFromCookie):
Add braces to ensure the trailing else is actually trailing the outer
chain as it was intended to be.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226374 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months agofeLighting is broken with primitiveUnits="objectBoundingBox"
simon.fraser@apple.com [Wed, 3 Jan 2018 21:56:00 +0000 (21:56 +0000)]
feLighting is broken with primitiveUnits="objectBoundingBox"
https://bugs.webkit.org/show_bug.cgi?id=181197

Reviewed by Tim Horton.
Source/WebCore:

With <filter primitiveUnits="objectBoundingBox"> we need to convert the coordinates
of fePointLights and feSpotLights into user space coordinates. Following
https://www.w3.org/TR/SVG/filters.html#FilterElementPrimitiveUnitsAttribute
this is done by treating them as fractions of the bounding box on the referencing
element, with treatment for z following https://www.w3.org/TR/SVG/coords.html#Units_viewport_percentage

To do this, store the bounds of the referencing elemenet on SVGFilterBuilder as
targetBoundingBox, and store the primitiveUnits type. Then do the conversion of lighting
coordinates in SVGFESpecularLightingElement::build() and SVGFEDiffuseLightingElement::build().

Remove SVGFELightElement::findLightSource(), since we need to be able to pass the SVGFilterBuilder
to the lightSource() function so hoist the code up.

Tests: svg/filters/feDiffuseLighting-fePointLight-primitiveUnits-objectBoundingBox-expected.svg
       svg/filters/feDiffuseLighting-fePointLight-primitiveUnits-objectBoundingBox.svg
       svg/filters/feDiffuseLighting-feSpotLight-primitiveUnits-objectBoundingBox-expected.svg
       svg/filters/feDiffuseLighting-feSpotLight-primitiveUnits-objectBoundingBox.svg
       svg/filters/feSpecularLighting-fePointLight-primitiveUnits-objectBoundingBox-expected.svg
       svg/filters/feSpecularLighting-fePointLight-primitiveUnits-objectBoundingBox.svg

* rendering/svg/RenderSVGResourceFilter.cpp:
(WebCore::RenderSVGResourceFilter::buildPrimitives const):
* svg/SVGFEDiffuseLightingElement.cpp:
(WebCore::SVGFEDiffuseLightingElement::build):
* svg/SVGFEDistantLightElement.cpp:
(WebCore::SVGFEDistantLightElement::lightSource const):
* svg/SVGFEDistantLightElement.h:
* svg/SVGFELightElement.cpp:
(WebCore::SVGFELightElement::findLightSource): Deleted.
* svg/SVGFELightElement.h:
* svg/SVGFEPointLightElement.cpp:
(WebCore::SVGFEPointLightElement::lightSource const):
* svg/SVGFEPointLightElement.h:
* svg/SVGFESpecularLightingElement.cpp:
(WebCore::SVGFESpecularLightingElement::build):
* svg/SVGFESpotLightElement.cpp:
(WebCore::SVGFESpotLightElement::lightSource const):
* svg/SVGFESpotLightElement.h:
* svg/graphics/filters/SVGFilterBuilder.h:
(WebCore::SVGFilterBuilder::setTargetBoundingBox):
(WebCore::SVGFilterBuilder::targetBoundingBox const):
(WebCore::SVGFilterBuilder::primitiveUnits const):
(WebCore::SVGFilterBuilder::setPrimitiveUnits):

LayoutTests:

Ref tests with primitiveUnits=objectBoundingBox for feSpotLight and fePointLight.

* svg/filters/feDiffuseLighting-fePointLight-primitiveUnits-objectBoundingBox-expected.svg: Added.
* svg/filters/feDiffuseLighting-fePointLight-primitiveUnits-objectBoundingBox.svg: Added.
* svg/filters/feDiffuseLighting-feSpotLight-primitiveUnits-objectBoundingBox-expected.svg: Added.
* svg/filters/feDiffuseLighting-feSpotLight-primitiveUnits-objectBoundingBox.svg: Added.
* svg/filters/feSpecularLighting-fePointLight-primitiveUnits-objectBoundingBox-expected.svg: Added.
* svg/filters/feSpecularLighting-fePointLight-primitiveUnits-objectBoundingBox.svg: Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226373 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months agoCrash beneath CSSValue::equals @ csas.cz
antti@apple.com [Wed, 3 Jan 2018 21:21:09 +0000 (21:21 +0000)]
Crash beneath CSSValue::equals @ csas.cz
https://bugs.webkit.org/show_bug.cgi?id=181243
<rdar://problem/35990826>

Reviewed by Alex Christensen.

Source/WebCore:

Test: fast/text/oblique-degree-equals-crash.html

* css/CSSFontStyleValue.cpp:
(WebCore::CSSFontStyleValue::equals const):

Null check both oblique pointers.

LayoutTests:

* fast/text/oblique-degree-equals-crash-expected.txt: Added.
* fast/text/oblique-degree-equals-crash.html: Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226372 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months agoWeb Inspector: Slow open time enumerating system fonts (FontCache::systemFontFamilies)
commit-queue@webkit.org [Wed, 3 Jan 2018 20:17:12 +0000 (20:17 +0000)]
Web Inspector: Slow open time enumerating system fonts (FontCache::systemFontFamilies)
https://bugs.webkit.org/show_bug.cgi?id=180979
<rdar://problem/36146670>

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2018-01-03
Reviewed by Matt Baker.

Source/WebCore:

* platform/graphics/cocoa/FontCacheCoreText.cpp:
(fontNameIsSystemFont):
(WebCore::FontCache::systemFontFamilies):
Switch to the original Mac algorithm before r180979 that uses
CTFontManagerCopyAvailableFontFamilyNames. Previously this wasn't
available on iOS but now it is. This is a performance improvement on
both platforms, but significantly so on macOS. It also finds more,
valid, family names.

LayoutTests:

* inspector/css/get-system-fonts.html:
Cleanup the test a bit.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226371 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months ago[macOS] Constant frame dropping during Flash video playback
bfulgham@apple.com [Wed, 3 Jan 2018 19:47:06 +0000 (19:47 +0000)]
[macOS] Constant frame dropping during Flash video playback
https://bugs.webkit.org/show_bug.cgi?id=181249
<rdar://problem/34843448>

Reviewed by Eric Carlson.

Review of logs during jerky flash video playback shows a few IOKit properties are being blocked by the sandbox,
which prevents some high-efficiency codecs from being used. Add 'AppleGVAKeyDoesNotExist', 'IODVDBundleName', and
'IOGVA*Encode' to the whitelist.

* PluginProcess/mac/com.apple.WebKit.plugin-common.sb.in:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226369 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months agoASSERTION FAILED: !source || is<Target>(*source) in CoordinatedGraphicsLayer::removeF...
mcatanzaro@igalia.com [Wed, 3 Jan 2018 18:53:17 +0000 (18:53 +0000)]
ASSERTION FAILED: !source || is<Target>(*source) in CoordinatedGraphicsLayer::removeFromParent
https://bugs.webkit.org/show_bug.cgi?id=166568

Reviewed by Simon Fraser.

When a GraphicsLayer has a mask layer, it fails to properly unparent the mask layer before
it is destroyed. This leaves the mask layer with a dangling parent pointer. Fix it, while
taking care not to introduce yet another virtual function call during the execution of the
destructor.

* platform/graphics/GraphicsLayer.cpp:
(WebCore::GraphicsLayer::willBeDestroyed):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226368 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months ago[Win][Debug] testapi link error.
pvollan@apple.com [Wed, 3 Jan 2018 18:46:26 +0000 (18:46 +0000)]
[Win][Debug] testapi link error.
https://bugs.webkit.org/show_bug.cgi?id=181247
<rdar://problem/36166729>

Reviewed by Brent Fulgham.

Do not set the runtime library compile flag for C files, it is already set to the correct value.

* shell/PlatformWin.cmake:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226367 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months ago[GTK] Add web process API to detect when form is submitted via JavaScript
mcatanzaro@igalia.com [Wed, 3 Jan 2018 18:36:24 +0000 (18:36 +0000)]
[GTK] Add web process API to detect when form is submitted via JavaScript
https://bugs.webkit.org/show_bug.cgi?id=173915

Reviewed by Carlos Garcia Campos.

Source/WebKit:

Epiphany relies on the DOM submit event to detect when a form has been submitted. However,
for historical reasons, the submit event is not emitted when a form is submitted by
JavaScript. It is therefore not currently possible for a web browser to reliably detect form
submission and not possible to implement a robust password storage feature. In order to
avoid this problem, this patch adds a new WebKitWebPage signal, will-submit-form, that
browsers can use in preference to a DOM event listener.

Unfortunately, this signal is not available for WPE because it depends on the DOM API.

There are two submission events, WEBKIT_FORM_SUBMISSION_WILL_SEND_DOM_EVENT and
WEBKIT_FORM_SUBMISSION_WILL_COMPLETE. WEBKIT_FORM_SUBMISSION_WILL_SEND_DOM_EVENT
occurs earlier than WEBKIT_FORM_SUBMISSION_WILL_COMPLETE and can be used to retrieve form
values before websites receive the DOM submit event. This is useful as some websites like
to delete form values right before a submit would normally happen in order to attempt to
defeat browser password managers. There are two tricks to note: JavaScript can cancel form
submission immediately after this event occurs (by returning false in an onsubmit handler),
and, for historical reasons, this event will not occur at all when form submission is
triggered by JavaScript. WEBKIT_FORM_SUBMISSION_WILL_COMPLETE occurs next, and is more
straightforward: it is always emitted when a form is about to be submitted, when it is too
late to cancel.

The recommended way to reliably retrieve password form values would be to watch for both
events, use the form value detected in WEBKIT_FORM_SUBMISSION_WILL_SEND_DOM_EVENT
if that event is emitted, and use the value detected later in
WEBKIT_FORM_SUBMISSION_WILL_COMPLETE otherwise.

Since one of the signal arguments is an enum, we now have to run glib-mkenums for the web
process API. And that has resulted in this patch also adding GType goo for
WebKitConsoleMessageLevel and WebKitConsoleMessageSource that was previously missing. Any
applications that for some unlikely reason want to use these enums in properties or signals
will be happy.

* PlatformGTK.cmake:
* UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt:
* WebProcess/InjectedBundle/API/glib/WebKitWebPage.cpp:
(webkit_web_page_class_init):
* WebProcess/InjectedBundle/API/gtk/WebKitWebPage.h:
* WebProcess/InjectedBundle/API/gtk/WebKitWebProcessEnumTypes.cpp.template: Added.
* WebProcess/InjectedBundle/API/gtk/WebKitWebProcessEnumTypes.h.template: Added.

Tools:

Test it.

* TestWebKitAPI/Tests/WebKitGLib/TestWebExtensions.cpp:
(FormSubmissionTest::FormSubmissionTest):
(FormSubmissionTest::~FormSubmissionTest):
(FormSubmissionTest::testFormSubmissionResult):
(FormSubmissionTest::willSendDOMEventCallback):
(FormSubmissionTest::willCompleteCallback):
(FormSubmissionTest::runJavaScriptAndWaitUntilFormSubmitted):
(testWebExtensionFormSubmissionSteps):
(beforeAll):
* TestWebKitAPI/Tests/WebKitGLib/WebExtensionTest.cpp:
(DelayedSignal::DelayedSignal):
(emitFormSubmissionEvent):
(handleFormSubmissionCallback):
(willSubmitFormCallback):
(pageCreatedCallback):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226366 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months agoUnreviewed, skip broken API test /webkit2/WebKitWebsiteData/databases
mcatanzaro@igalia.com [Wed, 3 Jan 2018 18:21:06 +0000 (18:21 +0000)]
Unreviewed, skip broken API test /webkit2/WebKitWebsiteData/databases
https://bugs.webkit.org/show_bug.cgi?id=181251

* Scripts/run-gtk-tests:
(GtkTestRunner):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226365 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months agoUnreviewed, skip broken API test /webkit2/WebKitWebsiteData/ephemeral
mcatanzaro@igalia.com [Wed, 3 Jan 2018 18:11:49 +0000 (18:11 +0000)]
Unreviewed, skip broken API test /webkit2/WebKitWebsiteData/ephemeral
https://bugs.webkit.org/show_bug.cgi?id=181136

* Scripts/run-gtk-tests:
(GtkTestRunner):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226364 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months agoSVG lighting filter lights are in the wrong coordinate system
simon.fraser@apple.com [Wed, 3 Jan 2018 17:58:05 +0000 (17:58 +0000)]
SVG lighting filter lights are in the wrong coordinate system
https://bugs.webkit.org/show_bug.cgi?id=181147

Reviewed by Zalan Bujtas.

Source/WebCore:

Point and spot light coordinates weren't being converted into buffer-relative
coordinates before being fed into the lighting math, resulting in incorrect light
rendering on Retina devices, and when the filter primitive region was clipped.

Fix by storing absoluteUnclippedSubregion on FilterEffect, which allows us to map
lighting points from user space coordinates into the coordinates of the buffer being
used for rendering. Also scale the light z coordinate by doing a dummy point mapping in x.

Rename members of PointLightSource and SpotLightSource to make it clear which coordinate
system they are in.

Tests include HiDPI tests.

Tests: svg/filters/fePointLight-coordinates-expected.svg
       svg/filters/fePointLight-coordinates.svg
       svg/filters/feSpotLight-coordinates-expected.svg
       svg/filters/feSpotLight-coordinates.svg
       svg/filters/hidpi/fePointLight-coordinates-expected.svg
       svg/filters/hidpi/fePointLight-coordinates.svg
       svg/filters/hidpi/feSpotLight-coordinates-expected.svg
       svg/filters/hidpi/feSpotLight-coordinates.svg

* platform/graphics/FloatPoint3D.h: Make it easy to get and set the X and Y coords as a FloatPoint.
(WebCore::FloatPoint3D::xy const):
(WebCore::FloatPoint3D::setXY):
* platform/graphics/GeometryUtilities.cpp:
(WebCore::mapPoint):
(WebCore::mapRect):
* platform/graphics/GeometryUtilities.h: Helper to make a point between rects.
* platform/graphics/filters/DistantLightSource.cpp:
(WebCore::DistantLightSource::initPaintingData):
* platform/graphics/filters/DistantLightSource.h:
* platform/graphics/filters/FELighting.cpp:
(WebCore::FELighting::drawLighting):
* platform/graphics/filters/FilterEffect.cpp:
(WebCore::FilterEffect::mapPointFromUserSpaceToBuffer const):
* platform/graphics/filters/FilterEffect.h:
(WebCore::FilterEffect::setUnclippedAbsoluteSubregion):
* platform/graphics/filters/LightSource.h:
* platform/graphics/filters/PointLightSource.cpp:
(WebCore::PointLightSource::initPaintingData):
(WebCore::PointLightSource::computePixelLightingData const):
(WebCore::PointLightSource::setX):
(WebCore::PointLightSource::setY):
(WebCore::PointLightSource::setZ):
* platform/graphics/filters/PointLightSource.h:
(WebCore::PointLightSource::position const):
(WebCore::PointLightSource::PointLightSource):
* platform/graphics/filters/SpotLightSource.cpp:
(WebCore::SpotLightSource::initPaintingData):
(WebCore::SpotLightSource::computePixelLightingData const):
(WebCore::SpotLightSource::setX):
(WebCore::SpotLightSource::setY):
(WebCore::SpotLightSource::setZ):
(WebCore::SpotLightSource::setPointsAtX):
(WebCore::SpotLightSource::setPointsAtY):
(WebCore::SpotLightSource::setPointsAtZ):
* platform/graphics/filters/SpotLightSource.h:
(WebCore::SpotLightSource::position const):
(WebCore::SpotLightSource::direction const):
(WebCore::SpotLightSource::SpotLightSource):
* rendering/svg/RenderSVGResourceFilter.cpp:
(WebCore::RenderSVGResourceFilter::buildPrimitives const):
* rendering/svg/RenderSVGResourceFilterPrimitive.cpp:
(WebCore::RenderSVGResourceFilterPrimitive::determineFilterPrimitiveSubregion):

LayoutTests:

* svg/filters/fePointLight-coordinates-expected.svg: Added.
* svg/filters/fePointLight-coordinates.svg: Added.
* svg/filters/feSpotLight-coordinates-expected.svg: Added.
* svg/filters/feSpotLight-coordinates.svg: Added.
* svg/filters/hidpi/fePointLight-coordinates-expected.svg: Added.
* svg/filters/hidpi/fePointLight-coordinates.svg: Added.
* svg/filters/hidpi/feSpotLight-coordinates-expected.svg: Added.
* svg/filters/hidpi/feSpotLight-coordinates.svg: Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226363 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months agoInlining of a function that ends in op_unreachable crashes
rmorisset@apple.com [Wed, 3 Jan 2018 17:35:35 +0000 (17:35 +0000)]
Inlining of a function that ends in op_unreachable crashes
https://bugs.webkit.org/show_bug.cgi?id=181027

Reviewed by Filip Pizlo.

JSTests:

* stress/inlining-unreachable.js: Added.
(bar):
(baz):
(i.catch):

Source/JavaScriptCore:

* dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::allocateTargetableBlock):
(JSC::DFG::ByteCodeParser::inlineCall):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226362 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months agoSelect service worker for documents with data/blob URLS
commit-queue@webkit.org [Wed, 3 Jan 2018 17:32:31 +0000 (17:32 +0000)]
Select service worker for documents with data/blob URLS
https://bugs.webkit.org/show_bug.cgi?id=181213

Patch by Youenn Fablet <youenn@apple.com> on 2018-01-03
Reviewed by Alex Christensen.

Source/WebCore:

Covered by updated test.

Reusing the service worker of the parent for blob/data URL documents.

* loader/DocumentLoader.cpp:
(WebCore::isLocalURL):
(WebCore::DocumentLoader::commitData):

LayoutTests:

* http/tests/workers/service/serviceworkerclients-claim.https-expected.txt:
* http/tests/workers/service/serviceworkerclients-claim.https.html:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226361 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months ago[GTK] Remove crash annotation for createImageBitmap-invalid-args.html.
Ms2ger@igalia.com [Wed, 3 Jan 2018 17:28:37 +0000 (17:28 +0000)]
[GTK] Remove crash annotation for createImageBitmap-invalid-args.html.
https://bugs.webkit.org/show_bug.cgi?id=181238

Unreviewed test gardening.

I forgot to remove this when fixing the bug.

* platform/gtk/TestExpectations:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226360 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months agoUnreviewed, rolling out r226352.
ryanhaddad@apple.com [Wed, 3 Jan 2018 17:05:12 +0000 (17:05 +0000)]
Unreviewed, rolling out r226352.

Breaks Sierra and El Capitan builds.

Reverted changeset:

"Web Inspector: Slow open time enumerating system fonts
(FontCache::systemFontFamilies)"
https://bugs.webkit.org/show_bug.cgi?id=180979
https://trac.webkit.org/changeset/226352

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226359 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months ago[GStreamer] The bus synchronous handler should be in the base player class
philn@webkit.org [Wed, 3 Jan 2018 11:01:32 +0000 (11:01 +0000)]
[GStreamer] The bus synchronous handler should be in the base player class
https://bugs.webkit.org/show_bug.cgi?id=181237

Reviewed by Carlos Garcia Campos.

Because this is where video rendering is handled.

No new tests, this is only a refactoring.

* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::createGSTPlayBin):
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
(WebCore::MediaPlayerPrivateGStreamerBase::setPipeline):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226358 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months ago[GStreamer] move MediaSample implementation out of mse/
philn@webkit.org [Wed, 3 Jan 2018 10:58:21 +0000 (10:58 +0000)]
[GStreamer] move MediaSample implementation out of mse/
https://bugs.webkit.org/show_bug.cgi?id=179165

Reviewed by Carlos Garcia Campos.

This module isn't specific to MSE and can potentially be reused
elsewhere, for WebRTC for instance. Additionally the
::platformSample() method was implemented and the code was cleaned up.

* platform/GStreamer.cmake:
* platform/MediaSample.h:
* platform/graphics/gstreamer/GStreamerMediaSample.cpp: Renamed from Source/WebCore/platform/graphics/gstreamer/mse/GStreamerMediaSample.cpp.
(WebCore::GStreamerMediaSample::platformSample):
* platform/graphics/gstreamer/GStreamerMediaSample.h: Renamed from Source/WebCore/platform/graphics/gstreamer/mse/GStreamerMediaSample.h.
* platform/graphics/gstreamer/mse/PlaybackPipeline.cpp:
(WebCore::PlaybackPipeline::enqueueSample):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226357 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months agoUnreviewed. Fix resource load stats tests on GLib based ports after r226355.
carlosgc@webkit.org [Wed, 3 Jan 2018 10:05:06 +0000 (10:05 +0000)]
Unreviewed. Fix resource load stats tests on GLib based ports after r226355.

The monitor can be created in the work queue thread too.

* platform/glib/FileMonitorGLib.cpp:
(WebCore::FileMonitor::FileMonitor):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226356 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months ago[GTK] Crash destroying WebCore::FileMonitor
carlosgc@webkit.org [Wed, 3 Jan 2018 08:23:29 +0000 (08:23 +0000)]
[GTK] Crash destroying WebCore::FileMonitor
https://bugs.webkit.org/show_bug.cgi?id=181138

Reviewed by Michael Catanzaro.

Source/WebCore:

Ensure that platform file monitor is always created and destroyed in the work queue thread synchronously.

* platform/FileMonitor.h:
* platform/glib/FileMonitorGLib.cpp:
(WebCore::FileMonitor::FileMonitor):
(WebCore::FileMonitor::~FileMonitor):
(WebCore::FileMonitor::didChange):

LayoutTests:

Remove test expectations associated to this bug.

* platform/gtk/TestExpectations:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226355 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months agoUnreviewed. Really fix plugin process after r226327.
carlosgc@webkit.org [Wed, 3 Jan 2018 08:18:13 +0000 (08:18 +0000)]
Unreviewed. Really fix plugin process after r226327.

* PluginProcess/unix/PluginProcessMainUnix.cpp:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226354 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months ago[macOS, iOS] Adopt new secure coding APIs in WebKit
bfulgham@apple.com [Wed, 3 Jan 2018 05:10:37 +0000 (05:10 +0000)]
[macOS, iOS] Adopt new secure coding APIs in WebKit
https://bugs.webkit.org/show_bug.cgi?id=181085
<rdar://problem/34837397>

Reviewed by Tim Horton.

Source/WebCore/PAL:

Add a new helper function to allow WebKit code to use NSSecureCoding in more
places when the underlying operating system supports it.

* pal/spi/cocoa/NSKeyedArchiverSPI.h:
(decodeObjectOfClassForKeyFromCoder): New wrapper method.

Source/WebKit:

Update WebKit code to use NSSecureCoding when the underlying operating system supports it. Use new
wrapper functions so the same code can be built on all supported OS releases, while enabling
seure coding when possible.

Note that NSView-based classes cannot be migrated at present due to AppKit not supporting NSSecureCoding
in its class hierarchy.

Tested by exising TestWebKitAPI tests for Coding and data transfer.

* Platform/ios/AccessibilityIOS.mm:
(WebKit::newAccessibilityRemoteToken): Encode using NSSecureCoding.
* UIProcess/API/Cocoa/WKPreferences.h:
* UIProcess/API/Cocoa/WKPreferences.mm:
(+[WKPreferences supportsSecureCoding]): Added to enable NSSecureCoding.
* UIProcess/API/Cocoa/WKProcessPool.h:
* UIProcess/API/Cocoa/WKProcessPool.mm:
(+[WKProcessPool supportsSecureCoding]): Ditto.
* UIProcess/API/Cocoa/WKUserContentController.h:
* UIProcess/API/Cocoa/WKUserContentController.mm:
(+[WKUserContentController supportsSecureCoding]): Ditto.
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView initWithCoder:]): Use coding initialization that supports secure coding if
it is available in the supplied class.
* UIProcess/API/Cocoa/WKWebViewConfiguration.h:
* UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
(+[WKWebViewConfiguration supportsSecureCoding]): Added to enable NSSecureCoding.
(-[WKWebViewConfiguration initWithCoder:]): Use secure coding when possible.
* UIProcess/API/Cocoa/WKWebsiteDataStore.h:
* UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
(+[WKWebsiteDataStore supportsSecureCoding]): Added to enable NSSecureCoding.
* UIProcess/API/Cocoa/_WKApplicationManifest.h:
* UIProcess/API/Cocoa/_WKApplicationManifest.mm:
(+[_WKApplicationManifest supportsSecureCoding]): Added to enable NSSecureCoding.
(-[_WKApplicationManifest initWithCoder:]): Use secure coding when possible.

Tools:

Update API tests to use secure coding wherever possible. Currently, NSView/UIView-based classes are not
capable of supporting NSSecureCoding, so pass through the current coding routines.

* TestWebKitAPI/Tests/WebKitCocoa/ApplicationManifest.mm: Updated for NSSecureCoding.
* TestWebKitAPI/Tests/WebKitCocoa/Coding.mm:
(encodeAndDecode): Check if class supports the NSSecureCoding protocol and use non-secure coding
routines if necessary.
(TEST): Updated for NSSecureCoding.
* TestWebKitAPI/Tests/mac/EarlyKVOCrash.mm:
(TestWebKitAPI::TEST): Updated for NSSecureCoding.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226353 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months agoWeb Inspector: Slow open time enumerating system fonts (FontCache::systemFontFamilies)
joepeck@webkit.org [Wed, 3 Jan 2018 04:16:06 +0000 (04:16 +0000)]
Web Inspector: Slow open time enumerating system fonts (FontCache::systemFontFamilies)
https://bugs.webkit.org/show_bug.cgi?id=180979
<rdar://problem/36146670>

Reviewed by Matt Baker.

Source/WebCore:

* platform/graphics/cocoa/FontCacheCoreText.cpp:
(WebCore::FontCache::systemFontFamilies):
Switch to the original Mac algorithm before r180979 that uses
CTFontManagerCopyAvailableFontFamilyNames. Previously this wasn't
available on iOS but now it is. This is a performance improvement on
both platforms, but significantly so on macOS. It also finds more,
valid, family names.

LayoutTests:

* inspector/css/get-system-fonts.html:
Cleanup the test a bit.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226352 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months agoIncorrect assertion inside AccessCase
sbarati@apple.com [Wed, 3 Jan 2018 03:59:16 +0000 (03:59 +0000)]
Incorrect assertion inside AccessCase
https://bugs.webkit.org/show_bug.cgi?id=181200
<rdar://problem/35494754>

Reviewed by Yusuke Suzuki.

JSTests:

* stress/setter-same-base-and-rhs-invalid-assertion-inside-access-case.js: Added.
(ctor):
(theFunc):
(run):

Source/JavaScriptCore:

Consider a PutById compiled to a setter in a function like so:

```
function foo(o) { o.f = o; }
```

The DFG will often assign the same registers to the baseGPR (o in o.f) and the
valueRegsPayloadGPR (o in the RHS). The code totally works when these are assigned
to the same register. However, we're asserting that they're not the same register.
This patch just removes this invalid assertion.

* bytecode/AccessCase.cpp:
(JSC::AccessCase::generateImpl):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226351 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months agoUnreviewed, fix GCC warning by using #include
utatane.tea@gmail.com [Wed, 3 Jan 2018 03:44:01 +0000 (03:44 +0000)]
Unreviewed, fix GCC warning by using #include
https://bugs.webkit.org/show_bug.cgi?id=181189

This file is included in C++ files. Use #include instead of #import to suppress warning in GCC.

* platform/PromisedBlobInfo.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226350 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months agoRemove std::chrono completely
utatane.tea@gmail.com [Wed, 3 Jan 2018 03:39:57 +0000 (03:39 +0000)]
Remove std::chrono completely
https://bugs.webkit.org/show_bug.cgi?id=181186

Reviewed by Alex Christensen.

Source/WebCore:

Use MonotonicTime, WallTime, and Seconds instead.
Changes are mechanical ones. But persistent network cache data is changed.
So we bump the version number of the cache storage.

* Modules/indexeddb/server/IDBServer.cpp:
(WebCore::IDBServer::IDBServer::closeAndDeleteDatabasesModifiedSince):
(WebCore::IDBServer::removeAllDatabasesForOriginPath):
(WebCore::IDBServer::IDBServer::performCloseAndDeleteDatabasesModifiedSince):
(WebCore::IDBServer::IDBServer::performCloseAndDeleteDatabasesForOrigins):
* Modules/indexeddb/server/IDBServer.h:
* Modules/webdatabase/DatabaseTracker.cpp:
(WebCore::DatabaseTracker::deleteDatabasesModifiedSince):
* Modules/webdatabase/DatabaseTracker.h:
* dom/Document.cpp:
(WebCore::Document::lastModified):
* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::clearMediaCache):
* html/HTMLMediaElement.h:
(WebCore::HTMLMediaElement::clearMediaCache):
* loader/CrossOriginPreflightResultCache.cpp:
(WebCore::parseAccessControlMaxAge):
(WebCore::CrossOriginPreflightResultCacheItem::parse):
(WebCore::CrossOriginPreflightResultCacheItem::allowsRequest const):
* loader/CrossOriginPreflightResultCache.h:
* loader/cache/CachedResource.cpp:
(WebCore::CachedResource::CachedResource):
(WebCore::CachedResource::freshnessLifetime const):
(WebCore::CachedResource::responseReceived):
(WebCore::CachedResource::updateResponseAfterRevalidation):
* loader/cache/CachedResource.h:
* platform/FileSystem.cpp:
(WebCore::FileSystem::getFileModificationTime):
* platform/FileSystem.h:
* platform/SearchPopupMenu.h:
* platform/cocoa/SearchPopupMenuCocoa.h:
* platform/cocoa/SearchPopupMenuCocoa.mm:
(WebCore::toSystemClockTime):
(WebCore::toNSDateFromSystemClock):
(WebCore::removeRecentlyModifiedRecentSearches):
* platform/graphics/MediaPlayer.cpp:
(WebCore::MediaPlayer::clearMediaCache):
* platform/graphics/MediaPlayer.h:
* platform/graphics/MediaPlayerPrivate.h:
(WebCore::MediaPlayerPrivateInterface::clearMediaCache):
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
(WebCore::toSystemClockTime):
(WebCore::MediaPlayerPrivateAVFoundationObjC::clearMediaCache):
* platform/graphics/mac/MediaPlayerPrivateQTKit.h:
* platform/graphics/mac/MediaPlayerPrivateQTKit.mm:
(WebCore::MediaPlayerPrivateQTKit::clearMediaCache):
* platform/network/CacheValidation.cpp:
(WebCore::computeCurrentAge):
(WebCore::computeFreshnessLifetimeForHTTPFamily):
(WebCore::updateRedirectChainStatus):
(WebCore::redirectChainAllowsReuse):
(WebCore::parseCacheControlDirectives):
* platform/network/CacheValidation.h:
(WebCore::RedirectChainCacheStatus::RedirectChainCacheStatus):
* platform/network/HTTPParsers.cpp:
(WebCore::parseHTTPDate):
* platform/network/HTTPParsers.h:
* platform/network/PlatformCookieJar.h:
* platform/network/ResourceResponseBase.cpp:
(WebCore::ResourceResponseBase::cacheControlMaxAge const):
(WebCore::parseDateValueInHeader):
(WebCore::ResourceResponseBase::date const):
(WebCore::ResourceResponseBase::age const):
(WebCore::ResourceResponseBase::expires const):
(WebCore::ResourceResponseBase::lastModified const):
* platform/network/ResourceResponseBase.h:
* platform/network/cf/CookieJarCFNet.cpp:
(WebCore::deleteAllCookiesModifiedSince):
* platform/network/curl/CookieJarCurl.cpp:
(WebCore::CookieJarCurlFileSystem::deleteAllCookiesModifiedSince):
(WebCore::deleteAllCookiesModifiedSince):
* platform/network/curl/CookieJarCurl.h:
* platform/network/curl/CurlCacheEntry.cpp:
(WebCore::CurlCacheEntry::CurlCacheEntry):
(WebCore::CurlCacheEntry::isCached):
(WebCore::CurlCacheEntry::parseResponseHeaders):
* platform/network/curl/CurlCacheEntry.h:
* platform/network/mac/CookieJarMac.mm:
(WebCore::deleteAllCookiesModifiedSince):
* platform/network/soup/CookieJarSoup.cpp:
(WebCore::deleteAllCookiesModifiedSince):
* platform/win/SearchPopupMenuWin.cpp:
(WebCore::SearchPopupMenuWin::loadRecentSearches):
* rendering/RenderSearchField.cpp:
(WebCore::RenderSearchField::addSearchResult):

Source/WebKit:

Use MonotonicTime, WallTime, and Seconds instead.
Changes are mechanical ones.

* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::deleteWebsiteData):
* NetworkProcess/NetworkProcess.h:
* NetworkProcess/NetworkProcess.messages.in:
* NetworkProcess/cache/CacheStorageEngineCaches.cpp:
(WebKit::CacheStorage::Caches::clear):
* NetworkProcess/cache/NetworkCache.cpp:
(WebKit::NetworkCache::responseHasExpired):
(WebKit::NetworkCache::responseNeedsRevalidation):
(WebKit::NetworkCache::makeStoreDecision):
(WebKit::NetworkCache::Cache::clear):
(WebKit::NetworkCache::Cache::storeData):
* NetworkProcess/cache/NetworkCache.h:
* NetworkProcess/cache/NetworkCacheEntry.cpp:
(WebKit::NetworkCache::Entry::Entry):
(WebKit::NetworkCache::Entry::asJSON const):
* NetworkProcess/cache/NetworkCacheEntry.h:
(WebKit::NetworkCache::Entry::timeStamp const):
* NetworkProcess/cache/NetworkCacheFileSystem.cpp:
(WebKit::NetworkCache::fileTimes):
(WebKit::NetworkCache::updateFileModificationTimeIfNeeded):
* NetworkProcess/cache/NetworkCacheFileSystem.h:
* NetworkProcess/cache/NetworkCacheIOChannelSoup.cpp:
(WebKit::NetworkCache::IOChannel::IOChannel):
* NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp:
(WebKit::NetworkCache::responseNeedsRevalidation):
(WebKit::NetworkCache::canRevalidate):
* NetworkProcess/cache/NetworkCacheStorage.cpp:
(WebKit::NetworkCache::Storage::readRecord):
(WebKit::NetworkCache::Storage::clear):
(WebKit::NetworkCache::computeRecordWorth):
* NetworkProcess/cache/NetworkCacheStorage.h:
Bump the cache version. We now change the data in persistent cache.
* NetworkProcess/cache/NetworkCacheSubresourcesEntry.cpp:
(WebKit::NetworkCache::SubresourceInfo::SubresourceInfo):
(WebKit::NetworkCache::SubresourcesEntry::SubresourcesEntry):
* NetworkProcess/cache/NetworkCacheSubresourcesEntry.h:
(WebKit::NetworkCache::SubresourceInfo::lastSeen const):
(WebKit::NetworkCache::SubresourceInfo::firstSeen const):
(WebKit::NetworkCache::SubresourcesEntry::timeStamp const):
* NetworkProcess/cocoa/NetworkProcessCocoa.mm:
(WebKit::NetworkProcess::clearHSTSCache):
(WebKit::clearNSURLCache):
(WebKit::NetworkProcess::clearDiskCache):
* NetworkProcess/curl/NetworkProcessCurl.cpp:
(WebKit::NetworkProcess::clearDiskCache):
* NetworkProcess/mac/NetworkProcessMac.mm:
(WebKit::NetworkProcess::clearCacheForAllOrigins):
* NetworkProcess/soup/NetworkProcessSoup.cpp:
(WebKit::NetworkProcess::clearCacheForAllOrigins):
(WebKit::NetworkProcess::clearDiskCache):
* Platform/IPC/ArgumentCoders.cpp:
(IPC::ArgumentCoder<WallTime>::encode):
(IPC::ArgumentCoder<WallTime>::decode):
(IPC::ArgumentCoder<std::chrono::system_clock::time_point>::encode): Deleted.
(IPC::ArgumentCoder<std::chrono::system_clock::time_point>::decode): Deleted.
* Platform/IPC/ArgumentCoders.h:
* PluginProcess/PluginProcess.cpp:
(WebKit::PluginProcess::deleteWebsiteData):
* PluginProcess/PluginProcess.h:
* PluginProcess/PluginProcess.messages.in:
* Scripts/webkit/messages.py:
(headers_for_type):
* Shared/RemoteLayerTree/RemoteLayerBackingStore.h:
(WebKit::RemoteLayerBackingStore::lastDisplayTime const):
* Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:
(WebKit::RemoteLayerBackingStore::RemoteLayerBackingStore):
(WebKit::RemoteLayerBackingStore::display):
* Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.h:
* Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.mm:
(WebKit::RemoteLayerBackingStoreCollection::markBackingStoreVolatile):
(WebKit::RemoteLayerBackingStoreCollection::volatilityTimerFired):
* Shared/WebCoreArgumentCoders.cpp:
(IPC::ArgumentCoder<RecentSearch>::decode):
(IPC::ArgumentCoder<WallTime>::encode): Deleted.
(IPC::ArgumentCoder<WallTime>::decode): Deleted.
* Shared/WebCoreArgumentCoders.h:
* StorageProcess/StorageProcess.cpp:
(WebKit::StorageProcess::deleteWebsiteData):
* StorageProcess/StorageProcess.h:
* StorageProcess/StorageProcess.messages.in:
* UIProcess/API/C/WKApplicationCacheManager.cpp:
(WKApplicationCacheManagerDeleteAllEntries):
* UIProcess/API/C/WKCookieManager.cpp:
(WKCookieManagerDeleteAllCookiesModifiedAfterDate):
* UIProcess/API/C/WKKeyValueStorageManager.cpp:
(WKKeyValueStorageManagerDeleteAllEntries):
* UIProcess/API/C/WKResourceCacheManager.cpp:
(WKResourceCacheManagerClearCacheForAllOrigins):
* UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
(WKWebsiteDataStoreStatisticsClearInMemoryAndPersistentStoreModifiedSinceHours):
(WKWebsiteDataStoreStatisticsClearThroughWebsiteDataRemoval):
(WKWebsiteDataStoreRemoveAllFetchCaches):
(WKWebsiteDataStoreRemoveAllIndexedDatabases):
(WKWebsiteDataStoreRemoveAllServiceWorkerRegistrations):
* UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
(toSystemClockTime):
(-[WKWebsiteDataStore _resourceLoadStatisticsClearInMemoryAndPersistentStoreModifiedSinceHours:]):
* UIProcess/API/glib/WebKitWebContext.cpp:
(webkit_web_context_clear_cache):
* UIProcess/API/glib/WebKitWebsiteDataManager.cpp:
(webkit_website_data_manager_clear):
* UIProcess/DrawingAreaProxy.h:
* UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::deleteWebsiteData):
* UIProcess/Network/NetworkProcessProxy.h:
* UIProcess/Plugins/PluginProcessManager.cpp:
(WebKit::PluginProcessManager::deleteWebsiteData):
* UIProcess/Plugins/PluginProcessManager.h:
* UIProcess/Plugins/PluginProcessProxy.cpp:
(WebKit::PluginProcessProxy::deleteWebsiteData):
* UIProcess/Plugins/PluginProcessProxy.h:
* UIProcess/Storage/StorageProcessProxy.cpp:
(WebKit::StorageProcessProxy::deleteWebsiteData):
* UIProcess/Storage/StorageProcessProxy.h:
* UIProcess/WebCookieManagerProxy.cpp:
(WebKit::WebCookieManagerProxy::deleteAllCookiesModifiedSince):
* UIProcess/WebCookieManagerProxy.h:
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::deleteWebsiteData):
* UIProcess/WebProcessProxy.h:
* UIProcess/WebResourceLoadStatisticsStore.cpp:
(WebKit::WebResourceLoadStatisticsStore::scheduleClearInMemoryAndPersistent):
* UIProcess/WebResourceLoadStatisticsStore.h:
* UIProcess/WebStorage/LocalStorageDatabaseTracker.cpp:
(WebKit::LocalStorageDatabaseTracker::deleteDatabasesModifiedSince):
* UIProcess/WebStorage/LocalStorageDatabaseTracker.h:
* UIProcess/WebStorage/StorageManager.cpp:
(WebKit::StorageManager::deleteLocalStorageOriginsModifiedSince):
* UIProcess/WebStorage/StorageManager.h:
* UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:
(WebKit::WebsiteDataStore::platformRemoveRecentSearches):
* UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::removeData):
(WebKit::WebsiteDataStore::removeMediaKeys):
* UIProcess/WebsiteData/WebsiteDataStore.h:
* UIProcess/gtk/WebPageProxyGtk.cpp:
(WebKit::WebsiteDataStore::platformRemoveRecentSearches):
* UIProcess/wpe/WebPageProxyWPE.cpp:
(WebKit::WebsiteDataStore::platformRemoveRecentSearches):
* WebProcess/Cookies/WebCookieManager.cpp:
(WebKit::WebCookieManager::deleteAllCookiesModifiedSince):
* WebProcess/Cookies/WebCookieManager.h:
* WebProcess/Cookies/WebCookieManager.messages.in:
* WebProcess/Plugins/PluginView.cpp:
(WebKit::lastModifiedDateMS):
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::deleteWebsiteData):
* WebProcess/WebProcess.h:
* WebProcess/WebProcess.messages.in:

Source/WebKitLegacy:

* Storage/WebDatabaseProvider.cpp:
(WebDatabaseProvider::deleteAllDatabases):

Source/WebKitLegacy/win:

* Plugins/PluginStream.cpp:
(WebCore::lastModifiedDateMS):

Source/WTF:

std::chrono's overflow unaware design is dangerous[1]. Even small code like
`condition.wait_for(std::chrono::seconds::max())` is broken in some platforms
due to overflow of std::chrono::time_point. So we intentionally avoid using
std::chrono, and use WallTime, MonotonicTime, Seconds instead.

This patch removes all the remaining use of std::chrono from WebKit tree.

[1]: https://lists.webkit.org/pipermail/webkit-dev/2016-May/028242.html

* wtf/CrossThreadCopier.h:
Remove std::chrono support from cross thread copiers.
* wtf/Forward.h:
* wtf/MonotonicTime.h:
(WTF::MonotonicTime::isolatedCopy const):
Add isolatedCopy function.
* wtf/RunLoop.h:
(WTF::RunLoop::TimerBase::startRepeating):
(WTF::RunLoop::TimerBase::startOneShot):
Just remove these helpers.
* wtf/Seconds.h:
(WTF::Seconds::isolatedCopy const):
Add isolatedCopy function.
* wtf/WallTime.h:
(WTF::WallTime::isolatedCopy const):
Add isolatedCopy function.
* wtf/persistence/PersistentCoders.h:
(WTF::Persistence::Coder<Seconds>::encode):
(WTF::Persistence::Coder<Seconds>::decode):
(WTF::Persistence::Coder<WallTime>::encode):
(WTF::Persistence::Coder<WallTime>::decode):
Add persistent coder support for Seconds and WallTime.
(WTF::Persistence::Coder<std::chrono::system_clock::time_point>::encode): Deleted.
(WTF::Persistence::Coder<std::chrono::system_clock::time_point>::decode): Deleted.
Remove std::chrono support from persistent coders.

Tools:

* WebKitTestRunner/gtk/TestControllerGtk.cpp:
(WTR::TestController::platformRunUntil):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226349 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months ago[Attachment Support] Introduce data structures and IPC support for writing promised...
wenson_hsieh@apple.com [Wed, 3 Jan 2018 02:54:47 +0000 (02:54 +0000)]
[Attachment Support] Introduce data structures and IPC support for writing promised blobs
https://bugs.webkit.org/show_bug.cgi?id=181189

Reviewed by Tim Horton.

Source/WebCore:

Introduces a new header containing structs to be used for writing blob data when dragging. PromisedBlobInfo
represents information needed to declare data on the pasteboard that will eventually be provided via a Blob.
This includes the type and filename of the Blob-backed content. PromisedBlobData represents information needed
to actually deliver the Blob's content to the platform, and is sent some time after its corresponding
PromisedBlobInfo. The content may either be in the form of a file path (as is the case using the previous
declareAndWriteAttachment codepath) or a data buffer (which we would use if the Blob is not already backed by a
file on disk).

No new tests, since there is no observable change in functionality yet.

* WebCore.xcodeproj/project.pbxproj:
* platform/PromisedBlobInfo.h: Added.
(WebCore::PromisedBlobInfo::operator bool const):
(WebCore::PromisedBlobData::hasData const):
(WebCore::PromisedBlobData::hasFile const):
(WebCore::PromisedBlobData::operator bool const):
(WebCore::PromisedBlobData::fulfills const):

Source/WebKit:

Add IPC support for PromisedBlobInfo and PromisedBlobData. See WebCore/ChangeLog for more detail.

* Shared/WebCoreArgumentCoders.cpp:
(IPC::ArgumentCoder<PromisedBlobData>::encode):
(IPC::ArgumentCoder<PromisedBlobData>::decode):
(IPC::ArgumentCoder<PromisedBlobInfo>::encode):
(IPC::ArgumentCoder<PromisedBlobInfo>::decode):
* Shared/WebCoreArgumentCoders.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226348 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months agoWeb Inspector: Clicking source location link in Console unexpectedly jumps to Network tab
commit-queue@webkit.org [Wed, 3 Jan 2018 02:52:04 +0000 (02:52 +0000)]
Web Inspector: Clicking source location link in Console unexpectedly jumps to Network tab
https://bugs.webkit.org/show_bug.cgi?id=181229
<rdar://problem/36075219>

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2018-01-02
Reviewed by Matt Baker.

* UserInterface/Base/Main.js:
Cleanup linkifyURLAsNode. Ignore Search tab in generic handlePossibleLinkClick
when not already in the Search tab.

* UserInterface/Views/CallFrameView.js:
(WI.CallFrameView):
Ignore Search and Network tab in CallFrame links.

* UserInterface/Views/TabBrowser.js:
(WI.TabBrowser.prototype.bestTabContentViewForRepresentedObject):
Improve style.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226347 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months agoREGRESSION(r223253): Broke ResourceLoadStatistics layout tests for non-Cocoa ports
mcatanzaro@igalia.com [Wed, 3 Jan 2018 02:34:18 +0000 (02:34 +0000)]
REGRESSION(r223253): Broke ResourceLoadStatistics layout tests for non-Cocoa ports
https://bugs.webkit.org/show_bug.cgi?id=181231

Reviewed by Alex Christensen.

Source/WebKit:

Add new C API for use by WebKitTestRunner.

* UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
(WKWebsiteDataStoreIsStatisticsRegisteredAsSubFrameUnder):
(WKWebsiteDataStoreIsStatisticsRegisteredAsRedirectingTo):
* UIProcess/API/C/WKWebsiteDataStoreRef.h:

Tools:

Implement TestController APIs needed by ResourceLoadStatistics tests.

* WebKitTestRunner/TestController.cpp:
(WTR::TestController::isStatisticsRegisteredAsSubFrameUnder):
(WTR::TestController::isStatisticsRegisteredAsRedirectingTo):

LayoutTests:

Unskip the tests.

* platform/gtk/TestExpectations:
* platform/wpe/TestExpectations:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226346 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months agoRefactoring: Rename DummyClass to DummyStruct because it's a struct.
mark.lam@apple.com [Wed, 3 Jan 2018 01:43:37 +0000 (01:43 +0000)]
Refactoring: Rename DummyClass to DummyStruct because it's a struct.
https://bugs.webkit.org/show_bug.cgi?id=181230

Reviewed by JF Bastien.

* wtf/WTFAssertions.cpp:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226345 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months agoEnsure that poisoned pointers do not look like double or int32 JSValues.
mark.lam@apple.com [Wed, 3 Jan 2018 00:56:55 +0000 (00:56 +0000)]
Ensure that poisoned pointers do not look like double or int32 JSValues.
https://bugs.webkit.org/show_bug.cgi?id=181221
<rdar://problem/36248638>

Reviewed by JF Bastien.

Changed poison values to ensure that poisoned bits (i.e. pointer ^ poison)
satisfies the following conditions:
1. bits 48-63 are 0: this ensures that poisoned bits look like a pointer and
   not a double or int32 JSValue.
2. bits 32-47 are not completely 0.
3. bit 2 is never 0: this ensures that the poisoned value of a non-null pointer
   will never be null.
4. bit 0-1 is always 0: this ensures that clients can still use the 2 bottom
   bits of the poisoned value as flag bits (just like they were able to do with
   pointer values).  The only difference is that bit 2 can no longer be used for
   flag bits because poisoned values need it to always be set.

* WTF.xcodeproj/project.pbxproj:
* wtf/CMakeLists.txt:
* wtf/PointerAsserts.cpp: Removed.

* wtf/Poisoned.cpp:
(WTF::makePoison):
- Updated to satisfy the above requirements.

* wtf/Poisoned.h:
(WTF::makeConstExprPoison):
(WTF::makePoison): Deleted.

* wtf/WTFAssertions.cpp: Copied from Source/WTF/wtf/PointerAsserts.cpp.
- Renamed from PointerAsserts.cpp because we assert more things than just
  pointers here.
- Added some assertions to test makeConstExprPoison() to ensure that it satisfies
  the above requirements.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226344 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months agoMake MessagePortChannel::takeAllMessagesFromRemote asynchronous.
beidson@apple.com [Wed, 3 Jan 2018 00:51:01 +0000 (00:51 +0000)]
Make MessagePortChannel::takeAllMessagesFromRemote asynchronous.
https://bugs.webkit.org/show_bug.cgi?id=181205

Reviewed by Alex Christensen.

No new tests (No behavior change)

This is needed for the ongoing WK2 MessagePort work.

For WK1 in-process MessagePorts it is still synchronous; no behavior change.

* dom/InProcessMessagePortChannel.cpp:
(WebCore::InProcessMessagePortChannel::takeAllMessagesFromRemote):
* dom/InProcessMessagePortChannel.h:

* dom/MessagePort.cpp:
(WebCore::MessagePort::dispatchMessages):
* dom/MessagePortChannel.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226343 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months agoDisable WKAttachmentTests if UIPasteboard.itemProviders is not available
timothy_horton@apple.com [Wed, 3 Jan 2018 00:20:48 +0000 (00:20 +0000)]
Disable WKAttachmentTests if UIPasteboard.itemProviders is not available
https://bugs.webkit.org/show_bug.cgi?id=181219

Reviewed by Wenson Hsieh.

* TestWebKitAPI/Tests/WebKitCocoa/WKAttachmentTests.mm:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226342 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months agoAdd a WebAuthentication runtime feature flag
jiewen_tan@apple.com [Wed, 3 Jan 2018 00:10:10 +0000 (00:10 +0000)]
Add a WebAuthentication runtime feature flag
https://bugs.webkit.org/show_bug.cgi?id=181220
<rdar://problem/36055305>

Reviewed by Brent Fulgham.

Source/WebCore:

This patch basically renames the CredentialManagement runtime feature flag into
WebAuthentication runtime feature flag.

No tests.

* Modules/credentialmanagement/BasicCredential.idl:
* Modules/credentialmanagement/CredentialsContainer.idl:
* Modules/credentialmanagement/NavigatorCredentials.idl:
* Modules/webauthn/PublicKeyCredential.idl:
* page/RuntimeEnabledFeatures.h:
(WebCore::RuntimeEnabledFeatures::setWebAuthenticationEnabled):
(WebCore::RuntimeEnabledFeatures::webAuthenticationEnabled const):
(WebCore::RuntimeEnabledFeatures::setCredentialManagementEnabled): Deleted.
(WebCore::RuntimeEnabledFeatures::credentialManagementEnabled const): Deleted.

Source/WebKit:

Renames the CredentialManagement runtime feature flag into WebAuthentication.

* Shared/WebPreferences.yaml:
* UIProcess/API/C/WKPreferences.cpp:
(WKPreferencesSetWebAuthenticationEnabled):
(WKPreferencesGetWebAuthenticationEnabled):
(WKPreferencesSetCredentialManagementEnabled): Deleted.
(WKPreferencesGetCredentialManagementEnabled): Deleted.
* UIProcess/API/C/WKPreferencesRefPrivate.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::updatePreferences):

Source/WebKitLegacy/mac:

Renames the CredentialManagement runtime feature flag into WebAuthentication.

* WebView/WebPreferenceKeysPrivate.h:
* WebView/WebPreferences.mm:
(+[WebPreferences initialize]):
(-[WebPreferences webAuthenticationEnabled]):
(-[WebPreferences setWebAuthenticationEnabled:]):
(-[WebPreferences credentialManagementEnabled]): Deleted.
(-[WebPreferences setCredentialManagementEnabled:]): Deleted.
* WebView/WebPreferencesPrivate.h:
* WebView/WebView.mm:
(-[WebView _preferencesChanged:]):

Tools:

Renames the CredentialManagement runtime feature flag into WebAuthentication.

* DumpRenderTree/TestOptions.h:
* DumpRenderTree/TestOptions.mm:
(TestOptions::TestOptions):
* DumpRenderTree/mac/DumpRenderTree.mm:
(enableExperimentalFeatures):
(setWebPreferencesForTestOptions):
* WebKitTestRunner/TestController.cpp:
(WTR::TestController::resetPreferencesToConsistentValues):
(WTR::updateTestOptionsFromTestHeader):
* WebKitTestRunner/TestOptions.h:
(WTR::TestOptions::hasSameInitializationOptions const):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226341 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months ago[Attachment Support] Don't Blob-convert images and attachments with https:, http...
wenson_hsieh@apple.com [Wed, 3 Jan 2018 00:06:41 +0000 (00:06 +0000)]
[Attachment Support] Don't Blob-convert images and attachments with https:, http: or data: urls
https://bugs.webkit.org/show_bug.cgi?id=181143
<rdar://problem/36200381>

Reviewed by Tim Horton.

Source/WebCore:

Clients such as Mail would expect pasting or dropping an image with src="https://..." to result in the source
URL being preserved (i.e. staying as remote images) instead of creating image attachments out of them. This
patch hooks into the shouldConvertToBlob() check added in r226272 so that it applies to attachment element
replacement as well.

Test: WKAttachmentTests.DoNotInsertDataURLImagesAsAttachments

* editing/cocoa/WebContentReaderCocoa.mm:
(WebCore::shouldConvertToBlob):
(WebCore::replaceRichContentWithAttachments):

Tools:

Add a new API test to ensure that a copied image with a data URL does not get pasted as an attachment when
attachment elements are enabled.

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WebKitCocoa/WKAttachmentTests.mm:
(TestWebKitAPI::TEST):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226340 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months agoUnreviewed WPE test gardening.
mcatanzaro@igalia.com [Tue, 2 Jan 2018 23:39:40 +0000 (23:39 +0000)]
Unreviewed WPE test gardening.

* platform/wpe/TestExpectations:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226339 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months ago[ESNext][BigInt] Implement BigIntConstructor and BigIntPrototype
ticaiolima@gmail.com [Tue, 2 Jan 2018 23:38:36 +0000 (23:38 +0000)]
[ESNext][BigInt] Implement BigIntConstructor and BigIntPrototype
https://bugs.webkit.org/show_bug.cgi?id=175359

Reviewed by Yusuke Suzuki.

JSTests:

* bigIntTests.yaml:
* stress/big-int-as-key.js: Added.
* stress/big-int-constructor-gc.js: Added.
* stress/big-int-constructor-oom.js: Added.
* stress/big-int-constructor-properties.js: Added.
* stress/big-int-constructor-prototype-prop-descriptor.js: Added.
* stress/big-int-constructor-prototype.js: Added.
* stress/big-int-constructor.js: Added.
* stress/big-int-function-apply.js:
* stress/big-int-length.js: Added.
* stress/big-int-prop-descriptor.js: Added.
* stress/big-int-proto-constructor.js: Added.
* stress/big-int-proto-name.js: Added.
* stress/big-int-prototype-properties.js: Added.
* stress/big-int-prototype-proto.js: Added.
* stress/big-int-prototype-value-of.js: Added.
* stress/big-int-prototype-symbol-to-string-tag.js: Added.
* stress/big-int-prototype-to-string-apply.js: Added.
* stress/big-int-to-object.js: Added.
* stress/big-int-to-string.js: Added.

Source/JavaScriptCore:

This patch is implementing BigIntConstructor and BigIntPrototype
following spec[1, 2]. As addition, we are also implementing BigIntObject
warapper to handle ToObject(v) abstract operation when "v" is a BigInt
primitive. With these classes, now it's possible to syntetize
BigInt.prototype and then call "toString", "valueOf" and
"toLocaleString" when the primitive is a BigInt.
BigIntConstructor exposes an API to parse other primitives such as
Number, Boolean and String to BigInt.
We decided to skip parseInt implementation, since it was removed from
spec.

[1] - https://tc39.github.io/proposal-bigint/#sec-bigint-constructor
[2] - https://tc39.github.io/proposal-bigint/#sec-properties-of-the-bigint-prototype-object

* CMakeLists.txt:
* DerivedSources.make:
* JavaScriptCore.xcodeproj/project.pbxproj:
* Sources.txt:
* jsc.cpp:
* runtime/BigIntConstructor.cpp: Added.
(JSC::BigIntConstructor::BigIntConstructor):
(JSC::BigIntConstructor::finishCreation):
(JSC::isSafeInteger):
(JSC::toBigInt):
(JSC::callBigIntConstructor):
(JSC::bigIntConstructorFuncAsUintN):
(JSC::bigIntConstructorFuncAsIntN):
* runtime/BigIntConstructor.h: Added.
(JSC::BigIntConstructor::create):
(JSC::BigIntConstructor::createStructure):
* runtime/BigIntObject.cpp: Added.
(JSC::BigIntObject::BigIntObject):
(JSC::BigIntObject::finishCreation):
(JSC::BigIntObject::toStringName):
(JSC::BigIntObject::defaultValue):
* runtime/BigIntObject.h: Added.
(JSC::BigIntObject::create):
(JSC::BigIntObject::internalValue const):
(JSC::BigIntObject::createStructure):
* runtime/BigIntPrototype.cpp: Added.
(JSC::BigIntPrototype::BigIntPrototype):
(JSC::BigIntPrototype::finishCreation):
(JSC::toThisBigIntValue):
(JSC::bigIntProtoFuncToString):
(JSC::bigIntProtoFuncToLocaleString):
(JSC::bigIntProtoFuncValueOf):
* runtime/BigIntPrototype.h: Added.
(JSC::BigIntPrototype::create):
(JSC::BigIntPrototype::createStructure):
* runtime/IntlCollator.cpp:
(JSC::IntlCollator::initializeCollator):
* runtime/IntlNumberFormat.cpp:
(JSC::IntlNumberFormat::initializeNumberFormat):
* runtime/JSBigInt.cpp:
(JSC::JSBigInt::createFrom):
(JSC::JSBigInt::parseInt):
(JSC::JSBigInt::toObject const):
* runtime/JSBigInt.h:
* runtime/JSCJSValue.cpp:
(JSC::JSValue::synthesizePrototype const):
* runtime/JSCPoisonedPtr.cpp:
* runtime/JSCell.cpp:
(JSC::JSCell::toObjectSlow const):
* runtime/JSGlobalObject.cpp:
(JSC::JSGlobalObject::init):
(JSC::JSGlobalObject::visitChildren):
* runtime/JSGlobalObject.h:
(JSC::JSGlobalObject::bigIntPrototype const):
(JSC::JSGlobalObject::bigIntObjectStructure const):
* runtime/StructureCache.h:
* runtime/StructureInlines.h:
(JSC::prototypeForLookupPrimitiveImpl):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226338 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months agoREGRESSION(r226327): [GTK] Plugin process is broken
mcatanzaro@igalia.com [Tue, 2 Jan 2018 22:45:39 +0000 (22:45 +0000)]
REGRESSION(r226327): [GTK] Plugin process is broken
https://bugs.webkit.org/show_bug.cgi?id=181187

Unreviewed, fix PluginProcessMainUnix after r226327.

* PluginProcess/unix/PluginProcessMainUnix.cpp:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226337 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months agoIdentify MessagePorts by a globally unique MessagePortIdentifier.
beidson@apple.com [Tue, 2 Jan 2018 22:42:16 +0000 (22:42 +0000)]
Identify MessagePorts by a globally unique MessagePortIdentifier.
https://bugs.webkit.org/show_bug.cgi?id=181172

Reviewed by Alex Christensen.

No new tests (Behavior change covered by all existing tests).

This cleans up the abstract MessagePortChannel interface to be in terms of identifiers
instead of actual MessagePort objects.

The identifiers are compounded with the current ProcessIdentifier meaning they are global
across all processes for the running UI process, enabling easy cross-process communication.

(Actual cross-process communication comes in a followup)

* WebCore.xcodeproj/project.pbxproj:

* dom/InProcessMessagePortChannel.cpp:
(WebCore::InProcessMessagePortChannel::createChannelBetweenPorts):
(WebCore::InProcessMessagePortChannel::isConnectedTo):
(WebCore::InProcessMessagePortChannel::entangleWithRemoteIfOpen):
(WebCore::InProcessMessagePortChannel::entangleIfOpen): Deleted.
* dom/InProcessMessagePortChannel.h:

* dom/MessageChannel.cpp:
(WebCore::MessageChannel::MessageChannel):
(WebCore::m_port2):

* dom/MessagePort.cpp:
(WebCore::allMessagePortsLock):
(WebCore::MessagePort::ref const):
(WebCore::MessagePort::deref const):
(WebCore::MessagePort::existingMessagePortForIdentifier):
(WebCore::MessagePort::MessagePort):
(WebCore::MessagePort::~MessagePort):
(WebCore::MessagePort::postMessage):
(WebCore::MessagePort::entangleWithRemote):
(WebCore::MessagePort::entanglePorts):
(WebCore::MessagePort::entangle): Deleted.
* dom/MessagePort.h:

* dom/MessagePortChannel.h:

* dom/MessagePortIdentifier.h: Added.
(WebCore::operator==):
(WebCore::MessagePortIdentifier::encode const):
(WebCore::MessagePortIdentifier::decode):
(WebCore::MessagePortIdentifier::hash const):
(WTF::MessagePortIdentifierHash::hash):
(WTF::MessagePortIdentifierHash::equal):
(WTF::HashTraits<WebCore::MessagePortIdentifier>::emptyValue):
(WTF::HashTraits<WebCore::MessagePortIdentifier>::constructDeletedValue):
(WTF::HashTraits<WebCore::MessagePortIdentifier>::isDeletedValue):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226336 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months agoFix the build on platforms where UICurrentUserInterfaceIdiomIsPad is defined to false
timothy_horton@apple.com [Tue, 2 Jan 2018 21:06:46 +0000 (21:06 +0000)]
Fix the build on platforms where UICurrentUserInterfaceIdiomIsPad is defined to false
https://bugs.webkit.org/show_bug.cgi?id=181218

Reviewed by Alex Christensen.

* Platform/spi/ios/UIKitSPI.h:
(currentUserInterfaceIdiomIsPad):
* UIProcess/ios/SmartMagnificationController.mm:
(WebKit::SmartMagnificationController::didCollectGeometryForSmartMagnificationGesture):
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKFormInputSession setAccessoryViewCustomButtonTitle:]):
(-[WKContentView _requiresKeyboardWhenFirstResponder]):
(-[WKContentView _displayFormNodeInputView]):
(-[WKContentView requiresAccessoryView]):
(-[WKContentView _updateAccessory]):
* UIProcess/ios/forms/WKAirPlayRoutePicker.mm:
(-[WKAirPlayRoutePicker show:fromRect:]):
* UIProcess/ios/forms/WKFileUploadPanel.mm:
(-[WKFileUploadPanel _showPhotoPickerWithSourceType:]):
(-[WKFileUploadPanel _presentMenuOptionForCurrentInterfaceIdiom:]):
* UIProcess/ios/forms/WKFormInputControl.mm:
(-[WKDateTimePicker initWithView:datePickerMode:]):
(-[WKFormInputControl initWithView:]):
* UIProcess/ios/forms/WKFormSelectControl.mm:
(-[WKFormSelectControl initWithView:]):
On platforms where UICurrentUserInterfaceIdiomIsPad is defined to false,
blocks that conditionally execute based on its value are unreachable.
This causes the compiler to complain. Hide it away inside an inline function
and make use of that everywhere we used to use the macro.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226335 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months agoRemove SVN file accidentally added in r226160
achristensen@apple.com [Tue, 2 Jan 2018 20:50:30 +0000 (20:50 +0000)]
Remove SVN file accidentally added in r226160
https://bugs.webkit.org/show_bug.cgi?id=180934

* UIProcess/WebPageProxy.cpp.orig: Removed.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226334 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months agoMemory cache should not reuse resources with different credential fetch option
commit-queue@webkit.org [Tue, 2 Jan 2018 20:38:04 +0000 (20:38 +0000)]
Memory cache should not reuse resources with different credential fetch option
https://bugs.webkit.org/show_bug.cgi?id=181212

Patch by Youenn Fablet <youenn@apple.com> on 2018-01-02
Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

* web-platform-tests/service-workers/service-worker/fetch-cors-xhr.https-expected.txt:

Source/WebCore:

Covered by rebased test.

* loader/cache/CachedResourceLoader.cpp:
(WebCore::CachedResourceLoader::determineRevalidationPolicy const):

LayoutTests:

* TestExpectations: Removing test flakiness expectation.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226333 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months agoUpdate Credential Management API for WebAuthentication
jiewen_tan@apple.com [Tue, 2 Jan 2018 20:28:31 +0000 (20:28 +0000)]
Update Credential Management API for WebAuthentication
https://bugs.webkit.org/show_bug.cgi?id=181082
<rdar://problem/36055239>

Reviewed by Brent Fulgham.

LayoutTests/imported/w3c:

* web-platform-tests/credential-management/credentialscontainer-create-basics.https-expected.txt:
* web-platform-tests/credential-management/idl.https-expected.txt:

Source/WebCore:

Part 2/2

This patch implements Core API from Credential Management API: https://www.w3.org/TR/credential-management-1/#core.
which is required by WebAuthN. It also sets the CredentialManagement runtime flag to enable testing. Note that it
introduces a dummy PublicKeyCredential interface for testing functionalities of the Credential interface, which
cannot be instantiated.

Tests: http/wpt/credential-management/credentialscontainer-create-basics.https.html
       http/wpt/credential-management/credentialscontainer-get-basics.https.html
       http/wpt/credential-management/credentialscontainer-preventSilentAccess-basics.https.html
       http/wpt/credential-management/idl.https.html

* CMakeLists.txt:
* DerivedSources.make:
* Modules/credentialmanagement/BasicCredential.cpp:
(WebCore::BasicCredential::BasicCredential):
(WebCore::BasicCredential::type const):
* Modules/credentialmanagement/BasicCredential.h:
(WebCore::BasicCredential::discovery const):
* Modules/credentialmanagement/BasicCredential.idl:
* Modules/credentialmanagement/CredentialCreationOptions.h:
* Modules/credentialmanagement/CredentialCreationOptions.idl:
* Modules/credentialmanagement/CredentialRequestOptions.h:
* Modules/credentialmanagement/CredentialRequestOptions.idl:
* Modules/credentialmanagement/CredentialsContainer.cpp:
(WebCore::CredentialsContainer::CredentialsContainer):
(WebCore::CredentialsContainer::isSameOriginWithItsAncestors):
(WebCore::CredentialsContainer::dispatchTask):
(WebCore::CredentialsContainer::get):
(WebCore::CredentialsContainer::store):
(WebCore::CredentialsContainer::isCreate):
(WebCore::CredentialsContainer::preventSilentAccess):
* Modules/credentialmanagement/CredentialsContainer.h:
(WebCore::CredentialsContainer::create):
(WebCore::CredentialsContainer::CredentialsContainer): Deleted.
* Modules/credentialmanagement/CredentialsContainer.idl:
* Modules/credentialmanagement/NavigatorCredentials.cpp:
(WebCore::NavigatorCredentials::credentials):
* Modules/credentialmanagement/NavigatorCredentials.h:
* Modules/credentialmanagement/NavigatorCredentials.idl:
* Modules/webauthn/PublicKeyCredential.cpp: Copied from Source/WebCore/Modules/credentialmanagement/BasicCredential.cpp.
(WebCore::PublicKeyCredential::PublicKeyCredential):
(WebCore::PublicKeyCredential::collectFromCredentialStore):
(WebCore::PublicKeyCredential::discoverFromExternalSource):
(WebCore::PublicKeyCredential::store):
(WebCore::PublicKeyCredential::create):
* Modules/webauthn/PublicKeyCredential.h: Copied from Source/WebCore/Modules/credentialmanagement/BasicCredential.cpp.
* Modules/webauthn/PublicKeyCredential.idl: Copied from Source/WebCore/Modules/credentialmanagement/BasicCredential.idl.
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/WebCoreBuiltinNames.h:
* page/RuntimeEnabledFeatures.h:

Tools:

Enable Credential Management API for testing.

* DumpRenderTree/TestOptions.h:
* WebKitTestRunner/TestOptions.h:

LayoutTests:

This patch moves original tests for Credential Management API to http/wpt/ to better integrate
with web-platform-tests infrastructure. Hopefully this will help us later on contribute tests
back to W3C.

* credentials/idlharness-expected.txt: Removed.
* credentials/idlharness.html: Removed.
* fast/dom/navigator-detached-no-crash-expected.txt:
* http/wpt/credential-management/credentialscontainer-create-basics.https-expected.txt: Added.
* http/wpt/credential-management/credentialscontainer-create-basics.https.html: Added.
* http/wpt/credential-management/credentialscontainer-get-basics.https-expected.txt: Added.
* http/wpt/credential-management/credentialscontainer-get-basics.https.html: Added.
* http/wpt/credential-management/credentialscontainer-preventSilentAccess-basics.https-expected.txt: Added.
* http/wpt/credential-management/credentialscontainer-preventSilentAccess-basics.https.html: Added.
* http/wpt/credential-management/idl.https-expected.txt: Added.
* http/wpt/credential-management/idl.https.html: Added.
* platform/gtk/TestExpectations:
* platform/gtk/fast/dom/navigator-detached-no-crash-expected.txt:
* platform/mac-elcapitan-wk2/fast/dom/navigator-detached-no-crash-expected.txt:
* platform/mac-wk1/fast/dom/navigator-detached-no-crash-expected.txt:
* platform/win/TestExpectations:
* platform/win/fast/dom/navigator-detached-no-crash-expected.txt:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226332 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months agoFix the MathCommon build with a recent compiler
timothy_horton@apple.com [Tue, 2 Jan 2018 20:20:16 +0000 (20:20 +0000)]
Fix the MathCommon build with a recent compiler
https://bugs.webkit.org/show_bug.cgi?id=181216

Reviewed by Sam Weinig.

* runtime/MathCommon.cpp:
(JSC::fdlibmPow):
This cast drops the 'const' qualifier from the pointer to 'one',
but it doesn't have to, and it makes the compiler sad.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226331 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months agoUse BlockPtrs and lambdas instead of new/delete to pass parameters to blocks in WebVi...
achristensen@apple.com [Tue, 2 Jan 2018 20:02:50 +0000 (20:02 +0000)]
Use BlockPtrs and lambdas instead of new/delete to pass parameters to blocks in WebViewImpl::performDragOperation
https://bugs.webkit.org/show_bug.cgi?id=180795

Reviewed by Brent Fulgham.

* UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::performDragOperation):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226330 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months ago[Win] Web Inspector: Wrongly placed inspector highlight in HiDPI
commit-queue@webkit.org [Tue, 2 Jan 2018 19:52:35 +0000 (19:52 +0000)]
[Win] Web Inspector: Wrongly placed inspector highlight in HiDPI
https://bugs.webkit.org/show_bug.cgi?id=181173

Patch by Fujii Hironori <Hironori.Fujii@sony.com> on 2018-01-02
Reviewed by Alex Christensen.

* WebNodeHighlight.cpp:
(WebNodeHighlight::update): Scale the GraphicsContext.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226329 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months agoLayoutTests/imported/w3c:
Ms2ger@igalia.com [Tue, 2 Jan 2018 18:29:40 +0000 (18:29 +0000)]
LayoutTests/imported/w3c:
Update imported/w3c/web-platform-tests/html/browsers/windows/browsing-context.html from upstream wpt.
https://bugs.webkit.org/show_bug.cgi?id=172255

Unreviewed test gardening.

* web-platform-tests/html/browsers/windows/browsing-context-expected.txt: rebaseline.
* web-platform-tests/html/browsers/windows/browsing-context.html: update.

LayoutTests:
Remove obsolete expectations for updated imported/w3c/web-platform-tests/html/browsers/windows/browsing-context.html.
https://bugs.webkit.org/show_bug.cgi?id=172255

Unreviewed test gardening.

* platform/gtk/TestExpectations:
* platform/mac/TestExpectations:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226328 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months ago[WPE][GTK] Implement the assignment of ProcessIdentifiers to child processes
mcatanzaro@igalia.com [Tue, 2 Jan 2018 18:17:12 +0000 (18:17 +0000)]
[WPE][GTK] Implement the assignment of ProcessIdentifiers to child processes
https://bugs.webkit.org/show_bug.cgi?id=181187

Reviewed by Brady Eidson.

* Shared/ChildProcess.cpp: Make the ProcessIdentifier mandatory.
(WebKit::ChildProcess::initialize):
* Shared/unix/ChildProcessMain.cpp: Initialize ChildProcessInitializationParameters with the
ProcessIdentifier.
(WebKit::ChildProcessMainBase::parseCommandLine):
* UIProcess/Launcher/glib/ProcessLauncherGLib.cpp: Copy the ProcessIdentifier from
LaunchOptions into argv.
(WebKit::ProcessLauncher::launchProcess):
* WebProcess/wpe/WebProcessMainWPE.cpp: Expect the WPE socket ID later in the command line.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226327 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months ago[GTK] Test /webkit2/WebKitWebExtension/form-controls-associated-signal is flaky
mcatanzaro@igalia.com [Tue, 2 Jan 2018 18:17:07 +0000 (18:17 +0000)]
[GTK] Test /webkit2/WebKitWebExtension/form-controls-associated-signal is flaky
https://bugs.webkit.org/show_bug.cgi?id=168194

Reviewed by Carlos Garcia Campos.

Fix an assertion and unskip the test. The order that form controls are associated is not
guaranteed.

* Scripts/run-gtk-tests:
(GtkTestRunner):
* TestWebKitAPI/Tests/WebKitGLib/TestWebExtensions.cpp:
(didAssociateFormControlsCallback):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226326 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months agoUse new WebsiteDataStore passed in through decidePolicyForNavigation SPI
achristensen@apple.com [Tue, 2 Jan 2018 17:21:37 +0000 (17:21 +0000)]
Use new WebsiteDataStore passed in through decidePolicyForNavigation SPI
https://bugs.webkit.org/show_bug.cgi?id=180897
<rdar://problem/35535328>

Reviewed by Brent Fulgham.

Source/WebKit:

* Shared/WebsitePoliciesData.cpp:
(WebKit::WebsitePoliciesData::applyToDocumentLoader):
* UIProcess/Cocoa/NavigationState.mm:
(WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::changeWebsiteDataStore):
* UIProcess/WebPageProxy.h:
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::pageBeginUsingWebsiteDataStore):
(WebKit::WebProcessPool::pageEndUsingWebsiteDataStore):
(WebKit::WebProcessPool::pageAddedToProcess): Deleted.
(WebKit::WebProcessPool::pageRemovedFromProcess): Deleted.
* UIProcess/WebProcessPool.h:
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::addExistingWebPage):
(WebKit::WebProcessProxy::removeWebPage):
* WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.mm:
(WebKit::WebFrameNetworkingContext::ensureWebsiteDataStoreSession):

Tools:

Test two forms of storage to be sure we are using a different WebsiteDataStore: cookies and sessionStorage.

* TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm:
(-[WebsitePoliciesWebsiteDataStoreDelegate _webView:decidePolicyForNavigationAction:decisionHandler:]):
(-[WebsitePoliciesWebsiteDataStoreDelegate webView:startURLSchemeTask:]):
(-[WebsitePoliciesWebsiteDataStoreDelegate webView:runJavaScriptAlertPanelWithMessage:initiatedByFrame:completionHandler:]):
(websiteDataStoreTestWebView):
(TEST):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226325 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months agoOnly use CookieStorageShim when we aren't using NetworkSession
achristensen@apple.com [Tue, 2 Jan 2018 17:18:17 +0000 (17:18 +0000)]
Only use CookieStorageShim when we aren't using NetworkSession
https://bugs.webkit.org/show_bug.cgi?id=180766

Reviewed by Brent Fulgham.

* Shared/mac/CookieStorageShim.h:
* Shared/mac/CookieStorageShim.mm:
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::initializeWebProcess):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226324 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months agoClean up context menu code
achristensen@apple.com [Tue, 2 Jan 2018 17:17:19 +0000 (17:17 +0000)]
Clean up context menu code
https://bugs.webkit.org/show_bug.cgi?id=181074

Reviewed by Brent Fulgham.

Use Ref instead of RefPtr where possible.
Use move semantics instead of copying from const references when possible.
Remove dead iOS code.  Reduce allocations.  Add stub for WPE.

* UIProcess/API/APIContextMenuClient.h:
(API::ContextMenuClient::getContextMenuFromProposedMenu):
(API::ContextMenuClient::getContextMenuFromProposedMenuAsync):
(API::ContextMenuClient::showContextMenu):
* UIProcess/API/C/WKPage.cpp:
(WKPageSetPageContextMenuClient):
* UIProcess/API/gtk/PageClientImpl.cpp:
(WebKit::PageClientImpl::createContextMenuProxy):
* UIProcess/API/gtk/PageClientImpl.h:
* UIProcess/PageClient.h:
* UIProcess/WebContextMenuListenerProxy.cpp:
(WebKit::WebContextMenuListenerProxy::useContextMenuItems):
* UIProcess/WebContextMenuProxy.cpp:
(WebKit::WebContextMenuProxy::WebContextMenuProxy):
* UIProcess/WebContextMenuProxy.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::showContextMenu):
(WebKit::WebPageProxy::internalShowContextMenu): Deleted.
* UIProcess/WebPageProxy.h:
* UIProcess/gtk/WebContextMenuProxyGtk.cpp:
(WebKit::WebContextMenuProxyGtk::showContextMenuWithItems):
(WebKit::WebContextMenuProxyGtk::WebContextMenuProxyGtk):
* UIProcess/gtk/WebContextMenuProxyGtk.h:
(WebKit::WebContextMenuProxyGtk::create):
* UIProcess/ios/PageClientImplIOS.h:
* UIProcess/ios/PageClientImplIOS.mm:
(WebKit::PageClientImpl::createContextMenuProxy): Deleted.
* UIProcess/mac/PageClientImplMac.h:
* UIProcess/mac/PageClientImplMac.mm:
(WebKit::PageClientImpl::createContextMenuProxy):
* UIProcess/mac/WebContextMenuProxyMac.h:
(WebKit::WebContextMenuProxyMac::create):
* UIProcess/mac/WebContextMenuProxyMac.mm:
(WebKit::WebContextMenuProxyMac::WebContextMenuProxyMac):
(WebKit::WebContextMenuProxyMac::showContextMenuWithItems):
(WebKit::WebContextMenuProxyMac::showContextMenu):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226323 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months agoWebAssembly: sending module to iframe fails
gskachkov@gmail.com [Tue, 2 Jan 2018 15:38:39 +0000 (15:38 +0000)]
WebAssembly: sending module to iframe fails
https://bugs.webkit.org/show_bug.cgi?id=179263

Reviewed by JF Bastien.

Source/WebCore:

Allow use WebAssembly.Module as input parameters for postMessage
in window and iframe object. To prevent sending message to iframe
that is not ready, in iframe-* test we are waiting message from
iframe only after that we send message to it.

Tests: wasm/iframe-parent-postmessage.html
       wasm/iframe-postmessage.html
       wasm/window-postmessage.html

* bindings/js/SerializedScriptValue.cpp:
(WebCore::CloneSerializer::dumpIfTerminal):
* bindings/js/SerializedScriptValue.h:
* page/DOMWindow.cpp:
(WebCore::DOMWindow::postMessage):

LayoutTests:

* platform/ios-simulator/TestExpectations:
* platform/win/TestExpectations:
* resources/wasm-builder.js: Renamed from LayoutTests/workers/wasm-resources/builder.js.
* wasm/iframe-parent-postmessage-expected.txt: Added.
* wasm/iframe-parent-postmessage.html: Added.
* wasm/iframe-postmessage-expected.txt: Added.
* wasm/iframe-postmessage.html: Added.
* wasm/resources/frame-parent.html: Added.
* wasm/resources/frame.html: Added.
* wasm/resources/load_wasm.js: Added.
(createWasmModule):
* wasm/window-postmessage-expected.txt: Added.
* wasm/window-postmessage.html: Added.
* workers/wasm-mem-post-message.html:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226322 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months ago[WPE] Update some test expectations
Ms2ger@igalia.com [Tue, 2 Jan 2018 15:19:35 +0000 (15:19 +0000)]
[WPE] Update some test expectations
https://bugs.webkit.org/show_bug.cgi?id=181211

Unreviewed test gardening.

* platform/wpe/TestExpectations: disable more SW tests.
* platform/wpe/imported/w3c/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-invalid-args-expected.txt:
  rebaseline to match the features enabled on the bot.
* platform/wpe/imported/w3c/web-platform-tests/encrypted-media/encrypted-media-default-feature-policy.https.sub-expected.txt:
  rebaseline for r225963.
* platform/wpe/imported/w3c/web-platform-tests/fetch/api/basic/request-headers.any-expected.txt:
  rebaseline for r226162.
* platform/wpe/imported/w3c/web-platform-tests/fetch/api/basic/request-headers.any.worker-expected.txt:
  rebaseline for r226162.
* platform/wpe/imported/w3c/web-platform-tests/html/dom/interfaces-expected.txt:
  Added: rebaseline to match the features enabled on the bot.
* platform/wpe/imported/w3c/web-platform-tests/html/dom/reflection-embedded-expected.txt:
  Added: rebaseline to match the features enabled on the bot.
* platform/wpe/imported/w3c/web-platform-tests/html/dom/reflection-forms-expected.txt:
  Added: rebaseline to match the features enabled on the bot.
* platform/wpe/imported/w3c/web-platform-tests/html/dom/reflection-text-expected.txt:
  Added: rebaseline to match the features enabled on the bot.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226321 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months ago== Rolled over to ChangeLog-2018-01-01 ==
mcatanzaro@igalia.com [Tue, 2 Jan 2018 04:27:34 +0000 (04:27 +0000)]
== Rolled over to ChangeLog-2018-01-01 ==

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226320 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months agoUnreviewed, add some more GTK crash expectations
mcatanzaro@igalia.com [Tue, 2 Jan 2018 04:18:47 +0000 (04:18 +0000)]
Unreviewed, add some more GTK crash expectations

* platform/gtk/TestExpectations:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226319 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months agoSource/JavaScriptCore:
jeffm@apple.com [Mon, 1 Jan 2018 23:42:50 +0000 (23:42 +0000)]
Source/JavaScriptCore:
Update user-visible copyright strings to include 2018
https://bugs.webkit.org/show_bug.cgi?id=181141

Reviewed by Dan Bernstein.

* Info.plist:

Source/WebCore:
Update user-visible copyright strings to include 2018
https://bugs.webkit.org/show_bug.cgi?id=181141

Reviewed by Dan Bernstein.

* Info.plist:

Source/WebKit:
[Attachment Support] Remove current macOS support for dragging file-backed attachments
https://bugs.webkit.org/show_bug.cgi?id=181188

Patch by Wenson Hsieh <wenson_hsieh@apple.com> on 2017-12-30
Reviewed by Dan Bernstein.

See WebCore/ChangeLog for more detail.

* UIProcess/Cocoa/WebPageProxyCocoa.mm:
(WebKit::WebPageProxy::setPromisedDataForAttachment): Deleted.
* UIProcess/Cocoa/WebViewImpl.h:
* UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::setPromisedDataForAttachment): Deleted.
* UIProcess/PageClient.h:
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* UIProcess/mac/PageClientImplMac.h:
* UIProcess/mac/PageClientImplMac.mm:
(WebKit::PageClientImpl::setPromisedDataForAttachment): Deleted.
* UIProcess/mac/WebPageProxyMac.mm:
(WebKit::WebPageProxy::setPromisedDataForAttachment): Deleted.
* WebProcess/WebCoreSupport/WebDragClient.h:
* WebProcess/WebCoreSupport/mac/WebDragClientMac.mm:
(WebKit::WebDragClient::declareAndWriteAttachment): Deleted.

Source/WebKitLegacy/mac:
Update user-visible copyright strings to include 2018
https://bugs.webkit.org/show_bug.cgi?id=181141

Reviewed by Dan Bernstein.

* Info.plist:

WebKitLibraries:
Update user-visible copyright strings to include 2018
https://bugs.webkit.org/show_bug.cgi?id=181141

Reviewed by Dan Bernstein.

* win/tools/scripts/COPYRIGHT-END-YEAR:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226318 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months agoREGRESSION (r225122): fePointLights don't work
simon.fraser@apple.com [Mon, 1 Jan 2018 20:32:33 +0000 (20:32 +0000)]
REGRESSION (r225122): fePointLights don't work
https://bugs.webkit.org/show_bug.cgi?id=181142

Reviewed by Dan Bates.

Source/WebCore:

r225122 refactored the initialLightingData code, but failed to set the lighting
color in the return value of PointLightSource::computePixelLightingData, so fePointLights
always used black.

Also fix a spelling error in initialLightingData.

Tests: svg/filters/fePointLight-color.svg

* platform/graphics/filters/DistantLightSource.cpp:
(WebCore::DistantLightSource::initPaintingData):
(WebCore::DistantLightSource::computePixelLightingData const):
* platform/graphics/filters/FELighting.cpp:
(WebCore::FELighting::drawLighting):
* platform/graphics/filters/LightSource.h:
* platform/graphics/filters/PointLightSource.cpp:
(WebCore::PointLightSource::computePixelLightingData const):
* platform/graphics/filters/SpotLightSource.cpp:
(WebCore::SpotLightSource::computePixelLightingData const):

LayoutTests:

Ref test that compares a point light with a flood color.

* svg/filters/fePointLight-color-expected.svg: Added.
* svg/filters/fePointLight-color.svg: Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226317 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months agoBottom right pixel of feDiffuseLighting has the wrong color
simon.fraser@apple.com [Mon, 1 Jan 2018 20:28:32 +0000 (20:28 +0000)]
Bottom right pixel of feDiffuseLighting has the wrong color
https://bugs.webkit.org/show_bug.cgi?id=181203

Reviewed by Antti Koivisto.

Source/WebCore:

The lower right pixel of a feDiffuseLighting was the wrong color, because the kernel
values didn't match the spec for the bottom right Y values.

Test: svg/filters/feDiffuseLighting-bottomRightPixel.html

* platform/graphics/filters/FELighting.cpp:
(WebCore::FELighting::LightingData::bottomRightNormal const):

LayoutTests:

Test that draws an SVG image into a canvas, and scales it up without interpolation.

* svg/filters/feDiffuseLighting-bottomRightPixel-expected.html: Added.
* svg/filters/feDiffuseLighting-bottomRightPixel.html: Added.
* svg/filters/resources/feDiffuseLighting-rect.svg: Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226316 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months agoSVG lighting colors need to be converted into linearSRGB
simon.fraser@apple.com [Mon, 1 Jan 2018 19:53:39 +0000 (19:53 +0000)]
SVG lighting colors need to be converted into linearSRGB
https://bugs.webkit.org/show_bug.cgi?id=181196

Reviewed by Dan Bates.

Source/WebCore:

SVG filters, like feLighting, that poke values directly into buffers rather than going
through CG like feFlood, need to convert colors into the operating color space. So add
conversion functions to go between linear and sRGB colors, and use these in feLighting,
and in ImageBuffer (which is only used for non-CG platforms).

Tests: svg/filters/feSpotLight-color.svg

* platform/graphics/ColorUtilities.cpp:
(WebCore::linearToSRGBColorComponent):
(WebCore::sRGBToLinearColorComponent):
(WebCore::linearToSRGBColor):
(WebCore::sRGBToLinearColor):
* platform/graphics/ColorUtilities.h:
* platform/graphics/ImageBuffer.cpp:
(WebCore::ImageBuffer::transformColorSpace):
* platform/graphics/filters/FELighting.cpp:
(WebCore::FELighting::drawLighting):

LayoutTests:

Compare a far-away green spotlight with a green flood. The bottom right pixel always
has the wrong color (webkit.org/b/181203), so mask it out.

* svg/filters/feSpotLight-color-expected.svg: Added.
* svg/filters/feSpotLight-color.svg: Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226315 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months ago[WebCrypto] Avoid promises being destroyed in secondary threads
jiewen_tan@apple.com [Sun, 31 Dec 2017 09:25:47 +0000 (09:25 +0000)]
[WebCrypto] Avoid promises being destroyed in secondary threads
https://bugs.webkit.org/show_bug.cgi?id=180499
<rdar://problem/35890680>

Reviewed by Youenn Fablet.

This patch adds pending promise queue to SubtleCrypto such that it no longer
passes promises around different threads, which could cause crashes when
promises are destroyed in secondary threads.

Covered by existing tests.

* crypto/SubtleCrypto.cpp:
(WebCore::getPromise):
(WebCore::SubtleCrypto::encrypt):
(WebCore::SubtleCrypto::decrypt):
(WebCore::SubtleCrypto::sign):
(WebCore::SubtleCrypto::verify):
(WebCore::SubtleCrypto::digest):
(WebCore::SubtleCrypto::generateKey):
(WebCore::SubtleCrypto::deriveKey):
(WebCore::SubtleCrypto::deriveBits):
(WebCore::SubtleCrypto::importKey):
(WebCore::SubtleCrypto::exportKey):
(WebCore::SubtleCrypto::wrapKey):
(WebCore::SubtleCrypto::unwrapKey):
* crypto/SubtleCrypto.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226314 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months agoREGRESSION (r225494): Mouse pointer reappears shortly after hiding when scrolling...
mitz@apple.com [Sun, 31 Dec 2017 04:38:52 +0000 (04:38 +0000)]
REGRESSION (r225494): Mouse pointer reappears shortly after hiding when scrolling using arrow keys
https://bugs.webkit.org/show_bug.cgi?id=181193

Reviewed by Alexey Proskuryakov.

* page/EventHandler.cpp:
(WebCore::EventHandler::cancelAutoHideCursorTimer): Removed a call to unhide the cursor
  here.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226313 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months ago[Attachment Support] Remove current macOS support for dragging file-backed attachments
wenson_hsieh@apple.com [Sat, 30 Dec 2017 19:30:40 +0000 (19:30 +0000)]
[Attachment Support] Remove current macOS support for dragging file-backed attachments
https://bugs.webkit.org/show_bug.cgi?id=181188

Reviewed by Dan Bernstein.

Source/WebCore:

Support for dragging attachments out as files on the NSPasteboard was introduced in r181760. However, this is
(1) a macOS-specific implementation, and (2) does not support attachments whose files are backed by inline data
rather than a filepath. As part of adding further WebKit attachment element support, subsequent patches will
reimplement support for dragging attachment elements in a cross-Cocoa-platform way that also allows for either
data- or file-backed blobs to be written to the pasteboard.

No new functionality; no new tests. All existing layout and API tests still pass.

* page/DragClient.h:
(WebCore::DragClient::declareAndWriteDragImage):
(WebCore::DragClient::declareAndWriteAttachment): Deleted.
* page/DragController.cpp:
(WebCore::DragController::startDrag):
* page/DragController.h:
(WebCore::DragController::draggingImageURL const):
(WebCore::DragController::draggingAttachmentURL const): Deleted.
* page/gtk/DragControllerGtk.cpp:
(WebCore::DragController::declareAndWriteAttachment): Deleted.
* page/mac/DragControllerMac.mm:
(WebCore::DragController::declareAndWriteAttachment): Deleted.
* page/win/DragControllerWin.cpp:
(WebCore::DragController::declareAndWriteAttachment): Deleted.
* rendering/HitTestResult.cpp:
(WebCore::HitTestResult::absoluteAttachmentURL const): Deleted.
* rendering/HitTestResult.h:

Source/WebKit:

See WebCore/ChangeLog for more detail.

* UIProcess/Cocoa/WebPageProxyCocoa.mm:
(WebKit::WebPageProxy::setPromisedDataForAttachment): Deleted.
* UIProcess/Cocoa/WebViewImpl.h:
* UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::setPromisedDataForAttachment): Deleted.
* UIProcess/PageClient.h:
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* UIProcess/mac/PageClientImplMac.h:
* UIProcess/mac/PageClientImplMac.mm:
(WebKit::PageClientImpl::setPromisedDataForAttachment): Deleted.
* UIProcess/mac/WebPageProxyMac.mm:
(WebKit::WebPageProxy::setPromisedDataForAttachment): Deleted.
* WebProcess/WebCoreSupport/WebDragClient.h:
* WebProcess/WebCoreSupport/mac/WebDragClientMac.mm:
(WebKit::WebDragClient::declareAndWriteAttachment): Deleted.

Source/WebKitLegacy/mac:

See WebCore/ChangeLog for more detail.

* WebCoreSupport/WebDragClient.h:
* WebCoreSupport/WebDragClient.mm:
(WebDragClient::declareAndWriteAttachment): Deleted.
* WebView/WebHTMLView.mm:
(-[WebHTMLView namesOfPromisedFilesDroppedAtDestination:]):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226312 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months ago[JSC] Remove unused JSTypes
utatane.tea@gmail.com [Sat, 30 Dec 2017 19:05:32 +0000 (19:05 +0000)]
[JSC] Remove unused JSTypes
https://bugs.webkit.org/show_bug.cgi?id=181184

Reviewed by Saam Barati.

JSType includes some unused types such as NullType. They are for
primitive values in old days. But now JSType is only used for JSCells.

* runtime/JSType.h:
* runtime/TypedArrayType.cpp:
(JSC::typeForTypedArrayType):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226311 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months agoRemove op_assert and make @assert in builtins a function call so we have DFG/FTL...
sbarati@apple.com [Fri, 29 Dec 2017 07:52:24 +0000 (07:52 +0000)]
Remove op_assert and make @assert in builtins a function call so we have DFG/FTL coverage for builtins that use @assert in debug builds
https://bugs.webkit.org/show_bug.cgi?id=181176

Reviewed by Yusuke Suzuki.

Previously, op_assert was only implemented in the LLInt and baseline JIT. This
meant that any builtin that used @assert was not tiering up to the DFG/FTL
in debug builds. This patch changes @assert to just call a host function when
!ASSERT_DISABLED. It's a no-op when ASSERT_DISABLED. Now, builtins that use @assert
will tier up to the DFG/FTL on debug builds.

* builtins/BuiltinNames.h:
* bytecode/BytecodeDumper.cpp:
(JSC::BytecodeDumper<Block>::dumpBytecode):
* bytecode/BytecodeIntrinsicRegistry.h:
* bytecode/BytecodeList.json:
* bytecode/BytecodeUseDef.h:
(JSC::computeUsesForBytecodeOffset):
(JSC::computeDefsForBytecodeOffset):
* bytecompiler/BytecodeGenerator.cpp:
(JSC::BytecodeGenerator::emitAssert): Deleted.
* bytecompiler/BytecodeGenerator.h:
* bytecompiler/NodesCodegen.cpp:
(JSC::FunctionCallResolveNode::emitBytecode):
(JSC::BytecodeIntrinsicNode::emit_intrinsic_assert): Deleted.
* jit/JIT.cpp:
(JSC::JIT::privateCompileMainPass):
* llint/LowLevelInterpreter.asm:
* runtime/CommonSlowPaths.cpp:
* runtime/CommonSlowPaths.h:
* runtime/JSGlobalObject.cpp:
(JSC::assertCall):
(JSC::JSGlobalObject::init):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226310 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months agoRenderTreeUpdater::GeneratedContent should hold a weak reference to RenderQuote.
zalan@apple.com [Fri, 29 Dec 2017 06:18:48 +0000 (06:18 +0000)]
RenderTreeUpdater::GeneratedContent should hold a weak reference to RenderQuote.
https://bugs.webkit.org/show_bug.cgi?id=181185
<rdar://problem/36235307>

Reviewed by David Kilzer.

Source/WebCore:

Test: fast/css/content/content-quotes-crash-with-details.html

* rendering/updating/RenderTreeUpdaterGeneratedContent.cpp:
(WebCore::RenderTreeUpdater::GeneratedContent::updateQuotesUpTo):
* rendering/updating/RenderTreeUpdaterGeneratedContent.h:
(): Deleted.

LayoutTests:

* fast/css/content/content-quotes-crash-with-details-expected.txt: Added.
* fast/css/content/content-quotes-crash-with-details.html: Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226309 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 months agoAdd a ProcessIdentifier, vended from the UI process, to each child process
beidson@apple.com [Fri, 29 Dec 2017 05:56:29 +0000 (05:56 +0000)]
Add a ProcessIdentifier, vended from the UI process, to each child process
https://bugs.webkit.org/show_bug.cgi?id=181155

Reviewed by Brent Fulgham.

Source/WebCore:

No new tests (Not yet testable)

More than once we've needed to create an identifier for an object that is unique across
all processes no matter which process it came from.

Sometimes we have an object or proxy object to the UI, Storage, or Network process
that allows us to augment a process-unique identifier to be globally unique. Due to multiple
sessions even this isn't good enough. Other times we have to create more hair-brained solutions.

In upcoming MessagePort work (Next step is https://bugs.webkit.org/show_bug.cgi?id=181172)
there was no truly workable solution for this.

By introducing a new ProcessIdentifier to each WK2 child processes that is guaranteed to be
unique over the run of a given UI process, we can easily create an object in any process and
identify it uniquely across all processes.

Obviously "process identifier" brings to mind a processes PID but that isn't good enough.
The number of PIDs on the system is fairly low and they are global across all
processes on the system. It is easy to see how a given UI process that runs for long enough
(such as a web browser that the user rarely quits) will start to run in to recycled PIDs,
therefore breaking the uniqueness guarantee that is required.

* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* platform/Process.cpp: Added.
(WebCore::Process::setIdentifier): Sets the process-wise identifier (to be used during WK2
  child process initialization)
(WebCore::Process::identifier): Get the process-wide identifier.
* platform/Process.h: Added.

Source/WebKit:

* Shared/ChildProcess.cpp:
(WebKit::ChildProcess::initialize): Set the process-wide identifier if the initialization
  parameters have it. Cocoa ASSERTS it exists; non-Cocoa platforms will have to figure this
  out soon.
* Shared/ChildProcess.h:

* Shared/EntryPointUtilities/mac/XPCService/XPCServiceEntryPoint.h:
(WebKit::XPCServiceInitializer):
* Shared/EntryPointUtilities/mac/XPCService/XPCServiceEntryPoint.mm:
(WebKit::XPCServiceInitializerDelegate::getProcessIdentifier):

* UIProcess/ChildProcessProxy.cpp:
(WebKit::ChildProcessProxy::getLaunchOptions):
* UIProcess/ChildProcessProxy.h:
(WebKit::ChildProcessProxy::coreProcessIdentifier const):

* UIProcess/Launcher/ProcessLauncher.h:
* UIProcess/Launcher/mac/ProcessLauncherMac.mm:
(WebKit::ProcessLauncher::launchProcess):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226308 268f45cc-cd09-0410-ab3c-d52691b4dbfc