Timeline



Jan 6, 2018:

10:31 PM Changeset in webkit [226492] by Simon Fraser
  • 6 edits
    2 adds in trunk

Possible crash computing event regions
https://bugs.webkit.org/show_bug.cgi?id=181368
rdar://problem/34847081

Reviewed by Zalan Bujtas.

Source/WebCore:

Don't trigger layout in Element::absoluteEventHandlerBounds(), since this can run arbirary script
which might delete elements or re-enter Document::absoluteRegionForEventTargets().

It's OK to not trigger layout, because if layout is dirty, the next layout will update event regions again.

Add a LayoutDisallowedScope to check that Document::absoluteRegionForEventTargets() doesn't
trigger layout, and move the check for LayoutDisallowedScope::isLayoutAllowed() from Document::updateLayout()
to LayoutContext::layout(), since some layouts don't happen via the former (e.g. the one being removed here).

The test checks that the assertion does not fire. I was not able to get a reliable test for any crash.

Test: fast/events/event-handler-regions-layout.html

  • dom/Document.cpp:

(WebCore::Document::updateLayout):
(WebCore::Document::absoluteRegionForEventTargets):

  • dom/Element.cpp:

(WebCore::Element::absoluteEventHandlerBounds):

  • page/LayoutContext.cpp:

(WebCore::LayoutContext::layout):

  • rendering/LayoutDisallowedScope.h: Move the #ifdefs around to avoid defining the enum twice.

(WebCore::LayoutDisallowedScope::LayoutDisallowedScope):
(WebCore::LayoutDisallowedScope::isLayoutAllowed):

LayoutTests:

  • fast/events/event-handler-regions-layout-expected.txt: Added.
  • fast/events/event-handler-regions-layout.html: Added.
9:48 PM Changeset in webkit [226491] by Simon Fraser
  • 5 edits
    2 adds in trunk

Crash under RenderLayer::scrollTo() with marquee
https://bugs.webkit.org/show_bug.cgi?id=181349
rdar://problem/36190168

Reviewed by Zalan Bujtas.

Source/WebCore:

Don't call updateWidgetPositions() synchonously during RenderLayer scrolling, because it
can run arbitrary script which may trigger destruction of this RenderLayer.

Instead, queue up updateWidgetPositions() on a zero-delay timer.

Under some circumstances this may allow a paint to occur before the widgets have been
updated (which could be fixed with a more invasive change), but in practice I saw no
painting issues with plug-ins or iframes inside overflow scroll, in WebKit or LegacyWebKit.

Test: fast/scrolling/marquee-scroll-crash.html

  • page/FrameView.cpp:

(WebCore::FrameView::FrameView):
(WebCore::FrameView::updateWidgetPositions):
(WebCore::FrameView::scheduleUpdateWidgetPositions):
(WebCore::FrameView::updateWidgetPositionsTimerFired):

  • page/FrameView.h:
  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::scrollTo):

LayoutTests:

  • fast/scrolling/marquee-scroll-crash-expected.txt: Added.
  • fast/scrolling/marquee-scroll-crash.html: Added.
9:18 PM Changeset in webkit [226490] by dino@apple.com
  • 4 edits
    4 adds in trunk

Accurately clip copyTexImage2D and copyTexSubImage2D
https://bugs.webkit.org/show_bug.cgi?id=181356
<rdar://problem/35083877>

Reviewed by Eric Carlson.

Source/WebCore:

The code to make sure copyTexSubImage2D and copyTexImage2D will not try to read
out of bounds had a bad bug introduced here:
https://bugs.webkit.org/show_bug.cgi?id=51421

With appropriate parameters, it would produce a rectangle with
negative dimensions. Most GL drivers just ignored this, but some
are not happy.

Test: fast/canvas/webgl/copy-tex-image-and-sub-image-2d-bad-input.html

  • html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::clip2D): Reimplement this in a more sane manner, and use
checked arithmetic while here.

  • html/canvas/WebGLRenderingContextBase.h:

(WebCore::clip1D): Deleted.
(WebCore::clip2D): Deleted.

LayoutTests:

  • fast/canvas/webgl/copy-tex-image-and-sub-image-2d-bad-input-expected.txt: Added.
  • fast/canvas/webgl/copy-tex-image-and-sub-image-2d-bad-input.html: Added.
4:15 PM Changeset in webkit [226489] by Yusuke Suzuki
  • 9 edits
    1 add in trunk

Object.getOwnPropertyNames includes "arguments" and "caller" for bound functions
https://bugs.webkit.org/show_bug.cgi?id=181321

Reviewed by Saam Barati.

JSTests:

  • stress/bound-function-does-not-have-caller-and-arguments.js: Added.

(shouldBe):
(testFunction):

  • test262.yaml:

Source/JavaScriptCore:

According to ECMA262 16.2[1], functions created using the bind method must not have
"caller" and "arguments" own properties.

[1]: https://tc39.github.io/ecma262/#sec-forbidden-extensions

  • runtime/JSBoundFunction.cpp:

(JSC::JSBoundFunction::finishCreation):

LayoutTests:

  • inspector/model/remote-object-get-properties-expected.txt:
  • inspector/runtime/getProperties-expected.txt:
  • js/script-tests/strict-throw-type-error.js:
  • js/strict-throw-type-error-expected.txt:
1:01 PM Changeset in webkit [226488] by Antti Koivisto
  • 3 edits in trunk/Source/WebCore

Use WeakPtr for RenderTreePosition::m_nextSibling
https://bugs.webkit.org/show_bug.cgi?id=181363

Reviewed by Zalan Bujtas.

For safety. In most cases it is null and won't cause us to instantiate WeakReferences for
many new objects.

  • rendering/updating/RenderTreePosition.cpp:

(WebCore::RenderTreePosition::computeNextSibling):

  • rendering/updating/RenderTreePosition.h:

(WebCore::RenderTreePosition::RenderTreePosition):
(WebCore::RenderTreePosition::nextSibling const):

8:52 AM Changeset in webkit [226487] by mitz@apple.com
  • 5 edits
    2 moves
    2 adds in trunk/Source/WebKit

REGRESSION (r226218): iOS-only assets are installed on macOS
https://bugs.webkit.org/show_bug.cgi?id=181362

Reviewed by Anders Carlsson.

  • Configurations/WebKit.xcconfig: Exclude everything under Resources/ios when not targeting iOS.
  • Resources/mac: Added.
  • Resources/mac/mediaIcon.pdf: Moved here…
  • Resources/mediaIcon.pdf: …from here.
  • WebKit.xcassets: Moved under Resources/ios.
  • WebKit.xcodeproj/project.pbxproj: Created an ios group under the Resources group, and cleaned up the mac group. Removed the Recovered References group.
12:56 AM Changeset in webkit [226486] by Julien Brianceau
  • 2 edits in trunk/Tools

Unreviewed, remove my Cisco email from contributors.json

  • Scripts/webkitpy/common/config/contributors.json:

Jan 5, 2018:

11:01 PM Changeset in webkit [226485] by jfbastien@apple.com
  • 14 edits in trunk

WebAssembly: poison JS object's secrets
https://bugs.webkit.org/show_bug.cgi?id=181339
<rdar://problem/36325001>

Reviewed by Mark Lam.

Source/JavaScriptCore:

Separating WebAssembly's JS objects from their non-JS
implementation means that all interesting information lives
outside of the JS object itself. This patch poisons each JS
object's pointer to non-JS implementation using the poisoning
mechanism and a unique key per JS object type origin.

  • runtime/JSCPoison.h:
  • wasm/js/JSToWasm.cpp:

(JSC::Wasm::createJSToWasmWrapper): JS -> wasm stores the JS
object in a stack slot when fast TLS is disabled. This requires
that we unpoison the Wasm::Instance.

  • wasm/js/JSWebAssemblyCodeBlock.h:
  • wasm/js/JSWebAssemblyInstance.h:

(JSC::JSWebAssemblyInstance::offsetOfPoisonedInstance): renamed to
be explicit that the pointer is poisoned.

  • wasm/js/JSWebAssemblyMemory.h:
  • wasm/js/JSWebAssemblyModule.h:
  • wasm/js/JSWebAssemblyTable.h:

Source/WTF:

swapping a poisoned pointer with a non-poisoned one (as is done in
JSWebAssembyMemory::adopt) was missing.

  • wtf/Poisoned.h:

(WTF::PoisonedImpl::swap):
(WTF::ConstExprPoisonedPtrTraits::swap):

Tools:

Update tests for swap(Poisoned<k, T>, T*)

  • TestWebKitAPI/Tests/WTF/ConstExprPoisoned.cpp:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WTF/Poisoned.cpp:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WTF/PoisonedRef.cpp:

(TestWebKitAPI::TEST):

7:48 PM Changeset in webkit [226484] by Wenson Hsieh
  • 2 edits in trunk/Tools

REGRESSION(r226396) DataInteractionTests: ContentEditableToContentEditable and ContentEditableToTextarea are failing
https://bugs.webkit.org/show_bug.cgi?id=181359

Reviewed by Tim Horton.

Ensure that these tests still pass using older SDKs.

  • TestWebKitAPI/Tests/ios/DataInteractionTests.mm:

(TestWebKitAPI::TEST):

7:19 PM Changeset in webkit [226483] by ddkilzer@apple.com
  • 22 edits in trunk/Source

Re-enable -Wcast-qual in WebCore for Apple ports
<https://webkit.org/b/177895>
<rdar://problem/34960830>

Reviewed by Joseph Pecoraro.

Source/WebCore:

  • Configurations/Base.xcconfig:

(WARNING_CFLAGS): Remove FIXME and add -Wcast-qual back to
arguments.

  • crypto/mac/SerializedCryptoKeyWrapMac.mm:

(WebCore::createAndStoreMasterKey):

  • Use checked_cf_cast<SecACLRef>().
  • editing/cocoa/DataDetection.mm:

(WebCore::detectItemAtPositionWithRange):

  • Manually cast CFTypeRef to DDResultRef until DDResultGetTypeID() is available as SPI.
  • platform/gamepad/mac/HIDGamepad.cpp:

(WebCore::HIDGamepad::initElementsFromArray):

  • Use checked_cf_cast<IOHIDElementRef>().
  • platform/graphics/avfoundation/objc/MediaSampleAVFObjC.mm:

(WebCore::MediaSampleAVFObjC::createImageSample):
(WebCore::CMSampleBufferIsRandomAccess):
(WebCore::CMSampleBufferIsNonDisplaying):
(WebCore::MediaSampleAVFObjC::createNonDisplayingCopy const):

  • Use checked_cf_cast<CFMutableDictionaryRef>() and checked_cf_cast<CFDictionaryRef>().
  • platform/graphics/cocoa/IOSurface.h:

(WebCore::IOSurface::asLayerContents):

  • Use reinterpret_cast<id>() to cast from IOSurfaceRef to id.
  • platform/graphics/cocoa/WebCoreDecompressionSession.mm:

(WebCore::WebCoreDecompressionSession::getFirstVideoFrame):
(WebCore::WebCoreDecompressionSession::automaticDequeue):
(WebCore::WebCoreDecompressionSession::imageForTime):
(WebCore::WebCoreDecompressionSession::getDecodeTime):
(WebCore::WebCoreDecompressionSession::getPresentationTime):
(WebCore::WebCoreDecompressionSession::getDuration):

  • Use checked_cf_cast<CMSampleBufferRef>().
  • platform/graphics/Font.h:

(WebCore::Font::m_kernedCFStringAttributes):
(WebCore::Font::m_nonKernedCFStringAttributes):

  • Change type from RetainPtr<CFDictionaryRef> to RetainPtr<CFMutableDictionaryRef> since that's what they are.
  • platform/graphics/mac/SimpleFontDataCoreText.cpp:

(WebCore::Font::getCFStringAttributes const):

  • Replace local mutableAttributes variable with attributesDictionary.get() since it returns the correct type now.
  • platform/ios/wak/WAKView.mm:

(-[WAKView _initWithViewRef:]):
(_WAKCopyWrapper):

  • platform/ios/wak/WKView.mm:

(_WKViewClearSuperview):
(WKViewFirstChild):
(WKViewNextSibling):

  • Use static_cast<WKViewRef>(const_cast<void*>()) to convert const void* variable to WKViewRef.
  • platform/mac/PasteboardMac.mm:

(WebCore::flipImageSpec):
(WebCore::setDragImageImpl):

  • Use const_cast<> to remove 'const' modifier from unsigned char pointers. This regressed while -Wcast-qual was disabled for WebCore.
  • platform/mac/SSLKeyGeneratorMac.mm:

(WebCore::signedPublicKeyAndChallengeString):

  • Use checked_cf_cast<SecACLRef>().
  • platform/mediastream/mac/RealtimeIncomingVideoSourceCocoa.cpp:

(WebCore::RealtimeIncomingVideoSourceCocoa::OnFrame):

  • Use checked_cf_cast<CFMutableDictionaryRef>().
  • platform/network/cf/SocketStreamHandleImplCFNet.cpp:

(WebCore::copyCONNECTProxyResponse):

  • Use checked_cf_cast<CFHTTPMessageRef>().
  • platform/network/cocoa/ResourceResponseCocoa.mm:

(WebCore::ResourceResponse::platformCertificateInfo const):

  • Use checked_cf_cast<SecTrustRef>().
  • platform/network/mac/CertificateInfoMac.mm:

(WebCore::CertificateInfo::containsNonRootSHA1SignedCertificate const):
(WebCore::CertificateInfo::dump const):

  • Use checked_cf_cast<SecCertificateRef>().
  • testing/cocoa/WebArchiveDumpSupport.mm:

(WebCoreTestSupport::createCFURLResponseFromResponseData):

  • Use checked_cf_cast<>() for CFMutable* types.

Source/WTF:

  • wtf/RetainPtr.h:

(WTF::RetainPtr::fromStorageTypeHelper const): Add const_cast<>
operator here since some CFTypes are not defined as const
pointers, which triggers a warning in C++ source with
-Wcast-qual when casting from CFTypeRef back to the original
type. Note that we use const_cast<CF_BRIDGED_TYPE(id) void*>()
here (and in TypeCastsCF.h below) since this is what CFTypeRef
is defined as in CFBase.h, but without the 'const' modifier.
(WTF::RetainPtr::fromStorageType const): Ditto.

  • wtf/cf/TypeCastsCF.h: Use #pragma once.

(WTF_DECLARE_CF_TYPE_TRAIT): Rename from DECLARE_CF_TYPE_TRAIT.
Don't #undef it so that it can be used in other source files.
(WTF_DECLARE_CF_MUTABLE_TYPE_TRAIT): Add new macro that is used
for declaring CFMutable types. The CFTypeID for CF_Foo_ and
CFMutable_Foo_ are the same, so we have to use a different macro
to declare type traits for those types.
(WTF::dynamic_cf_cast): Add assertion to catch issues in Debug
builds.
(WTF::checked_cf_cast): Inline code from WTF::dynamic_cf_cast
and change behavior to be more consistent between Debug and
Release builds, as well as other "checked" functions.
Previously this function would return nullptr in Release builds
if nullptr or the wrong type of object was passed in, but crash
in both cases on Debug builds. The new behavior always returns
nullptr if nullptr was passed in (but never crashes), and always
crashes if the wrong type of object is passed in.

6:16 PM Changeset in webkit [226482] by wilander@apple.com
  • 17 edits in trunk/Source

Storage Access API: Refactor to make naming accurate and explicit, simplify access table, and prepare for access removal for page
https://bugs.webkit.org/show_bug.cgi?id=181357
<rdar://problem/36331031>

Reviewed by Alex Christensen.

Source/WebCore:

No new tests. The only changed functionality that isn't covered
by existing tests is cross-origin iframes in the same partition
should be handled as already having access. This cannot be
tested in layout tests since they don't support subdomains.

This change does the following:

  • Changes function and message names to reflect how this feature was eventually implemented, i.e. access per frame.
  • Makes it explicit that the UI process is only involved in granting storage access and not removing storage access. The latter is done directly by the web process.
  • Simplifies the network process' entry map since only needs to be able to give access to one domain in one frame at a time. Access goes away on frame navigation so there can only be one domain at a time per frame. Also, the map now uses pageIDs as main keys to prepare for efficient access removal for all frames under a page.
  • Fixes a bug in so that a cross-origin iframe with the same partition as the top frame correctly is handled as already having access.
  • platform/network/NetworkStorageSession.h:
  • platform/network/cf/NetworkStorageSessionCFNet.cpp:

(WebCore::NetworkStorageSession::cookieStoragePartition const):

The only change here is the changed named of the call to
NetworkStorageSession::hasStorageAccessForFrame().

(WebCore::NetworkStorageSession::hasStorageAccessForFrame const):
(WebCore::NetworkStorageSession::grantStorageAccessForFrame):
(WebCore::NetworkStorageSession::removeStorageAccessForFrame):
(WebCore::NetworkStorageSession::isStorageAccessGranted const): Deleted.
(WebCore::NetworkStorageSession::setStorageAccessGranted): Deleted.
(WebCore::NetworkStorageSession::removeStorageAccess): Deleted.

Source/WebKit:

This change does the following:

  • Changes function and message names to reflect how this feature was eventually implemented, i.e. access per frame.
  • Makes it explicit that the UI process is only involved in granting storage access and not removing storage access. The latter is done directly by the web process.
  • Simplifies the network process' entry map since only needs to be able to give access to one domain in one frame at a time. Access goes away on frame navigation so there can only be one domain at a time per frame. Also, the map now uses pageIDs as main keys to prepare for efficient access removal for all frames under a page.
  • Fixes a bug in so that a cross-origin iframe with the same partition as the top frame correctly is handled as already having access.
  • NetworkProcess/NetworkConnectionToWebProcess.cpp:

(WebKit::NetworkConnectionToWebProcess::removeStorageAccessForFrame):
(WebKit::NetworkConnectionToWebProcess::removeStorageAccess): Deleted.

  • NetworkProcess/NetworkConnectionToWebProcess.h:
  • NetworkProcess/NetworkConnectionToWebProcess.messages.in:
  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::hasStorageAccessForFrame):
(WebKit::NetworkProcess::grantStorageAccessForFrame):
(WebKit::NetworkProcess::hasStorageAccessForPrevalentDomains): Deleted.
(WebKit::NetworkProcess::updateStorageAccessForPrevalentDomains): Deleted.

  • NetworkProcess/NetworkProcess.h:
  • NetworkProcess/NetworkProcess.messages.in:
  • UIProcess/Network/NetworkProcessProxy.cpp:

(WebKit::NetworkProcessProxy::hasStorageAccessForFrame):
(WebKit::NetworkProcessProxy::grantStorageAccessForFrame):
(WebKit::NetworkProcessProxy::hasStorageAccessForPrevalentDomains): Deleted.
(WebKit::NetworkProcessProxy::updateStorageAccessForPrevalentDomains): Deleted.

  • UIProcess/Network/NetworkProcessProxy.h:
  • UIProcess/WebResourceLoadStatisticsStore.cpp:

(WebKit::WebResourceLoadStatisticsStore::WebResourceLoadStatisticsStore):
(WebKit::WebResourceLoadStatisticsStore::hasStorageAccess):
(WebKit::WebResourceLoadStatisticsStore::requestStorageAccess):

  • UIProcess/WebResourceLoadStatisticsStore.h:
  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::hasStorageAccessForFrameHandler):
(WebKit::WebsiteDataStore::grantStorageAccessForFrameHandler):
(WebKit::WebsiteDataStore::enableResourceLoadStatisticsAndSetTestingCallback):
(WebKit::WebsiteDataStore::hasStorageAccessForPrevalentDomainsHandler): Deleted.
(WebKit::WebsiteDataStore::updateStorageAccessForPrevalentDomainsHandler): Deleted.

  • UIProcess/WebsiteData/WebsiteDataStore.h:
  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:

(WebKit::WebFrameLoaderClient::detachedFromParent2):
(WebKit::WebFrameLoaderClient::dispatchWillChangeDocument):

5:56 PM Changeset in webkit [226481] by commit-queue@webkit.org
  • 28 edits in trunk

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-05
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:
5:53 PM Changeset in webkit [226480] by Megan Gardner
  • 11 edits in trunk/Source/WebKit

Show Keyboard when re-launching WKWebView with a previously focused element
https://bugs.webkit.org/show_bug.cgi?id=181353

Reviewed by Tim Horton.

When relaunching an app with a WKWebView, restore the keyboard if there was a previously
focused element that was being assisted. The element was already being tracked, we just
needed to not bail on showing the keyboard for instances where it was a state change that
caused the element to be refocused.

  • UIProcess/PageClient.h:
  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • UIProcess/ios/PageClientImplIOS.h:
  • UIProcess/ios/PageClientImplIOS.mm:

(WebKit::PageClientImpl::startAssistingNode):

  • UIProcess/ios/WKContentView.h:
  • UIProcess/ios/WKContentViewInteraction.h:
  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView _startAssistingNode:userIsInteracting:blurPreviousNode:changingActivityState:userObject:]):
(-[WKContentView _startAssistingNode:userIsInteracting:blurPreviousNode:userObject:]): Deleted.

  • UIProcess/ios/WebPageProxyIOS.mm:

(WebKit::WebPageProxy::startAutoscrollAtPosition):
(WebKit::WebPageProxy::startAssistingNode):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::setActivityState):
(WebKit::WebPage::elementDidFocus):

  • WebProcess/WebPage/WebPage.h:
5:49 PM Changeset in webkit [226479] by achristensen@apple.com
  • 2 edits in trunk/Tools

Rebase API test after r226469
https://bugs.webkit.org/show_bug.cgi?id=181308

  • TestWebKitAPI/Tests/WebKitCocoa/LoadInvalidURLRequest.mm:

(-[LoadInvalidURLNavigationActionDelegate webView:didFailProvisionalNavigation:withError:]):
A URL with < or > in it is now recognized as invalid by WebKit. This is intentional, and matches our behavior before enabling the new URLParser.

5:29 PM Changeset in webkit [226478] by commit-queue@webkit.org
  • 1 edit
    3 adds in trunk/Source/WebInspectorUI

Web Inspector: Add another Protocol Version
https://bugs.webkit.org/show_bug.cgi?id=181354
<rdar://problem/35432817>

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2018-01-05
Reviewed by Matt Baker.

  • UserInterface/Protocol/Legacy/11.3/InspectorBackendCommands.js: Added.
  • Versions/Inspector-iOS-11.3.json: Added.
5:27 PM Changeset in webkit [226477] by Ryan Haddad
  • 2 edits in trunk/JSTests

Unreviewed, attempt to fix test262 after r226386.

  • test262.yaml:
5:27 PM Changeset in webkit [226476] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Mark fast/workers/worker-terminate.html as flaky.
https://bugs.webkit.org/show_bug.cgi?id=181098

Unreviewed test gardening.

  • platform/mac/TestExpectations:
5:19 PM Changeset in webkit [226475] by commit-queue@webkit.org
  • 4 edits in trunk/Source/ThirdParty/libwebrtc

Close WebRTC sockets when marked as defunct
https://bugs.webkit.org/show_bug.cgi?id=177324
rdar://problem/35244931

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

In case selected sockets return an error when trying to accept an incoming socket,
check whether the socket is defunct or not.
If so, close it properly.

  • Source/webrtc/base/asynctcpsocket.cc:
  • Source/webrtc/base/physicalsocketserver.cc:
  • Source/webrtc/base/socket.h:
4:37 PM Changeset in webkit [226474] by msaboff@apple.com
  • 10 edits in trunk/Source/JavaScriptCore

Add ability to disable indexed property masking for testing
https://bugs.webkit.org/show_bug.cgi?id=181350

Reviewed by Keith Miller.

Made the masking of indexed properties runtime controllable via a new JSC::Option
named disableSpectreMitigations. This is done to test the efficacy of that mitigation.

The new option has a generic name as it will probably be used to disable future mitigations.

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::SpeculativeJIT):
(JSC::DFG::SpeculativeJIT::loadFromIntTypedArray):
(JSC::DFG::SpeculativeJIT::compileGetByValOnFloatTypedArray):

  • dfg/DFGSpeculativeJIT.h:
  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::compile):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::LowerDFGToB3):
(JSC::FTL::DFG::LowerDFGToB3::maskedIndex):
(JSC::FTL::DFG::LowerDFGToB3::pointerIntoTypedArray):

  • jit/JIT.cpp:

(JSC::JIT::JIT):

  • jit/JIT.h:
  • jit/JITPropertyAccess.cpp:

(JSC::JIT::emitDoubleLoad):
(JSC::JIT::emitContiguousLoad):
(JSC::JIT::emitArrayStorageLoad):

  • runtime/Options.h:
  • wasm/WasmB3IRGenerator.cpp:

(JSC::Wasm::B3IRGenerator::emitCheckAndPreparePointer):

4:27 PM Changeset in webkit [226473] by msaboff@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Allow JSC Config Files to set Restricted Options
https://bugs.webkit.org/show_bug.cgi?id=181352

Reviewed by Mark Lam.

  • runtime/ConfigFile.cpp:

(JSC::ConfigFile::parse):

4:08 PM Changeset in webkit [226472] by achristensen@apple.com
  • 4 edits in trunk

Restrict navigation-time WKWebsiteDataStore swapping to main frame navigations
https://bugs.webkit.org/show_bug.cgi?id=181217

Reviewed by Tim Horton.

Source/WebKit:

If we swap during an iframe navigation, then we get a page in a strange state.
The intent of the main frame navigation WKWebsiteDataStore swap is that
that is a time when we can change storages without a page in an inconsistent state.

  • UIProcess/Cocoa/NavigationState.mm:

(WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm:

(-[WebsitePoliciesWebsiteDataStoreDelegate _webView:decidePolicyForNavigationAction:decisionHandler:]):
(TEST):

4:05 PM Changeset in webkit [226471] by achristensen@apple.com
  • 6 edits
    1 add in trunk

Add WKBundleFrameCreateFrameHandle
https://bugs.webkit.org/show_bug.cgi?id=181232
<rdar://problem/35926696>

Reviewed by Tim Horton.

Source/WebKit:

InjectedBundle clients wanting to sent a _WKFrameHandle cannot without this function.
Before, they would just send the WKBundleFrameRef which would be changed into a WKFrameRef
in the UIProcess by WebProcessProxy::transformHandlesToObjects, but there is no ObjC equivalent
of WKFrameRef, so we were just getting a WKObject when we wanted a _WKFrameHandle.
We can't change WebProcessProxy::transformHandlesToObjects without being incompatible with the
existing C API, so let's add a way for clients to say "I want a _WKFrameHandle".

  • WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:

(WKBundleFrameCreateFrameHandle):

  • WebProcess/InjectedBundle/API/c/WKBundlePage.h:

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKitCocoa/FrameHandleSerialization.mm: Added.

(mouseDidMoveOverElement):
(-[FrameHandleSerialization webProcessPlugIn:didCreateBrowserContextController:]):

  • TestWebKitAPI/Tests/WebKitCocoa/UIDelegate.mm:

(-[MouseMoveOverElementDelegate _webView:mouseDidMoveOverElement:withFlags:userInfo:]):
(TEST):

3:48 PM Changeset in webkit [226470] by Wenson Hsieh
  • 18 edits in trunk/Source

[Attachment Support] Add a way to write blob data to a file URL from the UI process
https://bugs.webkit.org/show_bug.cgi?id=181236

Reviewed by Brady Eidson.

Source/WebCore:

Add support for writing a blob to a designated file path. See comments below for more detail. No new tests, as
there change in behavior yet. See part 2: https://bugs.webkit.org/show_bug.cgi?id=181199.

  • page/DragController.cpp:

(WebCore::DragController::dragAttachmentElement):

  • platform/PromisedBlobInfo.h:

Remove PromisedBlobData entirely. This was added with the premise of having the web process deliver blob data to
the UI process. However, the new approach I'm taking just has the UI process tell the network process to write
a blob to a given location, so a data structure to deliver blob data over IPC is no longer necessary.

(WebCore::PromisedBlobData::hasData const): Deleted.
(WebCore::PromisedBlobData::hasFile const): Deleted.
(WebCore::PromisedBlobData::operator bool const): Deleted.
(WebCore::PromisedBlobData::fulfills const): Deleted.

  • platform/network/BlobRegistryImpl.cpp:

(WebCore::BlobRegistryImpl::populateBlobsForFileWriting):

Introduce a new helper to build a list of blob data for file writing.

(WebCore::writeFilePathsOrDataBuffersToFile):

Introduce a new static helper to write blob data (a list of file paths and data buffers) to a given file handle.
Automatically closes the given file handle upon exit.

(WebCore::BlobRegistryImpl::writeBlobsToTemporaryFiles):
(WebCore::BlobRegistryImpl::writeBlobToFilePath):

Pull out common logic in writeBlobsToTemporaryFiles and writeBlobToFilePath into helper methods (see above), and
refactor both methods to use the helpers.

  • platform/network/BlobRegistryImpl.h:

Source/WebKit:

Add support for writing a blob to a designated file path. In WebKit, this is mainly plumbing writeBlobToFilePath
through WebPageProxy to the network process.

  • NetworkProcess/FileAPI/NetworkBlobRegistry.cpp:

(WebKit::NetworkBlobRegistry::writeBlobToFilePath):

Call out to the BlobRegistryImpl to write blobs to the file path. Additionally grant sandbox extensions for any
file-backed blob parts corresponding to the given blob URL.

(WebKit::NetworkBlobRegistry::filesInBlob):

Introduce a version of filesInBlob that doesn't check against the NetworkConnectionToWebProcess. This is used
when the UI process is the driver for writing a blob.

  • NetworkProcess/FileAPI/NetworkBlobRegistry.h:
  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::writeBlobToFilePath):

Temporarily grant sandbox access to the given file path.

  • NetworkProcess/NetworkProcess.h:
  • NetworkProcess/NetworkProcess.messages.in:
  • Shared/WebCoreArgumentCoders.cpp:

(IPC::ArgumentCoder<PromisedBlobInfo>::encode):
(IPC::ArgumentCoder<PromisedBlobInfo>::decode):
(IPC::ArgumentCoder<PromisedBlobData>::encode): Deleted.
(IPC::ArgumentCoder<PromisedBlobData>::decode): Deleted.

Remove PromisedBlobData (see WebCore/ChangeLog for more information).

  • Shared/WebCoreArgumentCoders.h:
  • UIProcess/Network/NetworkProcessProxy.cpp:

(WebKit::NetworkProcessProxy::didClose):

If the network process is terminated, flush any pending callbacks in m_writeBlobToFilePathCallbackMap, passing
in a failure result (success := false) and clearing the callback map.

(WebKit::NetworkProcessProxy::writeBlobToFilePath):
(WebKit::NetworkProcessProxy::didWriteBlobToFilePath):

  • UIProcess/Network/NetworkProcessProxy.h:
  • UIProcess/Network/NetworkProcessProxy.messages.in:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::writeBlobToFilePath):

  • UIProcess/WebPageProxy.h:
3:38 PM Changeset in webkit [226469] by achristensen@apple.com
  • 9 edits in trunk

Forbid < and > in URL hosts
https://bugs.webkit.org/show_bug.cgi?id=181308
<rdar://problem/36012757>

Reviewed by Tim Horton.

LayoutTests/imported/w3c:

  • web-platform-tests/url/a-element-expected.txt:
  • web-platform-tests/url/a-element-origin-expected.txt:
  • web-platform-tests/url/a-element-origin-xhtml-expected.txt:
  • web-platform-tests/url/a-element-xhtml-expected.txt:
  • web-platform-tests/url/url-constructor-expected.txt:
  • web-platform-tests/url/url-origin-expected.txt:

Source/WebCore:

https://url.spec.whatwg.org/#forbidden-host-code-point does not include these characters yet, but I think it should.
Firefox fails to parse URLs with < or > in the host. Chrome percent encodes them. Safari needs to do something.
The web platform tests are unclear on this case, and they will need to be updated with the specification.
They do show a change in behavior, though.

  • platform/URLParser.cpp:

Add < and > to the list of forbidden host code points.

3:34 PM Changeset in webkit [226468] by eric.carlson@apple.com
  • 10 edits
    2 adds in trunk/Source/WebCore

[MediaStream] Add Mac screen capture source
https://bugs.webkit.org/show_bug.cgi?id=181333
<rdar://problem/36323219>

Reviewed by Dean Jackson.

Source/WebCore:

  • SourcesCocoa.txt: Add ScreenDisplayCaptureSourceMac.mm.
  • WebCore.xcodeproj/project.pbxproj: Ditto.
  • platform/cocoa/CoreVideoSoftLink.cpp: Declare new constants used.
  • platform/cocoa/CoreVideoSoftLink.h:
  • platform/mediastream/mac/DisplayCaptureManagerCocoa.cpp:

(WebCore::displayReconfigurationCallBack): Call refreshCaptureDevices.
(WebCore::DisplayCaptureManagerCocoa::~DisplayCaptureManagerCocoa): Unregister for display
reconfiguration callbacks.
(WebCore::DisplayCaptureManagerCocoa::captureDevices): Register for display reconfigrations.
(WebCore::DisplayCaptureManagerCocoa::refreshCaptureDevices): Use CGActiveDisplayList to
get list of active screens.
(WebCore::DisplayCaptureManagerCocoa::screenCaptureDeviceWithPersistentID): Validate screen
ID, return CaptureDevice.

  • platform/mediastream/mac/DisplayCaptureManagerCocoa.h:
  • platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp:

(WebCore::VideoCaptureSourceFactoryMac::createVideoCaptureSource): Deal with screen capture
on macOS.

Implement Mac screen capture with CGDisplayStream.

  • platform/mediastream/mac/ScreenDisplayCaptureSourceMac.h: Added.

(WebCore::ScreenDisplayCaptureSourceMac::DisplaySurface::~DisplaySurface):
(WebCore::ScreenDisplayCaptureSourceMac::DisplaySurface::operator=):
(WebCore::ScreenDisplayCaptureSourceMac::DisplaySurface::ioSurface const):

  • platform/mediastream/mac/ScreenDisplayCaptureSourceMac.mm: Added.

(WebCore::roundUpToMacroblockMultiple):
(WebCore::ScreenDisplayCaptureSourceMac::updateDisplayID):
(WebCore::ScreenDisplayCaptureSourceMac::create):
(WebCore::ScreenDisplayCaptureSourceMac::ScreenDisplayCaptureSourceMac):
(WebCore::ScreenDisplayCaptureSourceMac::~ScreenDisplayCaptureSourceMac):
(WebCore::ScreenDisplayCaptureSourceMac::createDisplayStream):
(WebCore::ScreenDisplayCaptureSourceMac::startProducingData):
(WebCore::ScreenDisplayCaptureSourceMac::stopProducingData):
(WebCore::ScreenDisplayCaptureSourceMac::sampleBufferFromPixelBuffer):
(WebCore::ScreenDisplayCaptureSourceMac::pixelBufferFromIOSurface):
(WebCore::ScreenDisplayCaptureSourceMac::generateFrame):
(WebCore::ScreenDisplayCaptureSourceMac::startDisplayStream):
(WebCore::ScreenDisplayCaptureSourceMac::applySize):
(WebCore::ScreenDisplayCaptureSourceMac::applyFrameRate):
(WebCore::ScreenDisplayCaptureSourceMac::commitConfiguration):
(WebCore::ScreenDisplayCaptureSourceMac::displayWasReconfigured):
(WebCore::ScreenDisplayCaptureSourceMac::displayReconfigurationCallBack):
(WebCore::ScreenDisplayCaptureSourceMac::frameAvailable):

Source/WebCore/PAL:

  • pal/spi/cg/CoreGraphicsSPI.h: Declare some CGDisplayMode SPI.
3:27 PM Changeset in webkit [226467] by mitz@apple.com
  • 3 edits in trunk/Source/WebKit

Add injected bundle equivalents of DOMHTMLDocument (DOMHTMLDocumentExtensions)
https://bugs.webkit.org/show_bug.cgi?id=181345

Reviewed by Tim Horton.

  • WebProcess/InjectedBundle/API/mac/WKDOMDocument.h: Declared new methods.
  • WebProcess/InjectedBundle/API/mac/WKDOMDocument.mm:

(-[WKDOMDocument createDocumentFragmentWithMarkupString:baseURL:]): Added. Calls WebCore’s

createFragmentFromMarkup.

(-[WKDOMDocument createDocumentFragmentWithText:]): Added. Calls WebCore’s

createFragmentFromText.

3:13 PM Changeset in webkit [226466] by don.olmstead@sony.com
  • 2 edits in trunk/Source/WebCore

[curl] Can't load file:// URL with a URL fragment identifier
https://bugs.webkit.org/show_bug.cgi?id=181170

Reviewed by Alex Christensen.

No new tests. No change in behavior.

  • platform/network/curl/CurlRequest.cpp:

(WebCore::CurlRequest::invokeDidReceiveResponseForFile):

2:52 PM Changeset in webkit [226465] by don.olmstead@sony.com
  • 2 edits
    3 adds in trunk/Source/WebKit

[Curl] Add implementation stubs for Network Cache
https://bugs.webkit.org/show_bug.cgi?id=181343

Reviewed by Alex Christensen.

  • NetworkProcess/cache/NetworkCacheCodersCurl.cpp: Added.

(WTF::Persistence::Coder<WebCore::CertificateInfo>::encode):
(WTF::Persistence::Coder<WebCore::CertificateInfo>::decode):

  • NetworkProcess/cache/NetworkCacheDataCurl.cpp: Added.

(WebKit::NetworkCache::Data::Data):
(WebKit::NetworkCache::Data::empty):
(WebKit::NetworkCache::Data::data const):
(WebKit::NetworkCache::Data::isNull const):
(WebKit::NetworkCache::Data::apply const):
(WebKit::NetworkCache::Data::subrange const):
(WebKit::NetworkCache::concatenate):
(WebKit::NetworkCache::Data::adoptMap):

  • NetworkProcess/cache/NetworkCacheIOChannelCurl.cpp: Added.

(WebKit::NetworkCache::IOChannel::IOChannel):
(WebKit::NetworkCache::IOChannel::~IOChannel):
(WebKit::NetworkCache::IOChannel::open):
(WebKit::NetworkCache::IOChannel::read):
(WebKit::NetworkCache::IOChannel::write):

  • PlatformWin.cmake:
2:42 PM Changeset in webkit [226464] by don.olmstead@sony.com
  • 3 edits in trunk/Source/WebKit

[Curl] Update method declarations in WebKit
https://bugs.webkit.org/show_bug.cgi?id=181342

Reviewed by Alex Christensen.

  • NetworkProcess/Downloads/curl/DownloadCurl.cpp:

(WebKit::Download::resume):

  • NetworkProcess/curl/RemoteNetworkingContextCurl.cpp:

(WebKit::RemoteNetworkingContext::ensurePrivateBrowsingSession): Deleted.
(WebKit::RemoteNetworkingContext::blockedError const): Deleted.

2:42 PM Changeset in webkit [226463] by don.olmstead@sony.com
  • 2 edits in trunk/Source/WebCore

TextCodec uses std::array but does not include it
https://bugs.webkit.org/show_bug.cgi?id=181340

Reviewed by Alex Christensen.

No new tests. No change in behavior.

  • platform/text/TextCodec.h:
2:34 PM Changeset in webkit [226462] by pvollan@apple.com
  • 2 edits in trunk/LayoutTests

Mark mathml/opentype/horizontal-munderover.html as failure on Windows.
https://bugs.webkit.org/show_bug.cgi?id=181346

Unreviewed test gardening.

  • platform/win/TestExpectations:
2:02 PM Changeset in webkit [226461] by keith_miller@apple.com
  • 24 edits in trunk/Source

TypedArrays and Wasm should use index masking.
https://bugs.webkit.org/show_bug.cgi?id=181313

Reviewed by Michael Saboff.

Source/JavaScriptCore:

We should have index masking for our TypedArray code in the
DFG/FTL and for Wasm when doing bounds checking. Index masking for
Wasm is added to the WasmBoundsCheckValue. Since we don't CSE any
WasmBoundsCheckValues we don't need to worry about combining a
bounds check for a load and a store. I went with fusing the
pointer masking in the WasmBoundsCheckValue since it should reduce
additional compiler overhead.

  • b3/B3LowerToAir.cpp:
  • b3/B3Validate.cpp:
  • b3/B3WasmBoundsCheckValue.cpp:

(JSC::B3::WasmBoundsCheckValue::WasmBoundsCheckValue):
(JSC::B3::WasmBoundsCheckValue::dumpMeta const):

  • b3/B3WasmBoundsCheckValue.h:

(JSC::B3::WasmBoundsCheckValue::pinnedIndexingMask const):

  • b3/air/AirCustom.h:

(JSC::B3::Air::WasmBoundsCheckCustom::generate):

  • b3/testb3.cpp:

(JSC::B3::testWasmBoundsCheck):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::emitAllocateRawObject):
(JSC::DFG::SpeculativeJIT::loadFromIntTypedArray):
(JSC::DFG::SpeculativeJIT::compileGetByValOnIntTypedArray):
(JSC::DFG::SpeculativeJIT::compileGetByValOnFloatTypedArray):
(JSC::DFG::SpeculativeJIT::compileNewTypedArrayWithSize):

  • dfg/DFGSpeculativeJIT.h:
  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::compile):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileAtomicsReadModifyWrite):
(JSC::FTL::DFG::LowerDFGToB3::compileGetByVal):
(JSC::FTL::DFG::LowerDFGToB3::compileNewTypedArray):
(JSC::FTL::DFG::LowerDFGToB3::pointerIntoTypedArray):

  • jit/JITPropertyAccess.cpp:

(JSC::JIT::emitIntTypedArrayGetByVal):

  • runtime/Butterfly.h:

(JSC::Butterfly::computeIndexingMask const):
(JSC::Butterfly::computeIndexingMaskForVectorLength): Deleted.

  • runtime/JSArrayBufferView.cpp:

(JSC::JSArrayBufferView::JSArrayBufferView):

  • wasm/WasmB3IRGenerator.cpp:

(JSC::Wasm::B3IRGenerator::B3IRGenerator):
(JSC::Wasm::B3IRGenerator::restoreWebAssemblyGlobalState):
(JSC::Wasm::B3IRGenerator::emitCheckAndPreparePointer):
(JSC::Wasm::B3IRGenerator::load):
(JSC::Wasm::B3IRGenerator::store):
(JSC::Wasm::B3IRGenerator::addCallIndirect):

  • wasm/WasmBinding.cpp:

(JSC::Wasm::wasmToWasm):

  • wasm/WasmMemory.cpp:

(JSC::Wasm::Memory::Memory):
(JSC::Wasm::Memory::grow):

  • wasm/WasmMemory.h:

(JSC::Wasm::Memory::offsetOfIndexingMask):

  • wasm/WasmMemoryInformation.cpp:

(JSC::Wasm::PinnedRegisterInfo::get):
(JSC::Wasm::PinnedRegisterInfo::PinnedRegisterInfo):

  • wasm/WasmMemoryInformation.h:

(JSC::Wasm::PinnedRegisterInfo::toSave const):

  • wasm/js/JSToWasm.cpp:

(JSC::Wasm::createJSToWasmWrapper):

Source/WTF:

  • wtf/MathExtras.h:

(WTF::computeIndexingMask):

1:50 PM Changeset in webkit [226460] by don.olmstead@sony.com
  • 3 edits in trunk/Source/WebKit

WebFullScreenManager should compile when ENABLE(VIDEO) is off
https://bugs.webkit.org/show_bug.cgi?id=181338

Reviewed by Alex Christensen.

  • WebProcess/FullScreen/WebFullScreenManager.cpp:

(WebKit::WebFullScreenManager::didEnterFullScreen):
(WebKit::WebFullScreenManager::willExitFullScreen):

  • WebProcess/FullScreen/WebFullScreenManager.h:
1:44 PM Changeset in webkit [226459] by jmarcell@apple.com
  • 5 edits in tags/Safari-605.1.19/Source/WebKit

Cherry-pick r226458. rdar://problem/36311296

1:28 PM Changeset in webkit [226458] by aestes@apple.com
  • 5 edits in trunk/Source/WebKit

[Apple Pay] Disable Apple Pay on platforms that don't have PassKit.framework
https://bugs.webkit.org/show_bug.cgi?id=181335
<rdar://problem/36311296>

Reviewed by Brady Eidson.

When Safari is running in the macOS Base System, PassKit.framework is not available.
If we fail to dlopen PassKit, we should disable Apple Pay.

  • UIProcess/API/C/WKPreferences.cpp:

(WKPreferencesSetApplePayEnabled):

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _initializeWithConfiguration:]):

  • UIProcess/ApplePay/WebPaymentCoordinatorProxy.h:
  • UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:

(WebKit::WebPaymentCoordinatorProxy::availablePaymentNetworks):
(WebKit::WebPaymentCoordinatorProxy::platformSupportsPayments):

12:10 PM Changeset in webkit [226457] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore

SVGAnimatedListPropertyTearOff::synchronizeWrappersIfNeeded() should do nothing if the property is not animating
https://bugs.webkit.org/show_bug.cgi?id=181316
<rdar://problem/36147545>

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2018-01-05
Reviewed by Simon Fraser.

This is a speculative change to fix a crash which appeared after r226065.
The crash is very intermittent and sometimes very hard to reproduce. The
basic code analysis did not show how this crash can even happen.

  • svg/SVGAnimatedTypeAnimator.h:

(WebCore::SVGAnimatedTypeAnimator::resetFromBaseValues): For SVG property
with two values, e.g. <SVGAngleValue, SVGMarkerOrientType>, we need to
detach the wrappers of the animated property if the animated values are
going to change. This is similar to what we did in resetFromBaseValue().

  • svg/properties/SVGAnimatedListPropertyTearOff.h:

(WebCore::SVGAnimatedListPropertyTearOff::synchronizeWrappersIfNeeded):

11:51 AM Changeset in webkit [226456] by commit-queue@webkit.org
  • 3 edits
    1 delete in trunk/LayoutTests

Skip LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/claim-shared-worker-fetch.https.html
https://bugs.webkit.org/show_bug.cgi?id=181329

Unreviewed.
LayoutTests/imported/w3c:

Patch by Youenn Fablet <youenn@apple.com> on 2018-01-05

  • web-platform-tests/service-workers/service-worker/claim-shared-worker-fetch.https-expected.txt: Removed.

LayoutTests:

SharedWorker is not supported.

Patch by Youenn Fablet <youenn@apple.com> on 2018-01-05

11:34 AM Changeset in webkit [226455] by Matt Lewis
  • 2 edits in trunk/LayoutTests

Marked fast/mediastream/MediaStream-MediaElement-setObject-null.html as flaky.
https://bugs.webkit.org/show_bug.cgi?id=181069

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
11:30 AM WebKitGTK/2.18.x edited by Michael Catanzaro
(diff)
11:09 AM Changeset in webkit [226454] by mitz@apple.com
  • 3 edits in trunk/Source/WebKit

Fixed the build following AppKit API deprecations in a recent SDKs

  • UIProcess/mac/WKFullScreenWindowController.mm:

(-[WKFullScreenWindowController enterFullScreen:]): Suppressed deprecation warnings.
(-[WKFullScreenWindowController finishedEnterFullScreenAnimation:]): Ditto.
(-[WKFullScreenWindowController exitFullScreen]): Ditto.
(-[WKFullScreenWindowController finishedExitFullScreenAnimation:]): Ditto.
(-[WKFullScreenWindowController completeFinishExitFullScreenAnimationAfterRepaint]): Ditto.
(-[WKFullScreenWindowController _startEnterFullScreenAnimationWithDuration:]): Ditto.
(-[WKFullScreenWindowController _startExitFullScreenAnimationWithDuration:]): Ditto.

  • UIProcess/mac/WKPrintingView.mm:

(-[WKPrintingView _setAutodisplay:]): Ditto.

11:01 AM Changeset in webkit [226453] by Matt Lewis
  • 27 edits in trunk

Unreviewed, rolling out r226401.

This caused timeouts on multiple platforms.

Reverted changeset:

"Implement Cache API partitioning based on ClientOrigin"
https://bugs.webkit.org/show_bug.cgi?id=181240
https://trac.webkit.org/changeset/226401

10:43 AM Changeset in webkit [226452] by mitz@apple.com
  • 7 edits in trunk/Source

Fixed the build following AppKit API deprecations in a recent SDKs

Source/WebCore:

  • platform/mac/PasteboardMac.mm:

(WebCore::setDragImageImpl): Suppressed deprecation warnings.

  • platform/mac/WidgetMac.mm:

(WebCore::Widget::paint): Ditto.

Source/WebKitLegacy/mac:

  • WebView/WebFullScreenController.mm:

(-[WebFullScreenController enterFullScreen:]): Suppressed deprecation warnings.
(-[WebFullScreenController exitFullScreen]): Ditto.
(-[WebFullScreenController _startEnterFullScreenAnimationWithDuration:]): Ditto.
(-[WebFullScreenController _startExitFullScreenAnimationWithDuration:]): Ditto.

  • WebView/WebHTMLView.mm:

(-[WebHTMLView drawRect:]): Ditto.
(-[WebHTMLView _endPrintModeAndRestoreWindowAutodisplay]): Ditto.
(-[WebHTMLView knowsPageRange:]): Ditto.

  • WebView/WebView.mm:

(LayerFlushController::flushLayers): Ditto.

10:14 AM Changeset in webkit [226451] by commit-queue@webkit.org
  • 6 edits
    8 adds in trunk

ServiceWorkers: Enable UserTiming / ResourceTiming
https://bugs.webkit.org/show_bug.cgi?id=181297
<rdar://problem/36307306>

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2018-01-05
Reviewed by Youenn Fablet.

Source/WebCore:

Tests: http/tests/workers/service/service-worker-resource-timing.https.html

http/tests/workers/service/service-worker-user-timing.https.html

  • loader/ResourceTiming.cpp:

(WebCore::ResourceTiming::ResourceTiming):
We used to clear extra NetworkLoadMetrics data early on. However,
for Workers we want to pass the complete NetworkLoadMetrics to
the Worker so that a Worker inspector has access to it.

  • page/PerformanceResourceTiming.cpp:

(WebCore::PerformanceResourceTiming::PerformanceResourceTiming):
Instead move the clearing of extra data to here, when the NetworkLoadMetrics
have finally settled into being used only for a performance entry.

Source/WebKit:

  • WebProcess/Storage/WebSWContextManagerConnection.cpp:

(WebKit::WebSWContextManagerConnection::updatePreferencesStore):
Enable Resource Timing / User Timing for the ServiceWorker process.

LayoutTests:

  • http/tests/workers/service/resources/data1.txt: Added.
  • http/tests/workers/service/resources/data2.txt: Added.

Resources to load from a service-worker.

  • http/tests/workers/service/resources/service-worker-resource-timing.js: Added.
  • http/tests/workers/service/service-worker-resource-timing.https-expected.txt: Added.
  • http/tests/workers/service/service-worker-resource-timing.https.html: Added.

Test that a ServiceWorker can produce resource entries for a few
different kinds of loads (CacheStorage load, and a fetch).

  • http/tests/workers/service/resources/service-worker-user-timing.js: Added.
  • http/tests/workers/service/service-worker-user-timing.https-expected.txt: Added.
  • http/tests/workers/service/service-worker-user-timing.https.html: Added.

Test that a ServiceWorker can produce a mark/measure entries.

9:59 AM Changeset in webkit [226450] by Chris Fleizach
  • 2 edits in trunk/Tools

iOS: Build fix after r226432.

Unreviewed. Stop duplicating speakAs symbols for iOS.

  • DumpRenderTree/AccessibilityUIElement.cpp:

(AccessibilityUIElement::speakAs):

9:10 AM Changeset in webkit [226449] by commit-queue@webkit.org
  • 3 edits in trunk/LayoutTests/imported/w3c

LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/fetch-event.https.html should not expect Upgrade-Insecure Requests header
https://bugs.webkit.org/show_bug.cgi?id=181286

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

Test previously expected upgrade-insecure-requests header to be inserted in a HTTP request.
Given the request URL is HTTPS, there is no need for that header.

  • web-platform-tests/service-workers/service-worker/fetch-event.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/fetch-event.https.html:
7:34 AM Changeset in webkit [226448] by jfernandez@igalia.com
  • 2 edits in trunk/Tools

Unreviewed, added myself as WebKit reviewer

  • Scripts/webkitpy/common/config/contributors.json:
6:39 AM Changeset in webkit [226447] by Claudio Saavedra
  • 3 edits in trunk/LayoutTests

[WPE][GTK] Unreviewed gardening

Unskip svg/hittest/svg-shapes-non-scale-stroke.html, passing after
r226443.

  • platform/gtk/TestExpectations:
  • platform/wpe/TestExpectations:
6:01 AM Changeset in webkit [226446] by Philippe Normand
  • 2 edits in trunk/Source/WebCore

[EME][GStreamer] Fix wrong ifdef
https://bugs.webkit.org/show_bug.cgi?id=181289

Reviewed by Alex Christensen.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::MediaPlayerPrivateGStreamer::handleMessage): Remove the
ENCRYPTED_MEDIA ifdef from the VIDEO_TRACK ifdef block. Both have
nothing to do together.

5:50 AM Changeset in webkit [226445] by Claudio Saavedra
  • 2 edits in trunk/LayoutTests

[WPE] Unreviewed gardening

  • platform/wpe/TestExpectations: Unskip two tests passing after r226404.
3:45 AM Changeset in webkit [226444] by Claudio Saavedra
  • 21 edits in trunk/LayoutTests

[WPE] Rebaseline test expectations after r226404

Unreviewed gardening.

  • platform/wpe/css1/font_properties/font_size-expected.txt:
  • platform/wpe/css1/text_properties/letter_spacing-expected.txt:
  • platform/wpe/css1/text_properties/line_height-expected.txt:
  • platform/wpe/css1/text_properties/text_indent-expected.txt:
  • platform/wpe/css1/text_properties/word_spacing-expected.txt:
  • platform/wpe/css1/units/length_units-expected.txt:
  • platform/wpe/css2.1/t040302-c61-ex-len-00-b-a-expected.txt:
  • platform/wpe/css2.1/t040302-c61-rel-len-00-b-ag-expected.txt:
  • platform/wpe/css2.1/t1008-c44-ln-box-02-d-ag-expected.txt:
  • platform/wpe/css2.1/t100801-c544-valgn-01-d-ag-expected.txt:
  • platform/wpe/css2.1/t100801-c544-valgn-03-d-agi-expected.txt:
  • platform/wpe/css2.1/t100801-c548-ln-ht-02-b-ag-expected.txt:
  • platform/wpe/css2.1/t1507-c526-font-sz-02-b-a-expected.txt:
  • platform/wpe/css2.1/t1601-c547-indent-00-b-a-expected.txt:
  • platform/wpe/css2.1/t1604-c542-letter-sp-00-b-a-expected.txt:
  • platform/wpe/svg/W3C-SVG-1.1-SE/coords-units-03-b-expected.txt:
  • platform/wpe/svg/W3C-SVG-1.1/coords-units-03-b-expected.txt:
  • platform/wpe/svg/custom/alignment-baseline-modes-expected.txt:
  • platform/wpe/svg/custom/dominant-baseline-modes-expected.txt:
  • platform/wpe/tables/mozilla/bugs/bug55527-expected.txt:
3:41 AM Changeset in webkit [226443] by commit-queue@webkit.org
  • 3 edits
    2 adds in trunk

[Cairo] Canvas: Path::clear should clear its transform
https://bugs.webkit.org/show_bug.cgi?id=181320

Patch by Fujii Hironori <Fujii Hironori> on 2018-01-05
Reviewed by Carlos Garcia Campos.

Source/WebCore:

Path of Cairo port has its cairo context. Path::clear() didn't
clear the transform matrix of the context.

Test: fast/canvas/reset-scaling-by-height-change.html

  • platform/graphics/cairo/PathCairo.cpp:

(WebCore::Path::clear): Reset the transform matrix of Path.

LayoutTests:

  • fast/canvas/reset-scaling-by-height-change-expected.txt: Added.
  • fast/canvas/reset-scaling-by-height-change.html: Added.
3:11 AM Changeset in webkit [226442] by commit-queue@webkit.org
  • 2 edits in trunk

REGRESSION(r226306)[Win][CMake] Unnecessary recompilations triggered by unconditionally copied header files of DerivedSources
https://bugs.webkit.org/show_bug.cgi?id=181324

Patch by Fujii Hironori <Fujii Hironori> on 2018-01-05
Reviewed by Konstantin Tokarev.

r226306 changed to use cmake -E copy to copy header files of
DerivedSources. This command copies files unconditionally, then
introduced unnecessary recompilations.

  • Source/cmake/WebKitMacros.cmake: Use copy_if_different instead of copy.
2:10 AM Changeset in webkit [226441] by Claudio Saavedra
  • 2 edits in trunk/Tools

WPE: Build fix after r226432.

Unreviewed. Rename ::speak() to ::speakAs().

  • WebKitTestRunner/InjectedBundle/wpe/AccessibilityUIElementWPE.cpp:

(WTR::AccessibilityUIElement::speakAs):
(WTR::AccessibilityUIElement::speak): Deleted.

12:26 AM Changeset in webkit [226440] by commit-queue@webkit.org
  • 19 edits in trunk/Source/JavaScriptCore

Unreviewed, rolling out r226434.
https://bugs.webkit.org/show_bug.cgi?id=181322

32bit JSC failure in x86 (Requested by yusukesuzuki on
#webkit).

Reverted changeset:

"[DFG] Unify ToNumber implementation in 32bit and 64bit by
changing 32bit Int32Tag and LowestTag"
https://bugs.webkit.org/show_bug.cgi?id=181134
https://trac.webkit.org/changeset/226434

Jan 4, 2018:

10:40 PM Changeset in webkit [226439] by webkit@devinrousso.com
  • 38 edits in trunk/Source

Web Inspector: replace HTMLCanvasElement with CanvasRenderingContext for instrumentation logic
https://bugs.webkit.org/show_bug.cgi?id=180770

Reviewed by Joseph Pecoraro.

Source/JavaScriptCore:

  • inspector/protocol/Canvas.json:

Source/WebCore:

No change in functionality.

  • html/HTMLCanvasElement.h:
  • html/HTMLCanvasElement.cpp:

(WebCore::HTMLCanvasElement::createContext2d):
(WebCore::HTMLCanvasElement::createContextWebGL):
(WebCore::HTMLCanvasElement::createContextWebGPU):
(WebCore::HTMLCanvasElement::createContextBitmapRenderer):
(WebCore::HTMLCanvasElement::reset):
(WebCore::HTMLCanvasElement::paint):
(WebCore::HTMLCanvasElement::setImageBuffer const):
(WebCore::HTMLCanvasElement::addObserver): Deleted.
(WebCore::HTMLCanvasElement::removeObserver): Deleted.
(WebCore::HTMLCanvasElement::cssCanvasClients): Deleted.
(WebCore::HTMLCanvasElement::notifyObserversCanvasChanged): Deleted.

  • html/OffscreenCanvas.h:
  • html/canvas/CanvasRenderingContext.h:
  • html/canvas/CanvasRenderingContext.cpp:
  • html/canvas/CanvasRenderingContext2D.h:
  • html/canvas/CanvasRenderingContext2D.cpp:

(WebCore::CanvasRenderingContext2D::create):

  • html/canvas/CanvasRenderingContext2DBase.h:
  • html/canvas/ImageBitmapRenderingContext.h:
  • html/canvas/ImageBitmapRenderingContext.cpp:

(WebCore::ImageBitmapRenderingContext::create):

  • html/canvas/WebGL2RenderingContext.h:
  • html/canvas/WebGL2RenderingContext.cpp:

(WebCore::WebGL2RenderingContext::create):

  • html/canvas/WebGLRenderingContext.h:
  • html/canvas/WebGLRenderingContext.cpp:

(WebCore::WebGLRenderingContext::create):

  • html/canvas/WebGLRenderingContextBase.h:
  • html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::WebGLRenderingContextBase::create):

  • html/canvas/WebGPURenderingContext.cpp:

(WebCore::WebGPURenderingContext::create):
Instead of adding didCreateCanvasRenderingContext calls at the construction sites of each
context, we can make the constructors private and force the usage of static create functions.
This way, we have access to the fully constructed object and have a guaranteed path for creation.

  • html/CanvasBase.h:
  • html/CanvasBase.cpp:

(WebCore::CanvasBase::~CanvasBase):
(WebCore::CanvasBase::renderingContext const):
(WebCore::CanvasBase::addObserver):
(WebCore::CanvasBase::removeObserver):
(WebCore::CanvasBase::notifyObserversCanvasChanged):
(WebCore::CanvasBase::notifyObserversCanvasResized):
(WebCore::CanvasBase::notifyObserversCanvasDestroyed):
(WebCore::CanvasBase::cssCanvasClients const):

  • Modules/mediastream/CanvasCaptureMediaStreamTrack.h:
  • Modules/mediastream/CanvasCaptureMediaStreamTrack.cpp:

(WebCore::CanvasCaptureMediaStreamTrack::Source::canvasDestroyed):
(WebCore::CanvasCaptureMediaStreamTrack::Source::canvasResized):
(WebCore::CanvasCaptureMediaStreamTrack::Source::canvasChanged):

  • css/CSSCanvasValue.h:

Move the CanvasObserver class to CanvasBase so that it can also be used for OffscreenCanvas.

  • inspector/InspectorInstrumentation.h:

(WebCore::InspectorInstrumentation::didChangeCSSCanvasClientNodes):
(WebCore::InspectorInstrumentation::didCreateCanvasRenderingContext):
(WebCore::InspectorInstrumentation::didChangeCanvasMemory):
(WebCore::InspectorInstrumentation::recordCanvasAction):
(WebCore::InspectorInstrumentation::didFinishRecordingCanvasFrame):
(WebCore::InspectorInstrumentation::didEnableExtension):
(WebCore::InspectorInstrumentation::didCreateProgram):
(WebCore::InspectorInstrumentation::willDeleteProgram):
(WebCore::InspectorInstrumentation::isShaderProgramDisabled):
(WebCore::InspectorInstrumentation::consoleStartRecordingCanvas):
(WebCore::InspectorInstrumentation::didCreateCSSCanvas): Deleted.

  • inspector/InspectorInstrumentation.cpp:

(WebCore::InspectorInstrumentation::consoleStartRecordingCanvasImpl):
(WebCore::InspectorInstrumentation::didChangeCSSCanvasClientNodesImpl):
(WebCore::InspectorInstrumentation::didCreateCanvasRenderingContextImpl):
(WebCore::InspectorInstrumentation::didChangeCanvasMemoryImpl):
(WebCore::InspectorInstrumentation::didFinishRecordingCanvasFrameImpl):
(WebCore::InspectorInstrumentation::didEnableExtensionImpl):
(WebCore::InspectorInstrumentation::didCreateProgramImpl):
(WebCore::InspectorInstrumentation::didCreateCSSCanvasImpl): Deleted.

  • inspector/agents/InspectorCanvasAgent.h:
  • inspector/agents/InspectorCanvasAgent.cpp:

(WebCore::InspectorCanvasAgent::enable):
(WebCore::InspectorCanvasAgent::requestNode):
(WebCore::InspectorCanvasAgent::requestContent):
(WebCore::InspectorCanvasAgent::requestCSSCanvasClientNodes):
(WebCore::contextAsScriptValue):
(WebCore::InspectorCanvasAgent::resolveCanvasContext):
(WebCore::InspectorCanvasAgent::startRecording):
(WebCore::InspectorCanvasAgent::stopRecording):
(WebCore::InspectorCanvasAgent::updateShader):
(WebCore::InspectorCanvasAgent::frameNavigated):
(WebCore::InspectorCanvasAgent::didChangeCSSCanvasClientNodes):
(WebCore::InspectorCanvasAgent::didCreateCanvasRenderingContext):
(WebCore::InspectorCanvasAgent::didChangeCanvasMemory):
(WebCore::InspectorCanvasAgent::recordCanvasAction):
(WebCore::InspectorCanvasAgent::canvasDestroyed):
(WebCore::InspectorCanvasAgent::didFinishRecordingCanvasFrame):
(WebCore::InspectorCanvasAgent::consoleStartRecordingCanvas):
(WebCore::InspectorCanvasAgent::didEnableExtension):
(WebCore::InspectorCanvasAgent::didCreateProgram):
(WebCore::InspectorCanvasAgent::canvasRecordingTimerFired):
(WebCore::InspectorCanvasAgent::clearCanvasData):
(WebCore::InspectorCanvasAgent::unbindCanvas):
(WebCore::InspectorCanvasAgent::findInspectorCanvas):
(WebCore::InspectorCanvasAgent::unbindProgram):
(WebCore::InspectorCanvasAgent::didCreateCSSCanvas): Deleted.

  • inspector/InspectorCanvas.h:
  • inspector/InspectorCanvas.cpp:

(WebCore::InspectorCanvas::create):
(WebCore::InspectorCanvas::InspectorCanvas):
(WebCore::InspectorCanvas::canvasElement):
(WebCore::InspectorCanvas::resetRecordingData):
(WebCore::InspectorCanvas::recordAction):
(WebCore::InspectorCanvas::buildObjectForCanvas):
(WebCore::InspectorCanvas::getCanvasContentAsDataURL):
(WebCore::InspectorCanvas::buildInitialState):
(WebCore::InspectorCanvas::~InspectorCanvas): Deleted.

  • inspector/InspectorShaderProgram.h:
  • inspector/InspectorShaderProgram.cpp:

(WebCore::InspectorShaderProgram::context const):

  • page/PageConsoleClient.cpp:

(WebCore::PageConsoleClient::record):
(WebCore::PageConsoleClient::recordEnd):

  • dom/Document.h:
  • dom/Document.cpp:

(WebCore::Document::getCSSCanvasElement):
(WebCore::Document::nameForCSSCanvasElement const):
We have no reason to save the CSS canvas name for each InspectorCanvas object, so instead we
can just query for the name based on the CanvasRenderingContext's HTMLCanvasElement (assuming
it is not an OffscreenCanvas) when we need it.

Source/WebInspectorUI:

  • UserInterface/Models/Canvas.js:

(WI.Canvas.fromPayload):
(WI.Canvas.prototype.get contextType):
(WI.Canvas.prototype.saveIdentityToCookie):
(WI.Canvas.prototype.get frame): Deleted.

10:34 PM Changeset in webkit [226438] by zandobersek@gmail.com
  • 2 edits in trunk/Source/WebKit

Unreviewed GTK+ build fix.

  • UIProcess/API/glib/WebKitUserMediaPermissionRequest.cpp:

(webkit_user_media_permission_is_for_audio_device):
Call UserMediaPermissionRequestProxy::requiresAudioCapture().
(webkit_user_media_permission_is_for_video_device):
Call UserMediaPermissionRequestProxy::requiresVideoCapture().

9:39 PM Changeset in webkit [226437] by commit-queue@webkit.org
  • 5 edits in trunk/Source/JavaScriptCore

Unreviewed, rolling out r226405.
https://bugs.webkit.org/show_bug.cgi?id=181318

Speculative rollout due to Octane/SplayLatency,Octane/Splay
regressions (Requested by yusukesuzuki on #webkit).

Reverted changeset:

"[JSC] Create parallel SlotVisitors apriori"
https://bugs.webkit.org/show_bug.cgi?id=180907
https://trac.webkit.org/changeset/226405

9:12 PM Changeset in webkit [226436] by sbarati@apple.com
  • 10 edits in trunk/Source/JavaScriptCore

Do value profiling in to_this
https://bugs.webkit.org/show_bug.cgi?id=181299

Reviewed by Filip Pizlo.

This patch adds value profiling to to_this. We use the result of the value
profiling only for strict mode code when we don't predict that the input is
of a specific type. This helps when the input is SpecCellOther. Such cells
might implement a custom ToThis, which can produce an arbitrary result. Before
this patch, in prediction propagation, we were saying that a ToThis with a
SpecCellOther input also produced SpecCellOther. However, this is incorrect,
given that the input may implement ToThis that produces an arbitrary result.
This is seen inside Speedometer. This patch fixes an OSR exit loop in Speedometer.

Interestingly, this patch only does value profiling on the slow path. The fast
path of to_this in the LLInt/baseline just perform a structure check. If it
passes, the result is the same as the input. Therefore, doing value profiling
from the fast path wouldn't actually produce new information for the ValueProfile.

  • bytecode/BytecodeDumper.cpp:

(JSC::BytecodeDumper<Block>::dumpBytecode):

  • bytecode/BytecodeList.json:
  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::finishCreation):

  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::BytecodeGenerator):
(JSC::BytecodeGenerator::emitToThis):

  • bytecompiler/BytecodeGenerator.h:
  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::parseBlock):

  • dfg/DFGNode.h:

(JSC::DFG::Node::hasHeapPrediction):

  • dfg/DFGPredictionPropagationPhase.cpp:
  • runtime/CommonSlowPaths.cpp:

(JSC::SLOW_PATH_DECL):

8:34 PM Changeset in webkit [226435] by commit-queue@webkit.org
  • 6 edits
    7 adds in trunk

REGRESSION (r225709): Web Inspector: CSS Source maps not loading
https://bugs.webkit.org/show_bug.cgi?id=181314
<rdar://problem/36177620>

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2018-01-04
Reviewed by Brian Burg.

Source/WebInspectorUI:

  • UserInterface/Controllers/SourceMapManager.js:

(WI.SourceMapManager.prototype._loadAndParseSourceMap):

  • UserInterface/Models/SourceMapResource.js:

(WI.SourceMapResource.prototype.requestContentFromBackend):
Correct this so that we only fall back to a reasonable frame id
if we couldn't determine a frame id from earlier. Previously this
was incorrectly clearing the frame id if we had gotten it earlier.

  • UserInterface/Test.html:
  • UserInterface/Test/Test.js:

(WI.loaded):
Add SourceMap related files for tests.

LayoutTests:

  • http/tests/inspector/network/resources/script-with-sourcemap.js: Added.
  • http/tests/inspector/network/resources/script-with-sourcemap.js.map: Added.
  • http/tests/inspector/network/resources/stylesheet-with-sourcemap.css: Added.
  • http/tests/inspector/network/resources/stylesheet-with-sourcemap.css.map: Added.
  • http/tests/inspector/network/resources/stylesheet-with-sourcemap.scss: Added.

Add a real script minified with a source map.
Add a real scss stylesheet compiled to css with a source map.

  • http/tests/inspector/network/source-map-loads-expected.txt: Added.
  • http/tests/inspector/network/source-map-loads.html: Added.

Test that we load source maps for resources with sourceMappingURL directives.

8:15 PM Changeset in webkit [226434] by Yusuke Suzuki
  • 19 edits in trunk/Source/JavaScriptCore

[DFG] Unify ToNumber implementation in 32bit and 64bit by changing 32bit Int32Tag and LowestTag
https://bugs.webkit.org/show_bug.cgi?id=181134

Reviewed by Mark Lam.

We would like to unify DFG ToNumber implementation in 32bit and 64bit. One problem is that
branchIfNumber signature is different between 32bit and 64bit. 32bit implementation requires
an additional scratch register. We do not want to allocate an unnecessary register in 64bit
implementation.

This patch removes the additional register in branchIfNumber/branchIfNotNumber in both 32bit
and 64bit implementation. To achieve this goal, we change Int32Tag and LowestTag order. By
setting Int32Tag as LowestTag, we can query whether the given tag is a number by checking
<= LowestTag(Int32Tag).

We also change the order of UndefinedTag, NullTag, and BooleanTag to keep (UndefinedTag | 1) == NullTag.

We also clean up speculateMisc implementation by adding branchIfMisc/branchIfNotMisc.

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileValueToInt32):
(JSC::DFG::SpeculativeJIT::compileDoubleRep):
(JSC::DFG::SpeculativeJIT::speculateNumber):
(JSC::DFG::SpeculativeJIT::speculateMisc):
(JSC::DFG::SpeculativeJIT::compileNormalizeMapKey):
(JSC::DFG::SpeculativeJIT::compileToNumber):

  • dfg/DFGSpeculativeJIT.h:
  • dfg/DFGSpeculativeJIT32_64.cpp:

(JSC::DFG::SpeculativeJIT::nonSpeculativeNonPeepholeCompareNullOrUndefined):
(JSC::DFG::SpeculativeJIT::nonSpeculativePeepholeBranchNullOrUndefined):
(JSC::DFG::SpeculativeJIT::compileObjectOrOtherLogicalNot):
(JSC::DFG::SpeculativeJIT::emitObjectOrOtherBranch):
(JSC::DFG::SpeculativeJIT::compile):

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::compile):

  • jit/AssemblyHelpers.cpp:

(JSC::AssemblyHelpers::branchIfNotType):
(JSC::AssemblyHelpers::jitAssertIsJSNumber):
(JSC::AssemblyHelpers::emitConvertValueToBoolean):

  • jit/AssemblyHelpers.h:

(JSC::AssemblyHelpers::branchIfMisc):
(JSC::AssemblyHelpers::branchIfNotMisc):
(JSC::AssemblyHelpers::branchIfNumber):
(JSC::AssemblyHelpers::branchIfNotNumber):
(JSC::AssemblyHelpers::branchIfNotDoubleKnownNotInt32):
(JSC::AssemblyHelpers::emitTypeOf):

  • jit/JITAddGenerator.cpp:

(JSC::JITAddGenerator::generateFastPath):

  • jit/JITArithmetic32_64.cpp:

(JSC::JIT::emitBinaryDoubleOp):

  • jit/JITDivGenerator.cpp:

(JSC::JITDivGenerator::loadOperand):

  • jit/JITMulGenerator.cpp:

(JSC::JITMulGenerator::generateInline):
(JSC::JITMulGenerator::generateFastPath):

  • jit/JITNegGenerator.cpp:

(JSC::JITNegGenerator::generateInline):
(JSC::JITNegGenerator::generateFastPath):

  • jit/JITOpcodes32_64.cpp:

(JSC::JIT::emit_op_is_number):
(JSC::JIT::emit_op_jeq_null):
(JSC::JIT::emit_op_jneq_null):
(JSC::JIT::emit_op_to_number):
(JSC::JIT::emit_op_profile_type):

  • jit/JITRightShiftGenerator.cpp:

(JSC::JITRightShiftGenerator::generateFastPath):

  • jit/JITSubGenerator.cpp:

(JSC::JITSubGenerator::generateInline):
(JSC::JITSubGenerator::generateFastPath):

  • llint/LLIntData.cpp:

(JSC::LLInt::Data::performAssertions):

  • llint/LowLevelInterpreter.asm:
  • llint/LowLevelInterpreter32_64.asm:
  • runtime/JSCJSValue.h:
6:17 PM Changeset in webkit [226433] by don.olmstead@sony.com
  • 2 edits in trunk/Source/WebKit

[Curl] Fix compilation error in WebFrameNetworkingContext
https://bugs.webkit.org/show_bug.cgi?id=181312

Reviewed by Alex Christensen.

  • WebProcess/WebCoreSupport/curl/WebFrameNetworkingContext.cpp:

(WebKit::WebFrameNetworkingContext::ensureWebsiteDataStoreSession):

4:32 PM Changeset in webkit [226432] by Chris Fleizach
  • 42 edits in trunk

AX: Implement updated CSS3 Speech for 'speak' and 'speak-as' properties
https://bugs.webkit.org/show_bug.cgi?id=180361

Reviewed by Zalan Bujtas.

Source/WebCore:

Change speak -> speakAs, and allow a combination of properties.

Tests: Updated accessibility/mac/css-speech-speak.html

  • accessibility/AccessibilityObject.h:

(WebCore::AccessibilityObject::speakAsProperty const):
(WebCore::AccessibilityObject::speakProperty const): Deleted.

  • accessibility/AccessibilityRenderObject.cpp:

(WebCore::AccessibilityRenderObject::speakAsProperty const):
(WebCore::AccessibilityRenderObject::speakProperty const): Deleted.

  • accessibility/AccessibilityRenderObject.h:
  • accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:

(-[WebAccessibilityObjectWrapper accessibilitySpeechHint]):

  • accessibility/mac/WebAccessibilityObjectWrapperBase.h:
  • accessibility/mac/WebAccessibilityObjectWrapperBase.mm:

(-[WebAccessibilityObjectWrapperBase baseAccessibilitySpeechHint]):

  • accessibility/mac/WebAccessibilityObjectWrapperMac.mm:

(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]):

  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::speakAsToCSSValue):
(WebCore::ComputedStyleExtractor::propertyValue):

  • css/CSSPrimitiveValueMappings.h:

(WebCore::CSSPrimitiveValue::CSSPrimitiveValue):
(WebCore::CSSPrimitiveValue::operator ESpeakAs const):
(WebCore::CSSPrimitiveValue::operator ESpeak const): Deleted.

  • css/CSSProperties.json:
  • css/StyleBuilderConverter.h:

(WebCore::StyleBuilderConverter::convertSpeakAs):

  • css/parser/CSSParserFastPaths.cpp:

(WebCore::CSSParserFastPaths::isValidKeywordPropertyAndValue):
(WebCore::CSSParserFastPaths::isKeywordPropertyID):

  • css/parser/CSSPropertyParser.cpp:

(WebCore::consumeSpeakAs):
(WebCore::CSSPropertyParser::parseSingleValue):

  • rendering/style/RenderStyle.h:

(WebCore::RenderStyle::speakAs const):
(WebCore::RenderStyle::setSpeakAs):
(WebCore::RenderStyle::initialSpeakAs):
(WebCore::RenderStyle::speak const): Deleted.
(WebCore::RenderStyle::setSpeak): Deleted.
(WebCore::RenderStyle::initialSpeak): Deleted.

  • rendering/style/RenderStyleConstants.h:

(WebCore::operator| ):
(WebCore::operator|= ):

  • rendering/style/StyleRareInheritedData.cpp:

(WebCore::StyleRareInheritedData::StyleRareInheritedData):
(WebCore::StyleRareInheritedData::operator== const):

  • rendering/style/StyleRareInheritedData.h:

Tools:

  • DumpRenderTree/AccessibilityUIElement.cpp:

(speakAsCallback):
(AccessibilityUIElement::speakAs):
(AccessibilityUIElement::getJSClass):
(speakCallback): Deleted.
(AccessibilityUIElement::speak): Deleted.

  • DumpRenderTree/AccessibilityUIElement.h:
  • DumpRenderTree/ios/AccessibilityUIElementIOS.mm:

(AccessibilityUIElement::speakAs):

  • DumpRenderTree/mac/AccessibilityUIElementMac.mm:

(AccessibilityUIElement::speakAs):
(AccessibilityUIElement::speak): Deleted.

  • WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:
  • WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl:
  • WebKitTestRunner/InjectedBundle/ios/AccessibilityUIElementIOS.mm:

(WTR::AccessibilityUIElement::speakAs):
(WTR::AccessibilityUIElement::speak): Deleted.

  • WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:

(WTR::AccessibilityUIElement::speakAs):
(WTR::AccessibilityUIElement::speak): Deleted.

LayoutTests:

  • accessibility/mac/css-speech-speak-expected.txt:
  • accessibility/mac/css-speech-speak.html:
  • fast/css/getComputedStyle/computed-style-expected.txt:
  • fast/css/getComputedStyle/computed-style-without-renderer-expected.txt:
  • platform/ios/fast/css/getComputedStyle/computed-style-expected.txt:
  • platform/ios/fast/css/getComputedStyle/computed-style-without-renderer-expected.txt:
  • platform/mac-sierra/fast/css/getComputedStyle/computed-style-expected.txt:
  • platform/mac-sierra/fast/css/getComputedStyle/computed-style-without-renderer-expected.txt:
  • platform/mac-sierra/svg/css/getComputedStyle-basic-expected.txt:
  • platform/mac/fast/css/getComputedStyle/computed-style-expected.txt:
  • platform/mac/fast/css/getComputedStyle/computed-style-without-renderer-expected.txt:
  • platform/mac/svg/css/getComputedStyle-basic-expected.txt:
  • svg/css/getComputedStyle-basic-expected.txt:
4:18 PM Changeset in webkit [226431] by jmarcell@apple.com
  • 2 edits in tags/Safari-605.1.19/Source/WebCore

Cherry-pick r226418. rdar://problem/36302506

4:18 PM Changeset in webkit [226430] by jmarcell@apple.com
  • 12 edits
    4 deletes in tags/Safari-605.1.19

Cherry-pick r226409. rdar://problem/36290463

4:18 PM Changeset in webkit [226429] by jmarcell@apple.com
  • 19 edits in tags/Safari-605.1.19

Cherry-pick r226389. rdar://problem/36289544

4:17 PM Changeset in webkit [226428] by jfbastien@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

Add assembler support for x86 lfence and sfence
https://bugs.webkit.org/show_bug.cgi?id=181311
<rdar://problem/36301780>

Reviewed by Michael Saboff.

Useful for testing performance of serializing instructions (hint:
it's not good).

  • assembler/MacroAssemblerX86Common.h:

(JSC::MacroAssemblerX86Common::lfence):
(JSC::MacroAssemblerX86Common::sfence):

  • assembler/X86Assembler.h:

(JSC::X86Assembler::lfence):
(JSC::X86Assembler::sfence):

4:16 PM Changeset in webkit [226427] by Jonathan Bedard
  • 2 edits in trunk/Tools

REGRESSION (r226395): test-webkitperl test expectations incorrect
https://bugs.webkit.org/show_bug.cgi?id=181307
<rdar://problem/36306558>

Rubber-stamped by Aakash Jain.

r226395 added two lines towards the beginning of
Scripts/webkitperl/prepare-ChangeLog_unittest/resources/perl_unittests.pl, the line
numbers in the test expectations need to update.

  • Scripts/webkitperl/prepare-ChangeLog_unittest/resources/perl_unittests-expected.txt:
4:01 PM Changeset in webkit [226426] by sbarati@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Add a new pattern matching rule to Graph::methodOfGettingAValueProfileFor for SetLocal(@nodeWithHeapPrediction)
https://bugs.webkit.org/show_bug.cgi?id=181296

Reviewed by Filip Pizlo.

Inside Speedometer's Ember test, there is a recompile loop like:
a: GetByVal(..., semanticOriginX)
b: SetLocal(Cell:@a, semanticOriginX)

where the cell check always fails. For reasons I didn't investigate, the
baseline JIT's value profiling doesn't accurately capture the GetByVal's
result.

However, when compiling this cell speculation check in the DFG, we get a null
MethodOfGettingAValueProfile inside Graph::methodOfGettingAValueProfileFor for
this IR pattern because both @a and @b have the same semantic origin. We
should not follow the same semantic origin heuristic when dealing with
SetLocal since SetLocal(@nodeWithHeapPrediction) is such a common IR pattern.
For patterns like this, we introduce a new heuristic: @NodeThatDoesNotProduceAValue(@nodeWithHeapPrediction).
For this IR pattern, we will update the value profile for the semantic origin
for @nodeWithHeapPrediction. So, for the Speedometer example above, we
will correctly update the GetByVal's value profile, which will prevent
an OSR exit loop.

  • dfg/DFGGraph.cpp:

(JSC::DFG::Graph::methodOfGettingAValueProfileFor):

4:00 PM Changeset in webkit [226425] by BJ Burg
  • 16 edits
    2 adds in trunk

Web Inspector: Capture Element Screenshot looks fuzzy
https://bugs.webkit.org/show_bug.cgi?id=175734
<rdar://problem/33803377>

Reviewed by Joseph Pecoraro and Simon Fraser.

Source/WebCore:

Screenshots taken by Web Inspector were being downscaled from the
internal size to the logical size, causing them to be blurry when
later upscaled to the internal size.

Replace ScaleBehavior { Scaled, Unscaled } with PreserveResolution { No, Yes }.
This is a lot less confusing to read both inside ImageBuffer and at its use sites.

Remove unused CoordinateSystem argument for ImageBuffer::toDataURL,
and replace it with PreserveResolution. Plumb PreserveResolution into toCFData
so that PreserveResolution::Yes will preserve the internal size of
the image buffer, just as it does in other methods that take PreserveResolution.

At the use site in InspectorPageAgent, always request PreserveResolution::Yes snapshots
when taking an element screenshot. For now, keep using downscaled (smaller)
snapshots when capturing canvas previews, as the previews are not full-size.

Test: inspector/page/hidpi-snapshot-size.html

  • html/HTMLCanvasElement.cpp:

(WebCore::HTMLCanvasElement::makePresentationCopy):
(WebCore::HTMLCanvasElement::copiedImage const):

  • html/canvas/CanvasRenderingContext2DBase.cpp:

(WebCore::CanvasRenderingContext2DBase::createPattern):

  • inspector/agents/InspectorPageAgent.cpp:

(WebCore::InspectorPageAgent::snapshotNode):
(WebCore::InspectorPageAgent::snapshotRect):

  • page/TextIndicator.cpp:

(WebCore::takeSnapshot):

  • platform/DragImage.cpp:

(WebCore::createDragImageFromSnapshot):

  • platform/graphics/BitmapImage.cpp:

(WebCore::BitmapImage::drawPattern):

  • platform/graphics/ImageBuffer.h:
  • platform/graphics/cairo/ImageBufferCairo.cpp:

(WebCore::ImageBuffer::sinkIntoImage):
(WebCore::ImageBuffer::copyImage const):
(WebCore::ImageBuffer::toDataURL const):

  • platform/graphics/cg/ImageBufferCG.cpp:

(WebCore::createBitmapImageAfterScalingIfNeeded):
(WebCore::ImageBuffer::copyImage const):
(WebCore::ImageBuffer::sinkIntoImage):
(WebCore::ImageBuffer::toDataURL const):
(WebCore::ImageBuffer::toData const):
(WebCore::ImageBuffer::toCFData const):

  • platform/graphics/gtk/ImageBufferGtk.cpp:

(WebCore::ImageBuffer::toDataURL const):

  • platform/graphics/win/ImageBufferDirect2D.cpp:

(WebCore::ImageBuffer::copyImage const):
(WebCore::ImageBuffer::sinkIntoImage):
(WebCore::ImageBuffer::toDataURL const):

  • svg/graphics/SVGImage.cpp:

(WebCore::SVGImage::drawPatternForContainer):

Source/WebInspectorUI:

Spruce up these functions a bit. They now optionally return a promise
if no callback is supplied. They now can take either a WI.DOMNode or a node id.

  • UserInterface/Controllers/DOMTreeManager.js:

(WI.DOMTreeManager.prototype.querySelector):
(WI.DOMTreeManager.prototype.querySelectorAll):

LayoutTests:

  • inspector/page/hidpi-snapshot-size-expected.txt: Added.
  • inspector/page/hidpi-snapshot-size.html: Added.
2:54 PM Changeset in webkit [226424] by timothy_horton@apple.com
  • 12 edits in trunk

WKWebView loses minimum layout size overrides that happen while the process is terminated
https://bugs.webkit.org/show_bug.cgi?id=181306
<rdar://problem/34398288>

Reviewed by Dan Bernstein.

Source/WebKit:

  • Shared/WebPageCreationParameters.cpp:

(WebKit::WebPageCreationParameters::encode const):
(WebKit::WebPageCreationParameters::decode):

  • Shared/WebPageCreationParameters.h:
  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _didRelaunchProcess]): Deleted.

  • UIProcess/API/Cocoa/WKWebViewPrivate.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::creationParameters):

  • UIProcess/WebPageProxy.h:
  • UIProcess/ios/PageClientImplIOS.mm:

(WebKit::PageClientImpl::didRelaunchProcess):

  • UIProcess/ios/WebPageProxyIOS.mm:

(WebKit::WebPageProxy::setViewportConfigurationMinimumLayoutSize):
(WebKit::WebPageProxy::setForceAlwaysUserScalable):
(WebKit::WebPageProxy::setMaximumUnobscuredSize):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::WebPage):
Pass the current viewport minimum layout size and maximum unobscured size
in the WebPageCreationParameters instead of re-sending them in _didRelaunchProcess.

The previous approach was problematic when _dispatchSetMinimumLayoutSize:
was changed to not re-send identical updates, because if the client calls
_overrideLayoutParametersWithMinimumLayoutSize before the Web Content process
is re-launched (after terminating), we would cache the size, attempt to send it,
fail silently (because the process is not launched), and then in _didRelaunchProcess
we would choose not to re-send (after the process is successfully relaunched)
because we think we already sent the new value.

Add isValid() checks to our message sends. Ideally send() would assert
if the process is not alive to avoid problems like this, but it doesn't (yet).

Get rid of WKWebView's _didRelaunchProcess, because it does nothing now.

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/AnimatedResize.mm:

(TEST):
Add a test that calling _overrideLayoutParametersWithMinimumLayoutSize
while the process is terminated results in the page getting the correct
minimum layout size.

2:33 PM Changeset in webkit [226423] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebKit

NetworkProcess cache files use functions from unistd.h without explicitly including it
https://bugs.webkit.org/show_bug.cgi?id=181261

Patch by Stephan Szabo <stephan.szabo@sony.com> on 2018-01-04
Reviewed by Alex Christensen.

  • NetworkProcess/cache/NetworkCacheBlobStorage.cpp:
  • NetworkProcess/cache/NetworkCacheData.cpp:
1:53 PM Changeset in webkit [226422] by jmarcell@apple.com
  • 3 edits in tags/Safari-605.1.19/Source/JavaScriptCore

Cherry-pick r226416. rdar://problem/36275933

1:53 PM Changeset in webkit [226421] by jmarcell@apple.com
  • 2 edits in tags/Safari-605.1.19/Source/WebCore/PAL

Cherry-pick r226388. rdar://problem/36273774

1:53 PM Changeset in webkit [226420] by jmarcell@apple.com
  • 2 edits in tags/Safari-605.1.19/Source/JavaScriptCore

Cherry-pick r226367. rdar://problem/36166729

1:47 PM Changeset in webkit [226419] by Keith Rollin
  • 2 edits in trunk/Source/WebKit

Add commas
https://bugs.webkit.org/show_bug.cgi?id=181295
<rdar://problem/35802295>

Reviewed by Brent Fulgham.

Fix a problem introduced in r226226 where the emitted JSON didn't
include some required commas.

  • NetworkProcess/NetworkResourceLoader.cpp:

(WebKit::NetworkResourceLoader::logCookieInformation const):

1:31 PM Changeset in webkit [226418] by wilander@apple.com
  • 2 edits in trunk/Source/WebCore

Storage Access API: Turn feature on by default in Settings.yaml
https://bugs.webkit.org/show_bug.cgi?id=181298
<rdar://problem/36302506>

Reviewed by Brent Fulgham.

No new tests. This is just a feature settings change.

  • page/Settings.yaml:
1:29 PM Changeset in webkit [226417] by BJ Burg
  • 3 edits
    2 adds in trunk

Web Inspector: add RemoteObject.fetchProperties and some basic tests for RemoteObject API
https://bugs.webkit.org/show_bug.cgi?id=180945

Reviewed by Joseph Pecoraro.

Source/WebInspectorUI:

Add a new method, fetchProperties, which async fetches an arbitrary list of properties
from a RemoteObject. This is intended for writing tests and other quick evaluations,
so it has some behaviors that are suitable in these situations:

  • If the evaluation throws an exception, the result will reject with that exception.
  • If there is a protocol error for some reason, the result will reject with an exception.
  • Non-string and non-number keys cause an exception, as this is probably not intended.
  • Does not accept a callback, returns a promise only. New code should use async.

For full fidelity introspection of property descriptors, clients should use the existing
getOwnPropertyDescriptor[s] class of methods.

  • UserInterface/Protocol/RemoteObject.js:

(WI.RemoteObject.prototype.async.fetchProperties): Added.

  • Validate specified keys and remove duplicates.
  • Request properties one-by-one to avoid fetching all descriptors and dealing with previews.
  • Unwrap returned primitive values to avoid unnecessary munging in tests.

(WI.RemoteObject.prototype.getProperty):

  • Rework this to return a promise if no callback was supplied.
  • Introduce stricter property type checking to avoid unintended mistakes.

(WI.RemoteObject.prototype.callFunction):

  • Rework this to return a promise if no callback was supplied.
  • Turn thrown exceptions and protocol errors into rejected promises.

LayoutTests:

Add new test coverage for existing RemoteObject.prototype.getProperty.
Add new test coverage for new method RemoteObject.prototype.fetchProperties.
I didn't add test coverage for callFunction, as I had to stop somewhere.

  • inspector/model/remote-object-api-expected.txt: Added.
  • inspector/model/remote-object-api.html: Added.
12:58 PM Changeset in webkit [226416] by keith_miller@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

Array Storage operations sometimes did not update the indexing mask correctly.
https://bugs.webkit.org/show_bug.cgi?id=181301

Reviewed by Mark Lam.

I will add tests in a follow up patch. See: https://bugs.webkit.org/show_bug.cgi?id=181303

  • runtime/JSArray.cpp:

(JSC::JSArray::shiftCountWithArrayStorage):

  • runtime/JSObject.cpp:

(JSC::JSObject::increaseVectorLength):

12:56 PM Changeset in webkit [226415] by commit-queue@webkit.org
  • 6 edits in trunk/Source/WebInspectorUI

Web Inspector: ⌘G / ⇧⌘G text search does not working after closing find banner
https://bugs.webkit.org/show_bug.cgi?id=181280
<rdar://problem/36291175>

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2018-01-04
Reviewed by Matt Baker.

  • UserInterface/Views/ContentBrowser.js:

(WI.ContentBrowser.prototype._findBannerDidHide):
When the find banner is hidden trigger a new ContentView method,
searchHidden instead of the destructive searchCleared. This allows
most content views (text editors, DOM tree, Network Headers view)
to keep their populated search results.

  • UserInterface/Views/ContentView.js:

(WI.ContentView.prototype.searchHidden):

  • UserInterface/Views/LogContentView.js:

(WI.LogContentView.prototype.searchHidden):
By default searchHidden does nothing. The Console's LogContentView
treats the find banner differently and clears its search results.

  • UserInterface/Views/TextEditor.js:

(WI.TextEditor.prototype.searchCleared):
Modernize some code while working in this area.

  • UserInterface/Views/Main.css:

(.bouncy-highlight):
Ensure black text on yellow background in the bouncy highlight. In the
DOM Tree it could have been white if the find banner was closed.

12:38 PM Changeset in webkit [226414] by BJ Burg
  • 3 edits in trunk/LayoutTests

Web Inspector: add TestPage.debug() to inspect evaluations being sent to Inspector page
https://bugs.webkit.org/show_bug.cgi?id=181005

Rubber-stamped by Joseph Pecoraro.

When TestPage.debug() is called, dump out all code that is sent to be evaluated in
the inspector page. This is useful for debugging initialization and InspectorTest.awaitEvent.

  • http/tests/inspector/resources/inspector-test.js:

(runTest):
(TestPage.debug):
(TestPage.evaluateInWebInspector):
(TestPage.dispatchEventToFrontend):

  • http/tests/inspector/network/har/har-page-expected.txt:

Rebaseline, as this depends on the size of inspector-test.js. Removing this
fragile test expectation behavior is tracked by https://bugs.webkit.org/show_bug.cgi?id=181300.

12:14 PM Changeset in webkit [226413] by Alan Bujtas
  • 3 edits
    2 adds in trunk

WebContent process crashes while loading https://www.classicspecs.com
https://bugs.webkit.org/show_bug.cgi?id=181290
<rdar://problem/36225906>

Reviewed by Simon Fraser.

Source/WebCore:

Floats can overhang multiple blocks (they are called intruding floats).
Each block keeps track of such intruding floats. When an overhanging float box is destroyed,
we need to deregister it from all those blocks. We do it by walking up the ancestor block chain
and check if the parent (grandparent etc) block still contains this float. Once we find the topmost block,
we start deregistering it by traversing back on the descendant blocks.
Normally we do it in RenderElement::takeChildInternal right before the box is getting detached.
However in certain cases (like when the float's parent happens to be an anonymous wrapper)
by the time we get to ::takeChildInternal the subtree is already detached and we can't access all the
ancestors.
This patch ensure that the floating box is still attached during de-registration.

Test: fast/block/float/crash-when-intruding-float-has-anonymous-parent-and-detach.html

  • rendering/RenderObject.cpp:

(WebCore::RenderObject::removeFromParentAndDestroyCleaningUpAnonymousWrappers):

LayoutTests:

  • fast/block/float/crash-when-intruding-float-has-anonymous-parent-and-detach-expected.txt: Added.
  • fast/block/float/crash-when-intruding-float-has-anonymous-parent-and-detach.html: Added.
12:12 PM Changeset in webkit [226412] by eric.carlson@apple.com
  • 33 edits
    3 copies
    5 adds in trunk

[MediaStream] Add Mock screen capture source
https://bugs.webkit.org/show_bug.cgi?id=181291
<rdar://problem/36298164>

Reviewed by Dean Jackson.

Source/WebCore:

Tests: http/tests/media/media-stream/get-display-media-prompt.html

GetDisplayMediaTest.BasicPrompt
GetDisplayMediaTest.Constraints

  • Modules/mediastream/MediaDevices.cpp:

(WebCore::MediaDevices::MediaDevices): Add static_assert to ensure MediaDevices::DisplayCaptureSurfaceType
and RealtimeMediaSourceSettings::DisplaySurfaceType values are equivalent.
(WebCore::MediaDevices::getSupportedConstraints): Remove bogus code.

  • Modules/mediastream/MediaDevices.h: Add DisplayCaptureSurfaceType.
  • Modules/mediastream/MediaDevices.idl: Ditto.
  • Modules/mediastream/MediaStreamTrack.cpp:

(WebCore::MediaStreamTrack::getSettings const): Add a FIXME.

  • Modules/mediastream/MediaStreamTrack.h: Add displaySurface and logicalSurface.
  • Modules/mediastream/MediaTrackSupportedConstraints.h: Remove displaySurface and logicalSurface.
  • Modules/mediastream/MediaTrackSupportedConstraints.idl:
  • SourcesCocoa.txt: Add DisplayCaptureManagerCocoa.cpp and DisplayCaptureSourceCocoa.cpp.
  • WebCore.xcodeproj/project.pbxproj: Ditto.
  • platform/mediastream/CaptureDevice.h:

(WebCore::CaptureDevice::encode const): Add.
(WebCore::CaptureDevice::decode):

  • platform/mediastream/RealtimeMediaSourceCenter.cpp:

(WebCore::RealtimeMediaSourceCenter::getMediaStreamDevices): Include display capture "devices".
(WebCore::RealtimeMediaSourceCenter::validateRequestConstraints): Deal with display capture devices.
(WebCore::RealtimeMediaSourceCenter::captureDeviceWithPersistentID): Ditto.

  • platform/mediastream/RealtimeMediaSourceCenter.h:
  • platform/mediastream/RealtimeMediaSourceSettings.h:

(WebCore::RealtimeMediaSourceSettings::displaySurface const): Return a DisplaySurfaceType.
(WebCore::RealtimeMediaSourceSettings::setDisplaySurface): Take a DisplaySurfaceType.

  • platform/mediastream/mac/DisplayCaptureManagerCocoa.cpp:

(WebCore::DisplayCaptureManagerCocoa::singleton):
(WebCore::DisplayCaptureManagerCocoa::~DisplayCaptureManagerCocoa):
(WebCore::DisplayCaptureManagerCocoa::captureDevices):
(WebCore::DisplayCaptureManagerCocoa::screenCaptureDeviceWithPersistentID):
(WebCore::DisplayCaptureManagerCocoa::captureDeviceWithPersistentID):

  • platform/mediastream/mac/DisplayCaptureManagerCocoa.h:
  • platform/mediastream/mac/DisplayCaptureSourceCocoa.cpp: Added.

(WebCore::DisplayCaptureSourceCocoa::DisplayCaptureSourceCocoa):
(WebCore::DisplayCaptureSourceCocoa::~DisplayCaptureSourceCocoa):
(WebCore::DisplayCaptureSourceCocoa::capabilities const):
(WebCore::DisplayCaptureSourceCocoa::settings const):
(WebCore::DisplayCaptureSourceCocoa::settingsDidChange):
(WebCore::DisplayCaptureSourceCocoa::startProducingData):
(WebCore::DisplayCaptureSourceCocoa::stopProducingData):
(WebCore::DisplayCaptureSourceCocoa::elapsedTime):
(WebCore::DisplayCaptureSourceCocoa::applyFrameRate):
(WebCore::DisplayCaptureSourceCocoa::emitFrame):

  • platform/mediastream/mac/DisplayCaptureSourceCocoa.h:
  • platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp:

(WebCore::RealtimeMediaSourceCenterMac::displayCaptureDeviceManager): New.

  • platform/mediastream/mac/RealtimeMediaSourceCenterMac.h:
  • platform/mock/MockRealtimeMediaSource.cpp:

(WebCore::deviceMap): Add screen capture "devices".
(WebCore::MockRealtimeMediaSource::displayDevices): New.

  • platform/mock/MockRealtimeMediaSource.h:
  • platform/mock/MockRealtimeMediaSourceCenter.cpp: Clean up includes.
  • platform/mock/MockRealtimeMediaSourceCenter.h:
  • platform/mock/MockRealtimeVideoSource.cpp:

(WebCore::MockRealtimeVideoSource::MockRealtimeVideoSource): Mock two screen devices.
(WebCore::MockRealtimeVideoSource::updateSettings): Deal with mock screens.
(WebCore::MockRealtimeVideoSource::initializeCapabilities): Ditto.
(WebCore::MockRealtimeVideoSource::initializeSupportedConstraints): Ditto.
(WebCore::MockRealtimeVideoSource::drawText): Ditto.
(WebCore::MockRealtimeVideoSource::generateFrame): Ditto.

  • platform/mock/MockRealtimeVideoSource.h:

(WebCore::MockRealtimeVideoSource::mockCamera const):
(WebCore::MockRealtimeVideoSource::mockScreen const):

Source/WebKit:

  • Shared/WebCoreArgumentCoders.cpp:

(IPC::ArgumentCoder<MediaConstraints>::decode):
(IPC::ArgumentCoder<CaptureDevice>::encode): Deleted, moved to CaptureDevice.h
(IPC::ArgumentCoder<CaptureDevice>::decode): Ditto.

  • Shared/WebCoreArgumentCoders.h:
  • UIProcess/API/Cocoa/WKWebViewPrivate.h: Add _WKCaptureDeviceDisplay.
  • UIProcess/Cocoa/UIDelegate.mm:

(WebKit::requestUserMediaAuthorizationForDevices): Deal with display capture.
(WebKit::UIDelegate::UIClient::decidePolicyForUserMediaPermissionRequest): Ditto.

  • UIProcess/UserMediaPermissionRequestManagerProxy.cpp:

(WebKit::UserMediaPermissionRequestManagerProxy::userMediaAccessWasDenied): requiresAudio -> requiresAudioCapture.
(WebKit::UserMediaPermissionRequestManagerProxy::searchForGrantedRequest const): Never reuse
a previously granted display capture request.

  • UIProcess/UserMediaPermissionRequestProxy.cpp:

(WebKit::UserMediaPermissionRequestProxy::allow): Search the eligible devices instead of asking
the source center to find devices.

  • UIProcess/UserMediaPermissionRequestProxy.h:

(WebKit::UserMediaPermissionRequestProxy::requiresAudioCapture const): Renamed.
(WebKit::UserMediaPermissionRequestProxy::requiresVideoCapture const): Ditto.
(WebKit::UserMediaPermissionRequestProxy::requiresDisplayCapture const): New.
(WebKit::UserMediaPermissionRequestProxy::requiresAudio const): Deleted.
(WebKit::UserMediaPermissionRequestProxy::requiresVideo const): Deleted.

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: Add new test.
  • TestWebKitAPI/Tests/WebKitCocoa/GetDisplayMedia.mm:
  • TestWebKitAPI/Tests/WebKit/getDisplayMedia.html:

LayoutTests:

  • http/tests/media/media-stream/get-display-media-prompt-expected.txt: Added.
  • http/tests/media/media-stream/get-display-media-prompt.html: Added.
10:58 AM Changeset in webkit [226411] by Lucas Forschler
  • 2 edits in trunk/Tools

<rdar://problem/36300930> Change proxy server setting on master config to reach s3 servers

10:49 AM Changeset in webkit [226410] by commit-queue@webkit.org
  • 6 edits in trunk

FetchResponse should set its internal response text encoding name
https://bugs.webkit.org/show_bug.cgi?id=181284

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

LayoutTests/imported/w3c:

  • web-platform-tests/service-workers/service-worker/fetch-event.https-expected.txt:

Source/WebCore:

Covered by rebased test.

  • Modules/fetch/FetchResponse.cpp:

(WebCore::FetchResponse::create): Set response text encoding based on content type charset.

Source/WebKit:

  • WebProcess/Storage/ServiceWorkerClientFetch.cpp:

(WebKit::ServiceWorkerClientFetch::didReceiveResponse): Set default encoding to UTF-8.

9:56 AM Changeset in webkit [226409] by wilander@apple.com
  • 12 edits
    4 deletes in trunk

Storage Access API: Remove JavaScript confirm() prompt from Document::requestStorageAccess()
https://bugs.webkit.org/show_bug.cgi?id=181276
<rdar://problem/36290463>

Reviewed by Alex Christensen.

Source/WebCore:

No new tests. Existing test expectations updated.

  • dom/Document.cpp:

(WebCore::Document::requestStorageAccess):

LayoutTests:

Two test cases are deleted since the user has no way
to deny access through a prompt anymore. The rest
are updated to not expect a "CONFIRM:..." text output.

  • http/tests/storageAccess/request-and-deny-storage-access-cross-origin-iframe-expected.txt: Removed.
  • http/tests/storageAccess/request-and-deny-storage-access-cross-origin-iframe.html: Removed.
  • http/tests/storageAccess/request-and-deny-storage-access-cross-origin-sandboxed-iframe-expected.txt: Removed.
  • http/tests/storageAccess/request-and-deny-storage-access-cross-origin-sandboxed-iframe.html: Removed.
  • http/tests/storageAccess/request-and-grant-access-then-detach-should-not-have-access-expected.txt:
  • http/tests/storageAccess/request-and-grant-access-then-navigate-should-not-have-access-expected.txt:
  • http/tests/storageAccess/request-and-grant-storage-access-cross-origin-non-sandboxed-iframe-expected.txt:
  • http/tests/storageAccess/request-and-grant-storage-access-cross-origin-sandboxed-iframe-expected.txt:
  • http/tests/storageAccess/request-and-grant-storage-access-cross-origin-sandboxed-iframe-from-prevalent-domain-with-non-recent-user-interaction-and-try-access-from-right-frame-expected.txt:
  • http/tests/storageAccess/request-and-grant-storage-access-cross-origin-sandboxed-iframe-from-prevalent-domain-with-non-recent-user-interaction-but-try-access-from-wrong-frame-expected.txt:
  • http/tests/storageAccess/request-and-grant-storage-access-cross-origin-sandboxed-iframe-from-prevalent-domain-with-recent-user-interaction-expected.txt:
  • http/tests/storageAccess/request-and-grant-storage-access-cross-origin-sandboxed-iframe-from-prevalent-domain-without-user-interaction-expected.txt:
  • platform/mac-wk2/TestExpectations:

Removed entries for the deleted test cases.

7:57 AM Changeset in webkit [226408] by Yusuke Suzuki
  • 13 edits
    3 adds in trunk

[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):

7:54 AM Changeset in webkit [226407] by Yusuke Suzuki
  • 6 edits
    4 deletes in trunk/Source/JavaScriptCore

[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):

7:51 AM Changeset in webkit [226406] by Yusuke Suzuki
  • 2 edits in trunk/Source/JavaScriptCore

[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:
7:42 AM Changeset in webkit [226405] by Yusuke Suzuki
  • 5 edits in trunk/Source/JavaScriptCore

[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):

2:04 AM Changeset in webkit [226404] by Carlos Garcia Campos
  • 107 edits
    1 add in trunk

[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:
1:48 AM Changeset in webkit [226403] by commit-queue@webkit.org
  • 1 edit
    2 adds in trunk/LayoutTests

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.
1:41 AM Changeset in webkit [226402] by Philippe Normand
  • 2 edits in trunk/Source/WebCore

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.

12:49 AM Changeset in webkit [226401] by commit-queue@webkit.org
  • 27 edits in trunk

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:
12:39 AM Changeset in webkit [226400] by commit-queue@webkit.org
  • 9 edits in trunk

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):

12:26 AM Changeset in webkit [226399] by commit-queue@webkit.org
  • 4 edits in trunk/Source/WebCore

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:
12:26 AM Changeset in webkit [226398] by commit-queue@webkit.org
  • 6 edits in trunk/Source/WebCore

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:
12:24 AM Changeset in webkit [226397] by commit-queue@webkit.org
  • 8 edits in trunk

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:

Jan 3, 2018:

11:44 PM Changeset in webkit [226396] by Wenson Hsieh
  • 33 edits
    1 add in trunk

[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.

  1. 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.

  1. 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:]):

11:18 PM Changeset in webkit [226395] by commit-queue@webkit.org
  • 192 edits in trunk

Replace hard-coded paths in shebangs with #!/usr/bin/env
https://bugs.webkit.org/show_bug.cgi?id=181040

Patch by Ting-Wei Lan <Ting-Wei Lan> 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:
9:58 PM Changeset in webkit [226394] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebInspectorUI

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 <Joseph Pecoraro> 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).

9:58 PM Changeset in webkit [226393] by Wenson Hsieh
  • 34 edits
    2 deletes in trunk

[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:
9:57 PM Changeset in webkit [226392] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

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 <Joseph Pecoraro> 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.

9:23 PM Changeset in webkit [226391] by ddkilzer@apple.com
  • 2 edits in trunk/Source/WebKit

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.

8:39 PM Changeset in webkit [226390] by Simon Fraser
  • 4 edits in trunk/Source/WebCore

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:
8:21 PM Changeset in webkit [226389] by wilander@apple.com
  • 19 edits in trunk

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.

8:21 PM Changeset in webkit [226388] by pvollan@apple.com
  • 2 edits in trunk/Source/WebCore/PAL

[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:
8:18 PM Changeset in webkit [226387] by ddkilzer@apple.com
  • 2 edits in trunk/Source/WebKit

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.

5:53 PM Changeset in webkit [226386] by msaboff@apple.com
  • 20 edits in trunk

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.

5:44 PM Changeset in webkit [226385] by jcraig@apple.com
  • 7 edits
    4 adds in trunk

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

4:55 PM Changeset in webkit [226384] by msaboff@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

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):

4:51 PM Changeset in webkit [226383] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

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):

4:49 PM Changeset in webkit [226382] by Antti Koivisto
  • 5 edits in trunk/Source/WebCore

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:
4:47 PM Changeset in webkit [226381] by msaboff@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

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):

4:46 PM Changeset in webkit [226380] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

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 <Joseph Pecoraro> 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.

4:44 PM Changeset in webkit [226379] by sbarati@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

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):

4:42 PM Changeset in webkit [226378] by Simon Fraser
  • 2 edits in trunk/Tools

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):

4:32 PM Changeset in webkit [226377] by Caio Lima
  • 3 edits in trunk/JSTests

[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:
4:32 PM Changeset in webkit [226376] by Michael Catanzaro
  • 2 edits in trunk/Tools

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):

3:52 PM Changeset in webkit [226375] by ap@apple.com
  • 4 edits in trunk/LayoutTests

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:
2:46 PM Changeset in webkit [226374] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

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 <Joseph Pecoraro> 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.

1:56 PM Changeset in webkit [226373] by Simon Fraser
  • 14 edits
    6 adds in trunk

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.
1:21 PM Changeset in webkit [226372] by Antti Koivisto
  • 3 edits
    2 adds in trunk

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.
12:17 PM Changeset in webkit [226371] by commit-queue@webkit.org
  • 4 edits in trunk

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 <Joseph Pecoraro> 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.

12:16 PM Changeset in webkit [226370] by jmarcell@apple.com
  • 1 copy in tags/Safari-605.1.19

Tag Safari-605.1.19.

11:47 AM Changeset in webkit [226369] by Brent Fulgham
  • 2 edits in trunk/Source/WebKit

[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:
10:53 AM Changeset in webkit [226368] by Michael Catanzaro
  • 2 edits in trunk/Source/WebCore
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):

10:46 AM Changeset in webkit [226367] by pvollan@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

[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:
10:36 AM Changeset in webkit [226366] by Michael Catanzaro
  • 8 edits
    2 adds in trunk

[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):

10:21 AM Changeset in webkit [226365] by Michael Catanzaro
  • 2 edits in trunk/Tools

Unreviewed, skip broken API test /webkit2/WebKitWebsiteData/databases
https://bugs.webkit.org/show_bug.cgi?id=181251

  • Scripts/run-gtk-tests:

(GtkTestRunner):

10:11 AM Changeset in webkit [226364] by Michael Catanzaro
  • 2 edits in trunk/Tools

Unreviewed, skip broken API test /webkit2/WebKitWebsiteData/ephemeral
https://bugs.webkit.org/show_bug.cgi?id=181136

  • Scripts/run-gtk-tests:

(GtkTestRunner):

9:58 AM Changeset in webkit [226363] by Simon Fraser
  • 16 edits
    9 adds in trunk

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.
9:35 AM Changeset in webkit [226362] by rmorisset@apple.com
  • 3 edits
    1 add in trunk

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):

9:32 AM Changeset in webkit [226361] by commit-queue@webkit.org
  • 5 edits in trunk

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:
9:28 AM Changeset in webkit [226360] by Ms2ger@igalia.com
  • 2 edits in trunk/LayoutTests

[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:
9:05 AM Changeset in webkit [226359] by Ryan Haddad
  • 4 edits in trunk

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

3:01 AM Changeset in webkit [226358] by Philippe Normand
  • 3 edits in trunk/Source/WebCore

[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):

2:58 AM Changeset in webkit [226357] by Philippe Normand
  • 5 edits
    2 moves in trunk/Source/WebCore

[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):

2:05 AM Changeset in webkit [226356] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebCore

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):

12:23 AM Changeset in webkit [226355] by Carlos Garcia Campos
  • 5 edits in trunk

[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:
12:18 AM Changeset in webkit [226354] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebKit

Unreviewed. Really fix plugin process after r226327.

  • PluginProcess/unix/PluginProcessMainUnix.cpp:

Jan 2, 2018:

9:10 PM Changeset in webkit [226353] by Brent Fulgham
  • 21 edits in trunk

[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.

8:16 PM Changeset in webkit [226352] by Joseph Pecoraro
  • 4 edits in trunk

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.

7:59 PM Changeset in webkit [226351] by sbarati@apple.com
  • 3 edits
    1 add in trunk

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):

7:44 PM Changeset in webkit [226350] by Yusuke Suzuki
  • 2 edits in trunk/Source/WebCore

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:
7:39 PM Changeset in webkit [226349] by Yusuke Suzuki
  • 129 edits in trunk

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):

6:54 PM Changeset in webkit [226348] by Wenson Hsieh
  • 5 edits
    1 add in trunk/Source

[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:
6:52 PM Changeset in webkit [226347] by commit-queue@webkit.org
  • 4 edits in trunk/Source/WebInspectorUI

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 <Joseph Pecoraro> 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.

6:34 PM Changeset in webkit [226346] by Michael Catanzaro
  • 8 edits in trunk

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:
5:43 PM Changeset in webkit [226345] by mark.lam@apple.com
  • 2 edits in trunk/Source/WTF

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:
4:56 PM Changeset in webkit [226344] by mark.lam@apple.com
  • 5 edits
    1 move in trunk/Source/WTF

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.
4:51 PM Changeset in webkit [226343] by beidson@apple.com
  • 5 edits in trunk/Source/WebCore

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:
4:20 PM Changeset in webkit [226342] by timothy_horton@apple.com
  • 2 edits in trunk/Tools

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:
4:10 PM Changeset in webkit [226341] by jiewen_tan@apple.com
  • 22 edits in trunk

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):

4:06 PM Changeset in webkit [226340] by Wenson Hsieh
  • 5 edits
    1 add in trunk

[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):

3:40 PM WebKitGTK/Gardening/Calendar edited by Michael Catanzaro
(diff)
3:39 PM Changeset in webkit [226339] by Michael Catanzaro
  • 2 edits in trunk/LayoutTests

Unreviewed WPE test gardening.

  • platform/wpe/TestExpectations:
3:38 PM Changeset in webkit [226338] by Caio Lima
  • 17 edits
    1 copy
    23 adds in trunk

[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):

2:51 PM WebKitGTK/Gardening/Calendar edited by Michael Catanzaro
(diff)
2:45 PM Changeset in webkit [226337] by Michael Catanzaro
  • 2 edits in trunk/Source/WebKit

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:
2:42 PM Changeset in webkit [226336] by beidson@apple.com
  • 8 edits
    1 add in trunk/Source/WebCore

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):

1:06 PM Changeset in webkit [226335] by timothy_horton@apple.com
  • 8 edits in trunk/Source/WebKit

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.

12:50 PM Changeset in webkit [226334] by achristensen@apple.com
  • 1 edit
    1 delete in trunk/Source/WebKit

Remove SVN file accidentally added in r226160
https://bugs.webkit.org/show_bug.cgi?id=180934

  • UIProcess/WebPageProxy.cpp.orig: Removed.
12:38 PM Changeset in webkit [226333] by commit-queue@webkit.org
  • 6 edits in trunk

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:

12:28 PM Changeset in webkit [226332] by jiewen_tan@apple.com
  • 33 edits
    3 copies
    10 adds
    1 delete in trunk

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:
12:20 PM Changeset in webkit [226331] by timothy_horton@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

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.

12:02 PM Changeset in webkit [226330] by achristensen@apple.com
  • 2 edits in trunk/Source/WebKit

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):

11:52 AM Changeset in webkit [226329] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKitLegacy/win

[Win] Web Inspector: Wrongly placed inspector highlight in HiDPI
https://bugs.webkit.org/show_bug.cgi?id=181173

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

  • WebNodeHighlight.cpp:

(WebNodeHighlight::update): Scale the GraphicsContext.

10:29 AM Changeset in webkit [226328] by Ms2ger@igalia.com
  • 6 edits in trunk/LayoutTests

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:
10:17 AM Changeset in webkit [226327] by Michael Catanzaro
  • 5 edits in trunk/Source/WebKit

[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.
10:17 AM Changeset in webkit [226326] by Michael Catanzaro
  • 3 edits in trunk/Tools

[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):

9:21 AM Changeset in webkit [226325] by achristensen@apple.com
  • 11 edits in trunk

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):

9:18 AM Changeset in webkit [226324] by achristensen@apple.com
  • 4 edits in trunk/Source/WebKit

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):

9:17 AM Changeset in webkit [226323] by achristensen@apple.com
  • 23 edits
    1 add in trunk/Source/WebKit

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):

7:38 AM Changeset in webkit [226322] by gskachkov@gmail.com
  • 8 edits
    1 move
    11 adds in trunk

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:
7:19 AM Changeset in webkit [226321] by Ms2ger@igalia.com
  • 6 edits
    5 adds in trunk/LayoutTests

[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.
12:35 AM WebKitGTK/Gardening/Calendar edited by Ms2ger@igalia.com
(diff)
12:22 AM WebKitGTK/Gardening/Calendar edited by Ms2ger@igalia.com
Update for 2018 (diff)
12:22 AM WebKitGTK/Gardening/Calendar/2017Logs created by Ms2ger@igalia.com
Archive
Note: See TracTimeline for information about the timeline view.