Timeline



Sep 8, 2018:

10:02 PM Changeset in webkit [235836] by Simon Fraser
  • 2 edits in trunk/Tools

accessibility/notification-listeners.html abandons a document
https://bugs.webkit.org/show_bug.cgi?id=188724

Reviewed by Darin Adler.

AccessibilityControllerMac leaked m_globalNotificationHandler, which leaks a JSValueProtect'd function,
which leaks a Document. Fix by using adoptNS().

  • WebKitTestRunner/InjectedBundle/mac/AccessibilityControllerMac.mm:

(WTR::AccessibilityController::addNotificationListener):

9:24 PM Changeset in webkit [235835] by wenson_hsieh@apple.com
  • 18 edits in trunk/Tools

[Cocoa] Use more bridging casts in TestWebKitAPI
https://bugs.webkit.org/show_bug.cgi?id=189457

Reviewed by Darin Adler.

Adds some bridging casts to TestWebKitAPI, when converting betweeen several common types of objects, including:
CFStringRef <=> NSString
CFURLRef <=> NSURL
WKPreferences <=> WKPreferencesRef
CFDataRef <=> NSData

  • TestWebKitAPI/Tests/WebCore/cocoa/SharedBuffer.mm:

(TestWebKitAPI::TEST_F):

  • TestWebKitAPI/Tests/WebKitCocoa/CopyHTML.mm:

(readHTMLFromPasteboard):
(createWebViewWithCustomPasteboardDataEnabled):

  • TestWebKitAPI/Tests/WebKitCocoa/CopyURL.mm:

(createWebViewWithCustomPasteboardDataEnabled):

  • TestWebKitAPI/Tests/WebKitCocoa/DragAndDropTests.mm:

(TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/PasteHTML.mm:

(writeHTMLToPasteboard):
(createWebViewWithCustomPasteboardDataSetting):

  • TestWebKitAPI/Tests/WebKitCocoa/PasteImage.mm:

(TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/PasteMixedContent.mm:

(TestWebKitAPI::setUpWebView):
(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/PasteRTFD.mm:

(writeRTFToPasteboard):
(writeRTFDToPasteboard):
(createWebViewWithCustomPasteboardDataEnabled):
(TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/PasteWebArchive.mm:

(createWebViewWithCustomPasteboardDataEnabled):

  • TestWebKitAPI/Tests/WebKitCocoa/RestoreSessionStateWithoutNavigation.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/WKAttachmentTests.mm:

(webViewForTestingAttachments):

  • TestWebKitAPI/Tests/WebKitLegacy/mac/AccessingPastedImage.mm:

(writeRTFDToPasteboard):
(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/ios/ActionSheetTests.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/ios/DragAndDropTestsIOS.mm:

(checkRichTextTypePrecedesPlainTextType):
(TestWebKitAPI::TEST):
(TestWebKitAPI::setUpTestWebViewForDataTransferItems):

  • TestWebKitAPI/Tests/ios/UIPasteboardTests.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/mac/PlatformUtilitiesMac.mm:

(TestWebKitAPI::Util::createInjectedBundlePath):
(TestWebKitAPI::Util::createURLForResource):
(TestWebKitAPI::Util::URLForNonExistentResource):
(TestWebKitAPI::Util::MIMETypeForWKURLResponse):

  • TestWebKitAPI/mac/WebKitAgnosticTest.mm:

(TestWebKitAPI::WebKitAgnosticTest::loadURL):

9:16 PM Abandoned documents edited by Simon Fraser
(diff)
8:25 PM Changeset in webkit [235834] by wenson_hsieh@apple.com
  • 3 edits
    2 adds in trunk

REGRESSION (r235153): [iOS] Can't move selection start grabber when selecting text in a subframe
https://bugs.webkit.org/show_bug.cgi?id=189454
<rdar://problem/44265956>

Reviewed by Darin Adler.

Source/WebKit:

rangeForPointInRootViewCoordinates is responsible for taking a user gesture location representing the location
of the selection start or end handle (given in root view coordinates) and computing a Range representing an
updated selection. r235153 introduced a mechanism here to clamp the y offset of this user gesture location to
a max or min value determined by computing the bounds of the other selection handle, which more closely matches
platform behavior elsewhere in iOS.

However, this clamping logic would cause the user gesture location in root view coordinates to incorrectly clamp
in cases where the user selects text within an iframe that is offset from the top of the main document, since it
compares content coordinates (i.e. the caret bounds) against root view coordinates (i.e. the gesture location).
This makes it impossible to use selection handles to select text in some iframes.

We fix this by first converting the gesture location to document coordinates, and then clamping.

Test: editing/selection/ios/selection-handle-clamping-in-iframe.html

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::rangeForPointInRootViewCoordinates):

Also reuse selectionStart and selectionEnd when computing absolute caret bounds, instead of creating new
VisiblePositions.

LayoutTests:

Adds a test that selects a word inside an iframe, moves the selection start handle down past the selection end,
and then moves the selection end handle up above the selection start. The test verifies that the entire word
remains selected.

  • editing/selection/ios/selection-handle-clamping-in-iframe-expected.txt: Added.
  • editing/selection/ios/selection-handle-clamping-in-iframe.html: Added.
7:03 PM Changeset in webkit [235833] by aestes@apple.com
  • 15 edits
    2 copies
    1 move
    2 adds
    1 delete in trunk

[Apple Pay] Dispatch a paymentmethodchange event when the payment method changes
https://bugs.webkit.org/show_bug.cgi?id=189386

Reviewed by Darin Adler.

Source/WebCore:

Implemented the "payment method changed" algorithm as defined in the Payment Request API W3C
Editor's Draft of 05 September 2018.

Payment Request says that the user agent MAY run this algorithm when the payment method
changes. In our case, we only wish to dispatch this event when a listener is registered for
it. Since PassKit requires merchants to respond to this event by calling updateWith() within
30 seconds, firing the event unconditionally would break compatibility with existing
clients.

For merchants that do not listen for this event, they can continue to use modifiers to
update details based on the selected payment method type.

Also made PaymentMethodChangeEvent.methodDetails a cached attribute in a way that avoids
potential reference cycles from holding a JSC::Strong in the wrapped object.

Test: http/tests/ssl/applepay/ApplePayPaymentMethodChangeEvent.https.html

  • CMakeLists.txt:
  • DerivedSources.make:
  • Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp:

(WebCore::toJSDictionary):
(WebCore::ApplePayPaymentHandler::didAuthorizePayment):
(WebCore::ApplePayPaymentHandler::didSelectPaymentMethod):

  • Modules/paymentrequest/PaymentMethodChangeEvent.cpp:

(WebCore::PaymentMethodChangeEvent::PaymentMethodChangeEvent):

  • Modules/paymentrequest/PaymentMethodChangeEvent.h:
  • Modules/paymentrequest/PaymentMethodChangeEvent.idl:
  • Modules/paymentrequest/PaymentMethodChangeEventInit.idl: Removed.
  • Modules/paymentrequest/PaymentRequest.cpp:

(WebCore::PaymentRequest::paymentMethodChanged):

  • Modules/paymentrequest/PaymentRequest.h:
  • Modules/paymentrequest/PaymentRequestUpdateEvent.cpp:

(WebCore::PaymentRequestUpdateEvent::updateWith):

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/JSPaymentMethodChangeEventCustom.cpp: Added.

(WebCore::JSPaymentMethodChangeEvent::methodDetails const):
(WebCore::JSPaymentMethodChangeEvent::visitAdditionalChildren):

LayoutTests:

  • fast/dom/reference-cycle-leaks-expected.txt:
  • fast/dom/reference-cycle-leaks.html:
  • http/tests/ssl/applepay/ApplePayPaymentMethodChangeEvent.https-expected.txt: Added.
  • http/tests/ssl/applepay/ApplePayPaymentMethodChangeEvent.https.html: Added.
  • platform/ios-wk2/fast/dom/reference-cycle-leaks-expected.txt: Added.
  • platform/mac-wk2/fast/dom/reference-cycle-leaks-expected.txt: Added.
2:29 PM Changeset in webkit [235832] by Darin Adler
  • 22 edits in trunk/Tools

[Cocoa] Turn on ARC for WebKitTestRunner
https://bugs.webkit.org/show_bug.cgi?id=189228

Reviewed by Sam Weinig.

  • TestRunnerShared/EventSerialization/mac/EventSerializerMac.mm:

(+[EventSerializer dictionaryForEvent:relativeToTime:]): Removed autorelease.

  • TestRunnerShared/cocoa/LayoutTestSpellChecker.mm:

(-[LayoutTestSpellChecker setResultsFromJSObject:inContext:]): Removed autorelease.

  • WebKitTestRunner/Configurations/Base.xcconfig: Added CLANG_ENABLE_OBJC_ARC.
  • WebKitTestRunner/InjectedBundle/ios/AccessibilityControllerIOS.mm:

(WTR::AccessibilityController::accessibleElementById): Use a bridge cast.

  • WebKitTestRunner/InjectedBundle/ios/AccessibilityTextMarkerIOS.mm:

(WTR::AccessibilityTextMarker::isEqual): Ditto.

  • WebKitTestRunner/InjectedBundle/ios/AccessibilityUIElementIOS.mm:

(WTR::AccessibilityUIElement::AccessibilityUIElement): Removed retain.
(WTR::AccessibilityUIElement::~AccessibilityUIElement): Removed release.
(WTR::AccessibilityUIElement::removeNotificationListener): Removed release.
(WTR::AccessibilityUIElement::lineTextMarkerRangeForTextMarker): Use a bridge cast.
(WTR::AccessibilityUIElement::textMarkerRangeForElement): Ditto.
(WTR::AccessibilityUIElement::textMarkerRangeLength): Ditto.
(WTR::AccessibilityUIElement::previousTextMarker): Ditto.
(WTR::AccessibilityUIElement::nextTextMarker): Ditto.
(WTR::AccessibilityUIElement::stringForTextMarkerRange): Ditto.
(WTR::AccessibilityUIElement::textMarkerRangeForMarkers): Ditto.
(WTR::AccessibilityUIElement::startTextMarkerForTextMarkerRange): Ditto.
(WTR::AccessibilityUIElement::endTextMarkerForTextMarkerRange): Ditto.
(WTR::AccessibilityUIElement::accessibilityElementForTextMarker): Ditto.
(WTR::AccessibilityUIElement::textMarkerRangeMatchesTextNearMarkers): Ditto.
(WTR::_CGPathEnumerationIteration): Ditto.
(WTR::AccessibilityUIElement::pathDescription const): Ditto.

  • WebKitTestRunner/InjectedBundle/mac/AccessibilityNotificationHandler.mm:

(-[AccessibilityNotificationHandler dealloc]): Removed [super dealloc].

  • WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:

(WTR::AccessibilityUIElement::AccessibilityUIElement): Removed retain.
(WTR::AccessibilityUIElement::~AccessibilityUIElement): Removed release.
(WTR::AccessibilityUIElement::removeNotificationListener): Removed release.
(WTR::createJSStringRef): Removed autorelease.

  • WebKitTestRunner/cocoa/TestControllerCocoa.mm:

(WTR::initializeWebViewConfiguration): Removed release.
(WTR::TestController::cocoaPlatformInitialize): Removed release.
(WTR::TestController::platformCreateOtherPage): Removed autorelease.

  • WebKitTestRunner/cocoa/TestRunnerWKWebView.mm:

(-[TestRunnerWKWebView dealloc]): Removed [super dealloc] and also many
cases of setting properties to nil that were only present for memory
management reasons.

  • WebKitTestRunner/ios/GeneratedTouchesDebugWindow.mm:

(-[GeneratedTouchesDebugWindow dealloc]): Removed release and [super dealloc].

  • WebKitTestRunner/ios/HIDEventGenerator.mm:

(-[HIDEventGenerator dealloc]): Deleted.
(-[HIDEventGenerator _sendMarkerHIDEventWithCompletionBlock:]): Removed
Block_copy.
(-[HIDEventGenerator markerEventReceived:]): Removed Block_release.
(-[HIDEventGenerator interpolatedEvents:]): Removed release.
(-[HIDEventGenerator sendEventStream:completionBlock:]): Removed autorelease.

  • WebKitTestRunner/ios/PlatformWebViewIOS.mm:

(-[WebKitTestRunnerWindow dealloc]): Removed [super dealloc].
(WTR::PlatformWebView::PlatformWebView): Removed release.
(WTR::PlatformWebView::~PlatformWebView): Removed release.
(WTR::PlatformWebView::addChromeInputField): Removed release.
(WTR::PlatformWebView::removeChromeInputField): Removed release.

  • WebKitTestRunner/ios/TestControllerIOS.mm:

(WTR::TestController::initializeInjectedBundlePath): Use bridge cast.
(WTR::TestController::initializeTestPluginDirectory): Ditto.

  • WebKitTestRunner/ios/UIScriptControllerIOS.mm:

(WTR::UIScriptController::accessibilitySpeakSelectionContent const):
Use bridge cast.
(WTR::UIScriptController::enterText): Ditto.
(WTR::UIScriptController::selectFormPopoverTitle const): Ditto.
(WTR::UIScriptController::textContentType const): Ditto.
(WTR::UIScriptController::formInputLabel const): Ditto.
(WTR::UIScriptController::scrollingTreeAsText const): Ditto.

  • WebKitTestRunner/mac/PlatformWebViewMac.mm:

(WTR::PlatformWebView::~PlatformWebView): Removed release.
(WTR::PlatformWebView::addChromeInputField): Removed release.

  • WebKitTestRunner/mac/TestControllerMac.mm:

(WTR::allowedFontFamilySet): Removed retain.
(WTR::systemHiddenFontFamilySet): Removed retain.

  • WebKitTestRunner/mac/WebKitTestRunnerDraggingInfo.mm:

(-[WebKitTestRunnerDraggingInfo draggingDestinationWindow]): Removed retain.
(-[WebKitTestRunnerDraggingInfo dealloc]): Deleted.

  • WebKitTestRunner/mac/WebKitTestRunnerPasteboard.mm:

(+[WebKitTestRunnerPasteboard _pasteboardWithName:]): Removed release.
(+[WebKitTestRunnerPasteboard releaseLocalPasteboards]): Removed release.
Method name is still OK because setting localPasteboards to nil will
still release them.
(+[NSPasteboard superAlloc]): Added. Helper so that LocalPasteboard can
bypass +[NSPasteboard alloc].
(+[NSPasteboard superAllocWithZone:]): Ditto.
(+[LocalPasteboard alloc]): Call superAlloc instead of class_createInstance.
This is a different way to achieve the "bypass NSPasteboard" behavior we need.
(+[LocalPasteboard allocWithZone:]): Added. Calls superAllocWithZone: for the
same reason as above. Needed because, at least at this time, +[NSObject alloc]
calls +allocWithZone: so we have to override both.
(-[LocalPasteboard dealloc]): Deleted.
(-[LocalPasteboard addTypes:owner:]): Removed release.

  • WebKitTestRunner/mac/WebKitTestRunnerWindow.mm:

(-[WebKitTestRunnerWindow dealloc]): Removed [super dealloc].

  • WebKitTestRunner/mac/main.mm:

(disableAppNapInUIProcess): Removed retain.

1:51 PM Changeset in webkit [235831] by yusukesuzuki@slowstart.org
  • 8 edits in trunk

[JSC] Remove loadModule function in jsc.cpp
https://bugs.webkit.org/show_bug.cgi?id=184808

Patch by Yusuke Suzuki <Yusuke Suzuki> on 2018-09-08
Reviewed by Darin Adler.

JSTests:

Use import expression instead.

  • modules/different-view.js:

(from.string_appeared_here.shouldThrow): Deleted.

  • modules/fallback-ambiguous.js:

(from.string_appeared_here.shouldThrow): Deleted.

  • modules/import-error.js:

(from.string_appeared_here.shouldThrow): Deleted.
(shouldThrow): Deleted.

  • modules/indirect-export-error.js:

(from.string_appeared_here.shouldThrow): Deleted.
(shouldThrow): Deleted.

  • modules/namespace-error.js:

(from.string_appeared_here.shouldThrow): Deleted.

Source/JavaScriptCore:

Since we have import, we do not need to have loadModule function for testing purpose.

  • jsc.cpp:

(GlobalObject::finishCreation):
(functionLoadModule): Deleted.

1:19 PM Changeset in webkit [235830] by Simon Fraser
  • 5 edits in trunk/Source/WebCore

Clean up code related to Document node removal
https://bugs.webkit.org/show_bug.cgi?id=189452

Reviewed by Wenson Hsieh.

Replace the "amongChildrenOnly" boolean argument with an enum for clarity.

Rename the remove*OfSubtree functions, because that naming is very unclear.
Instead, use adjust*OnNodeRemoval which better describes what the code does.

  • dom/Document.cpp:

(WebCore::isNodeInSubtree):
(WebCore::Document::adjustFocusedNodeOnNodeRemoval):
(WebCore::Document::nodeChildrenWillBeRemoved):
(WebCore::Document::nodeWillBeRemoved):
(WebCore::Document::adjustFocusNavigationNodeOnNodeRemoval):
(WebCore::Document::adjustFullScreenElementOnNodeRemoval):
(WebCore::Document::removeFocusedNodeOfSubtree): Deleted.
(WebCore::Document::removeFocusNavigationNodeOfSubtree): Deleted.
(WebCore::Document::removeFullScreenElementOfSubtree): Deleted.

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

(WebCore::Element::removeShadowRoot):

  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::clear):

12:25 PM Changeset in webkit [235829] by yusukesuzuki@slowstart.org
  • 2 edits in trunk/Source/WebCore

[CSSJIT] Use lshiftPtr instead of mul32
https://bugs.webkit.org/show_bug.cgi?id=189451

Reviewed by Sam Weinig.

Use value << 4 instead of value * 16. In 64bit environment, sizeof(Style::Relation) is 16,
so that we can use value << 4 in CSS JIT.

No behavior change.

  • cssjit/SelectorCompiler.cpp:

(WebCore::SelectorCompiler::SelectorCodeGenerator::generateAddStyleRelation):

10:59 AM Changeset in webkit [235828] by timothy_horton@apple.com
  • 38 edits in trunk/Source/WebKit

Unify most of the WebKit Objective-C API sources
https://bugs.webkit.org/show_bug.cgi?id=189447

Reviewed by Andy Estes.

Unify and fix errors.

  • Shared/API/Cocoa/_WKFrameHandle.mm:
  • Shared/API/Cocoa/_WKRemoteObjectRegistry.mm:
  • SourcesCocoa.txt:
  • UIProcess/API/Cocoa/APIContentRuleListStoreCocoa.mm:
  • UIProcess/API/Cocoa/WKBackForwardList.mm:
  • UIProcess/API/Cocoa/WKBackForwardListItem.mm:
  • UIProcess/API/Cocoa/WKBrowsingContextController.mm:
  • UIProcess/API/Cocoa/WKBrowsingContextGroup.mm:
  • UIProcess/API/Cocoa/WKConnection.mm:
  • UIProcess/API/Cocoa/WKNSURLAuthenticationChallenge.mm:
  • UIProcess/API/Cocoa/WKNavigationData.mm:
  • UIProcess/API/Cocoa/WKProcessGroup.mm:
  • UIProcess/API/Cocoa/WKURLSchemeTask.mm:
  • UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
  • UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
  • UIProcess/API/Cocoa/_WKAttachment.mm:
  • UIProcess/API/Cocoa/_WKGeolocationPosition.mm:
  • UIProcess/API/Cocoa/_WKRemoteWebInspectorViewController.mm:
  • UIProcess/API/Cocoa/_WKThumbnailView.mm:
  • UIProcess/API/mac/WKView.mm:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.mm:
  • WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInHitTestResult.mm:
  • WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandle.mm:
  • WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInPageGroup.mm:
  • WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInRangeHandle.mm:
  • WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInScriptWorld.mm:
  • WebProcess/InjectedBundle/API/mac/WKWebProcessPlugIn.mm:
  • WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:

Sep 7, 2018:

11:29 PM Changeset in webkit [235827] by mark.lam@apple.com
  • 14 edits
    2 adds in trunk

Ensure that handleIntrinsicCall() is only applied on op_call shaped instructions.
https://bugs.webkit.org/show_bug.cgi?id=189317
<rdar://problem/44152198>

Reviewed by Filip Pizlo.

JSTests:

  • stress/regress-189317.js: Added.

(testGetter):
(testSetter):

Source/JavaScriptCore:

handleIntrinsicCall() is normally used for checking if an op_call is a call to
an intrinsic function, and inlining it if it's a match.

However, getter and setter functions also does calls, and uses handleCall()
to implement the call. handleCall() eventually calls handleIntrinsicCall() to
check for intrinsics. This results in a bug because handleIntrinsicCall()
sometimes relies on the ArrayProfile* of the instruction, and is always assuming
that the instruction is op_call shaped. This turns out to be not true: getters
and setters can get there with op_get_by_val and op_put_by_val instead.

Since the intrinsic functions handled by handleIntrinsicCall() are never
intended to be used as getter / setter functions anyway, we can prevent this
whole class of bugs by having handleIntrinsicCall() fail early if the
instruction is not op_call shaped.

To implement this fix, we did the following:

  1. Introduced the OpcodeShape enum.
  2. Introduced isOpcodeShape<OpcodeShape>() for testing if a instruction of the shape of the specified OpcodeShape.
  3. Introduced arrayProfileFor<OpcodeShape>() for fetching the ArrayProfile* from the instruction given the OpcodeShape.

Using this arrayProfileFor template has the following benefits:

  1. Centralizes the definition of which instructions has an ArrayProfile* operand.
  2. Centralizes the definition of which operand is the ArrayProfile*.
  3. Asserts that the instruction is of the expected shape when retrieving the ArrayProfile*.
  1. Added ArrayProfile::m_typeName and ArrayProfile::s_typeName which are used in ArrayProfile::isValid() as a sanity check that a retrieved ArrayProfile* indeed does point to an ArrayProfile.
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • bytecode/ArrayProfile.cpp:
  • bytecode/ArrayProfile.h:

(JSC::ArrayProfile::isValid const):

  • bytecode/OpcodeInlines.h: Added.

(JSC::isOpcodeShape):
(JSC::arrayProfileFor):

  • dfg/DFGByteCodeParser.cpp:

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

  • jit/JITCall.cpp:

(JSC::JIT::compileOpCall):

  • jit/JITCall32_64.cpp:

(JSC::JIT::compileOpCall):

  • jit/JITOpcodes.cpp:

(JSC::JIT::emit_op_has_indexed_property):

  • jit/JITOpcodes32_64.cpp:

(JSC::JIT::emit_op_has_indexed_property):

  • jit/JITPropertyAccess.cpp:

(JSC::JIT::emit_op_get_by_val):
(JSC::JIT::emit_op_put_by_val):
(JSC::JIT::emitGenericContiguousPutByVal):
(JSC::JIT::emitArrayStoragePutByVal):
(JSC::JIT::emitIntTypedArrayPutByVal):
(JSC::JIT::emitFloatTypedArrayPutByVal):

  • jit/JITPropertyAccess32_64.cpp:

(JSC::JIT::emit_op_get_by_val):
(JSC::JIT::emit_op_put_by_val):
(JSC::JIT::emitGenericContiguousPutByVal):
(JSC::JIT::emitArrayStoragePutByVal):

  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::LLINT_SLOW_PATH_DECL):
(JSC::LLInt::getByVal):

  • runtime/CommonSlowPaths.cpp:

(JSC::SLOW_PATH_DECL):

7:17 PM Changeset in webkit [235826] by timothy_horton@apple.com
  • 2 edits in trunk/Source/WebKit

Try to fix the build

  • Shared/mac/SandboxExtensionMac.mm:
5:41 PM Changeset in webkit [235825] by Fujii Hironori
  • 2 edits in trunk/Source/WebCore

[Win][Clang] exceptionShouldTerminateProgram of StructuredExceptionHandlerSuppressor.cpp should take DWORD
https://bugs.webkit.org/show_bug.cgi?id=189402

Reviewed by Alex Christensen.

Clang reports compilation errors like following:

StructuredExceptionHandlerSuppressor.cpp(38,10): error: case value evaluates to 2147483650, which cannot be narrowed to type 'int' [-Wc++11-narrowing]

case EXCEPTION_DATATYPE_MISALIGNMENT:


No new tests (no behavioral change).

  • platform/win/StructuredExceptionHandlerSuppressor.cpp:

(exceptionShouldTerminateProgram): Changed the type of argument from int to DWORD.

5:37 PM Changeset in webkit [235824] by Fujii Hironori
  • 3 edits in trunk/Tools

[WinCairo][MiniBrowser][WebKit] REGRESSION(r235398): ASSERTION FAILED: !m_client.didReceiveTitleForFrame
https://bugs.webkit.org/show_bug.cgi?id=189336

Reviewed by Alex Christensen.

WKPageSetPageLoaderClient is deprecated. Replaced it with
WKPageSetPageNavigationClient.

  • MiniBrowser/win/WebKitBrowserWindow.cpp:

(WebKitBrowserWindow::WebKitBrowserWindow):
Call WKPageSetPageNavigationClient instead of WKPageSetPageLoaderClient.
(WebKitBrowserWindow::didFinishNavigation):
Copied from didReceiveTitleForFrame. Use WKPageCopyTitle to get the title.
(WebKitBrowserWindow::didCommitNavigation):
Copied from didCommitLoadForFrame. Use WKPageCopyCommittedURL to get the URL.
(WebKitBrowserWindow::didReceiveTitleForFrame): Deleted.
(WebKitBrowserWindow::didCommitLoadForFrame): Deleted.

  • MiniBrowser/win/WebKitBrowserWindow.h: Renamed the class methods.
5:36 PM Changeset in webkit [235823] by timothy_horton@apple.com
  • 14 edits in trunk/Source/WebKit

Unify most of the WebKit C API sources
https://bugs.webkit.org/show_bug.cgi?id=189400

Reviewed by Alex Christensen.

Unify and fix errors (mostly API:String vs. WTF::String mismatches).

  • Shared/APIWebArchiveResource.h:
  • Sources.txt:
  • SourcesCocoa.txt:
  • UIProcess/API/APIContentRuleListStore.cpp:

(API::constructedPathPrefix):
(API::constructedPathFilter):
(API::constructedPath):
(API::encodeContentRuleListMetaData):
(API::decodeContentRuleListMetaData):
(API::openAndMapContentRuleList):
(API::writeDataToFile):
(API::compiledToFile):
(API::createExtension):
(API::ContentRuleListStore::lookupContentRuleList):
(API::ContentRuleListStore::getAvailableContentRuleListIdentifiers):
(API::ContentRuleListStore::compileContentRuleList):
(API::ContentRuleListStore::getContentRuleListSource):

  • UIProcess/API/APINavigation.cpp:

(API::Navigation::loggingString const):

  • UIProcess/API/APIWebsiteDataStore.cpp:

(API::WebsiteDataStore::defaultMediaCacheDirectory):
(API::WebsiteDataStore::defaultJavaScriptConfigurationDirectory):

  • UIProcess/API/Cocoa/APIWebsiteDataStoreCocoa.mm:

(API::WebsiteDataStore::defaultApplicationCacheDirectory):
(API::WebsiteDataStore::defaultCacheStorageDirectory):
(API::WebsiteDataStore::defaultNetworkCacheDirectory):
(API::WebsiteDataStore::defaultMediaCacheDirectory):
(API::WebsiteDataStore::defaultIndexedDBDatabaseDirectory):
(API::WebsiteDataStore::defaultServiceWorkerRegistrationDirectory):
(API::WebsiteDataStore::defaultLocalStorageDirectory):
(API::WebsiteDataStore::defaultMediaKeysStorageDirectory):
(API::WebsiteDataStore::defaultWebSQLDatabaseDirectory):
(API::WebsiteDataStore::defaultResourceLoadStatisticsDirectory):
(API::WebsiteDataStore::defaultJavaScriptConfigurationDirectory):
(API::WebsiteDataStore::legacyDefaultApplicationCacheDirectory):
(API::WebsiteDataStore::legacyDefaultNetworkCacheDirectory):
(API::WebsiteDataStore::legacyDefaultWebSQLDatabaseDirectory):
(API::WebsiteDataStore::legacyDefaultIndexedDBDatabaseDirectory):
(API::WebsiteDataStore::legacyDefaultLocalStorageDirectory):
(API::WebsiteDataStore::legacyDefaultMediaCacheDirectory):
(API::WebsiteDataStore::legacyDefaultMediaKeysStorageDirectory):
(API::WebsiteDataStore::legacyDefaultJavaScriptConfigurationDirectory):
(API::WebsiteDataStore::tempDirectoryFileSystemRepresentation):
(API::WebsiteDataStore::cacheDirectoryFileSystemRepresentation):
(API::WebsiteDataStore::websiteDataDirectoryFileSystemRepresentation):

  • UIProcess/API/glib/APIWebsiteDataStoreGLib.cpp:

(API::WebsiteDataStore::defaultApplicationCacheDirectory):
(API::WebsiteDataStore::defaultNetworkCacheDirectory):
(API::WebsiteDataStore::defaultCacheStorageDirectory):
(API::WebsiteDataStore::defaultIndexedDBDatabaseDirectory):
(API::WebsiteDataStore::defaultServiceWorkerRegistrationDirectory):
(API::WebsiteDataStore::defaultLocalStorageDirectory):
(API::WebsiteDataStore::defaultMediaKeysStorageDirectory):
(API::WebsiteDataStore::defaultWebSQLDatabaseDirectory):
(API::WebsiteDataStore::defaultResourceLoadStatisticsDirectory):
(API::WebsiteDataStore::cacheDirectoryFileSystemRepresentation):
(API::WebsiteDataStore::websiteDataDirectoryFileSystemRepresentation):
(API::WebsiteDataStore::legacyDefaultApplicationCacheDirectory):
(API::WebsiteDataStore::legacyDefaultNetworkCacheDirectory):
(API::WebsiteDataStore::legacyDefaultWebSQLDatabaseDirectory):
(API::WebsiteDataStore::legacyDefaultIndexedDBDatabaseDirectory):
(API::WebsiteDataStore::legacyDefaultLocalStorageDirectory):
(API::WebsiteDataStore::legacyDefaultMediaCacheDirectory):
(API::WebsiteDataStore::legacyDefaultMediaKeysStorageDirectory):
(API::WebsiteDataStore::legacyDefaultJavaScriptConfigurationDirectory):

  • WebKit.xcodeproj/project.pbxproj:
5:36 PM Changeset in webkit [235822] by Basuke Suzuki
  • 1 edit
    5 adds in trunk/LayoutTests

[LayoutTests] Add digest access authentication test.
https://bugs.webkit.org/show_bug.cgi?id=189286

Reviewed by Alex Christensen.

Add digest auth tests

  • http/tests/resources/digest-auth/authorize.php: Added.
  • http/tests/resources/digest-auth/digest.php: Added.
  • http/tests/xmlhttprequest/digest-auth-expected.txt: Added.
  • http/tests/xmlhttprequest/digest-auth.html: Added.
5:32 PM Changeset in webkit [235821] by Basuke Suzuki
  • 5 edits
    3 adds in trunk

[Curl] Stop sending request with credential if no authorization requested.
https://bugs.webkit.org/show_bug.cgi?id=189057

Reviewed by Alex Christensen.

Source/WebCore:

When 401 response returns without 'www-authenticate' header, suppress another request with credential.

Test: http/tests/xmlhttprequest/unauthorized-without-authenticate-header.html

  • platform/network/curl/CurlResourceHandleDelegate.cpp:

(WebCore::CurlResourceHandleDelegate::curlDidReceiveResponse):

Source/WebKit:

When 401 response returns without 'www-authenticate' header, suppress another request with credential.
Same fix for proxy authentication.

  • NetworkProcess/curl/NetworkDataTaskCurl.cpp:

(WebKit::NetworkDataTaskCurl::curlDidReceiveResponse):

LayoutTests:

  • http/tests/xmlhttprequest/resources/no-authenticate-header-401.php: Added.
  • http/tests/xmlhttprequest/unauthorized-without-authenticate-header-expected.txt: Added.
  • http/tests/xmlhttprequest/unauthorized-without-authenticate-header.html: Added.
4:47 PM Changeset in webkit [235820] by Fujii Hironori
  • 2 edits in trunk/Source/WebCore

[Win][Clang] duplicated variable name advance in UniscribeController::shapeAndPlaceItem
https://bugs.webkit.org/show_bug.cgi?id=189399

Reviewed by Myles C. Maxfield.

Clang reports the following compilation error:

UniscribeController.cpp(372,56): error: invalid operands to binary expression ('float' and 'WebCore::GlyphBufferAdvance' (aka 'WebCore::FloatSize'))

GlyphBufferAdvance advance(-origin.width() + advance, -origin.height());

~ ~

No new tests (No behavior change).

  • platform/graphics/win/UniscribeController.cpp:

(WebCore::UniscribeController::shapeAndPlaceItem): Replaced the second variable named advance with glyphAdvance.

4:13 PM Changeset in webkit [235819] by youenn@apple.com
  • 5 edits
    1 copy
    2 adds in trunk/LayoutTests

Tests checking document GC in case of ActiveDOMObjects are flaky
https://bugs.webkit.org/show_bug.cgi?id=189413

Reviewed by Eric Carlson.

Instead of calling parent.done() use postMessage.
The assumption is that GC might not always collect 'parent' as it is in the call stack.
With postMessage, no flakiness is observed locally.
Added a related MediaDevices test that was missing from r235438.

  • http/tests/IndexedDB/collect-IDB-objects.https.html:
  • http/tests/IndexedDB/resources/myidbframe.htm:
  • http/tests/media/clearkey/collect-webkit-media-session.html:
  • http/tests/media/clearkey/resources/mywebkitmediasessionframe.htm:
  • http/tests/media/media-stream/collect-media-devices.https-expected.txt: Added.
  • http/tests/media/media-stream/collect-media-devices.https.html: Added.
  • http/tests/media/media-stream/resources/mymediadevicesframe.htm: Added.
4:08 PM Changeset in webkit [235818] by dbates@webkit.org
  • 3 edits
    2 adds in trunk

[iOS] uiController.typeCharacterUsingHardwareKeyboard("`", ...) dispatches DOM key events for ~
https://bugs.webkit.org/show_bug.cgi?id=189325

Reviewed by Wenson Hsieh.

Tools:

Fixes an issue where the test infrastructure would incorrectly synthesized a shift key press followed
by a key press (i.e. type '~') when instructed to simulate typing a grave accent (). Typing a
grave accent does not require holding the shift key.

  • WebKitTestRunner/ios/HIDEventGenerator.mm:

(shouldWrapWithShiftKeyEventForCharacter):

LayoutTests:

Add a test to ensure that we dispatch the correct DOM key events when using uiController.typeCharacterUsingHardwareKeyboard("`")
(by way of UIHelper.typeCharacter()).

  • fast/events/ios/keypress-grave-accent-expected.txt: Added.
  • fast/events/ios/keypress-grave-accent.html: Added.
4:07 PM Changeset in webkit [235817] by youenn@apple.com
  • 10 edits
    1 delete in trunk/Source/WebCore

RTCRtpReceiver::track should return a MediaStreamTrack reference
https://bugs.webkit.org/show_bug.cgi?id=189420

Reviewed by Eric Carlson.

As per spec, a receiver always has a track.
Remove unneeded RTCRtpSenderReceiverBase and make RTCRtpReceiver have a Ref<MediaStreamTrack>.
RTCRtpSender keeps having a RefPtr<MediaStreamTrack>.
Update call sites accordingly.
No change of behavior.

  • Modules/mediastream/RTCRtpReceiver.cpp:

(WebCore::RTCRtpReceiver::RTCRtpReceiver):
(WebCore::RTCRtpReceiver::stop):

  • Modules/mediastream/RTCRtpReceiver.h:

(WebCore::RTCRtpReceiver::track):

  • Modules/mediastream/RTCRtpReceiver.idl:
  • Modules/mediastream/RTCRtpSender.cpp:

(WebCore::RTCRtpSender::RTCRtpSender):

  • Modules/mediastream/RTCRtpSender.h:

(WebCore::RTCRtpSender::track):

  • Modules/mediastream/RTCRtpSender.idl:
  • Modules/mediastream/RTCRtpSenderReceiverBase.h: Removed.
  • Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:

(WebCore::LibWebRTCMediaEndpoint::addRemoteTrack):

  • Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp:

(WebCore::LibWebRTCPeerConnectionBackend::videoReceiver):
(WebCore::LibWebRTCPeerConnectionBackend::audioReceiver):

  • WebCore.xcodeproj/project.pbxproj:
4:00 PM Changeset in webkit [235816] by dbates@webkit.org
  • 3 edits in trunk/Source/WebCore

Cleanup: Remove extraneous "using namespace" and scope WebCore::LogThreading
https://bugs.webkit.org/show_bug.cgi?id=189381

Reviewed by Simon Fraser.

  • platform/ios/wak/WKGraphics.mm:
  • platform/ios/wak/WebCoreThread.mm:

(WebThreadEnable):

3:56 PM Changeset in webkit [235815] by Kocsen Chung
  • 1 copy in tags/Safari-606.2.10

Tag Safari-606.2.10.

3:53 PM Changeset in webkit [235814] by wenson_hsieh@apple.com
  • 4 edits in trunk/Source/WebCore

Clean up FontAttributeChanges.cpp after r235748
https://bugs.webkit.org/show_bug.cgi?id=189394

Reviewed by Tim Horton.

  • Sources.txt: Move FontAttributeChanges.cpp into unified sources.
  • WebCore.xcodeproj/project.pbxproj:
  • editing/FontAttributeChanges.cpp: Replace #imports with #includes.
3:50 PM Changeset in webkit [235813] by Basuke Suzuki
  • 3 edits
    5 adds in trunk

[Curl][WebKitLegacy] Stop sending credential embedded in the url via XHR.
https://bugs.webkit.org/show_bug.cgi?id=189198

Reviewed by Alexey Proskuryakov.

Source/WebCore:

Because sync XHR of Curl port uses passed request directly, the credential information in
url is not removed. Use ResourceHandleInternal's firstRequest because those are
already takne out.

Test: http/tests/xmlhttprequest/url-with-credentials.html

  • platform/network/curl/ResourceHandleCurl.cpp:

(WebCore::ResourceHandle::platformLoadResourceSynchronously):

LayoutTests:

  • http/tests/xmlhttprequest/resources/url-with-credentials/authenticate.php: Added.
  • http/tests/xmlhttprequest/resources/url-with-credentials/authorize.php: Added.
  • http/tests/xmlhttprequest/url-with-credentials-expected.txt: Added.
  • http/tests/xmlhttprequest/url-with-credentials.html: Added.
3:40 PM Changeset in webkit [235812] by Kocsen Chung
  • 7 edits in branches/safari-606.1.36.10-branch/Source

Versioning.

3:36 PM Changeset in webkit [235811] by Kocsen Chung
  • 7 edits in branches/safari-606-branch/Source

Versioning.

3:28 PM Changeset in webkit [235810] by youenn@apple.com
  • 4 edits in trunk/Source/WebCore

RealtimeOutgoingVideoSourceCocoa should use VTImageRotationSession to rotate CVPixelBuffers
https://bugs.webkit.org/show_bug.cgi?id=189427

Reviewed by Eric Carlson.

Previously, we were relying on libwebrtc utils to do the rotation.
This is inefficient compared to VTImageRotateSession and also induces additional memory cost
since libwebrtc is rotating using its own buffers and the encoder will convert this buffer back to a CVPixelBuffer.

Instead use VTImageRotationSession when rotation must be done at sending side.
Covered by webrtc/video-rotation.html.

  • platform/mediastream/mac/RealtimeOutgoingVideoSourceCocoa.cpp:

(WebCore::RealtimeOutgoingVideoSourceCocoa::sampleBufferUpdated):

  • platform/mediastream/mac/RealtimeOutgoingVideoSourceCocoa.h:
  • platform/mediastream/mac/RealtimeOutgoingVideoSourceCocoa.mm:

(WebCore::computeRotatedWidthAndHeight):
(WebCore::RealtimeOutgoingVideoSourceCocoa::rotatePixelBuffer):

2:57 PM Changeset in webkit [235809] by youenn@apple.com
  • 53 edits
    1 copy
    1 add in trunk

Add support for unified plan transceivers
https://bugs.webkit.org/show_bug.cgi?id=189390

Reviewed by Eric Carlson.

LayoutTests/imported/w3c:

  • web-platform-tests/webrtc/RTCDTMFSender-insertDTMF.https-expected.txt:
  • web-platform-tests/webrtc/RTCPeerConnection-addTrack.https-expected.txt:

Regression comes from the fact that the sender was never used but transceiver direction is sendrecv.
This might need further clarification in the spec or implementation of libwebrtc.

  • web-platform-tests/webrtc/RTCPeerConnection-addTransceiver-expected.txt:
  • web-platform-tests/webrtc/RTCPeerConnection-removeTrack.https-expected.txt:
  • web-platform-tests/webrtc/RTCPeerConnection-setDescription-transceiver-expected.txt:
  • web-platform-tests/webrtc/RTCRtpTransceiver-setDirection-expected.txt:

Source/ThirdParty/libwebrtc:

Expose more symbols.

  • Configurations/libwebrtc.iOS.exp:
  • Configurations/libwebrtc.iOSsim.exp:
  • Configurations/libwebrtc.mac.exp:

Source/WebCore:

Keep previous transceiver behavior when unified plan flag is off.
Otherwise, use the libwebrtc transceiver API to create and use unified plan transceivers.
Fuel the implementation of transceivers through a dedicated backend.

Update transceiver IDL and make some smaller fixes at the same time:

Our mock peer connections are only supporting plan B APIs at the moment.
We therefore mandate plan B when using such mocks until we can upgrade mocks to support unified plan APIs.

Covered by modified and rebased tests.

  • Modules/mediastream/PeerConnectionBackend.cpp:

(WebCore::PeerConnectionBackend::addTrack):

  • Modules/mediastream/PeerConnectionBackend.h:
  • Modules/mediastream/RTCPeerConnection.cpp:

(WebCore::RTCPeerConnection::addTrack):
(WebCore::RTCPeerConnection::addTransceiver):

  • Modules/mediastream/RTCRtpSender.cpp:

(WebCore::RTCRtpSender::RTCRtpSender):

  • Modules/mediastream/RTCRtpTransceiver.cpp:

(WebCore::RTCRtpTransceiver::mid const):
(WebCore::RTCRtpTransceiver::currentDirection const):

  • Modules/mediastream/RTCRtpTransceiver.h:

(WebCore::RTCRtpTransceiver::backend):

  • Modules/mediastream/RTCRtpTransceiver.idl:
  • Modules/mediastream/RTCRtpTransceiverBackend.h:
  • Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:

(WebCore::LibWebRTCMediaEndpoint::addTrack):
(WebCore::LibWebRTCMediaEndpoint::newTransceiver):
(WebCore::LibWebRTCMediaEndpoint::addTransceiver):
(WebCore::LibWebRTCMediaEndpoint::transceiverBackendFromSender):
(WebCore::LibWebRTCMediaEndpoint::OnAddTrack):
(WebCore::LibWebRTCMediaEndpoint::OnTrack):

  • Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h:
  • Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp:

(WebCore::createReceiverForSource):
(WebCore::LibWebRTCPeerConnectionBackend::createReceiver):
(WebCore::LibWebRTCPeerConnectionBackend::videoReceiver):
(WebCore::LibWebRTCPeerConnectionBackend::audioReceiver):
(WebCore::LibWebRTCPeerConnectionBackend::addTrack):
(WebCore::LibWebRTCPeerConnectionBackend::addTransceiver):
(WebCore::backendFromRTPTransceiver):
(WebCore::LibWebRTCPeerConnectionBackend::existingTransceiver):
(WebCore::LibWebRTCPeerConnectionBackend::newTransceiver):

  • Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.h:
  • Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.cpp:

(WebCore::LibWebRTCRtpSenderBackend::replaceTrack):

  • Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.h:
  • Modules/mediastream/libwebrtc/LibWebRTCRtpTransceiverBackend.cpp: Added.

(WebCore::LibWebRTCRtpTransceiverBackend::createReceiverBackend):
(WebCore::LibWebRTCRtpTransceiverBackend::createSenderBackend):
(WebCore::LibWebRTCRtpTransceiverBackend::direction const):
(WebCore::LibWebRTCRtpTransceiverBackend::currentDirection const):
(WebCore::LibWebRTCRtpTransceiverBackend::setDirection):
(WebCore::LibWebRTCRtpTransceiverBackend::mid):
(WebCore::LibWebRTCRtpTransceiverBackend::stop):

  • Modules/mediastream/libwebrtc/LibWebRTCRtpTransceiverBackend.h: Added.
  • Modules/mediastream/libwebrtc/LibWebRTCUtils.cpp:

(WebCore::toRTCRtpTransceiverDirection):
(WebCore::fromRTCRtpTransceiverDirection):
(WebCore::fromRtpTransceiverInit):

  • Modules/mediastream/libwebrtc/LibWebRTCUtils.h:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/mediastream/RealtimeIncomingAudioSource.cpp:

(WebCore::RealtimeIncomingAudioSource::RealtimeIncomingAudioSource):

  • platform/mediastream/RealtimeIncomingVideoSource.cpp:

(WebCore::RealtimeIncomingVideoSource::RealtimeIncomingVideoSource):

  • platform/mediastream/RealtimeMediaSource.h:
  • testing/Internals.cpp:

(WebCore::Internals::useMockRTCPeerConnectionFactory):

LayoutTests:

Update tests using mock to enforce plan B for now until unified plan mocks are supported.

  • fast/mediastream/RTCPeerConnection-addIceCandidate-expected.txt:
  • fast/mediastream/RTCPeerConnection-icecandidate-event.html:
  • fast/mediastream/RTCPeerConnection-iceconnectionstatechange-event.html:
  • fast/mediastream/RTCPeerConnection-inspect-answer.html:
  • fast/mediastream/RTCPeerConnection-inspect-offer.html:
  • fast/mediastream/RTCPeerConnection-media-setup-single-dialog.html:
  • fast/mediastream/RTCPeerConnection-media-setup-two-dialogs.html:
  • fast/mediastream/RTCPeerConnection-remotely-assigned-transceiver-mid.html:
  • fast/mediastream/RTCPeerConnection-setLocalDescription-offer.html:
  • fast/mediastream/RTCPeerConnection-setRemoteDescription-offer.html:
  • webrtc/calling-peerconnection-once-closed.html:

Once closed, addTransceiver is expected to throw.

  • webrtc/libwebrtc/release-while-creating-offer.html:
  • webrtc/libwebrtc/release-while-getting-stats.html:
  • webrtc/libwebrtc/release-while-setting-local-description.html:
  • webrtc/video-getParameters.html: sender and receiver parameters are no longer the same.

Testing them individually.

  • webrtc/video-with-receiver.html:

Test is working only with legacy mode.

2:43 PM Changeset in webkit [235808] by commit-queue@webkit.org
  • 5 edits in trunk

XMLHttpRequest: open() does not throw a SYNTAX_ERR exception if method is empty or url cannot be resolved
https://bugs.webkit.org/show_bug.cgi?id=46008

Patch by Rob Buis <rbuis@igalia.com> on 2018-09-07
Reviewed by Chris Dumez.

LayoutTests/imported/w3c:

  • web-platform-tests/xhr/open-url-bogus-expected.txt:
  • web-platform-tests/xhr/open-url-multi-window-6-expected.txt:

Source/WebCore:

Check if passed URL is valid as specified here [1].

Test: web-platform-tests/xhr/open-url-bogus.htm

[1] https://xhr.spec.whatwg.org/#the-open()-method Step 7

  • xml/XMLHttpRequest.cpp:

(WebCore::XMLHttpRequest::open):

2:29 PM Changeset in webkit [235807] by Brent Fulgham
  • 3 edits in trunk/Source/WebKit

Allow WebContent access to AVCSupported IOKit property in sandbox
https://bugs.webkit.org/show_bug.cgi?id=189429
<rdar://problem/43612229>

Reviewed by Eric Carlson.

Allow access to the IOKit properties AVCSupported and HEVCSupported to allow the WebContent process
to check for efficient video codecs.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
  • WebProcess/com.apple.WebProcess.sb.in:
2:12 PM Changeset in webkit [235806] by commit-queue@webkit.org
  • 41 edits
    1 add
    1 delete in trunk

[CSSOM View] Handle the scrollingElement in Element::scroll(Left/Top/Width/Height/To)
https://bugs.webkit.org/show_bug.cgi?id=182230

Patch by Frederic Wang <fwang@igalia.com> on 2018-09-07
Reviewed by Simon Fraser.

LayoutTests/imported/w3c:

This commit updates expectations for some WPT tests so that they have only PASS results.
Note that css/cssom-view/scrollingElement-quirks-dynamic-*.html still fail for now (bug 182292).

  • web-platform-tests/css/cssom-view/HTMLBody-ScrollArea_quirksmode-expected.txt:
  • web-platform-tests/css/cssom-view/scrolling-quirks-vs-nonquirks-expected.txt:
  • web-platform-tests/css/cssom-view/scrollingElement-expected.txt: Added.

Source/WebCore:

This commit moves the special logic for "scrolling element" body from the
HtmlBodyElement::scroll(Left/Top/Width/Height/To) functions to the Element class. The code
is executed when the element is the scrolling element which includes the case of body
in Quirks mode and of documentElement in standard mode. This makes the behavior closer to
the CSSOM View spec (bug 5991) while not deviating too much from the current implementation.
Finally, CSSOMViewScrollingAPI is now enabled for running tests and some adjustments are made
to existing tests. Further improvements will be performed in dependencies of bug 5991.

No new tests, already covered by existing tests.

  • dom/Document.cpp: Split scrollingElement into two functions so that one can be called

internally without updating the layout.
(WebCore::Document::scrollingElement):
(WebCore::Document::scrollingElementForAPI):

  • dom/Document.h: Ditto.
  • dom/Document.idl: Use the version updating the layout for API calls.
  • dom/Element.cpp: Add include to call DOMWindow::ScrollTo

(WebCore::Element::scrollTo): Moved some logic from HtmlBodyElement to handle the case of
the scrolling element. Also skip special handling of documentElement() when
CSSOMViewScrollingAPI is disabled.
(WebCore::adjustContentsScrollPositionOrSizeForZoom): Moved some logic from HtmlBodyElement
to handle the case of the scrolling element. Also add a FIXME for improving these kinds of
helper functions. Renamed to make more explicit the semantic of the value argument.
(WebCore::Element::scrollLeft): Moved some logic from HtmlBodyElement to handle the case of
the scrolling element. Use the new documentFrameWithNonNullView() helper function.
(WebCore::Element::scrollTop): Ditto.
(WebCore::Element::setScrollLeft): Ditto
(WebCore::Element::setScrollTop): Ditto.
(WebCore::Element::scrollWidth): Ditto.
(WebCore::Element::scrollHeight): Ditto.

  • dom/Element.h:

(WebCore::Document::documentFrameWithNonNullView): New helper function to retrieve the
frame and ensure a view is available.

  • html/HTMLBodyElement.cpp: Remove code that is now in Element.
  • html/HTMLBodyElement.h: Ditto.

Source/WebKit:

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDocumentGtk.cpp:

(webkit_dom_document_get_scrolling_element): Use the new name.

Source/WebKitLegacy/mac:

  • DOM/DOMDocument.mm:

(-[DOMDocument scrollingElement]): Use the new name.

Tools:

This patch enables CSSOMViewScrollingAPI during test execution.

  • DumpRenderTree/mac/DumpRenderTree.mm:

(enableExperimentalFeatures):
(resetWebPreferencesToConsistentValues):

  • DumpRenderTree/win/DumpRenderTree.cpp:

(enableExperimentalFeatures):

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::resetPreferencesToConsistentValues):

LayoutTests:

This commit updates some tests to work when CSSOMViewScrollingAPI is enabled.

  • TestExpectations: Enable web-platform-tests/cssom-view/scrollingElement.html.
  • fast/dom/Document/scrollingElement-quirks-mode.html: Do not enable explictly enable

CSSOMViewScrollingAPI.

  • fast/dom/Document/scrollingElement-standards-mode.html: Ditto.
  • fast/dom/Element/body-scrollLeft-expected.txt: Updated to follow the CSSOMView spec.
  • fast/dom/Element/body-scrollLeft.html: Ditto.
  • fast/dom/Element/body-scrollTop-expected.txt: Ditto.
  • fast/dom/Element/body-scrollTop.html: Ditto.
  • fast/dom/Element/documentElement-scrollLeft-expected.txt: Ditto.
  • fast/dom/Element/documentElement-scrollLeft.html: Ditto.
  • fast/dom/Element/documentElement-scrollTop-expected.txt: Ditto.
  • fast/dom/Element/documentElement-scrollTop.html: Ditto.
  • fast/dom/Element/scrollLeft-expected.txt: Ditto.
  • fast/dom/Element/scrollLeft.html: Ditto.
  • fast/dom/Element/scrollTop-expected.txt: Ditto.
  • fast/dom/Element/scrollTop.html: Ditto.
  • fast/dom/Element/scrolling-funtions-on-body-expected.txt: Ditto.
  • fast/dom/Element/scrolling-funtions-on-body.html: Ditto.
  • platform/ios/TestExpectations: Add expectation for one WPT test that was already failing

on iOS.

  • platform/ios/ios/fast/coordinates/page-offsets-expected.txt: Use documentElement instead

of body for this test when running in standard mode.

  • platform/ios/ios/fast/coordinates/resources/helpers.js: Ditto.

(verifyScrollOffsets):

  • tiled-drawing/scrolling/fast-scroll-div-latched-mainframe.html: Use

document.scrollingElement instead of document.body to access viewport scroll offset.

1:58 PM Changeset in webkit [235805] by Simon Fraser
  • 3 edits in trunk/Tools

resultsjsonparser needs to handle leak failures
https://bugs.webkit.org/show_bug.cgi?id=189430

Reviewed by Alexey Proskuryakov.

Teach resultsjsonparser how to handle LEAK failures, building a FailureDocumentLeak
with a list of the leaked URLs.

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

(JSONTestResult._failure_types_from_actual_result):

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

(ParsedJSONResultsTest):
(test_basic):

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

[AX] Fix compile error in AXObjectCache constructor when !HAVE(ACCESSIBILITY)
https://bugs.webkit.org/show_bug.cgi?id=189423
<rdar://problem/44231775>

Reviewed by Yusuke Suzuki.

No new tests. Compilation fix.

  • accessibility/AXObjectCache.h:

(WebCore::AXObjectCache::AXObjectCache):

1:08 PM Changeset in webkit [235803] by Kocsen Chung
  • 2 edits in branches/safari-606-branch/Source/WebKit

Cherry-pick r235506. rdar://problem/44169670

[macOS] Whitelist Network process features for VPN
https://bugs.webkit.org/show_bug.cgi?id=189023
<rdar://problem/43310000>

Reviewed by Eric Carlson.

CFNetwork needs access to some VPN preference files to configure networking, and
need to be allowed to communicate with the VPN process from the Network Process
sandbox.

  • NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in:

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

1:08 PM Changeset in webkit [235802] by Kocsen Chung
  • 10 edits in branches/safari-606-branch

Cherry-pick r235754. rdar://problem/44210305

[Apple Pay] Rename the -apple-pay-button-type value "checkout" to "check-out"
https://bugs.webkit.org/show_bug.cgi?id=189366
<rdar://problem/44193218>

Reviewed by Sam Weinig.

Source/WebCore:

The button title is "Check out with Apple Pay", so we should use the verb phrase "check out"
rather than the noun "checkout" for naming this value.

Updated http/tests/ssl/applepay/ApplePayButtonV4.html.

  • css/CSSPrimitiveValueMappings.h: (WebCore::CSSPrimitiveValue::CSSPrimitiveValue): (WebCore::CSSPrimitiveValue::operator ApplePayButtonType const):
  • css/CSSValueKeywords.in:
  • css/parser/CSSParserFastPaths.cpp: (WebCore::CSSParserFastPaths::isValidKeywordPropertyAndValue):
  • rendering/RenderThemeCocoa.mm: (WebCore::toPKPaymentButtonType):
  • rendering/style/RenderStyleConstants.h:

Source/WebInspectorUI:

  • UserInterface/Models/CSSKeywordCompletions.js:

LayoutTests:

  • http/tests/ssl/applepay/ApplePayButtonV4.html:

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

1:08 PM Changeset in webkit [235801] by Kocsen Chung
  • 2 edits in branches/safari-606-branch/Source/WebInspectorUI

Cherry-pick r235406. rdar://problem/44210305

Teach Web Inspector how to complete keywords for -apple-pay-button-style and -apple-pay-button-type
https://bugs.webkit.org/show_bug.cgi?id=189001

Reviewed by Devin Rousso.

  • UserInterface/Models/CSSKeywordCompletions.js:

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

1:08 PM Changeset in webkit [235800] by Kocsen Chung
  • 15 edits
    2 copies
    1 add in branches/safari-606-branch

Cherry-pick r235349. rdar://problem/44209834

[Apple Pay] Introduce new values for -apple-pay-button-type
https://bugs.webkit.org/show_bug.cgi?id=188949
<rdar://problem/39992228>

Reviewed by Anders Carlsson.

Source/WebCore:

Added "in-store", "checkout", "book", and "subscribe" keywords for -apple-pay-button-type,
and mapped those values to their equivalent PKPaymentButtonTypes.

Tests: http/tests/ssl/applepay/ApplePayButton.html

http/tests/ssl/applepay/ApplePayButtonV4.html

  • css/CSSPrimitiveValueMappings.h: (WebCore::CSSPrimitiveValue::CSSPrimitiveValue): (WebCore::CSSPrimitiveValue::operator ApplePayButtonType const):
  • css/CSSValueKeywords.in:
  • css/parser/CSSParserFastPaths.cpp: (WebCore::CSSParserFastPaths::isValidKeywordPropertyAndValue):
  • rendering/RenderThemeCocoa.mm: (WebCore::toPKPaymentButtonType):
  • rendering/style/RenderStyleConstants.h:

Source/WebCore/PAL:

  • pal/spi/cocoa/PassKitSPI.h:

LayoutTests:

  • http/tests/ssl/applepay/ApplePayButton.html: Added.
  • http/tests/ssl/applepay/ApplePayButtonV4.html: Added.
  • platform/mac-highsierra/http/tests/ssl/applepay/ApplePayButton-expected.png:
  • platform/mac-highsierra/http/tests/ssl/applepay/ApplePayButton-expected.txt:
  • platform/mac/http/tests/ssl/applepay/ApplePayButton-expected.png: Added.
  • platform/mac/http/tests/ssl/applepay/ApplePayButton-expected.txt: Added.
  • platform/mac/http/tests/ssl/applepay/ApplePayButtonV4-expected.png: Added.
  • platform/mac/http/tests/ssl/applepay/ApplePayButtonV4-expected.txt: Added.
  • platform/mac-wk2/TestExpectations:

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

1:08 PM Changeset in webkit [235799] by Kocsen Chung
  • 1 edit
    9 adds in branches/safari-606-branch/LayoutTests

Cherry-pick r235341. rdar://problem/44209834

[Apple Pay] Add a test for rendering Apple Pay buttons
https://bugs.webkit.org/show_bug.cgi?id=188947

Reviewed by Sam Weinig.

  • http/tests/ssl/applepay/ApplePayButton.html: Added.
  • platform/mac-sierra/http/tests/ssl/applepay/ApplePayButton-expected.png: Added.
  • platform/mac-sierra/http/tests/ssl/applepay/ApplePayButton-expected.txt: Added.
  • platform/mac/http/tests/ssl/applepay/ApplePayButton-expected.png: Added.
  • platform/mac/http/tests/ssl/applepay/ApplePayButton-expected.txt: Added.

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

1:08 PM Changeset in webkit [235798] by Kocsen Chung
  • 11 edits
    2 copies
    2 moves in branches/safari-606-branch

Cherry-pick r235569. rdar://problem/44169479

Storage Access API: Maintain access through same-site navigations
https://bugs.webkit.org/show_bug.cgi?id=188564
<rdar://problem/43445160>

Reviewed by Alex Christensen.

Source/WebCore:

Tests: http/tests/storageAccess/request-and-grant-access-then-navigate-cross-site-should-not-have-access.html

http/tests/storageAccess/request-and-grant-access-then-navigate-same-site-should-have-access.html

  • dom/Document.h:

Removed unused member variable m_hasFrameSpecificStorageAccess.

  • loader/DocumentLoader.cpp: (WebCore::DocumentLoader::willSendRequest):
  • loader/FrameLoaderClient.h:

Source/WebKit:

  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: (WebKit::WebFrameLoaderClient::dispatchWillChangeDocument):

Now takes the current URL and the new URL as parameters
and only clears out storage access if the navigation is
cross-site, i.e. with differing eTLD+1s.

  • WebProcess/WebCoreSupport/WebFrameLoaderClient.h:

LayoutTests:

  • http/tests/storageAccess/request-and-grant-access-cross-origin-sandboxed-iframe-from-prevalent-domain-with-user-interaction-and-access-from-right-frame-expected.txt:
  • http/tests/storageAccess/request-and-grant-access-cross-origin-sandboxed-iframe-from-prevalent-domain-with-user-interaction-and-access-from-right-frame.html:

Added both a same-site and a cross-site navigation to the sub frame to test maintained and cleared access.

  • http/tests/storageAccess/request-and-grant-access-then-navigate-cross-site-should-not-have-access-expected.txt: Copied from LayoutTests/http/tests/storageAccess/request-and-grant-access-then-navigate-should-not-have-access-expected.txt.
  • http/tests/storageAccess/request-and-grant-access-then-navigate-cross-site-should-not-have-access.html: Copied from LayoutTests/http/tests/storageAccess/request-and-grant-access-then-navigate-should-not-have-access.html.
  • http/tests/storageAccess/request-and-grant-access-then-navigate-same-site-should-have-access-expected.txt: Renamed from LayoutTests/http/tests/storageAccess/request-and-grant-access-then-navigate-should-not-have-access-expected.txt.
  • http/tests/storageAccess/request-and-grant-access-then-navigate-same-site-should-have-access.html: Renamed from LayoutTests/http/tests/storageAccess/request-and-grant-access-then-navigate-should-not-have-access.html.
  • http/tests/storageAccess/resources/get-cookies.php:

Support for the new test scenarios.

  • http/tests/storageAccess/resources/self-navigating-frame-after-granted-access.html:

Support for the new test scenarios.

  • platform/mac-wk2/TestExpectations:

Marked the new and the renamed tests as [ Pass ].

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

1:07 PM Changeset in webkit [235797] by Kocsen Chung
  • 11 edits in branches/safari-606-branch

Cherry-pick r235318. rdar://problem/44209848

[Apple Pay] Allow $0 totals
https://bugs.webkit.org/show_bug.cgi?id=185150
<rdar://problem/39212331>

Reviewed by Dan Bernstein.

Source/WebCore:

Relaxed payment request validation to allow $0 totals. This matches PassKit behavior.

Updated test cases in http/tests/ssl/applepay/.

  • Modules/applepay/PaymentRequestValidator.mm: (WebCore::PaymentRequestValidator::validateTotal):

LayoutTests:

  • http/tests/ssl/applepay/ApplePaySession-expected.txt:
  • http/tests/ssl/applepay/ApplePaySession.html:
  • http/tests/ssl/applepay/ApplePaySessionV3-expected.txt:
  • http/tests/ssl/applepay/ApplePaySessionV3.html:
  • http/tests/ssl/applepay/ApplePaySessionV4-expected.txt:
  • http/tests/ssl/applepay/ApplePaySessionV4.html:
  • http/tests/ssl/applepay/PaymentRequest.https-expected.txt:
  • http/tests/ssl/applepay/PaymentRequest.https.html:

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

1:07 PM Changeset in webkit [235796] by Kocsen Chung
  • 20 edits
    2 adds in branches/safari-606-branch

Cherry-pick r235251. rdar://problem/44209840

[Apple Pay] Introduce Apple Pay JS v4 on iOS 12 and macOS Mojave
https://bugs.webkit.org/show_bug.cgi?id=188829

Reviewed by Tim Horton.

Source/JavaScriptCore:

  • Configurations/FeatureDefines.xcconfig:

Source/WebCore:

Test: http/tests/ssl/applepay/ApplePaySessionV4.html

  • Configurations/FeatureDefines.xcconfig:
  • testing/MockPaymentCoordinator.cpp: (WebCore::MockPaymentCoordinator::supportsVersion):

Source/WebCore/PAL:

  • Configurations/FeatureDefines.xcconfig:

Source/WebKit:

  • Configurations/FeatureDefines.xcconfig:
  • WebProcess/ApplePay/WebPaymentCoordinator.cpp: (WebKit::WebPaymentCoordinator::supportsVersion):

Source/WebKitLegacy/mac:

  • Configurations/FeatureDefines.xcconfig:

Tools:

  • TestWebKitAPI/Configurations/FeatureDefines.xcconfig:

LayoutTests:

  • http/tests/ssl/applepay/ApplePaySession-expected.txt:
  • http/tests/ssl/applepay/ApplePaySession.html:
  • http/tests/ssl/applepay/ApplePaySessionV3-expected.txt:
  • http/tests/ssl/applepay/ApplePaySessionV3.html:
  • http/tests/ssl/applepay/ApplePaySessionV4-expected.txt: Added.
  • http/tests/ssl/applepay/ApplePaySessionV4.html: Added.
  • platform/mac-wk2/TestExpectations:

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

1:07 PM Changeset in webkit [235795] by Kocsen Chung
  • 2 edits in branches/safari-606-branch/Source/WebKit

Cherry-pick r235209. rdar://problem/44169451

The Storage Access API prompt should show the eTLD+1s, not the full host names
https://bugs.webkit.org/show_bug.cgi?id=188830
<rdar://problem/43380645>

Reviewed by Brent Fulgham.

  • UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::requestStorageAccess):

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

1:07 PM Changeset in webkit [235794] by Kocsen Chung
  • 2 edits in branches/safari-606-branch/Source/WebKit

Cherry-pick r235145. rdar://problem/44169453

Storage Access API: The call to ResourceLoadStatisticsMemoryStore::grantStorageAccessInternal() should send eTLD+1s, not full host names
https://bugs.webkit.org/show_bug.cgi?id=188783
<rdar://problem/43559215>

Reviewed by Alex Christensen.

  • UIProcess/ResourceLoadStatisticsMemoryStore.cpp: (WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccess):

Now sends the eTLD+1 for the top frame and sub frame.

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

1:07 PM Changeset in webkit [235793] by Kocsen Chung
  • 2 edits in branches/safari-606-branch/Source/WebKit

Cherry-pick r234719. rdar://problem/44169456

Yet more crashes in MobileSafari under -[WKFormInputSession setSuggestions:]
https://bugs.webkit.org/show_bug.cgi?id=188427
<rdar://problem/43064672>

Reviewed by Wenson Hsieh.

Speculatively fix more crashes seen under setSuggestions.

  • UIProcess/ios/WKContentViewInteraction.mm: (-[WKFormInputSession isValid]): (-[WKFormInputSession setSuggestions:]): (-[WKFormInputSession invalidate]): Belt-and-suspenders fix: use WeakObjCPtr for WKFormInputSession's WKContentView reference.

(-[WKContentView _startAssistingNode:userIsInteracting:blurPreviousNode:changingActivityState:userObject:]):
Invalidate the WKFormInputSession before replacing it; we theorize that
there is a path in which we get here without having previously called stopAssistingNode.
Most of the code is OK with this, but this leaves WKFormInputSession
with a raw reference to WKContentView which can later become stale.

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

1:07 PM Changeset in webkit [235792] by Kocsen Chung
  • 7 edits
    3 adds in branches/safari-606-branch

Cherry-pick r234504. rdar://problem/44209851

[iOS] Keyboard becomes unresponsive after pressing delete while pressing down on a character key with accents
https://bugs.webkit.org/show_bug.cgi?id=188251
<rdar://problem/37842108>

Reviewed by Tim Horton.

Source/WebKit:

Fixes a bug in key event handling where invoking -handleKeyWebEvent:withCompletionHandler: from within the
completion callback of a previous call to -handleKeyWebEvent:withCompletionHandler: would cause the completion
callback to be cleared out prematurely. In some cases (as described in the title of this bug), UIKit exercises
this codepath and subsequently hangs due to their completion block never getting invoked by WebKit.

Test: KeyboardInputTests.CanHandleKeyEventInCompletionHandler

  • UIProcess/ios/WKContentViewInteraction.h:
  • UIProcess/ios/WKContentViewInteraction.mm: (-[WKContentView handleKeyWebEvent:withCompletionHandler:]): (-[WKContentView _didHandleKeyEvent:eventWasHandled:]):

Tools:

Adds a new API test to verify that clients (in this case, UIKit) is allowed to invoke
-handleKeyWebEvent:withCompletionHandler: within the completion block of a prior invocation.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/ios/KeyboardInputTestsIOS.mm: Added. (TestWebKitAPI::TEST):
  • TestWebKitAPI/Tests/ios/TestInputDelegate.h: Added.

Pull some logic used to force an input session to start out from an existing API test file
(WKWebViewAutofillTests) and into a separate helper class that is used by both the existing API tests and the
new keyboard input test.

  • TestWebKitAPI/Tests/ios/WKWebViewAutofillTests.mm: (-[AutofillTestView initWithFrame:]): (TestWebKitAPI::TEST): (-[TestInputDelegate init]): Deleted. (-[TestInputDelegate _webView:focusShouldStartInputSession:]): Deleted.
  • TestWebKitAPI/ios/UIKitSPI.h:

Add some UIKit SPI utilized by the new API test.

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

12:50 PM Changeset in webkit [235791] by Brent Fulgham
  • 2 edits in trunk/Source/WebKit

[macOS] Remove unused XPC service from sandbox
https://bugs.webkit.org/show_bug.cgi?id=189406
<rdar://problem/43015423>

Reviewed by Youenn Fablet.

The API surface exposed by "com.apple.systemstats.analysis" is no longer used by the
WebContent process. Since there is no need for this sandbox opening, we should remove it.

  • WebProcess/com.apple.WebProcess.sb.in:
12:44 PM Changeset in webkit [235790] by yusukesuzuki@slowstart.org
  • 21 edits
    6 adds in trunk

[DFG] DFG should handle String#toString
https://bugs.webkit.org/show_bug.cgi?id=189151

Reviewed by Saam Barati.

JSTests:

The error message in String#toString and String#valueOf is poor, which will be
handled in a separate bug[1].

[1]: https://bugs.webkit.org/show_bug.cgi?id=189357

  • microbenchmarks/string-object-to-string.js: Added.

(test):

  • microbenchmarks/string-object-value-of.js: Added.

(test):

  • stress/string-to-string-error.js: Added.

(shouldThrow):
(test):

  • stress/string-to-string.js: Added.

(shouldBe):
(test1):
(test2):
(test3):

  • stress/string-value-of-error.js: Added.

(shouldThrow):
(test):

  • stress/string-value-of.js: Added.

(shouldBe):
(test1):
(test2):
(test3):

Source/JavaScriptCore:

We handle String#toString and String#valueOf in DFG by introducing StringValueOf node.
In the fixup phase, we attempt to lower StringValueOf to the existing ToString or Identity
nodes. If we fail to lower it, we have StringValueOf(UntypedUse), which may raise an error
if an argument is neither String nor StringObject. The error message in String#toString and
String#valueOf is poor, which will be handled in a separate bug[1].

It improves simple microbenchmarks by 53.4 - 67.6%.

baseline patched

string-object-to-string 21.7308+-3.3147 12.9655+-0.0527 definitely 1.6760x faster
string-object-value-of 20.1122+-0.0691 13.1134+-0.2482 definitely 1.5337x faster

[1]: https://bugs.webkit.org/show_bug.cgi?id=189357

  • dfg/DFGAbstractInterpreterInlines.h:

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

  • dfg/DFGByteCodeParser.cpp:

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

  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

  • dfg/DFGDoesGC.cpp:

(JSC::DFG::doesGC):

  • dfg/DFGFixupPhase.cpp:

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

  • dfg/DFGNode.h:

(JSC::DFG::Node::convertToToString):

  • dfg/DFGNodeType.h:
  • dfg/DFGOperations.cpp:
  • dfg/DFGOperations.h:
  • dfg/DFGPredictionPropagationPhase.cpp:
  • dfg/DFGSafeToExecute.h:

(JSC::DFG::safeToExecute):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileToStringOrCallStringConstructorOrStringValueOf):
(JSC::DFG::SpeculativeJIT::compileToStringOrCallStringConstructor): Deleted.

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

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

  • dfg/DFGSpeculativeJIT64.cpp:

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

  • ftl/FTLCapabilities.cpp:

(JSC::FTL::canCompile):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileNode):
(JSC::FTL::DFG::LowerDFGToB3::compileToStringOrCallStringConstructorOrStringValueOf):
(JSC::FTL::DFG::LowerDFGToB3::compileToStringOrCallStringConstructor): Deleted.

11:49 AM Changeset in webkit [235789] by aakash_jain@apple.com
  • 3 edits in trunk/Tools

[ews-build] API tests should output result summary in json
https://bugs.webkit.org/show_bug.cgi?id=189417

Reviewed by Lucas Forschler.

  • BuildSlaveSupport/ews-build/steps.py:

(RunAPITests): Passed --json-output parameter to run-api-tests.

  • BuildSlaveSupport/ews-build/steps_unittest.py: Updated unit-tests.
11:15 AM Changeset in webkit [235788] by commit-queue@webkit.org
  • 4 edits in trunk

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

RunLoopCF does not agree to the fix (Requested by yusukesuzuki
on #webkit).

Reverted changeset:

"[RunLoopGeneric] OneShotTimer should be inactive when fired."
https://bugs.webkit.org/show_bug.cgi?id=189335
https://trac.webkit.org/changeset/235784

10:50 AM Changeset in webkit [235787] by Alan Bujtas
  • 7 edits in trunk/Source/WebCore

[LFC] Replace "computed" value with "used" value to match spec language
https://bugs.webkit.org/show_bug.cgi?id=189414

Reviewed by Antti Koivisto.

  • layout/FormattingContext.cpp:

(WebCore::Layout::FormattingContext::computeOutOfFlowHorizontalGeometry const):
(WebCore::Layout::FormattingContext::computeOutOfFlowVerticalGeometry const):

  • layout/FormattingContext.h:

(WebCore::Layout::FormattingContext::Geometry::outOfFlowVerticalGeometry):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowHorizontalGeometry):
(WebCore::Layout::FormattingContext::Geometry::floatingHeightAndMargin):
(WebCore::Layout::FormattingContext::Geometry::floatingWidthAndMargin):
(WebCore::Layout::FormattingContext::Geometry::inlineReplacedHeightAndMargin):
(WebCore::Layout::FormattingContext::Geometry::inlineReplacedWidthAndMargin):
(WebCore::Layout::FormattingContext::Geometry::complicatedCases):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedVerticalGeometry):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedHorizontalGeometry):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedVerticalGeometry):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedHorizontalGeometry):
(WebCore::Layout::FormattingContext::Geometry::floatingReplacedHeightAndMargin):
(WebCore::Layout::FormattingContext::Geometry::floatingReplacedWidthAndMargin):
(WebCore::Layout::FormattingContext::Geometry::floatingNonReplacedWidthAndMargin):

  • layout/FormattingContextGeometry.cpp:

(WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedVerticalGeometry):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedHorizontalGeometry):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedVerticalGeometry):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedHorizontalGeometry):
(WebCore::Layout::FormattingContext::Geometry::complicatedCases):
(WebCore::Layout::FormattingContext::Geometry::floatingNonReplacedWidthAndMargin):
(WebCore::Layout::FormattingContext::Geometry::floatingReplacedHeightAndMargin):
(WebCore::Layout::FormattingContext::Geometry::floatingReplacedWidthAndMargin):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowVerticalGeometry):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowHorizontalGeometry):
(WebCore::Layout::FormattingContext::Geometry::floatingHeightAndMargin):
(WebCore::Layout::FormattingContext::Geometry::floatingWidthAndMargin):
(WebCore::Layout::FormattingContext::Geometry::inlineReplacedHeightAndMargin):
(WebCore::Layout::FormattingContext::Geometry::inlineReplacedWidthAndMargin):

  • layout/blockformatting/BlockFormattingContext.cpp:

(WebCore::Layout::BlockFormattingContext::computeWidthAndMargin const):
(WebCore::Layout::BlockFormattingContext::computeHeightAndMargin const):

  • layout/blockformatting/BlockFormattingContext.h:

(WebCore::Layout::BlockFormattingContext::Geometry::inFlowHeightAndMargin):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowWidthAndMargin):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedHeightAndMargin):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedWidthAndMargin):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowReplacedWidthAndMargin):

  • layout/blockformatting/BlockFormattingContextGeometry.cpp:

(WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedHeightAndMargin):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedWidthAndMargin):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowReplacedWidthAndMargin):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowHeightAndMargin):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowWidthAndMargin):

10:29 AM Changeset in webkit [235786] by yusukesuzuki@slowstart.org
  • 19 edits
    1 move in trunk/Source/JavaScriptCore

[WebAssembly] Optimize JS to Wasm call by using pointer of Signature as SignatureIndex
https://bugs.webkit.org/show_bug.cgi?id=189401

Reviewed by Mark Lam.

SignatureInformation is a global repository for Signature to make Signature atomic.
It takes Ref<Signature>&& and generates SignatureIndex. And we get const Signature&
by using this SignatureIndex. However, converting SignatureIndex to const Signature&
always looks up a hash table. This is costly since JS to Wasm calls always use
Signature& to check types of arguments.

Instead of using this hash table, this patch uses a pointer of Signature as SignatureIndex.
This allows us to convert SignatureIndex to Signature by just casting it.

We also optimize SignatureInformation::singleton by making an accessor function inlined.
And we move ProtoCallFrame::init to the header since it's just setting values.

This change significantly optimizes JS to wasm calls (1e7 times) from 600ms to 320ms.

In the future, we can remove SignatureIndex by directly handling Ref<Signature>: adding
deref() of Signature which unregisters itself from SignatureInformation carefully. Or we can
make SignatureIndex uint32_t by introducing a mechanism similar to StructureID.

  • JavaScriptCore.xcodeproj/project.pbxproj:
  • Sources.txt:
  • interpreter/ProtoCallFrame.h:

(JSC::ProtoCallFrame::init):

  • wasm/WasmB3IRGenerator.cpp:

(JSC::Wasm::B3IRGenerator::addCallIndirect):

  • wasm/WasmBBQPlan.cpp:
  • wasm/WasmFormat.h:

(JSC::Wasm::WasmToWasmImportableFunction::offsetOfSignatureIndex):

  • wasm/WasmFunctionParser.h:
  • wasm/WasmModule.h:
  • wasm/WasmOMGPlan.cpp:
  • wasm/WasmSectionParser.cpp:

(JSC::Wasm::SectionParser::parseType):

  • wasm/WasmSignature.cpp:

(JSC::Wasm::SignatureInformation::adopt):
(JSC::Wasm::SignatureInformation::tryCleanup):
(JSC::Wasm::SignatureInformation::singleton): Deleted.
(JSC::Wasm::SignatureInformation::get): Deleted.

  • wasm/WasmSignature.h:

(JSC::Wasm::Signature::index const):
(JSC::Wasm::SignatureHash::SignatureHash):
(JSC::Wasm::SignatureHash::hash):
(JSC::Wasm::SignatureHash::isHashTableDeletedValue const):
(JSC::Wasm::SignatureHash::empty): Deleted.
(JSC::Wasm::SignatureHash::deleted): Deleted.

  • wasm/WasmSignatureInlines.h: Renamed from Source/JavaScriptCore/interpreter/ProtoCallFrame.cpp.

(JSC::Wasm::SignatureInformation::singleton):
(JSC::Wasm::SignatureInformation::get):

  • wasm/js/JSToWasm.cpp:
  • wasm/js/JSWebAssemblyModule.h:
  • wasm/js/WasmToJS.cpp:

(JSC::Wasm::wasmToJS):

  • wasm/js/WebAssemblyFunction.cpp:
  • wasm/js/WebAssemblyModuleRecord.cpp:
  • wasm/js/WebAssemblyWrapperFunction.cpp:
9:57 AM Changeset in webkit [235785] by yusukesuzuki@slowstart.org
  • 5 edits in trunk/Source/JavaScriptCore

[JSC] Put .throwStackOverflow code after the fast path in LLInt doVMEntry
https://bugs.webkit.org/show_bug.cgi?id=189410

Reviewed by Mark Lam.

Put .throwStackOverflow code after the fast path in LLInt doVMEntry to
make doVMEntry code tight.

  • llint/LLIntThunks.cpp:

(JSC::vmEntryToWasm): Deleted.

  • llint/LLIntThunks.h:

(JSC::vmEntryToWasm):

  • llint/LowLevelInterpreter32_64.asm:
  • llint/LowLevelInterpreter64.asm:
9:27 AM Changeset in webkit [235784] by yoshiaki.jitsukawa@sony.com
  • 4 edits in trunk

[RunLoopGeneric] OneShotTimer should be inactive when fired.
https://bugs.webkit.org/show_bug.cgi?id=189335

Reviewed by Yusuke Suzuki.

Source/WTF:

  • wtf/generic/RunLoopGeneric.cpp:

(WTF::RunLoop::TimerBase::ScheduledTask::fired):
(WTF::RunLoop::TimerBase::isActive const):

Deactivate one-shot timer before invoking its callback.

Tools:

  • TestWebKitAPI/Tests/WTF/RunLoop.cpp:

(TestWebKitAPI::TEST):

Add test expectations about timer's active state.

Add a new test to restart a one-shot timer within
its fired callback.

8:51 AM Changeset in webkit [235783] by Alan Bujtas
  • 2 edits in trunk/LayoutTests

[iOS] Unreviewed test gardening.

  • platform/ios/TestExpectations:
8:38 AM Changeset in webkit [235782] by Brent Fulgham
  • 4 edits in trunk/Source/WebKit

Unreviewed syntax fix after r235781

Don't use hash-quote syntax for these non-regex inputs.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb:
  • Resources/SandboxProfiles/ios/com.apple.WebKit.Storage.sb:
  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
5:28 AM Changeset in webkit [235781] by Brent Fulgham
  • 4 edits in trunk/Source/WebKit

[iOS] Move default mach-lookup deny to after common.sb is imported
https://bugs.webkit.org/show_bug.cgi?id=189385
<rdar://problem/43624193>

Reviewed by Eric Carlson.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb: Move the 'deny mach-lookup' call later in the file.
  • Resources/SandboxProfiles/ios/com.apple.WebKit.Storage.sb: Ditto.
  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb: Ditto.

Sep 6, 2018:

10:55 PM Changeset in webkit [235780] by rniwa@webkit.org
  • 3 edits in trunk/Source/WebCore

ShadowRoot should have its own node flag
https://bugs.webkit.org/show_bug.cgi?id=189392

Reviewed by Antti Koivisto.

Added IsShadowRootFlag and IsDocumentNodeFlag, and removed IsDocumentFragmentFlag and IsStyledElementFlag.
Also re-ordered flags to group flags used by subclasses below ones directly used by Node in
accordinate with the comment.

No new tests since there should be no behavioral change.

  • dom/ContainerNode.h:

(WebCore::Node::isTreeScope const): Deleted.

  • dom/Node.h:

(WebCore::Node::isStyledElement const): Check if this is a HTML, SVG, or MathML element instead.
(WebCore::Node::isDocumentNode const): Simply check IsDocumentNodeFlag.
(WebCore::Node::isTreeScope const): Check if this is a document or a shadow root Instead of comparing
the tree scope to this.
(WebCore::Node::isDocumentFragment const): Check if this is a container node which is neither document,
element, nor shadow root.
(WebCore::Node::isShadowRoot const): Simply check IsShadowRootFlag. This is the change needed to fix
the blockign bug 166748.
(WebCore::Node::flagIsShadowRoot): Added. Will be used in the bug 166748.

10:54 PM Changeset in webkit [235779] by bshafiei@apple.com
  • 7 edits
    2 adds in branches/safari-606-branch

Cherry-pick r235721. rdar://problem/44212406

Source/WebCore:
The width of an empty or nullptr TextRun should be zero
https://bugs.webkit.org/show_bug.cgi?id=189154
<rdar://problem/43685926>

Reviewed by Zalan Bujtas.

If a page has an empty TextRun and attempts to paint it we can crash with a nullptr.

This patch recognizes that an empty TextRun should always produce a zero width, rather than
attempt to compute this value from font data. It also prevents ListBox from attempting to
paint a null string.

Test: fast/text/null-string-textrun.html

  • platform/graphics/FontCascade.cpp: (WebCore::FontCascade::widthOfTextRange const): An empty TextRun has zero width. (WebCore::FontCascade::width const): Ditto.
  • platform/graphics/TextRun.h: (WebCore::TextRun::TextRun): ASSERT that the supplied String is non-null. (WebCore::TextRun::setText): Ditto.
  • rendering/RenderListBox.cpp: (WebCore::RenderListBox::paintItemForeground): Don't attempt to paint a null string.

Source/WTF:
The width of an empty or nullptr TextRun should be zero
https://bugs.webkit.org/show_bug.cgi?id=189154
<rdar://problem/43685926>

Reviewed by Zalan Bujtas.

Most accessors in WTFString.cpp, such as isAllASCII(), hash(), etc., perform a nullptr check
before using m_impl, but is8Bit() does not.

This patch adds a check in the is8Bit() implementation to be consistent with other methods,
and to address a small number of crashes observed in testing.

  • wtf/text/WTFString.h: (WTF::String::is8Bit const):

LayoutTests:
The width of a nullptr TextRun should be zero
https://bugs.webkit.org/show_bug.cgi?id=189154
<rdar://problem/43685926>

Reviewed by Zalan Bujtas.

  • fast/text/null-string-textrun-expected.txt: Added.
  • fast/text/null-string-textrun.html: Added.

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

9:40 PM Changeset in webkit [235778] by yusukesuzuki@slowstart.org
  • 3 edits in trunk/Source/JavaScriptCore

[WebAssembly] Optimize JS to Wasm call by removing Vector allocation
https://bugs.webkit.org/show_bug.cgi?id=189353

Reviewed by Mark Lam.

JS to Wasm call always allocates Vector for the arguments. This is really costly if the wasm function is small.
This patch adds an initial size parameter to the Vector to avoid allocations for small sized arguments.

  • runtime/ArgList.h:
  • wasm/js/WebAssemblyFunction.cpp:

(JSC::callWebAssemblyFunction):

9:24 PM Changeset in webkit [235777] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC] Inline replaced height calculation should use "used value"
https://bugs.webkit.org/show_bug.cgi?id=189395

Reviewed by Antti Koivisto.

Use the already assigned width value (aka used value) instead of the computed value when computing the inline's height.
see https://www.w3.org/TR/CSS22/cascade.html#value-stages for "used" and "computed" value.

  • layout/FormattingContextGeometry.cpp:

(WebCore::Layout::FormattingContext::Geometry::inlineReplacedHeightAndMargin):

9:24 PM Changeset in webkit [235776] by yusukesuzuki@slowstart.org
  • 3 edits in trunk/Source/JavaScriptCore

[JSC] Clean up StructureStubClearingWatchpoint
https://bugs.webkit.org/show_bug.cgi?id=189156

Reviewed by Saam Barati.

Cleaning up StructureStubClearingWatchpoint by holding StructureStubClearingWatchpoint in Bag
in WatchpointsOnStructureStubInfo. This removes hacky linked list code for StructureStubClearingWatchpoint.

  • bytecode/StructureStubClearingWatchpoint.cpp:

(JSC::WatchpointsOnStructureStubInfo::addWatchpoint):
(JSC::StructureStubClearingWatchpoint::~StructureStubClearingWatchpoint): Deleted.
(JSC::StructureStubClearingWatchpoint::push): Deleted.
(JSC::WatchpointsOnStructureStubInfo::~WatchpointsOnStructureStubInfo): Deleted.

  • bytecode/StructureStubClearingWatchpoint.h:

(JSC::StructureStubClearingWatchpoint::StructureStubClearingWatchpoint):

8:04 PM Changeset in webkit [235775] by wenson_hsieh@apple.com
  • 43 edits in trunk/Source

Refactor WebCore::EditAction to be an 8-bit enum class
https://bugs.webkit.org/show_bug.cgi?id=189383

Reviewed by Dan Bernstein.

Source/WebCore:

Currently, EditAction.h defines an EditAction as an enum. This patch changes EditAction to instead be an 8-bit-
wide enum class, and renames all EditAction values from EditAction(*) to EditAction::(*).

No change in behavior.

  • editing/ApplyStyleCommand.h:

(WebCore::ApplyStyleCommand::create):

  • editing/CompositeEditCommand.cpp:

(WebCore::CompositeEditCommand::apply):
(WebCore::deleteSelectionEditingActionForEditingAction):

  • editing/CompositeEditCommand.h:

(WebCore::EditCommandComposition::wasCreateLinkCommand const):

  • editing/CreateLinkCommand.h:
  • editing/DeleteFromTextNodeCommand.h:

(WebCore::DeleteFromTextNodeCommand::create):

  • editing/DeleteSelectionCommand.h:

(WebCore::DeleteSelectionCommand::create):

  • editing/DictationCommand.cpp:

(WebCore::DictationCommand::insertTextRunWithoutNewlines):
(WebCore::DictationCommand::insertParagraphSeparator):

  • editing/EditAction.h:

(): Deleted.

  • editing/EditCommand.cpp:

(WebCore::inputTypeNameForEditingAction):

  • editing/EditCommand.h:
  • editing/Editor.cpp:

(WebCore::inputEventDataForEditingStyleAndAction):
(WebCore::ClearTextCommand::editingAction const):
(WebCore::Editor::handleTextEvent):
(WebCore::Editor::replaceSelectionWithFragment):
(WebCore::Editor::performCutOrCopy):
(WebCore::Editor::setBaseWritingDirection):
(WebCore::Editor::markMisspellingsAfterTypingToWord):
(WebCore::Editor::changeBackToReplacedString):
(WebCore::Editor::transpose):

  • editing/Editor.h:
  • editing/EditorCommand.cpp:

(WebCore::applyCommandToFrame):
(WebCore::executeInsertFragment):
(WebCore::executeBackColor):
(WebCore::executeFontName):
(WebCore::executeFontSize):
(WebCore::executeFontSizeDelta):
(WebCore::executeForeColor):
(WebCore::executeJustifyCenter):
(WebCore::executeJustifyFull):
(WebCore::executeJustifyLeft):
(WebCore::executeJustifyRight):
(WebCore::executeMakeTextWritingDirectionLeftToRight):
(WebCore::executeMakeTextWritingDirectionNatural):
(WebCore::executeMakeTextWritingDirectionRightToLeft):
(WebCore::executeStrikethrough):
(WebCore::executeSubscript):
(WebCore::executeSuperscript):
(WebCore::executeToggleBold):
(WebCore::executeToggleItalic):
(WebCore::executeUnderline):
(WebCore::executeUnscript):

  • editing/FormatBlockCommand.h:
  • editing/IndentOutdentCommand.h:
  • editing/InsertIntoTextNodeCommand.h:

(WebCore::InsertIntoTextNodeCommand::create):

  • editing/InsertListCommand.cpp:

(WebCore::InsertListCommand::editingAction const):

  • editing/InsertNodeBeforeCommand.h:

(WebCore::InsertNodeBeforeCommand::create):

  • editing/InsertParagraphSeparatorCommand.h:

(WebCore::InsertParagraphSeparatorCommand::create):

  • editing/InsertTextCommand.h:

(WebCore::InsertTextCommand::create):
(WebCore::InsertTextCommand::createWithMarkerSupplier):

  • editing/MoveSelectionCommand.cpp:

(WebCore::MoveSelectionCommand::doApply):
(WebCore::MoveSelectionCommand::editingAction const):

  • editing/RemoveFormatCommand.h:
  • editing/RemoveNodeCommand.h:

(WebCore::RemoveNodeCommand::create):

  • editing/ReplaceRangeWithTextCommand.cpp:

(WebCore::ReplaceRangeWithTextCommand::ReplaceRangeWithTextCommand):
(WebCore::ReplaceRangeWithTextCommand::doApply):

  • editing/ReplaceSelectionCommand.cpp:

(WebCore::ReplaceSelectionCommand::completeHTMLReplacement):
(WebCore::ReplaceSelectionCommand::performTrivialReplace):

  • editing/ReplaceSelectionCommand.h:

(WebCore::ReplaceSelectionCommand::create):

  • editing/SpellingCorrectionCommand.cpp:

(WebCore::SpellingCorrectionCommand::SpellingCorrectionCommand):
(WebCore::SpellingCorrectionCommand::doApply):

  • editing/TextInsertionBaseCommand.h:
  • editing/TypingCommand.cpp:

(WebCore::editActionForTypingCommand):
(WebCore::editActionIsDeleteByTyping):
(WebCore::TypingCommand::isBeforeInputEventCancelable const):
(WebCore::TypingCommand::inputEventData const):
(WebCore::TypingCommand::inputEventDataTransfer const):
(WebCore::TypingCommand::insertTextRunWithoutNewlines):
(WebCore::TypingCommand::insertParagraphSeparator):

  • editing/UnlinkCommand.h:
  • editing/ios/DictationCommandIOS.cpp:

(WebCore::DictationCommandIOS::DictationCommandIOS):

  • editing/ios/EditorIOS.mm:

(WebCore::Editor::removeUnchangeableStyles):

  • page/DragController.cpp:

(WebCore::DragController::concludeEditDrag):

Source/WebKit:

  • UIProcess/WebEditCommandProxy.cpp:

(WebKit::WebEditCommandProxy::nameForEditAction):

  • WebProcess/WebPage/mac/WebPageMac.mm:

(WebKit::WebPage::changeFontAttributes):
(WebKit::WebPage::changeFont):

Source/WebKitLegacy/mac:

  • WebCoreSupport/WebEditorClient.mm:

(undoNameForEditAction):

  • WebView/WebHTMLView.mm:

(-[WebHTMLView pasteFont:]):
(-[WebHTMLView changeFont:]):
(-[WebHTMLView changeAttributes:]):
(-[WebHTMLView _undoActionFromColorPanelWithSelector:]):
(-[WebHTMLView changeColor:]):

  • WebView/WebView.mm:

(-[WebView setTypingStyle:]):

Source/WebKitLegacy/win:

  • WebCoreSupport/WebEditorClient.cpp:

(undoNameForEditAction):

7:36 PM Changeset in webkit [235774] by Simon Fraser
  • 3 edits in trunk/Source/WebCore

Fix the build for non-Cocoa platforms after r235772.

  • platform/graphics/cairo/GradientCairo.cpp:

(WebCore::Gradient::createPlatformGradient):

  • platform/graphics/win/GradientDirect2D.cpp:

(WebCore::Gradient::generateGradient):
(WebCore::Gradient::fill):

7:27 PM Changeset in webkit [235773] by Alan Bujtas
  • 8 edits
    2 adds in trunk

[LFC] Add support for min/max-height percentage values.
https://bugs.webkit.org/show_bug.cgi?id=189391

Reviewed by Antti Koivisto.

Source/WebCore:

The percentage is calculated with respect to the height of the generated box's containing block.
If the height of the containing block is not specified explicitly (i.e., it depends on content height), and this element
is not absolutely positioned, the percentage value is treated as '0' (for 'min-height') or 'none' (for 'max-height').

Test: fast/block/block-only/min-max-height-percentage.html

  • layout/FormattingContext.cpp:

(WebCore::Layout::FormattingContext::computeOutOfFlowVerticalGeometry const):

  • layout/FormattingContext.h:
  • layout/FormattingContextGeometry.cpp:

(WebCore::Layout::FormattingContext::Geometry::computedValueIfNotAuto):
(WebCore::Layout::FormattingContext::Geometry::computedMaxHeight):
(WebCore::Layout::FormattingContext::Geometry::computedMinHeight):

  • layout/blockformatting/BlockFormattingContext.cpp:

(WebCore::Layout::BlockFormattingContext::computeHeightAndMargin const):

Tools:

  • LayoutReloaded/misc/LFC-passing-tests.txt:

LayoutTests:

  • fast/block/block-only/min-max-height-percentage-expected.txt: Added.
  • fast/block/block-only/min-max-height-percentage.html: Added.
6:36 PM Changeset in webkit [235772] by Megan Gardner
  • 17 edits
    10 adds in trunk

Add Support for Conic Gradients
https://bugs.webkit.org/show_bug.cgi?id=189329
<rdar://problem/21444701>

Reviewed by Simon Fraser.

Source/WebCore:

Add support for rendering CSS conic gradients.
The parsing work was already done, this just hooks up the data we have
with the CG functionality for conic gradients. Add the needed plumbing
to allow for this additional type and fill in the creation of
a conic gradient.

Tests: fast/gradients/conic-repeating.html

fast/gradients/conic.html

  • css/CSSGradientValue.cpp:

(WebCore::createGradient):
(WebCore::LinearGradientAdapter::gradientLength const):
(WebCore::RadialGradientAdapter::gradientLength const):
(WebCore::ConicGradientAdapter::ConicGradientAdapter):
(WebCore::ConicGradientAdapter::gradientLength const):
(WebCore::ConicGradientAdapter::maxExtent const):
(WebCore::ConicGradientAdapter::normalizeStopsAndEndpointsOutsideRange):

Compute what the color stops should be if they extend past 0-1

(WebCore::CSSGradientValue::computeStops):
(WebCore::CSSConicGradientValue::createGradient):
(WebCore::LinearGradientAdapter::startPoint const): Deleted.
(WebCore::LinearGradientAdapter::endPoint const): Deleted.
(WebCore::RadialGradientAdapter::startPoint const): Deleted.
(WebCore::RadialGradientAdapter::endPoint const): Deleted.

Start and End points weren't very universal. All we really need from these
gradientAdapters is their length, so just ask for that instead.

  • inspector/InspectorCanvas.cpp:

(WebCore::InspectorCanvas::buildArrayForCanvasGradient):

  • platform/graphics/Gradient.cpp:

(WebCore::Gradient::create):
(WebCore::Gradient::Gradient):
(WebCore::Gradient::type const):
(WebCore::Gradient::adjustParametersForTiledDrawing):
(WebCore::Gradient::isZeroSize const):
(WebCore::Gradient::hash const):

  • platform/graphics/Gradient.h:
  • platform/graphics/cg/GradientCG.cpp:

(WebCore::Gradient::paint):

Source/WebCore/PAL:

Define the CG functionality for conic gradients.

  • pal/spi/cg/CoreGraphicsSPI.h:

Source/WebKit:

Connect up web preferences to allow conic gradients to be turned on in the
experimental features menu.

  • Shared/WebPreferences.yaml:

LayoutTests:

Simple tests to see if conic gradients are rendered properly.

  • fast/gradients/conic-expected.html: Added.
  • fast/gradients/conic-repeating-expected.html: Added.
  • fast/gradients/conic-repeating.html: Added.
  • fast/gradients/conic.html: Added.
5:24 PM Changeset in webkit [235771] by Simon Fraser
  • 4 edits in trunk/Tools

Log when leak detection changes the test result
https://bugs.webkit.org/show_bug.cgi?id=189293

Reviewed by Jon Lee.

When you have an "Leak" expectation in TestExpectations, it's confusing to see a test unexpectedly pass,
but then show up as an expected fail at the end (because leak detection happens at the end of a shard).
So log when leak detection changes a test result.

  • Scripts/webkitpy/layout_tests/controllers/layout_test_runner.py:

(LayoutTestRunner._annotate_results_with_additional_failures):

  • Scripts/webkitpy/layout_tests/models/test_expectations.py:

(TestExpectations):

5:21 PM Changeset in webkit [235770] by Adrian Perez de Castro
  • 1 copy in releases/WPE WebKit/webkit-2.21.92

Release WPE WebKit 2.21.92

5:05 PM Changeset in webkit [235769] by wenson_hsieh@apple.com
  • 17 edits
    2 adds in trunk

[macOS] [WK2] Support changing attributes for selected text (text shadow, underline, strike-through)
https://bugs.webkit.org/show_bug.cgi?id=189356
<rdar://problem/44185674>

Reviewed by Tim Horton.

Source/WebCore:

Add support for encoding and decoding FontAttributeChanges, so that we can send FontAttributeChanges over IPC in
WebKit2. Also change m_verticalAlign to a new VerticalAlignChange enum type, so that it's no longer tied to the
CSS property values of "vertical-align", and can be encoded/decoded separately from VerticalAlign in
RenderStyleConstants.

Test: FontManagerTests.ChangeAttributesWithFontEffectsBox

  • editing/FontAttributeChanges.cpp:

(WebCore::FontAttributeChanges::createEditingStyle const):

  • editing/FontAttributeChanges.h:

(WebCore::FontAttributeChanges::setVerticalAlign):
(WebCore::FontShadow::encode const):
(WebCore::FontShadow::decode):
(WebCore::FontAttributeChanges::encode const):
(WebCore::FontAttributeChanges::decode):

  • platform/mac/WebCoreNSFontManagerExtras.mm:

(WebCore::computedFontAttributeChanges):

Source/WebKit:

Implement -[WKWebView changeAttributes:], so that WKWebView can carry out more types of font style changes via
NSFontPanel. This patch makes it possible to (1) change text shadow, (2) add or remove strike-through, and (3)
add or remove underlines from selected text using the font panel.

This builds on the mechanisms introduced in r235748 to compute font attribute changes in the UI process and
propagate this information to the web process, where we're able to create and apply an EditingStyle to the
current selection.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView changeAttributes:]):

  • UIProcess/Cocoa/WebViewImpl.h:
  • UIProcess/Cocoa/WebViewImpl.mm:

(WebKit::WebViewImpl::changeFontAttributesFromSender):

  • UIProcess/WebPageProxy.h:
  • UIProcess/mac/WebPageProxyMac.mm:

(WebKit::WebPageProxy::changeFontAttributes):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:

Add boilerplate IPC support.

  • WebProcess/WebPage/mac/WebPageMac.mm:

(WebKit::WebPage::changeFontAttributes):

Tools:

Adds a new API test to verify that some font attributes (text shadow, underline, and strike-through) can be
added and removed using NSFontPanel.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/mac/FontManagerTests.mm:

Add the new API test.

(TestWebKitAPI::TEST):

  • TestWebKitAPI/cocoa/TestWKWebView.h:
  • TestWebKitAPI/mac/NSFontPanelTesting.h: Added.
  • TestWebKitAPI/mac/NSFontPanelTesting.mm: Added.

Introduce a new file that extends NSFontPanel with some additional testing functionality. This includes the
ability to interact with the text shadow toggle button, choose the text shadow blur radius and opacity, and
change underline and strike-through styles.

(findSubviewOfClass):
(findMenuItemWithTitle):
(-[NSFontPanel fontEffectsBox]):

NSFontEffectsBox (an internal AppKit class) is the sender in the case where -changeAttributes: is invoked
through interaction with the font panel. To simulate this for testing, grab this font effects box and pass it
directory to -changeAttributes:.

(-[NSFontPanel chooseUnderlineMenuItemWithTitle:]):
(-[NSFontPanel chooseStrikeThroughMenuItemWithTitle:]):

The supported values for these menu items are "none" and "single", which adds a single underline or
strike-through to selected text. We grab these menu items by asking for the font panel's NSToolbar, and finding
the relevant menu items via toolbar item identifiers.

(-[NSFontPanel _didChangeAttributes]):
(-[NSFontPanel shadowBlurSlider]):
(-[NSFontPanel shadowOpacitySlider]):
(-[NSFontPanel shadowToggleButton]):
(-[NSFontPanel toggleShadow]):
(-[NSFontPanel shadowOpacity]):
(-[NSFontPanel setShadowOpacity:]):
(-[NSFontPanel shadowBlur]):
(-[NSFontPanel setShadowBlur:]):
(-[NSFontPanel _toolbarItemWithIdentifier:]):

4:52 PM Changeset in webkit [235768] by bshafiei@apple.com
  • 7 edits in branches/safari-606-branch/Source

Versioning.

4:50 PM Changeset in webkit [235767] by bshafiei@apple.com
  • 1 copy in tags/Safari-606.2.1

Tag Safari-606.2.1.

4:47 PM Changeset in webkit [235766] by Adrian Perez de Castro
  • 4 edits in releases/WebKitGTK/webkit-2.22

Unreviewed. Update OptionsWPE.cmake and NEWS for 2.21.92 release.

.:

  • Source/cmake/OptionsWPE.cmake: Bump version numbers.

Source/WebKit:

  • wpe/NEWS: Add release notes for 2.21.92.
4:44 PM Changeset in webkit [235765] by msaboff@apple.com
  • 3 edits
    1 add in trunk

Improper speculation type for Math.pow(NaN, 0) in Abstract Interpreter
https://bugs.webkit.org/show_bug.cgi?id=189380

Reviewed by Saam Barati.

JSTests:

New test.

  • stress/math-pow-nan-to-zero-spec-type.js: Added.

(func):
(test):

Source/JavaScriptCore:

Account for the case where in Math.pow(NaN, y) where y could be 0.

  • bytecode/SpeculatedType.cpp:

(JSC::typeOfDoublePow):

4:25 PM Changeset in webkit [235764] by Simon Fraser
  • 10 edits in trunk/Tools

run-webkit-tests prints confusing messages when test expectations list results that are not compatible with the run options
https://bugs.webkit.org/show_bug.cgi?id=189219

Reviewed by Jon Lee.

If you call run-webkit-tests without --pixel-tests, and a non-ref test is marked as ImageOnlyFailure,
it will be reported as unexpectedly passing. This is more confusing if you run without --world-leaks, yet
tests are marked as [ Leak ] in TestExpectations.

Fix by filtering out expectations that don't apply given the run options. So without --pixel-tests,
a non-ref ImageOnlyFailure becomes a Pass, and without --world-leaks, a Leak becomes a Pass.

Add various unit tests to test the various combinations.

  • Scripts/webkitpy/layout_tests/controllers/layout_test_runner.py:

(LayoutTestRunner._update_summary_with_result):
(LayoutTestRunner._annotate_results_with_additional_failures):

  • Scripts/webkitpy/layout_tests/controllers/layout_test_runner_unittest.py:

(LayoutTestRunnerTests.test_update_summary_with_result):

  • Scripts/webkitpy/layout_tests/models/test_expectations.py:

(TestExpectationsModel.get_expectations_or_pass):
(TestExpectationsModel):
(TestExpectationsModel.expectations_to_string):
(TestExpectationsModel.get_expectations_string):
(TestExpectations.filtered_expectations_for_test):
(TestExpectations):
(TestExpectations.matches_an_expected_result):

  • Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py:
  • Scripts/webkitpy/layout_tests/models/test_run_results.py:

(summarize_results):

  • Scripts/webkitpy/layout_tests/models/test_run_results_unittest.py:

(summarized_results):
(SummarizedResultsTest.setUp):
(SummarizedResultsTest.test_summarized_results_include_passes):
(SummarizedResultsTest):
(SummarizedResultsTest.test_summarized_results_world_leaks_disabled):

  • Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
  • Scripts/webkitpy/layout_tests/views/buildbot_results_unittest.py:

(BuildBotPrinterTests.test_print_unexpected_results):
(BuildBotPrinterTests.test_print_unexpected_results_with_options):
(BuildBotPrinterTests.test_print_results):

  • Scripts/webkitpy/port/test.py:

(unit_test_list):

3:39 PM Changeset in webkit [235763] by Alan Bujtas
  • 10 edits
    6 adds in trunk

[LFC][BFC] Add support for min(max)-height
https://bugs.webkit.org/show_bug.cgi?id=189377

Reviewed by Antti Koivisto.

Source/WebCore:

See https://www.w3.org/TR/CSS22/visudet.html#min-max-heights for details.

Tests: fast/block/block-only/absolute-position-min-max-height.html

fast/block/block-only/float-min-max-height.html
fast/block/block-only/inflow-min-max-height.html

  • layout/FormattingContext.cpp:

(WebCore::Layout::FormattingContext::computeOutOfFlowVerticalGeometry const):

  • layout/FormattingContext.h:

(WebCore::Layout::FormattingContext::Geometry::outOfFlowVerticalGeometry):
(WebCore::Layout::FormattingContext::Geometry::floatingHeightAndMargin):
(WebCore::Layout::FormattingContext::Geometry::inlineReplacedHeightAndMargin):
(WebCore::Layout::FormattingContext::Geometry::complicatedCases):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedVerticalGeometry):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedVerticalGeometry):
(WebCore::Layout::FormattingContext::Geometry::floatingReplacedHeightAndMargin):

  • layout/FormattingContextGeometry.cpp:

(WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedVerticalGeometry):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedVerticalGeometry):
(WebCore::Layout::FormattingContext::Geometry::complicatedCases):
(WebCore::Layout::FormattingContext::Geometry::floatingReplacedHeightAndMargin):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowVerticalGeometry):
(WebCore::Layout::FormattingContext::Geometry::floatingHeightAndMargin):
(WebCore::Layout::FormattingContext::Geometry::inlineReplacedHeightAndMargin):

  • layout/blockformatting/BlockFormattingContext.cpp:

(WebCore::Layout::BlockFormattingContext::computeHeightAndMargin const):

  • layout/blockformatting/BlockFormattingContext.h:

(WebCore::Layout::BlockFormattingContext::Geometry::inFlowHeightAndMargin):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedHeightAndMargin):

  • layout/blockformatting/BlockFormattingContextGeometry.cpp:

(WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedHeightAndMargin):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowHeightAndMargin):

Tools:

  • LayoutReloaded/misc/LFC-passing-tests.txt:

LayoutTests:

  • fast/block/block-only/absolute-position-min-max-height-expected.txt: Added.
  • fast/block/block-only/absolute-position-min-max-height.html: Added.
  • fast/block/block-only/float-min-max-height-expected.txt: Added.
  • fast/block/block-only/float-min-max-height.html: Added.
  • fast/block/block-only/inflow-min-max-height-expected.txt: Added.
  • fast/block/block-only/inflow-min-max-height.html: Added.
3:32 PM Changeset in webkit [235762] by Dewei Zhu
  • 3 edits in trunk/Tools

BenchmarkResults.format should support specifying depth of tests to show.
https://bugs.webkit.org/show_bug.cgi?id=189135

Reviewed by Ryosuke Niwa.

Added the option to specify the depth of tests to show.

  • Scripts/webkitpy/benchmark_runner/benchmark_results.py:

(BenchmarkResults):
(BenchmarkResults.format): Added 'max_depth' option.
(BenchmarkResults._format_tests): Added unit tests for 'max_depth'.

3:25 PM Changeset in webkit [235761] by Simon Fraser
  • 3 edits in trunk/Tools

An EWS run that has leak test failures does not correctly add bugzilla comments showing the failures
https://bugs.webkit.org/show_bug.cgi?id=189368

Reviewed by Alexey Proskuryakov.

Include FailureDocumentLeak in ALL_FAILURE_CLASSES (with a fairly redundant test),
which should fix EWS showing leaks in Bugzilla.

  • Scripts/webkitpy/layout_tests/models/test_failures.py:

(FailureDocumentLeak.init):

  • Scripts/webkitpy/layout_tests/models/test_failures_unittest.py:

(TestFailuresTest.test_all_failure_classes):

3:10 PM Changeset in webkit [235760] by eric.carlson@apple.com
  • 12 edits in trunk/Source/WebCore

[MediaStream] Include supported frame rates in video capture presets
https://bugs.webkit.org/show_bug.cgi?id=189351
<rdar://problem/44188917>

Reviewed by Youenn Fablet.

No new tests, no functionality changed.

Include frame rates as well as width/height in video capture presets, so the mock video
capture devices model real camera devices more closely.

  • platform/mediastream/RealtimeMediaSource.cpp:

(WebCore::RealtimeMediaSource::setSizeAndFrameRate): Renamed from applySizeAndFrameRate. Use
setSize instead of setWidth and setHeight.
(WebCore::RealtimeMediaSource::applyConstraints): applySizeAndFrameRate -> setSizeAndFrameRate.
(WebCore::RealtimeMediaSource::applySizeAndFrameRate): Deleted.
(WebCore::RealtimeMediaSource::setWidth): Deleted.
(WebCore::RealtimeMediaSource::setHeight): Deleted.

  • platform/mediastream/RealtimeMediaSource.h:
  • platform/mediastream/RealtimeVideoSource.cpp:

(WebCore::RealtimeVideoSource::setSupportedPresets): New.
(WebCore::updateMinMax):
(WebCore::RealtimeVideoSource::addSupportedCapabilities const): Calculate capabilities from
presets.
(WebCore::RealtimeVideoSource::supportsSizeAndFrameRate): Use bestSupportedSizeAndFrameRate.
(WebCore::RealtimeVideoSource::bestSupportedSizeAndFrameRate):
(WebCore::RealtimeVideoSource::setSizeAndFrameRate):
(WebCore::RealtimeVideoSource::setSupportedFrameRates): Deleted.
(WebCore::RealtimeVideoSource::bestSupportedCaptureSizeForWidthAndHeight): Deleted.
(WebCore::RealtimeVideoSource::applySizeAndFrameRate): Deleted.
(WebCore::RealtimeVideoSource::supportsFrameRate): Deleted.

  • platform/mediastream/RealtimeVideoSource.h:

(WebCore::RealtimeVideoSource::setSupportedCaptureSizes): Deleted.

  • platform/mediastream/gstreamer/GStreamerVideoCaptureSource.cpp:

(WebCore::GStreamerVideoCaptureSource::stopProducingData):

  • platform/mediastream/mac/AVVideoCaptureSource.h:
  • platform/mediastream/mac/AVVideoCaptureSource.mm:

(WebCore::AVVideoCaptureSource::setSizeAndFrameRate):
(WebCore::AVVideoCaptureSource::applySizeAndFrameRate): Deleted.

  • platform/mediastream/mac/ScreenDisplayCaptureSourceMac.mm:

(WebCore::ScreenDisplayCaptureSourceMac::createDisplayStream):

  • platform/mock/MockMediaDevice.h:

(WebCore::MockCameraProperties::encode const):
(WebCore::MockCameraProperties::decode):
(WebCore::MockDisplayProperties::encode const):
(WebCore::MockDisplayProperties::decode):

  • platform/mock/MockRealtimeMediaSourceCenter.cpp:

(WebCore::defaultDevices):

  • platform/mock/MockRealtimeVideoSource.cpp:

(WebCore::MockRealtimeVideoSource::MockRealtimeVideoSource):
(WebCore::MockRealtimeVideoSource::capabilities const):
(WebCore::MockRealtimeVideoSource::settings const):

2:52 PM WebKitGTK/StableRelease edited by Adrian Perez de Castro
Add link to the 2.22.x releases wiki page (diff)
2:48 PM Changeset in webkit [235759] by dbates@webkit.org
  • 2 edits
    2 adds in trunk/LayoutTests

[iOS] Add a test to ensure that DOM keyup events have the correct details
https://bugs.webkit.org/show_bug.cgi?id=189327

Reviewed by Wenson Hsieh.

Until we fix <rdar://problem/35282761> DOM keyup events will have incorrect details on iOS
when dispatched in response to a hardware keyboard press. For now, land expected failure results.

  • fast/events/ios/keyup-expected.txt: Added.
  • fast/events/ios/keyup.html: Added.
  • resources/ui-helper.js:

(window.UIHelper.typeCharacter): Escape backslash characters in order to build up
a well-formed UI script to evaluate.

2:37 PM Changeset in webkit [235758] by Antti Koivisto
  • 11 edits
    2 adds in trunk/Source

Actively prewarm processes created for prewarm pool
https://bugs.webkit.org/show_bug.cgi?id=189364

Reviewed by Chris Dumez.

Source/WebCore:

Do some basic prewarming for newly created processes.

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • css/CSSDefaultStyleSheets.cpp:

(WebCore::CSSDefaultStyleSheets::loadFullDefaultStyle):

  • css/CSSDefaultStyleSheets.h:
  • page/Frame.cpp:

(WebCore::Frame::Frame):

  • page/ProcessWarming.cpp: Added.

(WebCore::ProcessWarming::initializeNames):

Factor name initialization into a function.

(WebCore::ProcessWarming::prewarm):

Prewarm

  • names
  • settings (system fonts)
  • user agent stylesheet
  • JavaScript VM
  • telephone number detection
  • page/ProcessWarming.h: Added.

Source/WebKit:

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::createNewWebProcess):

  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::prewarm):

  • WebProcess/WebProcess.h:
  • WebProcess/WebProcess.messages.in:
2:14 PM Changeset in webkit [235757] by youenn@apple.com
  • 9 edits in trunk/Source/WebCore

Move replaceTrack logic to RTCRtpSender backend
https://bugs.webkit.org/show_bug.cgi?id=189359

Reviewed by Eric Carlson.

Move replaceTrack handling from LibWebRTCPeerConnectionBackend to LibWebRTCRtpSenderBackend.
This will allow using SetTrack when fully implementing unified plan.
No change of behavior.

  • Modules/mediastream/RTCRtpSender.cpp:

(WebCore::RTCRtpSender::replaceTrack):

  • Modules/mediastream/RTCRtpSender.h:
  • Modules/mediastream/RTCRtpSender.idl:
  • Modules/mediastream/RTCRtpSenderBackend.h:
  • Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp:

(WebCore::LibWebRTCPeerConnectionBackend::replaceTrack): Deleted.
(WebCore::LibWebRTCPeerConnectionBackend::enqueueReplaceTrackTask): Deleted.

  • Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.h:
  • Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.cpp:

(WebCore::updateTrackSource):
(WebCore::LibWebRTCRtpSenderBackend::replaceTrack):

  • Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.h:
2:09 PM Changeset in webkit [235756] by commit-queue@webkit.org
  • 3 edits in trunk/Tools

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

Didn't address the review comment (Requested by rniwa on
#webkit).

Reverted changeset:

"BenchmarkResults.format should support specifying depth of
tests to show."
https://bugs.webkit.org/show_bug.cgi?id=189135
https://trac.webkit.org/changeset/235755

1:47 PM Changeset in webkit [235755] by Dewei Zhu
  • 3 edits in trunk/Tools

BenchmarkResults.format should support specifying depth of tests to show.
https://bugs.webkit.org/show_bug.cgi?id=189135

Reviewed by Ryosuke Niwa.

Added the option to specify the depth of tests to show.

  • Scripts/webkitpy/benchmark_runner/benchmark_results.py:

(BenchmarkResults):
(BenchmarkResults.format): Added 'max_depth' option.
(BenchmarkResults._format_tests): Added unit tests for 'max_depth'.

1:42 PM Changeset in webkit [235754] by aestes@apple.com
  • 10 edits in trunk

[Apple Pay] Rename the -apple-pay-button-type value "checkout" to "check-out"
https://bugs.webkit.org/show_bug.cgi?id=189366
<rdar://problem/44193218>

Reviewed by Sam Weinig.

Source/WebCore:

The button title is "Check out with Apple Pay", so we should use the verb phrase "check out"
rather than the noun "checkout" for naming this value.

Updated http/tests/ssl/applepay/ApplePayButtonV4.html.

  • css/CSSPrimitiveValueMappings.h:

(WebCore::CSSPrimitiveValue::CSSPrimitiveValue):
(WebCore::CSSPrimitiveValue::operator ApplePayButtonType const):

  • css/CSSValueKeywords.in:
  • css/parser/CSSParserFastPaths.cpp:

(WebCore::CSSParserFastPaths::isValidKeywordPropertyAndValue):

  • rendering/RenderThemeCocoa.mm:

(WebCore::toPKPaymentButtonType):

  • rendering/style/RenderStyleConstants.h:

Source/WebInspectorUI:

  • UserInterface/Models/CSSKeywordCompletions.js:

LayoutTests:

  • http/tests/ssl/applepay/ApplePayButtonV4.html:
1:36 PM Changeset in webkit [235753] by commit-queue@webkit.org
  • 3 edits in trunk/Tools

[WHLSL] Call arguments should be copied as soon as they are evaluated
https://bugs.webkit.org/show_bug.cgi?id=189360

Patch by Thomas Denney <tdenney@apple.com> on 2018-09-06
Reviewed by Myles C. Maxfield.

Previously all call arguments were evaluated and then their results were
copied into new buffers for the call. However, the results are not
necessarily independent, so the result should be copied immediately
after evaluation.

  • WebGPUShadingLanguageRI/Evaluator.js:

(Evaluator.prototype.visitCallExpression): Move location of copy.
(Evaluator):

  • WebGPUShadingLanguageRI/Test.js: Add new test to verify correct

behavior.

12:59 PM Changeset in webkit [235752] by jer.noble@apple.com
  • 17 edits in trunk/Source

Don't pause playback when locking screen if video is being displayed on second screen.
https://bugs.webkit.org/show_bug.cgi?id=189321

Reviewed by Eric Carlson.

Source/WebCore:

Expand the existing behavior when AirPlaying to an external device to playing to a local
external screen. Don't pause when the screen locks, and don't stop buffering in that mode either.

Add a KVO-observer to the WebAVPlayerController's playingOnSecondScreen property, and pass
that observed value on to the media element.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::setShouldPlayToPlaybackTarget):
(WebCore::HTMLMediaElement::setPlayingOnSecondScreen):
(WebCore::HTMLMediaElement::shouldOverrideBackgroundPlaybackRestriction const):
(WebCore::HTMLMediaElement::processingUserGestureForMedia const):
(WebCore::HTMLMediaElement::mediaState const):
(WebCore::HTMLMediaElement::purgeBufferedDataIfPossible):
(WebCore::HTMLMediaElement::shouldOverrideBackgroundLoadingRestriction const):
(WebCore::HTMLMediaElement::webkitCurrentPlaybackTargetIsWireless const): Deleted.
(WebCore::HTMLMediaElement::canPlayToWirelessPlaybackTarget const): Deleted.
(WebCore::HTMLMediaElement::isPlayingToWirelessPlaybackTarget const): Deleted.

  • html/HTMLMediaElement.h:

(WebCore::HTMLMediaElement::webkitCurrentPlaybackTargetIsWireless const):
(WebCore::HTMLMediaElement::isPlayingToExternalTarget const):

  • html/MediaElementSession.cpp:

(WebCore::MediaElementSession::canPlayToWirelessPlaybackTarget const): Deleted.

  • html/MediaElementSession.h:
  • platform/audio/PlatformMediaSession.h:

(WebCore::PlatformMediaSessionClient::setWirelessPlaybackTarget):
(WebCore::PlatformMediaSessionClient::isPlayingOnSecondScreen const):
(WebCore::PlatformMediaSession::canPlayToWirelessPlaybackTarget const): Deleted.
(WebCore::PlatformMediaSessionClient::canPlayToWirelessPlaybackTarget const): Deleted.

  • platform/cocoa/PlaybackSessionModel.h:
  • platform/cocoa/PlaybackSessionModelMediaElement.h:
  • platform/cocoa/PlaybackSessionModelMediaElement.mm:

(WebCore::PlaybackSessionModelMediaElement::setPlayingOnSecondScreen):

  • platform/ios/WebAVPlayerController.mm:

(-[WebAVPlayerController init]):
(-[WebAVPlayerController dealloc]):
(-[WebAVPlayerController observeValueForKeyPath:ofObject:change:context:]):

  • platform/ios/WebVideoFullscreenControllerAVKit.mm:

(VideoFullscreenControllerContext::setPlayingOnSecondScreen):

Source/WebKit:

Pass the "isPlayingOnSecondScreen" value across the process boundary.

  • UIProcess/Cocoa/PlaybackSessionManagerProxy.h:
  • UIProcess/Cocoa/PlaybackSessionManagerProxy.mm:

(WebKit::PlaybackSessionModelContext::setPlayingOnSecondScreen):
(WebKit::PlaybackSessionManagerProxy::setPlayingOnSecondScreen):

  • WebProcess/cocoa/PlaybackSessionManager.h:
  • WebProcess/cocoa/PlaybackSessionManager.messages.in:
  • WebProcess/cocoa/PlaybackSessionManager.mm:

(WebKit::PlaybackSessionManager::setPlayingOnSecondScreen):

12:58 PM Changeset in webkit [235751] by mark.lam@apple.com
  • 1 edit
    1 move in trunk/JSTests

Gardening: Move regress-189185.js under JSTests/wasm.
https://bugs.webkit.org/show_bug.cgi?id=189347

Unreviewed.

  • stress/regress-189185.js: Removed.
  • wasm/regress/regress-189185.js: Copied from JSTests/stress/regress-189185.js.
12:58 PM Changeset in webkit [235750] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

[WHLSL] The test suite should log the compile time for the standard library
https://bugs.webkit.org/show_bug.cgi?id=189354

Patch by Thomas Denney <tdenney@apple.com> on 2018-09-06
Reviewed by Myles C. Maxfield.

The test suite previously only logged the time for test execution, and
not the compile time for the standard library.

  • WebGPUShadingLanguageRI/Test.js:
12:48 PM Changeset in webkit [235749] by commit-queue@webkit.org
  • 11 edits in trunk/Source

Group options of scrollRectToVisible into a struct
https://bugs.webkit.org/show_bug.cgi?id=189352

Patch by Frederic Wang <fwang@igalia.com> on 2018-09-06
Reviewed by Simon Fraser.

Source/WebCore:

RenderLayer::scrollRectToVisible and RenderObject::scrollRectToVisible have several
parameters to configure the type of scrolling. This patch groups the const options into a
single struct to make easier to handle them in the future. For example, an #ifdefed scroll
behavior option will be added in bug 188043. This refactoring can maybe help too for other
scroll extensions (e.g. bug 176454 and bug 161611).

No new tests, behavior unchanged.

  • accessibility/AccessibilityObject.cpp:

(WebCore::AccessibilityObject::scrollToMakeVisible const): Pass options via a struct.

  • dom/Element.cpp:

(WebCore::Element::scrollIntoView): Ditto.
(WebCore::Element::scrollIntoViewIfNeeded): Ditto.
(WebCore::Element::scrollIntoViewIfNotVisible): Ditto.

  • editing/FrameSelection.cpp: Include RenderLayer.h in all WebKit ports in order to define

ScrollRectToVisibleOptions.
(WebCore::FrameSelection::revealSelection): Pass options via a struct.

  • page/FrameView.cpp:

(WebCore::FrameView::scrollToFocusedElementInternal): Ditto.
(WebCore::FrameView::scrollToAnchor): Ditto.

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::scrollRectToVisible): Pass options via a struct. Note that
absoluteRect and insideFixed are modified in this function.
(WebCore::RenderLayer::autoscroll): Pass options via a struct.

  • rendering/RenderLayer.h: Add ScrollRectToVisibleOptions and use it in order to pass

scrollRectToVisible options.

  • rendering/RenderObject.cpp:

(WebCore::RenderObject::scrollRectToVisible): Pass options via a struct

  • rendering/RenderObject.h: Forward-declare ScrollRectToVisibleOptions and use in order to

pass scrollRectToVisible options.

Source/WebKitLegacy/mac:

  • WebView/WebFrame.mm: Add header to use ScrollRectToVisibleOptions.

(-[WebFrame _scrollDOMRangeToVisible:]): Pass options via a struct.
(-[WebFrame _scrollDOMRangeToVisible:withInset:]): Ditto.

12:46 PM Changeset in webkit [235748] by wenson_hsieh@apple.com
  • 20 edits
    6 adds in trunk

[macOS] Cannot change font size at selection until font panel is shown
https://bugs.webkit.org/show_bug.cgi?id=189295
<rdar://problem/35593389>

Reviewed by Ryosuke Niwa.

Source/WebCore:

Currently, attempting to alter the font size of currently selected editable text in WKWebView via menu items
will fail if the font panel has never been shown. This is because WebViewImpl::changeFontFromFontPanel, which is
responsible for converting the current font at the selection to the new font using -[NSFontManager convertFont:]
bails as a result of NSFontManager's currently selected font always being nil.

WKWebView is responsible for keeping NSFontManager up-to-date with the currently selected font; in fact, this
was initially the case in r180465, which introduced NSFontManager support in WebKit2 by propagating EditorState
updates that contained font information for the current selection. However, this regressed performance due to
selected font computation triggering extra layout passes; r180768 addressed this by introducing a mechanism for
requesting the font at the current selection, and only updating NSFontManager with the new selected font when
the shared font panel is visible (determined by KVO on NSFontPanel). However, this again regressed WKWebView
launch performance, due to KVO registration always forcing the shared NSFontPanel to be created. r182037
addressed this by only registering for KVO on the font panel if the WKWebView has been made editable (SPI on
WKWebView).

This leads to two issues when attempting to alter font attributes using macOS UI: (1) in web views that have not
been made editable using SPI, showing the font panel and attempting to change the font fails due to the selected
font staying nil, because we've never begun registering for KVO notifications on the font panel so we don't try
to keep the font manager up to date. (2) Even if the web view is made editable, if the font panel is never
shown, then the font manager still won't be kept up to date with the current selection, so changing fonts using
menu items still does not work.

We fix both of these problems by refactoring font manager support on WebKit2 such that an up-to-date selected
font in the UI process is no longer necessary in order to alter the font at the current selection. To do this,
we figure out what changes the NSFontManager would've made to the currently selected font in the UI process, and
then propagate this information to the web process, where we convert this information into an EditingStyle which
we apply to the current selection.

The code to both determine the attributes changed by NSFontManager and to convert these attributes into editing
styles to be applied via Editor already exists in WebKitLegacy, in WebHTMLView.mm. This patch moves this
existing logic into WebCore and teases it apart into two portions: the first portion probes NSFontManager to
determine which aspects of the font changed and constructs FontChanges, which captures these differences. The
second portion maps FontChanges to an EditingStyle, which can then be applied to the current selection. In
WebKitLegacy, we construct FontChanges using the font manager, and then immediately use it to create and apply
an EditingStyle. In WebKit, we construct FontChanges in the UI process using the font manager, and then send
this over to the web process via WebPage::changeFont, which then creates and applies the EditingStyle.

Note that this patch also introduces FontAttributeChanges, which is similar in concept to FontChanges, but
captures a broader range of changes possible via NSFontPanel. This was done so that we can eliminate all of the
font manager probing code (along with the two specimen fonts) from WebHTMLView, but is also necessary in order
to allow changing font shadow, strikethrough, and underlines via the font panel to work in WebKit2. This will be
fixed in a followup, by making FontAttributeChanges IPC encodable and by making WKWebView/WKView respond to the
-changeAttributes: selector.

Changes in behavior to WebKit2 are covered by new API tests; legacy WebKit behavior should remain unchanged.

Tests: FontManagerTests.ChangeFontSizeWithMenuItems

FontManagerTests.ChangeFontWithPanel

  • SourcesCocoa.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • editing/Editor.h:

Remove applyFontStyles.

  • editing/FontAttributeChanges.cpp: Added.

(WebCore::FontChanges::platformFontFamilyNameForCSS const):

Given a font family name and a font name, returns the string to use as the "font-family" style property value.
Originally from WebHTMLView.mm.

(WebCore::FontChanges::createEditingStyle const):

Converts font changes to an EditingStyle that can be used to apply these changes.

(WebCore::FontChanges::createStyleProperties const):

Introduce FontChanges, which encapsulates changes which are to be applied to the font in the current selection.

(WebCore::cssValueListForShadow):
(WebCore::FontAttributeChanges::createEditingStyle const):

Converts font attribute changes to an EditingStyle that can be used to apply these changes.

  • editing/FontAttributeChanges.h: Added.

Introduce FontAttributeChanges, which encapsulates changes which are to be applied to the font attributes in the
current selection. This includes a set of FontChanges, as well as additional attributes such as strike-through
and underlines.

(WebCore::FontChanges::setFontName):
(WebCore::FontChanges::setFontFamily):
(WebCore::FontChanges::setFontSize):
(WebCore::FontChanges::setFontSizeDelta):
(WebCore::FontChanges::setBold):
(WebCore::FontChanges::setItalic):
(WebCore::FontAttributeChanges::setVerticalAlign):
(WebCore::FontAttributeChanges::setBackgroundColor):
(WebCore::FontAttributeChanges::setForegroundColor):
(WebCore::FontAttributeChanges::setShadow):
(WebCore::FontAttributeChanges::setStrikeThrough):
(WebCore::FontAttributeChanges::setUnderline):
(WebCore::FontAttributeChanges::setFontChanges):

Setters for FontChanges and FontAttributeChanges. Initially, most of these values are optional, indicating that
there should be no change.

(WebCore::FontChanges::encode const):
(WebCore::FontChanges::decode):

Add encoding/decoding support to FontChanges, so that it can be sent over IPC for WebKit2.

  • editing/cocoa/FontAttributeChangesCocoa.mm: Added.

(WebCore::FontChanges::platformFontFamilyNameForCSS const):

Helper method to determine whether the font family or the font name should be used, by looking up the PostScript
font name using a FontDescriptor and comparing it against the result of -[NSFont fontName]. This logic was
originally in WebHTMLView.mm.

  • editing/mac/EditorMac.mm:

(WebCore::Editor::applyFontStyles): Deleted.

  • platform/mac/WebCoreNSFontManagerExtras.h: Added.
  • platform/mac/WebCoreNSFontManagerExtras.mm: Added.

Add helper functions to compute FontChanges and FontAttributeChanges from NSFontManager.

(WebCore::firstFontConversionSpecimen):
(WebCore::secondFontConversionSpecimen):

Two "specimen fonts" used to determine what changes NSFontManager or NSFontPanel makes when performing font or
font attribute conversion. Moved from WebHTMLView.mm.

(WebCore::computedFontChanges):
(WebCore::computedFontAttributeChanges):

Moved here from WebHTMLView.mm. Instead of converting font attributes to NSStrings and setting properties on
DOMCSSStyleDeclaration, we instead specify properties on MutableStyleProperties using CSSValues.

Source/WebKit:

Refactors NSFontManager support in WebKit2. See WebCore ChangeLog for more details.

  • Scripts/webkit/messages.py:
  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView changeFont:]):

  • UIProcess/API/mac/WKView.mm:

(-[WKView changeFont:]):

  • UIProcess/Cocoa/WebViewImpl.h:
  • UIProcess/Cocoa/WebViewImpl.mm:

(WebKit::WebViewImpl::changeFontFromFontManager):
(WebKit::WebViewImpl::changeFontFromFontPanel): Deleted.

Renamed this from changeFontFromFontPanel to changeFontFromFontManager. This new name is more accurate in the
case where a menu item is used to alter the font, which doesn't involve NSFontPanel at all.

  • UIProcess/WebPageProxy.h:
  • UIProcess/mac/WebPageProxyMac.mm:

(WebKit::WebPageProxy::changeFont):
(WebKit::WebPageProxy::setFont): Deleted.

  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:
  • WebProcess/WebPage/mac/WebPageMac.mm:

(WebKit::WebPage::changeFont):
(WebKit::WebPage::setFont): Deleted.

Source/WebKitLegacy/mac:

Remove code in WebKitLegacy for diffing NSFonts to figure out which style properties need to be changed. See
WebCore ChangeLog for more details.

  • WebView/WebHTMLView.mm:

(-[WebHTMLView changeFont:]):
(-[WebHTMLView changeAttributes:]):
(-[WebHTMLView _originalFontA]): Deleted.
(-[WebHTMLView _originalFontB]): Deleted.
(fontNameForDescription): Deleted.
(-[WebHTMLView _addToStyle:fontA:fontB:]): Deleted.
(-[WebHTMLView _styleFromFontManagerOperation]): Deleted.
(-[WebHTMLView _styleForAttributeChange:]): Deleted.

Tools:

Add API tests to simulate using menu items to increase or decrease font size, and also simulate using
NSFontPanel to specify the font family, font size, and other traits.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/mac/FontManagerTests.mm: Added.

(-[TestWKWebView selectedText]):
(-[TestWKWebView selectNextWord]):
(-[TestWKWebView stylePropertyAtSelectionStart:]):
(-[TestWKWebView stylePropertyAtSelectionEnd:]):
(webViewForFontManagerTesting):
(menuItemCellForFontAction):
(TestWebKitAPI::TEST):

11:58 AM WebKitGTK/2.22.x edited by berto@igalia.com
(diff)
11:52 AM Changeset in webkit [235747] by bshafiei@apple.com
  • 7 edits in tags/Safari-607.1.5.2/Source

Versioning.

11:49 AM Changeset in webkit [235746] by bshafiei@apple.com
  • 1 copy in tags/Safari-607.1.5.2

Tag Safari-607.1.5.2.

11:07 AM Changeset in webkit [235745] by bshafiei@apple.com
  • 2 edits in branches/safari-606-branch/Source/JavaScriptCore

Cherry-pick r235742. rdar://problem/44169344

Gardening: only visit m_cachedStructureID if it's not null.
https://bugs.webkit.org/show_bug.cgi?id=189124
<rdar://problem/43863605>

Not reviewed.

  • runtime/JSPropertyNameEnumerator.cpp: (JSC::JSPropertyNameEnumerator::visitChildren):

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

11:03 AM Changeset in webkit [235744] by Alan Bujtas
  • 10 edits
    6 adds in trunk

[LFC][BFC] Add support for min(max)-width
https://bugs.webkit.org/show_bug.cgi?id=189358

Reviewed by Antti Koivisto.

Source/WebCore:

See https://www.w3.org/TR/CSS22/visudet.html#min-max-widths for details.

Tests: fast/block/block-only/absolute-position-min-max-width.html

fast/block/block-only/float-min-max-width.html
fast/block/block-only/inflow-min-max-width.html

  • layout/FormattingContext.cpp:

(WebCore::Layout::FormattingContext::computeOutOfFlowHorizontalGeometry const):

  • layout/FormattingContext.h:

(WebCore::Layout::FormattingContext::Geometry::outOfFlowHorizontalGeometry):
(WebCore::Layout::FormattingContext::Geometry::floatingWidthAndMargin):
(WebCore::Layout::FormattingContext::Geometry::inlineReplacedWidthAndMargin):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedHorizontalGeometry):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedHorizontalGeometry):
(WebCore::Layout::FormattingContext::Geometry::floatingReplacedWidthAndMargin):
(WebCore::Layout::FormattingContext::Geometry::floatingNonReplacedWidthAndMargin):

  • layout/FormattingContextGeometry.cpp:

(WebCore::Layout::FormattingContext::Geometry::computedValueIfNotAuto):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedHorizontalGeometry):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedHorizontalGeometry):
(WebCore::Layout::FormattingContext::Geometry::floatingNonReplacedWidthAndMargin):
(WebCore::Layout::FormattingContext::Geometry::floatingReplacedWidthAndMargin):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowHorizontalGeometry):
(WebCore::Layout::FormattingContext::Geometry::floatingWidthAndMargin):
(WebCore::Layout::FormattingContext::Geometry::inlineReplacedWidthAndMargin):

  • layout/blockformatting/BlockFormattingContext.cpp:

(WebCore::Layout::BlockFormattingContext::computeWidthAndMargin const):

  • layout/blockformatting/BlockFormattingContext.h:

(WebCore::Layout::BlockFormattingContext::Geometry::inFlowWidthAndMargin):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedWidthAndMargin):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowReplacedWidthAndMargin):

  • layout/blockformatting/BlockFormattingContextGeometry.cpp:

(WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedWidthAndMargin):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowReplacedWidthAndMargin):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowWidthAndMargin):

Tools:

  • LayoutReloaded/misc/LFC-passing-tests.txt:

LayoutTests:

  • fast/block/block-only/absolute-position-min-max-width-expected.txt: Added.
  • fast/block/block-only/absolute-position-min-max-width.html: Added.
  • fast/block/block-only/float-min-max-width-expected.txt: Added.
  • fast/block/block-only/float-min-max-width.html: Added.
  • fast/block/block-only/inflow-min-max-width-expected.txt: Added.
  • fast/block/block-only/inflow-min-max-width.html: Added.
10:59 AM Changeset in webkit [235743] by eric.carlson@apple.com
  • 2 edits in trunk/Source/WebCore

[MediaStream] Initialize AVVideoCapture video presets
https://bugs.webkit.org/show_bug.cgi?id=189355

Reviewed by Youenn Fablet.

No new tests, no functionality changed.

  • platform/mediastream/mac/AVVideoCaptureSource.mm:

(WebCore::AVVideoCaptureSource::AVVideoCaptureSource): Don't try to load symbols if they
aren't available.

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

Gardening: only visit m_cachedStructureID if it's not null.
https://bugs.webkit.org/show_bug.cgi?id=189124
<rdar://problem/43863605>

Not reviewed.

  • runtime/JSPropertyNameEnumerator.cpp:

(JSC::JSPropertyNameEnumerator::visitChildren):

9:56 AM Changeset in webkit [235741] by commit-queue@webkit.org
  • 12 edits in trunk/Source/WebKit

Use more generic names than "overflow" for functions that can be used for subframes
https://bugs.webkit.org/show_bug.cgi?id=179125

Patch by Frederic Wang <fwang@igalia.com> on 2018-09-06
Reviewed by Simon Fraser..

Some functions will be used by subframes when iframe scrolling is implemented on iOS (see
bug 149264). Currently they are only used for "overflow" nodes. This patch renames them to
use a more generic "scrolling node" name.

  • UIProcess/PageClient.h:
  • UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.cpp:

(WebKit::RemoteScrollingCoordinatorProxy::scrollingTreeNodeDidScroll):

  • UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.mm:

(WebKit::RemoteScrollingCoordinatorProxy::scrollingTreeNodeWillStartPanGesture):
(WebKit::RemoteScrollingCoordinatorProxy::scrollingTreeNodeWillStartScroll):
(WebKit::RemoteScrollingCoordinatorProxy::scrollingTreeNodeDidEndScroll):

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

(WebKit::PageClientImpl::scrollingNodeScrollViewWillStartPanGesture):
(WebKit::PageClientImpl::scrollingNodeScrollViewDidScroll):
(WebKit::PageClientImpl::scrollingNodeScrollWillStartScroll):
(WebKit::PageClientImpl::scrollingNodeScrollDidEndScroll):
(WebKit::PageClientImpl::overflowScrollViewWillStartPanGesture): Deleted.
(WebKit::PageClientImpl::overflowScrollViewDidScroll): Deleted.
(WebKit::PageClientImpl::overflowScrollWillStartScroll): Deleted.
(WebKit::PageClientImpl::overflowScrollDidEndScroll): Deleted.

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

(-[WKContentView _scrollingNodeScrollingWillBegin]):
(-[WKContentView _scrollingNodeScrollingDidEnd]):
(-[WKContentView _overflowScrollingWillBegin]): Deleted.
(-[WKContentView _overflowScrollingDidEnd]): Deleted.

  • UIProcess/ios/WebPageProxyIOS.mm:

(WebKit::WebPageProxy::scrollingNodeScrollViewWillStartPanGesture):
(WebKit::WebPageProxy::scrollingNodeScrollViewDidScroll):
(WebKit::WebPageProxy::scrollingNodeScrollWillStartScroll):
(WebKit::WebPageProxy::scrollingNodeScrollDidEndScroll):
(WebKit::WebPageProxy::overflowScrollViewWillStartPanGesture): Deleted.
(WebKit::WebPageProxy::overflowScrollViewDidScroll): Deleted.
(WebKit::WebPageProxy::overflowScrollWillStartScroll): Deleted.
(WebKit::WebPageProxy::overflowScrollDidEndScroll): Deleted.

  • WebProcess/WebCoreSupport/ios/WebChromeClientIOS.mm:

(WebKit::WebChromeClient::didStartOverflowScroll):
(WebKit::WebChromeClient::didEndOverflowScroll):

9:41 AM Changeset in webkit [235740] by tpopela@redhat.com
  • 2 edits in trunk/Source/JavaScriptCore

[JSC] Build broken after r234975 on s390x, ppc64le, armv7hl
https://bugs.webkit.org/show_bug.cgi?id=189078

Reviewed by Mark Lam.

Caused by the GCC bug - https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70124.
Using the ternary operator instead of std::max() fixes it.

  • heap/RegisterState.h:
9:12 AM Changeset in webkit [235739] by Chris Dumez
  • 3 edits in trunk/Source/WebKit

WebKit/Platform/IPC/mac/ConnectionMac.mm:222: _dispatch_bug_kevent_vanished
https://bugs.webkit.org/show_bug.cgi?id=189314
<rdar://problem/41248286>

Reviewed by Anders Carlsson.

There is a short period in time when m_isServer is true, after open() has been
called, but before we've receive the InitializeConnection IPC, where m_receiveSource
has been initialized but m_isConnected is still false. If platformInvalidate() gets
called during this period of time, we would fail to cancel / release m_receiveSource
and we would forcefully deallocate m_receivePort, leading to the libdispatch simulated
crashes.

To address the issue, platformInvalidate() now properly cancels / releases
m_receiveSource if present, and only deallocates m_receivePort manually if m_receiveSource
has not been initialized (i.e. open() has not been called yet).

  • Platform/IPC/Connection.h:
  • Platform/IPC/mac/ConnectionMac.mm:

(IPC::Connection::platformInvalidate):
(IPC::Connection::clearReceiveSource):

9:01 AM Changeset in webkit [235738] by mmaxfield@apple.com
  • 11 edits
    1 copy in trunk/Tools

[WHLSL] The parser is too slow
https://bugs.webkit.org/show_bug.cgi?id=189014

Reviewed by Filip Pizlo.

This patch includes three changes:

  1. Migrate from using try/catch to simply returning the WSyntaxError. This means that each parser call has to check for this sentinel value. The lexer still can throw if it encounters an unknown token or an unmatched "/*" token (which is rare).
  2. After removing try/catch, making the sentinel values not inherit from Error (the Error constructor was taking lots of time)
  3. Previously, every time the parser failed (which is many times per expression) it was running a regex over the entire source text to figure out where the error occurred. Instead, we can preprocess the text string to find these line numbers ahead of time.

Together, these make the parser 75x faster. Parsing the standard library goes from 2.5
hours down to 2 minutes. Because it's now a reasonable length, this patch uncomments
the bulk of the standard library.

  • WebGPUShadingLanguageRI/All.js:
  • WebGPUShadingLanguageRI/Lexer.js:

(Lexer):
(Lexer.prototype.lineNumberForIndex):

  • WebGPUShadingLanguageRI/Parse.js:

(fail):
(backtrackingScope):
(testScope):
(genericConsume):
(consumeEndOfTypeArgs):
(parseTerm):
(parseConstexpr):
(parseTypeArguments):
(parseType.getAddressSpace):
(parseType):
(parseTypeDef):
(genericParseLeft):
(parseCallExpression.let.parseArguments):
(isCallExpression):
(parseSuffixOperator):
(parsePossibleSuffix):
(parsePreIncrement):
(parsePossiblePrefix):
(parsePossibleTernaryConditional):
(parsePossibleAssignment):
(parsePostIncrement):
(parseEffectfulExpression):
(genericParseCommaExpression):
(parseEffectfulStatement):
(parseReturn):
(parseBreak):
(parseContinue):
(parseIfStatement):
(parseWhile):
(parseFor):
(parseDo):
(parseVariableDecls):
(parseSwitchCase):
(parseSwitchStatement):
(parseStatement):
(parseBlockBody):
(parseBlock):
(parseParameter):
(parseFuncName):
(parseFuncDecl):
(parseFuncDef):
(parseField):
(parseStructType):
(parseNativeFunc):
(parseNative):
(parseRestrictedFuncDef):
(parseEnumMember):
(parseEnumType):
(parse):

  • WebGPUShadingLanguageRI/SPIRV.html:
  • WebGPUShadingLanguageRI/StandardLibrary.js:

(let.standardLibrary):

  • WebGPUShadingLanguageRI/Test.html:
  • WebGPUShadingLanguageRI/Test.js:

(checkFail.doPrep): Deleted.

  • WebGPUShadingLanguageRI/WLexicalError.js: Added.

(WLexicalError):

  • WebGPUShadingLanguageRI/index.html:
8:00 AM Changeset in webkit [235737] by magomez@igalia.com
  • 2 edits in trunk/LayoutTests

Unreviewed GTK+ gardening after r235732.

  • platform/gtk/TestExpectations:
6:51 AM Changeset in webkit [235736] by ajuma@chromium.org
  • 8 edits
    6 adds in trunk

IntersectionObserver leaks documents
https://bugs.webkit.org/show_bug.cgi?id=189128

Reviewed by Simon Fraser.

Source/WebCore:

Currently, Documents own IntersectionObservers while IntersectionObservers own callbacks
that have strong references to Documents. To break this cycle, make Documents only have
weak pointers to IntersectionObservers. Instead, manage the lifetime of an
IntersectionObserver as an ActiveDOMObject, overriding hasPendingActivity to keep
the observer alive while there are ongoing observations.

However, there is a still a potential reference cycle. The callback keeps global
references alive, so if there's a global reference to the observer in JavaScript,
we have an observer->callback->observer cycle, keeping the callback (and hence the Document)
alive. To break this cycle, make IntersectionObserver release the callback when its
Document is stopped.

With these changes, there are no longer any leaks reported with run-webkit-tests --world-leaks
on LayoutTests/intersection-observer and LayoutTests/imported/w3c/web-platform-tests/intersection-observer.

Tests: intersection-observer/no-document-leak.html

intersection-observer/observer-and-callback-without-js-references.html

  • dom/Document.cpp:

(WebCore::Document::addIntersectionObserver):
(WebCore::Document::removeIntersectionObserver):

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

(WebCore::Element::didMoveToNewDocument):

  • page/IntersectionObserver.cpp:

(WebCore::IntersectionObserver::IntersectionObserver):
(WebCore::IntersectionObserver::~IntersectionObserver):
(WebCore::IntersectionObserver::observe):
(WebCore::IntersectionObserver::rootDestroyed):
(WebCore::IntersectionObserver::createTimestamp const):
(WebCore::IntersectionObserver::notify):
(WebCore::IntersectionObserver::hasPendingActivity const):
(WebCore::IntersectionObserver::activeDOMObjectName const):
(WebCore::IntersectionObserver::canSuspendForDocumentSuspension const):
(WebCore::IntersectionObserver::stop):

  • page/IntersectionObserver.h:

(WebCore::IntersectionObserver::trackingDocument const):
(WebCore::IntersectionObserver::trackingDocument): Deleted.

  • page/IntersectionObserver.idl:

LayoutTests:

  • intersection-observer/no-document-leak-expected.txt: Added.
  • intersection-observer/no-document-leak.html: Added.
  • intersection-observer/observer-and-callback-without-js-references-expected.txt: Added.
  • intersection-observer/observer-and-callback-without-js-references.html: Added.
  • intersection-observer/resources/no-document-leak-frame.html: Added.
6:40 AM Changeset in webkit [235735] by Alan Bujtas
  • 11 edits in trunk/Source/WebCore

[LFC] Adapt to the new const WeakPtr<>
https://bugs.webkit.org/show_bug.cgi?id=189334

Reviewed by Antti Koivisto.

  • layout/FormattingContext.cpp:

(WebCore::Layout::FormattingContext::FormattingContext):

  • layout/FormattingContext.h:
  • layout/LayoutContext.cpp:

(WebCore::Layout::LayoutContext::initializeRoot):

  • layout/LayoutContext.h:
  • layout/floats/FloatAvoider.cpp:

(WebCore::Layout::FloatAvoider::FloatAvoider):

  • layout/floats/FloatAvoider.h:
  • layout/floats/FloatingState.cpp:

(WebCore::Layout::FloatingState::FloatItem::FloatItem):
(WebCore::Layout::FloatingState::FloatingState):

  • layout/floats/FloatingState.h:
  • layout/layouttree/LayoutContainer.cpp:

(WebCore::Layout::Container::addOutOfFlowDescendant):

  • layout/layouttree/LayoutContainer.h:

(WebCore::Layout::Container::outOfFlowDescendants const):

6:27 AM Changeset in webkit [235734] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

[test262] Do not call keys on a reference
https://bugs.webkit.org/show_bug.cgi?id=189301

Patch by Xan Lopez <xan@igalia.com> on 2018-09-06
Reviewed by Keith Miller.

  • Scripts/test262/Runner.pm:

(UpdateResults):

5:38 AM Changeset in webkit [235733] by ddkilzer@apple.com
  • 3 edits
    1 add in trunk/Tools

svn-create-patch fails when svn mv is used on directory trees
<https://webkit.org/b/14590>

Reviewed by Daniel Bates.

  • Scripts/VCSUtils.pm: Export parseSvnDiffStartLine() for

svn-create-patch.
(parseDiffStartLine): Use parseSvnDiffStartLine().
(parseGitDiffStartLine): Document a prerequisite. Fix a bug
when parsing git patches using git diff --no-prefix non-native
line endings. Found by new tests written for
Scripts/webkitperl/VCSUtils_unittest/parseDiffStartLine.pl.
(parseSvnDiffStartLine): Add. Extract logic from
parseDiffStartLine() for use with svn-create-patch.

  • Scripts/svn-create-patch: Update copyright and license.

(generateDiff): Return early for moved directories since
individual files within the directory are handled separately.
(generateFileList): Keep track of moved directories in the
@additionWithHistoryDirectories array, then process this array
in reverse order to create delete/add patches for each file in
a moved directory. This also prevents duplicate patches.
(manufacturePatchForAdditionWithHistory): Fix a long-standing
bug where the path used to describe property changes contained
the original (moved-from) path instead of the new (moved-to)
path. This could cause svn-apply to fail mysteriously when
trying to apply an empty patch created by the property change
containing the moved-from path.

  • Scripts/webkitperl/VCSUtils_unittest/parseDiffStartLine.pl: Add.

Tests for parseDiffStartLine(), parseGitDiffStartLine() and
parseSvnDiffStartLine().

3:50 AM Changeset in webkit [235732] by calvaris@igalia.com
  • 2 edits in trunk/Source/WebCore

[GStreamer] Extra ASSERTs at MainThreadNotifier
https://bugs.webkit.org/show_bug.cgi?id=188786

Reviewed by Carlos Garcia Campos.

We add a couple of checks in debug mode: there is only one bit on
per notification and ensure a notifier was invalidated before
being destroyed.

  • platform/graphics/gstreamer/MainThreadNotifier.h:
2:36 AM Changeset in webkit [235731] by mark.lam@apple.com
  • 57 edits
    3 copies
    2 deletes in branches/safari-606-branch

Cherry-pick r235254, r235419, r235666. rdar://problem/44169332

JSTests:

2018-08-27 Mark Lam <mark.lam@apple.com>

Fix exception throwing code so that topCallFrame and topEntryFrame stay true to their names.
https://bugs.webkit.org/show_bug.cgi?id=188577
<rdar://problem/42985684>

Reviewed by Saam Barati.

  • stress/regress-188577.js: Added.

Source/JavaScriptCore:

2018-08-23 Mark Lam <mark.lam@apple.com>

Move vmEntryGlobalObject() to VM from CallFrame.
https://bugs.webkit.org/show_bug.cgi?id=188900
<rdar://problem/43655753>

Reviewed by Michael Saboff.

Also introduced CallFrame::isGlobalExec() which makes use of one property of
GlobalExecs to identify them i.e. GlobalExecs have null callerFrame and returnPCs.
CallFrame::initGlobalExec() ensures this.

In contrast, normal CallFrames always have a callerFrame (because they must at
least be preceded by a VM EntryFrame) and a returnPC (at least return to the
VM entry glue).

  • API/APIUtils.h: (handleExceptionIfNeeded): (setException):
  • API/JSBase.cpp: (JSEvaluateScript): (JSCheckScriptSyntax):
  • API/JSContextRef.cpp: (JSGlobalContextRetain): (JSGlobalContextRelease): (JSGlobalContextCopyName): (JSGlobalContextSetName): (JSGlobalContextGetRemoteInspectionEnabled): (JSGlobalContextSetRemoteInspectionEnabled): (JSGlobalContextGetIncludesNativeCallStackWhenReportingExceptions): (JSGlobalContextSetIncludesNativeCallStackWhenReportingExceptions): (JSGlobalContextGetDebuggerRunLoop): (JSGlobalContextSetDebuggerRunLoop): (JSGlobalContextGetAugmentableInspectorController):
  • API/JSValue.mm: (reportExceptionToInspector):
  • API/glib/JSCClass.cpp: (jscContextForObject):
  • API/glib/JSCContext.cpp: (jsc_context_evaluate_in_object):
  • debugger/Debugger.cpp: (JSC::Debugger::pauseIfNeeded):
  • debugger/DebuggerCallFrame.cpp: (JSC::DebuggerCallFrame::vmEntryGlobalObject const): (JSC::DebuggerCallFrame::evaluateWithScopeExtension):
  • interpreter/CallFrame.cpp: (JSC::CallFrame::vmEntryGlobalObject): Deleted.
  • interpreter/CallFrame.h: (JSC::ExecState::scope const): (JSC::ExecState::noCaller): (JSC::ExecState::isGlobalExec const):
  • interpreter/Interpreter.cpp: (JSC::notifyDebuggerOfUnwinding): (JSC::Interpreter::notifyDebuggerOfExceptionToBeThrown): (JSC::Interpreter::debug):
  • runtime/CallData.cpp: (JSC::profiledCall):
  • runtime/Completion.cpp: (JSC::evaluate): (JSC::profiledEvaluate): (JSC::evaluateWithScopeExtension): (JSC::loadAndEvaluateModule): (JSC::loadModule): (JSC::linkAndEvaluateModule): (JSC::importModule):
  • runtime/ConstructData.cpp: (JSC::profiledConstruct):
  • runtime/Error.cpp: (JSC::getStackTrace):
  • runtime/VM.cpp: (JSC::VM::throwException): (JSC::VM::vmEntryGlobalObject const):
  • runtime/VM.h:

2018-08-27 Mark Lam <mark.lam@apple.com>

Fix exception throwing code so that topCallFrame and topEntryFrame stay true to their names.
https://bugs.webkit.org/show_bug.cgi?id=188577
<rdar://problem/42985684>

Reviewed by Saam Barati.

  1. Introduced CallFrame::convertToStackOverflowFrame() which converts the current (top) CallFrame (which may not have a valid callee) into a StackOverflowFrame.

The StackOverflowFrame is a sentinel frame that the low level code (exception
throwing code, stack visitor, and stack unwinding code) will know to skip
over. The StackOverflowFrame will also have a valid JSCallee so that client
code can compute the globalObject or VM from this frame.

As a result, client code that throws StackOverflowErrors no longer need to
compute the caller frame to throw from: it just converts the top frame into
a StackOverflowFrame and everything should *Just Work*.

  1. NativeCallFrameTracerWithRestore is now obsolete.

Instead, client code should always call convertToStackOverflowFrame() on the
frame before instantiating a NativeCallFrameTracer with it.

This means that topCallFrame will always point to the top CallFrame (which
may be a StackOverflowFrame), and topEntryFrame will always point to the top
EntryFrame. We'll never temporarily point them to the previous EntryFrame
(which we used to do with NativeCallFrameTracerWithRestore).

  1. genericUnwind() and Interpreter::unwind() will now always unwind from the top CallFrame, and will know how to handle a StackOverflowFrame if they see one.

This obsoletes the UnwindStart flag.

  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • Sources.txt:
  • debugger/Debugger.cpp: (JSC::Debugger::pauseIfNeeded):
  • interpreter/CallFrame.cpp: (JSC::CallFrame::callerFrame const): (JSC::CallFrame::unsafeCallerFrame const): (JSC::CallFrame::convertToStackOverflowFrame): (JSC::CallFrame::callerFrame): Deleted. (JSC::CallFrame::unsafeCallerFrame): Deleted.
  • interpreter/CallFrame.h: (JSC::ExecState::iterate):
  • interpreter/CallFrameInlines.h: Added. (JSC::CallFrame::isStackOverflowFrame const): (JSC::CallFrame::isWasmFrame const):
  • interpreter/EntryFrame.h: Added. (JSC::EntryFrame::vmEntryRecordOffset): (JSC::EntryFrame::calleeSaveRegistersBufferOffset):
  • interpreter/FrameTracers.h: (JSC::NativeCallFrameTracerWithRestore::NativeCallFrameTracerWithRestore): Deleted. (JSC::NativeCallFrameTracerWithRestore::~NativeCallFrameTracerWithRestore): Deleted.
  • interpreter/Interpreter.cpp: (JSC::Interpreter::unwind):
  • interpreter/Interpreter.h:
  • interpreter/StackVisitor.cpp: (JSC::StackVisitor::StackVisitor):
  • interpreter/StackVisitor.h: (JSC::StackVisitor::visit): (JSC::StackVisitor::topEntryFrameIsEmpty const):
  • interpreter/VMEntryRecord.h: (JSC::VMEntryRecord::callee const): (JSC::EntryFrame::vmEntryRecordOffset): Deleted. (JSC::EntryFrame::calleeSaveRegistersBufferOffset): Deleted.
  • jit/AssemblyHelpers.h:
  • jit/JITExceptions.cpp: (JSC::genericUnwind):
  • jit/JITExceptions.h:
  • jit/JITOperations.cpp:
  • llint/LLIntOffsetsExtractor.cpp:
  • llint/LLIntSlowPaths.cpp: (JSC::LLInt::LLINT_SLOW_PATH_DECL):
  • llint/LowLevelInterpreter.asm:
  • llint/LowLevelInterpreter32_64.asm:
  • llint/LowLevelInterpreter64.asm:
  • runtime/CallData.cpp:
  • runtime/CommonSlowPaths.cpp: (JSC::throwArityCheckStackOverflowError): (JSC::SLOW_PATH_DECL):
  • runtime/CommonSlowPathsExceptions.cpp: Removed.
  • runtime/CommonSlowPathsExceptions.h: Removed.
  • runtime/Completion.cpp: (JSC::evaluateWithScopeExtension):
  • runtime/JSGeneratorFunction.h:
  • runtime/JSGlobalObject.cpp: (JSC::JSGlobalObject::init): (JSC::JSGlobalObject::visitChildren):
  • runtime/JSGlobalObject.h: (JSC::JSGlobalObject::stackOverflowFrameCallee const):
  • runtime/VM.cpp: (JSC::VM::throwException):
  • runtime/VM.h:
  • runtime/VMInlines.h: (JSC::VM::topJSCallFrame const):

2018-09-05 David Kilzer <ddkilzer@apple.com>

REGRESSION (r235419): DFGCFG.h is missing from JavaScriptCore Xcode project

Found using tidy-Xcode-project-file --missing (see Bug
188754). Fix was made manually.

  • JavaScriptCore.xcodeproj/project.pbxproj: (dfg/DFGCFG.h): Revert accidental change in r235419 by restoring name and path values to file reference.

Source/WebCore:

2018-08-23 Mark Lam <mark.lam@apple.com>

Move vmEntryGlobalObject() to VM from CallFrame.
https://bugs.webkit.org/show_bug.cgi?id=188900
<rdar://problem/43655753>

Reviewed by Michael Saboff.

No new tests needed because this patch does not introduce new functionality.

  • bindings/js/JSCustomXPathNSResolver.cpp: (WebCore::JSCustomXPathNSResolver::create):
  • bindings/js/JSDOMGlobalObject.cpp: (WebCore::callerGlobalObject): (WebCore::toJSDOMGlobalObject): Deleted.
  • bindings/js/JSDOMWindowBase.cpp: (WebCore::firstDOMWindow):
  • bridge/c/c_utility.cpp: (JSC::Bindings::convertValueToNPVariant):
  • bridge/objc/WebScriptObject.mm: (WebCore::addExceptionToConsole):
  • bridge/objc/objc_instance.mm: (ObjcInstance::moveGlobalExceptionToExecState):
  • bridge/objc/objc_runtime.mm: (JSC::Bindings::convertValueToObjcObject):
  • bridge/objc/objc_utility.mm: (JSC::Bindings::convertValueToObjcValue):
  • testing/Internals.cpp: (WebCore::Internals::cloneArrayBuffer):

Source/WebKitLegacy/mac:

2018-08-23 Mark Lam <mark.lam@apple.com>

Move vmEntryGlobalObject() to VM from CallFrame.
https://bugs.webkit.org/show_bug.cgi?id=188900
<rdar://problem/43655753>

Reviewed by Michael Saboff.

  • WebView/WebScriptDebugger.mm: (WebScriptDebugger::sourceParsed):

LayoutTests:

2018-08-27 Mark Lam <mark.lam@apple.com>

Fix exception throwing code so that topCallFrame and topEntryFrame stay true to their names.
https://bugs.webkit.org/show_bug.cgi?id=188577
<rdar://problem/42985684>

Reviewed by Saam Barati.

  • http/tests/misc/large-js-program-expected.txt:
1:11 AM Changeset in webkit [235730] by bshafiei@apple.com
  • 3 edits
    1 add in branches/safari-606-branch

Cherry-pick r235715. rdar://problem/44169344

JSPropertyNameEnumerator::visitChildren() needs to visit its m_cachedStructureID.
https://bugs.webkit.org/show_bug.cgi?id=189124
<rdar://problem/43863605>

Reviewed by Filip Pizlo.

JSTests:

  • stress/regress-189124.js: Added.

Source/JavaScriptCore:

It is assumed that the Structure for the m_cachedStructureID will remain alive
while the m_cachedStructureID is in use. This prevents the structureID from being
re-used for a different Structure.

  • runtime/JSPropertyNameEnumerator.cpp: (JSC::JSPropertyNameEnumerator::visitChildren):

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

1:11 AM Changeset in webkit [235729] by bshafiei@apple.com
  • 3 edits
    2 adds in branches/safari-606-branch

Cherry-pick r235537. rdar://problem/44169516

CounterMaps should hold a unique_ptr of CounterMap.
https://bugs.webkit.org/show_bug.cgi?id=189174
<rdar://problem/43686458>

Reviewed by Ryosuke Niwa.

Source/WebCore:

In certain cases calls to CounterMaps might lead to unexpected deletion of the CounterMap object.

Test: fast/css/counters/crash-when-cloning-body.html

  • rendering/RenderCounter.cpp: (WebCore::makeCounterNode): (WebCore::destroyCounterNodeWithoutMapRemoval): (WebCore::RenderCounter::destroyCounterNodes): (WebCore::RenderCounter::destroyCounterNode): (WebCore::updateCounters): (showCounterRendererTree):

LayoutTests:

  • fast/css/counters/crash-when-cloning-body-expected.txt: Added.
  • fast/css/counters/crash-when-cloning-body.html: Added.

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

1:11 AM Changeset in webkit [235728] by bshafiei@apple.com
  • 4 edits
    1 add in branches/safari-606-branch

Cherry-pick r235177. rdar://problem/44169333

The DFG CFGSimplification phase shouldn’t jettison a block when it’s the target of both branch directions.
https://bugs.webkit.org/show_bug.cgi?id=188298
<rdar://problem/42888427>

Reviewed by Saam Barati.

JSTests:

  • stress/bug-188298.js: Added.

Source/JavaScriptCore:

In the event that both targets of a Branch is the same block, then even if we'll
always take one path of the branch, the other target is not unreachable because
it is the same target as the one in the taken path. Hence, it should not be
jettisoned.

  • JavaScriptCore.xcodeproj/project.pbxproj:
  • Added DFGCFG.h which is in use and should have been added to the project.
  • dfg/DFGCFGSimplificationPhase.cpp: (JSC::DFG::CFGSimplificationPhase::run):

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

1:11 AM Changeset in webkit [235727] by bshafiei@apple.com
  • 1 edit
    2 adds in branches/safari-606-branch/LayoutTests

Cherry-pick r233902. rdar://problem/44168991

Rebaseline imported/w3c/web-platform-tests/WebCryptoAPI/derive_bits_keys/pbkdf2.https.worker.html for Sierra after r233898.

Unreviewed test gardening.

  • platform/mac-sierra/imported/w3c/web-platform-tests/WebCryptoAPI/derive_bits_keys/pbkdf2.https.worker-expected.txt: Added.
  • platform/mac/imported/w3c/web-platform-tests/WebCryptoAPI/derive_bits_keys/pbkdf2.https.worker-expected.txt: Added.

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

1:11 AM Changeset in webkit [235726] by bshafiei@apple.com
  • 6 edits in branches/safari-606-branch/LayoutTests

Cherry-pick r233900. rdar://problem/44168991

Unreviewed, test gardening after r233898.

  • TestExpectations:
  • platform/gtk/TestExpectations:
  • platform/ios/TestExpectations:
  • platform/mac/TestExpectations:
  • platform/wpe/TestExpectations:

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

1:11 AM Changeset in webkit [235725] by bshafiei@apple.com
  • 62 edits
    60 adds in branches/safari-606-branch

Cherry-pick r233898. rdar://problem/44168991

[WebCrypto] Crypto operations should copy their parameters before hoping to another thread
https://bugs.webkit.org/show_bug.cgi?id=187501
<rdar://problem/41438160>

Reviewed by Youenn Fablet.

Source/WebCore:

This patch aims at making all captured variables in all crypto lambdas that need to be passed
to a worker thread thread safe, which includes:
1) changing ref counted objects to thread safe ref counted object.
2) adding isolatedCopy methods to non ref counted classes, so they can be called by CrossThreadCopy().

In addition to above changes, this patch also does the following things:
1) change the name CryptoAlgorithm::dispatchOperation => CryptoAlgorithm::dispatchOperationInWorkQueue
to make it clear that lambdas will be passed to a secondary thread.
2) make CryptoAlgorithmParameters as const parameters for all methods.
3) add null checks on BufferSource.length() and .data().

Tests: crypto/subtle/aes-gcm-import-key-unwrap-ec-raw-key.html

http/wpt/crypto/aes-cbc-crash.any.html
http/wpt/crypto/aes-cbc-crash.any.worker.html
http/wpt/crypto/aes-ctr-crash.any.html
http/wpt/crypto/aes-ctr-crash.any.worker.html
http/wpt/crypto/aes-gcm-crash.any.html
http/wpt/crypto/aes-gcm-crash.any.worker.html
http/wpt/crypto/derive-hmac-key-crash.any.html
http/wpt/crypto/derive-hmac-key-crash.any.worker.html
http/wpt/crypto/ecdsa-crash.any.html
http/wpt/crypto/ecdsa-crash.any.worker.html
http/wpt/crypto/hkdf-crash.any.html
http/wpt/crypto/hkdf-crash.any.worker.html
http/wpt/crypto/pbkdf2-crash.any.html
http/wpt/crypto/pbkdf2-crash.any.worker.html
http/wpt/crypto/rsa-oaep-crash.any.html
http/wpt/crypto/rsa-oaep-crash.any.worker.html
http/wpt/crypto/rsa-pss-crash.any.html
http/wpt/crypto/rsa-pss-crash.any.worker.html
http/wpt/crypto/unwrap-ec-key-crash.any.html
http/wpt/crypto/unwrap-ec-key-crash.any.worker.html
http/wpt/crypto/unwrap-rsa-key-crash.any.html
http/wpt/crypto/unwrap-rsa-key-crash.any.worker.html

  • bindings/js/BufferSource.h: (WebCore::BufferSource::data const): (WebCore::BufferSource::length const):
  • crypto/CryptoAlgorithm.cpp: (WebCore::CryptoAlgorithm::encrypt): (WebCore::CryptoAlgorithm::decrypt): (WebCore::CryptoAlgorithm::sign): (WebCore::CryptoAlgorithm::verify): (WebCore::CryptoAlgorithm::deriveBits): (WebCore::CryptoAlgorithm::importKey): (WebCore::dispatchAlgorithmOperation): (WebCore::CryptoAlgorithm::dispatchOperationInWorkQueue): (WebCore::CryptoAlgorithm::dispatchOperation): Deleted.
  • crypto/CryptoAlgorithm.h:
  • crypto/SubtleCrypto.cpp: (WebCore::crossThreadCopyImportParams): (WebCore::SubtleCrypto::encrypt): (WebCore::SubtleCrypto::decrypt): (WebCore::SubtleCrypto::sign): (WebCore::SubtleCrypto::verify): (WebCore::SubtleCrypto::deriveKey): (WebCore::SubtleCrypto::deriveBits): (WebCore::SubtleCrypto::importKey): (WebCore::SubtleCrypto::wrapKey): (WebCore::SubtleCrypto::unwrapKey):
  • crypto/algorithms/CryptoAlgorithmAES_CBC.cpp: (WebCore::CryptoAlgorithmAES_CBC::encrypt): (WebCore::CryptoAlgorithmAES_CBC::decrypt): (WebCore::CryptoAlgorithmAES_CBC::importKey):
  • crypto/algorithms/CryptoAlgorithmAES_CBC.h:
  • crypto/algorithms/CryptoAlgorithmAES_CFB.cpp: (WebCore::CryptoAlgorithmAES_CFB::encrypt): (WebCore::CryptoAlgorithmAES_CFB::decrypt): (WebCore::CryptoAlgorithmAES_CFB::importKey):
  • crypto/algorithms/CryptoAlgorithmAES_CFB.h:
  • crypto/algorithms/CryptoAlgorithmAES_CTR.cpp: (WebCore::parametersAreValid): (WebCore::CryptoAlgorithmAES_CTR::encrypt): (WebCore::CryptoAlgorithmAES_CTR::decrypt): (WebCore::CryptoAlgorithmAES_CTR::importKey):
  • crypto/algorithms/CryptoAlgorithmAES_CTR.h:
  • crypto/algorithms/CryptoAlgorithmAES_GCM.cpp: (WebCore::CryptoAlgorithmAES_GCM::encrypt): (WebCore::CryptoAlgorithmAES_GCM::decrypt): (WebCore::CryptoAlgorithmAES_GCM::importKey):
  • crypto/algorithms/CryptoAlgorithmAES_GCM.h:
  • crypto/algorithms/CryptoAlgorithmAES_KW.cpp: (WebCore::CryptoAlgorithmAES_KW::importKey):
  • crypto/algorithms/CryptoAlgorithmAES_KW.h:
  • crypto/algorithms/CryptoAlgorithmECDH.cpp: (WebCore::CryptoAlgorithmECDH::deriveBits): (WebCore::CryptoAlgorithmECDH::importKey):
  • crypto/algorithms/CryptoAlgorithmECDH.h:
  • crypto/algorithms/CryptoAlgorithmECDSA.cpp: (WebCore::CryptoAlgorithmECDSA::sign): (WebCore::CryptoAlgorithmECDSA::verify): (WebCore::CryptoAlgorithmECDSA::importKey):
  • crypto/algorithms/CryptoAlgorithmECDSA.h:
  • crypto/algorithms/CryptoAlgorithmHKDF.cpp: (WebCore::CryptoAlgorithmHKDF::deriveBits): (WebCore::CryptoAlgorithmHKDF::importKey):
  • crypto/algorithms/CryptoAlgorithmHKDF.h:
  • crypto/algorithms/CryptoAlgorithmHMAC.cpp: (WebCore::CryptoAlgorithmHMAC::sign): (WebCore::CryptoAlgorithmHMAC::verify): (WebCore::CryptoAlgorithmHMAC::importKey):
  • crypto/algorithms/CryptoAlgorithmHMAC.h:
  • crypto/algorithms/CryptoAlgorithmPBKDF2.cpp: (WebCore::CryptoAlgorithmPBKDF2::deriveBits): (WebCore::CryptoAlgorithmPBKDF2::importKey):
  • crypto/algorithms/CryptoAlgorithmPBKDF2.h:
  • crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.cpp: (WebCore::CryptoAlgorithmRSAES_PKCS1_v1_5::encrypt): (WebCore::CryptoAlgorithmRSAES_PKCS1_v1_5::decrypt): (WebCore::CryptoAlgorithmRSAES_PKCS1_v1_5::importKey):
  • crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.h:
  • crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.cpp: (WebCore::CryptoAlgorithmRSASSA_PKCS1_v1_5::sign): (WebCore::CryptoAlgorithmRSASSA_PKCS1_v1_5::verify): (WebCore::CryptoAlgorithmRSASSA_PKCS1_v1_5::importKey):
  • crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.h:
  • crypto/algorithms/CryptoAlgorithmRSA_OAEP.cpp: (WebCore::CryptoAlgorithmRSA_OAEP::encrypt): (WebCore::CryptoAlgorithmRSA_OAEP::decrypt): (WebCore::CryptoAlgorithmRSA_OAEP::importKey):
  • crypto/algorithms/CryptoAlgorithmRSA_OAEP.h:
  • crypto/algorithms/CryptoAlgorithmRSA_PSS.cpp: (WebCore::CryptoAlgorithmRSA_PSS::sign): (WebCore::CryptoAlgorithmRSA_PSS::verify): (WebCore::CryptoAlgorithmRSA_PSS::importKey):
  • crypto/algorithms/CryptoAlgorithmRSA_PSS.h:
  • crypto/gcrypt/CryptoAlgorithmAES_CBCGCrypt.cpp: (WebCore::CryptoAlgorithmAES_CBC::platformEncrypt): (WebCore::CryptoAlgorithmAES_CBC::platformDecrypt):
  • crypto/gcrypt/CryptoAlgorithmAES_CFBGCrypt.cpp: (WebCore::CryptoAlgorithmAES_CFB::platformEncrypt): (WebCore::CryptoAlgorithmAES_CFB::platformDecrypt):
  • crypto/gcrypt/CryptoAlgorithmAES_CTRGCrypt.cpp: (WebCore::CryptoAlgorithmAES_CTR::platformEncrypt): (WebCore::CryptoAlgorithmAES_CTR::platformDecrypt):
  • crypto/gcrypt/CryptoAlgorithmAES_GCMGCrypt.cpp: (WebCore::CryptoAlgorithmAES_GCM::platformEncrypt): (WebCore::CryptoAlgorithmAES_GCM::platformDecrypt):
  • crypto/gcrypt/CryptoAlgorithmHKDFGCrypt.cpp: (WebCore::CryptoAlgorithmHKDF::platformDeriveBits):
  • crypto/gcrypt/CryptoAlgorithmPBKDF2GCrypt.cpp: (WebCore::CryptoAlgorithmPBKDF2::platformDeriveBits):
  • crypto/gcrypt/CryptoAlgorithmRSA_OAEPGCrypt.cpp: (WebCore::CryptoAlgorithmRSA_OAEP::platformEncrypt): (WebCore::CryptoAlgorithmRSA_OAEP::platformDecrypt):
  • crypto/gcrypt/CryptoAlgorithmRSA_PSSGCrypt.cpp: (WebCore::CryptoAlgorithmRSA_PSS::platformSign): (WebCore::CryptoAlgorithmRSA_PSS::platformVerify):
  • crypto/mac/CryptoAlgorithmAES_CBCMac.cpp: (WebCore::CryptoAlgorithmAES_CBC::platformEncrypt): (WebCore::CryptoAlgorithmAES_CBC::platformDecrypt):
  • crypto/mac/CryptoAlgorithmAES_CFBMac.cpp: (WebCore::CryptoAlgorithmAES_CFB::platformEncrypt): (WebCore::CryptoAlgorithmAES_CFB::platformDecrypt):
  • crypto/mac/CryptoAlgorithmAES_CTRMac.cpp: (WebCore::CryptoAlgorithmAES_CTR::platformEncrypt): (WebCore::CryptoAlgorithmAES_CTR::platformDecrypt):
  • crypto/mac/CryptoAlgorithmAES_GCMMac.cpp: (WebCore::CryptoAlgorithmAES_GCM::platformEncrypt): (WebCore::CryptoAlgorithmAES_GCM::platformDecrypt):
  • crypto/mac/CryptoAlgorithmHKDFMac.cpp: (WebCore::CryptoAlgorithmHKDF::platformDeriveBits):
  • crypto/mac/CryptoAlgorithmPBKDF2Mac.cpp: (WebCore::CryptoAlgorithmPBKDF2::platformDeriveBits):
  • crypto/mac/CryptoAlgorithmRSA_OAEPMac.cpp: (WebCore::CryptoAlgorithmRSA_OAEP::platformEncrypt): (WebCore::CryptoAlgorithmRSA_OAEP::platformDecrypt):
  • crypto/mac/CryptoAlgorithmRSA_PSSMac.cpp: (WebCore::CryptoAlgorithmRSA_PSS::platformSign): (WebCore::CryptoAlgorithmRSA_PSS::platformVerify):
  • crypto/parameters/CryptoAlgorithmAesCbcCfbParams.h:
  • crypto/parameters/CryptoAlgorithmAesCtrParams.h:
  • crypto/parameters/CryptoAlgorithmAesGcmParams.h:
  • crypto/parameters/CryptoAlgorithmEcKeyParams.h:
  • crypto/parameters/CryptoAlgorithmEcdsaParams.h:
  • crypto/parameters/CryptoAlgorithmHkdfParams.h:
  • crypto/parameters/CryptoAlgorithmHmacKeyParams.h:
  • crypto/parameters/CryptoAlgorithmPbkdf2Params.h:
  • crypto/parameters/CryptoAlgorithmRsaHashedImportParams.h:
  • crypto/parameters/CryptoAlgorithmRsaOaepParams.h:
  • crypto/parameters/CryptoAlgorithmRsaPssParams.h:

LayoutTests:

crypto/subtle/aes-gcm-import-key-unwrap-ec-raw-key.html is an exception of this series of tests as
it only aims to test the correct behavoir of suggested algorithms. This patch aslo does some test
gardening.

  • TestExpectations:
  • crypto/subtle/aes-gcm-import-key-unwrap-ec-raw-key-expected.txt: Added.
  • crypto/subtle/aes-gcm-import-key-unwrap-ec-raw-key.html: Added.
  • http/wpt/crypto/aes-cbc-crash.any-expected.txt: Added.
  • http/wpt/crypto/aes-cbc-crash.any.html: Added.
  • http/wpt/crypto/aes-cbc-crash.any.js: Added.
  • http/wpt/crypto/aes-cbc-crash.any.worker-expected.txt: Added.
  • http/wpt/crypto/aes-cbc-crash.any.worker.html: Added.
  • http/wpt/crypto/aes-ctr-crash.any-expected.txt: Added.
  • http/wpt/crypto/aes-ctr-crash.any.html: Added.
  • http/wpt/crypto/aes-ctr-crash.any.js: Added.
  • http/wpt/crypto/aes-ctr-crash.any.worker-expected.txt: Added.
  • http/wpt/crypto/aes-ctr-crash.any.worker.html: Added.
  • http/wpt/crypto/aes-gcm-crash.any-expected.txt: Added.
  • http/wpt/crypto/aes-gcm-crash.any.html: Added.
  • http/wpt/crypto/aes-gcm-crash.any.js: Added.
  • http/wpt/crypto/aes-gcm-crash.any.worker-expected.txt: Added.
  • http/wpt/crypto/aes-gcm-crash.any.worker.html: Added.
  • http/wpt/crypto/derive-hmac-key-crash.any-expected.txt: Added.
  • http/wpt/crypto/derive-hmac-key-crash.any.html: Added.
  • http/wpt/crypto/derive-hmac-key-crash.any.js: Added.
  • http/wpt/crypto/derive-hmac-key-crash.any.worker-expected.txt: Added.
  • http/wpt/crypto/derive-hmac-key-crash.any.worker.html: Added.
  • http/wpt/crypto/ecdsa-crash.any-expected.txt: Added.
  • http/wpt/crypto/ecdsa-crash.any.html: Added.
  • http/wpt/crypto/ecdsa-crash.any.js: Added.
  • http/wpt/crypto/ecdsa-crash.any.worker-expected.txt: Added.
  • http/wpt/crypto/ecdsa-crash.any.worker.html: Added.
  • http/wpt/crypto/hkdf-crash.any-expected.txt: Added.
  • http/wpt/crypto/hkdf-crash.any.html: Added.
  • http/wpt/crypto/hkdf-crash.any.js: Added.
  • http/wpt/crypto/hkdf-crash.any.worker-expected.txt: Added.
  • http/wpt/crypto/hkdf-crash.any.worker.html: Added.
  • http/wpt/crypto/pbkdf2-crash.any-expected.txt: Added.
  • http/wpt/crypto/pbkdf2-crash.any.html: Added.
  • http/wpt/crypto/pbkdf2-crash.any.js: Added.
  • http/wpt/crypto/pbkdf2-crash.any.worker-expected.txt: Added.
  • http/wpt/crypto/pbkdf2-crash.any.worker.html: Added.
  • http/wpt/crypto/resources/common.js: Added.
  • http/wpt/crypto/rsa-oaep-crash.any-expected.txt: Added.
  • http/wpt/crypto/rsa-oaep-crash.any.html: Added.
  • http/wpt/crypto/rsa-oaep-crash.any.js: Added.
  • http/wpt/crypto/rsa-oaep-crash.any.worker-expected.txt: Added.
  • http/wpt/crypto/rsa-oaep-crash.any.worker.html: Added.
  • http/wpt/crypto/rsa-pss-crash.any-expected.txt: Added.
  • http/wpt/crypto/rsa-pss-crash.any.html: Added.
  • http/wpt/crypto/rsa-pss-crash.any.js: Added.
  • http/wpt/crypto/rsa-pss-crash.any.worker-expected.txt: Added.
  • http/wpt/crypto/rsa-pss-crash.any.worker.html: Added.
  • http/wpt/crypto/unwrap-ec-key-crash.any-expected.txt: Added.
  • http/wpt/crypto/unwrap-ec-key-crash.any.html: Added.
  • http/wpt/crypto/unwrap-ec-key-crash.any.js: Added.
  • http/wpt/crypto/unwrap-ec-key-crash.any.worker-expected.txt: Added.
  • http/wpt/crypto/unwrap-ec-key-crash.any.worker.html: Added.
  • http/wpt/crypto/unwrap-rsa-key-crash.any-expected.txt: Added.
  • http/wpt/crypto/unwrap-rsa-key-crash.any.html: Added.
  • http/wpt/crypto/unwrap-rsa-key-crash.any.js: Added.
  • http/wpt/crypto/unwrap-rsa-key-crash.any.worker.html: Added.
  • http/wpt/crypto/unwrap-rsa-key-crash.any.worker-expected.txt: Added.

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

12:28 AM Changeset in webkit [235724] by bshafiei@apple.com
  • 7 edits in tags/Safari-607.1.5.1/Source

Versioning.

12:25 AM Changeset in webkit [235723] by bshafiei@apple.com
  • 1 copy in tags/Safari-607.1.5.1

Tag Safari-607.1.5.1.

Sep 5, 2018:

10:08 PM Changeset in webkit [235722] by youenn@apple.com
  • 5 edits in trunk/Source/WebCore

Move ownership of outgoing source to RTCRtpSender backend
https://bugs.webkit.org/show_bug.cgi?id=189310

Reviewed by Alex Christensen.

RTCRtpSender should own the source so that it can replace/stop it.
Since this is libwebrtc specific, the source is actually owned by the backend.
Simplified replaceTrack a bit based on that.

No change of behavior.

  • Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:

(WebCore::LibWebRTCMediaEndpoint::addTrack):

  • Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp:

(WebCore::LibWebRTCPeerConnectionBackend::doStop):
(WebCore::updateTrackSource):
(WebCore::LibWebRTCPeerConnectionBackend::replaceTrack):
(WebCore::LibWebRTCPeerConnectionBackend::applyRotationForOutgoingVideoSources):

  • Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.h:
  • Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.h:
9:07 PM Changeset in webkit [235721] by Brent Fulgham
  • 7 edits
    2 adds in trunk

Source/WebCore:
The width of an empty or nullptr TextRun should be zero
https://bugs.webkit.org/show_bug.cgi?id=189154
<rdar://problem/43685926>

Reviewed by Zalan Bujtas.

If a page has an empty TextRun and attempts to paint it we can crash with a nullptr.

This patch recognizes that an empty TextRun should always produce a zero width, rather than
attempt to compute this value from font data. It also prevents ListBox from attempting to
paint a null string.

Test: fast/text/null-string-textrun.html

  • platform/graphics/FontCascade.cpp:

(WebCore::FontCascade::widthOfTextRange const): An empty TextRun has zero width.
(WebCore::FontCascade::width const): Ditto.

  • platform/graphics/TextRun.h:

(WebCore::TextRun::TextRun): ASSERT that the supplied String is non-null.
(WebCore::TextRun::setText): Ditto.

  • rendering/RenderListBox.cpp:

(WebCore::RenderListBox::paintItemForeground): Don't attempt to paint a null string.

Source/WTF:
The width of an empty or nullptr TextRun should be zero
https://bugs.webkit.org/show_bug.cgi?id=189154
<rdar://problem/43685926>

Reviewed by Zalan Bujtas.

Most accessors in WTFString.cpp, such as isAllASCII(), hash(), etc., perform a nullptr check
before using m_impl, but is8Bit() does not.

This patch adds a check in the is8Bit() implementation to be consistent with other methods,
and to address a small number of crashes observed in testing.

  • wtf/text/WTFString.h:

(WTF::String::is8Bit const):

LayoutTests:
The width of a nullptr TextRun should be zero
https://bugs.webkit.org/show_bug.cgi?id=189154
<rdar://problem/43685926>

Reviewed by Zalan Bujtas.

  • fast/text/null-string-textrun-expected.txt: Added.
  • fast/text/null-string-textrun.html: Added.
9:06 PM Changeset in webkit [235720] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[LFC][BFC] ComputeFloat* methods should take a const FloatingContext&
https://bugs.webkit.org/show_bug.cgi?id=189333

Reviewed by Antti Koivisto.

Only layoutFormattingContextRoot() needs a non-const FloatingContext& object (to add the floating box to the floating state).

  • layout/blockformatting/BlockFormattingContext.cpp:

(WebCore::Layout::BlockFormattingContext::layoutFormattingContextRoot const):
(WebCore::Layout::BlockFormattingContext::computeFloatingPosition const):
(WebCore::Layout::BlockFormattingContext::computePositionToAvoidFloats const):

  • layout/blockformatting/BlockFormattingContext.h:
9:01 PM Changeset in webkit [235719] by youenn@apple.com
  • 7 edits
    1 add in trunk/Source/WebCore

Introduce a backend for RTCRtpTransceiver
https://bugs.webkit.org/show_bug.cgi?id=189322

Reviewed by Eric Carlson.

Introduce RTCRtpTransceiverBackend to implement the transceiver functionality using libwebrtc.
Remove provisional mids as it will be done by the webrtc backend.

No observable change of behavior yet since there is no transceiver backend yet.

  • Modules/mediastream/PeerConnectionBackend.h:
  • Modules/mediastream/RTCRtpTransceiver.cpp:

(WebCore::RTCRtpTransceiver::RTCRtpTransceiver):
(WebCore::RTCRtpTransceiver::mid const):
(WebCore::RTCRtpTransceiver::direction const):
(WebCore::RTCRtpTransceiver::setDirection):
(WebCore::RTCRtpTransceiver::stop):
(WebCore::RTCRtpTransceiver::getNextMid): Deleted.
(WebCore::RTCRtpTransceiver::directionString const): Deleted.

  • Modules/mediastream/RTCRtpTransceiver.h:

(WebCore::RTCRtpTransceiver::create):
(WebCore::RTCRtpTransceiver::provisionalMid const): Deleted.
(WebCore::RTCRtpTransceiver::setMid): Deleted.

  • Modules/mediastream/RTCRtpTransceiverBackend.h: Added.
  • Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp:

(WebCore::LibWebRTCPeerConnectionBackend::createReceiver):
(WebCore::LibWebRTCPeerConnectionBackend::videoReceiver):
(WebCore::LibWebRTCPeerConnectionBackend::audioReceiver):
(WebCore::LibWebRTCPeerConnectionBackend::addTrack):
(WebCore::LibWebRTCPeerConnectionBackend::completeAddTransceiver):

  • Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.h:
  • WebCore.xcodeproj/project.pbxproj:
8:46 PM Changeset in webkit [235718] by don.olmstead@sony.com
  • 4 edits
    1 add in trunk

[CMake] Allow port specific options on gtest
https://bugs.webkit.org/show_bug.cgi?id=189313

Reviewed by Alex Christensen.

Source/ThirdParty:

Allows a port to configure options within gtest for its platform.
The library type can be set otherwise it defaults to shared. Also the
compile definitions are propogated to TestWebKitAPI through a global
property.

  • gtest/CMakeLists.txt:
  • gtest/PlatformWin.cmake: Added.

Tools:

Use the global property set by the gtest CMake file to add to the
compilation definitions for TestWebKitAPI rather than repeating the
logic.

  • TestWebKitAPI/CMakeLists.txt:
7:54 PM Changeset in webkit [235717] by Fujii Hironori
  • 2 edits in trunk/Websites/webkit.org

Update code style guidelines for using namespace inside a namespace definition
https://bugs.webkit.org/show_bug.cgi?id=189298

Reviewed by Ryosuke Niwa.

"using namespace" statements should be inside namespace definitions for
unified source builds.

  • code-style.md(#using-position):
6:42 PM Changeset in webkit [235716] by Alan Bujtas
  • 11 edits in trunk/Source/WebCore

[LFC] Pass in const LayoutContext& to geometry methods when possible
https://bugs.webkit.org/show_bug.cgi?id=189331

Reviewed by Antti Koivisto.

Only layout and layout-like methods (intrinsic width computation -> shrink to fit -> out-of-flow/floating boxes) should take a
non-const LayoutContext&. Other geometry functions should not mutate the the context.

  • layout/FormattingContext.cpp:

(WebCore::Layout::FormattingContext::computeOutOfFlowVerticalGeometry const):
(WebCore::Layout::FormattingContext::computeBorderAndPadding const):
(WebCore::Layout::FormattingContext::placeInFlowPositionedChildren const):
(WebCore::Layout::FormattingContext::layoutOutOfFlowDescendants const):

  • layout/FormattingContext.h:

(WebCore::Layout::FormattingContext::Geometry::inlineReplacedWidthAndMargin):

  • layout/FormattingContextGeometry.cpp:

(WebCore::Layout::contentHeightForFormattingContextRoot):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedVerticalGeometry):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedVerticalGeometry):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedHorizontalGeometry):
(WebCore::Layout::FormattingContext::Geometry::complicatedCases):
(WebCore::Layout::FormattingContext::Geometry::floatingReplacedHeightAndMargin):
(WebCore::Layout::FormattingContext::Geometry::floatingReplacedWidthAndMargin):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowVerticalGeometry):
(WebCore::Layout::FormattingContext::Geometry::floatingHeightAndMargin):
(WebCore::Layout::FormattingContext::Geometry::inlineReplacedHeightAndMargin):
(WebCore::Layout::FormattingContext::Geometry::inlineReplacedWidthAndMargin):
(WebCore::Layout::FormattingContext::Geometry::computedBorder):
(WebCore::Layout::FormattingContext::Geometry::computedPadding):

  • layout/LayoutContext.cpp:

(WebCore::Layout::LayoutContext::layoutFormattingContextSubtree):
(WebCore::Layout::LayoutContext::establishedFormattingState const):
(WebCore::Layout::LayoutContext::createFormattingStateForFormattingRootIfNeeded):
(WebCore::Layout::LayoutContext::formattingContext const):
(WebCore::Layout::LayoutContext::establishedFormattingState): Deleted.
(WebCore::Layout::LayoutContext::formattingContext): Deleted.

  • layout/LayoutContext.h:
  • layout/blockformatting/BlockFormattingContext.cpp:

(WebCore::Layout::BlockFormattingContext::layoutFormattingContextRoot const):
(WebCore::Layout::BlockFormattingContext::computeStaticPosition const):
(WebCore::Layout::BlockFormattingContext::computeEstimatedMarginTop const):
(WebCore::Layout::BlockFormattingContext::computeEstimatedMarginTopForAncestors const):
(WebCore::Layout::BlockFormattingContext::computeFloatingPosition const):
(WebCore::Layout::BlockFormattingContext::computePositionToAvoidFloats const):
(WebCore::Layout::BlockFormattingContext::computeVerticalPositionForFloatClear const):
(WebCore::Layout::BlockFormattingContext::computeInFlowPositionedPosition const):
(WebCore::Layout::BlockFormattingContext::computeHeightAndMargin const):
(WebCore::Layout::BlockFormattingContext::instrinsicWidthConstraints const):

  • layout/blockformatting/BlockFormattingContext.h:
  • layout/blockformatting/BlockFormattingContextGeometry.cpp:

(WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedHeightAndMargin):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedWidthAndMargin):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowReplacedWidthAndMargin):
(WebCore::Layout::BlockFormattingContext::Geometry::staticPosition):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowPositionedPosition):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowHeightAndMargin):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowWidthAndMargin):
(WebCore::Layout::BlockFormattingContext::Geometry::instrinsicWidthConstraints):

  • layout/inlineformatting/InlineFormattingContext.cpp:

(WebCore::Layout::InlineFormattingContext::computeStaticPosition const):
(WebCore::Layout::InlineFormattingContext::computeInFlowPositionedPosition const):

  • layout/inlineformatting/InlineFormattingContext.h:
4:51 PM Changeset in webkit [235715] by mark.lam@apple.com
  • 3 edits
    1 add in trunk

JSPropertyNameEnumerator::visitChildren() needs to visit its m_cachedStructureID.
https://bugs.webkit.org/show_bug.cgi?id=189124
<rdar://problem/43863605>

Reviewed by Filip Pizlo.

JSTests:

  • stress/regress-189124.js: Added.

Source/JavaScriptCore:

It is assumed that the Structure for the m_cachedStructureID will remain alive
while the m_cachedStructureID is in use. This prevents the structureID from being
re-used for a different Structure.

  • runtime/JSPropertyNameEnumerator.cpp:

(JSC::JSPropertyNameEnumerator::visitChildren):

3:30 PM Changeset in webkit [235714] by youenn@apple.com
  • 22 edits in trunk

Expose RTCRtpSender.setParameters
https://bugs.webkit.org/show_bug.cgi?id=189307

Reviewed by Eric Carlson.

LayoutTests/imported/w3c:

  • web-platform-tests/webrtc/RTCRtpSender-replaceTrack-expected.txt:
  • web-platform-tests/webrtc/RTCRtpSender-setParameters-expected.txt:

Source/ThirdParty/libwebrtc:

  • Configurations/libwebrtc.iOS.exp:
  • Configurations/libwebrtc.iOSsim.exp:
  • Configurations/libwebrtc.mac.exp:

Source/WebCore:

Implement RTCRtpSender.setParameters.
This is an incomplete implementation as we need to refresh parameters as per the spec and testing is much easier with full transceiver support.
Implementation uses sender backend to set the parameters at libwebrtc level.
Fix the case of a stopped sender/transceiver in which case promise should be rejected.
Covered by rebased and modified tests.

  • Modules/mediastream/RTCRtpParameters.h:
  • Modules/mediastream/RTCRtpSender.cpp:

(WebCore::RTCRtpSender::setParameters):

  • Modules/mediastream/RTCRtpSender.h:
  • Modules/mediastream/RTCRtpSender.idl:
  • Modules/mediastream/RTCRtpSenderBackend.h:
  • Modules/mediastream/RTCRtpTransceiver.cpp:

(WebCore::RTCRtpTransceiver::stop):

  • Modules/mediastream/RTCRtpTransceiver.h:
  • Modules/mediastream/libwebrtc/LibWebRTCRtpReceiverBackend.cpp:

(WebCore::LibWebRTCRtpReceiverBackend::getParameters):

  • Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.cpp:

(WebCore::LibWebRTCRtpSenderBackend::getParameters const):
(WebCore::LibWebRTCRtpSenderBackend::setParameters):

  • Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.h:
  • Modules/mediastream/libwebrtc/LibWebRTCUtils.cpp:

(WebCore::toRTCEncodingParameters):
(WebCore::fromRTCEncodingParameters):
(WebCore::toRTCHeaderExtensionParameters):
(WebCore::fromRTCHeaderExtensionParameters):
(WebCore::toRTCCodecParameters):
(WebCore::toRTCRtpParameters):
(WebCore::fromRTCRtpParameters):

  • Modules/mediastream/libwebrtc/LibWebRTCUtils.h:

LayoutTests:

  • webrtc/video-getParameters.html:
3:25 PM Changeset in webkit [235713] by Simon Fraser
  • 2 edits in trunk/Source/WebCore

Remove some logging that I committed by mistake.

  • rendering/RenderLayerFilters.cpp:

(WebCore::RenderLayerFilters::RenderLayerFilters):
(WebCore::RenderLayerFilters::~RenderLayerFilters):

3:18 PM Changeset in webkit [235712] by Ross Kirsling
  • 6 edits in trunk

[ESNext] Symbol.prototype.description
https://bugs.webkit.org/show_bug.cgi?id=186686

Reviewed by Keith Miller.

JSTests:

  • stress/symbol-description.js:

Add tests for empty and null symbol cases.

  • test262/config.yaml:

Enable Symbol.prototype.description tests.

Source/JavaScriptCore:

Symbol.prototype.description was implemented in r232404, but has one small bug:
It should return undefined for a null symbol.

  • runtime/Symbol.cpp:

(JSC::Symbol::description const):

  • runtime/SymbolPrototype.cpp:

(JSC::symbolProtoGetterDescription):
Address the null symbol case.

3:08 PM Changeset in webkit [235711] by Alan Bujtas
  • 7 edits in trunk/Source/WebCore

[LFC] Construct the Display::Box objects on demand.
https://bugs.webkit.org/show_bug.cgi?id=189320

Reviewed by Antti Koivisto.

  • layout/FormattingContext.cpp:

(WebCore::Layout::FormattingContext::layoutOutOfFlowDescendants const):

  • layout/LayoutContext.cpp:

(WebCore::Layout::LayoutContext::initializeRoot):
(WebCore::Layout::LayoutContext::displayBoxForLayoutBox const):
(WebCore::Layout::LayoutContext::createDisplayBox): Deleted.

  • layout/LayoutContext.h:

(WebCore::Layout::LayoutContext::displayBoxForLayoutBox const): Deleted.

  • layout/Verification.cpp:

(WebCore::Layout::LayoutContext::verifyAndOutputMismatchingLayoutTree const):

  • layout/blockformatting/BlockFormattingContext.cpp:

(WebCore::Layout::BlockFormattingContext::layout const):

  • layout/displaytree/DisplayBox.h:
2:57 PM Changeset in webkit [235710] by ddkilzer@apple.com
  • 2 edits in trunk/Source/WebKit

REGRESSION (r235489): WKSharingServicePickerDelegate.mm accidentally added back to Sources in WebKit project

  • WebKit.xcodeproj/project.pbxproj:

(WKSharingServicePickerDelegate.mm): Let Xcode have its way with
the WebKit project file by removing this file from Sources.
It's already included in a UnifedSource file, so it should not
have been added back to Sources during merge conflict resolution
for r235489.

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

REGRESSION (r204222): UIProces/Gamepad/mac is missing in WebKit Xcode project

Found using tidy-Xcode-project-file --missing (see Bug
188754). Fixes applied manually.

  • WebKit.xcodeproj/project.pbxproj:

(UIProces/Gamepad/mac): Fix path to "mac" directory, then remove
its now-redundant name.
(UIGamepadProviderMac.mm): Change path to be relative to its
group after the above change.

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

REGRESSION (r143543): PluginProcess/EntryPoint/XPCService/PluginService is missing in WebKit Xcode project

Found using tidy-Xcode-project-file --missing (see Bug
188754). Fixes applied manually.

  • WebKit.xcodeproj/project.pbxproj:

(PluginProcess/EntryPoint/XPCService/PluginService): Remove path
to PluginService.64 directory, which was removed in r143543, so
that this becomes a virtual folder that inherits its path from
its parent.
(PluginService.32-64.Info.plist): Change path to be relative to
its group after the above change. Delete redundant name value.

2:57 PM Changeset in webkit [235707] by bshafiei@apple.com
  • 1 copy in tags/Safari-607.1.5

Tag Safari-607.1.5.

2:52 PM Changeset in webkit [235706] by bshafiei@apple.com
  • 2 edits in branches/safari-606-branch/Source/WebKit

Cherry-pick r235133. rdar://problem/44144065

Increment NetworkCache::Storage::lastStableVersion after r233742
https://bugs.webkit.org/show_bug.cgi?id=188798
<rdar://43561761>

Reviewed by Geoffrey Garen.

  • NetworkProcess/cache/NetworkCacheStorage.h:

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

2:52 PM Changeset in webkit [235705] by bshafiei@apple.com
  • 3 edits
    1 add in branches/safari-606-branch

Cherry-pick r235007. rdar://problem/44144079

intersectionOfPastValuesAtHead must filter values after they've observed an invalidation point
https://bugs.webkit.org/show_bug.cgi?id=188707
<rdar://problem/43015442>

Reviewed by Mark Lam.

JSTests:

  • stress/cfa-expected-values-must-set-clobbered-to-false.js: Added. (foo): (let.comp.valueOf): (result):

Source/JavaScriptCore:

We use the values in intersectionOfPastValuesAtHead to verify that it is safe to
OSR enter at the head of a block. We verify it's safe to OSR enter by checking
that each incoming value is compatible with its corresponding AbstractValue.

The bug is that we were sometimes filtering the intersectionOfPastValuesAtHead
with abstract values that were clobbererd. This meant that the value we're
verifying with at OSR entry effectively has an infinite structure set because
it's clobbered. So, imagine we have code like this:
`
---> We OSR enter here, and we're clobbered here
InvalidationPoint
GetByOffset(@base)
`

The abstract value for @base inside intersectionOfPastValuesAtHead has a
clobberred structure set, so we'd allow an incoming object with any
structure. However, this is wrong because the invalidation point is no
longer fulfilling its promise that it filters the structure that @base has.

We fix this by filtering the AbstractValues in intersectionOfPastValuesAtHead
as if the incoming value may be live past an InvalidationPoint.
This places a stricter requirement that to safely OSR enter at any basic
block, all incoming values must be compatible as if they lived past
the execution of an invalidation point.

  • dfg/DFGCFAPhase.cpp: (JSC::DFG::CFAPhase::run):

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

2:52 PM Changeset in webkit [235704] by bshafiei@apple.com
  • 2 edits in branches/safari-606-branch/Source/WebKit

Cherry-pick r234908. rdar://problem/44144086

[WinCairo] Unreviewed build fix after r234896.

  • NetworkProcess/curl/NetworkDataTaskCurl.cpp: (WebKit::NetworkDataTaskCurl::tryHttpAuthentication):

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

2:52 PM Changeset in webkit [235703] by bshafiei@apple.com
  • 5 edits in branches/safari-606-branch/Source

Cherry-pick r234905. rdar://problem/44144059

Can't share an app on AppStore to WeChat due to a release assert
https://bugs.webkit.org/show_bug.cgi?id=188621
<rdar://problem/43343976>

Reviewed by Geoffrey Garen.

Disable the thread safety check when the app is not linked on or after iOS 12 since this release assert
is getting hit by third party applications on iOS in UI process.

Source/WebCore:

  • platform/Timer.cpp: (WebCore::shouldSuppressThreadSafetyCheck): Added a SDK check.

Source/WebKit:

  • UIProcess/Cocoa/VersionChecks.h: (WebKit::SDKVersion::FirstWithMainThreadReleaseAssertionInWebPageProxy): Added. It's iOS 12 or macOS 10.14 Mojave.
  • UIProcess/WebProcessProxy.cpp: (WebKit::isMainThreadOrCheckDisabled): Added. Returns true whether when we're in the main thread or if the app is not linked on or after iOS 12 or macOS 10.14 Mojave. (WebKit::globalPageMap): (WebKit::m_isInPrewarmedPool): (WebKit::WebProcessProxy::~WebProcessProxy): (WebKit::WebProcessProxy::shutDown): (WebKit::WebProcessProxy::deleteWebsiteDataForTopPrivatelyControlledDomainsInAllPersistentDataStores): (WebKit::WebProcessProxy::topPrivatelyControlledDomainsWithWebsiteData): (WebKit::WebProcessProxy::didFinishLaunching):

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

2:52 PM Changeset in webkit [235702] by bshafiei@apple.com
  • 19 edits in branches/safari-606-branch/Source/WebKit

Cherry-pick r234896. rdar://problem/44144086

NetworkCORSPreflightChecker should proceed in case of ProtectionSpaceAuthenticationSchemeServerTrustEvaluationRequested even though the WebKit app is not implementing the didReceiveAuthenticationChallenge/didReceiveAuthenticationChallengeInFrame callback
https://bugs.webkit.org/show_bug.cgi?id=188592
<rdar://problem/43210331>

Reviewed by Youenn Fablet.

Do a canAuthenticateAgainstProtectionSpace check in NetworkCORSPreflightChecker like we do in NetworkLoad.
Use CompletionHandlers to make the now 3 different canAuthenticateAgainstProtectionSpace checks look the same from the NetworkProcess.

  • NetworkProcess/NetworkCORSPreflightChecker.cpp: (WebKit::NetworkCORSPreflightChecker::didReceiveChallenge):
  • NetworkProcess/NetworkCORSPreflightChecker.h:
  • NetworkProcess/NetworkDataTask.h:
  • NetworkProcess/NetworkLoad.cpp: (WebKit::NetworkLoad::didReceiveChallenge):
  • NetworkProcess/NetworkLoad.h:
  • NetworkProcess/NetworkProcess.cpp: (WebKit::NetworkProcess::canAuthenticateAgainstProtectionSpace): (WebKit::NetworkProcess::continueCanAuthenticateAgainstProtectionSpace):
  • NetworkProcess/NetworkProcess.h:
  • NetworkProcess/NetworkResourceLoader.cpp: (WebKit::NetworkResourceLoader::canAuthenticateAgainstProtectionSpaceAsync): (WebKit::NetworkResourceLoader::continueCanAuthenticateAgainstProtectionSpace): Deleted.
  • NetworkProcess/NetworkResourceLoader.h:
  • NetworkProcess/PingLoad.cpp: (WebKit::PingLoad::didReceiveChallenge):
  • NetworkProcess/PingLoad.h:
  • NetworkProcess/PreconnectTask.cpp: (WebKit::PreconnectTask::canAuthenticateAgainstProtectionSpaceAsync): (WebKit::PreconnectTask::continueCanAuthenticateAgainstProtectionSpace): Deleted.
  • NetworkProcess/PreconnectTask.h:
  • NetworkProcess/cocoa/NetworkDataTaskCocoa.h:
  • NetworkProcess/cocoa/NetworkDataTaskCocoa.mm: (WebKit::NetworkDataTaskCocoa::didReceiveChallenge):

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

2:52 PM Changeset in webkit [235701] by bshafiei@apple.com
  • 2 edits in branches/safari-606-branch/Source/WebCore

Cherry-pick r234890. rdar://problem/44144063

Remove failing assertion introduced in r234873
https://bugs.webkit.org/show_bug.cgi?id=188581

  • contentextensions/ContentExtensionCompiler.cpp: (WebCore::ContentExtensions::compileRuleList): The assertion is correct but failing because VectorTraits<String> is incorrect. I'll re-add it and fix VectorTraits<String> in a separate patch.

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

2:52 PM Changeset in webkit [235700] by bshafiei@apple.com
  • 15 edits in branches/safari-606-branch

Cherry-pick r234873. rdar://problem/44144063

isValidCSSSelector is unsafe to be called from a non-main thread
https://bugs.webkit.org/show_bug.cgi?id=188581
<rdar://problem/40517358>

Reviewed by Sam Weinig.

Source/WebCore:

Parsing and determining whether the css selectors are valid is fast enough to do before
hopping to the background thread for the slow NFA/DFA operations and writing to disk.
Doing it on the main thread avoids the thread safety issues in the CSSParser's use of strings.

  • contentextensions/ContentExtensionCompiler.cpp: (WebCore::ContentExtensions::compileRuleList):
  • contentextensions/ContentExtensionCompiler.h:
  • contentextensions/ContentExtensionParser.cpp: (WebCore::ContentExtensions::isValidCSSSelector): (WebCore::ContentExtensions::loadEncodedRules): (WebCore::ContentExtensions::parseRuleList):
  • contentextensions/ContentExtensionParser.h:
  • contentextensions/ContentExtensionRule.cpp: (WebCore::ContentExtensions::Trigger::isolatedCopy const): (WebCore::ContentExtensions::Action::isolatedCopy const):
  • contentextensions/ContentExtensionRule.h: (WebCore::ContentExtensions::Trigger::isEmpty const): (WebCore::ContentExtensions::Trigger::operator== const): (WebCore::ContentExtensions::Action::Action): (WebCore::ContentExtensions::ContentExtensionRule::isolatedCopy const): (WebCore::ContentExtensions::ContentExtensionRule::operator== const): (WebCore::ContentExtensions::vectorIsolatedCopy):

Source/WebKit:

  • UIProcess/API/APIContentRuleListStore.cpp: (API::compiledToFile): (API::ContentRuleListStore::lookupContentRuleList): (API::ContentRuleListStore::getAvailableContentRuleListIdentifiers): (API::ContentRuleListStore::compileContentRuleList): (API::ContentRuleListStore::removeContentRuleList): (API::ContentRuleListStore::getContentRuleListSource):
  • UIProcess/API/APIContentRuleListStore.h:
  • UIProcess/API/Cocoa/WKContentRuleListStore.mm:

Source/WTF:

  • wtf/Vector.h: (WTF::minCapacity>::isolatedCopy):

Tools:

  • TestWebKitAPI/Tests/WebCore/ContentExtensions.cpp: (TestWebKitAPI::InMemoryCompiledContentExtension::create): (TestWebKitAPI::checkCompilerError):

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

2:52 PM Changeset in webkit [235699] by bshafiei@apple.com
  • 4 edits in branches/safari-606-branch/Source

Cherry-pick r234778. rdar://problem/44144053

[macOS] Multiple third party apps crash due to the thread safety check in TimerBase::setNextFireTime
https://bugs.webkit.org/show_bug.cgi?id=188480

Reviewed by Simon Fraser.

Source/WebCore:

Suppress the release assert in WebKit1 on macOS (isInWebProcess is always true in non-Cocoa platforms).

In the future, we should consider throwing Objective-C exceptions when third party apps call WebKit1
or WebKit2 APIs in non-main threads.

  • platform/Timer.cpp: (WebCore::shouldSuppressThreadSafetyCheck): Extracted out of ~TimerBase and setNextFireTime. (WebCore::TimerBase::~TimerBase): (WebCore::TimerBase::setNextFireTime):

Source/WTF:

Added the SDK version for macOS Mojave.

  • wtf/spi/darwin/dyldSPI.h:

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

2:52 PM Changeset in webkit [235698] by bshafiei@apple.com
  • 2 edits in branches/safari-606-branch/Source/WebCore

Cherry-pick r234766. rdar://problem/44144088

CrashTracer: com.apple.WebKit.Storage at WebCore::IDBServer::UniqueIDBDatabase::scheduleShutdownForClose
https://bugs.webkit.org/show_bug.cgi?id=188461
<rdar://problem/33555052>

Reviewed by Chris Dumez.

When we try to schedule shutdown for database, we should cancel the timer so no
scheduleShutdownForClose will be running after this.

  • Modules/indexeddb/server/UniqueIDBDatabase.cpp: (WebCore::IDBServer::UniqueIDBDatabase::scheduleShutdownForClose):

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

2:52 PM Changeset in webkit [235697] by bshafiei@apple.com
  • 10 edits in branches/safari-606-branch

Cherry-pick r234730. rdar://problem/44144081

REGRESSION (r232083): WKWebView loses first-party cookies on iOS
https://bugs.webkit.org/show_bug.cgi?id=188443
<rdar://problem/42991584>

Patch by Sihui Liu <sihui_liu@apple.com> on 2018-08-09
Reviewed by Chris Dumez.

Source/WebKit:

Revert the change to set sharedCookieStorage for iOS as it is breaking Kayak.

  • NetworkProcess/NetworkProcess.h:
  • NetworkProcess/NetworkProcessCreationParameters.cpp: (WebKit::NetworkProcessCreationParameters::encode const): (WebKit::NetworkProcessCreationParameters::decode):
  • NetworkProcess/NetworkProcessCreationParameters.h:
  • NetworkProcess/cocoa/NetworkProcessCocoa.mm: (WebKit::NetworkProcess::platformInitializeNetworkProcessCocoa):
  • Shared/WebProcessCreationParameters.cpp: (WebKit::WebProcessCreationParameters::encode const): (WebKit::WebProcessCreationParameters::decode):
  • Shared/WebProcessCreationParameters.h:
  • UIProcess/Cocoa/WebProcessPoolCocoa.mm: (WebKit::WebProcessPool::platformInitializeWebProcess): (WebKit::WebProcessPool::platformInitializeNetworkProcess):

Tools:

Skip WebKit.WKHTTPCookieStoreWithoutProcessPool on iOS.

  • TestWebKitAPI/Tests/WebKitCocoa/WKHTTPCookieStore.mm:

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

2:52 PM Changeset in webkit [235696] by bshafiei@apple.com
  • 7 edits
    2 adds in branches/safari-606-branch

Cherry-pick r234718. rdar://problem/44144071

REGRESSION (r228260): Events handled by input method invoke default event handler
https://bugs.webkit.org/show_bug.cgi?id=188370

Reviewed by Wenson Hsieh.

Source/WebCore:

The bug was caused by the default event handler being invoked for the "virtual" keydown events
generated for input methods. Namely, when Japanese or Chinese input methods swallows TAB key,
WebKit should not invoke the default event handler and move the focus during input composition.

Fixed the bug by adding a new boolean on Event indicating whether the default event handler
should be invoked, and restoring the behavior prior to r228260 for these virtual keydown events.

Test: editing/input/press-tab-during-ime-composition.html

  • dom/Event.h: (WebCore::Event::isDefaultEventHandlerIgnored const): Added. (WebCore::Event::setIsDefaultEventHandlerIgnored): Added.
  • dom/EventDispatcher.cpp: (WebCore::EventDispatcher::dispatchEvent): Don't invoke the default event handler if isDefaultEventHandlerIgnored is set.
  • page/EventHandler.cpp: (WebCore::EventHandler::internalKeyEvent): Set isDefaultEventHandlerIgnored. This restores WebKit's behavior prior to r228260.

LayoutTests:

Added a regression test. Due to the lack of adequate support of textInputController in WebKitTestRunner,
the test is only enabled in WebKit1. The WTR fix is tracked by https://webkit.org/b/188428.

  • editing/input/press-tab-during-ime-composition-expected.txt: Added.
  • editing/input/press-tab-during-ime-composition.html: Added.
  • platform/ios/TestExpectations:
  • platform/wk2/TestExpectations:

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

2:52 PM Changeset in webkit [235695] by bshafiei@apple.com
  • 7 edits in branches/safari-606-branch/Source

Cherry-pick r234652. rdar://problem/43009928

[macOS] Scrollbars are not visible when using 3rd party mouse
https://bugs.webkit.org/show_bug.cgi?id=188372

Reviewed by Simon Fraser.

Source/WebCore/PAL:

Added declaration of NSScrollerImpPair class method. This method updates all NSScrollerImpPairs
with a new recommended scroller style.

  • pal/spi/mac/NSScrollerImpSPI.h:

Source/WebKit:

The scrollbars are not visible because they are not updated with the recommended scroller style
when a 3rd party mouse is used. They still have the overlay style, but the system is
recommending the legacy style in this case. The UI process is currently notifying the WebProcess
about changes in the scroller style, but the current style is not set in the WebProcess on
startup. This patch sets the initial scroller style in the WebProcess by passing it as part of
the WebProcess creation parameters. Also, to make sure hot-plugging of a 3rd party mouse is
is visually changing the scroller style of the current page, a class method in NSScrollerImpPair
is called to update all NSScrollerImpPairs with the new recommended style. This method was
previously called by AppKit, but after blocking WindowServer access, AppKit is no longer calling
this method. This has been manually tested by using a 3rd party mouse.

  • Shared/WebProcessCreationParameters.cpp: (WebKit::WebProcessCreationParameters::encode const): (WebKit::WebProcessCreationParameters::decode):
  • Shared/WebProcessCreationParameters.h:
  • UIProcess/Cocoa/WebProcessPoolCocoa.mm: (WebKit::WebProcessPool::platformInitializeWebProcess):
  • WebProcess/cocoa/WebProcessCocoa.mm: (WebKit::WebProcess::platformInitializeWebProcess): (WebKit::WebProcess::scrollerStylePreferenceChanged):

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

2:52 PM Changeset in webkit [235694] by bshafiei@apple.com
  • 7 edits in branches/safari-606-branch/Source/WebKit

Cherry-pick r234626. rdar://problem/43009898

Regression(NetworkLoadChecker): CORS preflights are no longer able to deal with client certificate authentication
https://bugs.webkit.org/show_bug.cgi?id=188355
<rdar://problem/42546319>

Reviewed by Alex Christensen.

Before we started using the NetworkLoadChecker to do CORS-preflighting in the Network process, challenges would
use the NetworkLoad::completeAuthenticationChallenge() code path with isAllowedToAskUserForCredentials to set
to false. This would call:

  1. completionHandler(AuthenticationChallengeDisposition::UseCredential, { }); for TLS handshakes (server trust evaluation & client certification authentication)
  2. NetworkProcess::singleton().authenticationManager().didReceiveAuthenticationChallenge() otherwise

However, NetworkCORSPreflightChecker::didReceiveChallenge() was behaving differently and calling:

  1. completionHandler(AuthenticationChallengeDisposition::RejectProtectionSpace, { }); for server trust evaluations
  2. completionHandler(AuthenticationChallengeDisposition::Cancel, { }); otherwise

Restore previous behavior by aligning NetworkCORSPreflightChecker::didReceiveChallenge() with
NetworkLoad::completeAuthenticationChallenge() when isAllowedToAskUserForCredentials is set to false. This means
we end up asking the AuthenticationManager for client certificate authentication instead or cancelling the
preflight.

This fixes CORS-preflighting on some internal sites.

  • NetworkProcess/NetworkCORSPreflightChecker.cpp: (WebKit::NetworkCORSPreflightChecker::didReceiveChallenge):
  • NetworkProcess/NetworkCORSPreflightChecker.h:
  • NetworkProcess/NetworkLoadChecker.cpp: (WebKit::NetworkLoadChecker::NetworkLoadChecker): (WebKit::NetworkLoadChecker::checkCORSRequestWithPreflight):
  • NetworkProcess/NetworkLoadChecker.h:
  • NetworkProcess/NetworkResourceLoader.cpp:
  • NetworkProcess/PingLoad.cpp: (WebKit::PingLoad::PingLoad):

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

2:52 PM Changeset in webkit [235693] by bshafiei@apple.com
  • 2 edits in branches/safari-606-branch/Source/WebKit

Cherry-pick r234611. rdar://problem/43009906

Fix IPC::Connection leak in StorageManager
https://bugs.webkit.org/show_bug.cgi?id=188321
<rdar://problem/42748485>

Reviewed by Alex Christensen.

When a StorageMap is destroyed on WebContent process side, StorageManager::destroyStorageMap()
gets called via IPC with a (IPC::Connection, StorageMapID) pair. Normally, it removes this
pair from m_storageAreasByConnection. However, if this is a *transient* StorageMap (sessionStorage),
then we keep the pair in the map and we merely remove the StorageMapID as a listener from the
StorageArea. We do this so that:

  1. The StorageArea stays alive so that it can be reused later on for the same security origin, on the same IPC::Connection (logic for this is in StorageManager::createTransientLocalStorageMap()
  2. Removing the StorageMapID as a listener from the StorageArea is important because StorageArea::m_eventListeners holds a strong reference to the IPC::Connection in a std::pair with the StorageMapID (HashSet<std::pair<RefPtr<IPC::Connection>, uint64_t>> m_eventListeners).

As mentioned in 1 above, in StorageManager::createTransientLocalStorageMap(), there is logic to
check if there is already an existing StorageArea for the given IPC::Connection that is transient
and is for the same security origin. In this case, we could avoid constructing a new StorageArea
and we would:

  1. Add a new entry to m_storageAreasByConnection with the key (connection, newStorageMapID), using same same StorageArea as value.
  2. Remove the previous (connection, oldStorageMapID) key from m_storageAreasByConnection.

Step 2 here is wrong and is updated in this patch. It is only safe to remove the previous
(connection, oldStorageMapID) if this oldStorageMapID no longer exists (i.e. destroyStorageMap()
was already called for it). This patch thus adds a check before removing (connection, oldStorageMapID)
from the HashMap to make sure that the oldStorageMapID is no longer a listener of the StorageArea).

This would cause leaks in the following case:

  1. We construct a StorageArea for (connection1, storageMapId1)
  2. We ask for a StorageArea for (connection1, storageMapId2) and decide to reuse the existing StorageArea since it has the same SecurityOrigin.
  3. As a result of step2, we would remove (connection1, storageMapId1) from m_storageAreasByConnection and add (connection1, storageMapId2), even though there is still a StorageMap with storageMapId1 on WebContent process side.
  4. Later on, we would try to call destroyStorageMap(connection1, storageMap1), it would fail to find it in m_storageAreasByConnection and return early. It would therefore fail to remove storageMapId1 as a listener of the StorageArea which still exists. -> This would leak the IPC::Connection that there would be a std::pair<RefPtr<IPC::Connection>, StorageMapID> with value (connection1, storageMap1) which would get leaked and it would ref the IPC::Connection.

This code should really be refactored to be less leak prone but I have kept the patch minimal for now
to facilitate cherry-picking.

Note that this would reproduce very easily on sina.com.cn, when clicking bold links at the top, which
opens new tabs to different pages in the same WebContent process. When closing all Safari windows, the
IPC::Connection for this WebContent process would stay alive.

  • UIProcess/WebStorage/StorageManager.cpp: (WebKit::StorageManager::StorageArea::hasListener const): (WebKit::StorageManager::createTransientLocalStorageMap):

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

2:40 PM Changeset in webkit [235692] by bshafiei@apple.com
  • 5 edits in branches/safari-606-branch/Source/JavaScriptCore

Cherry-pick r234649. rdar://problem/43009920

Use a more specific PtrTag for PlatformRegisters PC and LR.
https://bugs.webkit.org/show_bug.cgi?id=188366
<rdar://problem/42984123>

Reviewed by Keith Miller.

Also fixed a bug in linkRegister(), which was previously returning the PC instead
of LR. It now returns LR.

  • runtime/JSCPtrTag.h:
  • runtime/MachineContext.h: (JSC::MachineContext::instructionPointer): (JSC::MachineContext::linkRegister):
  • runtime/VMTraps.cpp: (JSC::SignalContext::SignalContext):
  • tools/SigillCrashAnalyzer.cpp: (JSC::SignalContext::SignalContext):

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

2:34 PM Changeset in webkit [235691] by bshafiei@apple.com
  • 6 edits in branches/safari-606-branch/Source/WebKit

Cherry-pick r234651. rdar://problem/43009912

[Wi-Fi Assertions] suspendWiFiAssertions() should be able to delay sending ProcessReadyToSuspend
https://bugs.webkit.org/show_bug.cgi?id=188373
<rdar://problem/42857398>

Reviewed by Tim Horton.

  • NetworkProcess/NetworkProcess.cpp: (WebKit::NetworkProcess::actualPrepareToSuspend):
  • NetworkProcess/NetworkProcess.h:
  • NetworkProcess/cocoa/NetworkProcessCocoa.mm: (WebKit::NetworkProcess::platformPrepareToSuspend): (WebKit::NetworkProcess::platformProcessDidTransitionToBackground):
  • NetworkProcess/curl/NetworkProcessCurl.cpp: (WebKit::NetworkProcess::platformPrepareToSuspend):
  • NetworkProcess/soup/NetworkProcessSoup.cpp: (WebKit::NetworkProcess::platformPrepareToSuspend):

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

2:25 PM Changeset in webkit [235690] by commit-queue@webkit.org
  • 17 edits in trunk

Add infrastructure to dump resource load statistics
https://bugs.webkit.org/show_bug.cgi?id=189213

Patch by Woodrow Wang <woodrow_wang@apple.com> on 2018-09-05
Source/WebCore:

Reviewed by Daniel Bates.

The dumping functionality is not currently used, but will be included in tests for
<https://bugs.webkit.org/show_bug.cgi?id=187773>.

  • loader/ResourceLoadStatistics.h:

Source/WebKit:

Reviewed by Daniel Bates.

The dumping functionality is not currently used, but will be included in tests for
<https://bugs.webkit.org/show_bug.cgi?id=187773>.

  • UIProcess/API/C/WKWebsiteDataStoreRef.cpp:

(WKWebsiteDataStoreDumpResourceLoadStatistics):

  • UIProcess/API/C/WKWebsiteDataStoreRef.h:
  • UIProcess/ResourceLoadStatisticsMemoryStore.cpp:

(WebKit::ResourceLoadStatisticsMemoryStore::dumpResourceLoadStatistics const):

  • UIProcess/ResourceLoadStatisticsMemoryStore.h:
  • UIProcess/WebResourceLoadStatisticsStore.cpp:

(WebKit::WebResourceLoadStatisticsStore::dumpResourceLoadStatistics):

  • UIProcess/WebResourceLoadStatisticsStore.h:

Tools:

Reviewed by Daniel Bates.

The dumping functionality is not currently used, but will be included in tests for
<https://bugs.webkit.org/show_bug.cgi?id=187773>.

  • WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
  • WebKitTestRunner/InjectedBundle/TestRunner.cpp:

(WTR::TestRunner::setDumpResourceLoadStatistics):

  • WebKitTestRunner/InjectedBundle/TestRunner.h:
  • WebKitTestRunner/TestController.cpp:

(WTR::resourceStatisticsStringResultCallback):
(WTR::TestController::dumpResourceLoadStatistics):

  • WebKitTestRunner/TestController.h:
  • WebKitTestRunner/TestInvocation.cpp:

(WTR::TestInvocation::dumpResults):
(WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle):
(WTR::TestInvocation::setDumpResourceLoadStatistics):

  • WebKitTestRunner/TestInvocation.h:
2:15 PM Changeset in webkit [235689] by wenson_hsieh@apple.com
  • 2 edits in trunk/Tools

[macOS] DragAndDropTests.ExposeMultipleURLsInDataTransfer fails on macOS versions prior to Mojave
https://bugs.webkit.org/show_bug.cgi?id=189315

Reviewed by Tim Horton.

Fix the test failure by explicitly enabling custom pasteboard data.

  • TestWebKitAPI/Tests/WebKitCocoa/DragAndDropTests.mm:

(TEST):

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

REGRESSION (r235006): Let Xcode have its way with the WebKit project

  • WebKit.xcodeproj/project.pbxproj: Let Xcode remove empty

settings.

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

REGRESSION (r110214): Remove deleted WebProcess/Fullscreen/mac folder from WebKit Xcode project

Found using tidy-Xcode-project-file --missing (see Bug
188754). Folder removed via Xcode.

  • WebKit.xcodeproj/project.pbxproj:

(WebProcess/Fullscreen/mac): Remove empty folder. Directory no
longer exists. WebFullScreenManagerMac.{h,mm} files were
removed in r110214.

1:51 PM Changeset in webkit [235686] by Ryan Haddad
  • 2 edits in trunk/Source/WebCore

Unreviewed, fix the build with recent SDKs.

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:

(WebCore::exernalDeviceDisplayNameForPlayer):

1:38 PM Changeset in webkit [235685] by keith_miller@apple.com
  • 7 edits in trunk/Source/JavaScriptCore

RELEASE_ASSERT at ../../Source/JavaScriptCore/heap/MarkedSpace.h:83
https://bugs.webkit.org/show_bug.cgi?id=188917

Reviewed by Mark Lam.

Our allocators should be able to handle allocating a zero-sized object.
Zero-sized objects will be allocated into the smallest size class.

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileNewTypedArrayWithSize):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileNewTypedArray):
(JSC::FTL::DFG::LowerDFGToB3::allocatorForSize):

  • heap/MarkedSpace.h:

(JSC::MarkedSpace::sizeClassToIndex):
(JSC::MarkedSpace::indexToSizeClass):

  • jit/AssemblyHelpers.cpp:

(JSC::AssemblyHelpers::emitAllocateVariableSized):

  • runtime/JSArrayBufferView.cpp:

(JSC::JSArrayBufferView::ConstructionContext::ConstructionContext):

1:21 PM Changeset in webkit [235684] by mark.lam@apple.com
  • 5 edits in trunk/Source/JavaScriptCore

Fix DeferredSourceDump to capture the caller bytecodeIndex instead of CodeOrigin.
https://bugs.webkit.org/show_bug.cgi?id=189300
<rdar://problem/39681779>

Reviewed by Saam Barati.

At the time a DeferredSourceDump is instantiated, it captures a CodeOrigin value
which points to a InlineCallFrame in the DFG::Plan's m_inlineCallFrames set. The
DeferredSourceDump is later used to dump source even if the compilation fails.
This is intentional so that we can use this tool to see what source fails to
compile as well.

The DFG::Plan may have been destructed by then, and since the compilation failed,
the InlineCallFrame is also destructed. This means DeferredSourceDump::dump()
may be end up accessing freed memory.

DeferredSourceDump doesn't really need a CodeOrigin. All it wants is the caller
bytecodeIndex for the call to an inlined function. Hence, we can fix this issue
by changing DeferredSourceDump to capture the caller bytecodeIndex instead.

In this patch, we also change DeferredSourceDump's m_codeBlock and m_rootCodeBlock
to be Strong references to ensure that the CodeBlocks are kept alive until they
can be dumped.

  • bytecode/DeferredCompilationCallback.cpp:

(JSC::DeferredCompilationCallback::dumpCompiledSourcesIfNeeded):

  • bytecode/DeferredSourceDump.cpp:

(JSC::DeferredSourceDump::DeferredSourceDump):
(JSC::DeferredSourceDump::dump):

  • bytecode/DeferredSourceDump.h:
  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::parseCodeBlock):

12:03 PM Changeset in webkit [235683] by commit-queue@webkit.org
  • 9 edits in trunk

Added runtime feature flag for web API statistics
https://bugs.webkit.org/show_bug.cgi?id=189211

Patch by Woodrow Wang <woodrow_wang@apple.com> on 2018-09-05
Reviewed by Daniel Bates.

Source/WebCore:

Added functionality to get and set the runtime flag.

  • page/RuntimeEnabledFeatures.h:

(WebCore::RuntimeEnabledFeatures::setWebAPIStatisticsEnabled):
(WebCore::RuntimeEnabledFeatures::webAPIStatisticsEnabled const):

Source/WebKit:

Added functionality to set the runtime flag with a JavaScript exposed function
for testing.

  • Shared/WebPreferences.yaml:
  • WebProcess/InjectedBundle/InjectedBundle.cpp:

(WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner):

Tools:

Added functionality to set the runtime flag with a JavaScript exposed function
for testing.

  • WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
  • WebKitTestRunner/InjectedBundle/TestRunner.cpp:

(WTR::TestRunner::setWebAPIStatisticsEnabled):

  • WebKitTestRunner/InjectedBundle/TestRunner.h:
11:54 AM Changeset in webkit [235682] by youenn@apple.com
  • 7 edits in trunk/Source/WebCore

Move replaceTrack logic to LibWebRTCPeerConnectionBackend
https://bugs.webkit.org/show_bug.cgi?id=189281

Reviewed by Eric Carlson.

Move replaceTrack handling code from RTCPeerConnection to LibWebRTCPeerConnectionBackend.
This makes the logic easier to understand.
Future refactoring will further try to put more handling in RTCRtpSenderBackend.
No change of behavior.

  • Modules/mediastream/RTCPeerConnection.cpp:
  • Modules/mediastream/RTCPeerConnection.h:
  • Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp:

(WebCore::tryUpdatingTrackSource):
(WebCore::LibWebRTCPeerConnectionBackend::replaceTrack):
(WebCore::LibWebRTCPeerConnectionBackend::enqueueReplaceTrackTask):

  • Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.h:
  • Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.cpp:

(WebCore::LibWebRTCRtpSenderBackend::replaceTrack):

11:52 AM Changeset in webkit [235681] by Alan Bujtas
  • 12 edits in trunk/Source/WebCore

[LFC] LayoutContext::displayBoxForLayoutBox() should return a Display::Box&
https://bugs.webkit.org/show_bug.cgi?id=189311

Reviewed by Antti Koivisto.

When the layout logic needs a Display::Box, we must have already created one for the associated Layout::Box.
(It does not necessarily mean that evey Layout::Box has a Display::Box. For example in case of inline formatting context,
we don't create a Display::Box for every inline box, but the formatting logic does not require such pairs.)

  • layout/FormattingContext.cpp:

(WebCore::Layout::FormattingContext::computeOutOfFlowHorizontalGeometry const):
(WebCore::Layout::FormattingContext::computeOutOfFlowVerticalGeometry const):
(WebCore::Layout::FormattingContext::computeBorderAndPadding const):
(WebCore::Layout::FormattingContext::mapBoxToAncestor):
(WebCore::Layout::FormattingContext::mapTopLeftToAncestor):
(WebCore::Layout::FormattingContext::mapCoordinateToAncestor):
(WebCore::Layout::FormattingContext::validateGeometryConstraintsAfterLayout const):

  • layout/FormattingContextGeometry.cpp:

(WebCore::Layout::contentHeightForFormattingContextRoot):
(WebCore::Layout::staticVerticalPositionForOutOfFlowPositioned):
(WebCore::Layout::staticHorizontalPositionForOutOfFlowPositioned):
(WebCore::Layout::FormattingContext::Geometry::shrinkToFitWidth):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedVerticalGeometry):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedHorizontalGeometry):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedVerticalGeometry):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedHorizontalGeometry):
(WebCore::Layout::FormattingContext::Geometry::complicatedCases):
(WebCore::Layout::FormattingContext::Geometry::floatingNonReplacedWidthAndMargin):
(WebCore::Layout::FormattingContext::Geometry::inlineReplacedHeightAndMargin):
(WebCore::Layout::FormattingContext::Geometry::inlineReplacedWidthAndMargin):
(WebCore::Layout::FormattingContext::Geometry::computedPadding):
(WebCore::Layout::FormattingContext::Geometry::computedNonCollapsedHorizontalMarginValue):
(WebCore::Layout::FormattingContext::Geometry::computedNonCollapsedVerticalMarginValue):

  • layout/LayoutContext.h:

(WebCore::Layout::LayoutContext::displayBoxForLayoutBox const):

  • layout/Verification.cpp:

(WebCore::Layout::outputMismatchingBlockBoxInformationIfNeeded):

  • layout/blockformatting/BlockFormattingContext.cpp:

(WebCore::Layout::BlockFormattingContext::computeStaticPosition const):
(WebCore::Layout::BlockFormattingContext::computeEstimatedMarginTop const):
(WebCore::Layout::BlockFormattingContext::computeEstimatedMarginTopForAncestors const):
(WebCore::Layout::BlockFormattingContext::computeFloatingPosition const):
(WebCore::Layout::BlockFormattingContext::computePositionToAvoidFloats const):
(WebCore::Layout::BlockFormattingContext::computeVerticalPositionForFloatClear const):
(WebCore::Layout::BlockFormattingContext::computeInFlowPositionedPosition const):
(WebCore::Layout::BlockFormattingContext::computeWidthAndMargin const):
(WebCore::Layout::BlockFormattingContext::computeHeightAndMargin const):

  • layout/blockformatting/BlockFormattingContextGeometry.cpp:

(WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedHeightAndMargin):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedWidthAndMargin):
(WebCore::Layout::BlockFormattingContext::Geometry::staticPosition):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowPositionedPosition):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowHeightAndMargin):

  • layout/blockformatting/BlockMarginCollapse.cpp:

(WebCore::Layout::isMarginTopCollapsedWithParent):
(WebCore::Layout::isMarginBottomCollapsedThrough):
(WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::isMarginBottomCollapsedWithParent):

  • layout/floats/FloatingContext.cpp:

(WebCore::Layout::FloatingContext::positionForFloat const):
(WebCore::Layout::FloatingContext::verticalPositionWithClearance const):

  • layout/floats/FloatingState.cpp:

(WebCore::Layout::FloatingState::append):

  • layout/inlineformatting/InlineFormattingContext.cpp:

(WebCore::Layout::InlineFormattingContext::layout const):

  • layout/layouttree/LayoutTreeBuilder.cpp:

(WebCore::Layout::outputLayoutTree):
(WebCore::Layout::showLayoutTree):

11:33 AM Changeset in webkit [235680] by david_fenton@apple.com
  • 2 edits in trunk/JSTests

[32-bit JSC tests] Exception: ReferenceError: Can't find variable: WebAssembly.
https://bugs.webkit.org/show_bug.cgi?id=189312.

Unreviewed test gardening.

  • stress/regress-189185.js:
11:13 AM Changeset in webkit [235679] by Truitt Savell
  • 2 edits in trunk/LayoutTests

Rebaseline test after changes in https://trac.webkit.org/changeset/235669/webkit deleted the expectation.
https://bugs.webkit.org/show_bug.cgi?id=188816

Unreviewed Test Gardening.

  • platform/mac-wk1/imported/w3c/web-platform-tests/xhr/send-network-error-async-events.sub-expected.txt:
10:58 AM Changeset in webkit [235678] by Ross Kirsling
  • 5 edits
    2 adds in trunk/Tools

Add WinCairo to bot watcher's dashboard.
https://bugs.webkit.org/show_bug.cgi?id=189273

Reviewed by Aakash Jain.

  • BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Images/Windows10.png: Added.
  • BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Images/Windows10@2x.png: Added.
  • BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/Dashboard.js:
  • BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Styles/Main.css:

(table.queue-grid tr.platform.windows-10 img.logo): Added.
(table.queue-grid tr.platform.windows-8 img.logo): Deleted.
(table.queue-grid tr.platform.windows-xp img.logo): Deleted.
Add Win10 section to dashboard. Remove unused WinXP and Win8 sections.

  • BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BubbleQueueServer.js:

(BubbleQueueServer):

  • BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/WebKitBuildbot.js:

(WebKitBuildbot):
Add WinCairo build, test, and EWS bots to Win10 section of dashboard.

10:54 AM Changeset in webkit [235677] by Alan Bujtas
  • 7 edits in trunk/Source/WebCore

[LFC] Drop Display:Box from FormattingContext::compute* functions
https://bugs.webkit.org/show_bug.cgi?id=189309

Reviewed by Antti Koivisto.

They are redundant and could get out of sync.

  • layout/FormattingContext.cpp:

(WebCore::Layout::FormattingContext::computeOutOfFlowHorizontalGeometry const):
(WebCore::Layout::FormattingContext::computeOutOfFlowVerticalGeometry const):
(WebCore::Layout::FormattingContext::computeBorderAndPadding const):
(WebCore::Layout::FormattingContext::placeInFlowPositionedChildren const):
(WebCore::Layout::FormattingContext::layoutOutOfFlowDescendants const):

  • layout/FormattingContext.h:
  • layout/blockformatting/BlockFormattingContext.cpp:

(WebCore::Layout::BlockFormattingContext::layout const):
(WebCore::Layout::BlockFormattingContext::layoutFormattingContextRoot const):
(WebCore::Layout::BlockFormattingContext::computeStaticPosition const):
(WebCore::Layout::BlockFormattingContext::computeEstimatedMarginTop const):
(WebCore::Layout::BlockFormattingContext::computeEstimatedMarginTopForAncestors const):
(WebCore::Layout::BlockFormattingContext::computeFloatingPosition const):
(WebCore::Layout::BlockFormattingContext::computePositionToAvoidFloats const):
(WebCore::Layout::BlockFormattingContext::computeVerticalPositionForFloatClear const):
(WebCore::Layout::BlockFormattingContext::computeInFlowPositionedPosition const):
(WebCore::Layout::BlockFormattingContext::computeWidthAndMargin const):
(WebCore::Layout::BlockFormattingContext::computeHeightAndMargin const):

  • layout/blockformatting/BlockFormattingContext.h:
  • layout/inlineformatting/InlineFormattingContext.cpp:

(WebCore::Layout::InlineFormattingContext::computeStaticPosition const):
(WebCore::Layout::InlineFormattingContext::computeInFlowPositionedPosition const):

  • layout/inlineformatting/InlineFormattingContext.h:
10:40 AM Changeset in webkit [235676] by bshafiei@apple.com
  • 7 edits in trunk/Source

Versioning.

10:26 AM Changeset in webkit [235675] by jer.noble@apple.com
  • 10 edits in trunk/Source

Add MediaCapabilities as an Experimental Feature
https://bugs.webkit.org/show_bug.cgi?id=189209

Reviewed by Eric Carlson.

Source/WebCore:

Move mediaCapabilitiesEnabled out of RuntimeEnabledFeatures. It already (also) exists in Settings.

  • Modules/mediacapabilities/MediaCapabilities.idl:
  • Modules/mediacapabilities/MediaCapabilitiesInfo.idl:
  • Modules/mediacapabilities/NavigatorMediaCapabilities.idl:
  • Modules/mediacapabilities/ScreenLuminance.idl:
  • page/RuntimeEnabledFeatures.h:

(WebCore::RuntimeEnabledFeatures::setMediaCapabilitiesEnabled): Deleted.
(WebCore::RuntimeEnabledFeatures::mediaCapabilitiesEnabled const): Deleted.

Source/WebKit:

  • Shared/WebPreferences.yaml:

Source/WebKitLegacy/mac:

RuntimeEnabledFeature -> Setting.

  • WebView/WebView.mm:

(-[WebView _preferencesChanged:]):

10:11 AM Changeset in webkit [235674] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

Cancelled fullscreen exit gesture leaves bad state for next exit request.
https://bugs.webkit.org/show_bug.cgi?id=189278

Patch by Jeremy Jones <jeremyj@apple.com> on 2018-09-05
Reviewed by Jer Noble.

  • UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm:

(-[WKFullScreenWindowController _dismissFullscreenViewController]):

10:03 AM Changeset in webkit [235673] by commit-queue@webkit.org
  • 10 edits in trunk/Source/WebCore

Add functionality to encode and decode a uint64_t in KeyedCoding
https://bugs.webkit.org/show_bug.cgi?id=189216

Patch by Woodrow Wang <woodrow_wang@apple.com> on 2018-09-05
Reviewed by Daniel Bates.

I've added this functionality in order to be able to encode and decode the raw uint64_t
representation of an OptionSet for my patch here <https://bugs.webkit.org/show_bug.cgi?id=187773>.

The changes in the KeyedEncoder/KeyedDecoder for Glib were made because they are derived classes
of KeyedCoding which contains pure virtual functions that need to be implemented.

  • platform/KeyedCoding.h:
  • platform/cf/KeyedDecoderCF.cpp:

(WebCore::KeyedDecoderCF::decodeUInt64):

  • platform/cf/KeyedDecoderCF.h:
  • platform/cf/KeyedEncoderCF.cpp:

(WebCore::KeyedEncoderCF::encodeUInt64):

  • platform/cf/KeyedEncoderCF.h:
  • platform/glib/KeyedDecoderGlib.cpp:

(WebCore::KeyedDecoderGlib::decodeUInt64):

  • platform/glib/KeyedDecoderGlib.h:
  • platform/glib/KeyedEncoderGlib.cpp:

(WebCore::KeyedEncoderGlib::encodeUInt64):

  • platform/glib/KeyedEncoderGlib.h:
9:49 AM Changeset in webkit [235672] by ddkilzer@apple.com
  • 2 edits in trunk/Tools

REGRESSION (r209470): EditingHistory folder is missing in EditingHistory Xcode project

Found using tidy-Xcode-project-file --missing (see Bug
188754). Fixes were made manually.

  • EditingHistory/EditingHistory.xcodeproj/project.pbxproj:

(EditingHistory): Change the path of the folder to
"EditingHistory", then remove the now-redundant name.
(EditingHistory/Resources/DumpEditingHistory.js): Remove
redundant file reference since another file reference exists at
the top of the project file list, and that file reference is the
one used in the "Copy Bundle Resources" build phase.
(EditingHistory/Resources/EditingHistoryUtil.js): Ditto.

9:20 AM Changeset in webkit [235671] by zandobersek@gmail.com
  • 2 edits in trunk/Source/WebCore

[GTK] ASSERT(!m_nicosia.imageBacking) when starting any YouTube video
https://bugs.webkit.org/show_bug.cgi?id=189215

Reviewed by Carlos Garcia Campos.

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

(WebCore::CoordinatedGraphicsLayer::purgeBackingStores):
Manually clear out any layer-side state of any image backing that is
associated with this layer, much like we do for backing stores.

8:56 AM Changeset in webkit [235670] by eric.carlson@apple.com
  • 34 edits in trunk/Source

[MediaStream] Simplify logic when changing RealtimeMediaSource settings
https://bugs.webkit.org/show_bug.cgi?id=189284
<rdar://problem/44117948>

Reviewed by Youenn Fablet.

Source/WebCore:

Remove all "apply<setting>" methods from RealtimeMediaSource and derived classes, and
add a bitfield to settingsDidChange so classes can do setting-specific setup and
configuration by overriding settingsDidChange.

No new tests, no functionality changed.

  • Modules/mediastream/CanvasCaptureMediaStreamTrack.cpp:

(WebCore::CanvasCaptureMediaStreamTrack::Source::canvasResized):

  • Modules/mediastream/CanvasCaptureMediaStreamTrack.h:
  • platform/mediastream/MediaConstraints.h:

(WebCore::NumericConstraint::fitnessDistance const):
(WebCore::NumericConstraint::valueForDiscreteCapabilityValues const):

  • platform/mediastream/RealtimeIncomingVideoSource.h:

(): Deleted.

  • platform/mediastream/RealtimeMediaSource.cpp:

(WebCore::RealtimeMediaSource::RealtimeMediaSource):
(WebCore::RealtimeMediaSource::settingsDidChange):
(WebCore::RealtimeMediaSource::fitnessDistance):
(WebCore::applyNumericConstraint):
(WebCore::RealtimeMediaSource::applyConstraint):
(WebCore::RealtimeMediaSource::applyConstraints):
(WebCore::RealtimeMediaSource::setSize):
(WebCore::RealtimeMediaSource::setWidth):
(WebCore::RealtimeMediaSource::setHeight):
(WebCore::RealtimeMediaSource::setFrameRate):
(WebCore::RealtimeMediaSource::setAspectRatio):
(WebCore::RealtimeMediaSource::setFacingMode):
(WebCore::RealtimeMediaSource::setVolume):
(WebCore::RealtimeMediaSource::setSampleRate):
(WebCore::RealtimeMediaSource::setSampleSize):
(WebCore::RealtimeMediaSource::setEchoCancellation):

  • platform/mediastream/RealtimeMediaSource.h:
  • platform/mediastream/RealtimeMediaSourceSettings.cpp:

(WebCore::RealtimeMediaSourceSettings::diff const):

  • platform/mediastream/RealtimeMediaSourceSettings.h:

(WebCore::RealtimeMediaSourceSettings::allFlags):

  • platform/mediastream/RealtimeVideoSource.cpp:

(WebCore::RealtimeVideoSource::applySize): Deleted.
(WebCore::RealtimeVideoSource::applyFrameRate): Deleted.

  • platform/mediastream/RealtimeVideoSource.h:
  • platform/mediastream/gstreamer/GStreamerAudioCaptureSource.cpp:

(WebCore::GStreamerAudioCaptureSource::settingsDidChange):
(WebCore::GStreamerAudioCaptureSource::applySampleRate): Deleted.

  • platform/mediastream/gstreamer/GStreamerAudioCaptureSource.h:
  • platform/mediastream/gstreamer/GStreamerVideoCaptureSource.cpp:

(WebCore::GStreamerVideoCaptureSource::settingsDidChange):
(WebCore::GStreamerVideoCaptureSource::applySize): Deleted.
(WebCore::GStreamerVideoCaptureSource::applyFrameRate): Deleted.

  • platform/mediastream/gstreamer/GStreamerVideoCaptureSource.h:
  • platform/mediastream/mac/AVVideoCaptureSource.h:
  • platform/mediastream/mac/AVVideoCaptureSource.mm:

(WebCore::AVVideoCaptureSource::settingsDidChange):
(WebCore::AVVideoCaptureSource::setPreset):
(WebCore::AVVideoCaptureSource::setFrameRate):
(WebCore::AVVideoCaptureSource::applySizeAndFrameRate):
(WebCore::AVVideoCaptureSource::processNewFrame):
(WebCore::AVVideoCaptureSource::applySize): Deleted.
(WebCore::AVVideoCaptureSource::applyFrameRate): Deleted.

  • platform/mediastream/mac/CoreAudioCaptureSource.cpp:

(WebCore::CoreAudioCaptureSource::settingsDidChange):
(WebCore::CoreAudioCaptureSource::applySampleRate): Deleted.
(WebCore::CoreAudioCaptureSource::applyEchoCancellation): Deleted.

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

(WebCore::DisplayCaptureSourceCocoa::settingsDidChange):
(WebCore::DisplayCaptureSourceCocoa::startProducingData):
(WebCore::DisplayCaptureSourceCocoa::applySize): Deleted.
(WebCore::DisplayCaptureSourceCocoa::applyFrameRate): Deleted.

  • platform/mediastream/mac/DisplayCaptureSourceCocoa.h:
  • platform/mediastream/mac/MockRealtimeAudioSourceMac.h:
  • platform/mediastream/mac/MockRealtimeAudioSourceMac.mm:

(WebCore::MockRealtimeAudioSourceMac::settingsDidChange):
(WebCore::MockRealtimeAudioSourceMac::applySampleRate): Deleted.

  • platform/mediastream/mac/MockRealtimeVideoSourceMac.h:
  • platform/mediastream/mac/MockRealtimeVideoSourceMac.mm:

(WebCore::MockRealtimeVideoSourceMac::settingsDidChange):
(WebCore::MockRealtimeVideoSourceMac::applySize): Deleted.

  • platform/mediastream/mac/RealtimeIncomingVideoSourceCocoa.mm:

(WebCore::RealtimeIncomingVideoSourceCocoa::processNewSample):

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

(WebCore::ScreenDisplayCaptureSourceMac::settingsDidChange):
(WebCore::ScreenDisplayCaptureSourceMac::applySize): Deleted.
(WebCore::ScreenDisplayCaptureSourceMac::applyFrameRate): Deleted.

  • platform/mock/MockRealtimeAudioSource.cpp:

(WebCore::MockRealtimeAudioSource::settingsDidChange):

  • platform/mock/MockRealtimeAudioSource.h:
  • platform/mock/MockRealtimeVideoSource.cpp:

(WebCore::MockRealtimeVideoSource::settingsDidChange):
(WebCore::MockRealtimeVideoSource::applySize): Deleted.

  • platform/mock/MockRealtimeVideoSource.h:

Source/WebKit:

  • WebProcess/cocoa/UserMediaCaptureManager.cpp:

(WebKit::UserMediaCaptureManager::Source::setSettings):

8:22 AM Changeset in webkit [235669] by Ms2ger@igalia.com
  • 5 edits
    4 adds in trunk/LayoutTests

GTK-focused gardening
https://bugs.webkit.org/show_bug.cgi?id=189305

Unreviewed test gardening.

  • TestExpectations: Remove passing test.
  • fast/mediastream/RTCPeerConnection-media-setup-callbacks-single-dialog.html: Speculative fix for r235484.
  • platform/gtk/http/tests/inspector/network/resource-request-headers-expected.txt: Added.
  • platform/gtk/http/tests/loading/oauth-expected.txt: Added.
  • platform/gtk/http/tests/websocket/connection-refusal-in-frame-resource-load-statistics-expected.txt: Added.
  • platform/gtk/imported/w3c/web-platform-tests/xhr/send-network-error-sync-events.sub-expected.txt: Updated for r235354.
  • platform/gtk/js/dom/dom-static-property-for-in-iteration-expected.txt: Updated for r235245.
7:42 AM Changeset in webkit [235668] by Alan Bujtas
  • 5 edits in trunk/Source/WebCore

[LFC][BFC] Move MarginCollapse class under BlockFormattingContext::Geometry
https://bugs.webkit.org/show_bug.cgi?id=189296

Reviewed by Antti Koivisto.

Margin collapsing is part of geometry after all.

  • layout/blockformatting/BlockFormattingContext.cpp:

(WebCore::Layout::BlockFormattingContext::computeEstimatedMarginTop const):

  • layout/blockformatting/BlockFormattingContext.h:
  • layout/blockformatting/BlockFormattingContextGeometry.cpp:

(WebCore::Layout::BlockFormattingContext::Geometry::estimatedMarginTop):

  • layout/blockformatting/BlockMarginCollapse.cpp:

(WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::collapsedMarginTopFromFirstChild):
(WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::nonCollapsedMarginTop):
(WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::computedNonCollapsedMarginTop):
(WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::computedNonCollapsedMarginBottom):
(WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::marginTop):
(WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::marginBottom):
(WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::isMarginBottomCollapsedWithParent):
(WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::isMarginTopCollapsedWithParentMarginBottom):
(WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::collapsedMarginBottomFromLastChild):
(WebCore::Layout::BlockFormattingContext::Geometry::MarginCollapse::nonCollapsedMarginBottom):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::collapsedMarginTopFromFirstChild): Deleted.
(WebCore::Layout::BlockFormattingContext::MarginCollapse::nonCollapsedMarginTop): Deleted.
(WebCore::Layout::BlockFormattingContext::MarginCollapse::computedNonCollapsedMarginTop): Deleted.
(WebCore::Layout::BlockFormattingContext::MarginCollapse::computedNonCollapsedMarginBottom): Deleted.
(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginTop): Deleted.
(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginBottom): Deleted.
(WebCore::Layout::BlockFormattingContext::MarginCollapse::isMarginBottomCollapsedWithParent): Deleted.
(WebCore::Layout::BlockFormattingContext::MarginCollapse::isMarginTopCollapsedWithParentMarginBottom): Deleted.
(WebCore::Layout::BlockFormattingContext::MarginCollapse::collapsedMarginBottomFromLastChild): Deleted.
(WebCore::Layout::BlockFormattingContext::MarginCollapse::nonCollapsedMarginBottom): Deleted.
(WebCore::Layout::BlockFormattingContext::MarginCollapse::estimatedMarginTop): Deleted.

7:36 AM Changeset in webkit [235667] by Alan Bujtas
  • 4 edits in trunk/Source/WebCore

[LFC] Make BlockFormattingContext::Geometry a subclass of FormattingContext::Geometry
https://bugs.webkit.org/show_bug.cgi?id=189294

Reviewed by Antti Koivisto.

This simplifies some of the call sites.

  • layout/blockformatting/BlockFormattingContext.cpp:

(WebCore::Layout::BlockFormattingContext::computeWidthAndMargin const):
(WebCore::Layout::BlockFormattingContext::computeHeightAndMargin const):

  • layout/blockformatting/BlockFormattingContext.h:
  • layout/blockformatting/BlockFormattingContextGeometry.cpp:

(WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedHeightAndMargin):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedWidthAndMargin):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowReplacedWidthAndMargin):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowPositionedPosition):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowHeightAndMargin):
(WebCore::Layout::BlockFormattingContext::Geometry::instrinsicWidthConstraints):

7:19 AM Changeset in webkit [235666] by ddkilzer@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

REGRESSION (r235419): DFGCFG.h is missing from JavaScriptCore Xcode project

Found using tidy-Xcode-project-file --missing (see Bug
188754). Fix was made manually.

(dfg/DFGCFG.h): Revert accidental change in r235419 by restoring
name and path values to file reference.

5:31 AM Changeset in webkit [235665] by ddkilzer@apple.com
  • 2 edits in trunk/Tools

REGRESSION (r160736): Bundle folder is missing in MiniBrowser Xcode project

Found using tidy-Xcode-project-file --missing (see Bug
188754). Folder fix was made manually.

  • MiniBrowser/MiniBrowser.xcodeproj/project.pbxproj:

(Bundle): Change the path of the folder to "mac/Bundle", and set
the name back to "Bundle".
(Bundle/Info.plist): Change file reference to be relative to its
group. Accomplished using Xcode after fixing the folder path.
(Bundle/MiniBrowserBundle_Prefix.pch): Ditto.

5:09 AM Changeset in webkit [235664] by ddkilzer@apple.com
  • 2 edits in trunk/Tools

REGRESSION (r184033): ContentExtensionTester folder is missing in ContentExtensionTester Xcode project

Found using tidy-Xcode-project-file --missing (see Bug
188754). Fixes were made manually.

  • ContentExtensionTester/ContentExtensionTester.xcodeproj/project.pbxproj:

(ContentExtensionTester): Change the path of the folder to map
to "." (which exists and is where main.m is located), and then
set the folder's name back to "ContentExtensionTester".
(main.m): Change file reference to be relative to its group now
that the group's path is fixed.

4:46 AM Changeset in webkit [235663] by ddkilzer@apple.com
  • 2 edits in trunk/Source/WebKitLegacy

REGRESSION (r235585): WebDownloadInternal.h is missing from WebKitLegacy Xcode project
<https://bugs.webkit.org/show_bug.cgi?id=189072>

Found using tidy-Xcode-project-file (see Bug 188754).

  • WebKitLegacy.xcodeproj/project.pbxproj: Remove references to

WebDownloadInternal.h since the header was removed in r235585.

2:44 AM WebKitGTK/2.22.x edited by berto@igalia.com
(diff)
1:14 AM Changeset in webkit [235662] by mark.lam@apple.com
  • 3 edits
    1 add in trunk

isAsyncGeneratorMethodParseMode() should check for SourceParseMode::AsyncGeneratorWrapperMethodMode.
https://bugs.webkit.org/show_bug.cgi?id=189292
<rdar://problem/38907433>

Reviewed by Saam Barati.

JSTests:

  • stress/regress-189292.js: Added.

Source/JavaScriptCore:

Previously, isAsyncGeneratorMethodParseMode() was checking for AsyncGeneratorWrapperFunctionMode
instead of AsyncGeneratorWrapperMethodMode. This patch fixes it
to check for AsyncGeneratorWrapperMethodMode (to match what is expected as indicated
in the name isAsyncGeneratorMethodParseMode).

  • parser/ParserModes.h:

(JSC::isAsyncGeneratorMethodParseMode):

12:52 AM Changeset in webkit [235661] by mark.lam@apple.com
  • 2 edits in trunk/Source/WTF

Remove unused bad_optional_access implementation.
https://bugs.webkit.org/show_bug.cgi?id=189297

Reviewed by David Kilzer.

This is a speculative fix for resolving build errors arising from conflicting
definitions of bad_optional_access when building WebKit with the latest clang.

  • wtf/Optional.h:

(std::bad_optional_access::bad_optional_access): Deleted.

Sep 4, 2018:

11:50 PM Changeset in webkit [235660] by commit-queue@webkit.org
  • 4 edits
    2 adds in trunk/LayoutTests

[EME] Add a layoutTest for ClearKey WebM video playback
https://bugs.webkit.org/show_bug.cgi?id=189200

Patch by Yacine Bandou <yacine.bandou_ext@softathome.com> on 2018-09-04
Reviewed by Xabier Rodriguez-Calvar.

Add a new layoutTest in order to test the playback of ClearKey encrypted WebM.

  • media/encrypted-media/clearKey/clearKey-webm-video-playback-mse-expected.txt: Added.
  • media/encrypted-media/clearKey/clearKey-webm-video-playback-mse.html: Added.
  • platform/gtk/TestExpectations:
  • platform/mac/TestExpectations:
  • platform/wpe/TestExpectations:
10:19 PM Changeset in webkit [235659] by commit-queue@webkit.org
  • 21 edits
    4 adds
    1 delete in trunk

Add basic support for ScrollIntoViewOptions
https://bugs.webkit.org/show_bug.cgi?id=189258

Patch by Frederic Wang <fwang@igalia.com> on 2018-09-04
Reviewed by Simon Fraser.

LayoutTests/imported/w3c:

Update test expectations for WPT scrollIntoView tests.

  • web-platform-tests/css/cssom-view/scrollIntoView-scrollMargin-expected.txt: This is not

supported yet but update the error message.

  • web-platform-tests/css/cssom-view/scrollIntoView-scrollPadding-expected.txt: Ditto.
  • web-platform-tests/css/cssom-view/scrollIntoView-shadow-expected.txt: Update expectation

now that this test passes.

  • web-platform-tests/css/cssom-view/scrollIntoView-smooth-expected.txt: Ditto.
  • web-platform-tests/css/cssom-view/scrollintoview-expected.txt: Ditto.

Source/WebCore:

This patch introduces a new ScrollIntoViewOptions parameter that can be passed into
Element.scrollIntoView instead of a boolean. A basic support for scroll alignments is
implemented, so that it is closer to the behavior of the CSSOMView spec while still remaining
compatible with the current boolean-parameter implementation. Full implementation that
takes into account orientation/direction will be handled in bug 161611. This patch is also a
preliminary step to support the ScrollBehavior (bug 188043) for ScrollIntoView.

Tests: web-platform-tests/css/cssom-view/scrollintoview-html

web-platform-tests/css/cssom-view/scrollIntoView-smooth.html

  • CMakeLists.txt: Add new IDL files.
  • DerivedSources.make: Ditto.
  • Sources.txt: Add new generated cpp JS bindings.
  • WebCore.xcodeproj/project.pbxproj: Add files to build to XCode.
  • dom/Element.cpp:

(WebCore::toScrollAlignment): Convert ScrollLogicalPosition to scroll alignment. Orientation
and direction are not implemented yet.
(WebCore::Element::scrollIntoView): Implement new scrollIntoView version accepting
ScrollIntoViewOptions parameter.

  • dom/Element.h: Declare new scrollIntoView.
  • dom/Element.idl: Make scrollIntoView accept a ScrollIntoViewOptions parameter.
  • page/ScrollIntoViewOptions.h: Added.
  • page/ScrollIntoViewOptions.idl: Added.
  • page/ScrollLogicalPosition.h: Added.
  • page/ScrollLogicalPosition.idl: Added.

Source/WebKit:

  • DOM/DOMElement.mm: Add ScrollIntoViewOptions

header so that this file can build despite the new scrollIntoView function.

Source/WebKitLegacy/mac:

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMElementGtk.cpp: Add ScrollIntoViewOptions

header so that this file can build despite the new scrollIntoView function.

Source/WebKitLegacy/win:

  • DOMCoreClasses.cpp: Add ScrollIntoViewOptions header so that this file

can build despite the new scrollIntoView function.

LayoutTests:

Update test expectations for WPT scrollIntoView tests.

  • platform/ios-wk2/imported/w3c/web-platform-tests/css/cssom-view/scrollIntoView-smooth-expected.txt: Removed.
10:02 PM Changeset in webkit [235658] by commit-queue@webkit.org
  • 5 edits in trunk

Check important flags when serializing shorthand with "initial" values
https://bugs.webkit.org/show_bug.cgi?id=188984

Patch by Oriol Brufau <Oriol Brufau> on 2018-09-04
Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

The test still has some failures due to https://bugs.webkit.org/show_bug.cgi?id=185953
but without this patch it would fail earlier.

  • web-platform-tests/css/cssom/shorthand-serialization-expected.txt:
  • web-platform-tests/css/cssom/shorthand-serialization.html:

Source/WebCore:

Test: imported/w3c/web-platform-tests/css/cssom/shorthand-serialization.html

The test still has some failures due to https://bugs.webkit.org/show_bug.cgi?id=185953
but without this patch it would fail earlier.

  • css/StyleProperties.cpp:

(WebCore::StyleProperties::get4Values const):

9:32 PM Changeset in webkit [235657] by Antti Koivisto
  • 11 edits in trunk/Source/WebCore

Remove pointless RenderSVGResourceMode::ApplyToDefault enum value
https://bugs.webkit.org/show_bug.cgi?id=189260

Reviewed by Sam Weinig.

Default does not need a bit, it is better represented with an empty OptionSet.

  • rendering/svg/RenderSVGResource.cpp:

(WebCore::requestPaintingResource):

  • rendering/svg/RenderSVGResource.h:
  • rendering/svg/RenderSVGResourceClipper.cpp:

(WebCore::RenderSVGResourceClipper::applyResource):

  • rendering/svg/RenderSVGResourceFilter.cpp:

(WebCore::RenderSVGResourceFilter::applyResource):
(WebCore::RenderSVGResourceFilter::postApplyResource):

  • rendering/svg/RenderSVGResourceGradient.cpp:

(WebCore::RenderSVGResourceGradient::applyResource):

  • rendering/svg/RenderSVGResourceMasker.cpp:

(WebCore::RenderSVGResourceMasker::applyResource):

  • rendering/svg/RenderSVGResourcePattern.cpp:

(WebCore::RenderSVGResourcePattern::applyResource):
(WebCore::RenderSVGResourcePattern::postApplyResource):

  • rendering/svg/RenderSVGResourceSolidColor.cpp:

(WebCore::RenderSVGResourceSolidColor::applyResource):
(WebCore::RenderSVGResourceSolidColor::postApplyResource):

  • rendering/svg/SVGInlineTextBox.cpp:

(WebCore::SVGInlineTextBox::SVGInlineTextBox):
(WebCore::SVGInlineTextBox::paintSelectionBackground):
(WebCore::SVGInlineTextBox::paint):
(WebCore::SVGInlineTextBox::acquirePaintingResource):
(WebCore::SVGInlineTextBox::paintDecorationWithStyle):

  • rendering/svg/SVGRenderingContext.cpp:

(WebCore::SVGRenderingContext::~SVGRenderingContext):
(WebCore::SVGRenderingContext::prepareToRenderSVGContent):

7:36 PM Changeset in webkit [235656] by Chris Dumez
  • 5 edits in trunk/Source/WebKit

Rename experimental feature for process swap on navigation
https://bugs.webkit.org/show_bug.cgi?id=189280

Reviewed by Antti Koivisto.

The "process swap on navigation" experimental feature on macOS Mojave does not work due to missing
browser changes, resulting in frequent load hangs. When enabling the experimental feature in WebKit
ToT or Safari Technology Preview for testing, it enables it as well for Mojave's system Safari which
is annoying.

This patch renames the experimental feature so that the feature stays disabled in Mojave's system
Safari even when enabled in WebKit ToT / STP.

  • Shared/WebPreferences.yaml:
  • UIProcess/API/C/WKPreferences.cpp:

(WKPreferencesSetProcessSwapOnNavigationEnabled):
(WKPreferencesGetProcessSwapOnNavigationEnabled):

  • UIProcess/WebPreferences.cpp:

(WebKit::WebPreferences::updateBoolValueForExperimentalFeatureKey):

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::createWebPage):

7:08 PM Changeset in webkit [235655] by msaboff@apple.com
  • 1 edit
    3 adds in trunk/LayoutTests

YARR: Add new RegExp back reference tests to specifically test back reference JIT code
https://bugs.webkit.org/show_bug.cgi?id=189291

Reviewed by Saam Barati.

New tests.

  • fast/regex/backreferences-expected.txt: Added.
  • fast/regex/backreferences.html: Added.
  • fast/regex/script-tests/backreferences.js: Added.
6:57 PM Changeset in webkit [235654] by don.olmstead@sony.com
  • 4 edits
    2 copies
    1 add
    2 deletes in trunk/Tools

Add generic entrypoint and run loop in TestWebKitAPI
https://bugs.webkit.org/show_bug.cgi?id=189287

Reviewed by Michael Catanzaro.

The implementations in jsconly are platform agnostic.

  • TestWebKitAPI/PlatformJSCOnly.cmake:

Use the glib implementation of Utilities when using that as a run loop
otherwise use the generic implementation.

  • TestWebKitAPI/PlatformUtilities.h:

Remove repeated entries from Utilities.h.

  • TestWebKitAPI/PlatformWPE.cmake:

Use the generic main.cpp.

  • TestWebKitAPI/generic/UtilitiesGeneric.cpp: Renamed from Tools/TestWebKitAPI/jsconly/PlatformUtilitiesJSCOnly.cpp.

(TestWebKitAPI::Util::run):
(TestWebKitAPI::Util::spinRunLoop):
Moved to a generic implementation and added spinRunLoop.

  • TestWebKitAPI/generic/main.cpp: Renamed from Tools/TestWebKitAPI/jsconly/main.cpp.

Share between JSCOnly and WPE

  • TestWebKitAPI/wpe/main.cpp: Removed.
6:52 PM Changeset in webkit [235653] by don.olmstead@sony.com
  • 5 edits in trunk/Tools

[CMake] Make TestWebKitAPI dependencies explicit
https://bugs.webkit.org/show_bug.cgi?id=189282

Reviewed by Fujii Hironori.

The config.h file includes files from JSC, WebCore and WebKit which
places a dependency on those headers even when just building TestWTF.
This makes the depedencies explicit for all CMake ports and shoud
remove any race conditions that can be encountered when building tests.

  • TestWebKitAPI/CMakeLists.txt:
  • TestWebKitAPI/PlatformGTK.cmake:
  • TestWebKitAPI/PlatformWPE.cmake:
  • TestWebKitAPI/PlatformWin.cmake:
6:22 PM Changeset in webkit [235652] by emilio
  • 5 edits in trunk/Source/WebCore

Remove PseudoElementUserAgentCustom.
https://bugs.webkit.org/show_bug.cgi?id=189089

Reviewed by Ryosuke Niwa.

Tests at https://github.com/web-platform-tests/wpt/pull/12743.

  • css/CSSSelector.cpp:

(WebCore::CSSSelector::pseudoId):
(WebCore::CSSSelector::parsePseudoElementType):

  • css/CSSSelector.h:

(WebCore::CSSSelector::isCustomPseudoElement const):

  • css/RuleSet.cpp:

(WebCore::RuleSet::addRule):

  • css/parser/CSSParserSelector.h:

(WebCore::CSSParserSelector::needsImplicitShadowCombinatorForMatching const):

5:50 PM Changeset in webkit [235651] by dino@apple.com
  • 6 edits in trunk/Source

Post review Weinig fix-ups
https://bugs.webkit.org/show_bug.cgi?id=189288

Reviewed by Sam Weinig.

Fix-ups from https://bugs.webkit.org/show_bug.cgi?id=189252

Source/WebCore:

  • platform/MIMETypeRegistry.cpp:

(WebCore::MIMETypeRegistry::getSystemPreviewMIMETypes):
(WebCore::initializeSystemPreviewMIMETypes): Deleted.

  • rendering/RenderThemeIOS.mm:

(WebCore::arKitBundle):
(WebCore::loadARKitPDFPage):
(WebCore::systemPreviewLogo):

Source/WebKit:

  • UIProcess/Cocoa/SystemPreviewControllerCocoa.mm:

(-[_WKPreviewControllerDataSource previewController:previewItemAtIndex:]):
(getUTIForMIMEType): Deleted.

  • UIProcess/ios/WKSystemPreviewView.mm:

(getUTIForSystemPreviewMIMEType):
(-[WKSystemPreviewView web_setContentProviderData:suggestedFilename:]):
(getUTIForMIMEType): Deleted.

5:22 PM Changeset in webkit [235650] by rniwa@webkit.org
  • 12 edits
    2 adds in trunk

slotchange event doesn't get fired when inserting, removing, or renaming slot elements
https://bugs.webkit.org/show_bug.cgi?id=189144
<rdar://problem/43871061>

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

  • web-platform-tests/shadow-dom/slotchange-customelements-expected.txt:
  • web-platform-tests/shadow-dom/slotchange-event-expected.txt:
  • web-platform-tests/shadow-dom/slotchange-expected.txt:

Source/WebCore:

This patch implements slotchange event when a slot element is inserted, removed, or renamed in the DOM tree.
Let us consider each scenario separately.

Insertion (https://dom.spec.whatwg.org/#concept-node-insert): In this case, we must fire slotchange event on
slot elements whose assigned nodes have changed in the tree order. When there is at most one slot element for
each name, this can be done by simply checking whether each slot has assigned nodes or not. When there are more
than one slot element, however, the newly inserted slot element may now become the first slot of a given name,
and gain assined nodes while the previously first element loses its assigned nodes. To see if the newly inserted
slot element is the first of its kind, we must travere the DOM tree to check the order of that and the previously
first slot element. To do this, we resolve the slot elements before start inserting nodes in
executeNodeInsertionWithScriptAssertion via SlotAssignment::resolveSlotsBeforeNodeInsertionOrRemoval. Note that
when the DOM tree has at most one slot element of its kind, resolveSlotsBeforeNodeInsertionOrRemoval is a no-op
and addSlotElementByName continues to operate in O(1). Becasue addSlotElementByName is called on each inserted
slot element in the tree order, we do the tree traversal upon finding the first slot element which has more than
one of its kind in the current tree. In this case, we resolve all other slot elements and enqueues slotchange
event as needed to avoid doing the tree traversal more than once.

Removal (https://dom.spec.whatwg.org/#concept-node-remove): In removal, we're concerned with removing the first
slot element of its kind. We must fire slotchange event on the remaining slot elements which became the first of
its kind after the removal as well as the ones which got removed from the tree if they had assigned nodes.
Furthermore, the DOM specification mandates that we first fire slotchange events in the tree from which a node
was removed and then in the removed subtree. Because we must only fire slotchange event on the first slot element
of its kind which has been removed, we must resolve the first slot elements of each kind before a node removal
in removeAllChildrenWithScriptAssertion and removeNodeWithScriptAssertion as we've done for insertion. Again,
in the case there was at most one slot element of each kind, resolveSlotsBeforeNodeInsertionOrRemoval is a no-op
and removeSlotElementByName would continue to operate in O(1). When there are multiple slot elements for a given
kind, we immediately enqueue slotchange event on the slot elements which newly became the first of its kind but
delay the enqueuing of slotchange event on the removed slot elements until removeSlotElementByName is called on
that element so that enqueuing of slotchange events on the slot elements still remaining in the in the tree would
happen before those which got removed as the DOM specification mandates.

Rename (https://dom.spec.whatwg.org/#shadow-tree-slots): In the case the slot element's name content attribute
is changed, the renamed element might have become the first of its kind or ceased to be the first of its kind.
There could be two other slot elements appearing later in the tree order which might have gained or lost assigned
nodes as a result. In this case, we invoke the algorithms for removing & inserting the slot with a key difference:
we enqueue slotchange event on the renamed slot immediately if it has assigned nodes.

To enqueue slotchange event in the tree order, this patch adds oldElement, which is a WeakPtr to a slot element,
to SlotAssignment::Slot. This WeakPtr is set to the slot element which used to have assigned nodes prior to the
node insertion, removal, or rename but no longer has after the mutation. This patch also adds a slot mutation
version number, m_slotMutationVersion, which is incremented whenever a node is about to be inserted or removed,
and slot resolution version, m_slotResolutionVersion, which is set to the current slot mutation version number
when the full slot resolution is triggered during slot mutations. They are used to avoid redundant tree traversals
in resolveSlotsAfterSlotMutation. This patch also makes m_needsToResolveSlotElements compiled in release builds
to avoid resolving slot elements when there is at most one slot element of each kind.

For insertion, oldElement is set to the slot which used to be the first of its kind before getting set to a slot
element being inserted in resolveSlotsAfterSlotMutation. We enqueue slotchange event on the newly inserted slot
element at that point (1). Since the slot element which used to be the first of its kind appears after the newly
inserted slot element by definition, we're guaranteed to see this oldElement later in the tree traversal upon
which we enqueue slotchange event. Note that if this slot element was the first of its kind, then we're simply
hitting (1), which is O(1) and does not invoke the tree traversal.

For removal, oldElement is set to the slot which used to be the first of its kind. Because this slot element is
getting removed, slotchange event must be enqueud after slotchange events have been enqueued on all slot elements
still remaining in the tree. To do this, we enqueue slotchange event immediately on the first slot element of
its kind during the tree traversal as we encounter it (2), and set oldElement to the previosuly-first-but-removed
slot element. slotchange event is enqueued on this slot element when removeSlotElementByName is later invoked via
HTMLSlotElement::removedFromAncestor which traverses each removed element in the tree order. Again, if this was
the last slot of its kind, we'd simply expedite (2) by enqueuing slotchange event during removeSlotElementByName,
which is O(1).

When the DOM invokes the concept to replace all children (https://dom.spec.whatwg.org/#concept-node-replace-all),
however, this algorithm isn't sufficient because the removal of each child happens one after another. We would
either need to resolve slots between each removal, or treat the removal of all children as a single operation.
While the DOM specification currently specifies the former behavior, this patch implements the latter behavior
to avoid useless work. See the DOM spec issue: https://github.com/w3c/webcomponents/issues/764

Test: fast/shadow-dom/slotchange-for-slot-mutation.html

  • dom/ContainerNode.cpp:

(WebCore::ContainerNode::removeAllChildrenWithScriptAssertion): Call resolveSlotsBeforeNodeInsertionOrRemoval
before start removing children.
(WebCore::ContainerNode::removeNodeWithScriptAssertion): Ditto.
(WebCore::executeNodeInsertionWithScriptAssertion): Ditto before inserting children.

  • dom/ShadowRoot.cpp:

(WebCore::ShadowRoot::~ShadowRoot): Set m_hasBegunDeletingDetachedChildren to true. This flag is used to supress
slotchange events during the shadow tree destruction.
(WebCore::ShadowRoot::renameSlotElement): Added.
(WebCore::ShadowRoot::removeSlotElementByName): Added oldParentOfRemovedTree as an argument.

  • dom/ShadowRoot.h:

(WebCore::ShadowRoot::shouldFireSlotchangeEvent): Added.

  • dom/SlotAssignment.cpp:

(WebCore::findSlotElement): Added.
(WebCore::nextSlotElementSkippingSubtree): Added.
(WebCore::SlotAssignment::hasAssignedNodes): Added. Returns true if the slot of a given name has assigned nodes.
(WebCore::SlotAssignment::renameSlotElement): Added.
(WebCore::SlotAssignment::addSlotElementByName): Call resolveSlotsAfterSlotMutation when slotchange event needs
to be dispatched for the current slot and there are more than one slot elements.
(WebCore::SlotAssignment::removeSlotElementByName): Ditto. When the slot's oldElement is set to the current slot
element, meaning that this slot element used to have assigned nodes, then enqueue slotchange event. It also has
a special case for oldParentOfRemovedTree is null when renaming a slot element. In this case, we want to enqueue
slot change event immediately on the renamed slot element and any affected elements as in a node insertion since
removeSlotElementByName would never be called on a slot element which newly become the first of its kind after
a slot rename.
(WebCore::SlotAssignment::resolveSlotsAfterSlotMutation): Added. This is the slot resolution algorithm invoked
when there are more than one slot elements for a given name. It has two modes dealing with insertion & removal.
The insertion mode is also used for renaming a slot element. The firs
(WebCore::SlotAssignment::resolveSlotsBeforeNodeInsertionOrRemoval): Added. Resolves all slot elements prior to
inserting or removing nodes. In many cases, this should be a no-op since m_needsToResolveSlotElements is set to
true only when there are more than one slot element of its kind.
(WebCore::SlotAssignment::willRemoveAllChildren): Ditto. Also sets m_willBeRemovingAllChildren to true.
(WebCore::SlotAssignment::didChangeSlot):
(WebCore::SlotAssignment::resolveAllSlotElements): Use seenFirstElement instead of element to indicate whether
we have seen a slot element of given name for consistency with resolveSlotsAfterSlotMutation.

  • dom/SlotAssignment.h:

(WebCore::SlotAssignment::Slot): Added oldElement and seenFirstElement.
(WebCore::SlotAssignment): Always compile m_needsToResolveSlotElements. Added m_willBeRemovingAllChildren,
m_slotMutationVersion, and m_slotResolutionVersion.
(WebCore::ShadowRoot::resolveSlotsBeforeNodeInsertionOrRemoval): Added. Calls the one in SlotAssignment.
(WebCore::ShadowRoot::willRemoveAllChildren): Ditto.

  • html/HTMLSlotElement.cpp:

(WebCore::HTMLSlotElement::removedFromAncestor):
(WebCore::HTMLSlotElement::attributeChanged): Calls ShadowRoot::renameSlotElement instead of
removeSlotElementByName and addSlotElementByName pair.

LayoutTests:

Added a W3C style testharness.js test for inserting, removing, and renaming slot elements.

It has 62 distinct test cases for closed/open shadow roots in connected and disconnected trees
for the total of 248 test cases.

This test presumes the resolution of https://github.com/w3c/webcomponents/issues/764 in our favor.

Chrome fails 48 test cases because it doesn't follow the tree order when dispatching slotchange event
on the previously first slot element, and Firefox fails 84 test cases because it fails to fire slotchange
in the tree order when a node is inserted.

  • fast/shadow-dom/slotchange-for-slot-mutation-expected.txt: Added.
  • fast/shadow-dom/slotchange-for-slot-mutation.html: Added.
5:04 PM Changeset in webkit [235649] by youenn@apple.com
  • 12 edits in trunk/Source/WebCore

Make LibWebRTCRtpSenderBackend own its libwebrtc RTP sender backend
https://bugs.webkit.org/show_bug.cgi?id=189270

Reviewed by Eric Carlson.

Previously, the libwebrtc senders were owned in LibWebRTCMediaEndpoint.
This patch makes them be owned by LibWebRTCRtpSenderBackend.
This simplifies the implementation of RTCRtpSender::getParameters.
This will help simplify the implementation of RTCRtpSender::replaceTrack.

removeTrack is also refactored so that LibWebRTCMediaEndpoint directly uses libwebrtc constructs and not WebCore libwebrtc-agnostic ones.

No change of behavior.

  • Modules/mediastream/PeerConnectionBackend.h:

(WebCore::PeerConnectionBackend::removeTrack):
(WebCore::PeerConnectionBackend::notifyRemovedTrack): Deleted.

  • Modules/mediastream/RTCPeerConnection.cpp:

(WebCore::RTCPeerConnection::removeTrack):

  • Modules/mediastream/RTCRtpSender.cpp:

(WebCore::RTCRtpSender::getParameters):

  • Modules/mediastream/RTCRtpSender.h:

(WebCore::RTCRtpSender::backend):

  • Modules/mediastream/RTCRtpSenderBackend.h:
  • Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:

(WebCore::LibWebRTCMediaEndpoint::addTrack):
(WebCore::LibWebRTCMediaEndpoint::removeTrack):
(WebCore::LibWebRTCMediaEndpoint::doCreateOffer):
(WebCore::LibWebRTCMediaEndpoint::stop):
(WebCore::LibWebRTCMediaEndpoint::shouldOfferAllowToReceiveAudio const): Deleted.
(WebCore::LibWebRTCMediaEndpoint::shouldOfferAllowToReceiveVideo const): Deleted.
(WebCore::LibWebRTCMediaEndpoint::getRTCRtpSenderParameters): Deleted.

  • Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h:
  • Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp:

(WebCore::backendFromRTPSender):
(WebCore::LibWebRTCPeerConnectionBackend::addTrack):
(WebCore::LibWebRTCPeerConnectionBackend::addTransceiver):
(WebCore::LibWebRTCPeerConnectionBackend::removeTrack):
(WebCore::LibWebRTCPeerConnectionBackend::shouldOfferAllowToReceive const):
(WebCore::LibWebRTCPeerConnectionBackend::notifyRemovedTrack): Deleted.
(WebCore::LibWebRTCPeerConnectionBackend::getParameters const): Deleted.

  • Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.h:
  • Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.cpp:

(WebCore::LibWebRTCRtpSenderBackend::getParameters const):

  • Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.h:
4:51 PM Changeset in webkit [235648] by msaboff@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed indentations change.

  • yarr/YarrJIT.cpp:

(JSC::Yarr::YarrGenerator::matchBackreference):

4:47 PM Changeset in webkit [235647] by wenson_hsieh@apple.com
  • 26 edits in trunk

Populate "text/uri-list" with multiple URLs when the pasteboard contains multiple URLs
https://bugs.webkit.org/show_bug.cgi?id=188890
<rdar://problem/43648605>

Reviewed by Tim Horton.

Source/WebCore:

Adds support for exposing a newline separated list of URLs via DataTransfer's "text/uri-list" type when pasting
or dropping multiple items on the pasteboard that can be represented as URLs. Currently on iOS, only the URL of
the first item (if present) is exposed, and on macOS, only the first out of all the URLs in the pasteboard is
exposed.

To fix this, we introduce Pasteboard::readAllStrings, which reads a list of pasteboard strings collected from
all available items on the platform pasteboard. Currently, this is only used to provide a list of URL strings
when fetching data for the "text/uri-list" type when calling DataTransfer.getData() and
DataTransferItem.getAsString().

Tests: DragAndDropTests.ExposeMultipleURLsInDataTransfer

UIPasteboardTests.DataTransferURIListContainsMultipleURLs
PasteMixedContent.PasteOneOrMoreURLs

  • dom/DataTransfer.cpp:

(WebCore::readURLsFromPasteboardAsString):

Add a helper method that reads all URL strings from the pasteboard (for the MIME type "text/uri-list", which
corresponds to NSURLPboardType and "public.url" on macOS and iOS, respectively) and returns a single string
containing all non-empty URLs joined by newline characters. Also takes a filtering block which may be used to
reject URLs from being included in "text/uri-list" output.

(WebCore::DataTransfer::getDataForItem const):
(WebCore::DataTransfer::readStringFromPasteboard const):

Insteading of reading a single string from the pasteboard for "text/uri-list", call the above helper function to
read all URL strings in the pasteboard. If there are files present in the pasteboard, we also filter out URLs
whose schemes are not in the set of schemes that are safe to expose to the page (i.e. http(s), blob, and data).

  • platform/Pasteboard.cpp:

(WebCore::Pasteboard::readAllStrings):

Add a default non-Cocoa implementation of readAllStrings() that returns a vector, which may contain the result
of readString().

  • platform/Pasteboard.h:
  • platform/PasteboardStrategy.h:
  • platform/PlatformPasteboard.h:

Add plumbing to grab a list of strings from the pasteboard for a given type.

  • platform/cocoa/PasteboardCocoa.mm:

(WebCore::Pasteboard::readAllStrings):
(WebCore::Pasteboard::readString):

Implement these two methods in terms of readPlatformValuesAsStrings. readAllStrings returns the full list of
results, while readString only returns the first result.

  • platform/ios/PasteboardIOS.mm:

(WebCore::Pasteboard::readPlatformValuesAsStrings):
(WebCore::Pasteboard::readPlatformValueAsString): Deleted.

Refactor this Cocoa helper function to return a list of pasteboard string values for the given type, rather than
a single string.

  • platform/ios/PlatformPasteboardIOS.mm:

(WebCore::PlatformPasteboard::allStringsForType const):

Grab a string for each item (represented by an NSItemProvider) in the pasteboard that has data for the given
type identifier.

(WebCore::PlatformPasteboard::readString const):

Return the absolute string of the NSURL, instead of WebCore::URL::string(). This is needed to handle the case
where the NSURL is constructed from absolute and relative parts using a Plist. While -absoluteString gets us the
full URL string, URL::string() only returns the relative portion.

  • platform/mac/PasteboardMac.mm:

(WebCore::Pasteboard::readPlatformValuesAsStrings):
(WebCore::Pasteboard::readPlatformValueAsString): Deleted.

Also refactor this to retrieve a list of pasteboard strings, rather than a single result.

  • platform/mac/PlatformPasteboardMac.mm:

(WebCore::typeIdentifierForPasteboardType):
(WebCore::PlatformPasteboard::allStringsForType const):

Add an implementation for allStringsForType on macOS. Unlike iOS, it's much trickier to get this right since
we need to maintain compatibility with legacy "NS*Pboard" types, and NSPasteboardItem can only provide data
for NSPasteboardTypes (i.e. UTIs), so there's no way to just iterate through each pasteboard item and ask it
for data that matches the given type, if the types are not UTIs. However, in the case where we have multiple
items, the client must have used NSPasteboardWriting-conformant objects and/or NSPasteboardItem itself to write
data to the pasteboard. Since NSPasteboardWriting-conformant objects register modern pasteboard types when
writing to the pasteboard, we can simply iterate over these pasteboard items and ask for property lists using
type identifiers instead of having to worry about legacy pasteboard types. Furthermore, in the case where there
is only a single item in the pasteboard and we do need to handle legacy pasteboard types, using `-[NSPasteboard
stringForType:]` in the same way we do currently should yield the correct result.

As such, in the case where there is a single pasteboard item, we use -[NSPasteboard stringForType:] with the
original legacy type, and in the case where there are multiple items on the pasteboard, we iterate over each of
the pasteboard items and call -[NSPasteboardItem propertyListForType:] with the modern pasteboard type
corresponding to the given legacy pasteboard type.

The different corner cases in this logic are tested by the new API test, PasteMixedContent.PasteOneOrMoreURLs,
which exercises several different ways of writing one or more URLs to the pasteboard on macOS, which each result
in different legacy and modern pasteboard types being written to the pasteboard; our implementation of
PlatformPasteboard::allStringsForType on macOS handles all cases correctly.

Source/WebKit:

Add some plumbing through pasteboard classes to support Pasteboard::readAllStrings. See WebCore ChangeLog for
more detail.

  • UIProcess/Cocoa/WebPasteboardProxyCocoa.mm:

(WebKit::WebPasteboardProxy::getPasteboardStringsForType):

  • UIProcess/WebPasteboardProxy.h:
  • UIProcess/WebPasteboardProxy.messages.in:
  • WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:

(WebKit::WebPlatformStrategies::allStringsForType):

  • WebProcess/WebCoreSupport/WebPlatformStrategies.h:

Source/WebKitLegacy/mac:

Add some plumbing through pasteboard classes to support Pasteboard::readAllStrings. See WebCore ChangeLog for
more detail.

  • WebCoreSupport/WebPlatformStrategies.h:
  • WebCoreSupport/WebPlatformStrategies.mm:

(WebPlatformStrategies::allStringsForType):

Tools:

  • DumpRenderTree/mac/DumpRenderTreePasteboard.mm:

(-[LocalPasteboard pasteboardItems]):

Implement this method to avoid crashing when running layout tests that access the pasteboard.

  • TestWebKitAPI/Tests/WebKitCocoa/DragAndDropTests.mm:

Add a test to verify that on macOS and iOS, multiple URLs dropped onto the page are accessible via
"text/uri-list".

  • TestWebKitAPI/Tests/WebKitCocoa/PasteMixedContent.mm:

Add a test that exercises 5 different ways to write one or more URLs to the pasteboard on macOS; in all cases,
the URLs written to the pasteboard should be exposed to the page via "text/uri-list". In all of these different
cases, the results of using -[NSPasteboardItem stringForType:], -[NSURL URLFromPasteboard:] and
-[NSPasteboard stringForType:] will yield different results, so the purpose of this API test is to ensure that
our logic for grabbing a list of URLs from the pasteboard on macOS is robust enough to handle all of these
different behaviors.

  • TestWebKitAPI/Tests/ios/UIPasteboardTests.mm:

Add a test to verify that on iOS, using -[UIPasteboard setURLs:] to write to multiple URLs to the pasteboard
and then pasting results in "text/uri-list" exposing a list of all the URLs written to the pasteboard.

  • WebKitTestRunner/mac/WebKitTestRunnerPasteboard.mm:

(-[LocalPasteboard pasteboardItems]):

Implement this method to avoid crashing when running layout tests that access the pasteboard.

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

REGRESSION(r235408): GTK bots exiting early
https://bugs.webkit.org/show_bug.cgi?id=189063

Reviewed by Michael Catanzaro.

WebKitTestRunner was running the world leak checks even when run without --world-leaks,
causing GTK bot timeouts. So guard updateLiveDocumentsAfterTest(), checkForWorldLeaks()
and findAndDumpWorldLeaks() with m_checkForWorldLeaks checks, and in
TestController::handleControlCommand() print a message if the control script sends the
"#CHECK FOR WORLD LEAKS" command if WTR was not run with --world-leaks.

I tested that running with --world-leaks still works.

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::resetStateToConsistentValues):
(WTR::TestController::updateLiveDocumentsAfterTest):
(WTR::TestController::checkForWorldLeaks):
(WTR::TestController::findAndDumpWorldLeaks):
(WTR::TestController::handleControlCommand):
(WTR::TestController::run):

4:30 PM WebKitGTK/2.22.x edited by Michael Catanzaro
(diff)
4:13 PM Changeset in webkit [235645] by msaboff@apple.com
  • 1 edit in trunk/Source/JavaScriptCore/ChangeLog

JSC Build error when changing CPU type: offlineasm: No magic values found. Skipping assembly file generation
https://bugs.webkit.org/show_bug.cgi?id=189274

Reviewed by Saam Barati.

Put the derived file LLIntDesiredOffsets.h in an architecture specific subdirectory to make them unique.

Some I got this change mixed up with the change for r235636. The changes to JavaScriptCore.xcodeproj/project.pbxproj
where landed there.

3:51 PM Changeset in webkit [235644] by Simon Fraser
  • 12 edits
    2 adds in trunk

CSS reference filter that references a tiled feTurbulence is blank
https://bugs.webkit.org/show_bug.cgi?id=188950

Reviewed by Dean Jackson.
Source/WebCore:

We need to run the code that was in RenderSVGResourceFilterPrimitive::determineFilterPrimitiveSubregion()
for CSS reference filters, to set up the various rects in the filter effects.

Do this by moving the code to FilterEffect::determineFilterPrimitiveSubregion(), which makes sense
because it recurses on the FilterEffect input chain. To make it CSS/SVGFilter agnostic, we move filterRegionInUserSpace()
to the Filter base class (for CSSFilter, it just returns m_filterRegion).

Test: css3/filters/reference-filter-set-filter-regions.html

  • platform/graphics/filters/Filter.h:
  • platform/graphics/filters/FilterEffect.cpp:

(WebCore::FilterEffect::determineFilterPrimitiveSubregion):

  • platform/graphics/filters/FilterEffect.h:
  • rendering/CSSFilter.cpp:

(WebCore::CSSFilter::determineFilterPrimitiveSubregion):

  • rendering/CSSFilter.h:
  • rendering/RenderLayerFilters.cpp:

(WebCore::RenderLayerFilters::beginFilterEffect):

  • rendering/svg/RenderSVGResourceFilter.cpp:

(WebCore::RenderSVGResourceFilter::applyResource):

  • rendering/svg/RenderSVGResourceFilterPrimitive.cpp:

(WebCore::RenderSVGResourceFilterPrimitive::determineFilterPrimitiveSubregion): Deleted.

  • rendering/svg/RenderSVGResourceFilterPrimitive.h:
  • svg/graphics/filters/SVGFilter.h:

LayoutTests:

  • css3/filters/reference-filter-set-filter-regions-expected.html: Added.
  • css3/filters/reference-filter-set-filter-regions.html: Added.
3:16 PM Changeset in webkit [235643] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[LFC] Rename LayoutPair to BoxPair
https://bugs.webkit.org/show_bug.cgi?id=189276

Reviewed by Antti Koivisto.

  • layout/FormattingContext.h:
  • layout/blockformatting/BlockFormattingContext.cpp:

(WebCore::Layout::BlockFormattingContext::layout const):

2:41 PM Changeset in webkit [235642] by mmaxfield@apple.com
  • 2 edits in trunk/Tools

Unreviewed follow-up to r235635
https://bugs.webkit.org/show_bug.cgi?id=188940

Use "let" variables instead of "var" variables.

  • WebGPUShadingLanguageRI/StandardLibrary.js:

(let.standardLibrary):

2:41 PM Changeset in webkit [235641] by youenn@apple.com
  • 4 edits in trunk/Source

Disable WebRTC unified plan runtime flag by default
https://bugs.webkit.org/show_bug.cgi?id=189264

Reviewed by Jer Noble.

Source/WebCore:

Covered by existing tests.

  • testing/Internals.cpp:

(WebCore::Internals::resetToConsistentState):
Activate unified plan for testing.

Source/WebKit:

  • Shared/WebPreferences.yaml:

Disable unified plan flag by default.

2:25 PM Changeset in webkit [235640] by bshafiei@apple.com
  • 2 edits in tags/Safari-607.1.4.1/Source/JavaScriptCore

Cherry-pick r235465. rdar://problem/43846941

Unreviewed, rolling out r235432 and r235436.
https://bugs.webkit.org/show_bug.cgi?id=189086

Is a Swift source breaking change. (Requested by keith_miller
on #webkit).

Reverted changesets:

"Add nullablity attributes to JSValue"
https://bugs.webkit.org/show_bug.cgi?id=189047
https://trac.webkit.org/changeset/235432

"Add nullablity attributes to JSValue"
https://bugs.webkit.org/show_bug.cgi?id=189047
https://trac.webkit.org/changeset/235436

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

2:25 PM Changeset in webkit [235639] by Alan Bujtas
  • 5 edits in trunk/Source/WebCore

[LFC][BFC] Merge computeInFlowWidth(Height)AndMargin and computeFloatingWidth(Height)AndMargin.
https://bugs.webkit.org/show_bug.cgi?id=189271

Reviewed by Antti Koivisto.

This is in preparation for adding min/max-widht(height).

  • layout/FormattingContext.cpp:

(WebCore::Layout::FormattingContext::computeFloatingHeightAndMargin const): Deleted.
(WebCore::Layout::FormattingContext::computeFloatingWidthAndMargin const): Deleted.

  • layout/FormattingContext.h:
  • layout/blockformatting/BlockFormattingContext.cpp:

(WebCore::Layout::BlockFormattingContext::computeWidthAndMargin const):
(WebCore::Layout::BlockFormattingContext::computeHeightAndMargin const):
(WebCore::Layout::BlockFormattingContext::computeInFlowHeightAndMargin const): Deleted.
(WebCore::Layout::BlockFormattingContext::computeInFlowWidthAndMargin const): Deleted.

  • layout/blockformatting/BlockFormattingContext.h:
2:23 PM Changeset in webkit [235638] by bshafiei@apple.com
  • 7 edits in tags/Safari-607.1.4.1/Source

Versioning.

2:20 PM Changeset in webkit [235637] by bshafiei@apple.com
  • 1 copy in tags/Safari-607.1.4.1

Tag Safari-607.1.4.1.

2:18 PM Changeset in webkit [235636] by msaboff@apple.com
  • 13 edits in trunk/Source

YARR: JIT RegExps with back references
https://bugs.webkit.org/show_bug.cgi?id=180874

Reviewed by Filip Pizlo.

Source/JavaScriptCore:

Implemented JIT'ed back references for all counted types. The only type of back references
not handled in the JIT are 16bit matches that ignore case. Such support would require the
canonicalization that is currently handled in the Yarr interpreter via a C funtion call.
The back reference processing for surrogate pairs is implemented by individually comparing
each surrogate ala memcmp.

Added a generated canonicalization table for the LChar (8bit) domain to process case
ignored back references.

Added macro assembler load16(ExtendedAddress) for indexed access to the canonicalization table.

Added a new JIT failure reason for forward references as the check to JIT expressions with
forward references we're handled synonimously those containing back references.

This change is only enabled for 64 bit platforms.

  • assembler/MacroAssemblerARM64.h:

(JSC::MacroAssemblerARM64::load16):

  • assembler/MacroAssemblerX86_64.h:

(JSC::MacroAssemblerX86_64::load16):

  • runtime/RegExp.cpp:

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

  • yarr/YarrCanonicalize.h:
  • yarr/YarrCanonicalizeUCS2.cpp:
  • yarr/YarrCanonicalizeUCS2.js:

(set characters.hex.set string_appeared_here):

  • yarr/YarrJIT.cpp:

(JSC::Yarr::YarrGenerator::checkNotEnoughInput):
(JSC::Yarr::YarrGenerator::readCharacterDontDecodeSurrogates):
(JSC::Yarr::YarrGenerator::matchBackreference):
(JSC::Yarr::YarrGenerator::generateBackReference):
(JSC::Yarr::YarrGenerator::backtrackBackReference):
(JSC::Yarr::YarrGenerator::generateTerm):
(JSC::Yarr::YarrGenerator::backtrackTerm):
(JSC::Yarr::YarrGenerator::compile):
(JSC::Yarr::dumpCompileFailure):

  • yarr/YarrJIT.h:
  • yarr/YarrPattern.h:

(JSC::Yarr::BackTrackInfoBackReference::beginIndex):
(JSC::Yarr::BackTrackInfoBackReference::matchAmountIndex):

Source/WTF:

Added ENABLE_YARR_JIT_BACKREFERENCES to enable RegExp JIT'ing of back references
for 64 bit platforms only.

  • wtf/Platform.h:
2:18 PM Changeset in webkit [235635] by mmaxfield@apple.com
  • 8 edits
    4 adds in trunk/Tools

[WHLSL] Implement texture types
https://bugs.webkit.org/show_bug.cgi?id=188940

Rubber-stamped by Dean Jackson.

Implement the texture types and operations. This includes Sample(), Load(), Store(), Gather(), and GetDimensions().
These functions were implemented according to section 15 of the Vulkan 1.1.83 spec, which lists each operation
and how to compute its results.

  • WebGPUShadingLanguageRI/All.js:
  • WebGPUShadingLanguageRI/Casts.js: Moved from Intrinsics. The texture operations need to cast too, so these are

moved into a common location.
(cast):
(bitwiseCast):
(castToUchar):
(castToUshort):
(castToUint):
(castToChar):
(castToShort):
(castToInt):
(castToHalf):
(castToFloat):

  • WebGPUShadingLanguageRI/Intrinsics.js: Use Casts.js and call into TextureOperations.js.

(Intrinsics.):
(Intrinsics.checkFalse):
(Intrinsics.boxVector):
(Intrinsics.unboxVector):
(Intrinsics):
(Intrinsics.cast): Deleted.
(Intrinsics.bitwiseCast): Deleted.
(Intrinsics.castToHalf): Deleted.

  • WebGPUShadingLanguageRI/SPIRV.html:
  • WebGPUShadingLanguageRI/Sampler.js: Added. Represent the Sampler type.

(Sampler):
(Sampler.prototype.get rAddressMode):
(Sampler.prototype.get sAddressMode):
(Sampler.prototype.get tAddressMode):
(Sampler.prototype.get minFilter):
(Sampler.prototype.get magFilter):
(Sampler.prototype.get mipmapFilter):
(Sampler.prototype.get lodMinClamp):
(Sampler.prototype.get lodMaxClamp):
(Sampler.prototype.get maxAnisotropy):
(Sampler.prototype.get compareFunction):
(Sampler.prototype.get borderColor):
(Sampler.prototype.calculateBorderColor.computeValues):
(Sampler.prototype.calculateBorderColor):

  • WebGPUShadingLanguageRI/StandardLibrary.js: Update the standard library. Some of the functions were

either missing or wrong.
(let.standardLibrary):

  • WebGPUShadingLanguageRI/Test.html:
  • WebGPUShadingLanguageRI/Test.js: Test many, many combinations of the texture operations.

(makeSampler):
(make1DTexture):
(make1DTextureArray):
(make2DTexture):
(make2DTextureArray):
(make3DTexture):
(makeTextureCube):
(makeRW1DTexture):
(makeRW1DTextureArray):
(makeRW2DTexture):
(makeRW2DTextureArray):
(makeRW3DTexture):
(make2DDepthTexture):
(make2DDepthTextureArray):
(makeDepthTextureCube):
(makeRW2DDepthTexture):
(makeRW2DDepthTextureArray):
(checkFloat4):

  • WebGPUShadingLanguageRI/Texture.js: Added. Represents each of the texture types.

(Texture):
(Texture.prototype.get dimension):
(Texture.prototype.get width):
(Texture.prototype.get height):
(Texture.prototype.get depth):
(Texture.prototype.get levelCount):
(Texture.prototype.get layerCount):
(Texture.prototype.get innerType):
(Texture.prototype.get data):
(Texture.prototype.elementChecked):
(Texture.prototype.setElementChecked):
(Texture1D):
(Texture1D.prototype.widthAtLevel):
(Texture1D.prototype.heightAtLevel):
(Texture1D.prototype.depthAtLevel):
(Texture1D.prototype.element):
(Texture1D.prototype.setElement):
(Texture1DArray):
(Texture1DArray.prototype.widthAtLevel):
(Texture1DArray.prototype.heightAtLevel):
(Texture1DArray.prototype.depthAtLevel):
(Texture1DArray.prototype.element):
(Texture1DArray.prototype.setElement):
(Texture2D):
(Texture2D.prototype.widthAtLevel):
(Texture2D.prototype.heightAtLevel):
(Texture2D.prototype.depthAtLevel):
(Texture2D.prototype.element):
(Texture2D.prototype.setElement):
(Texture2DArray):
(Texture2DArray.prototype.widthAtLevel):
(Texture2DArray.prototype.heightAtLevel):
(Texture2DArray.prototype.depthAtLevel):
(Texture2DArray.prototype.element):
(Texture2DArray.prototype.setElement):
(Texture3D):
(Texture3D.prototype.widthAtLevel):
(Texture3D.prototype.heightAtLevel):
(Texture3D.prototype.depthAtLevel):
(Texture3D.prototype.element):
(Texture3D.prototype.setElement):
(TextureCube):
(TextureCube.prototype.widthAtLevel):
(TextureCube.prototype.heightAtLevel):
(TextureCube.prototype.depthAtLevel):
(TextureCube.prototype.element):
(TextureCube.prototype.setElement):
(Texture1DRW):
(Texture1DRW.prototype.widthAtLevel):
(Texture1DRW.prototype.heightAtLevel):
(Texture1DRW.prototype.depthAtLevel):
(Texture1DRW.prototype.element):
(Texture1DRW.prototype.setElement):
(Texture1DArrayRW):
(Texture1DArrayRW.prototype.widthAtLevel):
(Texture1DArrayRW.prototype.heightAtLevel):
(Texture1DArrayRW.prototype.depthAtLevel):
(Texture1DArrayRW.prototype.element):
(Texture1DArrayRW.prototype.setElement):
(Texture2DRW):
(Texture2DRW.prototype.widthAtLevel):
(Texture2DRW.prototype.heightAtLevel):
(Texture2DRW.prototype.depthAtLevel):
(Texture2DRW.prototype.element):
(Texture2DRW.prototype.setElement):
(Texture2DArrayRW):
(Texture2DArrayRW.prototype.widthAtLevel):
(Texture2DArrayRW.prototype.heightAtLevel):
(Texture2DArrayRW.prototype.depthAtLevel):
(Texture2DArrayRW.prototype.element):
(Texture2DArrayRW.prototype.setElement):
(let.TextureDepth2DArrayRW.Texture2DArrayRW.Texture3DRW):
(let.TextureDepth2DArrayRW.Texture2DArrayRW.Texture3DRW.prototype.widthAtLevel):
(let.TextureDepth2DArrayRW.Texture2DArrayRW.Texture3DRW.prototype.heightAtLevel):
(let.TextureDepth2DArrayRW.Texture2DArrayRW.Texture3DRW.prototype.depthAtLevel):
(let.TextureDepth2DArrayRW.Texture2DArrayRW.Texture3DRW.prototype.element):
(let.TextureDepth2DArrayRW.Texture2DArrayRW.Texture3DRW.prototype.setElement):

  • WebGPUShadingLanguageRI/TextureOperations.js: Added. This implements the texture operations

as described in section 15 of the Vulkan 1.1.83 spec.
(depthCompareOperation):
(conversionToRGBA):
(projectionOperation):
(cubeMapFaceSelection):
(cubeMapCoordinateTransformation):
(cubeMapDerivativeTransformation):
(scaleFactorOperation):
(levelOfDetailOperation):
(nearest):
(imageLevelSelection):
(strqaToUVWATransformation):
(rne):
(uvwaToIJKLNTransformationAndArrayLayerSelection):
(integerTexelCoordinateOperations):
(mirror):
(transform):
(wrappingOperation):
(calculateLambda):
(shouldBeBorder):
(accessColor):
(computeTau):
(reduce):
(texelGathering):
(computeColorFromLevel):
(texelFiltering):
(castToInnerTypeForGather):
(gatherTexture):
(castToInnerType):
(sampleTexture):

  • WebGPUShadingLanguageRI/index.html:
2:15 PM Changeset in webkit [235634] by ap@apple.com
  • 2 edits in trunk/Tools

Removing an accidentally committed debugging print.

  • Scripts/run-leaks: (runLeaks)
2:06 PM Changeset in webkit [235633] by ap@apple.com
  • 4 edits in trunk/Tools

run-leaks should run leaks with --list (on Mojave)
https://bugs.webkit.org/show_bug.cgi?id=187716
<rdar://problem/42261676>

Reviewed by Lucas Forschler.

Also enabled dumping memgraphs. We'll be pruning these aggressively, as they take
significant space.

  • Scripts/run-leaks:

(main): Added an option to store memgraphs.
(runLeaks): As there is no way to test whether the new format is supported in advance,
we have to try with --list first, and retry if that fails. Also, made leaks operate
on a memgraph file if we are saving it anyway.

  • Scripts/webkitpy/port/leakdetector.py:

(LeakDetector._leaks_args): Pass --memgraph-file to run-leaks.
(LeakDetector.leaks_file_name): Removed an incorrect comment.
(LeakDetector.memgraph_file_name): Added.
(LeakDetector.check_for_leaks): Changed how arguments are passed to _leaks_args.
It is a bit ugly that leaks path ends up being computed twice, but this is the least
ugly approach that I could find.

  • Scripts/webkitpy/port/leakdetector_unittest.py: Updated for _leaks_args changes.
1:47 PM Changeset in webkit [235632] by Chris Dumez
  • 17 edits
    1 move
    1 delete in trunk

Add process pool configuration flag to turn on automatic process pre-warming
https://bugs.webkit.org/show_bug.cgi?id=189263
<rdar://problem/44101941>

Reviewed by Antti Koivisto.

Source/WebKit:

Add process pool configuration flag to turn on automatic process pre-warming and disassociate
it from the warmInitialProcess() SPI.

For now, turning on "process swap on navigation" via experimental features also turns on
automatic process pre-warming.

  • UIProcess/API/APIProcessPoolConfiguration.cpp:

(API::ProcessPoolConfiguration::copy):

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

(WKContextSetPrewarmsProcessesAutomatically):
(WKContextWarmInitialProcess):

  • UIProcess/API/C/WKContextPrivate.h:
  • UIProcess/API/Cocoa/WKProcessPool.mm:

(-[WKProcessPool _warmInitialProcess]):
(-[WKProcessPool _hasPrewarmedWebProcess]):
(-[WKProcessPool _webProcessCountIgnoringPrewarmed]):

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

(-[_WKProcessPoolConfiguration setPrewarmsProcessesAutomatically:]):
(-[_WKProcessPoolConfiguration prewarmsProcessesAutomatically]):

  • UIProcess/ServiceWorkerProcessProxy.cpp:

(WebKit::ServiceWorkerProcessProxy::ServiceWorkerProcessProxy):

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::setMaximumNumberOfProcesses):
(WebKit::WebProcessPool::createNewWebProcess):
(WebKit::WebProcessPool::tryTakePrewarmedProcess):
(WebKit::WebProcessPool::prewarmProcess):
(WebKit::WebProcessPool::disconnectProcess):
(WebKit::WebProcessPool::createWebPage):
(WebKit::WebProcessPool::didReachGoodTimeToPrewarm):

  • UIProcess/WebProcessPool.h:

(WebKit::WebProcessPool::sendToOneProcess):

  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::create):
(WebKit::WebProcessProxy::WebProcessProxy):
(WebKit::m_isInPrewarmedPool):

  • UIProcess/WebProcessProxy.h:

Tools:

Add API test coverage.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKitCocoa/ProcessPreWarming.mm: Renamed from Tools/TestWebKitAPI/Tests/WebKitCocoa/InitialWarmedProcessUsed.mm.

(TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:
  • TestWebKitAPI/Tests/WebKitCocoa/SetMaximumPrewarmedProcessCount.mm: Removed.
1:37 PM Changeset in webkit [235631] by commit-queue@webkit.org
  • 6 edits in trunk

Adjust XMLHttpRequest username/password precedence rules
https://bugs.webkit.org/show_bug.cgi?id=184910

Patch by Rob Buis <rbuis@igalia.com> on 2018-09-04
Reviewed by Chris Dumez.

LayoutTests/imported/w3c:

Update test result.

  • web-platform-tests/xhr/send-authentication-competing-names-passwords-expected.txt:

Source/WebCore:

Steps 9.1 and 9.2 in the XMLHTTPRequest::open [1] algorithm
specify that non null user or non null password ought
to be set on the URL, so implement this.

Behavior matches Firefox and Chrome.

[1] https://xhr.spec.whatwg.org/#dom-xmlhttprequest-open

Test: xhr/send-authentication-competing-names-passwords.htm

  • xml/XMLHttpRequest.cpp:

(WebCore::XMLHttpRequest::open):

LayoutTests:

Adjust test because now we do set password on the url in
open(), even if the username is null.

  • http/tests/xmlhttprequest/basic-auth.html:
1:27 PM Changeset in webkit [235630] by Simon Fraser
  • 7 edits
    1 move
    1 add
    3 deletes in trunk/Source/WebCore

Simplify RenderLayer filter code
https://bugs.webkit.org/show_bug.cgi?id=189248

Reviewed by Dean Jackson.

Painting filters in RenderLayer involved the confusingly named RenderLayer::FilterInfo,
and FilterEffectRenderer/FilterEffectRendererHelper. Reduce confusion by just collapsing
these together into RenderLayerFilters. RenderLayerFilters stores a reference to the
CSSFilter, and knows how to set it up, and vend a GraphicsContext* for painting the content
to be filtered.

It's also simpler to just give RenderLayer a member variable for RenderLayerFilters, rather
than using a side hash (we can recoup the space in other ways layer).

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • css/CSSFilterImageValue.cpp:
  • rendering/CSSFilter.h:
  • rendering/FilterEffectRenderer.cpp: Removed.
  • rendering/FilterEffectRenderer.h: Removed.
  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::RenderLayer):
(WebCore::RenderLayer::~RenderLayer):
(WebCore::RenderLayer::paintsWithFilters const):
(WebCore::RenderLayer::requiresFullLayerImageForFilters const):
(WebCore::RenderLayer::setFilterBackendNeedsRepaintingInRect):
(WebCore::RenderLayer::filtersForPainting const):
(WebCore::RenderLayer::setupFilters):
(WebCore::RenderLayer::applyFilters):
(WebCore::RenderLayer::paintLayerContents):
(WebCore::RenderLayer::calculateClipRects const):
(WebCore::RenderLayer::filter const): Deleted.
(WebCore::RenderLayer::filterPainter const): Deleted.
(WebCore::RenderLayer::hasFilterThatIsPainting const): Deleted.

  • rendering/RenderLayer.h:
  • rendering/RenderLayerFilterInfo.cpp: Removed.
  • rendering/RenderLayerFilters.cpp: Added.

(WebCore::RenderLayerFilters::RenderLayerFilters):
(WebCore::RenderLayerFilters::~RenderLayerFilters):
(WebCore::RenderLayerFilters::setFilter):
(WebCore::RenderLayerFilters::hasFilterThatMovesPixels const):
(WebCore::RenderLayerFilters::hasFilterThatShouldBeRestrictedBySecurityOrigin const):
(WebCore::RenderLayerFilters::notifyFinished):
(WebCore::RenderLayerFilters::updateReferenceFilterClients):
(WebCore::RenderLayerFilters::removeReferenceFilterClients):
(WebCore::RenderLayerFilters::buildFilter):
(WebCore::RenderLayerFilters::beginFilterEffect):
(WebCore::RenderLayerFilters::applyFilterEffect):

  • rendering/RenderLayerFilters.h: Renamed from Source/WebCore/rendering/RenderLayerFilterInfo.h.
1:26 PM Changeset in webkit [235629] by dino@apple.com
  • 2 edits in trunk/Source/WebCore

Build fix.

  • testing/Internals.cpp:
1:16 PM Changeset in webkit [235628] by keith_miller@apple.com
  • 2 edits in trunk/Tools

Perl doesn't like calling keys on a reference
https://bugs.webkit.org/show_bug.cgi?id=189261

Reviewed by Michael Saboff.

  • Scripts/test262/Runner.pm:

(UpdateResults):

12:48 PM Changeset in webkit [235627] by mark.lam@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Make the jsc shell print, printErr, and debug functions more robust.
https://bugs.webkit.org/show_bug.cgi?id=189268
<rdar://problem/41192690>

Reviewed by Keith Miller.

We'll now check for UTF8 conversion errors.

  • jsc.cpp:

(cStringFromViewWithString):
(printInternal):
(functionDebug):

12:38 PM Changeset in webkit [235626] by dino@apple.com
  • 15 edits in trunk

Move SystemPreview code from WebKitAdditions to WebKit
https://bugs.webkit.org/show_bug.cgi?id=189252
<rdar://problem/44080245>

Reviewed by Wenson Hsieh.

Source/WebCore:

Move the WebKitAdditions code into WebKit/WebCore.

  • html/HTMLAnchorElement.cpp:

(WebCore::HTMLAnchorElement::relList const): Look for "ar".
(WebCore::HTMLAnchorElement::isSystemPreviewLink const): Ditto.

  • platform/MIMETypeRegistry.cpp: Add a couple of new static methods

for System Preview MIME types.
(WebCore::initializeSystemPreviewMIMETypes):
(WebCore::MIMETypeRegistry::getSystemPreviewMIMETypes):
(WebCore::MIMETypeRegistry::isSystemPreviewMIMEType):

  • platform/MIMETypeRegistry.h:
  • rendering/RenderThemeIOS.mm: Load the ARKit artwork from the framework.

(WebCore::arKitBundle):
(WebCore::loadARKitPDFPage):
(WebCore::systemPreviewLogo):
(WebCore::RenderThemeIOS::paintSystemPreviewBadge):

  • testing/Internals.cpp: Remove internal helper.

(WebCore::Internals::systemPreviewRelType): Deleted.

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

Source/WebKit:

Move the WebKitAdditions code into WebKit/WebCore.

  • UIProcess/Cocoa/SystemPreviewControllerCocoa.mm:

(getUTIForMIMEType): Helper to get the system UTI for USDZ files.
(-[_WKPreviewControllerDataSource previewController:previewItemAtIndex:]):

  • UIProcess/Cocoa/WKWebViewContentProviderRegistry.mm: Use the new methods

in MIMETypeRegistry.
(-[WKWebViewContentProviderRegistry initWithConfiguration:]):

  • UIProcess/SystemPreviewController.cpp: Ditto.

(WebKit::SystemPreviewController::canPreview const):

  • UIProcess/ios/WKSystemPreviewView.mm:

(getUTIForMIMEType): Similar helper to above.
(-[WKSystemPreviewView web_setContentProviderData:suggestedFilename:]):

LayoutTests:

This test no longer needs an internal helper.

  • system-preview/detection.html:
12:14 PM Changeset in webkit [235625] by aestes@apple.com
  • 8 edits in trunk

[Payment Request] PaymentResponse should have an onpayerdetailchange event handler
https://bugs.webkit.org/show_bug.cgi?id=189249

Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

  • web-platform-tests/payment-request/payment-response/onpayerdetailchange-attribute.https-expected.txt:

Source/WebCore:

Implemented the onpayerdetailchange event handler as defined in the Payment Request API W3C Editor's Draft of 30 August 2018.

The "payer detail changed" algorithm will be implemented in a follow-up patch.

Covered by existing web platform tests.

  • Modules/paymentrequest/PaymentResponse.cpp:

(WebCore::PaymentResponse::scriptExecutionContext const):

  • Modules/paymentrequest/PaymentResponse.h:
  • Modules/paymentrequest/PaymentResponse.idl:
  • dom/EventNames.h:
  • dom/EventTargetFactory.in:
11:53 AM Changeset in webkit [235624] by david_fenton@apple.com
  • 2 edits in trunk/JSTests

Skip Test on 32-bit platforms.
https://bugs.webkit.org/show_bug.cgi?id=189185.

Unreviewed test gardening.

  • stress/regress-189185.js:
11:48 AM Changeset in webkit [235623] by youenn@apple.com
  • 14 edits
    8 adds in trunk/Source/WebCore

Introduce LibWebRTC backends for sender and receiver
https://bugs.webkit.org/show_bug.cgi?id=189171

Reviewed by Alejandro G. Castro.

Rename RTCRtpSender::Backend to RTCRtpSenderBackend, ditto for RTCRtpReceiver::Backend.
Make RTCRtpSender/RTCRtpReceiver own their backend.
This will allow the backends to own a libwebrtc sender/receiver ref counted object
and might allow us to cleanly separate code from unified plan vs plan B.

Update code so that libwebrtc code specific code is now creating senders and receivers.
This moves code from RTCPeerConnection down to LibWebRTCPeerConnectionBackend, in particular for
addTrack and addTransceiver methods.

Moved some code from LibWebRTCMediaEndpoint to LibWebRTCUtils to ease readability.

A future patch will allow to tie the libwebrtc sender/receiver to WebKit DOM sender/receiver.

Covered by existing tests.

  • Modules/mediastream/PeerConnectionBackend.cpp:

(WebCore::PeerConnectionBackend::addTrack):
(WebCore::PeerConnectionBackend::addTransceiver):

  • Modules/mediastream/PeerConnectionBackend.h:
  • Modules/mediastream/RTCPeerConnection.cpp:

(WebCore::RTCPeerConnection::addTrack):
(WebCore::RTCPeerConnection::addTransceiver):
(WebCore::RTCPeerConnection::enqueueReplaceTrackTask):

  • Modules/mediastream/RTCPeerConnection.h:
  • Modules/mediastream/RTCRtpReceiver.cpp:

(WebCore::RTCRtpReceiver::RTCRtpReceiver):

  • Modules/mediastream/RTCRtpReceiver.h:

(WebCore::RTCRtpReceiver::create):
(WebCore::RTCRtpReceiver::setBackend):

  • Modules/mediastream/RTCRtpReceiverBackend.h: Added.

(WebCore::RTCRtpReceiverBackend::getParameters):

  • Modules/mediastream/RTCRtpSender.cpp:

(WebCore::RTCRtpSender::create):
(WebCore::RTCRtpSender::RTCRtpSender):

  • Modules/mediastream/RTCRtpSender.h:
  • Modules/mediastream/RTCRtpSenderBackend.h: Added.
  • Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:

(WebCore::LibWebRTCMediaEndpoint::addRemoteTrack):

  • Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp:

(WebCore::LibWebRTCPeerConnectionBackend::videoReceiver):
(WebCore::LibWebRTCPeerConnectionBackend::audioReceiver):
(WebCore::LibWebRTCPeerConnectionBackend::addTrack):
(WebCore::LibWebRTCPeerConnectionBackend::addTransceiver):
(WebCore::LibWebRTCPeerConnectionBackend::completeAddTransceiver):

  • Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.h:
  • Modules/mediastream/libwebrtc/LibWebRTCRtpReceiverBackend.cpp: Added.

(WebCore::LibWebRTCRtpReceiverBackend::getParameters):

  • Modules/mediastream/libwebrtc/LibWebRTCRtpReceiverBackend.h: Added.
  • Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.cpp: Added.

(WebCore::LibWebRTCRtpSenderBackend::replaceTrack):
(WebCore::LibWebRTCRtpSenderBackend::getParameters const):

  • Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.h: Added.
  • Modules/mediastream/libwebrtc/LibWebRTCUtils.cpp: Added.

(WebCore::fillEncodingParameters):
(WebCore::fillHeaderExtensionParameters):
(WebCore::fillCodecParameters):
(WebCore::fillRtpParameters):

  • Modules/mediastream/libwebrtc/LibWebRTCUtils.h: Added.

(WebCore::fromStdString):

  • WebCore.xcodeproj/project.pbxproj:
11:40 AM Changeset in webkit [235622] by graouts@webkit.org
  • 3 edits
    2 adds in trunk

[Modern Media Controls] Disabling both fullscreen and picture-in-picture shows an empty top left container
https://bugs.webkit.org/show_bug.cgi?id=189259
<rdar://problem/42026625>

Reviewed by Dean Jackson.

Source/WebCore:

Test: media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-disabled-fullscreen-and-pip.html

Ensure the top left controls bar is hidden when none of its children are visible.

  • Modules/modern-media-controls/controls/inline-media-controls.js:

(InlineMediaControls.prototype.layout):

LayoutTests:

Adding a new test that checks that the top left container is hidden when both the fullscreen and picture-in-picture buttons are disabled.

  • media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-disabled-fullscreen-and-pip-expected.txt: Added.
  • media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-disabled-fullscreen-and-pip.html: Added.
11:20 AM Changeset in webkit [235621] by dbates@webkit.org
  • 2 edits in trunk/Source/WebCore

Attempt to fix failing tests following r235615 (https://bugs.webkit.org/show_bug.cgi?id=187925)

An inline text box that does not have combined text and contains a single character
should be considered as having text content.

  • rendering/InlineTextBox.cpp:

(WebCore::InlineTextBox::hasTextContent const):

11:10 AM Changeset in webkit [235620] by Ryan Haddad
  • 2 edits in trunk/Source/WebCore/PAL

Unreviewed, attempt to fix an internal build after r235585.

  • pal/spi/cf/CFNetworkSPI.h:
11:03 AM Changeset in webkit [235619] by pvollan@apple.com
  • 9 edits
    2 adds in trunk

Add test for fix in https://bugs.webkit.org/show_bug.cgi?id=187922
https://bugs.webkit.org/show_bug.cgi?id=187925

Reviewed by Simon Fraser.

This will test that the function primaryScreenDisplayID() returns a valid display ID.

Source/WebCore:

Test: fast/misc/valid-primary-screen-displayID.html

  • platform/PlatformScreen.h:
  • platform/mac/PlatformScreenMac.mm:

(WebCore::primaryScreenDisplayID):

  • testing/Internals.cpp:

(WebCore::Internals::primaryScreenDisplayID):

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

LayoutTests:

  • TestExpectations:
  • fast/misc/valid-primary-screen-displayID-expected.txt: Added.
  • fast/misc/valid-primary-screen-displayID.html: Added.
  • platform/mac-wk2/TestExpectations:
10:28 AM Changeset in webkit [235618] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

Bug 189190 - REGRESSION(r235398) ASSERTION failure !m_client.didFinishDocumentLoadForFrame
https://bugs.webkit.org/show_bug.cgi?id=189190

Patch by Frederic Wang <fwang@igalia.com> on 2018-09-04
Reviewed by Alex Christensen.

Assertions to prevent use of the deprecated WKPageSetPageLoaderClient class are hit when
running system Safari with the current macOS/iOS releases, making impossible to launch it.
This patch conditionally skips these assertions so that they are only verified for
macOS > 10.14 or other platforms.

  • UIProcess/API/C/WKPage.cpp:

(WKPageSetPageLoaderClient): Only assert on future OS releases.

10:11 AM Changeset in webkit [235617] by dbates@webkit.org
  • 12 edits in trunk/Source/WebCore

Add helper function to create a potential CORS request
https://bugs.webkit.org/show_bug.cgi?id=189251

Reviewed by Andy Estes.

Add a new function, createPotentialAccessControlRequest, that we will use to implement the algorithm Create a potential-
CORS request from the HTML standard: <https://html.spec.whatwg.org/multipage/urls-and-fetching.html#create-a-potential-cors-request> (31 August 2018).
This function replaces CachedResourceRequest::setAsPotentiallyCrossOrigin() and is the first step towards separating
the concepts of CORS settings states and module script credentials mode as well as implementing the aforementioned
algorithm. Rename CachedResourceRequest::setAsPotentiallyCrossOrigin() to deprecatedSetAsPotentiallyCrossOrigin()
and switch existing callers to use createPotentialAccessControlRequest(). For now, createPotentialAccessControlRequest()
is implemented in terms of deprecatedSetAsPotentiallyCrossOrigin().

No functionality changed. So, no new tests.

  • bindings/js/CachedScriptFetcher.cpp:

(WebCore::CachedScriptFetcher::requestScriptWithCache const): Write in terms of WebCore::createPotentialAccessControlRequest().

  • html/HTMLLinkElement.cpp:

(WebCore::HTMLLinkElement::process): Ditto.

  • html/parser/HTMLResourcePreloader.cpp:

(WebCore::PreloadRequest::resourceRequest): Ditto.

  • loader/CrossOriginAccessControl.cpp:

(WebCore::createPotentialAccessControlRequest): For now, implemented in terms of CachedResourceRequest::deprecatedSetAsPotentiallyCrossOrigin().

  • loader/CrossOriginAccessControl.h:
  • loader/ImageLoader.cpp:

(WebCore::ImageLoader::updateFromElement): Write in terms of WebCore::createPotentialAccessControlRequest().

  • loader/LinkLoader.cpp:

(WebCore::LinkLoader::preloadIfNeeded): Ditto.

  • loader/MediaResourceLoader.cpp:

(WebCore::MediaResourceLoader::requestResource): Ditto. Also renamed local variable cacheRequest to cachedRequest.

  • loader/TextTrackLoader.cpp:

(WebCore::TextTrackLoader::load): Write in terms of WebCore::createPotentialAccessControlRequest(). Also change local variable
document from a pointer to a reference since this function asserts that the script execution context is a non-null Document.

  • loader/cache/CachedResourceRequest.cpp:

(WebCore::CachedResourceRequest::deprecatedSetAsPotentiallyCrossOrigin): Renamed; formerly named setAsPotentiallyCrossOrigin.
(WebCore::CachedResourceRequest::setAsPotentiallyCrossOrigin): Deleted.

  • loader/cache/CachedResourceRequest.h:

(WebCore::CachedResourceRequest::setPriority): Added.

10:07 AM Inspecting the GC heap edited by ajuma@chromium.org
(diff)
10:06 AM Changeset in webkit [235616] by commit-queue@webkit.org
  • 7 edits in trunk/Source/WebKit

Clean up WebGL policy getting code path
https://bugs.webkit.org/show_bug.cgi?id=189003

Patch by Alex Christensen <achristensen@webkit.org> on 2018-09-04
Reviewed by Darin Adler.

  • UIProcess/API/APINavigationClient.h:

(API::NavigationClient::webGLLoadPolicy const):
(API::NavigationClient::resolveWebGLLoadPolicy const):

  • UIProcess/Cocoa/NavigationState.h:
  • UIProcess/Cocoa/NavigationState.mm:

(WebKit::NavigationState::NavigationClient::webGLLoadPolicy const):
(WebKit::NavigationState::NavigationClient::resolveWebGLLoadPolicy const):

  • WebProcess/WebPage/WebPage.cpp:
  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::webGLPolicyForURL): Deleted.
(WebKit::WebPage::resolveWebGLPolicyForURL): Deleted.

10:02 AM Changeset in webkit [235615] by dbates@webkit.org
  • 7 edits in trunk

Remove redundant inline text boxes for empty combined text
https://bugs.webkit.org/show_bug.cgi?id=189119

Reviewed by Zalan Bujtas.

Source/WebCore:

We should consider inline text boxes that have a combined text renderer (RenderCombineText)
whose composed string is empty as "redundant" just as we do for inline text boxes that have
a non-combined text renderer that have zero length so that we remove them. Such boxes are
visibly empty and do not take up space visually. By removing them we reduce memory and make
it easier to reason about the line box tree.

Currently RenderBlockFlow::computeBlockDirectionPositionsForLine() tests if an inline text
box is empty by checking if it has a zero length (InlineTextBox::len()). However an inline
text box associated with a RenderCombineText always has length 1 regardless of whether the
composed string it represents is the empty string. Instead we should expose a way to check
if an inline text box is visually empty and have RenderBlockFlow::computeBlockDirectionPositionsForLine()
query the inline text box for this answer.

  • rendering/InlineTextBox.cpp:

(WebCore::InlineTextBox::hasTextContent const): Added. Returns whether an inline text box
has text content. We do not need to consider hypenation since hypens are an embellishment (i.e.
they are not part of the markup of the page).
(WebCore::InlineTextBox::paint): Write in terms of hasTextContent().
(WebCore::InlineTextBox::subdivideAndResolveStyle): Assert that WebCore::subdivide() always
returns a non-empty list of subdivisions. A non-empty text box should always have at least
one subdivision, say for the unmarked text. I left the existing conditonal (though marked
it as UNLIKELY()) so as to be forgiving and avoid a bad user experience should WebCore::subdivide()
return an empty vector in a non-debug build.

  • rendering/InlineTextBox.h:
  • rendering/RenderBlockLineLayout.cpp:

(WebCore::RenderBlockFlow::computeBlockDirectionPositionsForLine): Write in terms of InlineTextBox::hasTextContent()
so that we remove empty inline text boxes associated with combined text.

  • rendering/RenderText.cpp:

(WebCore::RenderText::positionLineBox): Write in terms of InlineTextBox::hasTextContent().

LayoutTests:

Update expected result now that we do not create an inline text box associated with combined text
when we do not have any combined text to render.

  • fast/text/text-combine-surroundContents-crash-expected.txt:
10:01 AM Changeset in webkit [235614] by jer.noble@apple.com
  • 2 edits in trunk/Tools

REGRESSION (r234081): TestWebKitAPI.VideoControlsManager.VideoControlsManagerAudioElementFollowingUserInteraction is a flaky timeout
https://bugs.webkit.org/show_bug.cgi?id=187972
<rdar://problem/42667737>

Reviewed by Darin Adler.

Ensure that listeners are added in time to catch messages broadcast at them.

  • TestWebKitAPI/Tests/WebKitCocoa/VideoControlsManager.mm:

(TestWebKitAPI::TEST):

9:55 AM Changeset in webkit [235613] by Ross Kirsling
  • 101 edits
    14 copies
    33 moves
    48 adds
    9 deletes in trunk

Update googletest
https://bugs.webkit.org/show_bug.cgi?id=175722

Reviewed by Brent Fulgham.

Source/ThirdParty:

  • gtest/:

Update to 1.8.1.

  • gtest/CMakeLists.txt:
  • gtest/xcode/:

Keep our versions of these build files, making any necessary additive updates
and removing WTF/JSC dependencies so that we stop forking third-party source.

Tools:

  • TestWebKitAPI/config.h:

Instead of modifying the gtest source, add the necessary WTF includes here.

  • TestWebKitAPI/Configurations/Base.xcconfig

Remove obsoleted definitions GTEST_HAS_TR1_TUPLE=0 and GTEST_HAS_RTTI=0.

7:48 AM Changeset in webkit [235612] by Michael Catanzaro
  • 2 edits in trunk/Source/JavaScriptCore

[WPE][GTK] Add more unused result warnings to JSC API
https://bugs.webkit.org/show_bug.cgi?id=189243

Reviewed by Carlos Garcia Campos.

The jsc_context_evaluate() family of functions has a (transfer full) return value, but the
caller may be tempted to not inspect it if uninterested in the return value. This would be
an error, because it must be freed.

  • API/glib/JSCContext.h:
5:10 AM Changeset in webkit [235611] by Ms2ger@igalia.com
  • 8 edits
    2 adds in trunk

Implement support for passing ImageBitmap to texImage2D/texSubImage2D
https://bugs.webkit.org/show_bug.cgi?id=187584

Reviewed by Dean Jackson.

Source/WebCore:

Test: fast/canvas/webgl/gl-teximage-imagebitmap.html

  • html/canvas/WebGL2RenderingContext.h: Update union type definition.
  • html/canvas/WebGL2RenderingContext.idl: Update union type definition.
  • html/canvas/WebGLRenderingContext.idl: Update union type definition.
  • html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::WebGLRenderingContextBase::texSubImage2D): implement.
(WebCore::WebGLRenderingContextBase::texImage2D): implement.

  • html/canvas/WebGLRenderingContextBase.h: Update union type definition; add to TexFuncValidationSourceType.
  • html/canvas/WebGLRenderingContextBase.idl: Remove unused union type definition.

LayoutTests:

  • fast/canvas/webgl/gl-teximage-imagebitmap-expected.txt: Added.
  • fast/canvas/webgl/gl-teximage-imagebitmap.html: Added.
3:27 AM Changeset in webkit [235610] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

[EME] Add the WebM initData support in ClearKey CDM
https://bugs.webkit.org/show_bug.cgi?id=189240

Patch by Yacine Bandou <yacine.bandou_ext@softathome.com> on 2018-09-04
Reviewed by Xabier Rodriguez-Calvar.

Add the "webm" initDataType support in ClearKey CDM.
Read the WebM initData by following the W3C spec https://www.w3.org/TR/eme-initdata-webm/#common-system,
and put it in JSON object format like is specified in https://www.w3.org/TR/encrypted-media/#clear-key-request-format.

Tests: media/encrypted-media/clearKey/clearKey-encrypted-webm-event-mse.html

media/encrypted-media/clearKey/clearKey-webm-video-playback-mse.html

  • platform/encryptedmedia/clearkey/CDMClearKey.cpp:

(WebCore::extractKeyIdFromWebMInitData):
(WebCore::CDMPrivateClearKey::supportsInitDataType const):
(WebCore::CDMPrivateClearKey::supportsInitData const):
(WebCore::CDMInstanceClearKey::requestLicense):

3:27 AM Changeset in webkit [235609] by commit-queue@webkit.org
  • 5 edits
    3 adds in trunk/LayoutTests

[EME] Add layout test for InitData and InitDataType in WebM encrypted event
https://bugs.webkit.org/show_bug.cgi?id=189196

Patch by Yacine Bandou <yacine.bandou@softathome.com> on 2018-09-04
Reviewed by Xabier Rodriguez-Calvar.

This commit adds a new layoutTest in order to test the reception of the encrypted WebM
event with an expected initData and initDataType fields.

  • media/content/encrypted/VideoClearKeyWebM.webm: Added.

This is a simple encrypted video.
It has been encrypted with webm_crypt see https://github.com/webmproject/webm-tools.
#webm_crypt -i VideoWebM.webm -audio false -video true -video_options base_file=bear.key,content_id="0123456789012345" -o VideoClearKeyWebM.webm

  • media/encrypted-media/clearKey/clearKey-encrypted-webm-event-mse-expected.txt: Added.
  • media/encrypted-media/clearKey/clearKey-encrypted-webm-event-mse.html: Added.
  • media/encrypted-media/medias-enc.js:
  • platform/gtk/TestExpectations:
  • platform/mac/TestExpectations:
  • platform/wpe/TestExpectations:
1:38 AM Changeset in webkit [235608] by zandobersek@gmail.com
  • 2 edits in trunk/Source/WebKit

REGRESSION(r235165): [GStreamer] Major video performance regression
https://bugs.webkit.org/show_bug.cgi?id=189224

Reviewed by Michael Catanzaro.

  • Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:

(WebKit::CoordinatedGraphicsScene::updateSceneState): Drop the early
return used when the scene state wasn't updated through a layer flush,
and instead always run through layer changes and backings. This way we
won't miss proxy objects that need swapping even if none of the layer
states were changed. Reducing the amount of work done here when scene
hasn't been updated might be possible, but it's not a huge bottleneck.

Note: See TracTimeline for information about the timeline view.