Timeline



Dec 18, 2017:

11:59 PM Changeset in webkit [226107] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.18/Source/WebCore

Merge r224671 - [GTK][WPE] CoordinatedGraphicsLayer::setNeedsDisplayInRect() converts FloatRect to IntRect erroneously
https://bugs.webkit.org/show_bug.cgi?id=179476

Reviewed by Žan Doberšek.

Convert the passed FloatRect into an IntRect using enclosingIntRect(), so we are guaranteed that
the rectangle to paint fits into the buffer that the backingStore will allocate.

No behaviour change.

  • platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:

(WebCore::CoordinatedGraphicsLayer::setNeedsDisplayInRect):

11:57 PM Changeset in webkit [226106] by Carlos Garcia Campos
  • 5 edits
    2 adds in releases/WebKitGTK/webkit-2.18

Merge r226065 - [SVG] Detach list wrappers before resetting the base value.
https://bugs.webkit.org/show_bug.cgi?id=180912
<rdar://problem/36017970>

Reviewed by Simon Fraser.

Source/WebCore:

Before resetting the animation value (and destroying the assigned SVG object -SVGLengthValue in this case),
we need to check if there's an associated tear off wrapper for the said SVG object and make a copy of it.
This is currently done in the wrong order through animValDidChange.

Test: svg/animations/crash-when-animation-is-running-while-getting-value.html

  • svg/SVGAnimatedTypeAnimator.h:

(WebCore::SVGAnimatedTypeAnimator::resetFromBaseValue):

  • svg/properties/SVGAnimatedPropertyTearOff.h:
  • svg/properties/SVGAnimatedStaticPropertyTearOff.h:

(WebCore::SVGAnimatedStaticPropertyTearOff::synchronizeWrappersIfNeeded):

LayoutTests:

  • svg/animations/crash-when-animation-is-running-while-getting-value-expected.txt: Added.
  • svg/animations/crash-when-animation-is-running-while-getting-value.html: Added.
11:50 PM Changeset in webkit [226105] by Carlos Garcia Campos
  • 3 edits
    2 adds in releases/WebKitGTK/webkit-2.18

Merge r225719 - Document::updateLayout() could destroy current frame.
https://bugs.webkit.org/show_bug.cgi?id=180525
<rdar://problem/35906836>

Reviewed by Simon Fraser.

Source/WebCore:

Early return when Document::updateLayout() triggers Frame destruction.

Test: fast/frames/crash-when-iframe-is-remove-in-eventhandler.html

  • dom/TreeScope.cpp:

(WebCore::absolutePointIfNotClipped):

LayoutTests:

  • fast/frames/crash-when-iframe-is-remove-in-eventhandler-expected.txt: Added.
  • fast/frames/crash-when-iframe-is-remove-in-eventhandler.html: Added.
11:48 PM Changeset in webkit [226104] by Carlos Garcia Campos
  • 4 edits
    4 adds in releases/WebKitGTK/webkit-2.18

Merge r225381 - Extra PerformanceEntryList entry after iframe navigation
https://bugs.webkit.org/show_bug.cgi?id=178433

Reviewed by Joseph Pecoraro.

Source/WebCore:

Test: http/tests/security/PerformanceEntryList-parent-only-first-navigation.html

When an iframe is loaded, its main resource load should be reported to the parent frame's PerformanceEntryList.
Subsequent main resource loads should not.

  • loader/FrameLoader.h:

(WebCore::FrameLoader::shouldReportResourceTimingToParentFrame):

  • loader/ResourceTimingInformation.cpp:

(WebCore::ResourceTimingInformation::addResourceTiming):

LayoutTests:

  • http/tests/security/PerformanceEntryList-parent-only-first-navigation-expected.txt: Added.
  • http/tests/security/PerformanceEntryList-parent-only-first-navigation.html: Added.
  • http/tests/security/resources/navigate-and-postMessage.html: Added.
  • http/tests/security/resources/postMessage.html: Added.

Fix non-unified build after r225381
https://bugs.webkit.org/show_bug.cgi?id=180434

Reviewed by Keith Miller.

  • loader/ResourceTimingInformation.cpp:

FrameLoader.h is included in other files that are combined with this file in unified builds,
but we need to merge r225381 to a branch that doesn't use unified builds. This build failure
would've come up randomly in the future when we add files, too.

11:22 PM Changeset in webkit [226103] by Carlos Garcia Campos
  • 3 edits
    1 add in releases/WebKitGTK/webkit-2.18

Merge r225239 - JavaScript rest function parameter with negative index leads to bad DFG abstract interpretation

11:12 PM Changeset in webkit [226102] by Carlos Garcia Campos
  • 3 edits in releases/WebKitGTK/webkit-2.18/Source/JavaScriptCore

Merge r224416 - PutProperytSlot should inform the IC about the property before effects.
https://bugs.webkit.org/show_bug.cgi?id=179262

Reviewed by Mark Lam.

This patch fixes an issue where we choose to cache setters based on
incorrect information. If we did so we might end up OSR exiting
more than we would otherwise need to. The new model is that the
PutPropertySlot should inform the IC of what the property looked
like before any potential side effects might have occurred.

  • runtime/JSObject.cpp:

(JSC::JSObject::putInlineSlow):

  • runtime/Lookup.h:

(JSC::putEntry):

10:46 PM Changeset in webkit [226101] by Carlos Garcia Campos
  • 12 edits
    2 adds in releases/WebKitGTK/webkit-2.18

Merge r224405 - Crash inside ChildListMutationAccumulator::enqueueMutationRecord()
https://bugs.webkit.org/show_bug.cgi?id=179234
<rdar://problem/35287748>

Reviewed by Darin Adler.

Source/WebCore:

Fixed the crash by keeping MutationObserver referenced by MutationObserverInterestGroup alive.

Also added hasCallback() virtual function on MutationObserver to check whether the callback is alive
to work around the bug that JS function referenced by MutationObserver isn't kept alive.
We'll address this bug separately in https://webkit.org/b/179224.

Test: fast/dom/MutationObserver/disconnect-observer-while-mutation-records-are-enqueued-crash.html

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateCallbackHeaderContent): Added an override for the newly added virtual hasCallback().

  • dom/MutationCallback.h:
  • dom/MutationObserver.cpp:

(WebCore::MutationObserver::deliver): Added the aforementioned workaround.

  • dom/MutationObserverInterestGroup.cpp:

(WebCore::MutationObserverInterestGroup::MutationObserverInterestGroup): Fixed the crash by using Ref.
(WebCore::MutationObserverInterestGroup::enqueueMutationRecord): Ditto.

  • dom/MutationObserverInterestGroup.h:
  • dom/NativeNodeFilter.cpp:

(WebCore::NativeNodeFilter::hasCallback const): Always return true here. This function is never called
but we still need to implement it since NodeFilter has a pure virtual hasCallback() now.

  • dom/NativeNodeFilter.h:
  • dom/Node.cpp:

(WebCore::collectMatchingObserversForMutation): Use Ref to fix the crash.
(WebCore::Node::registeredMutationObservers): Ditto.

  • dom/Node.h:
  • dom/NodeFilter.h:

LayoutTests:

Added a regression test.

  • fast/dom/MutationObserver/disconnect-observer-while-mutation-records-are-enqueued-crash-expected.txt: Added.
  • fast/dom/MutationObserver/disconnect-observer-while-mutation-records-are-enqueued-crash.html: Added.
10:21 PM Changeset in webkit [226100] by Carlos Garcia Campos
  • 3 edits
    1 add in releases/WebKitGTK/webkit-2.18

Merge r223731 - Stringifier::appendStringifiedValue() is missing an exception check.
https://bugs.webkit.org/show_bug.cgi?id=178386
<rdar://problem/35027610>

Reviewed by Saam Barati.

JSTests:

  • stress/regress-178386.js: Added.

Source/JavaScriptCore:

  • runtime/JSONObject.cpp:

(JSC::Stringifier::appendStringifiedValue):

10:20 PM Changeset in webkit [226099] by Carlos Garcia Campos
  • 11 edits
    1 add in releases/WebKitGTK/webkit-2.18

Merge r223614 - The compiler should always register a structure when it adds its transitionWatchPointSet.
https://bugs.webkit.org/show_bug.cgi?id=178420
<rdar://problem/34814024>

Reviewed by Saam Barati and Filip Pizlo.

JSTests:

  • stress/regress-178420.js: Added.

(new.Array.10000.map):

Source/JavaScriptCore:

Instead of invoking addLazily() to add a structure's transitionWatchpointSet, we
now invoke Graph::registerAndWatchStructureTransition() on the structure.
registerAndWatchStructureTransition() both registers the structure and add its
transitionWatchpointSet to the plan desired watchpoints.

Graph::registerAndWatchStructureTransition() is based on Graph::registerStructure()
except registerAndWatchStructureTransition() adds the structure's
transitionWatchpointSet unconditionally.

  • dfg/DFGArgumentsEliminationPhase.cpp:
  • dfg/DFGArrayMode.cpp:

(JSC::DFG::ArrayMode::refine const):

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::handleIntrinsicCall):

  • dfg/DFGFixupPhase.cpp:

(JSC::DFG::FixupPhase::fixupNode):

  • dfg/DFGGraph.cpp:

(JSC::DFG::Graph::registerAndWatchStructureTransition):

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

(JSC::DFG::SpeculativeJIT::compileGetByValOnString):

  • The second set of addLazily()s is redundant. This set is executed only when prototypeChainIsSane is true, and prototypeChainIsSane can only be true if and only if we've executed the if statement above it. That preceding if statement already registerAndWatchStructureTransition() the same 2 structures. Hence, this second set can be deleted.
  • dfg/DFGWatchpointCollectionPhase.cpp:

(JSC::DFG::WatchpointCollectionPhase::addLazily):

  • Deleted an unused function.
  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileStringCharAt):

9:39 PM Changeset in webkit [226098] by aestes@apple.com
  • 18 edits in trunk/Source/WebCore

[Apple Pay] Only include phonetic name properties in ApplePayPaymentContact when version >= 3
https://bugs.webkit.org/show_bug.cgi?id=180925
<rdar://problem/35907596>

Reviewed by Tim Horton.

No tests possible. The fix involves converting PKContacts, which we can't create in our test harness.

  • Modules/applepay/ApplePayPaymentAuthorizedEvent.cpp:

(WebCore::ApplePayPaymentAuthorizedEvent::ApplePayPaymentAuthorizedEvent):

  • Modules/applepay/ApplePayPaymentAuthorizedEvent.h:
  • Modules/applepay/ApplePaySession.cpp:

(WebCore::ApplePaySession::create):
(WebCore::ApplePaySession::ApplePaySession):
(WebCore::ApplePaySession::version const):
(WebCore::ApplePaySession::didAuthorizePayment):
(WebCore::ApplePaySession::didSelectShippingContact):

  • Modules/applepay/ApplePaySession.h:
  • Modules/applepay/ApplePayShippingContactSelectedEvent.cpp:

(WebCore::ApplePayShippingContactSelectedEvent::ApplePayShippingContactSelectedEvent):

  • Modules/applepay/ApplePayShippingContactSelectedEvent.h:
  • Modules/applepay/Payment.h:
  • Modules/applepay/PaymentContact.h:
  • Modules/applepay/PaymentCoordinator.cpp:

(WebCore::PaymentCoordinator::supportsVersion const):
(WebCore::PaymentCoordinator::supportsVersion): Deleted.

  • Modules/applepay/PaymentCoordinator.h:
  • Modules/applepay/PaymentSession.h:
  • Modules/applepay/cocoa/PaymentCocoa.mm:

(WebCore::convert):
(WebCore::Payment::toApplePayPayment const):

  • Modules/applepay/cocoa/PaymentContactCocoa.mm:

(WebCore::convert):
(WebCore::PaymentContact::toApplePayPaymentContact const):

  • Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp:

(WebCore::ApplePayPaymentHandler::document const):
(WebCore::ApplePayPaymentHandler::paymentCoordinator const):
(WebCore::ApplePayPaymentHandler::version const):
(WebCore::ApplePayPaymentHandler::didAuthorizePayment):
(WebCore::ApplePayPaymentHandler::didSelectShippingContact):
(WebCore::ApplePayPaymentHandler::document): Deleted.
(WebCore::ApplePayPaymentHandler::paymentCoordinator): Deleted.

  • Modules/applepay/paymentrequest/ApplePayPaymentHandler.h:
9:38 PM Changeset in webkit [226097] by wenson_hsieh@apple.com
  • 6 edits in trunk

[Attachment Support] The 'webkitattachmentbloburl' attribute should not persist after markup serialization
https://bugs.webkit.org/show_bug.cgi?id=180924
<rdar://problem/36099093>

Reviewed by Tim Horton.

Source/WebCore:

Work towards dragging Blob-backed attachment elements as files on iOS and Mac. It doesn't make sense for the
attachment blob URL to stick around on the element after markup serialization, so this patch removes logic that
eagerly sets the blob URL upon setting an attachment's File. Instead, we just append this attribute when
generating markup.

This patch also augments existing WKAttachmentTests to ensure that these attributes are not present.

  • editing/markup.cpp:

(WebCore::StyledMarkupAccumulator::appendCustomAttributes):
(WebCore::createFragmentFromMarkup):

  • html/HTMLAttachmentElement.cpp:

(WebCore::HTMLAttachmentElement::setFile):

  • rendering/HitTestResult.cpp:

Fixes a related issue where an attachment is backed by Blob data (and not a file path) would specify "file:///"
as its attachment file path in DragController when starting a drag. Instead, if there is no file path, fall back
to the blob URL.

This will be tested in a future patch once a WK2 dragging simulator for Mac is implemented, and support for
dragging out Blob-backed attachments as (platform) files is implemented.

(WebCore::HitTestResult::absoluteAttachmentURL const):

Tools:

Tweaks some existing tests to check that temporary attachment serialization attributes don't stick around on the
attachment elements.

  • TestWebKitAPI/Tests/WebKitCocoa/WKAttachmentTests.mm:

(-[TestWKWebView hasAttribute:forQuerySelector:]):
(TestWebKitAPI::TEST):

9:08 PM Changeset in webkit [226096] by Chris Dumez
  • 11 edits in trunk

Default scope used when registering a service worker is wrong
https://bugs.webkit.org/show_bug.cgi?id=180961

Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

Rebaseline WPT test now that more checks are passing.

  • web-platform-tests/service-workers/service-worker/register-default-scope.https-expected.txt:

Source/WebCore:

The default scope we used when registering a service worker was wrong, it did not match:

This patch aligns our behavior with the specification.

No new tests, rebaselined existing test.

  • workers/service/ServiceWorkerContainer.cpp:

(WebCore::ServiceWorkerContainer::addRegistration):

LayoutTests:

Update / Rebaseline WebKit tests due to behavior change.

  • http/tests/workers/service/basic-register-exceptions-expected.txt:
  • http/tests/workers/service/basic-unregister.https-expected.txt:
  • http/tests/workers/service/resources/basic-unregister.js:

(async.test):

  • http/tests/workers/service/resources/service-worker-getRegistration.js:

(async.test):

  • http/tests/workers/service/self_registration-expected.txt:
  • http/tests/workers/service/service-worker-clear.html:
8:32 PM Changeset in webkit [226095] by rniwa@webkit.org
  • 5 edits
    4 adds in trunk

Assertion hit in DocumentOrderedMap::get while removing a form element
https://bugs.webkit.org/show_bug.cgi?id=137959
<rdar://problem/27702012>

Reviewed by Brent Fulgham.

Source/WebCore:

The assertion failure was caused by FormAssociatedElement::findAssociatedForm calling TreeScope::getElementById
for a form associated element inside FormAttributeTargetObserver::idTargetChanged during the removal of
the owner form element, or the first non-form element with the matching ID. If there are other elements with
the same ID in the removed tree at that moment, MapEntry's count for the ID can be higher than it needs to be
since Element::removedFromAncestor has not been called on those elements yet.

Fixed the bug by checking this condition explicitly. This patch introduces ContainerChildRemovalScope which
keeps track of the container node from which a subtree was removed as well as the root of the removed subtree.
DocumentOrderedMap::get then checks whether the matching element can be found in this removed subtree, and its
isConnected() still returns true (the evidence that Element::removedFromAncestor has not been called) when
count > 0 and there was no matching element in the tree scope.

In the long term, we should refactor the way FormAssociatedElement and HTMLFormElement refers to each other
and avoid calling DocumentOrderedMap::get before finish calling removedFromAncestor on the removed subtree.

Tests: fast/forms/update-form-owner-in-moved-subtree-assertion-failure-5.html

fast/forms/update-form-owner-in-moved-subtree-assertion-failure-6.html

  • dom/ContainerNodeAlgorithms.cpp:

(WebCore::notifyChildNodeRemoved):

  • dom/ContainerNodeAlgorithms.h:

(WebCore::ContainerChildRemovalScope): Added.
(WebCore::ContainerChildRemovalScope::ContainerChildRemovalScope):
(WebCore::ContainerChildRemovalScope::~ContainerChildRemovalScope):
(WebCore::ContainerChildRemovalScope::parentOfRemovedTree):
(WebCore::ContainerChildRemovalScope::removedChild):
(WebCore::ContainerChildRemovalScope::currentScope):

  • dom/DocumentOrderedMap.cpp:

(WebCore::DocumentOrderedMap::get const): Added a special early exit when this function is called during
a node removal.

LayoutTests:

Added regression tests for removing a subtree with a form associated element, its owner form element
and another element with the same ID.

  • fast/forms/update-form-owner-in-moved-subtree-assertion-failure-5-expected.txt: Added.
  • fast/forms/update-form-owner-in-moved-subtree-assertion-failure-5.html: Added.
  • fast/forms/update-form-owner-in-moved-subtree-assertion-failure-6-expected.txt: Added.
  • fast/forms/update-form-owner-in-moved-subtree-assertion-failure-6.html: Added.
8:09 PM Changeset in webkit [226094] by timothy@hatcher.name
  • 3 edits in trunk/Source/WebCore

[GTK][WPE] Conditionalize libTASN1 use behind ENABLE_SUBTLE_CRYPTO in the CMake files
https://bugs.webkit.org/show_bug.cgi?id=180949

Reviewed by Carlos Alberto Lopez Perez.

  • PlatformGTK.cmake: Move the include path and library additions to conditional ENABLE_SUBTLE_CRYPTO section.
  • PlatformWPE.cmake: Ditto.
8:03 PM Changeset in webkit [226093] by wenson_hsieh@apple.com
  • 8 edits in trunk

[Attachment Support] Support representing pasted or dropped content using attachment elements
https://bugs.webkit.org/show_bug.cgi?id=180892
<rdar://problem/36064210>

Reviewed by Tim Horton.

Source/WebCore:

Support dropping and pasting attributed strings that contain NSTextAttachments. Teaches
replaceRichContentWithAttachmentsIfNecessary to replace object elements with attachments; see comments below for
more details.

Test: WKAttachmentTests.InsertPastedAttributedStringContainingMultipleAttachments

  • editing/WebContentReader.h:

Add BlobReplacementInfo, which contains a map of blob URLs to replacement Blobs, as well as a map of blob URLs
to replaced subresource URLs.

(WebCore::BlobReplacementInfo::isEmpty const):

  • editing/cocoa/EditorCocoa.mm:

(WebCore::Editor::replaceSelectionWithAttributedString):

  • editing/cocoa/WebArchiveResourceFromNSAttributedString.h:
  • editing/cocoa/WebArchiveResourceFromNSAttributedString.mm:

Implement -[WebArchiveResourceFromNSAttributedString MIMEType]. UIFoundation asks for -MIMEType in the process
of generating markup from NSTextAttachments; this currently causes the web process to crash on an unrecognized
selector.

Additionally, work around <rdar://problem/36074429>, a UIFoundation bug in which all but a few hard-coded file
extensions actually yield MIME types that are more specific than "application/octet-stream". This can safely be
removed once <rdar://problem/36074429> is addressed.

(-[WebArchiveResourceFromNSAttributedString MIMEType]):

  • editing/cocoa/WebContentReaderCocoa.mm:

(WebCore::replaceRichContentWithAttachmentsIfNecessary):

Try to replace object elements with attachments, and also tweak the title of the attachment's File to use the
replaced subresource's filename if possible. Additionally, abstracts out information for replacing object or
image elements (formerly a pair of { File, Element }) into a separate struct, and add a AttachmentDisplayMode
parameter to determine whether the attachment should be presented in-line (in the case of images), or as an icon.

(WebCore::attributesForAttributedStringConversion):

Only exclude object elements from being generated from NSTextAttachments if the attachment element runtime
feature is disabled, or !ENABLE(ATTACHMENT_ELEMENT).

(WebCore::createFragmentAndAddResources):

Additionally keep track of a mapping from blob URL => replaced subresource URL. In all the places where we
previously only plumbed a map of blob URL => Blob, use a BlobReplacementInfo struct instead, which now includes
a map from blob URL => replaced URL.

(WebCore::sanitizeMarkupWithArchive):
(WebCore::WebContentReader::readWebArchive):
(WebCore::WebContentMarkupReader::readWebArchive):
(WebCore::WebContentReader::readRTFD):
(WebCore::WebContentMarkupReader::readRTFD):
(WebCore::WebContentReader::readRTF):
(WebCore::WebContentMarkupReader::readRTF):
(WebCore::WebContentReader::readImage):

Tools:

Adds a new API test to exercise pasting an attributed string with multiple attachments of different types.

  • TestWebKitAPI/Tests/WebKitCocoa/WKAttachmentTests.mm:

(testZIPData):
(platformCopyRichTextWithMultipleAttachments):
(TestWebKitAPI::TEST):

6:15 PM Changeset in webkit [226092] by Chris Dumez
  • 2 edits in trunk/LayoutTests/imported/w3c

Unreviewed, rebaseline imported/w3c/web-platform-tests/service-workers/service-worker/registration-security-error.https.html after r226087.

  • web-platform-tests/service-workers/service-worker/registration-security-error.https-expected.txt:
6:09 PM Changeset in webkit [226091] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKitLegacy/win

[Win] SHOULD NEVER BE REACHED in WebFrameLoaderClient::pageID
https://bugs.webkit.org/show_bug.cgi?id=180926

Patch by Fujii Hironori <Fujii Hironori> on 2017-12-18
Reviewed by Tim Horton.

Apply the same change of mac/WebCoreSupport/WebFrameLoaderClient.mm
of r225934 to win/WebCoreSupport/WebFrameLoaderClient.cpp.

  • WebCoreSupport/WebFrameLoaderClient.cpp:

(WebFrameLoaderClient::frameID const): Removed RELEASE_ASSERT_NOT_REACHED.
(WebFrameLoaderClient::pageID const): Ditto.

5:55 PM Changeset in webkit [226090] by commit-queue@webkit.org
  • 8 edits in trunk

Service worker served response tainting should keep its tainting
https://bugs.webkit.org/show_bug.cgi?id=180952

Patch by Youenn Fablet <youenn@apple.com> on 2017-12-18
Reviewed by Chris Dumez.

LayoutTests/imported/w3c:

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

Source/WebCore:

Covered by rebased tests.

  • loader/cache/CachedResource.cpp:

(WebCore::CachedResource::setResponse):

LayoutTests:

  • http/tests/workers/service/resources/tainted-image-fetch.js:

(async.test): Updated erroneous test. This test is laoding a cross origin image.
through a service worker which instead provides a synthetic response which
should be considered as same origin.

  • http/tests/workers/service/tainted-image-fetch-expected.txt:
5:39 PM Changeset in webkit [226089] by wenson_hsieh@apple.com
  • 2 edits in trunk/Source/WebCore

Unreviewed, attempt to fix watch and TV builds after r226085

Explicitly include a header in WebContentReaderCocoa.mm.

  • editing/cocoa/WebContentReaderCocoa.mm:
5:16 PM Changeset in webkit [226088] by beidson@apple.com
  • 31 edits
    1 add in trunk

Add ability to API test Service Workers via a custom protocol.
https://bugs.webkit.org/show_bug.cgi?id=180911

Reviewed by Chris Dumez.

Source/WebCore:

Covered by API test ServiceWorkers.Basic

This adds a set of "Service Workers can handle this" schemes to the scheme registry
and uses it for SW decisions instead of a handful of previous techniques.

  • bindings/scripts/CodeGeneratorJS.pm:

(NeedsRuntimeCheck):
(GenerateRuntimeEnableConditionalString):

  • bindings/scripts/IDLAttributes.json:
  • dom/ScriptExecutionContext.cpp:

(WebCore::ScriptExecutionContext::hasServiceWorkerScheme):

  • dom/ScriptExecutionContext.h:
  • page/NavigatorServiceWorker.idl:
  • platform/SchemeRegistry.cpp:

(WebCore::serviceWorkerSchemesLock):
(WebCore::serviceWorkerSchemes):
(WebCore::SchemeRegistry::registerURLSchemeServiceWorkersCanHandle):
(WebCore::SchemeRegistry::canServiceWorkersHandleURLScheme):
(WebCore::SchemeRegistry::isServiceWorkerContainerCustomScheme):

  • platform/SchemeRegistry.h:
  • workers/service/ServiceWorkerContainer.cpp:

(WebCore::ServiceWorkerContainer::addRegistration):

  • workers/service/server/SWServerJobQueue.cpp:

(WebCore::SWServerJobQueue::runRegisterJob):

Source/WebKit:

This adds a set of "Service Workers can handle this" schemes to the scheme registry
and most of these WebKit changes are to support getting those values out to all processes.

Additionally, WebsiteDataRecords used to be file/http(s)-only. That seems bizarre and definitely
got in the way of testing. So I also added a way to allow any scheme to result in a valid record.

  • Shared/ChildProcess.cpp:

(WebKit::ChildProcess::registerURLSchemeServiceWorkersCanHandle const):

  • Shared/ChildProcess.h:
  • Shared/ChildProcess.messages.in:
  • Shared/Storage/StorageProcessCreationParameters.cpp:

(WebKit::StorageProcessCreationParameters::encode const):
(WebKit::StorageProcessCreationParameters::decode):

  • Shared/Storage/StorageProcessCreationParameters.h:
  • Shared/WebProcessCreationParameters.cpp:

(WebKit::WebProcessCreationParameters::encode const):
(WebKit::WebProcessCreationParameters::decode):

  • Shared/WebProcessCreationParameters.h:
  • StorageProcess/StorageProcess.cpp:

(WebKit::StorageProcess::initializeWebsiteDataStore):

  • UIProcess/API/Cocoa/WKProcessPool.mm:

(-[WKProcessPool _registerURLSchemeServiceWorkersCanHandle:]):

  • UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
  • UIProcess/API/Cocoa/WKWebsiteDataStore.mm:

(+[WKWebsiteDataStore _allowWebsiteDataRecordsForAllOrigins]):

  • UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::ensureStorageProcessAndWebsiteDataStore):
(WebKit::WebProcessPool::initializeNewWebProcess):
(WebKit::WebProcessPool::registerURLSchemeServiceWorkersCanHandle):

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

(WebKit::WebsiteDataStore::allowWebsiteDataRecordsForAllOrigins):
(WebKit::WebsiteDataStore::fetchDataAndApply):

  • UIProcess/WebsiteData/WebsiteDataStore.h:
  • WebProcess/Storage/WebServiceWorkerProvider.cpp:

(WebKit::WebServiceWorkerProvider::handleFetch):

  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::initializeWebProcess):

Tools:

Adds a very basic SW test:

  • Verify WebsiteDataStore can wipe all SW registration data.
  • Fire up a web page with a service worker
  • Verify SW registration data for that page exists in the WebsiteDataStore.
  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm: Added.
4:48 PM Changeset in webkit [226087] by Chris Dumez
  • 11 edits in trunk

We should use "error" redirect mode for fetching service worker scripts
https://bugs.webkit.org/show_bug.cgi?id=180950

Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

Rebaseline test now that behavior has changed. Note that we are still failing becuase we reject
the registration promise with a TypeError instead of a SecurityError. I cannot find any reason
to throw a SecurityError here based on the specification though, so the test may not match the
specification.

  • web-platform-tests/service-workers/service-worker/registration-security-error.https-expected.txt:

Source/WebCore:

We should use "error" redirect mode for fetching service worker scripts, as per:

No new tests, rebaselined existing test.

  • loader/SubresourceLoader.cpp:

(WebCore::SubresourceLoader::willSendRequestInternal):

  • workers/Worker.cpp:

(WebCore::Worker::create):

  • workers/WorkerScriptLoader.cpp:

(WebCore::WorkerScriptLoader::loadAsynchronously):

  • workers/WorkerScriptLoader.h:
  • workers/service/ServiceWorkerJob.cpp:

(WebCore::ServiceWorkerJob::fetchScriptWithContext):

4:28 PM Changeset in webkit [226086] by Chris Dumez
  • 4 edits in trunk

ExtendableMessageEvent constructor fails to initialize the 'source' attribute
https://bugs.webkit.org/show_bug.cgi?id=180954

Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

Rebaseline WPT test now that more checks are passing.

  • web-platform-tests/service-workers/service-worker/ServiceWorkerGlobalScope/extendable-message-event-constructor.https-expected.txt:

Source/WebCore:

No new tests, rebaselined existing test.

  • workers/service/ExtendableMessageEvent.cpp:

(WebCore::ExtendableMessageEvent::ExtendableMessageEvent):

4:19 PM Changeset in webkit [226085] by wenson_hsieh@apple.com
  • 11 edits in trunk

[Attachment Support] Insert images as inline attachments when pasting and dropping
https://bugs.webkit.org/show_bug.cgi?id=180853
<rdar://problem/35756268>

Reviewed by Tim Horton.

Source/WebCore:

Adds support for transforming dropped and pasted web content fragments prior to insertion, such that inline
elements (so far, only images) are replaced with attachment elements that have an inline representation. See
below comments for more detail.

Tests: WKAttachmentTests.InsertPastedImageAsAttachment

WKAttachmentTests.InsertPastedAttributedStringContainingImage
WKAttachmentTestsMac.InsertPastedFileURLsAsAttachments
WKAttachmentTestsIOS.InsertDroppedImageAsAttachment
WKAttachmentTestsIOS.InsertDroppedAttributedStringContainingAttachment

  • editing/WebContentReader.h:
  • editing/cocoa/EditorCocoa.mm:

(WebCore::Editor::replaceSelectionWithAttributedString):

Add a new helper to replace elements in a DOM fragment with inline attachment elements instead, using the given
Blobs. So far, we only replace image elements with these attachments, by mapping the source of each image to a
Blob, and constructing a replacement attachment backed by a File constructed from the image's corresponding
Blob. However, this mechanism can be generalized in the future to handle transformations from arbitrary elements
to attachment elements capable of representing the same elements using inline display mode.

This function is a noop if the attachment elements are disabled via runtime-enabled features.

  • editing/cocoa/WebContentReaderCocoa.mm:

(WebCore::replaceRichContentWithAttachmentsIfNecessary):
(WebCore::createFragmentAndAddResources):
(WebCore::sanitizeMarkupWithArchive):

Add out-params to both of these helper functions that capture the map of blob URLs to Blobs being used to
replace subresource URLs in the pasted/dropped DOM fragment.

(WebCore::WebContentReader::readWebArchive):
(WebCore::WebContentMarkupReader::readWebArchive):
(WebCore::createFragmentFromAttributedString):
(WebCore::WebContentReader::readRTFD):
(WebCore::WebContentMarkupReader::readRTFD):
(WebCore::WebContentReader::readRTF):
(WebCore::WebContentMarkupReader::readRTF):
(WebCore::WebContentReader::readImage):

In these places where we swap out subresource URLs for blob URLs, collect a map of blob URL => Blob, and use it
to replace images in the DOM with attachments (if needed, and possible).

  • editing/mac/WebContentReaderMac.mm:

(WebCore::WebContentReader::readFilenames):

Augment existing logic to generate attachment elements when pasting or dropping file URLs, so that the generated
attachment elements also have titles, subtitles, and content type information.

  • html/HTMLAttachmentElement.cpp:

(WebCore::HTMLAttachmentElement::setFile):

Add an optional second param, UpdateDisplayAttributes. If UpdateDisplayAttributes::Yes is passed in, then we set
the elements's attributes that are displayed in the attachment representation (title, subtitle, and type) using
the given File.

(WebCore::HTMLAttachmentElement::updateFileWithData):
(WebCore::HTMLAttachmentElement::populateShadowRootIfNecessary):

Make a small tweak to correctly handle the case where an attachment with a content type that is a UTI is being
displayed inline. Content type can either be a UTI or a MIME type, but the code to construct the shadow tree of
an attachment element only handles MIME types.

  • html/HTMLAttachmentElement.h:

Tools:

Adds new WKAttachment API tests and test support. See comments below for more detail.

  • TestWebKitAPI/Tests/WebKitCocoa/WKAttachmentTests.mm:

Tweak the editing test page markup, such that document.body.innerHTML doesn't additionally contain the contents
of the script tag.

(webViewForTestingAttachments):
(testImageFileURL):
(testImageData):
(testPDFFileURL):
(testPDFData):
(platformCopyRichTextWithAttachment):
(platformCopyPNG):
(platformImageWithData):

Add some platform helper functions, which some of the platform-agnostic tests below use to resolve differences
between iOS and macOS when writing to the pasteboard and creating an image from data.

(TestWebKitAPI::TEST):

Add new API tests to exercise drag and drop/copy and paste of rich content (namely, images and files) on iOS and
macOS. iOS attachment tests use DataInteractionSimulator to simulate UIKit drag and drop coordination. On macOS,
handling of dropped content is much closer to handling of pasted content (they use the same codepaths to read
from the platform pasteboard), so exercising paste codepaths on Mac is sufficient.

  • TestWebKitAPI/ios/DataInteractionSimulator.h:
  • TestWebKitAPI/ios/DataInteractionSimulator.mm:

(-[DataInteractionSimulator _resetSimulatedState]):
(-[DataInteractionSimulator insertedAttachments]):
(-[DataInteractionSimulator removedAttachments]):

Teach the iOS drag and drop simulator to keep track of attachment elements that are inserted during a drop. We
also keep track of removed attachments here too, though no default drop handling scenario should trigger
attachment removal, so we simply use this to check that no _WKAttachments were removed during a drop.

(-[DataInteractionSimulator _webView:didInsertAttachment:]):
(-[DataInteractionSimulator _webView:didRemoveAttachment:]):

4:15 PM Changeset in webkit [226084] by commit-queue@webkit.org
  • 8 edits in trunk

SameOrigin and CORS fetch should fail on opaque responses served from ServiceWorker
https://bugs.webkit.org/show_bug.cgi?id=180941

Patch by Youenn Fablet <youenn@apple.com> on 2017-12-18
Reviewed by Chris Dumez.

LayoutTests/imported/w3c:

  • web-platform-tests/service-workers/service-worker/fetch-response-taint.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/opaque-response-preloaded.https-expected.txt:

Source/WebCore:

Covered by rebased tests.

  • loader/SubresourceLoader.cpp:

(WebCore::SubresourceLoader::checkResponseCrossOriginAccessControl):

4:14 PM Changeset in webkit [226083] by beidson@apple.com
  • 2 edits in trunk/Source/WebKit

Apps that use both WK1 and WK2 can crash creating a WKWebsiteDataStore.
https://bugs.webkit.org/show_bug.cgi?id=180953

Reviewed by Chris Dumez.

  • UIProcess/WebsiteData/WebsiteDataStore.cpp: Make an isMainThread() asset be an isUIThread() assert.
3:02 PM Changeset in webkit [226082] by Nikita Vasilyev
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Styles Redesign: Command-S should save changes in matching CSS resource
https://bugs.webkit.org/show_bug.cgi?id=180900

Reviewed by Timothy Hatcher.

When focused on a CSS selector, property name or value, pressing Command-S should save
the CSS resource to the file system.

  • UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:

(WI.SpreadsheetCSSStyleDeclarationSection.prototype.initialLayout):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype._save):

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

Follow up to bug#179762. Fix PreciseLocalClobberize to handle Spread/PhantomSpread(PhantomNewArrayBuffer)

  • dfg/DFGPreciseLocalClobberize.h:

(JSC::DFG::PreciseLocalClobberizeAdaptor::readTop):

2:05 PM Changeset in webkit [226080] by dino@apple.com
  • 2 edits in trunk/Source/WebCore

Make some functions in GraphicsContextCG use call_once for statics
https://bugs.webkit.org/show_bug.cgi?id=180841
<rdar://problem/36058448>

Reviewed by Antoine Quint.

In preparation for making OffscreenCanvas operate inside a Worker,
make sure GraphicsContext is thread safe. Change some functions
that use a static to call_once.

  • platform/graphics/cg/GraphicsContextCG.cpp:

(WebCore::sRGBColorSpaceRef):
(WebCore::linearRGBColorSpaceRef):
(WebCore::extendedSRGBColorSpaceRef):
(WebCore::displayP3ColorSpaceRef):

2:04 PM Changeset in webkit [226079] by webkit@devinrousso.com
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Styles Redesign: add inline swatch for CSS variables
https://bugs.webkit.org/show_bug.cgi?id=180798

Reviewed by Timothy Hatcher.

  • UserInterface/Views/SpreadsheetStyleProperty.js:

(WI.SpreadsheetStyleProperty):
(WI.SpreadsheetStyleProperty.prototype.updateStatus):
(WI.SpreadsheetStyleProperty.prototype._renderValue):
(WI.SpreadsheetStyleProperty.prototype._addVariableTokens):

1:56 PM Changeset in webkit [226078] by Chris Dumez
  • 6 edits in trunk

ExtendableMessageEvent.data should return the value it was initialized to
https://bugs.webkit.org/show_bug.cgi?id=180868

Reviewed by Geoffrey Garen.

LayoutTests/imported/w3c:

Rebaseline WPT test now that one more subtest is passing.

  • web-platform-tests/service-workers/service-worker/ServiceWorkerGlobalScope/extendable-message-event-constructor.https-expected.txt:

Source/WebCore:

No new tests, rebaselined existing test.

  • bindings/js/JSExtendableMessageEventCustom.cpp:

(WebCore::constructJSExtendableMessageEvent):

  • workers/service/ExtendableMessageEvent.cpp:

(WebCore::ExtendableMessageEvent::ExtendableMessageEvent):

  • workers/service/ExtendableMessageEvent.idl:
1:51 PM Changeset in webkit [226077] by webkit@devinrousso.com
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: recording view and slider have jumbled layout at narrow widths
https://bugs.webkit.org/show_bug.cgi?id=180597
<rdar://problem/35939904>

Reviewed by Timothy Hatcher.

  • UserInterface/Views/RecordingContentView.css:

(.content-view:not(.tab).recording > header > .slider-container):
(.content-view:not(.tab).recording > header > .slider-container > *):
(.content-view:not(.tab).recording > header > .slider-container > input[type=range]):

1:51 PM Changeset in webkit [226076] by Matt Baker
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: Canvas tab: placeholder/help text wrapping looks poor at narrow widths
https://bugs.webkit.org/show_bug.cgi?id=180943
<rdar://problem/36114431>

Reviewed by Timothy Hatcher.

  • UserInterface/Views/ContentView.css:

(.content-view > .message-text-view > .description):

  • UserInterface/Views/Main.css:

(.message-text-view .navigation-item-help):
(.message-text-view .navigation-item-help .navigation-bar):
(.message-text-view .navigation-item-help .navigation-bar > .item):

1:49 PM Changeset in webkit [226075] by webkit@devinrousso.com
  • 2 edits in trunk/Source/WebInspectorUI

REGRESSION (r225569): Web Inspector: Commented out properties aren't properly highlighted
https://bugs.webkit.org/show_bug.cgi?id=180687

Reviewed by Timothy Hatcher.

  • UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css:

(.spreadsheet-style-declaration-editor .property:not(.disabled) .name):
(.spreadsheet-style-declaration-editor .property:not(.disabled) .value):
(.spreadsheet-style-declaration-editor .property.disabled):
(.spreadsheet-style-declaration-editor .name): Deleted.
(.spreadsheet-style-declaration-editor .value): Deleted.
(.spreadsheet-style-declaration-editor .property.disabled, .spreadsheet-style-declaration-editor .property.disabled > *): Deleted.

1:34 PM Changeset in webkit [226074] by Matt Lewis
  • 2 edits in trunk/LayoutTests

Marked http/tests/resourceLoadStatistics/telemetry-generation.html as flaky.
https://bugs.webkit.org/show_bug.cgi?id=180703

Unreviewed test gardening.

  • platform/wk2/TestExpectations:
1:23 PM Changeset in webkit [226073] by dbates@webkit.org
  • 2 edits in trunk/Source/WTF

Conditionally forward declare NSMapTable SPI
https://bugs.webkit.org/show_bug.cgi?id=180936
<rdar://problem/35037796>

Reviewed by Dan Bernstein.

  • wtf/spi/cocoa/NSMapTableSPI.h:
1:13 PM Changeset in webkit [226072] by Brent Fulgham
  • 3 edits in trunk/Source/WebKit

[macOS, iOS] Add new mach lookup port for CoreMedia remote control
https://bugs.webkit.org/show_bug.cgi?id=180938
<rdar://problem/35447664>

Reviewed by Eric Carlson.

Update the app sandbox to support a new XPC endpoint for CoreMedia. This endpoint exposes
existing functions through a new, more-focused interface. This will (hopefully) allow us
to remove the more generic endpoints in a future update.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
  • WebProcess/com.apple.WebProcess.sb.in:
1:13 PM Changeset in webkit [226071] by Matt Lewis
  • 2 edits in trunk/LayoutTests

Rebaselined fast/mediastream/MediaStream-MediaElement-setObject-null.html.

Unreviewed test gardening

  • fast/mediastream/MediaStream-MediaElement-setObject-null-expected.txt:
1:06 PM Changeset in webkit [226070] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Network Tab - waterfall graph can be mis-sized after closing detail view
https://bugs.webkit.org/show_bug.cgi?id=180903
<rdar://problem/36087903>

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-12-18
Reviewed by Matt Baker.

  • UserInterface/Views/NetworkTableContentView.js:

(WI.NetworkTableContentView.prototype._hideResourceDetailView):
Redraw waterfall column after hiding the detail view.

12:23 PM Changeset in webkit [226069] by jmarcell@apple.com
  • 3 edits
    2 deletes in branches/safari-604-branch

Revert r225497. rdar://problem/36112729

12:15 PM Changeset in webkit [226068] by fpizlo@apple.com
  • 13 edits in trunk/Source

Vector index masking
https://bugs.webkit.org/show_bug.cgi?id=180909

Reviewed by Keith Miller.

Source/JavaScriptCore:

Adopt index masking for strings.

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileGetCharCodeAt):
(JSC::DFG::SpeculativeJIT::compileGetByValOnString):

  • ftl/FTLAbstractHeapRepository.h:
  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileStringCharAt):
(JSC::FTL::DFG::LowerDFGToB3::compileStringCharCodeAt):

  • jit/ThunkGenerators.cpp:

(JSC::stringCharLoad):

Source/WTF:

Adds index masking to StringImpl and Vector.

Perf:

  • 0.4% slower on microbenchmarks.
  • Octane totally even.
  • Kraken may be 0.8% slower.
  • Speedometer is 0.8% slower with p = 0.008.
  • membuster is even:
    • snap2pre: 0.7% bigger w/ p = 0.26,
    • snap2post: 0.3% smaller w/ p = 0.81,
    • snap3pre: 1.2% bigger w/ p = 0.63,
    • snap3post: 0.4% smaller w/ p = 0.76.
  • wtf/MathExtras.h:

(WTF::roundUpToPowerOfTwo):
(WTF::maskForSize):

  • wtf/SizeLimits.cpp:
  • wtf/Vector.h:

(WTF::VectorBufferBase::allocateBuffer):
(WTF::VectorBufferBase::tryAllocateBuffer):
(WTF::VectorBufferBase::reallocateBuffer):
(WTF::VectorBufferBase::deallocateBuffer):
(WTF::VectorBufferBase::releaseBuffer):
(WTF::VectorBufferBase::VectorBufferBase):
(WTF::VectorBufferBase::updateMask):
(WTF::VectorBuffer::allocateBuffer):
(WTF::VectorBuffer::tryAllocateBuffer):
(WTF::VectorBuffer::swap):
(WTF::VectorBuffer::restoreInlineBufferIfNeeded):
(WTF::Vector::at):
(WTF::Vector::at const):

  • wtf/text/StringImpl.h:

(WTF::StringImpl::maskOffset):
(WTF::StringImpl::mask const):
(WTF::StringImplShape::StringImplShape):
(WTF::StringImpl::at const):
(WTF::StringImpl::tailOffset):

  • wtf/text/StringView.h:

(WTF::StringView::StringView):
(WTF::StringView::operator=):
(WTF::StringView::initialize):
(WTF::StringView::clear):
(WTF::StringView::operator[] const):

  • wtf/text/WTFString.h:

(WTF::String::mask const):

12:13 PM Changeset in webkit [226067] by Megan Gardner
  • 18 edits
    2 adds in trunk

Support Autoscrolling in contenteditable for WK2
https://bugs.webkit.org/show_bug.cgi?id=180789

Source/WebCore:

Reviewed by Simon Frasier and Wenson Hsieh..

Activate the autoscrollController to scroll to the position provided to us by the
UIProcess. Allows for scrolling in contentEditable for WebKit2

Test: fast/events/touch/ios/drag-to-autoscroll-in-single-line-editable.html

  • page/AutoscrollController.cpp:

(WebCore::AutoscrollController::autoscrollTimerFired):

  • page/EventHandler.cpp:

(WebCore::EventHandler::clearOrScheduleClearingLatchedStateIfNeeded):
(WebCore::EventHandler::targetPositionForSelectionAutoscroll const):
(WebCore::EventHandler::shouldUpdateAutoscroll):
(WebCore::EventHandler::effectiveMousePositionForSelectionAutoscroll const): Deleted.

  • page/EventHandler.h:
  • page/ios/EventHandlerIOS.mm:

(WebCore::EventHandler::startTextAutoscroll):
(WebCore::EventHandler::cancelTextAutoscroll):
(WebCore::EventHandler::targetPositionForSelectionAutoscroll const):
(WebCore::EventHandler::shouldUpdateAutoscroll):

  • page/mac/EventHandlerMac.mm:

(WebCore::EventHandler::targetPositionForSelectionAutoscroll const):
(WebCore::EventHandler::effectiveMousePositionForSelectionAutoscroll const): Deleted.

Source/WebKit:

Reviewed by Simon Frasier and Wenson Hsieh.

Implements the UIKit protocol for autoscrolling and alerts the Web Process to start
(or stop) an autoscroll to the specified position. Allows for scrolling in contenteditable
in WebKit2.

  • Platform/spi/ios/UIKitSPI.h:
  • UIProcess/WebPageProxy.h:
  • UIProcess/ios/WKContentViewInteraction.h:
  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView startAutoscroll:]):
(-[WKContentView cancelAutoscroll]):
(-[WKContentView scrollSelectionToVisible:]):

  • UIProcess/ios/WebPageProxyIOS.mm:

(WebKit::WebPageProxy::startAutoscrollAtPosition):
(WebKit::WebPageProxy::cancelAutoscroll):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:
  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::startAutoscrollAtPosition):
(WebKit::WebPage::cancelAutoscroll):

11:53 AM Changeset in webkit [226066] by commit-queue@webkit.org
  • 20 edits in trunk

Add support for response blob given to fetch events
https://bugs.webkit.org/show_bug.cgi?id=180894

Patch by Youenn Fablet <youenn@apple.com> on 2017-12-18
Reviewed by Darin Adler.

LayoutTests/imported/w3c:

  • web-platform-tests/service-workers/service-worker/fetch-event-after-navigation-within-page.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/fetch-event-referrer-policy.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/fetch-event.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/fetch-header-visibility.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/fetch-mixed-content-to-outscope.https-expected.txt:

Source/WebCore:

Covered by updated test expectations.

Adding support for getting a blob URL from a FormData that only contains one blob.
Adding support to create a FetcLoader from a ServiceWorkerThreadProxy

  • Modules/fetch/FetchLoader.cpp:

(WebCore::FetchLoader::start):
(WebCore::FetchLoader::startLoadingBlobURL):

  • Modules/fetch/FetchLoader.h:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/network/FormData.cpp:

(WebCore::FormData::asBlobURL const):

  • platform/network/FormData.h:
  • workers/service/context/ServiceWorkerThreadProxy.cpp:

(WebCore::ServiceWorkerThreadProxy::createBlobLoader):

  • workers/service/context/ServiceWorkerThreadProxy.h:

Source/WebKit:

In case of blob data, read it from Service Worker process and send it to WebProcess.
At some point, web process should be able to read it directly from NetworkProcess.

  • WebProcess/Storage/WebSWContextManagerConnection.cpp:

(WebKit::WebSWContextManagerConnection::startFetch):

  • WebProcess/Storage/WebServiceWorkerFetchTaskClient.cpp:

(WebKit::WebServiceWorkerFetchTaskClient::WebServiceWorkerFetchTaskClient):
(WebKit::WebServiceWorkerFetchTaskClient::didReceiveFormData):
(WebKit::WebServiceWorkerFetchTaskClient::didReceiveBlobChunk):
(WebKit::WebServiceWorkerFetchTaskClient::didFinishBlobLoading):
(WebKit::WebServiceWorkerFetchTaskClient::didFinish):

  • WebProcess/Storage/WebServiceWorkerFetchTaskClient.h:
11:32 AM Changeset in webkit [226065] by Alan Bujtas
  • 5 edits
    2 adds in trunk

[SVG] Detach list wrappers before resetting the base value.
https://bugs.webkit.org/show_bug.cgi?id=180912
<rdar://problem/36017970>

Reviewed by Simon Fraser.

Source/WebCore:

Before resetting the animation value (and destroying the assigned SVG object -SVGLengthValue in this case),
we need to check if there's an associated tear off wrapper for the said SVG object and make a copy of it.
This is currently done in the wrong order through animValDidChange.

Test: svg/animations/crash-when-animation-is-running-while-getting-value.html

  • svg/SVGAnimatedTypeAnimator.h:

(WebCore::SVGAnimatedTypeAnimator::resetFromBaseValue):

  • svg/properties/SVGAnimatedPropertyTearOff.h:
  • svg/properties/SVGAnimatedStaticPropertyTearOff.h:

(WebCore::SVGAnimatedStaticPropertyTearOff::synchronizeWrappersIfNeeded):

LayoutTests:

  • svg/animations/crash-when-animation-is-running-while-getting-value-expected.txt: Added.
  • svg/animations/crash-when-animation-is-running-while-getting-value.html: Added.
11:20 AM Changeset in webkit [226064] by beidson@apple.com
  • 4 edits in trunk/Source/WebCore

REGRESSION: ASSERTION FAILED: !m_importCompleted
https://bugs.webkit.org/show_bug.cgi?id=180935

Unreviewed bot gardening.

No new tests (Covered by existing tests)

The ASSERT was invalid for database pushes failing to open databases like this, so skip it for that scenario.

  • workers/service/server/RegistrationStore.cpp:

(WebCore::RegistrationStore::databaseFailedToOpen):

  • workers/service/server/SWServer.cpp:

(WebCore::SWServer::registrationStoreDatabaseFailedToOpen):

  • workers/service/server/SWServer.h:
10:54 AM Changeset in webkit [226063] by jmarcell@apple.com
  • 7 edits in tags/Safari-605.1.18.2/Source

Versioning.

10:52 AM Changeset in webkit [226062] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

[WinCairo] Move the destination of WinCairoRequirements.zip into WebKitLibraries and register it and related files as git ignore files.
https://bugs.webkit.org/show_bug.cgi?id=180875
<rdar://problem/36091434>

Patch by Fujii Hironori <Fujii Hironori> on 2017-12-18
Reviewed by Darin Adler.

update-webkit-wincairo-libs.py gets broken by r226002. Downloaded
WinCairoRequirements.zip can not be found to unzip because the
destination was changed.

  • Scripts/update-webkit-wincairo-libs.py: Specify the correct zip path to unzip.
10:50 AM Changeset in webkit [226061] by jmarcell@apple.com
  • 1 copy in tags/Safari-605.1.18.2

New tag.

9:48 AM Changeset in webkit [226060] by guijemont@igalia.com
  • 2 edits in trunk/JSTests

Skip stress/call-apply-exponential-bytecode-size.js unless x86-64 or arm64
https://bugs.webkit.org/show_bug.cgi?id=180712

Reviewed by Michael Catanzaro.

stress/call-apply-exponential-bytecode-size.js crashes if the
ExecutableAllocator's fixedExecutableMemoryPoolSize is less than 64
MB. Currently it is 64 MB or more only on x86-64 and arm64, so we
should skip the test on other platforms.

  • stress/call-apply-exponential-bytecode-size.js:
9:43 AM Changeset in webkit [226059] by jer.noble@apple.com
  • 6 edits
    2 adds in trunk

Playing media elements which call "pause(); play()" will have the play promise rejected.
https://bugs.webkit.org/show_bug.cgi?id=180781

Reviewed by Eric Carlson.

Source/WebCore:

Test: media/video-pause-play-resolve.html

When scheduling a rejection or resolution of existing play promises, move() the existing
promises into the block. This ensures that valid promises aren't added to the play promise
vector between when a rejection is scheduled and when it runs.

Drive-by fix: Don't return false from playInternal() just so the newly created promise will
get rejected. The pause() command will reject the promise, so just make sure it's added to
the m_pendingPlayPromises before calling playInternal().

Drive-by fix #2: The spec referenced by playInternal() and pauseInternal() doesn't say to
call the "Media Element Load Algorithm" (i.e., prepareForLoad()); it says to call the
"Resource Selection Algorithm" (i.e., selectMediaResource()). But fixing this bug caused
an assertion crash when the resource selection task was fired and m_player was null. This
was because the algorithm is being run at stop() time due to stop() calling pause(). The
solution to this ASSERT is to stop the m_resourceSelectionTaskQueue in stop().

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::scheduleRejectPendingPlayPromises):
(WebCore::HTMLMediaElement::rejectPendingPlayPromises):
(WebCore::HTMLMediaElement::resolvePendingPlayPromises):
(WebCore::HTMLMediaElement::scheduleNotifyAboutPlaying):
(WebCore::HTMLMediaElement::notifyAboutPlaying):
(WebCore::HTMLMediaElement::noneSupported):
(WebCore::HTMLMediaElement::cancelPendingEventsAndCallbacks):
(WebCore::HTMLMediaElement::play):
(WebCore::HTMLMediaElement::playInternal):
(WebCore::HTMLMediaElement::pauseInternal):
(WebCore::HTMLMediaElement::stop):

  • html/HTMLMediaElement.h:

LayoutTests:

  • media/audio-dealloc-crash.html:
  • media/video-pause-play-resolve-expected.txt: Added.
  • media/video-pause-play-resolve.html: Added.
9:42 AM Changeset in webkit [226058] by Carlos Garcia Campos
  • 5 edits in releases/WebKitGTK/webkit-2.18/Source/WebDriver

Merge r225970 - WebDriver: add support for accept/dismiss and notify unhandled prompt behavior
https://bugs.webkit.org/show_bug.cgi?id=179999

Reviewed by Carlos Alberto Lopez Perez.

They work as accept and dismiss, but unexpected alert open is still reported.

  1. User Prompts

https://w3c.github.io/webdriver/webdriver-spec.html#dfn-known-prompt-handling-approaches-table

  • Capabilities.h: Add DismissAndNotify and AcceptAndNotify to UnhandledPromptBehavior enum.
  • Session.cpp:

(WebDriver::Session::handleUnexpectedAlertOpen): Move default implementation to dismissAndNotifyAlert and
acceptAndNotifyAlert and use dismissAndNotifyAlert by default.
(WebDriver::Session::dismissAndNotifyAlert):
(WebDriver::Session::acceptAndNotifyAlert):

  • Session.h:
  • WebDriverService.cpp:

(WebDriver::deserializeUnhandledPromptBehavior): Handle accept/dismiss and notify.
(WebDriver::WebDriverService::newSession): Ditto.

9:41 AM Changeset in webkit [226057] by Carlos Garcia Campos
  • 7 edits
    1 add
    1 delete in releases/WebKitGTK/webkit-2.18

Merge r225902 - WebDriver: add a common way to run tests with pytest
https://bugs.webkit.org/show_bug.cgi?id=180800

Reviewed by Carlos Alberto Lopez Perez.

Tools:

We currently use pytestrunner from wpt for w3c tests and our own code for selenium tests. Using the same code
for both would simplify everything, but also allows us to have a custom results recorder to support other test
expectations like TIMEOUT. The code to run selenium tests with pytest has been moved to a new file
pytest_runner.py and made generic to be used also for w3c tests.

  • Scripts/webkitpy/webdriver_tests/pytest_runner.py: Added.

(TemporaryDirectory):
(TemporaryDirectory.enter):
(TemporaryDirectory.exit):
(CollectRecorder):
(CollectRecorder.init):
(CollectRecorder.pytest_collectreport):
(HarnessResultRecorder):
(HarnessResultRecorder.init):
(HarnessResultRecorder.pytest_collectreport):
(SubtestResultRecorder):
(SubtestResultRecorder.init):
(SubtestResultRecorder.pytest_runtest_logreport):
(SubtestResultRecorder._was_timeout):
(SubtestResultRecorder.record_pass):
(SubtestResultRecorder.record_fail):
(SubtestResultRecorder.record_error):
(SubtestResultRecorder.record_skip):
(SubtestResultRecorder.record):
(collect):
(run):

  • Scripts/webkitpy/webdriver_tests/webdriver_selenium_executor.py:

(do_delayed_imports): Import pytest_runner here to avoid cycles.
(WebDriverSeleniumExecutor.init): Save the driver parameter as args member and call do_delayed_imports() if
needed.
(WebDriverSeleniumExecutor.collect): Use pytest_runner.
(WebDriverSeleniumExecutor.run): Ditto.

  • Scripts/webkitpy/webdriver_tests/webdriver_test_runner.py:

(WebDriverTestRunner.print_results): Handle all possible tests results.
(WebDriverTestRunner.print_results.report): Helper to dump test results.

  • Scripts/webkitpy/webdriver_tests/webdriver_test_runner_selenium.py:

(WebDriverTestRunnerSelenium.run):

  • Scripts/webkitpy/webdriver_tests/webdriver_test_runner_w3c.py:

(WebDriverTestRunnerW3C.init): Do not set PYTEST_TIMEOUT env var.
(WebDriverTestRunnerW3C._is_test): Fix check for support files.
(WebDriverTestRunnerW3C.run): Pass the timeout as parameter to WebDriverW3CExecutor.run().

  • Scripts/webkitpy/webdriver_tests/webdriver_w3c_executor.py:

(do_delayed_imports): Import pytest_runner here to avoid cycles.
(WebDriverW3CExecutor.init): Call do_delayed_imports() if needed.
(WebDriverW3CExecutor.run): Use pytest_runner.

WebDriverTests:

Remove conftest.py since pytest_timeout plugin is now always loaded from the command line.

  • imported/w3c/conftest.py: Removed.
9:40 AM Changeset in webkit [226056] by Carlos Garcia Campos
  • 6 edits in releases/WebKitGTK/webkit-2.18/Tools

Merge r225740 - [GTK] WebDriver: run-webdriver-tests is leaking a DumpRenderTree directory in tmp
https://bugs.webkit.org/show_bug.cgi?id=180426

Reviewed by Michael Catanzaro.

This happens when running the tests with Xvfb driver, because _setup_environ_for_test() is called twice and the
DTR temp directory is created there every time. Only the last directory created is cleaned up by the driver
destructor. The DRT temp directory is only needed for layout tests, so we could even avoid its creation by
moving it to the start() method like other drivers do (included the base driver implementation). Since API and
WebDriver tests don't call start(), the directory is not even created, and the required env vars are not set
either in that case. Weston driver was behaving differently for some reason, it's now consistent with all other
drivers.

  • Scripts/webkitpy/port/headlessdriver.py:

(HeadlessDriver._setup_environ_for_test): Do not set DUMPRENDERTREE_TEMP and XDG_CACHE_HOME if _driver_tempdir is None.
(HeadlessDriver._start): Use Port._driver_tempdir() to create the driver temp directory.

  • Scripts/webkitpy/port/waylanddriver.py:

(WaylandDriver._setup_environ_for_test): Do not set DUMPRENDERTREE_TEMP and XDG_CACHE_HOME if _driver_tempdir is None.
(WaylandDriver._start): Use Port._driver_tempdir() to create the driver temp directory.

  • Scripts/webkitpy/port/westondriver.py:

(WestonDriver._setup_environ_for_test): Do not set DUMPRENDERTREE_TEMP and XDG_CACHE_HOME if _driver_tempdir is None.
(WestonDriver._start): Use Port._driver_tempdir() to create the driver temp directory.
(WestonDriver.stop): Do not delete the temp directory, it's done by the parent class.
(WestonDriver._ensure_driver_tmpdir_subdirectory): Deleted.

  • Scripts/webkitpy/port/westondriver_unittest.py:

(WestonDriverTest.make_driver):
(WestonDriverTest.test_stop):

  • Scripts/webkitpy/port/xorgdriver.py:

(XorgDriver._setup_environ_for_test): Do not set DUMPRENDERTREE_TEMP and XDG_CACHE_HOME if _driver_tempdir is None.
(XorgDriver._start): Use Port._driver_tempdir() to create the driver temp directory.

  • Scripts/webkitpy/port/xvfbdriver.py:

(XvfbDriver._setup_environ_for_test): Do not set DUMPRENDERTREE_TEMP and XDG_CACHE_HOME if _driver_tempdir is None.
(XvfbDriver._start): Use Port._driver_tempdir() to create the driver temp directory.

9:40 AM Changeset in webkit [226055] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.18/Source/WebDriver

Merge r225739 - WebDriver: get active element should return no such element error when there isn't an active element
https://bugs.webkit.org/show_bug.cgi?id=180421

Reviewed by Brian Burg.

We currently return unknown error.

Fixes: imported/w3c/webdriver/tests/element_retrieval/get_active_element.py::test_missing_document_element

  • Session.cpp:

(WebDriver::Session::getActiveElement):

9:35 AM Changeset in webkit [226054] by dbates@webkit.org
  • 1 edit
    2 adds in trunk/LayoutTests

Add a test to ensure that matched text markers are not highlighted when highlight is disabled
https://bugs.webkit.org/show_bug.cgi?id=180919

Reviewed by Antti Koivisto.

  • fast/text/mark-matches-rendering-when-highlight-disabled-expected.html: Added.
  • fast/text/mark-matches-rendering-when-highlight-disabled.html: Added.
9:35 AM Changeset in webkit [226053] by Carlos Garcia Campos
  • 8 edits in releases/WebKitGTK/webkit-2.18/WebDriverTests

Merge r225476 - Unreviewed. Update W3C WebDriver imported tests.

  • imported/w3c/importer.json:
  • imported/w3c/tools/webdriver/webdriver/client.py:
  • imported/w3c/tools/webdriver/webdriver/error.py:
  • imported/w3c/webdriver/tests/element_retrieval/get_active_element.py:
  • imported/w3c/webdriver/tests/interaction/element_clear.py:
  • imported/w3c/webdriver/tests/sessions/status.py:
  • imported/w3c/webdriver/tests/support/wait.py:
9:34 AM Changeset in webkit [226052] by Carlos Garcia Campos
  • 5 edits in releases/WebKitGTK/webkit-2.18/Source/WebDriver

Merge r225474 - WebDriver: implement element property command
https://bugs.webkit.org/show_bug.cgi?id=180244

Reviewed by Brian Burg.

13.3 Get Element Property
https://w3c.github.io/webdriver/webdriver-spec.html#get-element-property

Fixes: imported/w3c/webdriver/tests/state/get_element_property.py::test_no_browsing_context

imported/w3c/webdriver/tests/state/get_element_property.py::test_handle_prompt_dismiss
imported/w3c/webdriver/tests/state/get_element_property.py::test_handle_prompt_accept
imported/w3c/webdriver/tests/state/get_element_property.py::test_handle_prompt_missing_value
imported/w3c/webdriver/tests/state/get_element_property.py::test_element_stale

  • Session.cpp:

(WebDriver::Session::getElementAttribute):
(WebDriver::Session::getElementProperty):

  • Session.h:
  • WebDriverService.cpp:

(WebDriver::WebDriverService::getElementProperty):

  • WebDriverService.h:
9:34 AM Changeset in webkit [226051] by Carlos Garcia Campos
  • 7 edits in releases/WebKitGTK/webkit-2.18/Source

Merge r225448 - WebDriver: handle user prompts shown while executing scripts
https://bugs.webkit.org/show_bug.cgi?id=179979

Reviewed by Brian Burg.

Source/WebDriver:

15.2 Executing Script
https://w3c.github.io/webdriver/webdriver-spec.html#executing-script

The rules to execute a function body are as follows. The algorithm will return success with the JSON
representation of the function’s return value, or an error if the evaluation of the function results in a
JavaScript exception being thrown or at any point during its execution an unhandled user prompt appears.

If at any point during the algorithm a user prompt appears, the user prompt handler must be invoked. If its
return value is an error, it must immediately return with that error and abort all subsequent substeps of this
algorithm.

This will be covered by new WPT tests that will be available after the next upgrade.

  • CommandResult.cpp:

(WebDriver::CommandResult::CommandResult): Handle UnexpectedAlertOpen internal error.

  • Session.cpp:

(WebDriver::Session::handleUserPrompts): Move code to handleUnexpectedAlertOpen() and call it instead.
(WebDriver::Session::handleUnexpectedAlertOpen): Code moved here to be used also by executeScript().
(WebDriver::Session::executeScript): In case of UnexpectedAlertOpen error, call handleUnexpectedAlertOpen().

  • Session.h:

Source/WebKit:

  • UIProcess/Automation/Automation.json: Add UnexpectedAlertOpen error.
  • UIProcess/Automation/WebAutomationSession.cpp:

(WebKit::WebAutomationSession::willShowJavaScriptDialog): Finish pending evaluateJavaScriptFunction operations
with UnexpectedAlertOpen error.

9:34 AM Changeset in webkit [226050] by Carlos Garcia Campos
  • 16 edits
    1 add
    75 deletes in releases/WebKitGTK/webkit-2.18

Merge r225447 - WebDriver: auto-install pytest instead of importing it from wpt tools directory
https://bugs.webkit.org/show_bug.cgi?id=180243

Reviewed by Brian Burg.

Tools:

We don't really need the (old) version included in wpt tools dir, so we can simply remove it and use autoinstall
instead.

  • Scripts/webkitpy/thirdparty/init.py:

(AutoinstallImportHook.find_module): Check pytest.
(AutoinstallImportHook._install_pytest): Install pytest.

  • Scripts/webkitpy/webdriver_tests/webdriver_selenium_executor.py: Import autoinstalled pytest.
  • Scripts/webkitpy/webdriver_tests/webdriver_test_runner_w3c.py:

(WebDriverTestRunnerW3C.run): Update the subtest path since the new pytest uses a different strategy for
rootdir.

  • Scripts/webkitpy/webdriver_tests/webdriver_w3c_executor.py: Import autoinstalled pytest.

WebDriverTests:

  • imported/selenium/py/conftest.py: Stop patching this to use yield_fixture, new pytest supports this.
  • imported/selenium/py/setup.cfg: Stop patching this, since pytest supports tool:pytest as group name.
  • imported/selenium/py/test/selenium/webdriver/common/alerts_tests.py: Stop patching this to use yield_fixture,

new pytest supports this.

  • imported/selenium/py/test/selenium/webdriver/common/cookie_tests.py: Ditto.
  • imported/selenium/py/test/selenium/webdriver/common/frame_switching_tests.py: Ditto.
  • imported/selenium/py/test/selenium/webdriver/common/page_load_timeout_tests.py: Ditto.
  • imported/selenium/py/test/selenium/webdriver/common/window_switching_tests.py: Ditto.
  • imported/selenium/py/test/selenium/webdriver/safari/conftest.py: Ditto.
  • imported/selenium/py/test/selenium/webdriver/support/event_firing_webdriver_tests.py: Ditto.
  • imported/w3c/importer.json: Stop importing pytest.
  • imported/w3c/pytest.ini: Added.
  • imported/w3c/tools/pytest/: Removed.
9:30 AM Changeset in webkit [226049] by Carlos Garcia Campos
  • 8 edits
    423 adds
    1 delete in releases/WebKitGTK/webkit-2.18

Merge r225390 - WebDriver: add support for importing and running selenium tests
https://bugs.webkit.org/show_bug.cgi?id=180145

Reviewed by Brian Burg.

Tools:

We currently import and run W3C tests, which are the best ones to ensure our implementation is spec
compliant. However, the selenium API is what user will actually use in the end, so it's important to ensure that
we don't break the selenium support. This patch adds webdriver_test_runner_selenium.py and
webdriver_selenium_executor.py to run selenium tests. The script import-w3c-webdriver-tests has been renamed as
import-webdriver-tests and it can now import selenium tests too.

  • Scripts/import-w3c-webdriver-tests: Removed.
  • Scripts/import-webdriver-tests: Added.

(Importer):
(Importer.init):
(Importer.download_tests):
(Importer.import_tests):
(Importer.import_tests.should_skip_file):

  • Scripts/webkitpy/webdriver_tests/webdriver_driver.py:

(WebDriver.browser_path):
(WebDriver):
(WebDriver.browser_args):
(WebDriver.selenium_name):

  • Scripts/webkitpy/webdriver_tests/webdriver_driver_gtk.py:

(WebDriverGtk.browser_path):
(WebDriverGtk):
(WebDriverGtk.browser_args):
(WebDriverGtk.capabilities):
(WebDriverGtk.selenium_name):

  • Scripts/webkitpy/webdriver_tests/webdriver_driver_wpe.py:

(WebDriverWPE.browser_args):
(WebDriverWPE.capabilities):

  • Scripts/webkitpy/webdriver_tests/webdriver_selenium_executor.py: Added.

(_ensure_directory_in_path):
(CollectRecorder):
(CollectRecorder.init):
(CollectRecorder.pytest_collectreport):
(WebDriverSeleniumExecutor):
(WebDriverSeleniumExecutor.init):
(WebDriverSeleniumExecutor.collect):
(WebDriverSeleniumExecutor.run):

  • Scripts/webkitpy/webdriver_tests/webdriver_test_runner.py:

(WebDriverTestRunner):
(WebDriverTestRunner.init):
(WebDriverTestRunner.run):
(WebDriverTestRunner.print_results):
(WebDriverTestRunner.dump_results_to_json_file):

  • Scripts/webkitpy/webdriver_tests/webdriver_test_runner_selenium.py: Added.

(WebDriverTestRunnerSelenium):
(WebDriverTestRunnerSelenium.init):
(WebDriverTestRunnerSelenium._tests_dir):
(WebDriverTestRunnerSelenium.collect_tests):
(WebDriverTestRunnerSelenium.run):
(WebDriverTestRunnerSelenium.results):

  • Scripts/webkitpy/webdriver_tests/webdriver_test_runner_w3c.py:

(WebDriverTestRunnerW3C.init):
(WebDriverTestRunnerW3C.run):

  • Scripts/webkitpy/webdriver_tests/webdriver_w3c_executor.py:

WebDriverTests:

  • imported/selenium/importer.json: Added.
  • imported/selenium/common/: Added.
  • imported/selenium/py/: Added.
9:14 AM Changeset in webkit [226048] by dbates@webkit.org
  • 16 edits
    2 adds in trunk

Add SPI to query for the current and last auto fill button type and pass user data object to _webView:focusShouldStartInputSession:
https://bugs.webkit.org/show_bug.cgi?id=180774
<rdar://problem/36033832>

Reviewed by Tim Horton.

Source/WebCore:

Expose a way for an embedding client to query for the auto fill button type of a specific
input element as it may not be feasible for a client to track such state themselves. For
similar reasons track and expose SPI to query for the last auto fill button type for a
specific field.

Test: fast/forms/auto-fill-button/last-auto-fill-button-type.html

  • html/HTMLInputElement.cpp:

(WebCore::HTMLInputElement::HTMLInputElement):
(WebCore::HTMLInputElement::setShowAutoFillButton):
Update the last auto fill button type.

  • html/HTMLInputElement.h:

(WebCore::HTMLInputElement::lastAutoFillButtonType const): Added.

  • testing/Internals.cpp:

(WebCore::toAutoFillButtonType):
(WebCore::toInternalsAutoFillButtonType):
(WebCore::Internals::autoFillButtonType):
(WebCore::Internals::lastAutoFillButtonType):

  • testing/Internals.h:
  • testing/Internals.idl:

Add functions for testing.

Source/WebKit:

Have WKFocusedElementInfo own the optional user data object associated with the focused
element as opposed to having WKFormInputSession own it. This allows the Injected Bundle's
_webView:focusShouldStartInputSession: delegate callback to make use of this user data
to determine whether focus should start a new input session.

  • UIProcess/API/Cocoa/_WKFocusedElementInfo.h:
  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKFormInputSession initWithContentView:focusedElementInfo:]):
(-[WKFormInputSession userObject]):
(-[WKFocusedElementInfo initWithAssistedNodeInformation:isUserInitiated:userObject:]):
(-[WKFocusedElementInfo userObject]):
(-[WKContentView _startAssistingNode:userIsInteracting:blurPreviousNode:userObject:]):
(-[WKFormInputSession initWithContentView:focusedElementInfo:userObject:]): Deleted.
(-[WKFocusedElementInfo initWithAssistedNodeInformation:isUserInitiated:]): Deleted.

  • WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandle.mm:

(toWKAutoFillButtonType):
(-[WKWebProcessPlugInNodeHandle htmlInputElementAutoFillButtonType]):
(-[WKWebProcessPlugInNodeHandle htmlInputElementLastAutoFillButtonType]):

  • WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandlePrivate.h:
  • WebProcess/InjectedBundle/API/c/WKBundleNodeHandle.cpp:

(toWKAutoFillButtonType):
(WKBundleNodeHandleGetHTMLInputElementAutoFillButtonType):
(WKBundleNodeHandleGetHTMLInputElementLastAutoFillButtonType):

  • WebProcess/InjectedBundle/API/c/WKBundleNodeHandlePrivate.h:
  • WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.cpp:

(WebKit::InjectedBundleNodeHandle::htmlInputElementAutoFillButtonType const):
(WebKit::InjectedBundleNodeHandle::htmlInputElementLastAutoFillButtonType const):

  • WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.h:

LayoutTests:

Adds a test to ensure that we can query for the current auto fill button type and last auto fill button
type of an HTML input element.

  • fast/forms/auto-fill-button/last-auto-fill-button-type-expected.txt: Added.
  • fast/forms/auto-fill-button/last-auto-fill-button-type.html: Added.
9:00 AM Changeset in webkit [226047] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.18/Source/WebKit

Merge r225388 - WebDriver: link and partial links queries don't work in xhtml documents
https://bugs.webkit.org/show_bug.cgi?id=180191

Reviewed by Brian Burg.

We convert the queries to use xpath, which works for html documents, but it doesn't work for xhtml. In case of
xhtml we would need to provide a namespace resolver and elements would need to be prefixed with 'xhtml:'. It's
easier to simply iterate the link elements and compare the text.

Fixes: imported/w3c/webdriver/tests/retrieval/find_element_from_element.py::test_xhtml_namespace[link text-full link text]

imported/w3c/webdriver/tests/retrieval/find_element_from_element.py::test_xhtml_namespace[partial link text-link text]
imported/w3c/webdriver/tests/retrieval/find_element_from_elements.py::test_xhtml_namespace[link text-full link text]
imported/w3c/webdriver/tests/retrieval/find_element_from_elements.py::test_xhtml_namespace[partial link text-link text]
imported/w3c/webdriver/tests/retrieval/find_element.py::test_xhtml_namespace[link text-full link text]
imported/w3c/webdriver/tests/retrieval/find_element.py::test_xhtml_namespace[partial link text-link text]
imported/w3c/webdriver/tests/retrieval/find_elements.py::test_xhtml_namespace[link text-full link text]
imported/w3c/webdriver/tests/retrieval/find_elements.py::test_xhtml_namespace[partial link text-link text]

  • UIProcess/Automation/atoms/FindNodes.js:

(switch):
(tryToFindNode):

9:00 AM Changeset in webkit [226046] by Carlos Garcia Campos
  • 3 edits in releases/WebKitGTK/webkit-2.18/Source/WebDriver

Merge r225387 - WebDriver: implement status command
https://bugs.webkit.org/show_bug.cgi?id=180133

Reviewed by Brian Burg.

8.3 Status
https://w3c.github.io/webdriver/webdriver-spec.html#status

Fixes: imported/w3c/webdriver/tests/sessions/status.py::test_get_status_no_session

imported/w3c/webdriver/tests/sessions/status.py::test_status_with_session_running_on_endpoint_node

  • WebDriverService.cpp:

(WebDriver::WebDriverService::status):

  • WebDriverService.h:
9:00 AM Changeset in webkit [226045] by Carlos Garcia Campos
  • 3 edits in releases/WebKitGTK/webkit-2.18/Source/WebDriver

Merger r225386 - WebDriver: end point nodes are only allowed to have one session
https://bugs.webkit.org/show_bug.cgi?id=180131

Reviewed by Brian Burg.

We are currently keeping a map of sessions, but our service is always and end point node, so only one session
can exist at a time. Make findSessionOrCompleteWithError() return a boolean instead, failing in case the sessionID
parameter is not found or it doesn't match the current session. Replace the session map and active session
pointer with a single session member and return SessionNotCreated error when new session command is received and
there's an active session.

  1. Sessions

A remote end has an associated maximum active sessions (an integer) that defines the number of active sessions
that are supported. This may be “unlimited” for intermediary nodes, but must be exactly one for a remote end
that is an endpoint node.
https://w3c.github.io/webdriver/webdriver-spec.html#dfn-maximum-active-sessions

Fixes: imported/w3c/webdriver/tests/sessions/new_session/default_values.py::test_repeat_new_session

  • WebDriverService.cpp:

(WebDriver::WebDriverService::findSessionOrCompleteWithError):
(WebDriver::WebDriverService::newSession):
(WebDriver::WebDriverService::deleteSession):
(WebDriver::WebDriverService::status):
(WebDriver::WebDriverService::setTimeouts):
(WebDriver::WebDriverService::go):
(WebDriver::WebDriverService::getCurrentURL):
(WebDriver::WebDriverService::back):
(WebDriver::WebDriverService::forward):
(WebDriver::WebDriverService::refresh):
(WebDriver::WebDriverService::getTitle):
(WebDriver::WebDriverService::getWindowHandle):
(WebDriver::WebDriverService::setWindowRect):
(WebDriver::WebDriverService::closeWindow):
(WebDriver::WebDriverService::switchToWindow):
(WebDriver::WebDriverService::getWindowHandles):
(WebDriver::WebDriverService::switchToFrame):
(WebDriver::WebDriverService::switchToParentFrame):
(WebDriver::findStrategyAndSelectorOrCompleteWithError):
(WebDriver::WebDriverService::findElement):
(WebDriver::WebDriverService::findElements):
(WebDriver::WebDriverService::findElementFromElement):
(WebDriver::WebDriverService::findElementsFromElement):
(WebDriver::WebDriverService::getActiveElement):
(WebDriver::WebDriverService::isElementSelected):
(WebDriver::WebDriverService::getElementAttribute):
(WebDriver::WebDriverService::getElementText):
(WebDriver::WebDriverService::getElementTagName):
(WebDriver::WebDriverService::getElementRect):
(WebDriver::WebDriverService::isElementEnabled):
(WebDriver::WebDriverService::isElementDisplayed):
(WebDriver::WebDriverService::elementClick):
(WebDriver::WebDriverService::elementClear):
(WebDriver::WebDriverService::elementSendKeys):
(WebDriver::findScriptAndArgumentsOrCompleteWithError):
(WebDriver::WebDriverService::executeScript):
(WebDriver::WebDriverService::executeAsyncScript):
(WebDriver::WebDriverService::getAllCookies):
(WebDriver::WebDriverService::getNamedCookie):
(WebDriver::deserializeCookie):
(WebDriver::WebDriverService::addCookie):
(WebDriver::WebDriverService::deleteCookie):
(WebDriver::WebDriverService::deleteAllCookies):
(WebDriver::WebDriverService::dismissAlert):
(WebDriver::WebDriverService::acceptAlert):
(WebDriver::WebDriverService::getAlertText):
(WebDriver::WebDriverService::sendAlertText):
(WebDriver::WebDriverService::takeScreenshot):
(WebDriver::WebDriverService::takeElementScreenshot):

  • WebDriverService.h:
8:56 AM Changeset in webkit [226044] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.18/Source/WebKit

Merge r225367 - Web Automation: computeElementLayout does not correctly translate iframe client coordinates to main frame coordinates
https://bugs.webkit.org/show_bug.cgi?id=180213
<rdar://problem/30260141>

Reviewed by Simon Fraser.

The current implementation computes points in terms of the frame in which the element is located.
However, WebDriver expects coordinates to be relative to the top-level document since
these coordinates are used for generating click events, among other things.

To convert from frame client coordinates to main frame client coordinates, round-trip
both inViewCenterPoint and elementBounds to root view coordinates and back
to the main frame's contents/client coordinates. Then convert this to page coordinates if needed.

This progresses several tests in the Selenium Python test suite:

  • event_firing_webdriver_tests.py::test_should_fire_navigation_events
  • frame_switching_tests.py::testShouldBeAbleToClickInAFrameThatRewritesTopWindowLocation
  • frame_switching_tests.py::testShouldBeAbleToSwitchToTheTopIfTheFrameIsDeletedFromUnderUs
  • frame_switching_tests.py::testShouldBeAbleToSwitchToTheTopIfTheFrameIsDeletedFromUnderUsWithFrameIndex
  • frame_switching_tests.py::testShouldBeAbleToSwitchToTheTopIfTheFrameIsDeletedFromUnderUsWithWebelement
  • frame_switching_tests.py::testShouldNotBeAbleToDoAnythingTheFrameIsDeletedFromUnderUs
  • position_and_size_tests.py::testShouldGetCoordinatesOfAnInvisibleElement
  • WebProcess/Automation/WebAutomationSessionProxy.cpp:

(WebKit::WebAutomationSessionProxy::computeElementLayout):
Get both the frame and main frame FrameViews and convert coordinates to the root view.
This is somewhat lossy as clientToDocument* deals with FloatPoints but contentsToRootView
deals with IntPoints. For the purposes of WebDriver, lossiness is not a problem since
integer values are expected anyway.

The imperative nature of the coordinate calculations is difficult to debug, so I converted
this function to only assign to each variable once.

8:56 AM Changeset in webkit [226043] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.18/Source/WebDriver

Merge r225326 - WebDriver: locator strategy should be validated before trying to find elements
https://bugs.webkit.org/show_bug.cgi?id=180187

Reviewed by Carlos Alberto Lopez Perez.

We currently rely on the js atom to raise an exception in case the locator strategy is not valid, but in case of
find element from element, if the element doesn't exist we fail with stale element error instead of invalid
argument as expected. So, let's validate the strategies when parsing them, which would also avoid going to the
browser in cae of invalid strategy.

Fixes: imported/w3c/webdriver/tests/retrieval/find_element_from_element.py::test_invalid_using_argument[a]

  • WebDriverService.cpp:

(WebDriver::isValidStrategy):
(WebDriver::findStrategyAndSelectorOrCompleteWithError):

8:56 AM Changeset in webkit [226042] by Carlos Garcia Campos
  • 5 edits in releases/WebKitGTK/webkit-2.18/Source/WebDriver

Merge r225325 - WebDriver: remove elementSubmit command
https://bugs.webkit.org/show_bug.cgi?id=180186

Reviewed by Carlos Alberto Lopez Perez.

It's not in the spec, we had it only because selenium used it, but now it uses execute_script with custom code
to implement submit, so we can just remove it.

  • Session.cpp:

(WebDriver::Session::elementSubmit): Deleted.

  • Session.h:
  • WebDriverService.cpp:

(WebDriver::WebDriverService::elementSubmit): Deleted.

  • WebDriverService.h:
8:56 AM Changeset in webkit [226041] by Carlos Garcia Campos
  • 5 edits in releases/WebKitGTK/webkit-2.18/Tools

Merge r225262 - WebDriver: add an option to dump test results to a json file
https://bugs.webkit.org/show_bug.cgi?id=180082

Reviewed by Brian Burg.

Add --json-output command line option to run-webdriver-tests to dump test results to a json file in a format
compatible with the W3C report. WebDriverTestResult now represents a test file and contains a list of
subtests, instead of having one WebDriverTestResult per subtest. This way we can store also the harness result
and dump the results to different formats.

  • Scripts/run-webdriver-tests:
  • Scripts/webkitpy/webdriver_tests/webdriver_test_result.py:

(WebDriverTestResult.init):
(WebDriverTestResult):
(WebDriverTestResult.add_subtest_results):

  • Scripts/webkitpy/webdriver_tests/webdriver_test_runner.py:

(WebDriverTestRunner.print_results):
(WebDriverTestRunner):
(WebDriverTestRunner.dump_results_to_json_file):

  • Scripts/webkitpy/webdriver_tests/webdriver_test_runner_w3c.py:

(WebDriverTestRunnerW3C.run):

8:51 AM Changeset in webkit [226040] by Carlos Garcia Campos
  • 109 edits
    2 copies
    3 moves
    1 add
    1 delete in releases/WebKitGTK/webkit-2.18

Merge r225231 - Move JSONValues to WTF and convert uses of InspectorValues.h to JSONValues.h
https://bugs.webkit.org/show_bug.cgi?id=173793

Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2017-11-14
Source/JavaScriptCore:

Reviewed by Joseph Pecoraro.

Based on patch by Brian Burg.

  • JavaScriptCore.xcodeproj/project.pbxproj:
  • Sources.txt:
  • bindings/ScriptValue.cpp:

(Inspector::jsToInspectorValue):
(Inspector::toInspectorValue):
(Deprecated::ScriptValue::toInspectorValue const):

  • bindings/ScriptValue.h:
  • inspector/AsyncStackTrace.cpp:
  • inspector/ConsoleMessage.cpp:
  • inspector/ContentSearchUtilities.cpp:
  • inspector/DeprecatedInspectorValues.cpp: Added.
  • inspector/DeprecatedInspectorValues.h: Added.

Keep the old symbols around in JavaScriptCore so that builds with the
public iOS SDK continue to work. These older SDKs include a version of
WebInspector.framework that expects to find InspectorArray and other
symbols in JavaScriptCore.framework.

  • inspector/InjectedScript.cpp:

(Inspector::InjectedScript::getFunctionDetails):
(Inspector::InjectedScript::functionDetails):
(Inspector::InjectedScript::getPreview):
(Inspector::InjectedScript::getProperties):
(Inspector::InjectedScript::getDisplayableProperties):
(Inspector::InjectedScript::getInternalProperties):
(Inspector::InjectedScript::getCollectionEntries):
(Inspector::InjectedScript::saveResult):
(Inspector::InjectedScript::wrapCallFrames const):
(Inspector::InjectedScript::wrapObject const):
(Inspector::InjectedScript::wrapTable const):
(Inspector::InjectedScript::previewValue const):
(Inspector::InjectedScript::setExceptionValue):
(Inspector::InjectedScript::clearExceptionValue):
(Inspector::InjectedScript::inspectObject):
(Inspector::InjectedScript::releaseObject):

  • inspector/InjectedScriptBase.cpp:

(Inspector::InjectedScriptBase::makeCall):
(Inspector::InjectedScriptBase::makeEvalCall):

  • inspector/InjectedScriptBase.h:
  • inspector/InjectedScriptManager.cpp:

(Inspector::InjectedScriptManager::injectedScriptForObjectId):

  • inspector/InspectorBackendDispatcher.cpp:

(Inspector::BackendDispatcher::CallbackBase::sendSuccess):
(Inspector::BackendDispatcher::dispatch):
(Inspector::BackendDispatcher::sendResponse):
(Inspector::BackendDispatcher::sendPendingErrors):
(Inspector::BackendDispatcher::getPropertyValue):
(Inspector::castToInteger):
(Inspector::castToNumber):
(Inspector::BackendDispatcher::getInteger):
(Inspector::BackendDispatcher::getDouble):
(Inspector::BackendDispatcher::getString):
(Inspector::BackendDispatcher::getBoolean):
(Inspector::BackendDispatcher::getObject):
(Inspector::BackendDispatcher::getArray):
(Inspector::BackendDispatcher::getValue):

  • inspector/InspectorBackendDispatcher.h:

We need to keep around the sendResponse() variant with a parameter that
has the InspectorObject type, as older WebInspector.framework versions
expect this symbol to exist. Introduce a variant with arity 3 that can
be used in TOT so as to avoid having two methods with the same name, arity, and
different parameter types.

When system WebInspector.framework is updated, we can remove the legacy
method variant that uses the InspectorObject type. At that point, we can
transition TOT to use the 2-arity variant, and delete the 3-arity variant
when system WebInspector.framework is updated once more to use the 2-arity one.

  • inspector/InspectorProtocolTypes.h:

(Inspector::Protocol::Array::openAccessors):
(Inspector::Protocol::PrimitiveBindingTraits::assertValueHasExpectedType):
(Inspector::Protocol::BindingTraits<Protocol::Array<T>>::runtimeCast):
(Inspector::Protocol::BindingTraits<Protocol::Array<T>>::assertValueHasExpectedType):
(Inspector::Protocol::BindingTraits<JSON::Value>::assertValueHasExpectedType):

  • inspector/ScriptCallFrame.cpp:
  • inspector/ScriptCallStack.cpp:
  • inspector/agents/InspectorAgent.cpp:

(Inspector::InspectorAgent::inspect):

  • inspector/agents/InspectorAgent.h:
  • inspector/agents/InspectorDebuggerAgent.cpp:

(Inspector::buildAssertPauseReason):
(Inspector::buildCSPViolationPauseReason):
(Inspector::InspectorDebuggerAgent::buildBreakpointPauseReason):
(Inspector::InspectorDebuggerAgent::buildExceptionPauseReason):
(Inspector::buildObjectForBreakpointCookie):
(Inspector::InspectorDebuggerAgent::breakpointActionsFromProtocol):
(Inspector::parseLocation):
(Inspector::InspectorDebuggerAgent::setBreakpointByUrl):
(Inspector::InspectorDebuggerAgent::setBreakpoint):
(Inspector::InspectorDebuggerAgent::continueToLocation):
(Inspector::InspectorDebuggerAgent::schedulePauseOnNextStatement):
(Inspector::InspectorDebuggerAgent::didParseSource):
(Inspector::InspectorDebuggerAgent::breakProgram):

  • inspector/agents/InspectorDebuggerAgent.h:
  • inspector/agents/InspectorRuntimeAgent.cpp:

(Inspector::InspectorRuntimeAgent::callFunctionOn):
(Inspector::InspectorRuntimeAgent::saveResult):
(Inspector::InspectorRuntimeAgent::getRuntimeTypesForVariablesAtOffsets):

  • inspector/agents/InspectorRuntimeAgent.h:
  • inspector/scripts/codegen/generate_cpp_backend_dispatcher_header.py:

(CppBackendDispatcherHeaderGenerator._generate_dispatcher_declaration_for_command):

  • inspector/scripts/codegen/generate_cpp_backend_dispatcher_implementation.py:

(CppBackendDispatcherImplementationGenerator.generate_output):
(CppBackendDispatcherImplementationGenerator._generate_dispatcher_implementation_for_command):

  • inspector/scripts/codegen/generate_cpp_frontend_dispatcher_header.py:

(CppFrontendDispatcherHeaderGenerator.generate_output):

  • inspector/scripts/codegen/generate_cpp_frontend_dispatcher_implementation.py:

(CppFrontendDispatcherImplementationGenerator._generate_dispatcher_implementation_for_event):

  • inspector/scripts/codegen/generate_cpp_protocol_types_header.py:

(_generate_unchecked_setter_for_member):

  • inspector/scripts/codegen/generate_cpp_protocol_types_implementation.py:

(CppProtocolTypesImplementationGenerator):

  • inspector/scripts/codegen/generate_objc_backend_dispatcher_implementation.py:

(ObjCBackendDispatcherImplementationGenerator.generate_output):
(ObjCBackendDispatcherImplementationGenerator._generate_success_block_for_command):

  • inspector/scripts/codegen/generate_objc_frontend_dispatcher_implementation.py:

(ObjCFrontendDispatcherImplementationGenerator.generate_output):
(ObjCFrontendDispatcherImplementationGenerator._generate_event):
(ObjCFrontendDispatcherImplementationGenerator._generate_event_out_parameters):

  • inspector/scripts/codegen/generate_objc_internal_header.py:

(ObjCInternalHeaderGenerator.generate_output):

  • inspector/scripts/codegen/generate_objc_protocol_types_implementation.py:

(ObjCProtocolTypesImplementationGenerator.generate_output):

  • inspector/scripts/codegen/generator.py:
  • inspector/scripts/tests/all/expected/definitions-with-mac-platform.json-result:
  • inspector/scripts/tests/generic/expected/commands-with-async-attribute.json-result:
  • inspector/scripts/tests/generic/expected/commands-with-optional-call-return-parameters.json-result:
  • inspector/scripts/tests/generic/expected/definitions-with-mac-platform.json-result:
  • inspector/scripts/tests/generic/expected/domain-availability.json-result:
  • inspector/scripts/tests/generic/expected/domains-with-varying-command-sizes.json-result:
  • inspector/scripts/tests/generic/expected/enum-values.json-result:
  • inspector/scripts/tests/generic/expected/events-with-optional-parameters.json-result:
  • inspector/scripts/tests/generic/expected/generate-domains-with-feature-guards.json-result:
  • inspector/scripts/tests/generic/expected/same-type-id-different-domain.json-result:
  • inspector/scripts/tests/generic/expected/shadowed-optional-type-setters.json-result:
  • inspector/scripts/tests/generic/expected/type-declaration-aliased-primitive-type.json-result:
  • inspector/scripts/tests/generic/expected/type-declaration-array-type.json-result:
  • inspector/scripts/tests/generic/expected/type-declaration-enum-type.json-result:
  • inspector/scripts/tests/generic/expected/type-declaration-object-type.json-result:
  • inspector/scripts/tests/generic/expected/type-requiring-runtime-casts.json-result:
  • inspector/scripts/tests/generic/expected/type-with-open-parameters.json-result:
  • inspector/scripts/tests/generic/expected/worker-supported-domains.json-result:
  • inspector/scripts/tests/ios/expected/definitions-with-mac-platform.json-result:
  • inspector/scripts/tests/mac/expected/definitions-with-mac-platform.json-result:

Source/WebCore:

Reviewed by Joseph Pecoraro.

Based on patch by Brian Burg.

  • ForwardingHeaders/inspector/InspectorValues.h: Removed.
  • Modules/encryptedmedia/InitDataRegistry.cpp:

(WebCore::extractKeyIDsKeyids):
(WebCore::sanitizeKeyids):

  • html/parser/XSSAuditorDelegate.cpp:

(WebCore::XSSAuditorDelegate::generateViolationReport):

  • inspector/CommandLineAPIHost.cpp:

(WebCore::CommandLineAPIHost::inspect):

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

(WebCore::InspectorCanvas::recordAction):
(WebCore::InspectorCanvas::releaseData):
(WebCore::InspectorCanvas::indexForData):
(WebCore::buildArrayForVector):
(WebCore::InspectorCanvas::buildInitialState):
(WebCore::InspectorCanvas::buildAction):
(WebCore::InspectorCanvas::buildArrayForCanvasGradient):
(WebCore::InspectorCanvas::buildArrayForCanvasPattern):
(WebCore::InspectorCanvas::buildArrayForImageData):
(WebCore::InspectorCanvas::buildArrayForImageBitmap):

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

(WebCore::evaluateCommandInOverlay):
(WebCore::InspectorOverlay::evaluateInOverlay):

  • inspector/InspectorOverlay.h:
  • inspector/InspectorShaderProgram.h:
  • inspector/InspectorStyleSheet.h:

(WebCore::InspectorCSSId::InspectorCSSId):

  • inspector/TimelineRecordFactory.cpp:

(WebCore::TimelineRecordFactory::createGenericRecord):
(WebCore::TimelineRecordFactory::createFunctionCallData):
(WebCore::TimelineRecordFactory::createConsoleProfileData):
(WebCore::TimelineRecordFactory::createProbeSampleData):
(WebCore::TimelineRecordFactory::createEventDispatchData):
(WebCore::TimelineRecordFactory::createGenericTimerData):
(WebCore::TimelineRecordFactory::createTimerInstallData):
(WebCore::TimelineRecordFactory::createEvaluateScriptData):
(WebCore::TimelineRecordFactory::createTimeStampData):
(WebCore::TimelineRecordFactory::createAnimationFrameData):
(WebCore::createQuad):
(WebCore::TimelineRecordFactory::createPaintData):
(WebCore::TimelineRecordFactory::appendLayoutRoot):

  • inspector/TimelineRecordFactory.h:
  • inspector/agents/InspectorApplicationCacheAgent.cpp:
  • inspector/agents/InspectorApplicationCacheAgent.h:
  • inspector/agents/InspectorCSSAgent.cpp:

(WebCore::computePseudoClassMask):
(WebCore::InspectorCSSAgent::setStyleText):
(WebCore::InspectorCSSAgent::setRuleSelector):
(WebCore::InspectorCSSAgent::forcePseudoState):

  • inspector/agents/InspectorCSSAgent.h:
  • inspector/agents/InspectorDOMAgent.cpp:

(WebCore::parseColor):
(WebCore::parseConfigColor):
(WebCore::parseQuad):
(WebCore::InspectorDOMAgent::performSearch):
(WebCore::InspectorDOMAgent::setSearchingForNode):
(WebCore::InspectorDOMAgent::highlightConfigFromInspectorObject):
(WebCore::InspectorDOMAgent::setInspectModeEnabled):
(WebCore::InspectorDOMAgent::highlightRect):
(WebCore::InspectorDOMAgent::highlightQuad):
(WebCore::InspectorDOMAgent::innerHighlightQuad):
(WebCore::InspectorDOMAgent::highlightSelector):
(WebCore::InspectorDOMAgent::highlightNode):
(WebCore::InspectorDOMAgent::highlightNodeList):
(WebCore::InspectorDOMAgent::highlightFrame):

  • inspector/agents/InspectorDOMAgent.h:
  • inspector/agents/InspectorDOMDebuggerAgent.cpp:

(WebCore::InspectorDOMDebuggerAgent::didInvalidateStyleAttr):
(WebCore::InspectorDOMDebuggerAgent::willInsertDOMNode):
(WebCore::InspectorDOMDebuggerAgent::willRemoveDOMNode):
(WebCore::InspectorDOMDebuggerAgent::willModifyDOMAttr):
(WebCore::InspectorDOMDebuggerAgent::descriptionForDOMEvent):
(WebCore::InspectorDOMDebuggerAgent::pauseOnNativeEventIfNeeded):
(WebCore::InspectorDOMDebuggerAgent::willSendXMLHttpRequest):

  • inspector/agents/InspectorDOMDebuggerAgent.h:
  • inspector/agents/InspectorDOMStorageAgent.cpp:

(WebCore::InspectorDOMStorageAgent::getDOMStorageItems):
(WebCore::InspectorDOMStorageAgent::setDOMStorageItem):
(WebCore::InspectorDOMStorageAgent::removeDOMStorageItem):
(WebCore::InspectorDOMStorageAgent::findStorageArea):

  • inspector/agents/InspectorDOMStorageAgent.h:
  • inspector/agents/InspectorDatabaseAgent.cpp:
  • inspector/agents/InspectorIndexedDBAgent.cpp:

(WebCore::Inspector::idbKeyFromInspectorObject):
(WebCore::Inspector::idbKeyRangeFromKeyRange):
(WebCore::InspectorIndexedDBAgent::requestData):

  • inspector/agents/InspectorIndexedDBAgent.h:
  • inspector/agents/InspectorNetworkAgent.cpp:

(WebCore::buildObjectForHeaders):
(WebCore::InspectorNetworkAgent::buildObjectForResourceResponse):
(WebCore::InspectorNetworkAgent::setExtraHTTPHeaders):

  • inspector/agents/InspectorNetworkAgent.h:
  • inspector/agents/InspectorPageAgent.cpp:
  • inspector/agents/InspectorPageAgent.h:
  • inspector/agents/InspectorTimelineAgent.cpp:

(WebCore::InspectorTimelineAgent::setInstruments):
(WebCore::InspectorTimelineAgent::internalStart):
(WebCore::InspectorTimelineAgent::didInvalidateLayout):
(WebCore::InspectorTimelineAgent::willLayout):
(WebCore::InspectorTimelineAgent::didScheduleStyleRecalculation):
(WebCore::InspectorTimelineAgent::willRecalculateStyle):
(WebCore::InspectorTimelineAgent::willComposite):
(WebCore::InspectorTimelineAgent::willPaint):
(WebCore::InspectorTimelineAgent::addRecordToTimeline):
(WebCore::InspectorTimelineAgent::setFrameIdentifier):
(WebCore::InspectorTimelineAgent::appendRecord):
(WebCore::InspectorTimelineAgent::sendEvent):
(WebCore::InspectorTimelineAgent::createRecordEntry):
(WebCore::InspectorTimelineAgent::pushCurrentRecord):

  • inspector/agents/InspectorTimelineAgent.h:
  • page/csp/ContentSecurityPolicy.cpp:

(WebCore::ContentSecurityPolicy::reportViolation const):

  • platform/encryptedmedia/clearkey/CDMClearKey.cpp:

(WebCore::parseJSONObject):
(WebCore::parseLicenseFormat):
(WebCore::parseLicenseReleaseAcknowledgementFormat):
(WebCore::CDMInstanceClearKey::updateLicense):
(WebCore::CDMInstanceClearKey::removeSessionData):

  • platform/graphics/avfoundation/CDMFairPlayStreaming.cpp:

(WebCore::extractSinfData):

  • testing/Internals.cpp:

Source/WebDriver:

Reviewed by Joseph Pecoraro.

  • CMakeLists.txt:
  • CommandResult.cpp:

(WebDriver::CommandResult::CommandResult):

  • CommandResult.h:

(WebDriver::CommandResult::success):
(WebDriver::CommandResult::fail):
(WebDriver::CommandResult::result const):
(WebDriver::CommandResult::setAdditionalErrorData):
(WebDriver::CommandResult::additionalErrorData const):

  • Session.cpp:

(WebDriver::firstWindowHandleInResult):
(WebDriver::Session::handleUserPrompts):
(WebDriver::Session::reportUnexpectedAlertOpen):
(WebDriver::Session::go):
(WebDriver::Session::getCurrentURL):
(WebDriver::Session::back):
(WebDriver::Session::forward):
(WebDriver::Session::refresh):
(WebDriver::Session::getTitle):
(WebDriver::Session::getWindowHandle):
(WebDriver::Session::closeTopLevelBrowsingContext):
(WebDriver::Session::switchToWindow):
(WebDriver::Session::getWindowHandles):
(WebDriver::Session::switchToFrame):
(WebDriver::Session::switchToParentFrame):
(WebDriver::Session::getToplevelBrowsingContextRect):
(WebDriver::Session::moveToplevelBrowsingContextWindow):
(WebDriver::Session::resizeToplevelBrowsingContextWindow):
(WebDriver::Session::createElement):
(WebDriver::Session::extractElement):
(WebDriver::Session::extractElementID):
(WebDriver::Session::computeElementLayout):
(WebDriver::Session::findElements):
(WebDriver::Session::isElementSelected):
(WebDriver::Session::getElementText):
(WebDriver::Session::getElementTagName):
(WebDriver::Session::getElementRect):
(WebDriver::Session::isElementEnabled):
(WebDriver::Session::isElementDisplayed):
(WebDriver::Session::getElementAttribute):
(WebDriver::Session::waitForNavigationToComplete):
(WebDriver::Session::selectOptionElement):
(WebDriver::Session::elementClick):
(WebDriver::Session::elementClear):
(WebDriver::Session::elementSendKeys):
(WebDriver::Session::elementSubmit):
(WebDriver::Session::handleScriptResult):
(WebDriver::Session::executeScript):
(WebDriver::Session::performMouseInteraction):
(WebDriver::Session::performKeyboardInteractions):
(WebDriver::parseAutomationCookie):
(WebDriver::builtAutomationCookie):
(WebDriver::serializeCookie):
(WebDriver::Session::getAllCookies):
(WebDriver::Session::getNamedCookie):
(WebDriver::Session::addCookie):
(WebDriver::Session::deleteCookie):
(WebDriver::Session::deleteAllCookies):
(WebDriver::Session::dismissAlert):
(WebDriver::Session::acceptAlert):
(WebDriver::Session::getAlertText):
(WebDriver::Session::sendAlertText):
(WebDriver::Session::takeScreenshot):

  • Session.h:
  • SessionHost.cpp:

(WebDriver::SessionHost::sendCommandToBackend):
(WebDriver::SessionHost::dispatchMessage):

  • SessionHost.h:
  • WebDriverService.cpp:

(WebDriver::WebDriverService::handleRequest):
(WebDriver::WebDriverService::sendResponse const):
(WebDriver::deserializeTimeouts):
(WebDriver::WebDriverService::parseCapabilities const):
(WebDriver::WebDriverService::findSessionOrCompleteWithError):
(WebDriver::WebDriverService::validatedCapabilities const):
(WebDriver::WebDriverService::mergeCapabilities const):
(WebDriver::WebDriverService::matchCapabilities const):
(WebDriver::WebDriverService::processCapabilities const):
(WebDriver::WebDriverService::newSession):
(WebDriver::WebDriverService::deleteSession):
(WebDriver::WebDriverService::setTimeouts):
(WebDriver::WebDriverService::go):
(WebDriver::WebDriverService::getCurrentURL):
(WebDriver::WebDriverService::back):
(WebDriver::WebDriverService::forward):
(WebDriver::WebDriverService::refresh):
(WebDriver::WebDriverService::getTitle):
(WebDriver::WebDriverService::getWindowHandle):
(WebDriver::WebDriverService::getWindowRect):
(WebDriver::valueAsNumberInRange):
(WebDriver::WebDriverService::setWindowRect):
(WebDriver::WebDriverService::closeWindow):
(WebDriver::WebDriverService::switchToWindow):
(WebDriver::WebDriverService::getWindowHandles):
(WebDriver::WebDriverService::switchToFrame):
(WebDriver::WebDriverService::switchToParentFrame):
(WebDriver::findElementOrCompleteWithError):
(WebDriver::findStrategyAndSelectorOrCompleteWithError):
(WebDriver::WebDriverService::findElement):
(WebDriver::WebDriverService::findElements):
(WebDriver::WebDriverService::findElementFromElement):
(WebDriver::WebDriverService::findElementsFromElement):
(WebDriver::WebDriverService::isElementSelected):
(WebDriver::WebDriverService::getElementAttribute):
(WebDriver::WebDriverService::getElementText):
(WebDriver::WebDriverService::getElementTagName):
(WebDriver::WebDriverService::getElementRect):
(WebDriver::WebDriverService::isElementEnabled):
(WebDriver::WebDriverService::isElementDisplayed):
(WebDriver::WebDriverService::elementClick):
(WebDriver::WebDriverService::elementClear):
(WebDriver::WebDriverService::elementSendKeys):
(WebDriver::WebDriverService::elementSubmit):
(WebDriver::findScriptAndArgumentsOrCompleteWithError):
(WebDriver::WebDriverService::executeScript):
(WebDriver::WebDriverService::executeAsyncScript):
(WebDriver::WebDriverService::getAllCookies):
(WebDriver::WebDriverService::getNamedCookie):
(WebDriver::deserializeCookie):
(WebDriver::WebDriverService::addCookie):
(WebDriver::WebDriverService::deleteCookie):
(WebDriver::WebDriverService::deleteAllCookies):
(WebDriver::WebDriverService::dismissAlert):
(WebDriver::WebDriverService::acceptAlert):
(WebDriver::WebDriverService::getAlertText):
(WebDriver::WebDriverService::sendAlertText):
(WebDriver::WebDriverService::takeScreenshot):
(WebDriver::WebDriverService::takeElementScreenshot):

  • WebDriverService.h:
  • gtk/WebDriverServiceGtk.cpp:

(WebDriver::WebDriverService::platformValidateCapability const):
(WebDriver::WebDriverService::platformMatchCapability const):
(WebDriver::WebDriverService::platformParseCapabilities const):

  • wpe/WebDriverServiceWPE.cpp:

(WebDriver::WebDriverService::platformValidateCapability const):
(WebDriver::WebDriverService::platformMatchCapability const):
(WebDriver::WebDriverService::platformParseCapabilities const):

Source/WebKit:

Reviewed by Joseph Pecocaro.

Based on patch by Brian Burg.

  • UIProcess/Automation/WebAutomationSession.cpp:

(WebKit::WebAutomationSession::resizeWindowOfBrowsingContext):
(WebKit::WebAutomationSession::moveWindowOfBrowsingContext):
(WebKit::WebAutomationSession::waitForNavigationToCompleteOnPage):
(WebKit::WebAutomationSession::waitForNavigationToCompleteOnFrame):
(WebKit::WebAutomationSession::respondToPendingPageNavigationCallbacksWithTimeout):
(WebKit::WebAutomationSession::respondToPendingFrameNavigationCallbacksWithTimeout):
(WebKit::WebAutomationSession::navigationOccurredForFrame):
(WebKit::WebAutomationSession::documentLoadedForFrame):
(WebKit::WebAutomationSession::inspectorFrontendLoaded):
(WebKit::WebAutomationSession::keyboardEventsFlushedForPage):
(WebKit::WebAutomationSession::evaluateJavaScriptFunction):
(WebKit::WebAutomationSession::setFilesToSelectForFileUpload):
(WebKit::WebAutomationSession::addSingleCookie):
(WebKit::WebAutomationSession::setSessionPermissions):
(WebKit::WebAutomationSession::performMouseInteraction):
(WebKit::WebAutomationSession::performKeyboardInteractions):

  • UIProcess/Automation/WebAutomationSession.h:

Source/WTF:

Reviewed by Joseph Pecoraro.

Based on patch by Brian Burg.

Move the implementation into WTF. Put the actual implementation inside
namespace WTF::JSONImpl so that the symbols in libwtf start with the WTF prefix.
Also provide a top-level JSON namespace so that clients can write JSON::Value.
This is essentially a typedef for the entire WTF::JSONImpl namespace.

  • WTF.xcodeproj/project.pbxproj:
  • wtf/CMakeLists.txt:
  • wtf/JSONValues.cpp: Renamed from Source/JavaScriptCore/inspector/InspectorValues.cpp.

(JSON::Value::null):
(JSON::Value::create):
(JSON::Value::asValue):
(JSON::Value::asObject):
(JSON::Value::asArray):
(JSON::Value::parseJSON):
(JSON::Value::toJSONString const):
(JSON::Value::asBoolean const):
(JSON::Value::asDouble const):
(JSON::Value::asInteger const):
(JSON::Value::asString const):
(JSON::Value::writeJSON const):
(JSON::Value::memoryCost const):
(JSON::ObjectBase::~ObjectBase):
(JSON::ObjectBase::asObject):
(JSON::ObjectBase::openAccessors):
(JSON::ObjectBase::memoryCost const):
(JSON::ObjectBase::getBoolean const):
(JSON::ObjectBase::getString const):
(JSON::ObjectBase::getObject const):
(JSON::ObjectBase::getArray const):
(JSON::ObjectBase::getValue const):
(JSON::ObjectBase::remove):
(JSON::ObjectBase::writeJSON const):
(JSON::ObjectBase::ObjectBase):
(JSON::ArrayBase::~ArrayBase):
(JSON::ArrayBase::asArray):
(JSON::ArrayBase::writeJSON const):
(JSON::ArrayBase::ArrayBase):
(JSON::ArrayBase::get const):
(JSON::Object::create):
(JSON::Array::create):
(JSON::ArrayBase::memoryCost const):

  • wtf/JSONValues.h: Renamed from Source/JavaScriptCore/inspector/InspectorValues.h.

(JSON::ObjectBase::find):
(JSON::ObjectBase::find const):
(JSON::ObjectBase::setBoolean):
(JSON::ObjectBase::setInteger):
(JSON::ObjectBase::setDouble):
(JSON::ObjectBase::setString):
(JSON::ObjectBase::setValue):
(JSON::ObjectBase::setObject):
(JSON::ObjectBase::setArray):
(JSON::ArrayBase::pushBoolean):
(JSON::ArrayBase::pushInteger):
(JSON::ArrayBase::pushDouble):
(JSON::ArrayBase::pushString):
(JSON::ArrayBase::pushValue):
(JSON::ArrayBase::pushObject):
(JSON::ArrayBase::pushArray):

Tools:

Reviewed by Joseph Pecoraro.

  • TestWebKitAPI/CMakeLists.txt:
  • TestWebKitAPI/PlatformGTK.cmake:
  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WTF/JSONValue.cpp: Renamed from Tools/TestWebKitAPI/Tests/JavaScriptCore/InspectorValue.cpp.

(TestWebKitAPI::TEST):

8:50 AM Changeset in webkit [226039] by Carlos Garcia Campos
  • 24 edits in releases/WebKitGTK/webkit-2.18

Merge r224576 - Web Inspector: use JSON::{Array,Object,Value} instead of Inspector{Array,Object,Value}
https://bugs.webkit.org/show_bug.cgi?id=173619

Source/JavaScriptCore:

Reviewed by Alex Christensen and Brian Burg.

Eventually all classes used for our JSON-RPC message passing should be outside
of the Inspector namespace since the protocol is used outside of Inspector code.
This will also allow us to unify the primitive JSON types with parameteric types
like Inspector::Protocol::Array<T> and other protocol-related types which don't
need to be in the Inspector namespace.

Start this refactoring off by making JSON::Value a typedef for InspectorValue. In following
patches, other clients will move to use JSON::Value and friends. When all uses are
changed, the actual implementation will be renamed. This patch just focuses on the typedef
and making changes in generated protocol code.

Original patch by Brian Burg, rebased and updated by me.

  • inspector/InspectorValues.cpp:
  • inspector/InspectorValues.h:
  • inspector/scripts/codegen/cpp_generator.py:

(CppGenerator.cpp_protocol_type_for_type):
(CppGenerator.cpp_type_for_unchecked_formal_in_parameter):
(CppGenerator.cpp_type_for_type_with_name):
(CppGenerator.cpp_type_for_stack_in_parameter):

  • inspector/scripts/codegen/cpp_generator_templates.py:

(void):

  • inspector/scripts/codegen/generate_cpp_protocol_types_header.py:

(_generate_class_for_object_declaration):
(_generate_forward_declarations_for_binding_traits):

  • inspector/scripts/codegen/generate_cpp_protocol_types_implementation.py:

(CppProtocolTypesImplementationGenerator._generate_assertion_for_object_declaration):
(CppProtocolTypesImplementationGenerator._generate_assertion_for_enum):

  • inspector/scripts/tests/all/expected/definitions-with-mac-platform.json-result:
  • inspector/scripts/tests/generic/expected/commands-with-async-attribute.json-result:
  • inspector/scripts/tests/generic/expected/commands-with-optional-call-return-parameters.json-result:
  • inspector/scripts/tests/generic/expected/domain-availability.json-result:
  • inspector/scripts/tests/generic/expected/domains-with-varying-command-sizes.json-result:
  • inspector/scripts/tests/generic/expected/enum-values.json-result:
  • inspector/scripts/tests/generic/expected/events-with-optional-parameters.json-result:
  • inspector/scripts/tests/generic/expected/generate-domains-with-feature-guards.json-result:
  • inspector/scripts/tests/generic/expected/shadowed-optional-type-setters.json-result:
  • inspector/scripts/tests/generic/expected/type-declaration-object-type.json-result:
  • inspector/scripts/tests/generic/expected/type-requiring-runtime-casts.json-result:
  • inspector/scripts/tests/generic/expected/type-with-open-parameters.json-result:
  • inspector/scripts/tests/generic/expected/worker-supported-domains.json-result:
  • inspector/scripts/tests/mac/expected/definitions-with-mac-platform.json-result:

Tools:

Reviewed by Brian Burg.

Update InspectorValue unit tests to use JSON namespace and add more basic tests to cover all the API.

  • TestWebKitAPI/PlatformGTK.cmake:
  • TestWebKitAPI/Tests/JavaScriptCore/InspectorValue.cpp:

(TestWebKitAPI::TEST):

8:50 AM Changeset in webkit [226038] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.18/Tools

Merge r225214 - [GTK] WebDriver: disable XSS auditor when running WebDriver tests
https://bugs.webkit.org/show_bug.cgi?id=180075

Reviewed by Carlos Alberto Lopez Perez.

Some tests are now doing inline('<script>window.alert()</script>') which is rejected by the XSS auditor because
the script source is part of the request URL.

  • Scripts/webkitpy/webdriver_tests/webdriver_driver_gtk.py:

(WebDriverGtk.capabilities): Disable XSS auditor.

8:40 AM Changeset in webkit [226037] by ap@apple.com
  • 2 edits in trunk/Tools

BitVector::OutOfLineBits is always reported as a leak
https://bugs.webkit.org/show_bug.cgi?id=121662

Adding one more signature to ignore list.

  • Scripts/webkitpy/port/leakdetector.py:

(LeakDetector._callstacks_to_exclude_from_leaks):

7:50 AM Changeset in webkit [226036] by Ms2ger@igalia.com
  • 3 edits
    2 deletes in trunk/LayoutTests

Rebaseline fast/dom/Window/window-lookup-precedence.html
https://bugs.webkit.org/show_bug.cgi?id=163987

Unreviewed test gardening.

The platform-neutral baseline hasn't been anywhere close to matching the
output since r196392. However, the mac baseline seems to work for GTK as
well, so we now use it for all platforms.

The test is still marked as failing on iOS and Windows, but those
annotations can be removed as part of regularly scheduled gardening, if
needed.

  • fast/dom/Window/window-lookup-precedence-expected.txt: Renamed from platform/mac/fast/dom/Window/window-lookup-precedence-expected.txt.
  • platform/gtk/TestExpectations: Removed expectation.
  • platform/gtk/fast/dom/Window/window-lookup-precedence-expected.txt: Removed.
  • platform/mac/fast/dom/Window/window-lookup-precedence-expected.txt: Removed.
7:25 AM Changeset in webkit [226035] by Claudio Saavedra
  • 2 edits in trunk/Source/WTF

[GTK][Darwin] Do not define mach exceptions for GTK+

Rubber-stamped by Michael Catanzaro.

  • wtf/Platform.h:
5:43 AM Changeset in webkit [226034] by ddkilzer@apple.com
  • 2 edits in trunk/Source/WebKitLegacy/mac

BUILD FIX: Ignore NSWindow deprecation warnings from the mysterious future

Attempt to fix the following warnings:

AppKit instance variables are private, and the ability to access them will be removed in a future release. [-Werror,-Wdeprecated-declarations]

For the following instance variables:

_borderView
_contentView
_frame
_wFlags

  • Carbon/CarbonWindowAdapter.mm:

(-[CarbonWindowAdapter initWithCarbonWindowRef:takingOwnership:disableOrdering:carbon:]):
(-[CarbonWindowAdapter reconcileToCarbonWindowBounds]):
(-[CarbonWindowAdapter _termWindowIfOwner]):
(-[CarbonWindowAdapter _windowMovedToRect:]):
(-[CarbonWindowAdapter setContentView:]):
(-[CarbonWindowAdapter _handleRootBoundsChanged]):
(-[CarbonWindowAdapter _handleContentBoundsChanged]):

3:49 AM Changeset in webkit [226033] by Yusuke Suzuki
  • 22 edits
    12 adds in trunk

[FTL] NewArrayBuffer should be sinked if it is only used for spreading
https://bugs.webkit.org/show_bug.cgi?id=179762

Reviewed by Saam Barati.

JSTests:

  • stress/call-varargs-double-new-array-buffer.js: Added.

(assert):
(bar):
(foo):

  • stress/call-varargs-spread-new-array-buffer.js: Added.

(assert):
(bar):
(foo):

  • stress/call-varargs-spread-new-array-buffer2.js: Added.

(assert):
(bar):
(foo):

  • stress/forward-varargs-double-new-array-buffer.js: Added.

(assert):
(test.baz):
(test.bar):
(test.foo):
(test):

  • stress/new-array-buffer-sinking-osrexit.js: Added.

(target):
(test):

  • stress/new-array-with-spread-double-new-array-buffer.js: Added.

(shouldBe):
(test):

  • stress/new-array-with-spread-with-phantom-new-array-buffer.js: Added.

(shouldBe):
(target):
(test):

  • stress/phantom-new-array-buffer-forward-varargs.js: Added.

(assert):
(test1.bar):
(test1.foo):
(test1):
(test2.bar):
(test2.foo):
(test3.baz):
(test3.bar):
(test3.foo):
(test4.baz):
(test4.bar):
(test4.foo):

  • stress/phantom-new-array-buffer-forward-varargs2.js: Added.

(assert):
(test.baz):
(test.bar):
(test.foo):
(test):

  • stress/phantom-new-array-buffer-osr-exit.js: Added.

(assert):
(baz):
(bar):
(effects):
(foo):

Source/JavaScriptCore:

This patch extends arguments elimination phase to accept NewArrayBuffer.
We can convert NewArrayBuffer to PhantomNewArrayBuffer if it is only
used by spreading nodes.

This improves SixSpeed spread.es6 by 3.5x.

spread.es6 79.1496+-3.5665 23.6204+-1.8526 definitely 3.3509x faster

  • dfg/DFGAbstractInterpreterInlines.h:

(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):

  • dfg/DFGArgumentsEliminationPhase.cpp:
  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

  • dfg/DFGDoesGC.cpp:

(JSC::DFG::doesGC):

  • dfg/DFGFixupPhase.cpp:

(JSC::DFG::FixupPhase::fixupNode):

  • dfg/DFGNode.h:

(JSC::DFG::Node::hasNewArrayBufferData):
(JSC::DFG::Node::hasVectorLengthHint):
(JSC::DFG::Node::hasIndexingType):
(JSC::DFG::Node::indexingType):
(JSC::DFG::Node::hasCellOperand):
(JSC::DFG::Node::isPhantomAllocation):

  • dfg/DFGNodeType.h:
  • dfg/DFGOSRAvailabilityAnalysisPhase.cpp:

(JSC::DFG::LocalOSRAvailabilityCalculator::executeNode):

  • dfg/DFGPredictionPropagationPhase.cpp:
  • dfg/DFGPromotedHeapLocation.cpp:

(WTF::printInternal):

  • dfg/DFGPromotedHeapLocation.h:
  • dfg/DFGSafeToExecute.h:

(JSC::DFG::safeToExecute):

  • dfg/DFGSpeculativeJIT32_64.cpp:

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

  • dfg/DFGSpeculativeJIT64.cpp:

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

  • dfg/DFGValidate.cpp:
  • ftl/FTLCapabilities.cpp:

(JSC::FTL::canCompile):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileNode):
(JSC::FTL::DFG::LowerDFGToB3::compileNewArrayWithSpread):
(JSC::FTL::DFG::LowerDFGToB3::compileSpread):
(JSC::FTL::DFG::LowerDFGToB3::compileCallOrConstructVarargsSpread):
(JSC::FTL::DFG::LowerDFGToB3::compileCallOrConstructVarargs):
(JSC::FTL::DFG::LowerDFGToB3::compileForwardVarargs):
(JSC::FTL::DFG::LowerDFGToB3::compileForwardVarargsWithSpread):

  • ftl/FTLOperations.cpp:

(JSC::FTL::operationPopulateObjectInOSR):
(JSC::FTL::operationMaterializeObjectInOSR):

Source/WTF:

We add RecursableLambda<>. This can take a lambda and offer a way
to call this lambda recursively without introducing additional allocations.

C++ lambda is super useful in particular when we need to capture many
variables as references. Passing many arguments to a usual function is not
a good way. But C++ lambda does not allow us to easily call itself recursively.

Our recursableLambda offers self function as a first argument of the
given lambda. We can call this self recursively.

auto targetFunction = recursableLambda([] (auto self, ...) -> resultType {

self(...);

});

While std::function<> func = [&func] { ... } allows recursion, it causes
heap allocation for std::function<>. auto func = [&func] { ... } causes
a compile error since we need to deduce an actual type when capturing func.

  • WTF.xcodeproj/project.pbxproj:
  • wtf/RecursableLambda.h: Added.

(WTF::RecursableLambda::RecursableLambda):
(WTF::RecursableLambda::operator() const):
(WTF::recursableLambda):

3:48 AM Changeset in webkit [226032] by Carlos Garcia Campos
  • 19 edits
    9 adds
    1 delete in releases/WebKitGTK/webkit-2.18/WebDriverTests

Merge r225213 - Unreviewed. Update W3C WebDriver imported tests.

  • imported/w3c/importer.json:
  • imported/w3c/tools/webdriver/webdriver/client.py:
  • imported/w3c/tools/webdriver/webdriver/error.py:
  • imported/w3c/tools/wptrunner/docs/conf.py:
  • imported/w3c/tools/wptrunner/wptrunner/browsers/ie.py:
  • imported/w3c/tools/wptrunner/wptrunner/executors/base.py:
  • imported/w3c/tools/wptrunner/wptrunner/executors/pytestrunner/runner.py:
  • imported/w3c/tools/wptrunner/wptrunner/stability.py:
  • imported/w3c/tools/wptrunner/wptrunner/testdriver-vendor.js: Added.
  • imported/w3c/tools/wptrunner/wptrunner/update/sync.py:
  • imported/w3c/tools/wptrunner/wptrunner/wptcommandline.py:
  • imported/w3c/webdriver/interface/interface.html:
  • imported/w3c/webdriver/tests/document_handling/page_source.py: Added.
  • imported/w3c/webdriver/tests/element_click/bubbling.py: Added.
  • imported/w3c/webdriver/tests/element_retrieval/get_active_element.py:
  • imported/w3c/webdriver/tests/execute_async_script/user_prompts.py: Added.
  • imported/w3c/webdriver/tests/execute_script/user_prompts.py: Added.
  • imported/w3c/webdriver/tests/sessions/status.py: Added.
  • imported/w3c/webdriver/tests/status.py: Removed.
  • imported/w3c/webdriver/tests/support/fixtures.py:
  • imported/w3c/webdriver/tests/support/wait.py:
  • imported/w3c/webdriver/tests/user_prompts/accept_alert.py:
  • imported/w3c/webdriver/tests/user_prompts/dismiss_alert.py:
  • imported/w3c/webdriver/tests/user_prompts/get_alert_text.py:
  • imported/w3c/webdriver/tests/user_prompts/send_alert_text.py:
3:48 AM Changeset in webkit [226031] by Carlos Garcia Campos
  • 6 edits
    1 add in releases/WebKitGTK/webkit-2.18

Merge r225211 - WebDriver: add timeout option to run-webdriver-tests script
https://bugs.webkit.org/show_bug.cgi?id=179940

Reviewed by Carlos Alberto Lopez Perez.

Tools:

We need to handle timeouts to be able to run the tests in the bots. pytest doesn't support timeouts, but there's
a plugin pytest_timeout that can be used for that.

  • Scripts/run-webdriver-tests: Add --timeout command line option.
  • Scripts/webkitpy/thirdparty/init.py:

(AutoinstallImportHook.find_module): Check if pytest_timeout is imported to install it.
(AutoinstallImportHook._install_pytest_timeout): Install pytest_timeout from pypi.

  • Scripts/webkitpy/webdriver_tests/webdriver_test_runner_w3c.py:

(WebDriverTestRunnerW3C.init): Set PYTEST_TIMEOUT env var with the timeout given.

  • Scripts/webkitpy/webdriver_tests/webdriver_w3c_executor.py:

(WebDriverW3CExecutor.run): Clarify that the timeout received by do_wdspec() is ignored, and pass 0 instead of 25.

WebDriverTests:

Add a base conftest.py to load pytest_timeout plugin.

  • imported/w3c/conftest.py: Added.
3:47 AM Changeset in webkit [226030] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.18/Source/WebDriver

Merge r225210 - [GTK] WebDriver: stop making mandatory to provide a browser path if webkitgtk:browserOptions is present in capabilities
https://bugs.webkit.org/show_bug.cgi?id=180012

Reviewed by Carlos Alberto Lopez Perez.

Everything should be optional. We might want to disable overlay scrollbars, but still using the default browser,
for example, as I'm doing when running the selenium tests. We might also want to provide additional browser
arguments, but using the default browser.

  • gtk/WebDriverServiceGtk.cpp:

(WebDriver::WebDriverService::platformValidateCapability const): Do not consider invalid to not provide a
browser binary when webkitgtk:browserOptions is present.
(WebDriver::WebDriverService::platformParseCapabilities const): Override default capabilities with the ones
provided.

3:47 AM Changeset in webkit [226029] by Carlos Garcia Campos
  • 5 edits in releases/WebKitGTK/webkit-2.18/Source/WebDriver

Merge r225208 - WebDriver: Implement get active element command
https://bugs.webkit.org/show_bug.cgi?id=180001

Reviewed by Brian Burg.

12.6 Get Active Element
https://w3c.github.io/webdriver/webdriver-spec.html#get-active-element

Fixes imported/w3c/webdriver/tests/element_retrieval/get_active_element.py.

  • Session.cpp:

(WebDriver::Session::getActiveElement):

  • Session.h:
  • WebDriverService.cpp:

(WebDriver::WebDriverService::getActiveElement):

  • WebDriverService.h:
3:47 AM Changeset in webkit [226028] by Carlos Garcia Campos
  • 3 edits in releases/WebKitGTK/webkit-2.18/Source/WebDriver

Merge r225083 - WebDriver: do not try to parse http body if method is not POST
https://bugs.webkit.org/show_bug.cgi?id=179918

Reviewed by Darin Adler.

As said in the spec:

  1. If request’s method is POST:
  1. Let parse result be the result of parsing as JSON with request’s body as the argument. If this process throws an exception, return an error with error code invalid argument and jump back to step 1 in this overall algorithm.
  1. If parse result is not an Object, send an error with error code invalid argument and jump back to step 1 in this overall algorithm.

Otherwise, let parameters be parse result.

Otherwise, let parameters be null.

6.3 Processing Model
https://w3c.github.io/webdriver/webdriver-spec.html#processing-model

Now, w3c tests are sending null as body of delete session command (it used to be just empty), making it fail
with invalid argument error.

  • WebDriverService.cpp:

(WebDriver::WebDriverService::findCommand):
(WebDriver::WebDriverService::handleRequest):

  • WebDriverService.h:
3:47 AM Changeset in webkit [226027] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.18/Source/WebDriver

Merge r225082 - WebDriver: crash in Session::computeElementLayout when called without a current browsing context
https://bugs.webkit.org/show_bug.cgi?id=179917

Reviewed by Darin Adler.

In the case of computeElementLayout message, the frameHandle parameter is not optional, but we still need to
provide a valid value (empty string means the default frame) when m_currentBrowsingContext is std::nullopt. The
same applies to selectOptionElement.

  • Session.cpp:

(WebDriver::Session::computeElementLayout):
(WebDriver::Session::selectOptionElement):

3:27 AM Changeset in webkit [226026] by Carlos Garcia Campos
  • 46 edits
    13 adds in releases/WebKitGTK/webkit-2.18/WebDriverTests

Merge r225076 - Unreviewed. Update W3C WebDriver imported tests.

  • imported/w3c/importer.json:
  • imported/w3c/tools/webdriver/webdriver/client.py:
  • imported/w3c/tools/webdriver/webdriver/error.py:
  • imported/w3c/tools/webdriver/webdriver/protocol.py: Added.
  • imported/w3c/tools/webdriver/webdriver/transport.py:
  • imported/w3c/tools/wptrunner/MANIFEST.in:
  • imported/w3c/tools/wptrunner/requirements_firefox.txt:
  • imported/w3c/tools/wptrunner/requirements_opera.txt: Added.
  • imported/w3c/tools/wptrunner/wptrunner/browsers/init.py:
  • imported/w3c/tools/wptrunner/wptrunner/browsers/edge.py:
  • imported/w3c/tools/wptrunner/wptrunner/browsers/firefox.py:
  • imported/w3c/tools/wptrunner/wptrunner/browsers/opera.py: Added.
  • imported/w3c/tools/wptrunner/wptrunner/environment.py:
  • imported/w3c/tools/wptrunner/wptrunner/executors/base.py:
  • imported/w3c/tools/wptrunner/wptrunner/executors/executoredge.py: Added.
  • imported/w3c/tools/wptrunner/wptrunner/executors/executormarionette.py:
  • imported/w3c/tools/wptrunner/wptrunner/executors/executoropera.py: Added.
  • imported/w3c/tools/wptrunner/wptrunner/executors/executorselenium.py:
  • imported/w3c/tools/wptrunner/wptrunner/executors/pytestrunner/runner.py:
  • imported/w3c/tools/wptrunner/wptrunner/executors/testharness_webdriver.js:
  • imported/w3c/tools/wptrunner/wptrunner/executors/testharness_webdriver_resume.js: Added.
  • imported/w3c/tools/wptrunner/wptrunner/stability.py: Added.
  • imported/w3c/tools/wptrunner/wptrunner/testdriver-extra.js: Added.
  • imported/w3c/tools/wptrunner/wptrunner/testloader.py:
  • imported/w3c/tools/wptrunner/wptrunner/testrunner.py:
  • imported/w3c/tools/wptrunner/wptrunner/update/state.py:
  • imported/w3c/tools/wptrunner/wptrunner/update/sync.py:
  • imported/w3c/tools/wptrunner/wptrunner/webdriver_server.py:
  • imported/w3c/tools/wptrunner/wptrunner/wptcommandline.py:
  • imported/w3c/tools/wptrunner/wptrunner/wptlogging.py:
  • imported/w3c/tools/wptrunner/wptrunner/wptrunner.py:
  • imported/w3c/tools/wptrunner/wptrunner/wpttest.py:
  • imported/w3c/webdriver/tests/actions/conftest.py:
  • imported/w3c/webdriver/tests/actions/key.py:
  • imported/w3c/webdriver/tests/actions/key_shortcuts.py: Added.
  • imported/w3c/webdriver/tests/actions/modifier_click.py: Added.
  • imported/w3c/webdriver/tests/actions/mouse.py:
  • imported/w3c/webdriver/tests/actions/sequence.py:
  • imported/w3c/webdriver/tests/actions/special_keys.py:
  • imported/w3c/webdriver/tests/actions/support/keys.py:
  • imported/w3c/webdriver/tests/actions/support/test_actions_wdspec.html:
  • imported/w3c/webdriver/tests/cookies/add_cookie.py:
  • imported/w3c/webdriver/tests/cookies/get_named_cookie.py:
  • imported/w3c/webdriver/tests/element_click/stale.py: Added.
  • imported/w3c/webdriver/tests/element_retrieval/get_active_element.py:
  • imported/w3c/webdriver/tests/interaction/element_clear.py: Added.
  • imported/w3c/webdriver/tests/navigation/get_title.py:
  • imported/w3c/webdriver/tests/retrieval/find_element.py:
  • imported/w3c/webdriver/tests/retrieval/find_element_from_element.py:
  • imported/w3c/webdriver/tests/retrieval/find_element_from_elements.py:
  • imported/w3c/webdriver/tests/retrieval/find_elements.py:
  • imported/w3c/webdriver/tests/sessions/new_session/support/init.py:
  • imported/w3c/webdriver/tests/state/get_element_attribute.py:
  • imported/w3c/webdriver/tests/state/get_element_property.py:
  • imported/w3c/webdriver/tests/state/get_element_tag_name.py:
  • imported/w3c/webdriver/tests/state/is_element_selected.py:
  • imported/w3c/webdriver/tests/support/asserts.py:
  • imported/w3c/webdriver/tests/user_prompts/send_alert_text.py: Added.
3:27 AM Changeset in webkit [226025] by Carlos Garcia Campos
  • 12 edits
    3 copies
    2 adds in releases/WebKitGTK/webkit-2.18

Merge r224913 - [WPE] Add initial support for WebDriver
https://bugs.webkit.org/show_bug.cgi?id=179727

Reviewed by Michael Catanzaro.

.:

Enable WebDriver by default in WPE.

  • Source/cmake/OptionsWPE.cmake:

Source/WebDriver:

Add WPE implementation for platform-specific methods. Move the version handling to a common file
WebDriverServiceGLib.cpp.

  • Capabilities.h:
  • PlatformGTK.cmake:
  • PlatformWPE.cmake:
  • glib/WebDriverServiceGLib.cpp: Added.

(WebDriver::parseVersion):
(WebDriver::WebDriverService::platformCompareBrowserVersions):

  • gtk/WebDriverServiceGtk.cpp:
  • wpe/WebDriverServiceWPE.cpp: Copied from Source/WebDriver/gtk/WebDriverServiceGtk.cpp.

(WebDriver::WebDriverService::platformCapabilities):
(WebDriver::WebDriverService::platformValidateCapability const):
(WebDriver::WebDriverService::platformMatchCapability const):
(WebDriver::WebDriverService::platformParseCapabilities const):

Tools:

Make it possible to run WebDriver tests with WPE.

  • Scripts/run-webdriver-tests: Add --wpe alias for --platform=wpe.
  • Scripts/webkitpy/port/wpe.py:

(WPEPort.init): Initialize _display_server from options.
(WPEPort._driver_class): Use WaylandDriver when wayland is passed as display server option.

  • Scripts/webkitpy/webdriver_tests/webdriver_driver.py:

(WebDriver.browser_env): Add virtual method to get the environment that should be used.

  • Scripts/webkitpy/webdriver_tests/webdriver_driver_wpe.py: Copied from Tools/Scripts/webkitpy/webdriver_tests/webdriver_driver.py.

(WebDriverWPE):
(WebDriverWPE.init):
(WebDriverWPE.binary_path):
(WebDriverWPE.browser_name):
(WebDriverWPE.capabilities):
(WebDriverWPE.browser_env):

  • Scripts/webkitpy/webdriver_tests/webdriver_w3c_executor.py:

(WebDriverW3CExecutor.init): Update the environment with the one provided by the driver.

  • wpe/jhbuild.modules: Upgrade dyz to newer version that supports automation.
3:26 AM Changeset in webkit [226024] by Carlos Garcia Campos
  • 3 edits
    315 adds in releases/WebKitGTK/webkit-2.18

Merge r224014 - WebDriver: Add support to import and run W3C tests
https://bugs.webkit.org/show_bug.cgi?id=177304

Reviewed by Brian Burg.

Tools:

WPT has now several WebDriver tests, and new ones are going to be added to cover the whole spec. This patch
adds the initial support for running W3C tests. The script import-w3c-webdriver-tests reuses parts of the W3C
test downloader to download the tests and required tools from WPT repository into WebDriverTests
directory. Tests can be run with run-webdriver-tests, a new script that works similar to other test runner
scripts. For now it shows a summary at the end of the execution, there aren't expectations yet, since we are not
ready to run those tests in the bots. Once we are ready to properly run the tests, we can add the expectations
support and run the tests in the bots.

  • Scripts/import-w3c-webdriver-tests: Added.
  • Scripts/run-webdriver-tests: Added.
  • Scripts/webkitpy/style/checker.py: Skip WebDriverTests directory since it only contains third-party python

code.

  • Scripts/webkitpy/thirdparty/init.py: Add support to autodownload mozlog and mozprocess since they are

required by the WebDriver tests.

  • Scripts/webkitpy/webdriver_tests/init.py: Added.
  • Scripts/webkitpy/webdriver_tests/webdriver_driver.py: Added.
  • Scripts/webkitpy/webdriver_tests/webdriver_driver_gtk.py: Added.
  • Scripts/webkitpy/webdriver_tests/webdriver_test_result.py: Added.
  • Scripts/webkitpy/webdriver_tests/webdriver_test_runner.py: Added.
  • Scripts/webkitpy/webdriver_tests/webdriver_test_runner_w3c.py: Added.
  • Scripts/webkitpy/webdriver_tests/webdriver_w3c_executor.py: Added.
  • Scripts/webkitpy/webdriver_tests/webdriver_w3c_web_server.py: Added.

WebDriverTests:

Add json file used by the importer and the result of running the importer.

  • imported/w3c/importer.json: Added.
  • imported/w3c/tools/pytest/: Added.
  • imported/w3c/tools/webdriver/: Added.
  • imported/w3c/tools/wptrunner/: Added.
  • imported/w3c/webdriver/: Added.
3:16 AM Changeset in webkit [226023] by Carlos Garcia Campos
  • 14 edits
    1 add in releases/WebKitGTK/webkit-2.18/Source

Merge r224789 - Web Automation: inViewCenterPoint should not include topContentInset when computed in viewport coordinates
https://bugs.webkit.org/show_bug.cgi?id=179129
<rdar://problem/35297038>

Reviewed by Simon Fraser.

Source/WebCore:

Add or export some helpers needed to compute element layout for WebDriver.

  • dom/Element.h: Export the non-DOM version of getClientBounds().
  • page/FrameView.h:
  • page/FrameView.cpp:

(WebCore::FrameView::clientToDocumentRect const):
Added. This does the same thing as clientToDocumentPoint. Export it, too.

Source/WebDriver:

Adjust code to use the proper coordinate system when requesting element layout.

  • Session.cpp:

(WebDriver::Session::computeElementLayout):

Source/WebKit:

When computing the in view center point per W3C specification, the top content inset
is inadvertently added back in when converting to the root view coordinate system.

This patch reworks the protocol command so that it explicitly requests a coordinate
system, with options for "Page" (root / contents), "LayoutViewport", and "VisualViewport".
The latter is not implemented in this patch, since it is intended for use on iOS someday.

  • UIProcess/Automation/Automation.json:

Change usesViewport to CoordinateSystem.
Add a new coordinate system enum type and use it.
Fix relevant comments for Automation.computElementLayout.

  • UIProcess/Automation/WebAutomationSession.h:
  • UIProcess/Automation/WebAutomationSession.cpp:

(WebKit::protocolStringToCoordinateSystem):
(WebKit::WebAutomationSession::computeElementLayout):
Parse the requested coordinate system and send it in the message to the web process.

  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/Automation/WebAutomationSessionProxy.messages.in:
  • WebProcess/Automation/WebAutomationSessionProxy.h:
  • WebProcess/Automation/WebAutomationSessionProxy.cpp:

(WebKit::WebAutomationSessionProxy::computeElementLayout):
Rework the implementation. Get the element bounds and in-view center point in
client coordinates and convert back to root view coordinates for CoordinateSystem::Page.

2:54 AM Changeset in webkit [226022] by Carlos Garcia Campos
  • 5 edits in releases/WebKitGTK/webkit-2.18

Merge r225043 - [GTK][WPE] webkit_cookie_manager_delete_all_cookies doesn't delete the cookies if called before a web process is running
https://bugs.webkit.org/show_bug.cgi?id=175265

Reviewed by Michael Catanzaro.

Source/WebKit:

This is what happens:

1- We create our WebKitWebContext that creates its WebProcessPool.
2- We set a persistent cookies storage.
3- We ask the website data store to delete all cookies, but since website data store is a web process observer

and we haven't spawned any web process yet, it creates a new WebProcessPool with the default configuration
(no persistent cookies) and sends the message to delete the cookies there.

4- The network process of the second process pool does nothing because it doesn't have cookies at all.

We need to set the primary data store of the WebProcessPool when WebKitWebContext is constructed to ensure that
one is used before the web process is launched.

  • UIProcess/API/glib/WebKitWebContext.cpp:

(webkitWebContextConstructed):

Tools:

Add test case.

  • TestWebKitAPI/Tests/WebKitGLib/TestCookieManager.cpp:

(testCookieManagerPersistentStorageDeleteAll):
(serverCallback):
(beforeAll):

2:54 AM Changeset in webkit [226021] by Carlos Garcia Campos
  • 12 edits in releases/WebKitGTK/webkit-2.18

Merge r221834 - Try to avoid creating the default WKWebsiteDataStore until its actually needed.
<rdar://problem/33164453> and https://bugs.webkit.org/show_bug.cgi?id=176551

Reviewed by Tim Horton.

Source/WebKit:

  • UIProcess/API/APIHTTPCookieStore.cpp:

(API::HTTPCookieStore::cookies):
(API::HTTPCookieStore::setCookie):
(API::HTTPCookieStore::deleteCookie):

  • UIProcess/API/APIWebsiteDataStore.cpp:

(API::WebsiteDataStore::defaultDataStore):
(API::WebsiteDataStore::defaultDataStoreExists):

  • UIProcess/API/APIWebsiteDataStore.h:
  • UIProcess/API/C/WKContext.cpp:

(WKContextGetWebsiteDataStore):

  • UIProcess/API/Cocoa/WKWebsiteDataStore.mm:

(+[WKWebsiteDataStore _defaultDataStoreExists]):

  • UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::WebProcessPool):
(WebKit::m_hiddenPageThrottlingTimer):
(WebKit::WebProcessPool::ensureNetworkProcess):
(WebKit::WebProcessPool::ensureStorageProcessAndWebsiteDataStore):
(WebKit::WebProcessPool::warmInitialProcess):
(WebKit::WebProcessPool::createNewWebProcessRespectingProcessCountLimit):
(WebKit::WebProcessPool::createWebPage):
(WebKit::WebProcessPool::pageAddedToProcess):

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

(WebKit::WebsiteDataStore::isAssociatedProcessPool const):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/WebsiteDataStoreCustomPaths.mm:

(TEST):

1:43 AM Changeset in webkit [226020] by Ms2ger@igalia.com
  • 1 edit
    7 adds in trunk/LayoutTests

[WPE] Add some test expectations for fetch wpt tests
https://bugs.webkit.org/show_bug.cgi?id=180927

Unreviewed test gardening.

New expectations are copied from GTK; I had forgotten to add them when
enabling these tests.

  • platform/wpe/imported/w3c/web-platform-tests/fetch/api/basic/request-headers.any-expected.txt: Added.
  • platform/wpe/imported/w3c/web-platform-tests/fetch/api/basic/request-headers.any.worker-expected.txt: Added.
  • platform/wpe/imported/w3c/web-platform-tests/fetch/api/basic/scheme-about.any-expected.txt: Added.
  • platform/wpe/imported/w3c/web-platform-tests/fetch/api/basic/scheme-about.any.worker-expected.txt: Added.
  • platform/wpe/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-count-expected.txt: Added.
  • platform/wpe/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-count-worker-expected.txt: Added.
12:55 AM Changeset in webkit [226019] by Carlos Garcia Campos
  • 11 edits in trunk

[GTK][WPE] Add WebKitWebView::web-process-terminated signal and deprecate web-process-crashed
https://bugs.webkit.org/show_bug.cgi?id=180862

Reviewed by Michael Catanzaro.

Source/WebKit:

Once the memory pressure web process monitor is enabled in bug #180861 the web process can be killed due to
memory limits. We need to expose the reason of the web process termination to allow applications handle the
memory limit case.

  • UIProcess/API/glib/WebKitNavigationClient.cpp:
  • UIProcess/API/glib/WebKitWebView.cpp:

(webkit_web_view_class_init):
(webkitWebViewWebProcessTerminated):
(webkitWebViewWebProcessCrashed): Deleted.

  • UIProcess/API/glib/WebKitWebViewPrivate.h:
  • UIProcess/API/gtk/WebKitWebView.h:
  • UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt:
  • UIProcess/API/wpe/WebKitWebView.h:

Tools:

Use WebKitWebView::web-process-terminated instead of web-process-crashed in tests. I'm not adding a test for
WEBKIT_WEB_PROCESS_EXCEEDED_MEMORY_LIMIT because we would need to allocate more than 1GB in the test and wait
30 seconds, and we don't want to do either in unit tests.

  • TestWebKitAPI/Tests/WebKitGLib/TestWebExtensions.cpp:

(webProcessTerminatedCallback):
(testWebKitWebViewProcessCrashed):
(webProcessCrashedCallback): Deleted.

  • TestWebKitAPI/glib/WebKitGLib/WebViewTest.cpp:

(WebViewTest::initializeWebView):
(WebViewTest::webProcessTerminated):
(WebViewTest::webProcessCrashed): Deleted.

  • TestWebKitAPI/glib/WebKitGLib/WebViewTest.h:
12:25 AM Changeset in webkit [226018] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebKit

[GTK][WPE] Enable WebProcess memory monitor
https://bugs.webkit.org/show_bug.cgi?id=180861

Reviewed by Michael Catanzaro.

For some reason this is only enabled in mac. We want to enable it also in GTK and WPE ports. This runs every 30
seconds to release memory or even kill the process if necessary. Carlos López has realized that in some
applications using video tags, the memory grows a lot and it's never released. It seems it's not memory leaked,
but simply large memory allocations (I guess it's gst allocating video frames) that make the heap grow. The
memory pressure calls malloc_trim that releases all that memory keeping the web process footprint stable.

  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::initializeWebProcess):

Dec 17, 2017:

9:24 PM Changeset in webkit [226017] by Yusuke Suzuki
  • 8 edits
    1 add in trunk/Source/JavaScriptCore

[JSC] Use IsoSpace for JSWeakMap and JSWeakSet to use finalizeUnconditionally
https://bugs.webkit.org/show_bug.cgi?id=180916

Reviewed by Darin Adler.

This patch drops UnconditionalFinalizer for JSWeakMap and JSWeakSetby using IsoSpace.
Since these cells always require calling finalizeUnconditionally, we do not need to
track cells by using IsoCellSet.

Currently we still have WeakReferenceHarvester in JSWeakMap and JSWeakSet. We should
avoid using a global linked-list for this in the future.

(JSC::Heap::finalizeUnconditionalFinalizersInIsoSubspace):
(JSC::Heap::finalizeUnconditionalFinalizers):

  • heap/Heap.h:
  • runtime/VM.cpp:

(JSC::VM::VM):

  • runtime/VM.h:
  • runtime/WeakMapImpl.cpp:

(JSC::WeakMapImpl<WeakMapBucket>::visitChildren):
(JSC::WeakMapImpl<WeakMapBucket>::finalizeUnconditionally): Deleted.

  • runtime/WeakMapImpl.h:

(JSC::WeakMapImpl::isWeakMap):
(JSC::WeakMapImpl::isWeakSet):
(JSC::WeakMapImpl::subspaceFor):

  • runtime/WeakMapImplInlines.h: Added.

(JSC::WeakMapImpl<WeakMapBucket>::finalizeUnconditionally):

7:44 PM Changeset in webkit [226016] by wilander@apple.com
  • 22 edits
    5 adds in trunk

Storage Access API: Make document.hasStorageAccess() retrieve current status from the network process
https://bugs.webkit.org/show_bug.cgi?id=180681
<rdar://problem/35982161>

Reviewed by Alex Christensen.

Source/WebCore:

Tests: http/tests/storageAccess/has-storage-access-from-prevalent-domain-with-non-recent-user-interaction.html

http/tests/storageAccess/has-storage-access-from-prevalent-domain-with-recent-user-interaction.html

This change makes an asynchronous request to the network process
to see if storage access has been granted for this frame, on this
page, for this domain.

  • dom/Document.cpp:

(WebCore::Document::hasStorageAccess):

  • page/ChromeClient.h:

Source/WebKit:

This change makes an asynchronous request to the network process
to see if storage access has been granted for this frame, on this
page, for this domain.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::hasStorageAccessForPrevalentDomains):
(WebKit::NetworkProcess::updateStorageAccessForPrevalentDomains):

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

(WebKit::NetworkProcessProxy::hasStorageAccessForPrevalentDomains):

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

(WebKit::WebPageProxy::hasStorageAccess):

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • UIProcess/WebResourceLoadStatisticsStore.cpp:

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

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

(WebKit::WebsiteDataStore::hasStorageAccessForPrevalentDomainsHandler):
(WebKit::WebsiteDataStore::enableResourceLoadStatisticsAndSetTestingCallback):
(WebKit::WebsiteDataStore::hasStorageAccess):

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

(WebKit::WebChromeClient::hasStorageAccess):

  • WebProcess/WebCoreSupport/WebChromeClient.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::hasStorageAccess):

  • WebProcess/WebPage/WebPage.h:

LayoutTests:

This change makes an asynchronous request to the network process
to see if storage access has been granted for this frame, on this
page, for this domain.

  • http/tests/storageAccess/has-storage-access-from-prevalent-domain-with-non-recent-user-interaction-expected.txt: Added.
  • http/tests/storageAccess/has-storage-access-from-prevalent-domain-with-non-recent-user-interaction.html: Added.
  • http/tests/storageAccess/has-storage-access-from-prevalent-domain-with-recent-user-interaction-expected.txt: Added.
  • http/tests/storageAccess/has-storage-access-from-prevalent-domain-with-recent-user-interaction.html: Added.
  • http/tests/storageAccess/resources/has-storage-access-iframe.html: Added.
  • platform/mac-wk2/TestExpectations:

New tests marked as [ Pass ].
All http/tests/storageAccess/ tests marked [ HighSierra+ ] since
document.hasStorageAccess() now requires code that relies on cookie
partitioning.

3:22 PM Changeset in webkit [226015] by mark.lam@apple.com
  • 12 edits
    4 adds in trunk

Enhance Ref and RefPtr to be able to work with smart pointers.
https://bugs.webkit.org/show_bug.cgi?id=180762
<rdar://problem/36027122>

Reviewed by JF Bastien and Darin Adler.

Source/WTF:

This is so we can use them with ConstExprPoisoned pointers to make PoisonedRef
and PoisonedRefPtr.

  • WTF.xcodeproj/project.pbxproj:
  • wtf/CMakeLists.txt:
  • wtf/DumbPtrTraits.h: Added.

(WTF::DumbPtrTraits::exchange):
(WTF::DumbPtrTraits::swap):
(WTF::DumbPtrTraits::unwrap):

  • wtf/Forward.h:
  • wtf/Poisoned.h:

(WTF::ConstExprPoisonedPtrTraits::exchange):
(WTF::ConstExprPoisonedPtrTraits::swap):
(WTF::ConstExprPoisonedPtrTraits::unwrap):

  • wtf/Ref.h:

(WTF::Ref::~Ref):
(WTF::Ref::Ref):
(WTF::Ref::ptrAllowingHashTableEmptyValue const):
(WTF::Ref::ptrAllowingHashTableEmptyValue):
(WTF::Ref::operator-> const):
(WTF::Ref::get const):
(WTF::Ref::operator T& const):
(WTF::=):
(WTF::U>::swap):
(WTF::swap):
(WTF::U>::replace):
(WTF::static_reference_cast):
(WTF::adoptRef):
(WTF::is):
(WTF::Ref<T>::swap): Deleted.
(WTF::Ref<T>::replace): Deleted.
(WTF::GetPtrHelper<Ref<T>>::getPtr): Deleted.

  • wtf/RefPtr.cpp: Added.
  • wtf/RefPtr.h:

(WTF::RefPtr::RefPtr):
(WTF::RefPtr::~RefPtr):
(WTF::RefPtr::get const):
(WTF::RefPtr::operator* const):
(WTF::RefPtr::operator-> const):
(WTF::U>::RefPtr):
(WTF::U>::leakRef):
(WTF::=):
(WTF::U>::swap):
(WTF::swap):
(WTF::operator==):
(WTF::operator!=):
(WTF::static_pointer_cast):
(WTF::adoptRef):
(WTF::is):
(WTF::RefPtr<T>::RefPtr): Deleted.
(WTF::RefPtr<T>::leakRef): Deleted.
(WTF::RefPtr<T>::swap): Deleted.

Tools:

  • TestWebKitAPI/CMakeLists.txt:
  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WTF/ConstExprPoisoned.cpp:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WTF/Poisoned.cpp:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WTF/PoisonedRef.cpp: Added.

(TestWebKitAPI::TEST):
(TestWebKitAPI::passWithRef):
(TestWebKitAPI::PoisonedRefCheckingRefLogger::PoisonedRefCheckingRefLogger):
(TestWebKitAPI::PoisonedRefCheckingRefLogger::ref):
(TestWebKitAPI::PoisonedRefCheckingRefLogger::deref):
(TestWebKitAPI::DerivedPoisonedRefCheckingRefLogger::DerivedPoisonedRefCheckingRefLogger):

  • TestWebKitAPI/Tests/WTF/PoisonedRefPtr.cpp: Added.

(TestWebKitAPI::TEST):
(TestWebKitAPI::f1):
(TestWebKitAPI::ConstRefCounted::create):
(TestWebKitAPI::returnConstRefCountedRef):
(TestWebKitAPI::returnRefCountedRef):
(TestWebKitAPI::PoisonedRefPtrCheckingRefLogger::PoisonedRefPtrCheckingRefLogger):
(TestWebKitAPI::loggerName):
(TestWebKitAPI::PoisonedRefPtrCheckingRefLogger::ref):
(TestWebKitAPI::PoisonedRefPtrCheckingRefLogger::deref):

1:15 PM Changeset in webkit [226014] by Chris Dumez
  • 4 edits in trunk

Strip fragment identifier from ServiceWorker's scriptURL
https://bugs.webkit.org/show_bug.cgi?id=180887

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Rebaseline WPT test now that one more check is passing.

  • web-platform-tests/service-workers/service-worker/serviceworkerobject-scripturl.https-expected.txt:

Source/WebCore:

Strip fragment identifier from ServiceWorker's scriptURL to match Firefox and Chrome.
This behavior does not appear to be specified so I filed:

No new tests, rebaselined existing test.

  • workers/service/server/SWServerWorker.cpp:

(WebCore::m_script):

1:11 PM Changeset in webkit [226013] by Antti Koivisto
  • 4 edits
    14 moves
    1 add in trunk/Source/WebCore

Move render tree updating related files under rendering/updating/
https://bugs.webkit.org/show_bug.cgi?id=180918

Reviewed by Darin Adler.

  • CMakeLists.txt:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • rendering/RenderTreeBuilder.cpp: Removed.
  • rendering/RenderTreeBuilder.h: Removed.
  • rendering/updating: Added.
  • rendering/updating/RenderTreeBuilder.cpp: Copied from Source/WebCore/rendering/RenderTreeBuilder.cpp.
  • rendering/updating/RenderTreeBuilder.h: Copied from Source/WebCore/rendering/RenderTreeBuilder.h.
  • rendering/updating/RenderTreePosition.cpp: Copied from Source/WebCore/style/RenderTreePosition.cpp.
  • rendering/updating/RenderTreePosition.h: Copied from Source/WebCore/style/RenderTreePosition.h.
  • rendering/updating/RenderTreeUpdater.cpp: Copied from Source/WebCore/style/RenderTreeUpdater.cpp.
  • rendering/updating/RenderTreeUpdater.h: Copied from Source/WebCore/style/RenderTreeUpdater.h.
  • rendering/updating/RenderTreeUpdaterFirstLetter.cpp: Copied from Source/WebCore/style/RenderTreeUpdaterFirstLetter.cpp.
  • rendering/updating/RenderTreeUpdaterFirstLetter.h: Copied from Source/WebCore/style/RenderTreeUpdaterFirstLetter.h.
  • rendering/updating/RenderTreeUpdaterGeneratedContent.cpp: Copied from Source/WebCore/style/RenderTreeUpdaterGeneratedContent.cpp.
  • rendering/updating/RenderTreeUpdaterGeneratedContent.h: Copied from Source/WebCore/style/RenderTreeUpdaterGeneratedContent.h.
  • rendering/updating/RenderTreeUpdaterListItem.cpp: Copied from Source/WebCore/style/RenderTreeUpdaterListItem.cpp.
  • rendering/updating/RenderTreeUpdaterListItem.h: Copied from Source/WebCore/style/RenderTreeUpdaterListItem.h.
  • rendering/updating/RenderTreeUpdaterMultiColumn.cpp: Copied from Source/WebCore/style/RenderTreeUpdaterMultiColumn.cpp.
  • rendering/updating/RenderTreeUpdaterMultiColumn.h: Copied from Source/WebCore/style/RenderTreeUpdaterMultiColumn.h.
  • style/RenderTreePosition.cpp: Removed.
  • style/RenderTreePosition.h: Removed.
  • style/RenderTreeUpdater.cpp: Removed.
  • style/RenderTreeUpdater.h: Removed.
  • style/RenderTreeUpdaterFirstLetter.cpp: Removed.
  • style/RenderTreeUpdaterFirstLetter.h: Removed.
  • style/RenderTreeUpdaterGeneratedContent.cpp: Removed.
  • style/RenderTreeUpdaterGeneratedContent.h: Removed.
  • style/RenderTreeUpdaterListItem.cpp: Removed.
  • style/RenderTreeUpdaterListItem.h: Removed.
  • style/RenderTreeUpdaterMultiColumn.cpp: Removed.
  • style/RenderTreeUpdaterMultiColumn.h: Removed.
12:57 PM Changeset in webkit [226012] by mark.lam@apple.com
  • 6 edits
    1 delete in trunk/Source/JavaScriptCore

Hollow out stub implementation of InspectorBackendDispatcher::sendResponse().
https://bugs.webkit.org/show_bug.cgi?id=180901
<rdar://problem/36087649>

Reviewed by Darin Adler.

We only need to keep a deprecated implementation of InspectorValues,
InspectorObjects, and InspectorBackendDispatcher::sendResponse() around so that
older versions of Safari can link against and run with a build of the latest code
in WebKit trunk. Older versions of System Safari used InspectorValues (via
WebInspector.framework) for two things:

  1. Augmented JSContexts SPIs (via WebInspector.framework).
  2. maybe WebDriver.

Neither of these are used when running SafariForWebKitDevelopment. Since neither
are used, we can stub out the symbols (InspectorValues, InspectorObjects,
InspectorBackendDispatcher::sendResponse) to do nothing, and
SafariForWebKitDevelopment will still continue to launch with trunk WebKit, and
run without any observable bad behavior.

  • JavaScriptCore.xcodeproj/project.pbxproj:
  • SourcesCocoa.txt:
  • inspector/InspectorBackendDispatcher.cpp:
  • inspector/InspectorBackendDispatcher.h:
  • inspector/cocoa/DeprecatedInspectorValues.cpp:

(Inspector::InspectorValue::null):
(Inspector::InspectorValue::create):
(Inspector::InspectorValue::asValue):
(Inspector::InspectorValue::asObject):
(Inspector::InspectorValue::asArray):
(Inspector::InspectorValue::parseJSON):
(Inspector::InspectorValue::toJSONString const):
(Inspector::InspectorValue::asBoolean const):
(Inspector::InspectorValue::asDouble const):
(Inspector::InspectorValue::asInteger const):
(Inspector::InspectorValue::asString const):
(Inspector::InspectorValue::writeJSON const):
(Inspector::InspectorValue::memoryCost const):
(Inspector::InspectorObjectBase::openAccessors):
(Inspector::InspectorObjectBase::memoryCost const):
(Inspector::InspectorObjectBase::getBoolean const):
(Inspector::InspectorObjectBase::getString const):
(Inspector::InspectorObjectBase::getObject const):
(Inspector::InspectorObjectBase::getArray const):
(Inspector::InspectorObjectBase::getValue const):
(Inspector::InspectorObjectBase::remove):
(Inspector::InspectorObject::create):
(Inspector::InspectorArrayBase::get const):
(Inspector::InspectorArrayBase::memoryCost const):
(Inspector::InspectorArray::create):
(Inspector::BackendDispatcher::sendResponse):
(Inspector::InspectorObjectBase::~InspectorObjectBase): Deleted.
(Inspector::InspectorObjectBase::asObject): Deleted.
(Inspector::InspectorObjectBase::writeJSON const): Deleted.
(Inspector::InspectorObjectBase::InspectorObjectBase): Deleted.
(Inspector::InspectorArrayBase::~InspectorArrayBase): Deleted.
(Inspector::InspectorArrayBase::asArray): Deleted.
(Inspector::InspectorArrayBase::writeJSON const): Deleted.
(Inspector::InspectorArrayBase::InspectorArrayBase): Deleted.

  • inspector/cocoa/DeprecatedInspectorValues.h: Removed.
11:35 AM Changeset in webkit [226011] by Yusuke Suzuki
  • 14 edits in trunk/Source

[JSC][WebCore][CSSJIT] Remove VM reference in CSSJIT
https://bugs.webkit.org/show_bug.cgi?id=180917

Reviewed by Sam Weinig.

Source/JavaScriptCore:

We do not need to hold JIT flags in VM. We add
static VM::{canUseJIT,canUseAssembler,canUseRegExpJIT} functions.

  • interpreter/AbstractPC.cpp:

(JSC::AbstractPC::AbstractPC):

  • jit/JITThunks.cpp:

(JSC::JITThunks::ctiNativeCall):
(JSC::JITThunks::ctiNativeConstruct):
(JSC::JITThunks::ctiNativeTailCall):
(JSC::JITThunks::ctiNativeTailCallWithoutSavedTags):
(JSC::JITThunks::ctiInternalFunctionCall):
(JSC::JITThunks::ctiInternalFunctionConstruct):
(JSC::JITThunks::hostFunctionStub):

  • llint/LLIntEntrypoint.cpp:

(JSC::LLInt::setFunctionEntrypoint):
(JSC::LLInt::setEvalEntrypoint):
(JSC::LLInt::setProgramEntrypoint):
(JSC::LLInt::setModuleProgramEntrypoint):

  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::shouldJIT):
(JSC::LLInt::entryOSR):
(JSC::LLInt::LLINT_SLOW_PATH_DECL):

  • runtime/RegExp.cpp:

(JSC::RegExp::compile):
(JSC::RegExp::compileMatchOnly):

  • runtime/VM.cpp:

(JSC::VM::canUseAssembler):
(JSC::VM::canUseJIT):
(JSC::VM::canUseRegExpJIT):
(JSC::VM::VM):

  • runtime/VM.h:

(JSC::VM::canUseJIT): Deleted.
(JSC::VM::canUseRegExpJIT): Deleted.

Source/WebCore:

Remove VM reference in CSSJIT. CSSJIT should not be
bound to a specific VM.

No behavior change.

  • css/ElementRuleCollector.cpp:

(WebCore::ElementRuleCollector::ruleMatches):

  • cssjit/SelectorCompiler.cpp:

(WebCore::SelectorCompiler::compileSelector):

  • cssjit/SelectorCompiler.h:
  • dom/SelectorQuery.cpp:

(WebCore::SelectorDataList::compileSelector):
(WebCore::SelectorDataList::execute const):

  • dom/SelectorQuery.h:
2:53 AM Changeset in webkit [226010] by Yusuke Suzuki
  • 5 edits in trunk/Source/JavaScriptCore

[JSC] Number of SlotVisitors can increase after setting up m_visitCounters
https://bugs.webkit.org/show_bug.cgi?id=180906

Reviewed by Filip Pizlo.

The number of SlotVisitors can increase after setting up m_visitCounters.
If it happens, our m_visitCounters misses the visit count of newly added
SlotVisitors. It accidentally decides that constraints are converged.
This leads to random assertion hits in Linux environment.

In this patch, we compare the number of SlotVisitors in didVisitSomething().
If the number of SlotVisitors is changed, we conservatively say we did
visit something.

  • heap/Heap.h:
  • heap/HeapInlines.h:

(JSC::Heap::numberOfSlotVisitors):

  • heap/MarkingConstraintSet.h:
  • heap/MarkingConstraintSolver.cpp:

(JSC::MarkingConstraintSolver::didVisitSomething const):

Dec 16, 2017:

6:54 PM Changeset in webkit [226009] by commit-queue@webkit.org
  • 4 edits
    1 copy
    6 adds in trunk/Tools

Add a script to automate W3c web-platform-tests pull request creations from WebKit commits
https://bugs.webkit.org/show_bug.cgi?id=169462

Patch by Youenn Fablet <youenn@apple.com> on 2017-12-16
Reviewed by Darin Adler.

Adding some git helper routines used by WPT exporter.
Copying WPT github utility files from Chromium.
Updating web.py/web_mock.py to cope with these new files.

Implementing test exporter in test_exporter.py.
This script takes a WebKit commit as input and will create a WPT commit in a local WPT clone.
It will then push the commit to a public GitHub repository identified by a username parameter.
This parameter is passed through the command line or searched through git config/environment variables.

The script can optionally create a pull request to the official WPT GitHub repository.
User must provide a GitHub token to allow the script to make the PR on behalf of the user.
In that case, a comment is added to the corresponding bugzilla if a bug ID is given or can be found from the change log,
to easily link the pull request with the bugzilla bug.

  • Scripts/export-w3c-test-changes: Added.
  • Scripts/webkitpy/common/checkout/scm/git.py:

(Git.reset_hard):
(Git):
(Git.am):
(Git.commit):
(Git.format_patch):
(Git.request_pull):
(Git.remote):
(Git.push):
(Git.checkout_new_branch):

  • Scripts/webkitpy/common/net/web.py:

(Web.request): Copied from Chromium.

  • Scripts/webkitpy/common/net/web_mock.py: Copied needed code from Chromium.
  • Scripts/webkitpy/w3c/test_exporter.py: Added.

(TestExporter):
(TestExporter.init):
(TestExporter._init_repository):
(TestExporter.download_and_commit_patch):
(TestExporter.clean):
(TestExporter.create_branch_with_patch):
(TestExporter.push_to_public_repository):
(TestExporter.make_pull_request):
(TestExporter.delete_local_branch):
(TestExporter.create_git_patch):
(TestExporter.create_upload_remote_if_needed):
(TestExporter.do_export):
(parse_args):
(configure_logging):
(configure_logging.LogHandler):
(configure_logging.LogHandler.format):
(main):

  • Scripts/webkitpy/w3c/test_exporter_unittest.py: Added.

(TestExporterTest):
(TestExporterTest.MockBugzilla):
(TestExporterTest.MockBugzilla.init):
(TestExporterTest.MockBugzilla.fetch_bug_dictionary):
(TestExporterTest.MockBugzilla.post_comment_to_bug):
(TestExporterTest.MockGit):
(TestExporterTest.MockGit.clone):
(TestExporterTest.MockGit.init):
(TestExporterTest.MockGit.fetch):
(TestExporterTest.MockGit.checkout):
(TestExporterTest.MockGit.reset_hard):
(TestExporterTest.MockGit.push):
(TestExporterTest.MockGit.format_patch):
(TestExporterTest.MockGit.delete_branch):
(TestExporterTest.MockGit.checkout_new_branch):
(TestExporterTest.MockGit.am):
(TestExporterTest.MockGit.commit):
(TestExporterTest.MockGit.remote):
(TestExporterTest.test_export):

  • Scripts/webkitpy/w3c/common.py: Copied from chromium.
  • Scripts/webkitpy/w3c/wpt_github.py: Copied from chromium.
  • Scripts/webkitpy/w3c/wpt_github_mock.py: Copied from chromium.
  • Scripts/webkitpy/w3c/wpt_github_unittest.py: Copied from chromium.
12:57 PM Changeset in webkit [226008] by mitz@apple.com
  • 22 edits
    1 add in trunk

WKWebView has no equivalent of -[WebView setAlwaysShowVerticalScroller:]
https://bugs.webkit.org/show_bug.cgi?id=180613
<rdar://problem/35946124>

Reviewed by Geoff Garen.

Source/WebCore:

Test: TestWebKitAPI/Tests/WebKitCocoa/WKWebViewAlwaysShowsScroller.mm

  • platform/ScrollView.h: Exported setScrollbarModes.

Source/WebKit:

Added _alwaysShowsHorizontalScroller and _alwaysShowsVerticalScroller properties to
WKWebView.

  • Shared/WebPageCreationParameters.cpp:

(WebKit::WebPageCreationParameters::encode const): Encode new alwaysShowsHorizontalScroller

and alwaysShowsVerticalScroller parameters.

(WebKit::WebPageCreationParameters::decode): Decode new parameters.

  • Shared/WebPageCreationParameters.h: Added new alwaysShowsHorizontalScroller and alwaysShowsVerticalScroller boolean parameters.
  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _alwaysShowsHorizontalScroller]): New accessor that calls through to the

WebPageProxy.

(-[WKWebView _setAlwaysShowsHorizontalScroller:]): Ditto.
(-[WKWebView _alwaysShowsVerticalScroller]): Ditto.
(-[WKWebView _setAlwaysShowsVerticalScroller:]): Ditto.

  • UIProcess/API/Cocoa/WKWebViewPrivate.h: Declare new properties.
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::setAlwaysShowsHorizontalScroller): Update member variable and send

a message to the page.

(WebKit::WebPageProxy::setAlwaysShowsVerticalScroller): Ditto.
(WebKit::WebPageProxy::creationParameters): Initialize new parameters from the new member

variables.

  • UIProcess/WebPageProxy.h:

(WebKit::WebPageProxy::alwaysShowsHorizontalScroller const): New getter.
(WebKit::WebPageProxy::alwaysShowsVerticalScroller const): Ditto.

  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:

(WebKit::WebFrameLoaderClient::transitionToCommittedForNewPage): Factor

alwaysShowsHorizontalScroller and alwaysShowsVerticalScroller into the initial scroller
modes and scroller locks when creating the FrameView.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::WebPage): Initialize new m_alwaysShowsHorizontalScroller and

m_alwaysShowsVerticalScroller member variables from the corresponding new creation
parameters.

(WebKit::WebPage::setAlwaysShowsHorizontalScroller): Update the member variable and set

new scrollbar mode on the frame view if needed.

(WebKit::WebPage::setAlwaysShowsVerticalScroller): Ditto.

  • WebProcess/WebPage/WebPage.h:

(WebKit::WebPage::alwaysShowsHorizontalScroller const): New getter.
(WebKit::WebPage::alwaysShowsVerticalScroller const): Ditto.

  • WebProcess/WebPage/WebPage.messages.in: Added new messages.

Source/WebKitLegacy/mac:

  • WebKit.mac.exp: Removed WebCoreScrollbarAlwaysOn, which is no longer being used by any clients.
  • WebView/WebDynamicScrollBarsView.h: Ditto.
  • WebView/WebDynamicScrollBarsView.mm: Ditto.

Tools:

  • MiniBrowser/mac/MainMenu.xib: Added Always Show {Horizontal,Vertical} Scroller menu items to the View menu.
  • MiniBrowser/mac/WK1BrowserWindowController.m:

(-[WK1BrowserWindowController validateMenuItem:]): Set the state of the new menu items based

on -alwaysShow{Horizontal,Vertical}Scroller.

(-[WK1BrowserWindowController toggleAlwaysShowsHorizontalScroller:]): Toggle the value.
(-[WK1BrowserWindowController toggleAlwaysShowsVerticalScroller:]): Ditto.

  • MiniBrowser/mac/WK2BrowserWindowController.m:

(-[WK2BrowserWindowController validateMenuItem:]): Set the state of the new menu items based

on the new property.

(-[WK2BrowserWindowController toggleAlwaysShowsHorizontalScroller:]): Toggle the property.
(-[WK2BrowserWindowController toggleAlwaysShowsVerticalScroller:]): Ditto.

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

(TEST):

11:07 AM Changeset in webkit [226007] by Antti Koivisto
  • 57 edits
    1 copy
    1 add in trunk/Source/WebCore

Introduce RenderTreeBuilder
https://bugs.webkit.org/show_bug.cgi?id=180817

Reviewed by Zalan Bujtas.

RenderTreeBuilder is responsible of building the render tree, including construction of various anonymous
renderers. Renderer subtype specific render tree construction code will eventually move there.

This patch adds RenderTreeBuilder class and passes it as a parameter for all addChild implementations.
Future patches can then mechanically move the building code from renderers to RenderTreeBuilder.

It also moves one addChild implementation (RenderRuby::addChild -> RenderTreeBuilder::rubyRunInsertChild)
to RenderTreeBuilder as a test.

  • WebCore.xcodeproj/project.pbxproj:
  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::addChildToContinuation):
(WebCore::RenderBlock::addChild):
(WebCore::RenderBlock::addChildIgnoringContinuation):

  • rendering/RenderBlock.h:
  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::addChild):

  • rendering/RenderBlockFlow.h:
  • rendering/RenderBoxModelObject.cpp:

(WebCore::RenderBoxModelObject::moveChildTo):

  • rendering/RenderButton.cpp:

(WebCore::RenderButton::addChild):
(WebCore::RenderButton::setText):

  • rendering/RenderButton.h:
  • rendering/RenderElement.cpp:

(WebCore::RenderElement::addChild):

  • rendering/RenderElement.h:

(WebCore::RenderElement::addChildIgnoringContinuation):

  • rendering/RenderFullScreen.cpp:

(WebCore::RenderFullScreen::wrapNewRenderer):
(WebCore::RenderFullScreen::wrapExistingRenderer):
(WebCore::RenderFullScreen::unwrapRenderer):
(WebCore::RenderFullScreen::createPlaceholder):

  • rendering/RenderGrid.cpp:

(WebCore::RenderGrid::addChild):

  • rendering/RenderGrid.h:
  • rendering/RenderInline.cpp:

(WebCore::RenderInline::addChild):
(WebCore::RenderInline::addChildIgnoringContinuation):
(WebCore::RenderInline::splitInlines):
(WebCore::RenderInline::splitFlow):
(WebCore::RenderInline::addChildToContinuation):
(WebCore::RenderInline::childBecameNonInline):

  • rendering/RenderInline.h:
  • rendering/RenderMenuList.cpp:

(WebCore::RenderMenuList::createInnerBlock):
(RenderMenuList::addChild):
(RenderMenuList::setText):

  • rendering/RenderMenuList.h:
  • rendering/RenderMultiColumnFlow.cpp:

(WebCore::RenderMultiColumnFlow::processPossibleSpannerDescendant):

  • rendering/RenderQuote.cpp:

(WebCore::RenderQuote::updateTextRenderer):
(WebCore::RenderQuote::updateRenderer):

  • rendering/RenderQuote.h:
  • rendering/RenderRuby.cpp:

(WebCore::RenderRubyAsInline::addChild):
(WebCore::RenderRubyAsBlock::addChild):

  • rendering/RenderRuby.h:
  • rendering/RenderRubyBase.h:
  • rendering/RenderRubyRun.cpp:

(WebCore::RenderRubyRun::rubyBaseSafe):
(WebCore::RenderRubyRun::addChild): Deleted.

  • rendering/RenderRubyRun.h:
  • rendering/RenderTable.cpp:

(WebCore::RenderTable::addChild):

  • rendering/RenderTable.h:
  • rendering/RenderTableRow.cpp:

(WebCore::RenderTableRow::addChild):

  • rendering/RenderTableRow.h:
  • rendering/RenderTableSection.cpp:

(WebCore::RenderTableSection::addChild):

  • rendering/RenderTableSection.h:
  • rendering/RenderTreeBuilder.cpp: Added.

(WebCore::RenderTreeBuilder::RenderTreeBuilder):
(WebCore::RenderTreeBuilder::~RenderTreeBuilder):
(WebCore::RenderTreeBuilder::insertChild):
(WebCore::RenderTreeBuilder::rubyRunInsertChild):

  • rendering/RenderTreeBuilder.h: Added.

(WebCore::RenderTreeBuilder::current):

  • rendering/TextAutoSizing.cpp:

(WebCore::TextAutoSizingValue::adjustTextNodeSizes):

  • rendering/mathml/RenderMathMLFenced.cpp:

(WebCore::RenderMathMLFenced::updateFromElement):
(WebCore::RenderMathMLFenced::makeFences):
(WebCore::RenderMathMLFenced::addChild):

  • rendering/mathml/RenderMathMLFenced.h:
  • rendering/svg/RenderSVGContainer.cpp:

(WebCore::RenderSVGContainer::addChild):

  • rendering/svg/RenderSVGContainer.h:
  • rendering/svg/RenderSVGInline.cpp:

(WebCore::RenderSVGInline::addChild):

  • rendering/svg/RenderSVGInline.h:
  • rendering/svg/RenderSVGRoot.cpp:

(WebCore::RenderSVGRoot::addChild):

  • rendering/svg/RenderSVGRoot.h:
  • rendering/svg/RenderSVGText.cpp:

(WebCore::RenderSVGText::addChild):

  • rendering/svg/RenderSVGText.h:
  • style/RenderTreePosition.cpp:

(WebCore::RenderTreePosition::insert): Deleted.

  • style/RenderTreePosition.h:

(WebCore::RenderTreePosition::RenderTreePosition):
(WebCore::RenderTreePosition::nextSibling const):
(WebCore::RenderTreePosition::canInsert const): Deleted.

  • style/RenderTreeUpdater.cpp:

(WebCore::RenderTreeUpdater::updateAfterDescendants):
(WebCore::RenderTreeUpdater::createRenderer):
(WebCore::RenderTreeUpdater::createTextRenderer):
(WebCore::RenderTreeUpdater::updateTextRenderer):
(WebCore::createTextRenderer): Deleted.

  • style/RenderTreeUpdater.h:
  • style/RenderTreeUpdaterFirstLetter.cpp:

(WebCore::updateFirstLetterStyle):
(WebCore::createFirstLetterRenderer):

  • style/RenderTreeUpdaterGeneratedContent.cpp:

(WebCore::RenderTreeUpdater::GeneratedContent::updateQuotesUpTo):
(WebCore::createContentRenderers):
(WebCore::RenderTreeUpdater::GeneratedContent::updatePseudoElement):

  • style/RenderTreeUpdaterListItem.cpp:

(WebCore::RenderTreeUpdater::ListItem::updateMarker):

  • style/RenderTreeUpdaterListItem.h:
  • style/RenderTreeUpdaterMultiColumn.cpp:

(WebCore::RenderTreeUpdater::MultiColumn::createFragmentedFlow):
(WebCore::RenderTreeUpdater::MultiColumn::destroyFragmentedFlow):

11:05 AM Changeset in webkit [226006] by Ms2ger@igalia.com
  • 3 edits
    7 adds in trunk/LayoutTests

Enable wpt fetch tests on WPE.
https://bugs.webkit.org/show_bug.cgi?id=180905

Unreviewed test gardening.

New expectations are copied from GTK.

  • TestExpectations: mark test as flaky on all platforms.
  • platform/wpe/TestExpectations:
  • platform/wpe/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-method-expected.txt: Added.
  • platform/wpe/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-method-worker-expected.txt: Added.
  • platform/wpe/imported/w3c/web-platform-tests/fetch/http-cache/cc-request-expected.txt: Added.
10:59 AM Changeset in webkit [226005] by romain.bellessort@crf.canon.fr
  • 7 edits in trunk

[Readable Streams API] Fix filling of descriptor from queue
https://bugs.webkit.org/show_bug.cgi?id=172717

Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

Updated test expectations.

  • web-platform-tests/streams/readable-byte-streams/detached-buffers-expected.txt: Updated.
  • web-platform-tests/streams/readable-byte-streams/detached-buffers.dedicatedworker-expected.txt: Updated.
  • web-platform-tests/streams/readable-byte-streams/general-expected.txt: Updated.
  • web-platform-tests/streams/readable-byte-streams/general.dedicatedworker-expected.txt: Updated.

Source/WebCore:

Fixed the filling of descriptor from queue (step 10.d at [1]). When first implemented,
spec comprised a bug and code was not reachable. Spec has now been fixed and code can
now be reached.

[1] https://streams.spec.whatwg.org/#readable-byte-stream-controller-fill-pull-into-descriptor-from-queue

No new tests (covered by WPT tests, whose expectations have been updated).

  • Modules/streams/ReadableByteStreamInternals.js:

(readableByteStreamControllerFillDescriptorFromQueue): Updated.

10:57 AM Changeset in webkit [226004] by commit-queue@webkit.org
  • 3 edits
    8 deletes in trunk/LayoutTests

Skip SharedWorker and NavigationPreload service worker tests
https://bugs.webkit.org/show_bug.cgi?id=180902

Patch by Youenn Fablet <youenn@apple.com> on 2017-12-16
Reviewed by Chris Dumez.

LayoutTests/imported/w3c:

  • web-platform-tests/service-workers/service-worker/navigation-preload/broken-chunked-encoding.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/navigation-preload/chunked-encoding.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/navigation-preload/empty-preload-response-body.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/navigation-preload/get-state.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/navigation-preload/redirect.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/navigation-preload/request-headers.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/navigation-preload/resource-timing.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/shared-worker-controlled.https-expected.txt:

LayoutTests:

10:54 AM Changeset in webkit [226003] by beidson@apple.com
  • 5 edits in trunk/Source

Implement getting ServiceWorker registrations for the WKWebsiteDataStore API
https://bugs.webkit.org/show_bug.cgi?id=180886

Reviewed by Chris Dumez.

Source/WebCore:

No new tests (API test coming soon).

  • workers/service/server/SWServer.cpp:

(WebCore::SWServer::registrationStoreImportComplete):
(WebCore::SWServer::SWServer):
(WebCore::SWServer::getOriginsWithRegistrations):
(WebCore::SWServer::performGetOriginsWithRegistrationsCallbacks):

  • workers/service/server/SWServer.h:

Source/WebKit:

  • StorageProcess/StorageProcess.cpp:

(WebKit::StorageProcess::fetchWebsiteData):

10:33 AM Changeset in webkit [226002] by commit-queue@webkit.org
  • 4 edits in trunk

[WinCairo] Move the destination of WinCairoRequirements.zip into WebKitLibraries and register it and related files as git ignore files.
https://bugs.webkit.org/show_bug.cgi?id=180875

Patch by Basuke Suzuki <Basuke Suzuki> on 2017-12-16
Reviewed by Alex Christensen.

.:

Add files extracted from WinCairoRequirements.zip

  • .gitignore:

Tools:

Bug fix. Specify the download destination correctly.

  • Scripts/update-webkit-wincairo-libs.py:
10:31 AM Changeset in webkit [226001] by jiewen_tan@apple.com
  • 2 edits
    6 adds in trunk/LayoutTests/imported/w3c

[CredentialManagement] Import Credential Management Web Platform Tests
https://bugs.webkit.org/show_bug.cgi?id=172015
<rdar://problem/36083577>

Reviewed by Youenn Fablet.

  • resources/import-expectations.json:
  • web-platform-tests/credential-management/credentialscontainer-create-basics.https-expected.txt: Added.
  • web-platform-tests/credential-management/credentialscontainer-create-basics.https.html: Added.
  • web-platform-tests/credential-management/idl.https-expected.txt: Added.
  • web-platform-tests/credential-management/idl.https.html: Added.
  • web-platform-tests/credential-management/w3c-import.log: Added.
10:20 AM Changeset in webkit [226000] by keith_miller@apple.com
  • 5 edits in trunk/Source/JavaScriptCore

Indexing should only be computed when the new structure has an indexing header.
https://bugs.webkit.org/show_bug.cgi?id=180895

Reviewed by Saam Barati.

If we don't have an indexing header then we point the butterfly
sizeof(IndexingHeader) past the end of the butterfly. This makes
the computation of the offset simpler since it doesn't depend on
the indexing headeriness of the butterfly.

  • jit/JITOperations.cpp:
  • runtime/JSObject.cpp:

(JSC::JSObject::createInitialUndecided):
(JSC::JSObject::createInitialInt32):
(JSC::JSObject::createInitialDouble):
(JSC::JSObject::createInitialContiguous):
(JSC::JSObject::createArrayStorage):
(JSC::JSObject::convertUndecidedToArrayStorage):
(JSC::JSObject::convertInt32ToArrayStorage):
(JSC::JSObject::convertDoubleToArrayStorage):

  • runtime/JSObject.h:

(JSC::JSObject::setButterfly):
(JSC::JSObject::nukeStructureAndSetButterfly):

  • runtime/JSObjectInlines.h:

(JSC::JSObject::prepareToPutDirectWithoutTransition):
(JSC::JSObject::putDirectInternal):

9:57 AM Changeset in webkit [225999] by Brent Fulgham
  • 4 edits in trunk

Plugin processes are repeatedly spun up to do nothing
https://bugs.webkit.org/show_bug.cgi?id=180885
<rdar://problem/36082564>

Reviewed by Geoffrey Garen.

Source/WebKit:

Tested by TestWebKitAPI.

  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::removeData): Don't ask plugins to remove data when no websites are
passed to the function.

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/WKHTTPCookieStore.mm:

(runTestWithWebsiteDataStore): Check that deleting website data did not
trigger any plugin processes to start up.

9:54 AM Changeset in webkit [225998] by Yusuke Suzuki
  • 18 edits in trunk

Remove unnecessary boolean result of start() functions
https://bugs.webkit.org/show_bug.cgi?id=180856

Reviewed by Darin Adler.

Source/WebCore:

No behavior change.

  • Modules/webaudio/AsyncAudioDecoder.cpp:

(WebCore::AsyncAudioDecoder::~AsyncAudioDecoder):

  • Modules/webdatabase/DatabaseContext.cpp:

(WebCore::DatabaseContext::databaseThread):

  • Modules/webdatabase/DatabaseThread.cpp:

(WebCore::DatabaseThread::start):
Now Thread::create always succeeds (if it fails, WebKit crashes).
DatabaseThread::start() now always returns true. So, we do not need
to return bool.

  • Modules/webdatabase/DatabaseThread.h:
  • platform/network/curl/CurlDownload.cpp:

(WebCore::CurlDownload::start):

  • platform/network/curl/CurlDownload.h:
  • platform/network/curl/ResourceHandleCurl.cpp:

(WebCore::ResourceHandle::start):

  • platform/network/curl/ResourceHandleCurlDelegate.cpp:

(WebCore::ResourceHandleCurlDelegate::start):

  • platform/network/curl/ResourceHandleCurlDelegate.h:

Source/WebKitLegacy/win:

It always returns true.

  • WebDownloadCurl.cpp:

(WebDownload::start):

Source/WTF:

CrossThreadTaskHandler's Thread is just released without calling
either waitForCompletion or detach. It means that this resource
of the thread is not released.

  • benchmarks/ConditionSpeedTest.cpp:
  • wtf/CrossThreadTaskHandler.cpp:

(WTF::CrossThreadTaskHandler::CrossThreadTaskHandler):

  • wtf/CrossThreadTaskHandler.h:

Tools:

  • TestWebKitAPI/Tests/WTF/ParkingLot.cpp:
8:37 AM Changeset in webkit [225997] by Chris Dumez
  • 15 edits
    3 adds
    1 delete in trunk

Add optimization when updating a SW registration results in the exact same script
https://bugs.webkit.org/show_bug.cgi?id=180891

Reviewed by Geoffrey Garen.

LayoutTests/imported/w3c:

Rebaseline WPT test now that all checks are passing.

  • web-platform-tests/service-workers/service-worker/registration-updateviacache.https-expected.txt:

Source/WebCore:

Add optimization when updating a SW registration results in the exact same script:

No new tests, rebaselined existing test.

  • workers/service/server/SWServerJobQueue.cpp:

(WebCore::SWServerJobQueue::scriptFetchFinished):

LayoutTests:

Skip bad WPT test that is timing out for us and Firefox. I'll file an upstream PR
to fix it.

  • http/tests/workers/service/controller-change.html:
  • http/tests/workers/service/registration-updateViaCache-all-importScripts.html:
  • http/tests/workers/service/registration-updateViaCache-all.html:
  • http/tests/workers/service/registration-updateViaCache-imports-importScripts.html:
  • http/tests/workers/service/registration-updateViaCache-none-importScripts.html:
  • http/tests/workers/service/registration-updateViaCache-none.html:
  • http/tests/workers/service/resources/self_registration_update-worker.js: Removed.
  • http/tests/workers/service/resources/self_registration_update-worker.php: Added.
  • http/tests/workers/service/resources/service-worker-fetch-worker.js:
  • http/tests/workers/service/resources/updating-fetch-worker.php: Added.
  • http/tests/workers/service/resources/updating-worker.php: Added.
  • http/tests/workers/service/self_registration_update.html:
  • http/tests/workers/service/service-worker-registration-gc-event.html:

Undate WebKit-specific tests to reflect behavior change.

1:26 AM Changeset in webkit [225996] by commit-queue@webkit.org
  • 6 edits
    3 adds in trunk

Service worker script fetch request should set the Service-Worker header
https://bugs.webkit.org/show_bug.cgi?id=180889

Patch by Youenn Fablet <youenn@apple.com> on 2017-12-16
Reviewed by Chris Dumez.

Source/WebCore:

Test: http/wpt/service-workers/check-service-worker-header.https.html

Update WorkerScriptLoader to take a request instead of an URL.
Updates Worker implementation and use it in ServiceWorkerJob to set the missing request header.

  • workers/Worker.cpp:

(WebCore::Worker::create):

  • workers/WorkerScriptLoader.cpp:

(WebCore::WorkerScriptLoader::loadAsynchronously):

  • workers/WorkerScriptLoader.h:
  • workers/service/ServiceWorkerJob.cpp:

(WebCore::ServiceWorkerJob::fetchScriptWithContext):

LayoutTests:

  • http/wpt/service-workers/check-service-worker-header.https-expected.txt: Added.
  • http/wpt/service-workers/check-service-worker-header.https.html: Added.
  • http/wpt/service-workers/check-service-worker-header.py: Added.

Dec 15, 2017:

11:22 PM Changeset in webkit [225995] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

WK1 webrtc/datachannel bufferedAmount tests might time out
https://bugs.webkit.org/show_bug.cgi?id=180882

Unreviewed.

Patch by Youenn Fablet <youenn@apple.com> on 2017-12-15

  • platform/mac-wk1/TestExpectations: marking tests as flaky.
6:05 PM Changeset in webkit [225994] by Ryan Haddad
  • 57 edits
    2 deletes in trunk/Source/WebCore

Unreviewed, rolling out r225969.

This change introduced LayoutTest crashes.

Reverted changeset:

"Introduce RenderTreeBuilder"
https://bugs.webkit.org/show_bug.cgi?id=180817
https://trac.webkit.org/changeset/225969

4:51 PM Changeset in webkit [225993] by Chris Dumez
  • 3 edits
    100 deletes in trunk/LayoutTests

Drop service workers stubs tests
https://bugs.webkit.org/show_bug.cgi?id=180893

Reviewed by Youenn Fablet.

These tests either do not test anything or are bad and fails in other browsers too.
There is little point in running them.

  • resources/import-expectations.json:
  • web-platform-tests/service-workers/stub-3.1-service-worker-obj-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-3.1-service-worker-obj.html: Removed.
  • web-platform-tests/service-workers/stub-3.1.1-service-worker-scope-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-3.1.1-service-worker-scope.html: Removed.
  • web-platform-tests/service-workers/stub-3.1.2-service-worker-url-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-3.1.2-service-worker-url.html: Removed.
  • web-platform-tests/service-workers/stub-3.1.3-service-worker-state-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-3.1.3-service-worker-state.html: Removed.
  • web-platform-tests/service-workers/stub-3.1.4-service-worker-on-state-change-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-3.1.4-service-worker-on-state-change.html: Removed.
  • web-platform-tests/service-workers/stub-3.2-navigator-service-worker-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-3.2-navigator-service-worker.html: Removed.
  • web-platform-tests/service-workers/stub-3.2.1-navigator-service-worker-installing-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-3.2.1-navigator-service-worker-installing.html: Removed.
  • web-platform-tests/service-workers/stub-3.2.10-navigator-service-worker-oncontrollerchange-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-3.2.10-navigator-service-worker-oncontrollerchange.html: Removed.
  • web-platform-tests/service-workers/stub-3.2.11-navigator-service-worker-onreloadpage-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-3.2.11-navigator-service-worker-onreloadpage.html: Removed.
  • web-platform-tests/service-workers/stub-3.2.12-navigator-service-worker-onerror-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-3.2.12-navigator-service-worker-onerror.html: Removed.
  • web-platform-tests/service-workers/stub-3.2.2-navigator-service-worker-waiting-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-3.2.2-navigator-service-worker-waiting.html: Removed.
  • web-platform-tests/service-workers/stub-3.2.3-navigator-service-worker-active-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-3.2.3-navigator-service-worker-active.html: Removed.
  • web-platform-tests/service-workers/stub-3.2.4-navigator-service-worker-controller-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-3.2.4-navigator-service-worker-controller.html: Removed.
  • web-platform-tests/service-workers/stub-3.2.5-navigator-service-worker-ready-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-3.2.5-navigator-service-worker-ready.html: Removed.
  • web-platform-tests/service-workers/stub-3.2.6-navigator-service-worker-getAll-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-3.2.6-navigator-service-worker-getAll.html: Removed.
  • web-platform-tests/service-workers/stub-3.2.7-navigator-service-worker-register-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-3.2.7-navigator-service-worker-register.html: Removed.
  • web-platform-tests/service-workers/stub-3.2.8-navigator-service-worker-unregister-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-3.2.8-navigator-service-worker-unregister.html: Removed.
  • web-platform-tests/service-workers/stub-3.2.9-navigator-service-worker-onupdatefound-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-3.2.9-navigator-service-worker-onupdatefound.html: Removed.
  • web-platform-tests/service-workers/stub-4.1-service-worker-global-scope-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-4.1-service-worker-global-scope.html: Removed.
  • web-platform-tests/service-workers/stub-4.1.1-service-worker-global-scope-caches-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-4.1.1-service-worker-global-scope-caches.html: Removed.
  • web-platform-tests/service-workers/stub-4.1.2-service-worker-global-scope-clients-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-4.1.2-service-worker-global-scope-clients.html: Removed.
  • web-platform-tests/service-workers/stub-4.1.3-service-worker-global-scope-scope-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-4.1.3-service-worker-global-scope-scope.html: Removed.
  • web-platform-tests/service-workers/stub-4.1.4-service-worker-global-scope-fetch-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-4.1.4-service-worker-global-scope-fetch.html: Removed.
  • web-platform-tests/service-workers/stub-4.1.5-service-worker-global-scope-update-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-4.1.5-service-worker-global-scope-update.html: Removed.
  • web-platform-tests/service-workers/stub-4.1.6-service-worker-global-scope-unregister-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-4.1.6-service-worker-global-scope-unregister.html: Removed.
  • web-platform-tests/service-workers/stub-4.1.7-service-worker-global-scope-onmessage-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-4.1.7-service-worker-global-scope-onmessage.html: Removed.
  • web-platform-tests/service-workers/stub-4.2-client-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-4.2-client.html: Removed.
  • web-platform-tests/service-workers/stub-4.3-service-worker-clients-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-4.3-service-worker-clients.html: Removed.
  • web-platform-tests/service-workers/stub-4.3.1-get-serviced-method-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-4.3.1-get-serviced-method.html: Removed.
  • web-platform-tests/service-workers/stub-4.3.2-reloadall-method-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-4.3.2-reloadall-method.html: Removed.
  • web-platform-tests/service-workers/stub-4.4-request-objects-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-4.4-request-objects.html: Removed.
  • web-platform-tests/service-workers/stub-4.5-response-objects-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-4.5-response-objects.html: Removed.
  • web-platform-tests/service-workers/stub-4.5.2-response-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-4.5.2-response.html: Removed.
  • web-platform-tests/service-workers/stub-4.5.4-opaque-response-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-4.5.4-opaque-response.html: Removed.
  • web-platform-tests/service-workers/stub-4.6-cache-objects-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-4.6-cache-objects.html: Removed.
  • web-platform-tests/service-workers/stub-4.6.1-cache-lifetimes-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-4.6.1-cache-lifetimes.html: Removed.
  • web-platform-tests/service-workers/stub-4.6.2-cache-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-4.6.2-cache.html: Removed.
  • web-platform-tests/service-workers/stub-4.6.3-cache-storage-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-4.6.3-cache-storage.html: Removed.
  • web-platform-tests/service-workers/stub-4.7.1-install-phase-event-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-4.7.1-install-phase-event.html: Removed.
  • web-platform-tests/service-workers/stub-4.7.1.1-wait-until-method-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-4.7.1.1-wait-until-method.html: Removed.
  • web-platform-tests/service-workers/stub-4.7.2-install-event-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-4.7.2-install-event.html: Removed.
  • web-platform-tests/service-workers/stub-4.7.2.1-install-event-section-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-4.7.2.1-install-event-section.html: Removed.
  • web-platform-tests/service-workers/stub-4.7.2.2-replace-method-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-4.7.2.2-replace-method.html: Removed.
  • web-platform-tests/service-workers/stub-4.7.3-activate-event-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-4.7.3-activate-event.html: Removed.
  • web-platform-tests/service-workers/stub-4.7.4.1-fetch-event-section-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-4.7.4.1-fetch-event-section.html: Removed.
  • web-platform-tests/service-workers/stub-4.7.4.2-respond-with-method-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-4.7.4.2-respond-with-method.html: Removed.
  • web-platform-tests/service-workers/stub-4.7.4.3-default-method-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-4.7.4.3-default-method.html: Removed.
  • web-platform-tests/service-workers/stub-4.7.4.4-is-reload-attribute-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-4.7.4.4-is-reload-attribute.html: Removed.
  • web-platform-tests/service-workers/stub-5.1-origin-relativity-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-5.1-origin-relativity.html: Removed.
  • web-platform-tests/service-workers/stub-5.2-cross-origin-resources-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-5.2-cross-origin-resources.html: Removed.
4:48 PM Changeset in webkit [225992] by Chris Dumez
  • 15 edits in trunk

Support updating a service worker registration's updateViaCache flag
https://bugs.webkit.org/show_bug.cgi?id=180888

Reviewed by Brady Eidson.

LayoutTests/imported/w3c:

Rebaseline WPT test now that more checks are passing.

  • web-platform-tests/service-workers/service-worker/registration-updateviacache.https-expected.txt:

Source/WebCore:

Support updating a service worker registration's updateViaCache flag to match other browsers:

No new tests, rebaselined existing test.

  • workers/service/SWClientConnection.cpp:

(WebCore::SWClientConnection::setRegistrationUpdateViaCache):

  • workers/service/SWClientConnection.h:
  • workers/service/ServiceWorkerRegistration.cpp:

(WebCore::ServiceWorkerRegistration::setUpdateViaCache):

  • workers/service/ServiceWorkerRegistration.h:
  • workers/service/server/SWServer.h:
  • workers/service/server/SWServerJobQueue.cpp:

(WebCore::SWServerJobQueue::runRegisterJob):

  • workers/service/server/SWServerRegistration.cpp:

(WebCore::SWServerRegistration::setUpdateViaCache):

  • workers/service/server/SWServerRegistration.h:

Source/WebKit:

  • StorageProcess/ServiceWorker/WebSWServerConnection.cpp:

(WebKit::WebSWServerConnection::setRegistrationUpdateViaCache):

  • StorageProcess/ServiceWorker/WebSWServerConnection.h:
  • WebProcess/Storage/WebSWClientConnection.messages.in:
4:32 PM Changeset in webkit [225991] by david_quesada@apple.com
  • 2 edits in trunk/Tools

Unreviewed, adding myself to contributors.json

  • Scripts/webkitpy/common/config/contributors.json:
4:00 PM Changeset in webkit [225990] by Ryan Haddad
  • 31 edits in trunk

Unreviewed, rolling out r225941.

This change introduced LayoutTest crashes and assertion
failures.

Reverted changeset:

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

3:14 PM Changeset in webkit [225989] by achristensen@apple.com
  • 13 edits in trunk

Introduce SPI _WKWebsitePolicies.websiteDataStore
https://bugs.webkit.org/show_bug.cgi?id=180880
<rdar://problem/35535328>

Reviewed by Andy Estes.

Source/WebKit:

The SPI doesn't do anything yet, but it already has some restrictions and tests!
WKWebView._updateWebsitePolicies can't be used to update a WKWebsiteDataStore. Only during navigation.
Even during navigation, we are only supporting the default and ephemeral data stores right now.
This functionality won't be supported in the C API. This is enforced with RELEASE_ASSERTs.
If we change our minds, we can change them and add restrictions similar to the ObjC restrictions.

  • Shared/WebsitePoliciesData.cpp:

(WebKit::WebsitePoliciesData::encode const):
(WebKit::WebsitePoliciesData::decode):

  • Shared/WebsitePoliciesData.h:
  • UIProcess/API/APIWebsitePolicies.cpp:

(API::WebsitePolicies::WebsitePolicies):
(API::WebsitePolicies::setWebsiteDataStore):
(API::WebsitePolicies::data):

  • UIProcess/API/APIWebsitePolicies.h:
  • UIProcess/API/C/WKFramePolicyListener.cpp:

(WKFramePolicyListenerUseWithPolicies):

  • UIProcess/API/C/WKPage.cpp:

(WKPageUpdateWebsitePolicies):

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _updateWebsitePolicies:]):

  • UIProcess/API/Cocoa/_WKWebsitePolicies.h:
  • UIProcess/API/Cocoa/_WKWebsitePolicies.mm:

(-[_WKWebsitePolicies websiteDataStore]):
(-[_WKWebsitePolicies setWebsiteDataStore:]):

  • UIProcess/Cocoa/NavigationState.mm:

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

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm:

(-[WebsitePoliciesWebsiteDataStoreDelegate _webView:decidePolicyForNavigationAction:decisionHandler:]):
(-[WebsitePoliciesWebsiteDataStoreDelegate webView:startURLSchemeTask:]):
(-[WebsitePoliciesWebsiteDataStoreDelegate webView:stopURLSchemeTask:]):
(TEST):

2:48 PM Changeset in webkit [225988] by jmarcell@apple.com
  • 1 delete in tags/Safari-605.1.18.1/Safari-605.1.18

Removing tag (mistakenly placed inside of tag).

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

Fix GTK build.

  • UIProcess/API/glib/WebKitPolicyDecision.cpp:

(webkit_policy_decision_use):

1:48 PM Changeset in webkit [225986] by jmarcell@apple.com
  • 1 copy in tags/Safari-605.1.18.1/Safari-605.1.18

New tag.

1:32 PM Changeset in webkit [225985] by rniwa@webkit.org
  • 3 edits in trunk/Source/WebCore

Add a release assert that Timer::m_wasDeleted is false in setNextFireTime
https://bugs.webkit.org/show_bug.cgi?id=180860
<rdar://problem/36066500>

Reviewed by David Kilzer.

Turn an exist debug-only assertion into a release assertion to help diagnose a crash
which appears to be caused by a freed timer getting scheduled back into the timer heap.

  • platform/Timer.cpp:

(WebCore::TimerBase::~TimerBase):
(WebCore::TimerBase::setNextFireTime):

  • platform/Timer.h:
1:27 PM Changeset in webkit [225984] by Brent Fulgham
  • 8 edits in trunk/Source/WebKit

Avoid waking plugin process up unnecessarily
https://bugs.webkit.org/show_bug.cgi?id=180819
<rdar://problem/36051548>

Reviewed by Geoffrey Garen.

WebKit purges data from origins marked as prevalent on an hourly interval. This includes waking up plugins
and removing relevant data stored in those plugins. This causes multiple plugin processes to be spawned,
even though the user is not interacting with any plugins.

Instead, we should delay removing data from plugins until they are loaded due to the user interacting with
a website using a plugin.

Make the following changes:

  1. When looking for plugin data related to prevalent sites, only examine plugin data if the relevant plugin is already running.
  2. When the state of the active plugins changes, trigger a data removal check.
  • Shared/WebsiteData/WebsiteDataFetchOption.h: Add a new option 'DoNotCreateProcesses'
  • UIProcess/Plugins/PluginProcessManager.cpp:

(WebKit::PluginProcessManager::getPluginProcessConnection): Pass new argument 'Launch', since we always
want to launch processes in this case.
(WebKit::PluginProcessManager::fetchWebsiteData): Pass a new parameter 'processAccessType' so that the
caller can specify if they only want to examine already-active plugins, or if they want to spawn new
processes. Call the completion handler if we need to exit early when no process exists.
(WebKit::PluginProcessManager::deleteWebsiteData): Always launch new processes.
(WebKit::PluginProcessManager::deleteWebsiteDataForHostNames): Ditto.
(WebKit::PluginProcessManager::getOrCreatePluginProcess): Accept new parameter indicating if new processes
shoudl be launched. Also switch to C++ style loops.

  • UIProcess/Plugins/PluginProcessManager.h:
  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::deleteWebsiteDataForTopPrivatelyControlledDomainsInAllPersistentDataStores): Use the
new 'DoNotCreatePrcesses' access type.

  • UIProcess/WebResourceLoadStatisticsStore.cpp:

(WebKit::WebResourceLoadStatisticsStore::removeDataRecords): Update the active plugin count when we
remove data.
(WebKit::WebResourceLoadStatisticsStore::shouldRemoveDataRecords const): Return true if the active plugin
process count changed since the last time data was removed.

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

(WebKit::WebsiteDataStore::fetchDataAndApply): Check fetch option for new 'DoNotCreateProcesses' flag,
and tell the PluginProcessManager which mode we are using.

1:18 PM Changeset in webkit [225983] by Simon Fraser
  • 4 edits in trunk/Source/WebCore

Elements animated on-screen are missing sometimes
https://bugs.webkit.org/show_bug.cgi?id=180773
rdar://problem/34923438

Reviewed by Zalan Bujtas.

After r225310 it was still possible for elements to be missing backing store when brought
on-screen via an animation. This occurred if a child element was outside the bounds of the
element being animated.

Fix by making sure that GraphicsLayer's "animatedExtent" took composited child layers into account.

As for r225310, no test because this is timing sensitive and hard to reliably make a test for.

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::calculateClipRects const):

  • rendering/RenderLayer.h:
  • rendering/RenderLayerBacking.cpp:

(WebCore::RenderLayerBacking::updateGeometry):

1:15 PM Changeset in webkit [225982] by beidson@apple.com
  • 3 edits in trunk/Source/WebKit

Make sure only WebsiteDataStores with valid SessionIDs register themselves.
https://bugs.webkit.org/show_bug.cgi?id=180869

Reviewed by Chris Dumez.

Some code in WebsiteDataStore assumes an invalid SessionID is a possibility,
but we didn't account for that in the map added in r225935.

Seems prudent to make sure we're not doing hash table operations with invalid keys.

  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::WebsiteDataStore):
(WebKit::WebsiteDataStore::~WebsiteDataStore):
(WebKit::WebsiteDataStore::maybeRegisterWithSessionIDMap):
(WebKit::WebsiteDataStore::existingNonDefaultDataStoreForSessionID):

  • UIProcess/WebsiteData/WebsiteDataStore.h:
1:12 PM Changeset in webkit [225981] by Simon Fraser
  • 2 edits in trunk/Source/WebKit

Rotating when zoomed in with fingers down can result in a broken tab
https://bugs.webkit.org/show_bug.cgi?id=180859
rdar://problem/34532817

Reviewed by Tim Horton.

If you zoom in fully, then, with two fingers down, rotate the iPhone and rotate back,
then the tab can get into a broken state where the WKContentView has a non-zero position
which may push it entirely off-screen. The tab never recovers.

This is caused by a bug in UIKit (rdar://problem/36065495) so work around it by always
re-setting the position of the content view after zooming. We initialize contentView.frame
from self.bounds, so setting the position (via "center") to the bounds origin should always be safe.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView scrollViewDidEndZooming:withView:atScale:]):

1:11 PM Changeset in webkit [225980] by beidson@apple.com
  • 14 edits in trunk/Source/WebKit

API test WebKit.WebsiteDataStoreCustomPaths is failing
https://bugs.webkit.org/show_bug.cgi?id=180870

Reviewed by Chris Dumez.

To avoid unintentionally creating the default WebsiteDataStore we need to pass around the
relevant SessionID to more places.

  • UIProcess/ServiceWorkerProcessProxy.cpp:

(WebKit::ServiceWorkerProcessProxy::start):

  • UIProcess/ServiceWorkerProcessProxy.h:
  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::getStorageProcessConnection):
(WebKit::WebProcessPool::establishWorkerContextConnectionToStorageProcess):

  • UIProcess/WebProcessPool.h:
  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::getStorageProcessConnection):

  • UIProcess/WebProcessProxy.h:
  • UIProcess/WebProcessProxy.messages.in:
  • WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp:

(WebKit::WebIDBConnectionToServer::messageSenderConnection):

  • WebProcess/Databases/WebDatabaseProvider.cpp:

(WebKit::WebDatabaseProvider::idbConnectionToServerForSession):

  • WebProcess/Storage/WebServiceWorkerProvider.cpp:

(WebKit::WebServiceWorkerProvider::serviceWorkerConnectionForSession):
(WebKit::WebServiceWorkerProvider::handleFetch):

  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::ensureWebToStorageProcessConnection):
(WebKit::WebProcess::establishWorkerContextConnectionToStorageProcess):

  • WebProcess/WebProcess.h:
  • WebProcess/WebProcess.messages.in:
12:35 PM Changeset in webkit [225979] by webkit@devinrousso.com
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Canvas Tab should be turned on by default
https://bugs.webkit.org/show_bug.cgi?id=180594
<rdar://problem/35938917>

Reviewed by Brian Burg.

  • UserInterface/Base/Main.js:

(WI.loaded):

12:12 PM Changeset in webkit [225978] by Chris Dumez
  • 10 edits in trunk/LayoutTests

Unreviewed, rebaseline Service Workers flaky tests.

LayoutTests/imported/w3c:

  • web-platform-tests/service-workers/cache-storage/serviceworker/cache-match.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/about-blank-replacement.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/fetch-canvas-tainting.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/fetch-cors-xhr.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/fetch-request-xhr.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/registration-service-worker-attributes.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/registration-updateviacache.https-expected.txt:

LayoutTests:

11:58 AM Changeset in webkit [225977] by achristensen@apple.com
  • 16 edits
    1 move
    3 adds in trunk/Source/WebKit

Move WebKit::WebsitePolicies to API::WebsitePolicies
https://bugs.webkit.org/show_bug.cgi?id=180873

Reviewed by Joseph Pecoraro.

It's just an API data object now. I need it to be in the API namespace so we can
give it references to other API namespace objects without weird layering violations.

  • CMakeLists.txt:
  • Shared/WebsiteAutoplayPolicy.h: Added.
  • Shared/WebsiteAutoplayQuirk.h: Added.
  • Shared/WebsitePoliciesData.cpp:

(WebKit::WebsitePoliciesData::fromWebsitePolicies): Deleted.

  • Shared/WebsitePoliciesData.h:
  • UIProcess/API/APIWebsitePolicies.cpp: Added.

(API::WebsitePolicies::~WebsitePolicies):
(API::WebsitePolicies::data):

  • UIProcess/API/APIWebsitePolicies.h: Copied from Source/WebKit/UIProcess/WebsitePolicies.h.
  • UIProcess/API/C/WKAPICast.h:
  • UIProcess/API/C/WKFramePolicyListener.cpp:

(WKFramePolicyListenerUseWithPolicies):

  • UIProcess/API/C/WKPage.cpp:

(WKPageUpdateWebsitePolicies):

  • UIProcess/API/C/WKWebsitePolicies.cpp:

(WKWebsitePoliciesGetTypeID):
(WKWebsitePoliciesCreate):

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _updateWebsitePolicies:]):

  • UIProcess/API/Cocoa/_WKWebsitePolicies.h:
  • UIProcess/API/Cocoa/_WKWebsitePolicies.mm:

(-[_WKWebsitePolicies dealloc]):
(-[_WKWebsitePolicies init]):

  • UIProcess/API/Cocoa/_WKWebsitePoliciesInternal.h:

(WebKit::wrapper): Deleted.

  • UIProcess/Cocoa/NavigationState.mm:

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

  • UIProcess/WebFormSubmissionListenerProxy.cpp:
  • UIProcess/WebsitePolicies.h: Removed.
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/WebPage/WebPage.cpp:
11:57 AM Changeset in webkit [225976] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

imported/w3c/web-platform-tests/service-workers/service-worker/update.https.html is sometimes crashing in Debug builds
https://bugs.webkit.org/show_bug.cgi?id=180867

Reviewed by Brady Eidson.

Fix assertion to make sure the worker is terminating if it is already in m_runningOrTerminatingWorkers.

  • workers/service/server/SWServer.cpp:

(WebCore::SWServer::runServiceWorker):

11:36 AM Changeset in webkit [225975] by Chris Dumez
  • 16 edits in trunk

Service Worker Registration promise is sometimes not rejected when the script load fails
https://bugs.webkit.org/show_bug.cgi?id=180849

Reviewed by Brady Eidson.

LayoutTests/imported/w3c:

Rebaseline tests that are now passing.

  • web-platform-tests/service-workers/service-worker/register-same-scope-different-script-url.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/registration-iframe.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/registration-script.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/registration-security-error.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/unregister-then-register-new-script.https-expected.txt:

Source/WebCore:

Service Worker Registration promise is sometimes not rejected when the script load fails.
This was caused by the ServiceWorkerJob sometimes passing a null ResourceError to the
StorageProcess, even though the load failed.

No new tests, rebaselined exisiting tests.

  • workers/WorkerScriptLoader.cpp:

(WebCore::WorkerScriptLoader::notifyError):

  • workers/service/ServiceWorkerJob.cpp:

(WebCore::ServiceWorkerJob::notifyFinished):

LayoutTests:

Fix WebKit-specific tests that had invalid URLs for workers. We failed to notice this
before because we were wrongly resolving the registration promise.

  • http/tests/workers/service/basic-register-expected.txt:
  • http/tests/workers/service/basic-unregister-then-register-again-no-reuse.html:
  • http/tests/workers/service/registration-clear-redundant-worker.html:
  • http/tests/workers/service/resources/basic-register.js:
  • http/tests/workers/service/service-worker-gc-event.html:
  • http/tests/workers/service/service-worker-registration-gc-event.html:
7:39 AM Changeset in webkit [225974] by mitz@apple.com
  • 2 edits in trunk/Source/ThirdParty/libwebrtc

libwebrtc installs an extra copy of encoder_vcp.h under /usr/local/include
https://bugs.webkit.org/show_bug.cgi?id=180858

Reviewed by Anders Carlsson.

  • libwebrtc.xcodeproj/project.pbxproj: Demoted the header from Private to Project. A script build phase copies it to the correct location under /usr/local/include/webrtc.
7:38 AM Changeset in webkit [225973] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

WebRTC Stats should not be console logged from a background thread
https://bugs.webkit.org/show_bug.cgi?id=180845

Patch by Youenn Fablet <youenn@apple.com> on 2017-12-15
Reviewed by Eric Carlson.

Ensuring console log are done in the main thread.

  • Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:

(WebCore::LibWebRTCMediaEndpoint::OnStatsDelivered):

6:27 AM Changeset in webkit [225972] by nael.ouedraogo@crf.canon.fr
  • 2 edits in trunk/Tools

[GTK] Add proxy option to Minibrowser
https://bugs.webkit.org/show_bug.cgi?id=180750

Reviewed by Michael Catanzaro.

Add command line option to set proxy settings in GTK minibrowser.

  • MiniBrowser/gtk/main.c:

(main):

5:58 AM Changeset in webkit [225971] by Yusuke Suzuki
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed, 32bit JSEmpty is not nullptr + CellTag
https://bugs.webkit.org/show_bug.cgi?id=180804

Add 32bit path for WeakMapGet.

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileWeakMapGet):

5:14 AM Changeset in webkit [225970] by Carlos Garcia Campos
  • 5 edits in trunk/Source/WebDriver

WebDriver: add support for accept/dismiss and notify unhandled prompt behavior
https://bugs.webkit.org/show_bug.cgi?id=179999

Reviewed by Carlos Alberto Lopez Perez.

They work as accept and dismiss, but unexpected alert open is still reported.

  1. User Prompts

https://w3c.github.io/webdriver/webdriver-spec.html#dfn-known-prompt-handling-approaches-table

  • Capabilities.h: Add DismissAndNotify and AcceptAndNotify to UnhandledPromptBehavior enum.
  • Session.cpp:

(WebDriver::Session::handleUnexpectedAlertOpen): Move default implementation to dismissAndNotifyAlert and
acceptAndNotifyAlert and use dismissAndNotifyAlert by default.
(WebDriver::Session::dismissAndNotifyAlert):
(WebDriver::Session::acceptAndNotifyAlert):

  • Session.h:
  • WebDriverService.cpp:

(WebDriver::deserializeUnhandledPromptBehavior): Handle accept/dismiss and notify.
(WebDriver::WebDriverService::newSession): Ditto.

4:35 AM Changeset in webkit [225969] by Antti Koivisto
  • 57 edits
    1 copy
    1 add in trunk/Source/WebCore

Introduce RenderTreeBuilder
https://bugs.webkit.org/show_bug.cgi?id=180817

Reviewed by Zalan Bujtas.

RenderTreeBuilder is responsible of building the render tree, including construction of various anonymous
renderers. Renderer subtype specific render tree construction code will eventually move there.

This patch adds RenderTreeBuilder class and passes it as a parameter for all addChild implementations.
Future patches can then mechanically move the building code from renderers to RenderTreeBuilder.

It also moves one addChild implementation (RenderRuby::addChild -> RenderTreeBuilder::rubyRunInsertChild)
to RenderTreeBuilder as a test.

  • WebCore.xcodeproj/project.pbxproj:
  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::addChildToContinuation):
(WebCore::RenderBlock::addChild):
(WebCore::RenderBlock::addChildIgnoringContinuation):

  • rendering/RenderBlock.h:
  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::addChild):

  • rendering/RenderBlockFlow.h:
  • rendering/RenderBoxModelObject.cpp:

(WebCore::RenderBoxModelObject::moveChildTo):

  • rendering/RenderButton.cpp:

(WebCore::RenderButton::addChild):
(WebCore::RenderButton::setText):

  • rendering/RenderButton.h:
  • rendering/RenderElement.cpp:

(WebCore::RenderElement::addChild):

  • rendering/RenderElement.h:

(WebCore::RenderElement::addChildIgnoringContinuation):

  • rendering/RenderFullScreen.cpp:

(WebCore::RenderFullScreen::wrapNewRenderer):
(WebCore::RenderFullScreen::wrapExistingRenderer):
(WebCore::RenderFullScreen::unwrapRenderer):
(WebCore::RenderFullScreen::createPlaceholder):

  • rendering/RenderGrid.cpp:

(WebCore::RenderGrid::addChild):

  • rendering/RenderGrid.h:
  • rendering/RenderInline.cpp:

(WebCore::RenderInline::addChild):
(WebCore::RenderInline::addChildIgnoringContinuation):
(WebCore::RenderInline::splitInlines):
(WebCore::RenderInline::splitFlow):
(WebCore::RenderInline::addChildToContinuation):
(WebCore::RenderInline::childBecameNonInline):

  • rendering/RenderInline.h:
  • rendering/RenderMenuList.cpp:

(WebCore::RenderMenuList::createInnerBlock):
(RenderMenuList::addChild):
(RenderMenuList::setText):

  • rendering/RenderMenuList.h:
  • rendering/RenderMultiColumnFlow.cpp:

(WebCore::RenderMultiColumnFlow::processPossibleSpannerDescendant):

  • rendering/RenderQuote.cpp:

(WebCore::RenderQuote::updateTextRenderer):
(WebCore::RenderQuote::updateRenderer):

  • rendering/RenderQuote.h:
  • rendering/RenderRuby.cpp:

(WebCore::RenderRubyAsInline::addChild):
(WebCore::RenderRubyAsBlock::addChild):

  • rendering/RenderRuby.h:
  • rendering/RenderRubyBase.h:
  • rendering/RenderRubyRun.cpp:

(WebCore::RenderRubyRun::rubyBaseSafe):
(WebCore::RenderRubyRun::addChild): Deleted.

  • rendering/RenderRubyRun.h:
  • rendering/RenderTable.cpp:

(WebCore::RenderTable::addChild):

  • rendering/RenderTable.h:
  • rendering/RenderTableRow.cpp:

(WebCore::RenderTableRow::addChild):

  • rendering/RenderTableRow.h:
  • rendering/RenderTableSection.cpp:

(WebCore::RenderTableSection::addChild):

  • rendering/RenderTableSection.h:
  • rendering/RenderTreeBuilder.cpp: Added.

(WebCore::RenderTreeBuilder::RenderTreeBuilder):
(WebCore::RenderTreeBuilder::~RenderTreeBuilder):
(WebCore::RenderTreeBuilder::insertChild):
(WebCore::RenderTreeBuilder::rubyRunInsertChild):

  • rendering/RenderTreeBuilder.h: Added.

(WebCore::RenderTreeBuilder::current):

  • rendering/TextAutoSizing.cpp:

(WebCore::TextAutoSizingValue::adjustTextNodeSizes):

  • rendering/mathml/RenderMathMLFenced.cpp:

(WebCore::RenderMathMLFenced::updateFromElement):
(WebCore::RenderMathMLFenced::makeFences):
(WebCore::RenderMathMLFenced::addChild):

  • rendering/mathml/RenderMathMLFenced.h:
  • rendering/svg/RenderSVGContainer.cpp:

(WebCore::RenderSVGContainer::addChild):

  • rendering/svg/RenderSVGContainer.h:
  • rendering/svg/RenderSVGInline.cpp:

(WebCore::RenderSVGInline::addChild):

  • rendering/svg/RenderSVGInline.h:
  • rendering/svg/RenderSVGRoot.cpp:

(WebCore::RenderSVGRoot::addChild):

  • rendering/svg/RenderSVGRoot.h:
  • rendering/svg/RenderSVGText.cpp:

(WebCore::RenderSVGText::addChild):

  • rendering/svg/RenderSVGText.h:
  • style/RenderTreePosition.cpp:

(WebCore::RenderTreePosition::insert): Deleted.

  • style/RenderTreePosition.h:

(WebCore::RenderTreePosition::RenderTreePosition):
(WebCore::RenderTreePosition::nextSibling const):
(WebCore::RenderTreePosition::canInsert const): Deleted.

  • style/RenderTreeUpdater.cpp:

(WebCore::RenderTreeUpdater::updateAfterDescendants):
(WebCore::RenderTreeUpdater::createRenderer):
(WebCore::RenderTreeUpdater::createTextRenderer):
(WebCore::RenderTreeUpdater::updateTextRenderer):
(WebCore::createTextRenderer): Deleted.

  • style/RenderTreeUpdater.h:
  • style/RenderTreeUpdaterFirstLetter.cpp:

(WebCore::updateFirstLetterStyle):
(WebCore::createFirstLetterRenderer):

  • style/RenderTreeUpdaterGeneratedContent.cpp:

(WebCore::RenderTreeUpdater::GeneratedContent::updateQuotesUpTo):
(WebCore::createContentRenderers):
(WebCore::RenderTreeUpdater::GeneratedContent::updatePseudoElement):

  • style/RenderTreeUpdaterListItem.cpp:

(WebCore::RenderTreeUpdater::ListItem::updateMarker):

  • style/RenderTreeUpdaterListItem.h:
  • style/RenderTreeUpdaterMultiColumn.cpp:

(WebCore::RenderTreeUpdater::MultiColumn::createFragmentedFlow):
(WebCore::RenderTreeUpdater::MultiColumn::destroyFragmentedFlow):

12:28 AM Changeset in webkit [225968] by Nikita Vasilyev
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: Styles Redesign: clicking above selector should prepend new property
https://bugs.webkit.org/show_bug.cgi?id=180628
<rdar://problem/35954570>

Reviewed by Devin Rousso.

  • UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css:

(.spreadsheet-style-declaration-editor .property):
(.spreadsheet-style-declaration-editor .property-toggle):
(.spreadsheet-style-declaration-editor .property.has-warning .warning):

  • UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.css:

(.spreadsheet-css-declaration):
(.spreadsheet-css-declaration :matches(.header, .header-media)):
(.spreadsheet-css-declaration :matches(.header, .header-media):first-child):
When header-media element is present, header element should have padding-top set to 0.

(.spreadsheet-css-declaration .header.editing-selector .origin):
(.spreadsheet-css-declaration .close-brace):

Dec 14, 2017:

11:53 PM Changeset in webkit [225967] by zandobersek@gmail.com
  • 2 edits in trunk/Source/WebKit

Unreviewed GTK+ build fix after r225954.

  • UIProcess/API/glib/WebKitPolicyDecision.cpp:

Explicitly include the WebsitePoliciesData.h header, avoiding build
failures due to incomplete WebsitePoliciesData type.

10:20 PM Changeset in webkit [225966] by sbarati@apple.com
  • 6 edits
    1 add in trunk

The CleanUp after LICM is erroneously removing a Check
https://bugs.webkit.org/show_bug.cgi?id=180852
<rdar://problem/36063494>

Reviewed by Filip Pizlo.

JSTests:

  • stress/dont-run-cleanup-after-licm.js: Added.

Source/JavaScriptCore:

There was a bug where CleanUp phase relied on isProved() bits and LICM
changed them in an invalid way. The bug is as follows:

We have two loops, L1 and L2, and two preheaders, P1 and P2. L2 is nested
inside of L1. We have a Check inside a node inside L1, say in basic block BB,
and that Check dominates all of L2. This is also a hoisting candidate, so we
hoist it outside of L1 and put it inside P1. Then, when we run AI, we look at
the preheader for each loop inside L1, so P1 and P2. When considering P2,
we execute the Check. Inside P2, before any hoisting is done, this Check
is dead code, because BB dominates P2. When we use AI to "execute" the
Check, it'll set its proof status to proved. This is because inside P2,
in the program before LICM runs, the Check is indeed proven at P2. But
it is not proven inside P1. This "execute" call will set our proof status
for the node inside *P1*, hence, we crash.

The fix here is to make LICM precise when updating the ProofStatus of an edge.
It can trust the AI state at the preheader it hoists the node to, but it can't
trust the state when executing effects inside inner loops's preheaders.

  • dfg/DFGPlan.cpp:

(JSC::DFG::Plan::compileInThreadImpl):

9:45 PM Changeset in webkit [225965] by jmarcell@apple.com
  • 7 edits in tags/Safari-605.1.18.1/Source

Versioning.

9:39 PM Changeset in webkit [225964] by jmarcell@apple.com
  • 1 copy in tags/Safari-605.1.18.1

New tag.

9:32 PM Changeset in webkit [225963] by commit-queue@webkit.org
  • 23 edits in trunk

Implement <iframe allow="camera; microphone">
https://bugs.webkit.org/show_bug.cgi?id=167430
LayoutTests/imported/w3c:

Patch by Youenn Fablet <youenn@apple.com> on 2017-12-14
Reviewed by Eric Carlson.

  • resources/import-expectations.json:
  • web-platform-tests/feature-policy/resources/: Added as this is used for some mediacapture-streams tests.
  • web-platform-tests/mediacapture-streams/: Added.

Source/WebCore:

Patch by Youenn Fablet <youenn@apple.com> on 2017-12-14
Reviewed by Eric Carlson.

Tests: imported/w3c/web-platform-tests/mediacapture-streams/MediaStream-default-feature-policy.https.sub.html

Adding allow attribute to HTMLIFrameElement as per https://wicg.github.io/feature-policy/#iframe-allow-attribute.
Cross-origin iframes will get access to camera/microphone based on this attribute value.
Same-origin iframes do not need any attribute.
In case getUserMedia requests both camera and microphone, and allow attribute is only one of these,
getUserMedia access is denied. This goes against the tests but is not very clear from the specification.

  • Modules/mediastream/UserMediaRequest.cpp:

(WebCore::isSecure):
(WebCore::isAllowedToUse):
(WebCore::canCallGetUserMedia):
(WebCore::UserMediaRequest::start):

  • html/HTMLAttributeNames.in:
  • html/HTMLIFrameElement.cpp:

(WebCore::HTMLIFrameElement::parseAttribute):

  • html/HTMLIFrameElement.h:
  • html/HTMLIFrameElement.idl:

LayoutTests:

<rdar://problem/34887226>

Patch by Youenn Fablet <youenn@apple.com> on 2017-12-14
Reviewed by Eric Carlson.

Skipping mediastream tests for wpe.
Updating expectations based on new error message.

  • TestExpectations: Skipping sync XHR test using allow attribute.
  • http/tests/ssl/media-stream/get-user-media-different-host-expected.txt:
  • http/tests/ssl/media-stream/get-user-media-nested-expected.txt:
  • platform/mac-wk1/imported/w3c/web-platform-tests/XMLHttpRequest/xmlhttprequest-sync-default-feature-policy.sub-expected.txt:
  • platform/wpe/TestExpectations:
9:22 PM Changeset in webkit [225962] by ddkilzer@apple.com
  • 2 edits in trunk/Source/WebCore/PAL

Fix 32-bit build: Enable -Wstrict-prototypes for WebKit
<https://webkit.org/b/180757>
<rdar://problem/36024132>

  • pal/spi/mac/QuickDrawSPI.h:

(NewRgn): Add 'void' to C function declaration.
(PenNormal): Ditto.

9:20 PM Changeset in webkit [225961] by Chris Dumez
  • 3 edits
    1 add in trunk/LayoutTests/imported/w3c

Unreviewed, commit missing empty.js file in service workers WPT tests

  • web-platform-tests/service-workers/service-worker/resources/empty.js: Added.
  • web-platform-tests/service-workers/service-worker/service-worker-csp-default.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/service-worker-csp-script.https-expected.txt:
8:22 PM Changeset in webkit [225960] by Alan Bujtas
  • 5 edits
    2 adds in trunk

Inconsistent section grid could lead to CrashOnOverflow
https://bugs.webkit.org/show_bug.cgi?id=180850
<rdar://problem/34064811>

Reviewed by Simon Fraser.

Source/WebCore:

Each RenderTableSection maintains a grid of rows and columns. The number of columns in this grid equals the
maximum number of columns in the entire table (taking spans and multiple sections into account).
Since the maximum number of columns might change while re-computing the sections, we need to
adjust them accordingly at the end (otherwise it could lead to inconsistent grids where rows have different number of columns).

Test: fast/table/table-row-oveflow-crash.html

  • rendering/RenderTable.cpp:

(WebCore::RenderTable::recalcSections const):

  • rendering/RenderTableSection.cpp:

(WebCore::RenderTableSection::removeRedundantColumns):

  • rendering/RenderTableSection.h:

LayoutTests:

  • fast/table/table-row-oveflow-crash-expected.txt: Added.
  • fast/table/table-row-oveflow-crash.html: Added.
8:22 PM Changeset in webkit [225959] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

[webkitpy, Windows] Remove unnecessary debug message
https://bugs.webkit.org/show_bug.cgi?id=180844

Patch by Basuke Suzuki <Basuke Suzuki> on 2017-12-14
Reviewed by Ryosuke Niwa.

  • Scripts/webkitpy/common/system/crashlogs.py:

(CrashLogs._find_newest_log_win): Delete debug print

8:19 PM Changeset in webkit [225958] by ddkilzer@apple.com
  • 38 edits in trunk/Source

Enable -Wstrict-prototypes for WebKit
<https://webkit.org/b/180757>
<rdar://problem/36024132>

Rubber-stamped by Joseph Pecoraro.

Source/bmalloc:

  • Configurations/Base.xcconfig:

(CLANG_WARN_STRICT_PROTOTYPES): Add. Set to YES.

Source/JavaScriptCore:

  • API/tests/CompareAndSwapTest.h:

(testCompareAndSwap): Add 'void' to C function declaration.

  • API/tests/ExecutionTimeLimitTest.h:

(testExecutionTimeLimit): Ditto.

  • API/tests/FunctionOverridesTest.h:

(testFunctionOverrides): Ditto.

  • API/tests/GlobalContextWithFinalizerTest.h:

(testGlobalContextWithFinalizer): Ditto.

  • API/tests/JSONParseTest.h:

(testJSONParse): Ditto.

  • API/tests/MultithreadedMultiVMExecutionTest.h:

(startMultithreadedMultiVMExecutionTest): Ditto.
(finalizeMultithreadedMultiVMExecutionTest): Ditto.

  • API/tests/PingPongStackOverflowTest.h:

(testPingPongStackOverflow): Ditto.

  • Configurations/Base.xcconfig:

(CLANG_WARN_STRICT_PROTOTYPES): Add. Set to YES.

Source/ThirdParty:

  • gtest/xcode/Config/General.xcconfig:

(WARNING_CFLAGS): Add semicolon.
(CLANG_WARN_STRICT_PROTOTYPES): Add. Set to YES.

Source/ThirdParty/ANGLE:

  • Configurations/Base.xcconfig:

(CLANG_WARN_STRICT_PROTOTYPES): Add. Set to YES.

Source/ThirdParty/libwebrtc:

  • Configurations/Base.xcconfig:

(CLANG_WARN_STRICT_PROTOTYPES): Add. Set to YES.

  • Source/third_party/usrsctp/usrsctplib/usrsctplib/user_socket.c:

(wakeup_one): Modernize function argument declarations.
(getsockaddr): Ditto.

  • Source/webrtc/common_audio/signal_processing/include/signal_processing_library.h:

(WebRtcSpl_Init): Add 'void' to C function declaration.

  • Source/webrtc/common_audio/vad/include/webrtc_vad.h:

(WebRtcVad_Create): Ditto.

  • Source/webrtc/modules/audio_coding/codecs/isac/fix/source/codec.h:

(WebRtcIsacfix_InitTransform): Ditto.

  • Source/webrtc/modules/audio_processing/agc/legacy/gain_control.h:

(WebRtcAgc_Create): Ditto.

  • Source/webrtc/modules/audio_processing/ns/noise_suppression.h:

(WebRtcNs_Create): Ditto.
(WebRtcNs_num_freq): Ditto.

  • Source/webrtc/modules/audio_processing/ns/noise_suppression_x.h:

(WebRtcNsx_Create): Ditto.
(WebRtcNsx_num_freq): Ditto.

Source/WebCore:

  • Configurations/Base.xcconfig:

(CLANG_WARN_STRICT_PROTOTYPES): Add. Set to YES.

Source/WebCore/PAL:

  • Configurations/Base.xcconfig:

(CLANG_WARN_STRICT_PROTOTYPES): Add. Set to YES.

Source/WebInspectorUI:

  • Configurations/Base.xcconfig:

(CLANG_WARN_STRICT_PROTOTYPES): Add. Set to YES.

Source/WebKit:

  • Configurations/Base.xcconfig:

(CLANG_WARN_STRICT_PROTOTYPES): Add. Set to YES.

  • Platform/spi/ios/UIKitSPI.h:

(_UIDragInteractionDefaultLiftDelay): Add 'void' to C function declaration.
(UIKeyboardEnabledInputModesAllowOneToManyShortcuts): Ditto.

Source/WebKitLegacy/mac:

  • Configurations/Base.xcconfig:

(CLANG_WARN_STRICT_PROTOTYPES): Add. Set to YES.

Source/WTF:

  • Configurations/Base.xcconfig:

(CLANG_WARN_STRICT_PROTOTYPES): Add. Set to YES.

  • wtf/Assertions.h:

(WTFReportBacktrace): Add 'void' to C function declaration.
(WTFCrashHookFunction): Add 'void' to C function pointer declaration.
(WTFInstallReportBacktraceOnCrashHook): Add 'void' to C function declaration.
(WTFIsDebuggerAttached): Ditto.
(WTFCrash): Ditto.
(WTFCrashWithSecurityImplication): Ditto.

7:26 PM Changeset in webkit [225957] by ddkilzer@apple.com
  • 2 edits in trunk/Tools

check-webkit-style: Stop warning about underscores in webrtc source
<https://webkit.org/b/180848>

Reviewed by Joseph Pecoraro.

  • Scripts/webkitpy/style/checker.py:

(_PATH_RULES_SPECIFIER): Suppress readability/naming/underscores
warnings under Source/ThirdParty/libwebrtc/Source/webrtc.

6:49 PM Changeset in webkit [225956] by Chris Dumez
  • 2 edits in trunk/LayoutTests

[iOS] Many serviceworker tests are flaky timeouts on iOS bots
https://bugs.webkit.org/show_bug.cgi?id=179454
<rdar://problem/35429369>

Unreviewed attempt to unmark service worker tests as flaky on iOS.
We have now fixed all the iOS-specific bugs we are aware of so we
should give this a try.

  • platform/ios/TestExpectations:
6:14 PM Changeset in webkit [225955] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

srflx and relay ICE candidates lack raddr (rel-addr) and rport (rel-port) attributes if getUserMedia access has not been granted
https://bugs.webkit.org/show_bug.cgi?id=180842

Patch by Youenn Fablet <youenn@apple.com> on 2017-12-14
Reviewed by Jon Lee.

Manually tested since there is no way to gather reflexive or stun candidates in WebKit CI.

  • Modules/mediastream/PeerConnectionBackend.cpp:

(WebCore::filterICECandidate):

6:08 PM Changeset in webkit [225954] by achristensen@apple.com
  • 29 edits
    2 moves
    1 add
    2 deletes in trunk/Source/WebKit

Serialize WebsitePoliciesData instead of WebsitePolicies
https://bugs.webkit.org/show_bug.cgi?id=180847

Reviewed by Joseph Pecoraro.

No change in behavior. This will allow me to add things to WebsitePolicies that have
a different form when serialized to another process.

Also, remove API::WebsitePolicies because the wrapper isn't necessary.
WebsitePolicies is now the API type that only exists in the UIProcess.

  • Shared/WebsitePolicies.cpp: Removed.
  • Shared/WebsitePolicies.h:

(WebKit::WebsitePolicies::contentBlockersEnabled const): Deleted.
(WebKit::WebsitePolicies::setContentBlockersEnabled): Deleted.
(WebKit::WebsitePolicies::allowedAutoplayQuirks const): Deleted.
(WebKit::WebsitePolicies::setAllowedAutoplayQuirks): Deleted.
(WebKit::WebsitePolicies::autoplayPolicy const): Deleted.
(WebKit::WebsitePolicies::setAutoplayPolicy): Deleted.
(WebKit::WebsitePolicies::customHeaderFields): Deleted.
(WebKit::WebsitePolicies::takeCustomHeaderFields): Deleted.
(WebKit::WebsitePolicies::setCustomHeaderFields): Deleted.

  • Shared/WebsitePoliciesData.cpp: Copied from Source/WebKit/Shared/WebsitePolicies.cpp.

(WebKit::WebsitePoliciesData::fromWebsitePolicies):
(WebKit::WebsitePoliciesData::encode const):
(WebKit::WebsitePoliciesData::decode):
(WebKit::WebsitePoliciesData::applyToDocumentLoader):
(WebKit::WebsitePolicies::WebsitePolicies): Deleted.
(WebKit::WebsitePolicies::encode const): Deleted.
(WebKit::WebsitePolicies::decode): Deleted.
(WebKit::WebsitePolicies::applyToDocumentLoader): Deleted.

  • Shared/WebsitePoliciesData.h: Added.
  • UIProcess/API/APINavigationClient.h:

(API::NavigationClient::decidePolicyForNavigationAction):
(API::NavigationClient::decidePolicyForNavigationResponse):

  • UIProcess/API/APIPolicyClient.h:

(API::PolicyClient::decidePolicyForNavigationAction):
(API::PolicyClient::decidePolicyForNewWindowAction):
(API::PolicyClient::decidePolicyForResponse):

  • UIProcess/API/APIWebsitePolicies.cpp: Removed.
  • UIProcess/API/APIWebsitePolicies.h: Removed.
  • UIProcess/API/C/WKAPICast.h:
  • UIProcess/API/C/WKFramePolicyListener.cpp:

(WKFramePolicyListenerUse):
(WKFramePolicyListenerUseWithPolicies):

  • UIProcess/API/C/WKPage.cpp:

(WKPageUpdateWebsitePolicies):
(WKPageSetPagePolicyClient):
(WKPageSetPageNavigationClient):

  • UIProcess/API/C/WKWebsitePolicies.cpp:

(WKWebsitePoliciesGetTypeID):
(WKWebsitePoliciesCreate):

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _updateWebsitePolicies:]):

  • UIProcess/API/Cocoa/_WKWebsitePolicies.mm:

(-[_WKWebsitePolicies dealloc]):
(-[_WKWebsitePolicies init]):

  • UIProcess/API/Cocoa/_WKWebsitePoliciesInternal.h:

(WebKit::wrapper):

  • UIProcess/Cocoa/NavigationState.mm:

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

  • UIProcess/WebFrameListenerProxy.cpp:

(WebKit::WebFrameListenerProxy::receivedPolicyDecision):

  • UIProcess/WebFrameListenerProxy.h:
  • UIProcess/WebFramePolicyListenerProxy.cpp:

(WebKit::WebFramePolicyListenerProxy::use):
(WebKit::WebFramePolicyListenerProxy::download):
(WebKit::WebFramePolicyListenerProxy::ignore):

  • UIProcess/WebFramePolicyListenerProxy.h:
  • UIProcess/WebFrameProxy.cpp:

(WebKit::WebFrameProxy::receivedPolicyDecision):

  • UIProcess/WebFrameProxy.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::receivedPolicyDecision):
(WebKit::WebPageProxy::decidePolicyForNavigationAction):
(WebKit::WebPageProxy::updateWebsitePolicies):

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:

(WebKit::WebFrameLoaderClient::applyToDocumentLoader):
(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):

  • WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
  • WebProcess/WebPage/WebFrame.cpp:

(WebKit::WebFrame::didReceivePolicyDecision):

  • WebProcess/WebPage/WebFrame.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::didReceivePolicyDecision):
(WebKit::WebPage::updateWebsitePolicies):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:
5:46 PM Changeset in webkit [225953] by Jonathan Bedard
  • 4 edits in trunk/Tools

webkitpy: Replace Version.contained_in with Version.contains
https://bugs.webkit.org/show_bug.cgi?id=180772
<rdar://problem/36033555>

Reviewed by David Kilzer.

Using contains instead of contained_in allows for the more
Pythonic 'in' operator to be used.

  • Scripts/webkitpy/common/version.py:

(Version):
(Version.contains): Replace contained_in. Note that self is now
the container.
(Version.contained_in): Deleted.

  • Scripts/webkitpy/common/version_name_map.py:

(VersionNameMap.to_name):

  • Scripts/webkitpy/common/version_unittest.py:

(VersionTestCase.test_contained_in):

5:45 PM Changeset in webkit [225952] by Yusuke Suzuki
  • 3 edits in trunk/Source/JavaScriptCore

[DFG] Reduce register pressure of WeakMapGet to be used for 32bit
https://bugs.webkit.org/show_bug.cgi?id=180804

Reviewed by Saam Barati.

This fixes 32bit failures of JSC by reducing register pressure of WeakMapGet.

  • dfg/DFGRegisterBank.h:

(JSC::DFG::RegisterBank::lockedCount const):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileWeakMapGet):

5:39 PM Changeset in webkit [225951] by commit-queue@webkit.org
  • 17 edits in trunk/Source/WebCore

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

Introduced a crash in HTMLPictureElement. We're taking a
different approach for webkit.org/b/180769 (Requested by rniwa
on #webkit).

Reverted changeset:

"Crash inside ImageLoader::updateFromElement()"
https://bugs.webkit.org/show_bug.cgi?id=180769
https://trac.webkit.org/changeset/225878

5:39 PM Changeset in webkit [225950] by Brian Burg
  • 23 edits
    2 adds in trunk

Web Inspector: InspectorTest.evaluateInPage should unwrap primitive values by default
https://bugs.webkit.org/show_bug.cgi?id=180831

Reviewed by Joseph Pecoraro.

Source/WebInspectorUI:

  • UserInterface/Test/FrontendTestHarness.js:

(FrontendTestHarness.prototype.evaluateInPage.resultObjectToReturn):
(FrontendTestHarness.prototype.evaluateInPage):
Unwrap the resulting RemoteObject's value if it is a primitive.
Add an options dictionary so this behavior can be opted out.

  • UserInterface/Test/TestHarness.js:

Add documentation of how evaluateInPage works.

LayoutTests:

  • inspector/unit-tests/test-harness-evaluate-in-page-expected.txt: Added.
  • inspector/unit-tests/test-harness-evaluate-in-page.html: Added.

Add test coverage for InspectorTest.evaluateInPage. Only the promise-returning
variant is tested here, because the callback variant is well-used in existing
tests and I plan to remove the callback variant entirely in later patches.

  • inspector/console/js-isLikelyStackTrace-expected.txt:
  • inspector/console/js-isLikelyStackTrace.html:

Fix some bad tests and rebaseline. A bug was filed for the remaining failing assertion.

  • http/tests/inspector/dom/shapes-test.js:

(TestPage.registerInitializer.InspectorTest.Shapes.receivedHighlightObject):
(TestPage.registerInitializer.InspectorTest.Shapes.getShapeOutsideInfoForSelector):

  • http/tests/inspector/paymentrequest/payment-request-internal-properties.https.html:
  • inspector/console/command-line-api-copy.html:
  • inspector/console/console-log-proxy.html:
  • inspector/debugger/js-stacktrace.html:
  • inspector/dom/hideHighlight.html:
  • inspector/dom/highlightFrame.html:
  • inspector/dom/highlightNode.html:
  • inspector/dom/highlightNodeList.html:
  • inspector/dom/highlightQuad.html:
  • inspector/dom/highlightRect.html:
  • inspector/dom/highlightSelector.html:
  • inspector/page/setEmulatedMedia.html:
  • inspector/runtime/getPreview.html:

Fix existing tests to opt out of unwrapping or use the unwrapped value directly.

  • inspector/dom/setEventListenerDisabled-expected.txt:

Rebaseline results. This is caused by an extra promise tick in evaluateInPage.

  • inspector/injected-script/observable-expected.txt:
  • inspector/injected-script/observable.html:

Fix a typo and rebaseline.

5:29 PM Changeset in webkit [225949] by Ryan Haddad
  • 13 edits in trunk

Unreviewed, rolling out r225931.

Breaks internal builds.

Reverted changeset:

"Fix Mac CMake build"
https://bugs.webkit.org/show_bug.cgi?id=180835
https://trac.webkit.org/changeset/225931

5:28 PM Changeset in webkit [225948] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Unreviewed, rebaseline compositing/repaint/iframes/composited-iframe-with-fixed-background-doc-repaint.html after r225897.

  • platform/mac-wk1/compositing/repaint/iframes/composited-iframe-with-fixed-background-doc-repaint-expected.txt:
5:27 PM Changeset in webkit [225947] by Simon Fraser
  • 2 edits in trunk/Source/WebCore

Another Windows build fix.

  • platform/graphics/cg/GraphicsContextCG.cpp:

(WebCore::extendedSRGBColorSpaceRef):

5:01 PM Changeset in webkit [225946] by Simon Fraser
  • 2 edits in trunk/Source/WebCore

Fix Windows build after r225915.

Windows doens't have dispatch_once with blocks. Switch to use lambda functions instead.

  • platform/graphics/cg/GraphicsContextCG.cpp:

(WebCore::sRGBColorSpaceRef):
(WebCore::linearRGBColorSpaceRef):
(WebCore::extendedSRGBColorSpaceRef):
(WebCore::displayP3ColorSpaceRef):

5:00 PM Changeset in webkit [225945] by Nikita Vasilyev
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Styles Redesign: selecting text should not add new properties
https://bugs.webkit.org/show_bug.cgi?id=180797
<rdar://problem/36039751>

Reviewed by Devin Rousso.

  • UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:

(WI.SpreadsheetCSSStyleDeclarationSection.prototype._handleClick):

4:50 PM Changeset in webkit [225944] by Chris Dumez
  • 4 edits in trunk/Source/WebKit

Clearing WebSite data on iOS does not clear the Fetch Cache
https://bugs.webkit.org/show_bug.cgi?id=180846
<rdar://problem/36060129>

Reviewed by Youenn Fablet.

When clearing WebSite data, construct the engine for the given sessionID
if missing, instead of not clearing anything when the engine is missing.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::deleteWebsiteData):
(WebKit::NetworkProcess::deleteWebsiteDataForOrigins):

4:12 PM Changeset in webkit [225943] by keith_miller@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed, forgot to add { }

  • runtime/JSObject.h:

(JSC::JSObject::setButterfly):
(JSC::JSObject::nukeStructureAndSetButterfly):

4:02 PM Changeset in webkit [225942] by Matt Lewis
  • 4 edits in trunk/LayoutTests

Skipped media/encrypted-media/clearKey/clearKey-encrypted-cenc-event-mse.html on macOS.
https://bugs.webkit.org/show_bug.cgi?id=180430

Unreviewed test gardening.

  • platform/mac-elcapitan/TestExpectations:
  • platform/mac-wk2/TestExpectations:
  • platform/mac/TestExpectations:
4:02 PM Changeset in webkit [225941] by webkit@devinrousso.com
  • 31 edits in trunk

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/canvas/CanvasRenderingContext.h:
  • html/canvas/CanvasRenderingContext.cpp:

(WebCore::CanvasRenderingContext::~CanvasRenderingContext):
Instead of waiting on the HTMLCanvasElement to destruct to call willDestroyCanvasRenderingContext
we can call out in the destructor and know that the CanvasRenderingContext will be destroyed
immediately thereafter.

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

(WebCore::CanvasRenderingContext2D::create):

  • 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.cpp:

(WebCore::WebGLRenderingContextBase::create):

  • html/canvas/WebGPURenderingContext.cpp:

(WebCore::WebGPURenderingContext::create):

  • html/HTMLCanvasElement.cpp:

(WebCore::HTMLCanvasElement::createContext2d):
(WebCore::HTMLCanvasElement::createContextWebGL):
(WebCore::HTMLCanvasElement::createContextWebGPU):
(WebCore::HTMLCanvasElement::createContextBitmapRenderer):
(WebCore::HTMLCanvasElement::paint):
(WebCore::HTMLCanvasElement::setImageBuffer const):
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.

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

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

(WebCore::InspectorShaderProgram::context const):

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

(WebCore::InspectorCanvasAgent::InspectorCanvasAgent):
(WebCore::InspectorCanvasAgent::enable):
(WebCore::InspectorCanvasAgent::disable):
(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::willDestroyCanvasRenderingContext):
(WebCore::InspectorCanvasAgent::didChangeCanvasMemory):
(WebCore::InspectorCanvasAgent::recordCanvasAction):
(WebCore::InspectorCanvasAgent::didFinishRecordingCanvasFrame):
(WebCore::InspectorCanvasAgent::consoleStartRecordingCanvas):
(WebCore::InspectorCanvasAgent::didEnableExtension):
(WebCore::InspectorCanvasAgent::didCreateProgram):
(WebCore::InspectorCanvasAgent::canvasDestroyedTimerFired):
(WebCore::InspectorCanvasAgent::canvasRecordingTimerFired):
(WebCore::InspectorCanvasAgent::clearCanvasData):
(WebCore::InspectorCanvasAgent::unbindCanvas):
(WebCore::InspectorCanvasAgent::findInspectorCanvas):
(WebCore::InspectorCanvasAgent::unbindProgram):
(WebCore::InspectorCanvasAgent::didCreateCSSCanvas): Deleted.
(WebCore::InspectorCanvasAgent::canvasDestroyed): Deleted.

  • inspector/InspectorInstrumentation.h:

(WebCore::InspectorInstrumentation::didCreateCanvasRenderingContext):
(WebCore::InspectorInstrumentation::willDestroyCanvasRenderingContext):
(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::willDestroyCanvasRenderingContextImpl):
(WebCore::InspectorInstrumentation::didChangeCanvasMemoryImpl):
(WebCore::InspectorInstrumentation::didFinishRecordingCanvasFrameImpl):
(WebCore::InspectorInstrumentation::didEnableExtensionImpl):
(WebCore::InspectorInstrumentation::didCreateProgramImpl):
(WebCore::InspectorInstrumentation::didCreateCSSCanvasImpl): Deleted.

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

Tools:

  • Scripts/webkitpy/common/config/watchlist:
3:59 PM Changeset in webkit [225940] by Chris Dumez
  • 17 edits
    7 adds in trunk

self.importScripts() should obey updateViaCache inside service workers
https://bugs.webkit.org/show_bug.cgi?id=180826

Reviewed by Youenn Fablet.

Source/WebCore:

self.importScripts() should obey updateViaCache inside service workers, as per:

Tests: http/tests/workers/service/registration-updateViaCache-all-importScripts.html

http/tests/workers/service/registration-updateViaCache-imports-importScripts.html
http/tests/workers/service/registration-updateViaCache-none-importScripts.html

  • workers/WorkerGlobalScope.cpp:

(WebCore::WorkerGlobalScope::importScripts):

  • workers/WorkerScriptLoader.cpp:

(WebCore::WorkerScriptLoader::loadSynchronously):

  • workers/WorkerScriptLoader.h:
  • workers/service/SWClientConnection.cpp:

(WebCore::SWClientConnection::setRegistrationLastUpdateTime):

  • workers/service/SWClientConnection.h:
  • workers/service/ServiceWorkerRegistration.cpp:

(WebCore::ServiceWorkerRegistration::lastUpdateTime const):
(WebCore::ServiceWorkerRegistration::setLastUpdateTime):

  • workers/service/ServiceWorkerRegistration.h:
  • workers/service/server/SWServer.h:
  • workers/service/server/SWServerRegistration.cpp:

(WebCore::SWServerRegistration::setLastUpdateTime):

  • workers/service/server/SWServerRegistration.h:

Source/WebKit:

  • StorageProcess/ServiceWorker/WebSWServerConnection.cpp:

(WebKit::WebSWServerConnection::setRegistrationLastUpdateTime):

  • StorageProcess/ServiceWorker/WebSWServerConnection.h:
  • WebProcess/Storage/WebSWClientConnection.messages.in:

LayoutTests:

Add layout test coverage.

  • http/tests/workers/service/registration-updateViaCache-all-importScripts-expected.txt: Added.
  • http/tests/workers/service/registration-updateViaCache-all-importScripts.html: Added.
  • http/tests/workers/service/registration-updateViaCache-imports-importScripts-expected.txt: Added.
  • http/tests/workers/service/registration-updateViaCache-imports-importScripts.html: Added.
  • http/tests/workers/service/registration-updateViaCache-none-importScripts-expected.txt: Added.
  • http/tests/workers/service/registration-updateViaCache-none-importScripts.html: Added.
  • http/tests/workers/service/resources/import-cacheable-script-worker.js: Added.
3:54 PM Changeset in webkit [225939] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Network Tab - URL filter should be case-insensitive like filter bars in other tabs
https://bugs.webkit.org/show_bug.cgi?id=180824
<rdar://problem/35910750>

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-12-14
Reviewed by Brian Burg.

  • UserInterface/Views/NetworkTableContentView.js:

(WI.NetworkTableContentView):
(WI.NetworkTableContentView.prototype._resetFilters):
(WI.NetworkTableContentView.prototype._urlFilterDidChange):
Use a case-insensitive regex created from the search query
and use that when filtering resources.

(WI.NetworkTableContentView.prototype._checkURLFilterAgainstFinishedResource): Deleted.
(WI.NetworkTableContentView.prototype._checkURLFilterAgainstResource):
(WI.NetworkTableContentView.prototype._resourceLoadingDidFinish):
(WI.NetworkTableContentView.prototype._resourceLoadingDidFail):
Rename the helper for checking the URL filter.

3:51 PM Changeset in webkit [225938] by Yusuke Suzuki
  • 13 edits in trunk/Source

Drop Thread::tryCreate
https://bugs.webkit.org/show_bug.cgi?id=180808

Reviewed by Darin Adler.

Source/WebCore:

This change reveals that nobody cares the WorkerThread::start's failure.
We should use Thread::create to ensure thread is actually starting.

  • workers/WorkerThread.cpp:

(WebCore::WorkerThread::start):

  • workers/WorkerThread.h:

Source/WebKit:

We still return bool since IconDatabase::open returns false if it is opened twice.

  • UIProcess/API/glib/IconDatabase.cpp:

(WebKit::IconDatabase::open):

  • UIProcess/API/glib/IconDatabase.h:

Source/WebKitLegacy:

  • Storage/StorageThread.cpp:

(WebCore::StorageThread::start):

  • Storage/StorageThread.h:

Source/WTF:

We remove Thread::tryCreate. When thread creation fails, we have no way to keep WebKit working.
Compared to tryMalloc, Thread::create always consumes fixed size of resource. If it fails,
this is not due to arbitrary large user request. It is not reasonable that some thread creations
are handled gracefully while the other thread creations are not.

If we would like to have the limit of number of users' thread creation (like, calling new Worker
so many times), we should have a soft limit instead of relying on system's hard limit.

  • wtf/ParallelJobsGeneric.cpp:

(WTF::ParallelEnvironment::ThreadPrivate::tryLockFor):

  • wtf/Threading.cpp:

(WTF::Thread::create):
(WTF::Thread::tryCreate): Deleted.

  • wtf/Threading.h:

(WTF::Thread::create): Deleted.

3:26 PM Changeset in webkit [225937] by ap@apple.com
  • 7 edits in trunk/Tools

Improve leaks detector output
https://bugs.webkit.org/show_bug.cgi?id=180828

Reviewed by Joseph Pecoraro.

Fixing two issues:

  1. run-leaks omits many lines from leaks tool output, making it incompatible with

other tools. Notably, symbolication cannot be performed.

  1. run-leaks output goes to "run-webkit-tests --debug-rwt-logging" output. This

makes it much longer than needed, sometimes even overloading buildbot. We don't
need full output in test log, as separate files are created for each of these.

  • Scripts/run-leaks: Represent each line in leaks output when parsing, and print

everything except for explicitly excluded leaks. From my testing and reading
the code, it looks like none of our tools should be broken by this change.

  • Scripts/webkitpy/port/leakdetector.py: I couldn't find a way to run a helper tool

without dumping all of its output to debug log, so switched to using a file for leaks.

  • 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/webkitpy/port/leakdetector_unittest.py:

Updated tests for new behavior.

3:13 PM Changeset in webkit [225936] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

[MSE] Add isValid() check before using trackBuffer.lastEnqueuedPresentationTime
https://bugs.webkit.org/show_bug.cgi?id=180258

Patch by Alicia Boya García <aboya@igalia.com> on 2017-12-14
Reviewed by Jer Noble.

  • Modules/mediasource/SourceBuffer.cpp:

(WebCore::SourceBuffer::sourceBufferPrivateDidReceiveSample):

2:57 PM Changeset in webkit [225935] by beidson@apple.com
  • 15 edits in trunk

REGRESSION (r225789): API tests WKProcessPool.InitialWarmedProcessUsed and WebKit.WebsiteDataStoreCustomPaths are failing.
https://bugs.webkit.org/show_bug.cgi?id=180722

Reviewed by Chris Dumez.

Source/WebKit:

  • Add a test-only accessor to get the number of WebProcesses hosting WebPages
  • Have WebsiteDataStore keep track of all instances so they can be looked up by SessionID
  • When the StorageProcess needs to establish a SW context connection on behalf of a specific SessionID, the UI process will now prefer using the WebsiteDataStore associated with that SessionID. This allows us to continue deferring creation of the default data store if it's not needed.
  • StorageProcess/StorageProcess.cpp:

(WebKit::StorageProcess::connectionToContextProcessWasClosed):
(WebKit::StorageProcess::createServerToContextConnection):

  • StorageProcess/StorageProcess.h:
  • StorageProcess/StorageToWebProcessConnection.cpp:

(WebKit::StorageToWebProcessConnection::establishSWServerConnection):

  • UIProcess/API/Cocoa/WKProcessPool.mm:

(-[WKProcessPool _webPageContentProcessCount]):

  • UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
  • UIProcess/Storage/StorageProcessProxy.cpp:

(WebKit::StorageProcessProxy::establishWorkerContextConnectionToStorageProcess):
(WebKit::StorageProcessProxy::establishWorkerContextConnectionToStorageProcessForExplicitSession):

  • UIProcess/Storage/StorageProcessProxy.h:
  • UIProcess/Storage/StorageProcessProxy.messages.in:
  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::establishWorkerContextConnectionToStorageProcess):

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

(WebKit::WebsiteDataStore::WebsiteDataStore):
(WebKit::WebsiteDataStore::~WebsiteDataStore):
(WebKit::WebsiteDataStore::existingDataStoreForSessionID):

  • UIProcess/WebsiteData/WebsiteDataStore.h:

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/InitialWarmedProcessUsed.mm:

(TEST):

2:39 PM Changeset in webkit [225934] by wilander@apple.com
  • 36 edits in trunk

Storage Access API: Implement frame-specific access in the document.cookie layer
https://bugs.webkit.org/show_bug.cgi?id=180682
<rdar://problem/35982257>

Reviewed by Alex Christensen.

Source/WebCore:

No new tests. Changed expected result from existing test.

CookiesStrategy::cookiesForDOM(), CookiesStrategy::setCookiesFromDOM(),
CookiesStrategy::cookieRequestHeaderFieldValue(), and
CookiesStrategy::getRawCookies() now take optional parameters for
frameID and pageID to allow frame-specific scoping of cookies.

This change makes the return values of FrameLoaderClient::frameID()
and FrameLoaderClient::pageID() std::optional<uint64_t> so that
WebCore can call those getters and get the right return values in
WebKit and std:nullopt in WebKitLegacy.

  • dom/Document.cpp:

(WebCore::Document::requestStorageAccess):

  • loader/CookieJar.cpp:

(WebCore::cookies):
(WebCore::setCookies):
(WebCore::cookieRequestHeaderFieldValue):
(WebCore::getRawCookies):

  • loader/EmptyFrameLoaderClient.h:
  • loader/FrameLoaderClient.h:
  • platform/CookiesStrategy.h:
  • platform/network/CacheValidation.cpp:

(WebCore::headerValueForVary):

  • platform/network/PlatformCookieJar.h:
  • platform/network/cf/CookieJarCFNet.cpp:

(WebCore::setCookiesFromDOM):
(WebCore::cookiesForDOM):
(WebCore::cookieRequestHeaderFieldValue):
(WebCore::getRawCookies):

  • platform/network/curl/CookieJarCurl.cpp:

(WebCore::CookieJarCurlFileSystem::setCookiesFromDOM):
(WebCore::CookieJarCurlFileSystem::cookiesForDOM):
(WebCore::CookieJarCurlFileSystem::cookieRequestHeaderFieldValue):
(WebCore::CookieJarCurlFileSystem::getRawCookies):
(WebCore::cookiesForDOM):
(WebCore::setCookiesFromDOM):
(WebCore::cookieRequestHeaderFieldValue):
(WebCore::getRawCookies):

  • platform/network/curl/CookieJarCurl.h:
  • platform/network/mac/CookieJarMac.mm:

(WebCore::cookiesInPartitionForURL):
(WebCore::cookiesForURL):
(WebCore::cookiesForSession):
(WebCore::cookiesForDOM):
(WebCore::cookieRequestHeaderFieldValue):
(WebCore::setCookiesFromDOM):
(WebCore::getRawCookies):

  • platform/network/soup/CookieJarSoup.cpp:

(WebCore::setCookiesFromDOM):
(WebCore::cookiesForDOM):
(WebCore::cookieRequestHeaderFieldValue):
(WebCore::getRawCookies):

Source/WebKit:

CookiesStrategy::cookiesForDOM(), CookiesStrategy::setCookiesFromDOM(),
CookiesStrategy::cookieRequestHeaderFieldValue(), and
CookiesStrategy::getRawCookies() now take optional parameters for
frameID and pageID to allow frame-specific scoping of cookies.

This change makes the return values of FrameLoaderClient::frameID()
and FrameLoaderClient::pageID() std::optional<uint64_t> so that
WebCore can call those getters and get the right return values in
WebKit and std:nullopt in WebKitLegacy.

  • NetworkProcess/NetworkConnectionToWebProcess.cpp:

(WebKit::NetworkConnectionToWebProcess::cookiesForDOM):
(WebKit::NetworkConnectionToWebProcess::setCookiesFromDOM):
(WebKit::NetworkConnectionToWebProcess::cookieRequestHeaderFieldValue):
(WebKit::NetworkConnectionToWebProcess::getRawCookies):

  • NetworkProcess/NetworkConnectionToWebProcess.h:
  • NetworkProcess/NetworkConnectionToWebProcess.messages.in:
  • Shared/mac/CookieStorageShim.mm:

(WebKit::webKitCookieStorageCopyRequestHeaderFieldsForURL):

  • WebProcess/Network/WebLoaderStrategy.cpp:

(WebKit::WebLoaderStrategy::scheduleLoad):

Now handles the fact that FrameLoaderClient::frameID() and
FrameLoaderClient::pageID() return an optional.

  • WebProcess/Storage/WebSWContextManagerConnection.cpp:
  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:

(WebKit::WebFrameLoaderClient::pageID const):
(WebKit::WebFrameLoaderClient::frameID const):

Now return an optional.

  • WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
  • WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:

(WebKit::WebPlatformStrategies::cookiesForDOM):
(WebKit::WebPlatformStrategies::setCookiesFromDOM):
(WebKit::WebPlatformStrategies::cookieRequestHeaderFieldValue):
(WebKit::WebPlatformStrategies::getRawCookies):

  • WebProcess/WebCoreSupport/WebPlatformStrategies.h:

Source/WebKitLegacy/mac:

CookiesStrategy::cookiesForDOM(), CookiesStrategy::setCookiesFromDOM(),
CookiesStrategy::cookieRequestHeaderFieldValue(), and
CookiesStrategy::getRawCookies() now take optional parameters for
frameID and pageID to allow frame-specific scoping of cookies.

This change makes the return values of FrameLoaderClient::frameID()
and FrameLoaderClient::pageID() std::optional<uint64_t> so that
WebCore can call those getters and get the right return values in
WebKit and std:nullopt in WebKitLegacy.

  • WebCoreSupport/WebFrameLoaderClient.h:
  • WebCoreSupport/WebFrameLoaderClient.mm:

(WebFrameLoaderClient::pageID const):
(WebFrameLoaderClient::frameID const):

  • WebCoreSupport/WebPlatformStrategies.h:
  • WebCoreSupport/WebPlatformStrategies.mm:

(WebPlatformStrategies::cookiesForDOM):
(WebPlatformStrategies::setCookiesFromDOM):
(WebPlatformStrategies::cookieRequestHeaderFieldValue):
(WebPlatformStrategies::getRawCookies):

Source/WebKitLegacy/win:

CookiesStrategy::cookiesForDOM(), CookiesStrategy::setCookiesFromDOM(),
CookiesStrategy::cookieRequestHeaderFieldValue(), and
CookiesStrategy::getRawCookies() now take optional parameters for
frameID and pageID to allow frame-specific scoping of cookies.

This change makes the return values of FrameLoaderClient::frameID()
and FrameLoaderClient::pageID() std::optional<uint64_t> so that
WebCore can call those getters and get the right return values in
WebKit and std:nullopt in WebKitLegacy.

  • WebCoreSupport/WebFrameLoaderClient.cpp:

(WebFrameLoaderClient::pageID const):
(WebFrameLoaderClient::frameID const):

Now return an optional.

  • WebCoreSupport/WebFrameLoaderClient.h:
  • WebCoreSupport/WebPlatformStrategies.cpp:

(WebPlatformStrategies::cookiesForDOM):
(WebPlatformStrategies::setCookiesFromDOM):
(WebPlatformStrategies::cookieRequestHeaderFieldValue):
(WebPlatformStrategies::getRawCookies):

  • WebCoreSupport/WebPlatformStrategies.h:

LayoutTests:

CookiesStrategy::cookiesForDOM(), CookiesStrategy::setCookiesFromDOM(),
CookiesStrategy::cookieRequestHeaderFieldValue(), and
CookiesStrategy::getRawCookies() now take optional parameters for
frameID and pageID to allow frame-specific scoping of cookies.

This change makes the return values of FrameLoaderClient::frameID()
and FrameLoaderClient::pageID() std::optional<uint64_t> so that
WebCore can call those getters and get the right return values in
WebKit and std:nullopt in WebKitLegacy.

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

Now expects the correct behavior for document.cookie.

2:28 PM Changeset in webkit [225933] by keith_miller@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Fix assertion in JSObject's structure setting methods
https://bugs.webkit.org/show_bug.cgi?id=180840

Reviewed by Mark Lam.

I forgot that when Typed Arrays have non-indexed properties
added to them, they call the generic code. The generic code
in turn calls the regular structure setting methods. Thus,
these assertions were invalid and we should just avoid setting
the indexing mask if we have a Typed Array.

  • runtime/JSObject.h:

(JSC::JSObject::setButterfly):
(JSC::JSObject::nukeStructureAndSetButterfly):

2:22 PM Changeset in webkit [225932] by jmarcell@apple.com
  • 7 edits in trunk/Source

Versioning.

2:22 PM Changeset in webkit [225931] by achristensen@apple.com
  • 13 edits in trunk

Fix Mac CMake build
https://bugs.webkit.org/show_bug.cgi?id=180835

Reviewed by Andy Estes.

Source/WebCore:

  • PlatformMac.cmake:
  • platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.h:

Source/WebKit:

  • PlatformMac.cmake:
  • Shared/WebsiteDataStoreParameters.cpp:

(WebKit::WebsiteDataStoreParameters::ephemeralParametersWithSessionID):

  • Shared/WebsiteDataStoreParameters.h:
  • UIProcess/API/APIAttachment.h:
  • WebProcess/InjectedBundle/InjectedBundle.cpp:

(WebKit::InjectedBundle::setPrivateBrowsingEnabled):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::setSessionID):

Tools:

  • DumpRenderTree/mac/DumpRenderTree.mm:
  • MiniBrowser/mac/WK1BrowserWindowController.m:
2:16 PM Changeset in webkit [225930] by msaboff@apple.com
  • 12 edits
    1 add in trunk

REGRESSION (r225695): Repro crash on yahoo login page
https://bugs.webkit.org/show_bug.cgi?id=180761

Reviewed by JF Bastien.

JSTests:

New regression test.

  • stress/regress-180761.js: Added.

Source/JavaScriptCore:

Relanding r225695 with a fix.

The fix is that we need to save the return address for a parentheses in
the ParenContext because it is actually used by any immediately contained
alternatives.

Also did a little refactoring, changing occurances of PatternContext to
ParenContext since that is the name of the structure.

  • runtime/RegExp.cpp:

(JSC::byteCodeCompilePattern):
(JSC::RegExp::byteCodeCompileIfNecessary):
(JSC::RegExp::compile):
(JSC::RegExp::compileMatchOnly):

  • runtime/RegExp.h:
  • runtime/RegExpInlines.h:

(JSC::RegExp::matchInline):

  • testRegExp.cpp:

(parseRegExpLine):
(runFromFiles):

  • yarr/Yarr.h:
  • yarr/YarrInterpreter.cpp:

(JSC::Yarr::ByteCompiler::compile):
(JSC::Yarr::ByteCompiler::dumpDisjunction):

  • yarr/YarrJIT.cpp:

(JSC::Yarr::YarrGenerator::ParenContextSizes::ParenContextSizes):
(JSC::Yarr::YarrGenerator::ParenContextSizes::numSubpatterns):
(JSC::Yarr::YarrGenerator::ParenContextSizes::frameSlots):
(JSC::Yarr::YarrGenerator::ParenContext::sizeFor):
(JSC::Yarr::YarrGenerator::ParenContext::nextOffset):
(JSC::Yarr::YarrGenerator::ParenContext::beginOffset):
(JSC::Yarr::YarrGenerator::ParenContext::matchAmountOffset):
(JSC::Yarr::YarrGenerator::ParenContext::returnAddressOffset):
(JSC::Yarr::YarrGenerator::ParenContext::subpatternOffset):
(JSC::Yarr::YarrGenerator::ParenContext::savedFrameOffset):
(JSC::Yarr::YarrGenerator::initParenContextFreeList):
(JSC::Yarr::YarrGenerator::allocateParenContext):
(JSC::Yarr::YarrGenerator::freeParenContext):
(JSC::Yarr::YarrGenerator::saveParenContext):
(JSC::Yarr::YarrGenerator::restoreParenContext):
(JSC::Yarr::YarrGenerator::tryReadUnicodeCharImpl):
(JSC::Yarr::YarrGenerator::storeToFrame):
(JSC::Yarr::YarrGenerator::generateJITFailReturn):
(JSC::Yarr::YarrGenerator::clearMatches):
(JSC::Yarr::YarrGenerator::generate):
(JSC::Yarr::YarrGenerator::backtrack):
(JSC::Yarr::YarrGenerator::opCompileParenthesesSubpattern):
(JSC::Yarr::YarrGenerator::generateEnter):
(JSC::Yarr::YarrGenerator::generateReturn):
(JSC::Yarr::YarrGenerator::YarrGenerator):
(JSC::Yarr::YarrGenerator::compile):

  • yarr/YarrJIT.h:

(JSC::Yarr::YarrCodeBlock::execute):

  • yarr/YarrPattern.cpp:

(JSC::Yarr::indentForNestingLevel):
(JSC::Yarr::dumpUChar32):
(JSC::Yarr::dumpCharacterClass):
(JSC::Yarr::PatternTerm::dump):
(JSC::Yarr::YarrPattern::dumpPattern):

  • yarr/YarrPattern.h:

(JSC::Yarr::PatternTerm::containsAnyCaptures):
(JSC::Yarr::BackTrackInfoParenthesesOnce::returnAddressIndex):
(JSC::Yarr::BackTrackInfoParentheses::beginIndex):
(JSC::Yarr::BackTrackInfoParentheses::returnAddressIndex):
(JSC::Yarr::BackTrackInfoParentheses::matchAmountIndex):
(JSC::Yarr::BackTrackInfoParentheses::parenContextHeadIndex):
(JSC::Yarr::BackTrackInfoAlternative::offsetIndex): Deleted.

2:15 PM Changeset in webkit [225929] by graouts@webkit.org
  • 2 edits in trunk/Source/WebCore

[Web Animations] Use is<> when possible
https://bugs.webkit.org/show_bug.cgi?id=180832

Reviewed by Dean Jackson.

Adopt is<> when possible.

  • animation/WebAnimation.cpp:

(WebCore::WebAnimation::setEffect):
(WebCore::WebAnimation::setTimeline):
(WebCore::WebAnimation::startOrStopAccelerated):

2:13 PM Changeset in webkit [225928] by graouts@webkit.org
  • 5 edits in trunk

[Web Animations] Bring timeline and currentTime setters closer to compliance
https://bugs.webkit.org/show_bug.cgi?id=180834

Reviewed by Dean Jackson.

Source/WebCore:

Now that we've added support for the concept of a hold time, pending tasks
and updating the finished state, adopt those in places we had already implemented
but weren't fully compliant.

Web Platform Tests cover these behaviors, but we're currently failing those tests
due to lacking an implementation for Element.animate().

  • animation/WebAnimation.cpp:

(WebCore::WebAnimation::setTimeline): Add some spec comments to clarify the code behavior
and implement step 4 of the "setting the timeline" procedure where we reset the hold time
to an unresolved value if the start time is resolved, as well as step 5 where we update the
finished state. Finally, we also ensure we update the pending tasks as the ready state is
dependent on a timeline being set.
(WebCore::WebAnimation::bindingsStartTime const): Invert the way we test for an unresolved
value to match prior review comments by Dean Jackson.
(WebCore::WebAnimation::setBindingsStartTime): Use a boolean check rather than checking
equality with std::nullopt.
(WebCore::WebAnimation::setBindingsCurrentTime): Do not raise an exception when setting
an unresolved time.

LayoutTests:

Remove a test clause which tested a behavior that is not part of the spec.

  • http/wpt/wk-web-animations/timing-model/animation-current-time.html:
2:12 PM Changeset in webkit [225927] by graouts@webkit.org
  • 6 edits in trunk

[Web Animations] Implement the cancel() method on Animation
https://bugs.webkit.org/show_bug.cgi?id=180830
<rdar://problem/36055816>

Reviewed by Dean Jackson.

Source/WebCore:

We implement the cancel() method on the Animation interface with full spec text defining
the normative behavior of those methods and code matching those steps. Implementing the
cancel() method required implementing the notion of "resetting pending tasks",
which the Web Animations spec defines as well.

  • animation/WebAnimation.cpp:

(WebCore::WebAnimation::setEffect):
(WebCore::WebAnimation::cancel):
(WebCore::WebAnimation::resetPendingTasks):

  • animation/WebAnimation.h:
  • animation/WebAnimation.idl:

LayoutTests:

Rebase some WPT expectations with progressions due to exposing the cancel() method.

  • http/wpt/web-animations/interfaces/Animation/idlharness-expected.txt:
2:08 PM Changeset in webkit [225926] by achristensen@apple.com
  • 43 edits in trunk/Source/WebKit

Use move semantics for SandboxExtension::Handle
https://bugs.webkit.org/show_bug.cgi?id=180792

Reviewed by Andy Estes.

Passing them around as const SandboxExtension::Handle& is wrong because ownership is transferred and they are consumed.
It only works now because their contents are mutable, which isn't a good use of mutable.

  • NetworkProcess/Downloads/Download.cpp:

(WebKit::Download::decideDestinationWithSuggestedFilename):
(WebKit::Download::didDecideDownloadDestination):

  • NetworkProcess/Downloads/Download.h:
  • NetworkProcess/Downloads/DownloadManager.cpp:

(WebKit::DownloadManager::continueDecidePendingDownloadDestination):
(WebKit::DownloadManager::resumeDownload):

  • NetworkProcess/Downloads/DownloadManager.h:
  • NetworkProcess/Downloads/cocoa/DownloadCocoa.mm:

(WebKit::Download::resume):

  • NetworkProcess/Downloads/ios/DownloadIOS.mm:

(WebKit::Download::resume):

  • NetworkProcess/Downloads/mac/DownloadMac.mm:

(WebKit::Download::resume):

  • NetworkProcess/NetworkConnectionToWebProcess.cpp:

(WebKit::NetworkConnectionToWebProcess::registerFileBlobURL):
(WebKit::NetworkConnectionToWebProcess::preregisterSandboxExtensionsForOptionallyFileBackedBlob):

  • NetworkProcess/NetworkConnectionToWebProcess.h:
  • NetworkProcess/NetworkDataTask.h:

(WebKit::NetworkDataTask::setPendingDownloadLocation):

  • NetworkProcess/NetworkDataTaskBlob.cpp:

(WebKit::NetworkDataTaskBlob::setPendingDownloadLocation):

  • NetworkProcess/NetworkDataTaskBlob.h:
  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::resumeDownload):
(WebKit::NetworkProcess::continueDecidePendingDownloadDestination):

  • NetworkProcess/NetworkProcess.h:
  • NetworkProcess/NetworkResourceLoadParameters.cpp:

(WebKit::NetworkResourceLoadParameters::decode):

  • NetworkProcess/cocoa/NetworkDataTaskCocoa.h:
  • NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:

(WebKit::NetworkDataTaskCocoa::setPendingDownloadLocation):

  • Shared/SandboxExtension.h:

(WebKit::SandboxExtension::create):

  • Shared/WebMemorySampler.cpp:

(WebKit::WebMemorySampler::start):
(WebKit::WebMemorySampler::initializeSandboxedLogFile):

  • Shared/WebMemorySampler.h:
  • Shared/mac/SandboxExtensionMac.mm:

(WebKit::SandboxExtension::create):

  • StorageProcess/StorageProcess.cpp:

(WebKit::StorageProcess::grantSandboxExtensionsForBlobs):

  • StorageProcess/StorageProcess.h:
  • UIProcess/Cocoa/WebViewImpl.mm:

(WebKit::WebViewImpl::performDragOperation):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::dragEntered):
(WebKit::WebPageProxy::dragUpdated):
(WebKit::WebPageProxy::dragExited):
(WebKit::WebPageProxy::performDragOperation):
(WebKit::WebPageProxy::performDragControllerAction):

  • UIProcess/WebPageProxy.h:
  • WebProcess/InjectedBundle/InjectedBundle.cpp:

(WebKit::InjectedBundle::create):

  • WebProcess/InjectedBundle/InjectedBundle.h:
  • WebProcess/MediaStream/MediaDeviceSandboxExtensions.cpp:

(WebKit::MediaDeviceSandboxExtensions::operator[]):
(WebKit::MediaDeviceSandboxExtensions::operator[] const): Deleted.

  • WebProcess/MediaStream/MediaDeviceSandboxExtensions.h:
  • WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp:

(WebKit::UserMediaPermissionRequestManager::grantUserMediaDeviceSandboxExtensions):

  • WebProcess/MediaStream/UserMediaPermissionRequestManager.h:
  • WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:

(WebKit::WebPlatformStrategies::getPathnamesForType):

  • WebProcess/WebPage/WebBackForwardListProxy.cpp:

(WebKit::WebBackForwardListProxy::goToItem):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::loadRequest):
(WebKit::WebPage::reload):
(WebKit::WebPage::performDragControllerAction):
(WebKit::WebPage::grantUserMediaDeviceSandboxExtensions):
(WebKit::WebPage::SandboxExtensionTracker::beginLoad):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::startMemorySampler):

  • WebProcess/WebProcess.h:
2:07 PM Changeset in webkit [225925] by achristensen@apple.com
  • 8 edits
    1 add in trunk/Source/WebKit

Make WebsitePolicies a proper class with getters and setters
https://bugs.webkit.org/show_bug.cgi?id=180788

Reviewed by Andy Estes.

Also introduce WebsitePolicies::applyToDocumentLoader to reduce duplicate code.
This has a side-effect of now applying custom http header fields and content blocking enabled status
when updating WebsitePolicies. This will result in these being applied when a user updates
the per-site settings, and they weren't before.

  • CMakeLists.txt:
  • Shared/WebsitePolicies.cpp: Added.

(WebKit::WebsitePolicies::WebsitePolicies):
(WebKit::WebsitePolicies::encode const):
(WebKit::WebsitePolicies::decode):
(WebKit::WebsitePolicies::applyToDocumentLoader):

  • Shared/WebsitePolicies.h:

(WebKit::WebsitePolicies::contentBlockersEnabled const):
(WebKit::WebsitePolicies::setContentBlockersEnabled):
(WebKit::WebsitePolicies::allowedAutoplayQuirks const):
(WebKit::WebsitePolicies::setAllowedAutoplayQuirks):
(WebKit::WebsitePolicies::autoplayPolicy const):
(WebKit::WebsitePolicies::setAutoplayPolicy):
(WebKit::WebsitePolicies::customHeaderFields):
(WebKit::WebsitePolicies::takeCustomHeaderFields):
(WebKit::WebsitePolicies::setCustomHeaderFields):
(WebKit::WebsitePolicies::encode const): Deleted.
(WebKit::WebsitePolicies::decode): Deleted.

  • UIProcess/API/APIWebsitePolicies.h:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:

(WebKit::WebFrameLoaderClient::applyToDocumentLoader):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::updateWebsitePolicies):

  • WebProcess/WebPage/WebPage.h:
1:57 PM Changeset in webkit [225924] by Chris Dumez
  • 3 edits in trunk/Source/WebKit

Enable Service Workers on iOS
https://bugs.webkit.org/show_bug.cgi?id=180836

Reviewed by Alex Christensen.

  • Shared/WebPreferencesDefaultValues.h:
  • UIProcess/WebProcessPool.cpp:

Enable Service Workers on iOS.

(WebKit::WebProcessPool::ensureNetworkProcess):
Fall back to defaultCacheStorageDirectory() instead of the empty string
for the cache storage directory, when we do not have a store.

12:50 PM Changeset in webkit [225923] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebCore

"Click to exit fullscreen" text not legible on High Sierra
https://bugs.webkit.org/show_bug.cgi?id=180825
<rdar://problem/32839983>

Reviewed by Eric Carlson.

Explicitly set the NSVisualAffectView's .appearance property.

  • platform/mac/WebCoreFullScreenPlaceholderView.mm:

(-[WebCoreFullScreenPlaceholderView initWithFrame:]):

12:33 PM Changeset in webkit [225922] by jmarcell@apple.com
  • 4 edits in tags/Safari-605.1.18/Source/bmalloc

Revert r225701. rdar://problem/35262662

12:16 PM Changeset in webkit [225921] by Chris Dumez
  • 3 edits in trunk/LayoutTests/imported/w3c

Re-sync service-workers/service-worker/interfaces-sw.https.html from upstream
https://bugs.webkit.org/show_bug.cgi?id=180814

Reviewed by Youenn Fablet.

Re-sync service-workers/service-worker/interfaces-sw.https.html WPT from upstream after
https://github.com/w3c/web-platform-tests/pull/8669.

  • web-platform-tests/service-workers/service-worker/interfaces-sw.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/resources/interfaces-worker.sub.js:
12:13 PM Changeset in webkit [225920] by jmarcell@apple.com
  • 4 edits in tags/Safari-605.1.17.2/Source/bmalloc

Revert r225701. rdar://problem/35262662

12:11 PM Changeset in webkit [225919] by jmarcell@apple.com
  • 7 edits in tags/Safari-605.1.17.2/Source

Versioning.

12:09 PM Changeset in webkit [225918] by jmarcell@apple.com
  • 1 copy in tags/Safari-605.1.17.2

New tag.

12:08 PM Changeset in webkit [225917] by graouts@webkit.org
  • 7 edits
    2 deletes in trunk

[Web Animations] Implement the finish() method on Animation
https://bugs.webkit.org/show_bug.cgi?id=180822
<rdar://problem/36053282>

Reviewed by Dean Jackson.

Source/WebCore:

We implement the finish() method on the Animation interface with full spec text defining
the normative behavior of those methods and code matching those steps. Implementing the
finish() method required implementing the notion of "silently setting the current time",
which the Web Animations spec defines as well.

  • animation/WebAnimation.cpp:

(WebCore::WebAnimation::silentlySetCurrentTime):
(WebCore::WebAnimation::setCurrentTime):
(WebCore::WebAnimation::finish):

  • animation/WebAnimation.h:
  • animation/WebAnimation.idl:

LayoutTests:

Rebase some WPT expectations with progressions due to exposing the finish() method.
We're also removing a WebKit-only test that is no longer relevant and started failing
with compliant behavior.

  • http/wpt/web-animations/interfaces/Animation/idlharness-expected.txt:
  • http/wpt/web-animations/timing-model/animations/set-the-timeline-of-an-animation-expected.txt:
  • http/wpt/wk-web-animations/timing-model/animation-playback-rate-expected.txt: Removed.
  • http/wpt/wk-web-animations/timing-model/animation-playback-rate.html: Removed.
11:55 AM Changeset in webkit [225916] by Chris Dumez
  • 20 edits
    5 adds in trunk

Service worker script fetching currently always uses the network cache
https://bugs.webkit.org/show_bug.cgi?id=180816

Reviewed by Alex Christensen.

Source/WebCore:

Service worker script fetching currently always uses the network cache. This is incorrect as per:

Tests: http/tests/workers/service/registration-updateViaCache-all.html

http/tests/workers/service/registration-updateViaCache-none.html

  • workers/Worker.cpp:

(WebCore::Worker::create):

  • workers/WorkerScriptLoader.cpp:

(WebCore::WorkerScriptLoader::loadAsynchronously):

  • workers/WorkerScriptLoader.h:
  • workers/service/SWClientConnection.cpp:

(WebCore::SWClientConnection::startScriptFetchForServer):

  • workers/service/SWClientConnection.h:
  • workers/service/ServiceWorkerContainer.cpp:

(WebCore::ServiceWorkerContainer::startScriptFetchForJob):

  • workers/service/ServiceWorkerContainer.h:
  • workers/service/ServiceWorkerJob.cpp:

(WebCore::ServiceWorkerJob::startScriptFetch):
(WebCore::ServiceWorkerJob::fetchScriptWithContext):

  • workers/service/ServiceWorkerJob.h:
  • workers/service/ServiceWorkerJobClient.h:
  • workers/service/server/SWServer.cpp:

(WebCore::SWServer::startScriptFetch):

  • workers/service/server/SWServer.h:
  • workers/service/server/SWServerJobQueue.cpp:

(WebCore::SWServerJobQueue::runUpdateJob):

  • workers/service/server/SWServerRegistration.h:

(WebCore::SWServerRegistration::lastUpdateTime const):

Source/WebKit:

  • StorageProcess/ServiceWorker/WebSWServerConnection.cpp:

(WebKit::WebSWServerConnection::startScriptFetchInClient):

  • StorageProcess/ServiceWorker/WebSWServerConnection.h:
  • WebProcess/Storage/WebSWClientConnection.messages.in:

LayoutTests:

Add layout test coverage.

  • http/tests/workers/service/registration-updateViaCache-all-expected.txt: Added.
  • http/tests/workers/service/registration-updateViaCache-all.html: Added.
  • http/tests/workers/service/registration-updateViaCache-none-expected.txt: Added.
  • http/tests/workers/service/registration-updateViaCache-none.html: Added.
  • http/tests/workers/service/resources/cacheable-script-worker.php: Added.
11:33 AM Changeset in webkit [225915] by Simon Fraser
  • 3 edits in trunk/Source/WebCore

Remove ColorSpaceDeviceRGB and most users of the obsolete deviceRGB colorspace
https://bugs.webkit.org/show_bug.cgi?id=180689

Reviewed by Darin Adler.

Address issues noted by Darin in r225797:

Existing and new code mistakenly allocated colorspaces on every call, because
they didn't initialize the static variable on the first call. Avoid this mistake
by using dispatch_once() in these functions.

Fix a case where the extendedSRGBColorSpaceRef() fallback was returning deviceRGB
instead of sRGB.

  • platform/graphics/cg/GraphicsContextCG.cpp:

(WebCore::sRGBColorSpaceRef):
(WebCore::linearRGBColorSpaceRef):
(WebCore::extendedSRGBColorSpaceRef):
(WebCore::displayP3ColorSpaceRef):

  • platform/graphics/cocoa/GraphicsContextCocoa.mm:

(WebCore::linearRGBColorSpaceRef):

11:13 AM Changeset in webkit [225914] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

StorageProcess::deleteWebsiteData() should ensure there is a SWServer for the given sessionID
https://bugs.webkit.org/show_bug.cgi?id=180784

Reviewed by Youenn Fablet.

StorageProcess::deleteWebsiteData() should ensure there is a SWServer for the given sessionID
instead of not clearing anything when no such SWServer exists.

This will be useful on iOS once <rdar://problem/36034667> is fully fixed.

  • StorageProcess/StorageProcess.cpp:

(WebKit::StorageProcess::deleteWebsiteData):
(WebKit::StorageProcess::deleteWebsiteDataForOrigins):

  • UIProcess/API/APIProcessPoolConfiguration.cpp:

(API::ProcessPoolConfiguration::createWithWebsiteDataStoreConfiguration):

11:11 AM Changeset in webkit [225913] by keith_miller@apple.com
  • 40 edits
    1 add in trunk

JSObjects should have a mask for loading indexed properties
https://bugs.webkit.org/show_bug.cgi?id=180768

Reviewed by Mark Lam.

JSTests:

  • stress/int16-put-by-val-in-and-out-of-bounds.js:

(test):

Source/JavaScriptCore:

This patch adds a new member to JSObject that holds an indexing
mask. The indexing mask is bitwise anded with the index used to
load a property. If for whatever reason an attacker is able to
clobber the vectorLength of our butterfly they still won't be able
to read substantially past the end of the buttefly. For
performance reasons we don't use the indexing masking for
TypedArrays. Since TypedArrays are already gigacaged the risk of
wild reads is still restricted.

This patch is a <1% regression on Speedometer and ~3% regression
on JetStream in my testing.

  • assembler/MacroAssembler.h:

(JSC::MacroAssembler::urshiftPtr):

  • bytecode/AccessCase.cpp:

(JSC::AccessCase::generateImpl):

  • dfg/DFGAbstractHeap.h:
  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::emitAllocateRawObject):
(JSC::DFG::SpeculativeJIT::compileDoublePutByVal):
(JSC::DFG::SpeculativeJIT::compileNewFunctionCommon):
(JSC::DFG::SpeculativeJIT::compileCreateActivation):
(JSC::DFG::SpeculativeJIT::compileCreateDirectArguments):
(JSC::DFG::SpeculativeJIT::compileArraySlice):
(JSC::DFG::SpeculativeJIT::compileNukeStructureAndSetButterfly):
(JSC::DFG::SpeculativeJIT::compileNewStringObject):
(JSC::DFG::SpeculativeJIT::compileNewTypedArray):

  • dfg/DFGSpeculativeJIT.h:

(JSC::DFG::SpeculativeJIT::emitAllocateJSObject):
(JSC::DFG::SpeculativeJIT::emitAllocateJSObjectWithKnownSize):

  • dfg/DFGSpeculativeJIT32_64.cpp:

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

  • dfg/DFGSpeculativeJIT64.cpp:

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

  • ftl/FTLAbstractHeap.cpp:

(JSC::FTL::IndexedAbstractHeap::baseIndex):

  • ftl/FTLAbstractHeap.h:
  • ftl/FTLAbstractHeapRepository.h:
  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileAtomicsReadModifyWrite):
(JSC::FTL::DFG::LowerDFGToB3::compileGetByVal):
(JSC::FTL::DFG::LowerDFGToB3::compileCreateActivation):
(JSC::FTL::DFG::LowerDFGToB3::compileNewFunction):
(JSC::FTL::DFG::LowerDFGToB3::compileCreateDirectArguments):
(JSC::FTL::DFG::LowerDFGToB3::compileNewStringObject):
(JSC::FTL::DFG::LowerDFGToB3::compileNewTypedArray):
(JSC::FTL::DFG::LowerDFGToB3::compileMaterializeNewObject):
(JSC::FTL::DFG::LowerDFGToB3::compileMaterializeCreateActivation):
(JSC::FTL::DFG::LowerDFGToB3::maskedIndex):
(JSC::FTL::DFG::LowerDFGToB3::computeButterflyIndexingMask):
(JSC::FTL::DFG::LowerDFGToB3::allocateObject):
(JSC::FTL::DFG::LowerDFGToB3::allocateVariableSizedObject):
(JSC::FTL::DFG::LowerDFGToB3::allocateJSArray):
(JSC::FTL::DFG::LowerDFGToB3::pointerIntoTypedArray):

  • ftl/FTLOutput.h:

(JSC::FTL::Output::baseIndex):

  • jit/AssemblyHelpers.h:

(JSC::AssemblyHelpers::emitComputeButterflyIndexingMask):
(JSC::AssemblyHelpers::nukeStructureAndStoreButterfly):
(JSC::AssemblyHelpers::emitAllocateJSObject):
(JSC::AssemblyHelpers::emitAllocateJSObjectWithKnownSize):
(JSC::AssemblyHelpers::emitAllocateVariableSizedJSObject):
(JSC::AssemblyHelpers::emitAllocateDestructibleObject):
(JSC::AssemblyHelpers::storeButterfly): Deleted.

  • jit/JITOpcodes.cpp:

(JSC::JIT::emit_op_new_object):
(JSC::JIT::emit_op_create_this):

  • jit/JITOpcodes32_64.cpp:

(JSC::JIT::emit_op_new_object):
(JSC::JIT::emit_op_create_this):

  • jit/JITPropertyAccess.cpp:

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

  • llint/LowLevelInterpreter32_64.asm:
  • llint/LowLevelInterpreter64.asm:
  • runtime/ArrayStorage.h:

(JSC::ArrayStorage::availableVectorLength):

  • runtime/Butterfly.h:

(JSC::ContiguousData::ContiguousData):
(JSC::ContiguousData::at const):
(JSC::ContiguousData::at):
(JSC::Butterfly::publicLength const):
(JSC::Butterfly::vectorLength const):
(JSC::Butterfly::computeIndexingMaskForVectorLength):
(JSC::Butterfly::computeIndexingMask):
(JSC::Butterfly::contiguousInt32):
(JSC::ContiguousData::operator[] const): Deleted.
(JSC::ContiguousData::operator[]): Deleted.
(JSC::Butterfly::publicLength): Deleted.
(JSC::Butterfly::vectorLength): Deleted.

  • runtime/ButterflyInlines.h:

(JSC::ContiguousData<T>::at const):
(JSC::ContiguousData<T>::at):

  • runtime/ClonedArguments.cpp:

(JSC::ClonedArguments::createEmpty):

  • runtime/JSArray.cpp:

(JSC::JSArray::tryCreateUninitializedRestricted):
(JSC::JSArray::appendMemcpy):
(JSC::JSArray::setLength):
(JSC::JSArray::pop):
(JSC::JSArray::fastSlice):
(JSC::JSArray::shiftCountWithArrayStorage):
(JSC::JSArray::shiftCountWithAnyIndexingType):
(JSC::JSArray::unshiftCountWithAnyIndexingType):
(JSC::JSArray::fillArgList):
(JSC::JSArray::copyToArguments):

  • runtime/JSArrayBufferView.cpp:

(JSC::JSArrayBufferView::JSArrayBufferView):

  • runtime/JSArrayInlines.h:

(JSC::JSArray::pushInline):

  • runtime/JSFixedArray.h:

(JSC::JSFixedArray::createFromArray):

  • runtime/JSGenericTypedArrayViewInlines.h:

(JSC::JSGenericTypedArrayView<Adaptor>::slowDownAndWasteMemory):

  • runtime/JSObject.cpp:

(JSC::JSObject::getOwnPropertySlotByIndex):
(JSC::JSObject::putByIndex):
(JSC::JSObject::createInitialInt32):
(JSC::JSObject::createInitialDouble):
(JSC::JSObject::createInitialContiguous):
(JSC::JSObject::convertUndecidedToInt32):
(JSC::JSObject::convertUndecidedToDouble):
(JSC::JSObject::convertUndecidedToContiguous):
(JSC::JSObject::convertInt32ToDouble):
(JSC::JSObject::convertInt32ToArrayStorage):
(JSC::JSObject::convertDoubleToContiguous):
(JSC::JSObject::convertDoubleToArrayStorage):
(JSC::JSObject::convertContiguousToArrayStorage):
(JSC::JSObject::createInitialForValueAndSet):
(JSC::JSObject::deletePropertyByIndex):
(JSC::JSObject::getOwnPropertyNames):
(JSC::JSObject::putByIndexBeyondVectorLengthWithoutAttributes):
(JSC::JSObject::countElements):
(JSC::JSObject::ensureLengthSlow):
(JSC::JSObject::reallocateAndShrinkButterfly):
(JSC::JSObject::getEnumerableLength):

  • runtime/JSObject.h:

(JSC::JSObject::canGetIndexQuickly):
(JSC::JSObject::getIndexQuickly):
(JSC::JSObject::tryGetIndexQuickly const):
(JSC::JSObject::setIndexQuickly):
(JSC::JSObject::initializeIndex):
(JSC::JSObject::initializeIndexWithoutBarrier):
(JSC::JSObject::butterflyIndexingMaskOffset):
(JSC::JSObject::butterflyIndexingMask const):
(JSC::JSObject::setButterflyWithIndexingMask):
(JSC::JSObject::setButterfly):
(JSC::JSObject::nukeStructureAndSetButterfly):
(JSC::JSObject::JSObject):

  • runtime/RegExpMatchesArray.h:

(JSC::tryCreateUninitializedRegExpMatchesArray):

  • runtime/Structure.cpp:

(JSC::Structure::flattenDictionaryStructure):

Source/WebCore:

  • bindings/js/JSDOMConvertSequences.h:

(WebCore::Detail::NumericSequenceConverter::convertArray):
(WebCore::Detail::SequenceConverter::convertArray):

Source/WTF:

Add a clz that wraps the builtin clz intrinisics provided by
various compilers. The clz function by default assumes that
the input may be zero. On X86 this makes a difference because not
all CPUs have LZCNT and BSR has undefined behavior on zero. On ARM,
the zero check gets optimized away, regardless.

  • wtf/StdLibExtras.h:

(std::clz):

11:10 AM Changeset in webkit [225912] by sbarati@apple.com
  • 2 edits in trunk/Source/bmalloc

logVMFailure should not simulate crash on iOS
https://bugs.webkit.org/show_bug.cgi?id=180790

Reviewed by JF Bastien.

The Gigacage allocation on iOS is expected to fail in certain circumstances.
Let's not simulate a crash on failure because since this is expected behavior.

  • bmalloc/VMAllocate.h:

(bmalloc::tryVMAllocate):

11:08 AM Changeset in webkit [225911] by Chris Dumez
  • 3 edits in trunk/Source/WebKit

WebsiteDataStore::defaultDataStoreConfiguration() fails to set default value for serviceWorkerRegistrationDirectory
https://bugs.webkit.org/show_bug.cgi?id=180794
<rdar://problem/36034667>

Reviewed by Youenn Fablet.

Set the default IndexedDB and ServiceWorker database paths in WebsiteDataStore::defaultDataStoreConfiguration().
Without this, the client is forced to set the expected path.

  • UIProcess/API/Cocoa/APIWebsiteDataStoreCocoa.mm:

(API::WebsiteDataStore::defaultDataStoreConfiguration):

  • UIProcess/API/glib/APIWebsiteDataStoreGLib.cpp:

(API::WebsiteDataStore::defaultDataStoreConfiguration):

10:31 AM Changeset in webkit [225910] by Matt Lewis
  • 2 edits in trunk/LayoutTests

Updated test expectations for imported/w3c/web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/parsing.html.
https://bugs.webkit.org/show_bug.cgi?id=177322

Unreviewed test gardening.

  • platform/mac/TestExpectations:
9:39 AM Changeset in webkit [225909] by graouts@webkit.org
  • 12 edits in trunk

[Web Animations] Implement the play() and pause() methods on Animation
https://bugs.webkit.org/show_bug.cgi?id=178932
<rdar://problem/35271069>

Reviewed by Eric Carlson.

Source/WebCore:

We implement the play() and pause() methods of the Animation interface with full spec text defining
the normative behavior of those methods and code matching those steps. Playing and pausing animations
incur running a play or pause task when conditions are met, specifically here when the timeline is ready.
So we add the notion of pending tasks and provide a proper implementation of pending() which we had
introduced in an earlier patch with a constant false return value.

Note that the play() method exposes an auto-rewinding flag which we always set to true, but other specs,
namely CSS Animations, do not require the rewinding behavior, so we expose it for future use.

  • animation/WebAnimation.cpp:

(WebCore::WebAnimation::play):
(WebCore::WebAnimation::setTimeToRunPendingPlayTask):
(WebCore::WebAnimation::runPendingPlayTask):
(WebCore::WebAnimation::pause):
(WebCore::WebAnimation::setTimeToRunPendingPauseTask):
(WebCore::WebAnimation::runPendingPauseTask):
(WebCore::WebAnimation::updatePendingTasks):

  • animation/WebAnimation.h:
  • animation/WebAnimation.idl:

LayoutTests:

Rebase some WPT expectations with progressions due to exposing the play() and pause() methods.

  • TestExpectations: Temporarily mark a test as flaky as it logs an unexpected current time which

may change between runs.

  • http/wpt/web-animations/interfaces/Animation/idlharness-expected.txt:
  • http/wpt/web-animations/interfaces/Animation/startTime-expected.txt:
  • http/wpt/web-animations/interfaces/KeyframeEffect/setTarget-expected.txt:
  • http/wpt/web-animations/timing-model/animations/current-time-expected.txt:
  • http/wpt/web-animations/timing-model/animations/set-the-target-effect-of-an-animation-expected.txt:
  • http/wpt/web-animations/timing-model/animations/set-the-timeline-of-an-animation-expected.txt:
9:09 AM Changeset in webkit [225908] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: UncaughtExceptionReporter fails on early errors
https://bugs.webkit.org/show_bug.cgi?id=180776

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-12-14
Reviewed by Brian Burg.

  • UserInterface/Debug/UncaughtExceptionReporter.js:

(urlLastPathComponent):
(handleError):
(handleUncaughtException):
URLUtilities parseURL might not be available, so have a small
helper for getting a good name from a URL / filename.

(handleUncaughtExceptionRecord):
(dismissErrorSheet):
Wrap WI namespace accesses in a try/catch since WI might not be available.
Safely check global variables there were Foo as window.Foo to avoid errors
if they are not actually available.

9:08 AM Changeset in webkit [225907] by commit-queue@webkit.org
  • 5 edits
    1 copy
    1 move
    1 delete in trunk/Source/WebKit

Web Inspector: Cmd-Option-R in docked inspector causes the inspector to reload instead of the inspected page
https://bugs.webkit.org/show_bug.cgi?id=180775
<rdar://problem/35964592>

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-12-14
Reviewed by Brian Burg.

  • WebKit.xcodeproj/project.pbxproj:

Remove old files add new files.

  • PlatformMac.cmake:
  • UIProcess/mac/WKWebInspectorWKWebView.h: Removed.
  • UIProcess/mac/WKWebInspectorWKWebView.mm: Removed.

Remove unused WKWebInspectorWKWebView.

  • UIProcess/API/Cocoa/_WKRemoteWebInspectorViewController.mm:
  • UIProcess/mac/WKInspectorViewController.mm:

(-[WKInspectorViewController dealloc]):
(-[WKInspectorViewController webView]):
(-[WKInspectorViewController inspectorWKWebViewReload:]):
(-[WKInspectorViewController inspectorWKWebViewReloadFromOrigin:]):
Handle WKWebView IBActions sent to the inspector frontend WKWebView.

  • UIProcess/mac/WKInspectorWKWebView.h:
  • UIProcess/mac/WKInspectorWKWebView.mm:

(-[WKInspectorWKWebView tag]):
(-[WKInspectorWKWebView inspectorWKWebViewDelegate]):
(-[WKInspectorWKWebView setInspectorWKWebViewDelegate:]):
(-[WKInspectorWKWebView reload:]):
(-[WKInspectorWKWebView reloadFromOrigin:]):
Move WKInspectorWKWebView into its own file. Include a delegate
to handle reload IBActions that will want to override.

9:04 AM Changeset in webkit [225906] by romain.bellessort@crf.canon.fr
  • 7 edits in trunk/LayoutTests

[Readable Streams API] Remove properties tests covered by WPT
https://bugs.webkit.org/show_bug.cgi?id=180809

Reviewed by Youenn Fablet.

Removed WebKit properties/methods tests for ReadableByteStreamController,
ReadableStreamBYOBReader and ReadableStreamBYOBRequest. Indeed, these
tests are also present in WPT streams/readable-byte-streams/properties.js.

  • streams/readable-byte-stream-controller-expected.txt: Updated expectations.
  • streams/readable-byte-stream-controller.js: Remove ReadableByteStreamController properties test.
  • streams/readable-stream-byob-reader-expected.txt: Updated expectations.
  • streams/readable-stream-byob-reader.js: Remove ReadableStreamBYOBReader properties test.
  • streams/readable-stream-byob-request-expected.txt: Updated expectations.
  • streams/readable-stream-byob-request.js: Remove ReadableStreamBYOBRequest properties test.
9:03 AM Changeset in webkit [225905] by ddkilzer@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

REGRESSION (r225799/r225887): Remove duplicate entries for JSCPoisonedPtr.h in Xcode project

Fixes the following warning during builds:

Warning: Multiple build commands for output file WebKitBuild/Release/JavaScriptCore.framework/Versions/A/PrivateHeaders/JSCPoisonedPtr.h

entries for JSCPoisonedPtr.h.

8:13 AM Changeset in webkit [225904] by Jonathan Bedard
  • 2 edits in trunk/Tools

webkitpy: Better name-version mapping (Follow-up fix)
https://bugs.webkit.org/show_bug.cgi?id=179621
<rdar://problem/35589585>

Unreviewed infrastructure fix.

r225856 caused some undesired logging on Linux and Windows.

  • Scripts/webkitpy/port/mac.py:

(MacPort.init): Use most recent OS release if not on a Mac.
(MacPort.default_baseline_search_path): Make platform explicit.
(MacPort.configuration_specifier_macros): Ditto.

7:36 AM Changeset in webkit [225903] by ddkilzer@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

REGRESSION (r225887): Build broke due to missing includes in InferredValue.h
<https://bugs.webkit.org/show_bug.cgi?id=180738>

  • runtime/InferredValue.h: Attempt to fix build by adding

missing #include statements.

6:37 AM Changeset in webkit [225902] by Carlos Garcia Campos
  • 7 edits
    1 add
    1 delete in trunk

WebDriver: add a common way to run tests with pytest
https://bugs.webkit.org/show_bug.cgi?id=180800

Reviewed by Carlos Alberto Lopez Perez.

Tools:

We currently use pytestrunner from wpt for w3c tests and our own code for selenium tests. Using the same code
for both would simplify everything, but also allows us to have a custom results recorder to support other test
expectations like TIMEOUT. The code to run selenium tests with pytest has been moved to a new file
pytest_runner.py and made generic to be used also for w3c tests.

  • Scripts/webkitpy/webdriver_tests/pytest_runner.py: Added.

(TemporaryDirectory):
(TemporaryDirectory.enter):
(TemporaryDirectory.exit):
(CollectRecorder):
(CollectRecorder.init):
(CollectRecorder.pytest_collectreport):
(HarnessResultRecorder):
(HarnessResultRecorder.init):
(HarnessResultRecorder.pytest_collectreport):
(SubtestResultRecorder):
(SubtestResultRecorder.init):
(SubtestResultRecorder.pytest_runtest_logreport):
(SubtestResultRecorder._was_timeout):
(SubtestResultRecorder.record_pass):
(SubtestResultRecorder.record_fail):
(SubtestResultRecorder.record_error):
(SubtestResultRecorder.record_skip):
(SubtestResultRecorder.record):
(collect):
(run):

  • Scripts/webkitpy/webdriver_tests/webdriver_selenium_executor.py:

(do_delayed_imports): Import pytest_runner here to avoid cycles.
(WebDriverSeleniumExecutor.init): Save the driver parameter as args member and call do_delayed_imports() if
needed.
(WebDriverSeleniumExecutor.collect): Use pytest_runner.
(WebDriverSeleniumExecutor.run): Ditto.

  • Scripts/webkitpy/webdriver_tests/webdriver_test_runner.py:

(WebDriverTestRunner.print_results): Handle all possible tests results.
(WebDriverTestRunner.print_results.report): Helper to dump test results.

  • Scripts/webkitpy/webdriver_tests/webdriver_test_runner_selenium.py:

(WebDriverTestRunnerSelenium.run):

  • Scripts/webkitpy/webdriver_tests/webdriver_test_runner_w3c.py:

(WebDriverTestRunnerW3C.init): Do not set PYTEST_TIMEOUT env var.
(WebDriverTestRunnerW3C._is_test): Fix check for support files.
(WebDriverTestRunnerW3C.run): Pass the timeout as parameter to WebDriverW3CExecutor.run().

  • Scripts/webkitpy/webdriver_tests/webdriver_w3c_executor.py:

(do_delayed_imports): Import pytest_runner here to avoid cycles.
(WebDriverW3CExecutor.init): Call do_delayed_imports() if needed.
(WebDriverW3CExecutor.run): Use pytest_runner.

WebDriverTests:

Remove conftest.py since pytest_timeout plugin is now always loaded from the command line.

  • imported/w3c/conftest.py: Removed.
6:08 AM Changeset in webkit [225901] by tpopela@redhat.com
  • 2 edits
    1 add in trunk

Build should fail early is needed Perl modules are not installed
https://bugs.webkit.org/show_bug.cgi?id=180137

Reviewed by Michael Catanzaro.

Don't finish the configure successfully if the required Perl modules
are not installed. Start to require modules that are needed for
WPE/GTK+ ports.

  • Source/cmake/FindPerlModules.cmake: Copied from

https://github.com/KDE/kdelibs4support/blob/master/cmake/FindPerlModules.cmake
and made it WebKit style compliant.

  • Source/cmake/WebKitCommon.cmake:
5:54 AM WebKitGTK/Gardening/Calendar edited by magomez@igalia.com
(diff)
5:53 AM WebKitGTK/Gardening/Calendar edited by magomez@igalia.com
(diff)
5:28 AM Changeset in webkit [225900] by magomez@igalia.com
  • 7 edits in trunk/LayoutTests

[GTK] Gardening bug after r225898
https://bugs.webkit.org/show_bug.cgi?id=180807

Unreviewed GTK+ test gardening after r225898. Updated test expectations and rebaselined
some tests.

  • platform/gtk/TestExpectations:
  • platform/gtk/mathml/opentype/horizontal-expected.png:
  • platform/gtk/mathml/opentype/horizontal-expected.txt:
  • platform/gtk/mathml/opentype/horizontal-munderover-expected.txt:
  • platform/gtk/mathml/presentation/bug159513-expected.png:
  • platform/gtk/mathml/presentation/bug159513-expected.txt:
3:43 AM Changeset in webkit [225899] by commit-queue@webkit.org
  • 6 edits
    11 adds in trunk/LayoutTests

[EME] Add layout test for InitData and InitDataType in CENC encrypted event
https://bugs.webkit.org/show_bug.cgi?id=180430

Patch by Yacine Bandou <yacine.bandou_ext@softathome.com> on 2017-12-14
Reviewed by Xabier Rodriguez-Calvar.

This commit adds new layout tests in order to test the reception of the encrypted CENC
event with an expected initData and initDataType fields.

  • media/content/encrypted/VideoClearKeyCenc.mp4: Added.

This is a simple encrypted video file used for regular playback.
It has been encrypted with BENTO4. https://www.bento4.com/

  • media/content/encrypted/segments/VideoClearKeyCenc-seg-0.mp4: Added.

This is a simple encrypted video fragment used in MSE playback.
It has been fragmented and encrypted with BENTO4. https://www.bento4.com/

  • media/encrypted-media/clearKey/clearKey-encrypted-cenc-event-expected.txt: Added.
  • media/encrypted-media/clearKey/clearKey-encrypted-cenc-event-mse-expected.txt: Added.
  • media/encrypted-media/clearKey/clearKey-encrypted-cenc-event-mse.html: Added.

This is a test with MSE.

  • media/encrypted-media/clearKey/clearKey-encrypted-cenc-event.html: Added.

This is a test with a regular playback.

  • media/encrypted-media/medias-enc.js: Added.

This JavaScrit file lists the encrypted media wich will be used in encrypted-media tests.
It gives all necessary informations about the encrypted media: path of the file or
the path of the segments in MSE case, mimeType, initDataType and the encryption keys.

  • media/media-source/media-source-loader-simple.js: Added.

This JavaScript file provides a simple MSE implementation, reads the segments of the media and appends them
in the appropriate SourceBuffer.

  • platform/gtk/TestExpectations:
  • platform/mac-elcapitan/TestExpectations:
  • platform/mac-wk2/TestExpectations:
  • platform/mac/TestExpectations:
  • platform/wpe/TestExpectations:
1:49 AM Changeset in webkit [225898] by Dewei Zhu
  • 7 edits
    2 adds in trunk/Websites/perf.webkit.org

Add a test freshness page.
https://bugs.webkit.org/show_bug.cgi?id=180126

Reviewed by Ryosuke Niwa.

Added a page to show freshness of a test.
The test freshness page reports on the same set of tests as the one shown in the summary page.
Use a logistic function to evaluate the freshness of the data points.
This function has the desired property which increase dramatically when it close to the center of the graph.
'acceptableLastDataPointDurationInHour' configs the center of the graph.

  • public/include/manifest-generator.php:
  • public/v3/components/freshness-indicator.js: Added.

(FreshnessIndicator): A cell of the test freshness table, color will transit from green to red.
(FreshnessIndicator.prototype.update): Update the the data point information and triggers
the cell to re-render if anything changes.
(FreshnessIndicator.prototype._renderIndicator): Re-render the indicator.
(FreshnessIndicator.prototype.render): Render the box color base on a logistic function.
(FreshnessIndicator.prototype._createIndicator):
(FreshnessIndicator.htmlTemplate):
(FreshnessIndicator.cssTemplate):

  • public/v3/index.html:
  • public/v3/main.js: Added test freshness page.

(main):

  • public/v3/models/build-request.js: Refactored waitingTime function to make it reusable.

(BuildRequest.formatTimeInterval): Format time interval in million seconds to more user friendly text.
(BuildRequest.prototype.waitingTime):

  • public/v3/pages/test-freshness-page.js: Added.

(TestFreshnessPage):
(TestFreshnessPage.prototype.name):
(TestFreshnessPage.prototype._loadConfig): Load config from summary page configurations.
(TestFreshnessPage.prototype.open):
(TestFreshnessPage.prototype._fetchTestResults):
(TestFreshnessPage.prototype.render):
(TestFreshnessPage.prototype._renderTable):
(TestFreshnessPage.prototype._isValidPlatformMetricCombination): Return whether a platform
and metric combination is valid.
(TestFreshnessPage.prototype._constructTableCell):
(TestFreshnessPage.cssTemplate):
(TestFreshnessPage.prototype.routeName):

  • server-tests/api-manifest-tests.js: Added 'warningHourBaseline' so that we can config the

parameter of logistic funciton.

  • unit-tests/build-request-tests.js: Added unit tests for formatTimeInterval.
1:39 AM Changeset in webkit [225897] by commit-queue@webkit.org
  • 198 edits in trunk

Make GraphicsLayer::dumpProperties dump m_offsetFromRenderer
https://bugs.webkit.org/show_bug.cgi?id=180473

Source/WebCore:

Patch by Frederic Wang <fwang@igalia.com> on 2017-12-14
Reviewed by Antonio Gomes.

No new tests, this is just a new debug info.

  • platform/graphics/GraphicsLayer.cpp:

(WebCore::GraphicsLayer::dumpProperties const): Dump the offset from renderer if nonzero.

LayoutTests:

Update test expectations to include the "offset from renderer" values. Existing tests insert
the output of layerTreeAsText into some divs which may cause the corresponding GraphicsLayers
to become slightly taller. We thus make the necessary adjustments.

Patch by Frederic Wang <fwang@igalia.com> on 2017-12-14
Reviewed by Antonio Gomes.

  • compositing/backing/no-backing-for-clip-expected.txt:
  • compositing/backing/no-backing-for-clip-overlap-expected.txt:
  • compositing/backing/transform-transition-from-outside-view-expected.txt:
  • compositing/bounds-in-flipped-writing-mode-expected.txt:
  • compositing/columns/composited-in-paginated-rl-expected.txt:
  • compositing/columns/composited-lr-paginated-repaint-expected.txt:
  • compositing/columns/composited-rl-paginated-repaint-expected.txt:
  • compositing/contents-format/subpixel-antialiased-nested-layer-expected.txt:
  • compositing/contents-format/subpixel-antialiased-text-configs-antialiasing-style-expected.txt:
  • compositing/contents-format/subpixel-antialiased-text-configs-expected.txt:
  • compositing/contents-format/subpixel-antialiased-text-images-expected.txt:
  • compositing/contents-format/subpixel-antialiased-text-traversal-expected.txt:
  • compositing/contents-format/subpixel-antialiased-text-visibility-expected.txt:
  • compositing/contents-opaque/overflow-hidden-child-layers-expected.txt:
  • compositing/filters/sw-layer-overlaps-hw-shadow-expected.txt:
  • compositing/filters/sw-nested-shadow-overlaps-hw-nested-shadow-expected.txt:
  • compositing/filters/sw-shadow-overlaps-hw-shadow-expected.txt:
  • compositing/geometry/bounds-ignores-hidden-composited-descendant-expected.txt:
  • compositing/geometry/bounds-ignores-hidden-dynamic-expected.txt:
  • compositing/geometry/bounds-ignores-hidden-expected.txt:
  • compositing/geometry/clip-expected.txt:
  • compositing/geometry/clip-inside-expected.txt:
  • compositing/geometry/fixed-position-flipped-writing-mode-expected.txt:
  • compositing/geometry/flipped-writing-mode-expected.txt:
  • compositing/geometry/foreground-layer-expected.txt:
  • compositing/geometry/limit-layer-bounds-clipping-ancestor-expected.txt:
  • compositing/geometry/limit-layer-bounds-fixed-expected.txt:
  • compositing/geometry/limit-layer-bounds-fixed-positioned-expected.txt:
  • compositing/geometry/limit-layer-bounds-opacity-transition-expected.txt:
  • compositing/geometry/limit-layer-bounds-positioned-expected.txt:
  • compositing/geometry/limit-layer-bounds-positioned-transition-expected.txt:
  • compositing/geometry/limit-layer-bounds-transformed-expected.txt:
  • compositing/iframes/composited-parent-iframe-expected.txt:
  • compositing/iframes/connect-compositing-iframe-delayed-expected.txt:
  • compositing/iframes/connect-compositing-iframe-expected.txt:
  • compositing/iframes/connect-compositing-iframe2-expected.txt:
  • compositing/iframes/connect-compositing-iframe3-expected.txt:
  • compositing/iframes/enter-compositing-iframe-expected.txt:
  • compositing/iframes/iframe-resize-expected.txt:
  • compositing/iframes/overlapped-iframe-expected.txt:
  • compositing/iframes/page-cache-layer-tree-expected.txt:
  • compositing/iframes/scrolling-iframe-expected.txt:
  • compositing/images/clip-on-directly-composited-image-expected.txt:
  • compositing/ios/overflow-scroll-touch-tiles-expected.txt:
  • compositing/layer-creation/fixed-overlap-extent-expected.txt:
  • compositing/layer-creation/fixed-overlap-extent-rtl-expected.txt:
  • compositing/layer-creation/fixed-position-under-transform-expected.txt:
  • compositing/layer-creation/mismatched-rotated-transform-animation-overlap-expected.txt:
  • compositing/layer-creation/mismatched-rotated-transform-transition-overlap-expected.txt:
  • compositing/layer-creation/mismatched-transform-transition-overlap-expected.txt:
  • compositing/layer-creation/multiple-keyframes-animation-overlap-expected.txt:
  • compositing/layer-creation/overflow-scroll-overlap-expected.txt:
  • compositing/layer-creation/overlap-animation-clipping-expected.txt:
  • compositing/layer-creation/overlap-animation-expected.txt:
  • compositing/layer-creation/overlap-child-layer-expected.txt:
  • compositing/layer-creation/overlap-transformed-layer-expected.txt:
  • compositing/layer-creation/overlap-transforms-expected.txt:
  • compositing/layer-creation/rotate3d-overlap-expected.txt:
  • compositing/layer-creation/scale-rotation-animation-overlap-expected.txt:
  • compositing/layer-creation/scale-rotation-transition-overlap-expected.txt:
  • compositing/layer-creation/stacking-context-overlap-nested-expected.txt:
  • compositing/layer-creation/translate-animation-overlap-expected.txt:
  • compositing/layer-creation/translate-scale-animation-overlap-expected.txt:
  • compositing/layer-creation/translate-scale-transition-overlap-expected.txt:
  • compositing/layer-creation/translate-transition-overlap-expected.txt:
  • compositing/layer-creation/will-change-layer-creation-expected.txt:
  • compositing/overflow/clip-descendents-expected.txt:
  • compositing/overflow/overflow-scrollbar-layer-positions-expected.txt:
  • compositing/repaint/fixed-background-scroll-expected.txt:
  • compositing/repaint/iframes/composited-iframe-with-fixed-background-doc-repaint-expected.txt:
  • compositing/repaint/iframes/compositing-iframe-scroll-repaint-expected.txt:
  • compositing/repaint/iframes/compositing-iframe-with-fixed-background-doc-repaint-expected.txt:
  • compositing/repaint/repaint-on-layer-grouping-change-expected.txt:
  • compositing/rtl/rtl-absolute-overflow-expected.txt:
  • compositing/rtl/rtl-absolute-overflow-scrolled-expected.txt:
  • compositing/rtl/rtl-scrolling-with-transformed-descendants-expected.txt:
  • compositing/scrolling/touch-scroll-to-clip-expected.txt:
  • compositing/tiling/tiled-mask-inwindow-expected.txt:
  • compositing/tiling/tiled-reflection-inwindow-expected.txt:
  • compositing/tiling/transform-origin-tiled-expected.txt:
  • compositing/visible-rect/coverage-clipped-expected.txt:
  • compositing/visible-rect/coverage-scrolling-expected.txt:
  • fast/scrolling/ios/overflow-scroll-touch-expected.txt:
  • fast/scrolling/ios/subpixel-overflow-scrolling-with-ancestor-expected.txt:
  • platform/gtk/compositing/geometry/composited-in-columns-expected.txt:
  • platform/gtk/compositing/iframes/invisible-nested-iframe-show-expected.txt:
  • platform/gtk/compositing/layer-creation/overlap-animation-container-expected.txt:
  • platform/gtk/compositing/layer-creation/overlap-animation-expected.txt:
  • platform/gtk/compositing/layer-creation/will-change-layer-creation-expected.txt:
  • platform/gtk/compositing/overflow/composited-scrolling-creates-a-stacking-container-expected.txt:
  • platform/gtk/compositing/overflow/composited-scrolling-paint-phases-expected.txt:
  • platform/ios-wk2/compositing/backing/no-backing-for-clip-expected.txt:
  • platform/ios-wk2/compositing/backing/no-backing-for-clip-overlap-expected.txt:
  • platform/ios-wk2/compositing/columns/composited-in-paginated-rl-expected.txt:
  • platform/ios-wk2/compositing/columns/composited-lr-paginated-repaint-expected.txt:
  • platform/ios-wk2/compositing/columns/composited-rl-paginated-repaint-expected.txt:
  • platform/ios-wk2/compositing/geometry/bounds-ignores-hidden-composited-descendant-expected.txt:
  • platform/ios-wk2/compositing/geometry/composited-in-columns-expected.txt:
  • platform/ios-wk2/compositing/geometry/limit-layer-bounds-fixed-expected.txt:
  • platform/ios-wk2/compositing/geometry/limit-layer-bounds-fixed-positioned-expected.txt:
  • platform/ios-wk2/compositing/iframes/composited-parent-iframe-expected.txt:
  • platform/ios-wk2/compositing/iframes/connect-compositing-iframe-delayed-expected.txt:
  • platform/ios-wk2/compositing/iframes/connect-compositing-iframe-expected.txt:
  • platform/ios-wk2/compositing/iframes/connect-compositing-iframe2-expected.txt:
  • platform/ios-wk2/compositing/iframes/connect-compositing-iframe3-expected.txt:
  • platform/ios-wk2/compositing/iframes/enter-compositing-iframe-expected.txt:
  • platform/ios-wk2/compositing/iframes/iframe-resize-expected.txt:
  • platform/ios-wk2/compositing/iframes/leave-compositing-iframe-expected.txt:
  • platform/ios-wk2/compositing/iframes/overlapped-iframe-expected.txt:
  • platform/ios-wk2/compositing/iframes/page-cache-layer-tree-expected.txt:
  • platform/ios-wk2/compositing/iframes/scrolling-iframe-expected.txt:
  • platform/ios-wk2/compositing/layer-creation/fixed-position-under-transform-expected.txt:
  • platform/ios-wk2/compositing/repaint/fixed-background-scroll-expected.txt:
  • platform/ios-wk2/compositing/rtl/rtl-absolute-overflow-expected.txt:
  • platform/ios-wk2/compositing/rtl/rtl-absolute-overflow-scrolled-expected.txt:
  • platform/ios-wk2/compositing/rtl/rtl-fixed-overflow-expected.txt:
  • platform/ios-wk2/compositing/rtl/rtl-iframe-absolute-overflow-expected.txt:
  • platform/ios-wk2/compositing/scrolling/touch-scroll-to-clip-expected.txt:
  • platform/ios-wk2/compositing/tiling/backface-preserve-3d-tiled-expected.txt:
  • platform/ios-wk2/compositing/tiling/rotated-tiled-clamped-expected.txt:
  • platform/ios-wk2/compositing/tiling/rotated-tiled-preserve3d-clamped-expected.txt:
  • platform/ios-wk2/compositing/tiling/tiled-mask-inwindow-expected.txt:
  • platform/ios-wk2/compositing/tiling/tiled-reflection-inwindow-expected.txt:
  • platform/ios-wk2/compositing/tiling/transform-origin-tiled-expected.txt:
  • platform/ios-wk2/compositing/visibility/visibility-image-layers-dynamic-expected.txt:
  • platform/ios-wk2/compositing/visible-rect/2d-transformed-expected.txt:
  • platform/ios-wk2/compositing/visible-rect/3d-transformed-expected.txt:
  • platform/ios-wk2/compositing/visible-rect/clipped-visible-rect-expected.txt:
  • platform/ios-wk2/compositing/visible-rect/coverage-clipped-expected.txt:
  • platform/ios-wk2/compositing/visible-rect/coverage-scrolling-expected.txt:
  • platform/ios-wk2/compositing/visible-rect/flipped-preserve-3d-expected.txt:
  • platform/ios-wk2/compositing/visible-rect/iframe-and-layers-expected.txt:
  • platform/ios-wk2/compositing/visible-rect/nested-transform-expected.txt:
  • platform/ios/compositing/contents-format/subpixel-antialiased-nested-layer-expected.txt:
  • platform/ios/compositing/contents-format/subpixel-antialiased-text-traversal-expected.txt:
  • platform/ios/compositing/filters/sw-layer-overlaps-hw-shadow-expected.txt:
  • platform/ios/compositing/geometry/fixed-position-flipped-writing-mode-expected.txt:
  • platform/ios/compositing/geometry/limit-layer-bounds-clipping-ancestor-expected.txt:
  • platform/ios/compositing/iframes/invisible-nested-iframe-show-expected.txt:
  • platform/ios/compositing/images/clip-on-directly-composited-image-expected.txt:
  • platform/ios/compositing/layer-creation/overlap-animation-clipping-expected.txt:
  • platform/ios/compositing/layer-creation/overlap-animation-container-expected.txt:
  • platform/ios/compositing/layer-creation/scale-rotation-animation-overlap-expected.txt:
  • platform/ios/compositing/overflow/clipping-behaviour-change-is-not-propagated-to-descendants-expected.txt:
  • platform/ios/compositing/overflow/composited-scrolling-creates-a-stacking-container-expected.txt:
  • platform/ios/compositing/rtl/rtl-fixed-overflow-scrolled-expected.txt:
  • platform/ios/compositing/rtl/rtl-scrolling-with-transformed-descendants-expected.txt:
  • platform/ios/compositing/visible-rect/3d-transform-style-expected.txt:
  • platform/ios/compositing/visible-rect/animated-expected.txt:
  • platform/ios/compositing/visible-rect/animated-from-none-expected.txt:
  • platform/ios/fast/scrolling/ios/overflow-scrolling-ancestor-clip-expected.txt:
  • platform/ios/fast/scrolling/ios/overflow-scrolling-ancestor-clip-size-expected.txt:
  • platform/ios/fast/scrolling/ios/textarea-scroll-touch-expected.txt:
  • platform/ios/media/video-play-glyph-composited-outside-overflow-scrolling-touch-container-expected.txt:
  • platform/mac-elcapitan/compositing/contents-opaque/control-layer-expected.txt:
  • platform/mac-elcapitan/compositing/repaint/iframes/composited-iframe-with-fixed-background-doc-repaint-expected.txt:
  • platform/mac-sierra-wk1/compositing/repaint/iframes/composited-iframe-with-fixed-background-doc-repaint-expected.txt:
  • platform/mac-wk1/compositing/repaint/iframes/compositing-iframe-scroll-repaint-expected.txt:
  • platform/mac-wk1/compositing/repaint/iframes/compositing-iframe-with-fixed-background-doc-repaint-expected.txt:
  • platform/mac-wk1/compositing/tiling/tiled-mask-inwindow-expected.txt:
  • platform/mac-wk1/compositing/tiling/tiled-reflection-inwindow-expected.txt:
  • platform/mac-wk1/compositing/tiling/transform-origin-tiled-expected.txt:
  • platform/mac-wk2/compositing/rtl/rtl-absolute-overflow-expected.txt:
  • platform/mac-wk2/compositing/rtl/rtl-absolute-overflow-scrolled-expected.txt:
  • platform/mac-wk2/compositing/rtl/rtl-fixed-overflow-expected.txt:
  • platform/mac-wk2/compositing/tiling/rotated-tiled-clamped-expected.txt:
  • platform/mac-wk2/compositing/tiling/rotated-tiled-preserve3d-clamped-expected.txt:
  • platform/mac/compositing/contents-format/subpixel-antialiased-text-configs-antialiasing-style-expected.txt:
  • platform/mac/compositing/contents-format/subpixel-antialiased-text-configs-expected.txt:
  • platform/mac/compositing/contents-format/subpixel-antialiased-text-images-expected.txt:
  • platform/mac/compositing/contents-format/subpixel-antialiased-text-traversal-expected.txt:
  • platform/mac/compositing/contents-format/subpixel-antialiased-text-visibility-expected.txt:
  • platform/mac/compositing/contents-opaque/control-layer-expected.txt:
  • platform/mac/compositing/geometry/composited-in-columns-expected.txt:
  • platform/mac/compositing/iframes/invisible-nested-iframe-show-expected.txt:
  • platform/mac/compositing/layer-creation/overlap-animation-container-expected.txt:
  • platform/mac/compositing/overflow/clipping-behaviour-change-is-not-propagated-to-descendants-expected.txt:
  • platform/mac/compositing/overflow/composited-scrolling-creates-a-stacking-container-expected.txt:
  • platform/mac/compositing/rtl/rtl-fixed-overflow-scrolled-expected.txt:
  • platform/mac/compositing/tiling/backface-preserve-3d-tiled-expected.txt:
  • platform/mac/compositing/tiling/rotated-tiled-clamped-expected.txt:
  • platform/mac/compositing/tiling/rotated-tiled-preserve3d-clamped-expected.txt:
  • platform/mac/compositing/visibility/visibility-image-layers-dynamic-expected.txt:
  • platform/mac/compositing/visible-rect/2d-transformed-expected.txt:
  • platform/mac/compositing/visible-rect/3d-transform-style-expected.txt:
  • platform/mac/compositing/visible-rect/3d-transformed-expected.txt:
  • platform/mac/compositing/visible-rect/animated-expected.txt:
  • platform/mac/compositing/visible-rect/animated-from-none-expected.txt:
  • platform/mac/compositing/visible-rect/clipped-visible-rect-expected.txt:
  • platform/mac/compositing/visible-rect/flipped-preserve-3d-expected.txt:
  • platform/mac/compositing/visible-rect/iframe-and-layers-expected.txt:
  • platform/mac/compositing/visible-rect/nested-transform-expected.txt:
  • tiled-drawing/scrolling/fixed/four-bars-zoomed-expected.txt:
  • tiled-drawing/scrolling/frames/fixed-inside-frame-expected.txt:
  • tiled-drawing/tile-coverage-iframe-to-zero-coverage-expected.txt:
12:17 AM Changeset in webkit [225896] by Yusuke Suzuki
  • 4 edits in trunk/Source

REGRESSION(r225769): Build errors with constexpr std::tie on older gcc
https://bugs.webkit.org/show_bug.cgi?id=180692

Reviewed by Carlos Garcia Campos.

Source/WebCore:

  • platform/graphics/FontSelectionAlgorithm.h:

(WebCore::FontSelectionRange::operator== const):
(WebCore::FontSelectionRequest::tied const):
(WebCore::FontSelectionCapabilities::tied const):
(WebCore::FontSelectionSpecifiedCapabilities:: const):

Source/WTF:

Due to libstdc++'s bug[1], std::tie is not annotated with constexpr in libstdc++ 5.
This patch adds WTF::tie for a work around. Since we do not want to
include <tuple> in StdLibExtras.h, we define this function for all
the compilers.

[1]: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65978

  • wtf/StdLibExtras.h:
Note: See TracTimeline for information about the timeline view.