Timeline



Sep 29, 2019:

10:15 PM Changeset in webkit [250498] by zandobersek@gmail.com
  • 7 edits in trunk/Source

ScrollingTreeScrollingNode: use LayerRepresentation for scroll container, scrolled contents layers
https://bugs.webkit.org/show_bug.cgi?id=202256
<rdar://problem/55772092>

Reviewed by Simon Fraser.

Source/WebCore:

Make the scroll container and scrolled contents layer holders
platform-independent by using the LayerRepresentation as the underlying
type for the two member variables in ScrollingTreeScrollingNode.

  • page/scrolling/ScrollingTreeScrollingNode.cpp:

(WebCore::ScrollingTreeScrollingNode::commitStateBeforeChildren):

  • page/scrolling/ScrollingTreeScrollingNode.h:
  • page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm:

(WebCore::ScrollingTreeFrameScrollingNodeMac::repositionScrollingLayers):

  • page/scrolling/mac/ScrollingTreeOverflowScrollingNodeMac.mm:

(WebCore::ScrollingTreeOverflowScrollingNodeMac::repositionScrollingLayers):

Source/WebKit:

  • UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.mm:

(WebKit::RemoteScrollingCoordinatorProxy::establishLayerTreeScrollingRelations):
Use static casts to retrieve the CALayer pointers from the
LayerRepresentation objects due to the explicit operators.

9:52 PM BuildingCairoOnWindows edited by Fujii Hironori
(diff)
7:21 PM Changeset in webkit [250497] by Keith Rollin
  • 2 edits in trunk/Source/WTF

Address static analysis warning in ParkingLot.cpp: Access to field 'size' results in a dereference of a null pointer
https://bugs.webkit.org/show_bug.cgi?id=202154
<rdar://problem/55672103>

Reviewed by Brent Fulgham.

Static analysis reports the following:

.../OpenSource/Source/WTF/wtf/ParkingLot.cpp:376:30: warning: Access to field 'size' results in a dereference of a null pointer (loaded from variable 'oldHashtable')

RELEASE_ASSERT(newSize > oldHashtable->size);

~

This warning arises because earlier code checks to see if oldHashtable
is NULL, leading the static analyzer to think that it *could* be NULL.
However, even earlier code actually ensures that oldHashtable will not
be NULL. Address this by removing the NULL check, and back it up with
an ASSERT to ensure that it's not NULL.

  • wtf/ParkingLot.cpp:
6:56 PM Changeset in webkit [250496] by Alan Coon
  • 3 edits in branches/safari-608-branch/Source/WebCore

Cherry-pick r250483. rdar://problem/55825351

[Experiment][iOS] Add temporary HTTP header to distinguish iPads for requests to Google
https://bugs.webkit.org/show_bug.cgi?id=202335
<rdar://problem/55790994>

Reviewed by Maciej Stachowiak.

  • loader/cache/CachedResourceLoader.cpp: (WebCore::CachedResourceLoader::requestResource):
  • platform/network/HTTPHeaderNames.in:

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

6:56 PM Changeset in webkit [250495] by Alan Coon
  • 19 edits in branches/safari-608-branch

Cherry-pick r250345. rdar://problem/55825352

[iPadOS] [DataActivation] Focus moves away after focusing input fields on www.att.com
https://bugs.webkit.org/show_bug.cgi?id=202167
<rdar://problem/55185021>

Reviewed by Tim Horton.

Source/WebCore:

Adds a new site-specific quirk. See WebKit ChangeLog for more details.

  • page/Quirks.cpp: (WebCore::Quirks::shouldUseLegacySelectPopoverDismissalBehaviorInDataActivation const):
  • page/Quirks.h:
  • platform/RuntimeApplicationChecks.h:
  • platform/cocoa/RuntimeApplicationChecksCocoa.mm: (WebCore::IOSApplication::isDataActivation):

Source/WebKit:

When using the data activation page on www.att.com, one of the sections on the page contains several select
elements; in the case where the user agent:

  1. contains the string "iPad", and
  2. does not contain the string "Safari"

...www.att.com's data activation page will opt into a mode where it adds blur event listeners to the select
elements; in this blur event listener, www.att.com proceeds to programmatically focus a non-editable div element
after a 1 second timeout. The reasons for this behavior remain unclear to me, though it's worth noting that the
blur event handler name is "screenReaderFocus", which suggests that this is in place to ensure compatibility
with screen readers.

In iOS 12, dismissing the popover would blur the focused select menu with an animation. Since the animation
would take a slightly less than 1 second, www.att.com's logic would have the effect of moving focus to the div
element shortly after dismissing the select menu. However, after r243808, we no longer attempt to blur the
focused select element when dismissing the popover. This means that the select element is only blurred the next
time the user activates another focused element, such as one of the input fields on the page, or a different
select element. Consequently, the logic to move focus into a div element now occurs only after a different
element has already been focused; this results in focus moving away from newly focused elements after 1 second
in the case where a select element has previously focused.

To mitigate this, restore iOS 12 behavior behind a site- and app-specific quirk. See comments below for more
details.

  • Shared/FocusedElementInformation.cpp: (WebKit::FocusedElementInformation::encode const): (WebKit::FocusedElementInformation::decode):
  • Shared/FocusedElementInformation.h:

Add a new behavioral quirk flag to FocusedElementInformation to determine whether we should use "legacy" select
popover dismissal behavior (i.e. blurring the focused select element when dismissing the select popover, as well
as dismissing the popover with animation).

  • Shared/WebPreferences.yaml:

Enable site-specific quirks by default in WKWebView. With regards to this bug, this change allows for
site-specific hacks (namely, legacy select popover dismissal) in DataActivation. However, this also fixes
various known bugs that are otherwise addressed in Safari only, via site-specific quirks.

  • UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView _initializeWithConfiguration:]):

For apps linked on or before iOS 13 and macOS 10.15, revert the default of value of NeedsSiteSpecificQuirks to
false. This is done here instead of in a default value function in WebPreferencesDefaultValues to prevent the
default values of NeedsSiteSpecificQuirks in the web process and UI process from going out of sync, since the
web process is not necessarily linked against the same SDK as the application.

  • UIProcess/Cocoa/VersionChecks.h:

Add a new DYLD version check for the first version of iOS and macOS where site-specific quirks are enabled by
default.

  • UIProcess/ios/WKContentViewInteraction.h:
  • UIProcess/ios/WKContentViewInteraction.mm: (-[WKContentView endEditingAndUpdateFocusAppearanceWithReason:]): (-[WKContentView _elementDidBlur]): (-[WKContentView _shouldUseLegacySelectPopoverDismissalBehavior]):

We only use "legacy" select popover dismissal behavior in the case where the site-specific quirk flag is on, a
select popover is used (i.e. the device is an iPad and a select element is focused), and the application bundle
is "com.apple.DataActivation".

  • UIProcess/ios/forms/WKFormSelectPopover.mm: (-[WKSelectTableViewController shouldDismissWithAnimation]):

Keyed off of _shouldUseLegacySelectPopoverDismissalBehavior.

(-[WKSelectPopover controlEndEditing]):

  • WebProcess/WebPage/ios/WebPageIOS.mm: (WebKit::WebPage::getFocusedElementInformation):

Source/WTF:

Declare DYLD_IOS_VERSION_13_2.

  • wtf/spi/darwin/dyldSPI.h:

Tools:

Rebaseline an API test.

  • TestWebKitAPI/Tests/WebKit/WKPreferences.cpp: (TestWebKitAPI::TEST):

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

6:56 PM Changeset in webkit [250494] by Alan Coon
  • 18 edits
    2 adds in branches/safari-608-branch

Cherry-pick r249893. rdar://problem/55825342

Expose misspelling ranges for editable content to accessibility clients.
https://bugs.webkit.org/show_bug.cgi?id=201752
<rdar://problem/49556828>

Patch by Andres Gonzalez <Andres Gonzalez> on 2019-09-16
Reviewed by Chris Fleizach.

Source/WebCore:

Test: accessibility/misspelling-range.html

Added [WebAccessibilityObjectWrapper misspellingTextMarkerRange] and
underlying AccessibilityObject implementation to expose misspellings to
accessibility clients that provide an alternative user interface to
spell checking.

  • accessibility/AccessibilityObject.cpp: (WebCore::AccessibilityObject::getMisspellingRange const):
  • accessibility/AccessibilityObject.h:
  • accessibility/ios/WebAccessibilityObjectWrapperIOS.mm: (-[WebAccessibilityObjectWrapper misspellingTextMarkerRange:direction:]):
  • accessibility/mac/WebAccessibilityObjectWrapperMac.mm: (accessibilityMisspellingSearchCriteriaForParameterizedAttribute): (-[WebAccessibilityObjectWrapper accessibilityAttributeValue:forParameter:]):

Tools:

Test code needed for LayoutTests/accessibility/misspelling-range.html.

  • WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:
  • WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl:
  • WebKitTestRunner/InjectedBundle/ios/AccessibilityUIElementIOS.mm: (WTR::AccessibilityUIElement::misspellingTextMarkerRange): (WTR::AccessibilityUIElement::indexForTextMarker):
  • WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm: (WTR::misspellingSearchParameterizedAttributeForCriteria): (WTR::AccessibilityUIElement::misspellingTextMarkerRange):

LayoutTests:

  • accessibility/misspelling-range-expected.txt: Added.
  • accessibility/misspelling-range.html: Added.
  • platform/ios-simulator/TestExpectations:

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

4:50 PM Changeset in webkit [250493] by bshafiei@apple.com
  • 46 edits
    1 copy
    3 moves
    1 delete in branches/safari-608-branch

Apply patch. rdar://problem/55801087

12:33 PM Changeset in webkit [250492] by Brent Fulgham
  • 11 edits in trunk/Source/WebCore

[FTW] Correct compositing, shadow, and radial gradient implementations
https://bugs.webkit.org/show_bug.cgi?id=202177

Reviewed by Fujii Hironori.

This patch corrects a number of implementation errors in basic Canvas
drawing operations.

Tested by canvas/philip/tests

  • platform/graphics/win/Direct2DOperations.cpp:

(WebCore::Direct2D::State::setCompositeOperation): Initialize blend and
composite modes to correct defaults.
(WebCore::Direct2D::drawWithShadowHelper): Correct value used for blur
standard deviation to more closely match other browser output.

  • platform/graphics/win/Direct2DUtilities.cpp:

(WebCore::Direct2D::createBitmapCopyFromContext): Added helper function.

  • platform/graphics/win/Direct2DUtilities.h:
  • platform/graphics/win/GradientDirect2D.cpp:

(WebCore::Gradient::generateGradient): Properly handle the case of a non-zero
initial gradient radius. Properly compute the final radius.

  • platform/graphics/win/ImageBufferDataDirect2D.cpp:

(WebCore::ImageBufferData::readDataFromBitmapIfNeeded const): Update to use ID2D1DeviceContext
from platformContext, rather than searching for it each time.
(WebCore::ImageBufferData::compatibleBitmap): Ditto.

  • platform/graphics/win/PlatformContextDirect2D.cpp:

(WebCore::PlatformContextDirect2D::PlatformContextDirect2D): Grab the ID2D1DeviceContext for
the RenderTarget at construction time.
(WebCore::PlatformContextDirect2D::setRenderTarget): Ditto.
(WebCore::PlatformContextDirect2D::endDraw): Perform compositing operations when needed.
(WebCore::PlatformContextDirect2D::compositeIfNeeded): Added.
(WebCore::PlatformContextDirect2D::setBlendAndCompositeMode): Update to properly set the
blend and compositing mode (depending on global value set for the canvas.)

  • platform/graphics/win/PlatformContextDirect2D.h:

(WebCore::PlatformContextDirect2D::deviceContext):
(WebCore::PlatformContextDirect2D::setRenderTarget): Deleted.
(WebCore::PlatformContextDirect2D::setBlendMode): Deleted.
(WebCore::PlatformContextDirect2D::setCompositeMode): Deleted.

10:25 AM Changeset in webkit [250491] by zandobersek@gmail.com
  • 15 edits in trunk/Source

Tighten up LayerRepresentation operators
https://bugs.webkit.org/show_bug.cgi?id=202344

Reviewed by Simon Fraser.

Source/WebCore:

Make the operators on the LayerRepresentation class explicit.
Additionally, the bool operator is added to the class, allowing objects
of this class to be safely used in boolean contexts like null checks.
Before, use in such contexts fell back to using the
GraphicsLayer::PlatformLayerID operator which caused asserts when the
internal representation was of different type.

While the explicit operators prevent misuse, they do require additional
conversion casts to retrieve the internal LayerRepresentation value.

  • page/scrolling/ScrollingStateNode.h:

(WebCore::LayerRepresentation::operator GraphicsLayer* const):
(WebCore::LayerRepresentation::operator PlatformLayer* const):
(WebCore::LayerRepresentation::operator GraphicsLayer::PlatformLayerID const):
(WebCore::LayerRepresentation::operator bool const):
(WebCore::LayerRepresentation::toRepresentation const):
Add a missing ASSERT_NOT_REACHED() invocation.

  • page/scrolling/ScrollingTreeScrollingNode.cpp:

(WebCore::ScrollingTreeScrollingNode::commitStateBeforeChildren):

  • page/scrolling/cocoa/ScrollingTreeFixedNode.mm:

(WebCore::ScrollingTreeFixedNode::commitStateBeforeChildren):

  • page/scrolling/cocoa/ScrollingTreeOverflowScrollProxyNode.mm:

(WebCore::ScrollingTreeOverflowScrollProxyNode::commitStateBeforeChildren):

  • page/scrolling/cocoa/ScrollingTreePositionedNode.mm:

(WebCore::ScrollingTreePositionedNode::commitStateBeforeChildren):

  • page/scrolling/cocoa/ScrollingTreeStickyNode.mm:

(WebCore::ScrollingTreeStickyNode::commitStateBeforeChildren):

  • page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm:

(WebCore::ScrollingTreeFrameScrollingNodeMac::commitStateBeforeChildren):

Source/WebKit:

With LayerRepresentation operators now being explicit, we require
to manually specify conversion to CALayer pointers or
GraphicsLayer::PlatformLayerID values.

  • UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.cpp:

(WebKit::RemoteScrollingCoordinatorProxy::connectStateNodeLayers):

  • UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.mm:

(WebKit::RemoteScrollingCoordinatorProxy::connectStateNodeLayers):

  • UIProcess/RemoteLayerTree/ios/ScrollingTreeFrameScrollingNodeRemoteIOS.mm:

(WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::commitStateBeforeChildren):

  • UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.mm:

(WebKit::ScrollingTreeScrollingNodeDelegateIOS::commitStateBeforeChildren):

  • UIProcess/RemoteLayerTree/mac/ScrollingTreeFrameScrollingNodeRemoteMac.cpp:

(WebKit::ScrollingTreeFrameScrollingNodeRemoteMac::commitStateBeforeChildren):

  • UIProcess/RemoteLayerTree/mac/ScrollingTreeOverflowScrollingNodeRemoteMac.cpp:

(WebKit::ScrollingTreeOverflowScrollingNodeRemoteMac::commitStateBeforeChildren):

8:08 AM Changeset in webkit [250490] by Alan Bujtas
  • 6 edits
    2 adds
    1 delete in trunk/Source/WebCore

[LFC][IFC] Remove InlineLayout abstraction layer
https://bugs.webkit.org/show_bug.cgi?id=202352
<rdar://problem/55811532>

Reviewed by Antti Koivisto.

Move InlineLayout functions to InlineFormattingContext. Now inline layout has

  1. InlineFormattingContext -high level layout and preferred width computation, collecting inline content, constructing display boxes
  2. LineLayout -responsible for placing inline content on the current line (partial inline content handling, line breaking etc)
  3. Line -represents an actual line, turns inline content into runs.
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • layout/inlineformatting/InlineFormattingContext.cpp:

(WebCore::Layout::InlineFormattingContext::layoutInFlowContent):
(WebCore::Layout::InlineFormattingContext::lineLayout):
(WebCore::Layout::InlineFormattingContext::computedIntrinsicWidthConstraints):
(WebCore::Layout::InlineFormattingContext::computedIntrinsicWidthForConstraint const):
(WebCore::Layout::InlineFormattingContext::initialConstraintsForLine):
(WebCore::Layout::InlineFormattingContext::setDisplayBoxesForLine):

  • layout/inlineformatting/InlineFormattingContext.h:

(WebCore::Layout::InlineFormattingContext::InlineLayout::layoutState const): Deleted.
(WebCore::Layout::InlineFormattingContext::InlineLayout::formattingContext const): Deleted.
(WebCore::Layout::InlineFormattingContext::InlineLayout::formattingRoot const): Deleted.
(WebCore::Layout::InlineFormattingContext::InlineLayout::formattingState): Deleted.
(WebCore::Layout::InlineFormattingContext::InlineLayout::widthConstraint const): Deleted.

  • layout/inlineformatting/InlineFormattingContextLineLayout.cpp: Removed.
  • layout/inlineformatting/InlineFormattingState.h:

(WebCore::Layout::InlineFormattingState::inlineItems const):

  • layout/inlineformatting/InlineLineLayout.cpp: Added.

(WebCore::Layout::inlineItemWidth):
(WebCore::Layout::LineLayout::LineInput::LineInput):
(WebCore::Layout::LineLayout::UncommittedContent::add):
(WebCore::Layout::LineLayout::UncommittedContent::reset):
(WebCore::Layout::LineLayout::LineLayout):
(WebCore::Layout::LineLayout::commitPendingContent):
(WebCore::Layout::LineLayout::close):
(WebCore::Layout::LineLayout::placeInlineItem):
(WebCore::Layout::LineLayout::layout):

  • layout/inlineformatting/InlineLineLayout.h: Added.

(WebCore::Layout::LineLayout::formattingContext const):
(WebCore::Layout::LineLayout::UncommittedContent::runs):
(WebCore::Layout::LineLayout::UncommittedContent::isEmpty const):
(WebCore::Layout::LineLayout::UncommittedContent::size const):
(WebCore::Layout::LineLayout::UncommittedContent::width const):

1:56 AM Changeset in webkit [250489] by zandobersek@gmail.com
  • 2 edits
    4 adds in trunk/Source/WebCore

[Nicosia] Add overflow, overflow proxy node implementations
https://bugs.webkit.org/show_bug.cgi?id=202306

Reviewed by Carlos Garcia Campos.

Add the ScrollingTreeOverflowScrollProxyNode and
ScrollingTreeOverflowScrollingNodeNicosia classes, implementing the
missing overlfow node types. Both implementations are based on the
corresponsing classes for Cocoa/Mac platforms and should ideally
share most of the platform-agnostic logic.

  • SourcesWPE.txt:
  • page/scrolling/nicosia/ScrollingTreeOverflowScrollProxyNode.cpp: Added.

(WebCore::ScrollingTreeOverflowScrollProxyNode::create):
(WebCore::ScrollingTreeOverflowScrollProxyNode::ScrollingTreeOverflowScrollProxyNode):
(WebCore::ScrollingTreeOverflowScrollProxyNode::commitStateBeforeChildren):
(WebCore::ScrollingTreeOverflowScrollProxyNode::applyLayerPositions):
(WebCore::ScrollingTreeOverflowScrollProxyNode::dumpProperties const):

  • page/scrolling/nicosia/ScrollingTreeOverflowScrollProxyNode.h: Added.
  • page/scrolling/nicosia/ScrollingTreeOverflowScrollingNodeNicosia.cpp: Added.

(WebCore::ScrollingTreeOverflowScrollingNodeNicosia::create):
(WebCore::ScrollingTreeOverflowScrollingNodeNicosia::ScrollingTreeOverflowScrollingNodeNicosia):
(WebCore::ScrollingTreeOverflowScrollingNodeNicosia::commitStateAfterChildren):
(WebCore::ScrollingTreeOverflowScrollingNodeNicosia::adjustedScrollPosition const):
(WebCore::ScrollingTreeOverflowScrollingNodeNicosia::repositionScrollingLayers):
(WebCore::ScrollingTreeOverflowScrollingNodeNicosia::handleWheelEvent):

  • page/scrolling/nicosia/ScrollingTreeOverflowScrollingNodeNicosia.h: Added.

Sep 28, 2019:

10:16 PM Changeset in webkit [250488] by Said Abou-Hallawa
  • 22 edits
    2 adds in trunk

Crash when removing the target element while animating its attributes
https://bugs.webkit.org/show_bug.cgi?id=202247

Reviewed by Darin Adler.

Source/WebCore:

If SMIL is animating a CSS attribute, there is a chance the animation is
ended while it is being started or progressed. For that reason, the member
SVGAnimateElementBase::m_animator has to be made RefPtr and it has to be
be protected in resetAnimatedType() and calculateAnimatedValue().

While SMILTimeContainer::updateAnimations() is calling progress() for the
scheduled animation elements, SMILTimeContainer::unschedule() might get
called if processing an animation causes events to be dispatched. For that
reason we need to copy the scheduled animations Vector before processing
them so we avoid changing the Vector while looping through its items.

Remove the guard SMILTimeContainer::m_preventScheduledAnimationsChanges
which was added in r129670 for debugging purposes. In some situations,
the scheduled animations map could be modified out from under some of the
functions of SMILTimeContainer.

Test: svg/animations/animate-and-remove-target-element.html

  • svg/SVGAnimateElementBase.cpp:

(WebCore::SVGAnimateElementBase::resetAnimatedType):
(WebCore::SVGAnimateElementBase::calculateAnimatedValue):

  • svg/SVGAnimateElementBase.h:
  • svg/SVGElement.cpp:

(WebCore::SVGElement::createAnimator):

  • svg/SVGElement.h:
  • svg/animation/SMILTimeContainer.cpp:

(WebCore::SMILTimeContainer::schedule):
(WebCore::SMILTimeContainer::unschedule):
(WebCore::SMILTimeContainer::setElapsed):
(WebCore::SMILTimeContainer::sortByPriority):
(WebCore::SMILTimeContainer::processAnimations):
(WebCore::SMILTimeContainer::processScheduledAnimations):
(WebCore::SMILTimeContainer::updateAnimations):
(WebCore::SMILTimeContainer::~SMILTimeContainer): Deleted.

  • svg/animation/SMILTimeContainer.h:
  • svg/animation/SVGSMILElement.cpp:

(WebCore::SVGSMILElement::calculateNextProgressTime const):

  • svg/properties/SVGAnimatedPropertyAccessorImpl.h:
  • svg/properties/SVGAnimatedPropertyAnimatorImpl.h:
  • svg/properties/SVGAnimatedPropertyPairAccessorImpl.h:
  • svg/properties/SVGAnimatedPropertyPairAnimator.h:
  • svg/properties/SVGAnimatedPropertyPairAnimatorImpl.h:
  • svg/properties/SVGAttributeAnimator.h:
  • svg/properties/SVGMemberAccessor.h:

(WebCore::SVGMemberAccessor::createAnimator const):

  • svg/properties/SVGPrimitivePropertyAnimator.h:

(WebCore::SVGPrimitivePropertyAnimator::create):

  • svg/properties/SVGPropertyAnimatorFactory.h:

(WebCore::SVGPropertyAnimatorFactory::createAnimator):

  • svg/properties/SVGPropertyOwnerRegistry.h:
  • svg/properties/SVGPropertyRegistry.h:
  • svg/properties/SVGValuePropertyAnimatorImpl.h:
  • svg/properties/SVGValuePropertyListAnimatorImpl.h:

LayoutTests:

  • svg/animations/animate-and-remove-target-element-expected.txt: Added.
  • svg/animations/animate-and-remove-target-element.html: Added.
6:59 PM Changeset in webkit [250487] by Alan Bujtas
  • 6 edits in trunk/Source/WebCore

[LFC][IFC] Move horizontal alignment to Line
https://bugs.webkit.org/show_bug.cgi?id=202351
<rdar://problem/55810139>

Reviewed by Antti Koivisto.

Line should be able to finalize the run placement including horizontal alignment.

  • layout/Verification.cpp:

(WebCore::Layout::outputMismatchingSimpleLineInformationIfNeeded):

  • layout/inlineformatting/InlineFormattingContextLineLayout.cpp:

(WebCore::Layout::LineInput::LineInput):
(WebCore::Layout::LineLayout::LineLayout):
(WebCore::Layout::InlineFormattingContext::InlineLayout::layout):
(WebCore::Layout::InlineFormattingContext::InlineLayout::computedIntrinsicWidth const):

  • layout/inlineformatting/InlineLine.cpp:

(WebCore::Layout::Line::Line):
(WebCore::Layout::Line::isVisuallyEmpty const):
(WebCore::Layout::Line::close):
(WebCore::Layout::Line::verticalAlignContent):
(WebCore::Layout::Line::horizontalAlignContent):
(WebCore::Layout::Line::appendInlineContainerStart):
(WebCore::Layout::Line::appendTextContent):
(WebCore::Layout::Line::appendNonReplacedInlineBox):
(WebCore::Layout::Line::appendHardLineBreak):
(WebCore::Layout::Line::inlineItemContentHeight const):

  • layout/inlineformatting/InlineLine.h:
5:48 PM Changeset in webkit [250486] by Adrian Perez de Castro
  • 2 edits in trunk/Source/JavaScriptCore

[GTK][WPE] Fix non-unified build issue caused by r250440
https://bugs.webkit.org/show_bug.cgi?id=202349

Reviewed by Mark Lam.

  • dfg/DFGOSRExit.cpp: Add missing inclusion of the BytecodeUseDef.h header.
5:26 PM Changeset in webkit [250485] by Wenson Hsieh
  • 5 edits in trunk/Source/WebCore

[IDL] Support record<DOMString, *Callback> in bindings
https://bugs.webkit.org/show_bug.cgi?id=202326

Reviewed by Sam Weinig.

Currently, IDLRecord's converter assumes that the value type (template argument V) can be converted by passing
in only an ExecState and the JSValue, since it calls auto typedValue = Converter<V>::convert(state, subValue).
However, IDLCallbackFunctions additionally require the JSDOMGlobalObject (see JSDOMConverterCallbacks.h). This
results in a compilation error in generated code, when attempting to convert the record.

To fix this, teach Converter<IDLRecord<K, V>> to accept three arguments (the ExecState, value, and global
object) in the case where V requires the global object. Additionally, let the bindings generator know that
JSValue to native object conversion requires the global object, by returning whether or not the value type of
the IDL record requires the global object, in the case where the given type is a record.

  • bindings/js/JSDOMConvertRecord.h:
  • bindings/scripts/CodeGeneratorJS.pm:

(JSValueToNativeDOMConvertNeedsGlobalObject):

  • bindings/scripts/test/JS/JSTestObj.cpp:

Test this scenario by augmenting TestObj.idl with record<DOMString, VoidCallback>.

(WebCore::jsTestObjStringVoidCallbackRecordAttrGetter):
(WebCore::jsTestObjStringVoidCallbackRecordAttr):
(WebCore::setJSTestObjStringVoidCallbackRecordAttrSetter):
(WebCore::setJSTestObjStringVoidCallbackRecordAttr):

  • bindings/scripts/test/TestObj.idl:
4:58 PM Changeset in webkit [250484] by Alan Bujtas
  • 4 edits in trunk/Source/WebCore

[LFC][IFC] Line::InitialConstraints's heightAndBaseline should be optional
https://bugs.webkit.org/show_bug.cgi?id=202348

Reviewed by Antti Koivisto.

Vertical properties are undefined while computing the preferred width.

  • layout/inlineformatting/InlineFormattingContextLineLayout.cpp:

(WebCore::Layout::LineInput::LineInput):
(WebCore::Layout::InlineFormattingContext::InlineLayout::computedIntrinsicWidth const):

  • layout/inlineformatting/InlineLine.cpp:

(WebCore::Layout::Line::Line):

  • layout/inlineformatting/InlineLine.h:
2:38 PM Changeset in webkit [250483] by Chris Dumez
  • 3 edits in trunk/Source/WebCore

[Experiment][iOS] Add temporary HTTP header to distinguish iPads for requests to Google
https://bugs.webkit.org/show_bug.cgi?id=202335
<rdar://problem/55790994>

Reviewed by Maciej Stachowiak.

  • loader/cache/CachedResourceLoader.cpp:

(WebCore::CachedResourceLoader::requestResource):

  • platform/network/HTTPHeaderNames.in:
7:30 AM Changeset in webkit [250482] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[LFC][IFC] Line::Box should have a const public interface
https://bugs.webkit.org/show_bug.cgi?id=202336
<rdar://problem/55798628>

Reviewed by Antti Koivisto.

Clean up Line::Box interface.

  • layout/inlineformatting/InlineLine.cpp:

(WebCore::Layout::Line::close):

  • layout/inlineformatting/InlineLine.h:

(WebCore::Layout::Line::Run::displayRun const):
(WebCore::Layout::Line::Run::isVisuallyEmpty const):
(WebCore::Layout::Line::Run::expand):
(WebCore::Layout::Line::Run::displayRun): Deleted.

12:32 AM Changeset in webkit [250481] by mitz@apple.com
  • 1 delete in releases/Apple/iOS 13.1.1

Removed the iOS 13.1.1 release tag.

12:30 AM Changeset in webkit [250480] by mitz@apple.com
  • 8 copies
    1 add in releases/Apple/iOS 13.1.1

Added a tag for iOS 13.1.1.

Sep 27, 2019:

8:40 PM Changeset in webkit [250479] by ysuzuki@apple.com
  • 9 edits
    1 add in trunk

[JSC] Keep JSString::value(ExecState*)'s result as String instead of const String&
https://bugs.webkit.org/show_bug.cgi?id=202330

Reviewed by Saam Barati.

JSTests:

  • stress/to-lower-case-gc-stress.js: Added.

Source/JavaScriptCore:

In toLocaleLowerCase and toLocaleUpperCase, we get const String& from JSString* and use it.
But if this string is newly created one in toLocaleLowerCase and toLocaleUpperCase (like, passing a number, and number.toString() is called
in C++), after getting const String&, our C++ code potentially does not have any reference to the owner of this const String&. So, this
JSString* can be collected by GC, while const String& is used. This makes const String& destroyed, and causes crash.

In this patch, we receive it as String instead of const String& to ref it. This ensures that this string is live even if the owner is collected.
I grepped the source code and make this changes conservatively to places which looks dangerous. And I added error checks more after calling value(exec).

In this patch, I didn't introduce the change like that: JSString::value(ExecState*) returns String instead of const String&. Some of places are
really performance sensitive and we want to use the current behavior when we can ensure the owners are alive. We could figure out these points, and we
can change the default behavior of JSString::value function to returning String. But for now, I plan it as a future work.

  • dfg/DFGOperations.cpp:
  • jsc.cpp:

(GlobalObject::moduleLoaderImportModule):

  • runtime/DateConstructor.cpp:

(JSC::constructDate):

  • runtime/JSCJSValueInlines.h:

(JSC::JSValue::equalSlowCaseInline):

  • runtime/RegExpMatchesArray.h:

(JSC::createRegExpMatchesArray):

  • runtime/StringPrototype.cpp:

(JSC::toLocaleCase):
(JSC::stringProtoFuncToLocaleLowerCase):
(JSC::stringProtoFuncToLocaleUpperCase):

  • tools/JSDollarVM.cpp:

(JSC::functionCreateBuiltin):

6:21 PM Changeset in webkit [250478] by Alan Coon
  • 4 edits in branches/safari-608-branch/Source/WebCore

Cherry-pick r250441. rdar://problem/55801089

[iOS] Vimeo fails to AirPlay in desktop mode
https://bugs.webkit.org/show_bug.cgi?id=202322

Reviewed by Eric Carlson.

Add a Quirk which opts Vimeo out of the preload=auto restriction, and allows their
second video element containing a HLS stream to correctly start AirPlaying when the
system route changes.

  • html/HTMLMediaElement.cpp: (WebCore::HTMLMediaElement::finishInitialization):
  • page/Quirks.cpp: (WebCore::Quirks::needsPreloadAutoQuirk const):
  • page/Quirks.h:

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

6:20 PM Changeset in webkit [250477] by Alan Coon
  • 2 edits in branches/safari-608-branch/Source/JavaScriptCore

Cherry-pick r250440. rdar://problem/55800893

OSR exit shouldn't bother updating get_by_id array profiles that have changed modes
https://bugs.webkit.org/show_bug.cgi?id=202324
<rdar://problem/52669110>

Reviewed by Yusuke Suzuki.

This is an optimization that avoids polluting the array profile.

  • dfg/DFGOSRExit.cpp: (JSC::DFG::OSRExit::executeOSRExit): (JSC::DFG::OSRExit::compileExit):

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

6:20 PM Changeset in webkit [250476] by Alan Coon
  • 3 edits
    2 adds in branches/safari-608-branch

Cherry-pick r250432. rdar://problem/55801091

[iOS]: When inserting a photo and then inserting auto-corrected text, the photo is removed
https://bugs.webkit.org/show_bug.cgi?id=202294

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2019-09-27
Reviewed by Wenson Hsieh.

Source/WebKit:

WebPage::applyAutocorrectionInternal() calls wordRangeFromPosition() to
calculate the range of the word to be replaced with the auto-corrected
word. But if the text of the range does not match the original text,
applyAutocorrectionInternal() tries to correct the range by moving it
forward such that the length of the text range matches the length of the
original text.

Another case, which should correct the range also, is: the range does not
have a text but it is not collapsed. In this case, we should set the range
back to the selection range so non-text nodes is removed.

  • WebProcess/WebPage/ios/WebPageIOS.mm: (WebKit::WebPage::applyAutocorrectionInternal):

LayoutTests:

  • fast/events/ios/autocorrect-after-image-expected.txt: Added.
  • fast/events/ios/autocorrect-after-image.html: Added.

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

6:00 PM Changeset in webkit [250475] by Alan Coon
  • 1 copy in tags/Safari-608.2.40.1.1

Tag Safari-608.2.40.1.1.

5:59 PM Changeset in webkit [250474] by Alan Coon
  • 1 delete in tags/Safari-608.2.40.1.1

Delete tag.

5:55 PM Changeset in webkit [250473] by Alan Coon
  • 1 copy in tags/Safari-608.2.30.1.1

Tag Safari-608.2.30.1.1.

5:49 PM Changeset in webkit [250472] by Alan Coon
  • 9 edits in branches/safari-608.2.40.1-branch/Source/WebKit

Perform changes to match Safari-608.2.11.1.9 content.

This reverts commit r250166.

5:36 PM Changeset in webkit [250471] by Alan Coon
  • 2 edits in branches/safari-608.2.30.1-branch/Source/WebCore

Cherry-pick r250459. rdar://problem/55797569

[Win] Crash under FontCache::lastResortFallbackFont
https://bugs.webkit.org/show_bug.cgi?id=202325
<rdar://problem/47856730>

Reviewed by Brent Fulgham.

As demonstrated by crash reports, there seems to be cases where we are not able to create a last resort fallback font
on Windows. If all attempts to create a fallback font fail, create a font from the default UI font.

No new tests. I have not been able to reproduce this issue.

  • platform/graphics/win/FontCacheWin.cpp: (WebCore::FontCache::lastResortFallbackFont):

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

5:34 PM Changeset in webkit [250470] by Alan Coon
  • 9 edits in branches/safari-608.2.30.1-branch/Source/WebKit

Perform changes to match Safari-608.2.11.1.9 content.

This commit reverts r250166.

5:22 PM Changeset in webkit [250469] by Alan Coon
  • 1 copy in tags/Safari-608.2.40.1.1

Tag Safari-608.2.40.1.1.

4:51 PM Changeset in webkit [250468] by Alan Coon
  • 7 edits in branches/safari-608.2.40.1-branch/Source

Versioning.

4:41 PM Changeset in webkit [250467] by Alan Coon
  • 1 copy in branches/safari-608.2.40.1-branch

New branch.

3:53 PM Changeset in webkit [250466] by Alan Coon
  • 2 edits in branches/safari-608-branch/Source/WebCore

Cherry-pick r250459. rdar://problem/55797570

[Win] Crash under FontCache::lastResortFallbackFont
https://bugs.webkit.org/show_bug.cgi?id=202325
<rdar://problem/47856730>

Reviewed by Brent Fulgham.

As demonstrated by crash reports, there seems to be cases where we are not able to create a last resort fallback font
on Windows. If all attempts to create a fallback font fail, create a font from the default UI font.

No new tests. I have not been able to reproduce this issue.

  • platform/graphics/win/FontCacheWin.cpp: (WebCore::FontCache::lastResortFallbackFont):

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

3:45 PM Changeset in webkit [250465] by Dewei Zhu
  • 15 edits
    1 add in trunk/Websites/perf.webkit.org

Provide build request status description information on dashboard.
https://bugs.webkit.org/show_bug.cgi?id=199810

Reviewed by Ryosuke Niwa.

Add build request status description to show detailed information for a build and show it in dashboard.
Update SQL for existing instance:

ALTER TABLE build_requests ADD COLUMN IF NOT EXISTS request_status_description varchar(1024) DEFAULT NULL;

  • ReadMe.md: Updated instructions for initializing a database to include running 'migrate-database.sql'.
  • init-database.sql: Added request_status_description column.
  • migrate-database.sql: A file stores migration SQL for existing instance.
  • public/api/build-requests.php: Added support for updating request_status_description.
  • public/include/build-requests-fetcher.php: Exposed statusDescription to API.
  • public/v3/components/test-group-revision-table.js: Added UI for showing build request status detail.

(TestGroupRevisionTable.prototype._renderTable):
(TestGroupRevisionTable.prototype._buildDescriptionCell):
(TestGroupRevisionTable.cssTemplate):

  • public/v3/components/warning-icon.js: Extended warning icon to be able to customize information on hover.

(WarningIcon):
(WarningIcon.prototype.render):

  • public/v3/components/button-base.js: Added a instance method to set button title.

(ButtonBase.prototype.setButtonTitle):

  • public/v3/models/build-request.js: Added 'statusDescription' field.

(BuildRequest):
(BuildRequest.prototype.updateSingleton):
(BuildRequest.prototype.statusDescription):

  • server-tests/api-build-requests-tests.js: Fixed unit tests.
  • server-tests/resources/mock-data.js:

(MockData.set mockTestSyncConfigWithSingleBuilder): Added 'status_description' in buildbot mock data.
(MockData.sampleBuildData):

  • server-tests/resources/test-server.js:

(TestServer.prototype.initDatabase): Added code to execute 'migrate-database.sql' on initialization.

  • server-tests/tools-sync-buildbot-integration-tests.js: Added unit tests.
  • tools/js/buildbot-syncer.js: Added 'statusDescription' field to 'BuildbotBuildEntry'.

(BuildbotBuildEntry.prototype.initialize):
(BuildbotBuildEntry.prototype.statusDescription):

  • tools/js/buildbot-triggerable.js:

(BuildbotTriggerable.prototype._pullBuildbotOnAllSyncers):

  • unit-tests/buildbot-syncer-tests.js: Added test code for BuildbotBuildEntry.statusDescription.
3:42 PM Changeset in webkit [250464] by Chris Dumez
  • 13 edits
    2 adds in trunk

Pages using WebGLRenderingContext fail to enter the back/forward cache
https://bugs.webkit.org/show_bug.cgi?id=202318
<rdar://problem/55783612>

Reviewed by Tim Horton.

Source/WebCore:

Allow pages with a WebGLRenderingContext to enter the back/forward cache by updating the
implementation to use SuspendableTimers to fire JS events. This guarantees that no events
will be fired (and thus no JS will run) while in the page cache.

This was preventing some of the pages on weather.com and facebook.com from entering the
back/forward cache.

Test: fast/canvas/webgl/canvas-webgl-page-cache.html

  • dom/DocumentEventQueue.cpp:
  • html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::WebGLRenderingContextBase::WebGLRenderingContextBase):
(WebCore::WebGLRenderingContextBase::canSuspendForDocumentSuspension const):
(WebCore::WebGLRenderingContextBase::suspend):
(WebCore::WebGLRenderingContextBase::resume):
(WebCore::WebGLRenderingContextBase::dispatchContextLostEvent):
(WebCore::WebGLRenderingContextBase::maybeRestoreContext):
(WebCore::WebGLRenderingContextBase::dispatchContextChangedNotification):
(WebCore::WebGLRenderingContextBase::dispatchContextChangedEvent):

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

(WebCore::DOMTimer::DOMTimer):

  • page/DOMTimer.h:
  • page/SuspendableTimer.cpp:

(WebCore::SuspendableTimerBase::SuspendableTimerBase):
(WebCore::SuspendableTimerBase::hasPendingActivity const):
(WebCore::SuspendableTimerBase::stop):
(WebCore::SuspendableTimerBase::suspend):
(WebCore::SuspendableTimerBase::resume):
(WebCore::SuspendableTimerBase::canSuspendForDocumentSuspension const):
(WebCore::SuspendableTimerBase::didStop):
(WebCore::SuspendableTimerBase::cancel):
(WebCore::SuspendableTimerBase::startRepeating):
(WebCore::SuspendableTimerBase::startOneShot):
(WebCore::SuspendableTimerBase::repeatInterval const):
(WebCore::SuspendableTimerBase::augmentFireInterval):
(WebCore::SuspendableTimerBase::augmentRepeatInterval):
(WebCore::SuspendableTimer::activeDOMObjectName const):

  • page/SuspendableTimer.h:

Source/WebKitLegacy/win:

  • WebView.cpp:

(WindowCloseTimer::WindowCloseTimer):
(WindowCloseTimer::contextDestroyed):

  • WebView.h:

LayoutTests:

Add layout test coverage.

  • fast/canvas/webgl/canvas-webgl-page-cache-expected.txt: Added.
  • fast/canvas/webgl/canvas-webgl-page-cache.html: Added.
3:15 PM Changeset in webkit [250463] by Adrian Perez de Castro
  • 8 edits in trunk/Source

[GTK][WPE] Fixes for non-unified builds after r249714
https://bugs.webkit.org/show_bug.cgi?id=202304

Reviewed by Youenn Fablet.

Source/WebCore:

No new tests needed.

  • Modules/websockets/WorkerThreadableWebSocketChannel.cpp: Add missing inclusion of Frame.h

to make the compiler stop complaining about Frame being used without being defined.

  • inspector/InspectorShaderProgram.h: Add missing inclusion of wtf/Variant.h, where

WTF::Monostate is defined; and prefixed the usage with its namespace.

Source/WebKit:

  • NetworkProcess/NetworkLoadChecker.h: Add missing inclusion of the pal/SessionID.h header.
  • NetworkProcess/NetworkResourceLoadMap.cpp: Add missing inclusion of the

NetworkResourceLoader.h header.

  • UIProcess/API/C/WKWebsiteDataStoreConfigurationRef.cpp:

(WKWebsiteDataStoreConfigurationCreate): Add missing namespace to usage of the
WebKit::IsPersistent::Yes value.

  • UIProcess/WebPageProxy.cpp: Add missing inclusion of the LegacyGlobalSettings.h header.
3:15 PM Changeset in webkit [250462] by commit-queue@webkit.org
  • 8 edits
    2 adds in trunk

Support accessibility for <figure> element on iOS.
https://bugs.webkit.org/show_bug.cgi?id=202272
<rdar://problem/54789907>

Patch by Andres Gonzalez <Andres Gonzalez> on 2019-09-27
Reviewed by Chris Fleizach.

Source/WebCore:

Test: accessibility/ios-simulator/figure-element.html

Added a role description for the <figure> element.

  • accessibility/AccessibilityObject.cpp:

(WebCore::AccessibilityObject::roleDescription const):

Tools:

Implemented titleUIElement and roleDescription properties for <figure> elements on iOS.

  • WebKitTestRunner/InjectedBundle/ios/AccessibilityUIElementIOS.mm:

(WTR::AccessibilityUIElement::titleUIElement):
(WTR::AccessibilityUIElement::roleDescription):

LayoutTests:

  • accessibility/ios-simulator/figure-element-expected.txt: Added.
  • accessibility/ios-simulator/figure-element.html: Added.
2:56 PM Changeset in webkit [250461] by timothy_horton@apple.com
  • 4 edits in trunk/Source/WebKit

Adopt new UIWebGeolocationPolicyDecider SPI to pass a view instead of a window
https://bugs.webkit.org/show_bug.cgi?id=202329
<rdar://problem/25963823>

Reviewed by Wenson Hsieh.

  • Platform/spi/ios/UIKitSPI.h:
  • UIProcess/ios/WKGeolocationProviderIOS.mm:

(-[WKGeolocationProviderIOS geolocationAuthorizationGranted]):

  • UIProcess/ios/WKGeolocationProviderIOSObjCSecurityOrigin.mm:

(WebKit::decidePolicyForGeolocationRequestFromOrigin):
Switch to newer SPI that takes a UIView instead of a UIWindow, so that
UIWebGeolocationPolicyDecider can find the correct presenting view controller.

2:52 PM Changeset in webkit [250460] by Alan Bujtas
  • 5 edits in trunk/Source

[iPadOS] Can’t use RalphLauren.com on iPad because hover menus don’t stay up
https://bugs.webkit.org/show_bug.cgi?id=202331
<rdar://problem/55629493>

Reviewed by Tim Horton.

Source/WebCore:

Unfortunately the top level menu items now are ARIA labelled as 'buttons' and that triggers the fast path on content observation.
This patch introduces a quirk on ralphLauren.com to ignore the ARIA labels when checking whether the target node should always click through.

  • page/Quirks.cpp:

(WebCore::Quirks::shouldIgnoreAriaForFastPathContentObservationCheck const):

  • page/Quirks.h:

Source/WebKit:

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::handleSyntheticClick):
(WebKit::nodeTriggersFastPath): Deleted.

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

[Win] Crash under FontCache::lastResortFallbackFont
https://bugs.webkit.org/show_bug.cgi?id=202325
<rdar://problem/47856730>

Reviewed by Brent Fulgham.

As demonstrated by crash reports, there seems to be cases where we are not able to create a last resort fallback font
on Windows. If all attempts to create a fallback font fail, create a font from the default UI font.

No new tests. I have not been able to reproduce this issue.

  • platform/graphics/win/FontCacheWin.cpp:

(WebCore::FontCache::lastResortFallbackFont):

1:57 PM Changeset in webkit [250458] by achristensen@apple.com
  • 20 edits in trunk

Move shouldUseTestingNetworkSession from NetworkProcessCreationParameters to NetworkSessionCreationParameters
https://bugs.webkit.org/show_bug.cgi?id=202327

Reviewed by Tim Horton.

Source/WebKit:

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::initializeNetworkProcess):
(WebKit::NetworkProcess::ensureSession):

  • NetworkProcess/NetworkProcess.h:
  • NetworkProcess/NetworkProcessCreationParameters.cpp:

(WebKit::NetworkProcessCreationParameters::encode const):
(WebKit::NetworkProcessCreationParameters::decode):

  • NetworkProcess/NetworkProcessCreationParameters.h:
  • NetworkProcess/NetworkSession.cpp:

(WebKit::NetworkSession::NetworkSession):

  • NetworkProcess/NetworkSessionCreationParameters.cpp:

(WebKit::NetworkSessionCreationParameters::encode const):
(WebKit::NetworkSessionCreationParameters::decode):

  • NetworkProcess/NetworkSessionCreationParameters.h:
  • NetworkProcess/cocoa/NetworkProcessCocoa.mm:

(WebKit::NetworkProcess::platformInitializeNetworkProcessCocoa):

  • NetworkProcess/curl/RemoteNetworkingContextCurl.cpp:

(WebKit::RemoteNetworkingContext::ensureWebsiteDataStoreSession):

  • NetworkProcess/mac/RemoteNetworkingContext.mm:

(WebKit::RemoteNetworkingContext::ensureWebsiteDataStoreSession):

  • NetworkProcess/soup/RemoteNetworkingContextSoup.cpp:

(WebKit::RemoteNetworkingContext::ensureWebsiteDataStoreSession):

  • UIProcess/API/C/WKWebsiteDataStoreConfigurationRef.cpp:

(WKWebsiteDataStoreConfigurationSetPerOriginStorageQuota):
(WKWebsiteDataStoreConfigurationSetNetworkCacheSpeculativeValidationEnabled):
(WKWebsiteDataStoreConfigurationGetTestingSessionEnabled):
(WKWebsiteDataStoreConfigurationSetTestingSessionEnabled):

  • UIProcess/API/C/WKWebsiteDataStoreConfigurationRef.h:
  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::ensureNetworkProcess):

  • UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:

(WebKit::WebsiteDataStore::parameters):

  • UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp:

(WebKit::WebsiteDataStoreConfiguration::copy):

  • UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h:

(WebKit::WebsiteDataStoreConfiguration::testingSessionEnabled const):
(WebKit::WebsiteDataStoreConfiguration::setTestingSessionEnabled):

Tools:

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::websiteDataStore):

1:55 PM Changeset in webkit [250457] by achristensen@apple.com
  • 6 edits in trunk/Source/WebKit

Move legacy custom protocol registration from process pool to NetworkProcessProxy
https://bugs.webkit.org/show_bug.cgi?id=202315

Reviewed by Tim Horton.

Legacy custom protocol registration is a global thing, which is why it's legacy and we're trying to get rid of it.
In the meantime, we don't want it to be in the set of things the NetworkProcess depends on the WebProcessPool for, which should be an empty set.

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::ensureNetworkProcess):
(WebKit::WebProcessPool::registerGlobalURLSchemeAsHavingCustomProtocolHandlers):
(WebKit::WebProcessPool::unregisterGlobalURLSchemeAsHavingCustomProtocolHandlers):
(WebKit::WebProcessPool::registerSchemeForCustomProtocol): Deleted.
(WebKit::WebProcessPool::unregisterSchemeForCustomProtocol): Deleted.

  • UIProcess/WebProcessPool.h:
1:49 PM Changeset in webkit [250456] by achristensen@apple.com
  • 5 edits in trunk/Source/WebKit

Layout Test http/tests/cache-storage/cache-records-persistency.https.html is failing
https://bugs.webkit.org/show_bug.cgi?id=202323

Reviewed by Tim Horton.

This reverts most of r250351.
It turns out NetworkProcessProxy::addSession has some side effects in the UIProcess that are useful for NetworkProcess resumption after crashes. Let's keep that.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::initializeNetworkProcess):

  • NetworkProcess/NetworkProcessCreationParameters.cpp:

(WebKit::NetworkProcessCreationParameters::encode const):
(WebKit::NetworkProcessCreationParameters::decode):

  • NetworkProcess/NetworkProcessCreationParameters.h:
  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::ensureNetworkProcess):

1:38 PM Changeset in webkit [250455] by jiewen_tan@apple.com
  • 2 edits in trunk/Source/WebCore

Unreviewed, rolling out r250397.

caused failure on iOS 13

Reverted changeset:

"REGRESSION: [ Catalina WK2 ] http/wpt/webauthn/public-key-
credential-create-success-u2f.https.html is failing"
https://bugs.webkit.org/show_bug.cgi?id=201620
https://trac.webkit.org/changeset/250397

1:25 PM Changeset in webkit [250454] by Alan Coon
  • 4 edits in branches/safari-608-branch

Cherry-pick r250401. rdar://problem/55770702

ContextMenu on a link in an email no longer shows web preview
https://bugs.webkit.org/show_bug.cgi?id=201120
<rdar://54353617>

Reviewed by Wenson Hsieh.

Source/WebKit:

Only go down the image path if we are not also a link.

  • UIProcess/ios/WKContentViewInteraction.mm: (-[WKContentView continueContextMenuInteraction:]):

Tools:

Test context menus on a link that is also an image.

  • TestWebKitAPI/Tests/WebKitCocoa/ContextMenus.mm: (contextMenuWebViewDriver): (-[TestContextMenuImageWithoutConfigurationUIDelegate webView:contextMenuConfigurationForElement:completionHandler:]): (-[TestContextMenuImageWithoutConfigurationUIDelegate webView:contextMenuWillPresentForElement:]): (-[TestContextMenuImageWithoutConfigurationUIDelegate webView:contextMenuForElement:willCommitWithAnimator:]): (-[TestContextMenuImageWithoutConfigurationUIDelegate webView:contextMenuDidEndForElement:]): (TEST):

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

1:25 PM Changeset in webkit [250453] by Alan Coon
  • 4 edits
    4 adds in branches/safari-608-branch

Cherry-pick r250392. rdar://problem/55770703

[iOS 13] Tapping on a non-editable text selection should toggle callout bar visibility instead of clearing selection
https://bugs.webkit.org/show_bug.cgi?id=202254
<rdar://problem/54410263>

Reviewed by Megan Gardner.

Source/WebKit:

In iOS 13, tapping a text selection should toggle callout bar visibility (i.e. "selection commands" in UIKit).
This currently does not work for non-editable text, since the synthetic click gesture simultaneously fires
alongside the text interaction assistant's non-editable tap gesture, which dispatches a click to the page which
then clears the selection.

To remedy this and match platform behavior, we avoid recognizing clicks that occur over the text selection, but
only in the case where the bounding rect of the text selection doesn't cover a large portion of the visible
content rect of the web view. This ensures that the user doesn't get stuck in a state where it's impossible to
dismiss a very large text selection (e.g. after selecting all the content on the page).

Tests: editing/selection/ios/clear-selection-after-tap-in-large-selected-non-editable-text.html

editing/selection/ios/toggle-callout-bar-after-tap-in-selected-non-editable-text.html

  • UIProcess/ios/WKContentViewInteraction.mm: (-[WKContentView _shouldToggleSelectionCommandsAfterTapAt:]):

Check the last known selection rects (on _lastSelectionDrawingInfo) to see if the tapped point lies within at
least one of the selection rects.

(-[WKContentView gestureRecognizerShouldBegin:]):

LayoutTests:

  • editing/selection/ios/clear-selection-after-tap-in-large-selected-non-editable-text-expected.txt: Added.
  • editing/selection/ios/clear-selection-after-tap-in-large-selected-non-editable-text.html: Added.

Add a new layout test to verify that when tapping in a text selection that encompasses the entire page, we allow
the tap to dismiss the selection instead of toggling callout bar visibility.

  • editing/selection/ios/toggle-callout-bar-after-tap-in-selected-non-editable-text-expected.txt: Added.
  • editing/selection/ios/toggle-callout-bar-after-tap-in-selected-non-editable-text.html: Added.

Add another layout test to verify that when tapping inside a text selection, the callout bar is toggled, and
when tapping outside the selected text, the selection is dismissed.

  • resources/ui-helper.js: (window.UIHelper.async.waitForSelectionToAppear): (window.UIHelper.async.waitForSelectionToDisappear):

New helper methods to wait for selection rects to appear or disappear.

(window.UIHelper):

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

1:25 PM Changeset in webkit [250452] by Alan Coon
  • 2 edits in branches/safari-608-branch/Tools

Cherry-pick r250391. rdar://problem/55770728

TestWebKitAPI.WebKit.ReloadWithDifferingInitialScale is failing consistently
https://bugs.webkit.org/show_bug.cgi?id=202273

Reviewed by Aakash Jain.

The content width scaling limits added in r250361 prevent this test from scaling down the content width (2000px
wide) to fit the viewport (375px). To avoid this issue, change the content width from 2000px to 1500px, which is
still a very wide content width for a web page.

  • TestWebKitAPI/Tests/WebKitCocoa/ReloadWithDifferingInitialScale.mm:

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

1:25 PM Changeset in webkit [250451] by Alan Coon
  • 2 edits in branches/safari-608-branch/Source/WebKitLegacy/win

Cherry-pick r250374. rdar://problem/55770710

Unreviewed build fix for Windows ports.
https://bugs.webkit.org/show_bug.cgi?id=202125
<rdar://problem/14944104>

  • WebCoreSupport/WebEditorClient.h: Added missing subFrameScrollPositionChanged.

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

1:25 PM Changeset in webkit [250450] by Truitt Savell
  • 2 edits in trunk/LayoutTests

fast/images/async-image-multiple-clients-repaint.html
https://bugs.webkit.org/show_bug.cgi?id=202328

Unreviewed test gardening

  • platform/ios/TestExpectations:
1:25 PM Changeset in webkit [250449] by Alan Coon
  • 13 edits
    2 adds in branches/safari-608-branch

Cherry-pick r250365. rdar://problem/55770710

Update selections after scrolling for iframes and hide selections while iframes and overflow scrolls are scrolling.
https://bugs.webkit.org/show_bug.cgi?id=202125

Reviewed by Tim Horton.

Source/WebCore:

Test: editing/selection/ios/update-selection-after-iframe-scroll.html

When we end scrolling, make sure that iframes get a final update to ensure that the
selection is in the correct position. Pipe that to WebKit/UIProcess via
frame specific plath.

  • loader/EmptyClients.cpp:
  • page/EditorClient.h:
  • page/scrolling/AsyncScrollingCoordinator.cpp: (WebCore::AsyncScrollingCoordinator::updateScrollPositionAfterAsyncScroll):

Source/WebKit:

Add additional calls into UIKit differentiate between main frame scrolling and overflow/iframe scrolling.
Add piping for iframe specific scrolling.

  • Platform/spi/ios/UIKitSPI.h:
  • UIProcess/ios/WKContentViewInteraction.mm: (-[WKContentView _willStartScrollingOrZooming]): (-[WKContentView _didEndScrollingOrZooming]):
  • WebProcess/WebCoreSupport/WebEditorClient.cpp: (WebKit::WebEditorClient::subFrameScrollPositionChanged):
  • WebProcess/WebCoreSupport/WebEditorClient.h:
  • WebProcess/WebCoreSupport/ios/WebEditorClientIOS.mm: (WebKit::WebEditorClient::subFrameScrollPositionChanged):

Source/WebKitLegacy/mac:

Filling out unused functions needed for new fix.

  • WebCoreSupport/WebEditorClient.h:

LayoutTests:

Test that an iframe selection is updated after a scroll is completed.

  • editing/selection/ios/update-selection-after-iframe-scroll-expected.txt: Added.
  • editing/selection/ios/update-selection-after-iframe-scroll.html: Added.

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

1:25 PM Changeset in webkit [250448] by Alan Coon
  • 5 edits
    2 adds in branches/safari-608-branch

Cherry-pick r250361. rdar://problem/55770728

Page temporarily jumps to an excessively small viewport scale while loading usatoday.com
https://bugs.webkit.org/show_bug.cgi?id=202224
<rdar://problem/52906640>

Reviewed by Tim Horton.

Source/WebCore:

On some pages (e.g. usatoday.com), the content width of the page temporarily becomes very large during page
load. This causes a couple of viewport scaling behaviors (notably, the existing shrink-to-fit heuristic in
ViewportConfiguration::initialScaleFromSize, as well as the new iPad-specific content-aware shrink-to-fit
heuristic in WebPage::immediatelyShrinkToFitContent) to cause the page to shrink down excessively in an attempt
to fit all the content to the viewport. This causes a very ugly flash as the page appears zoomed out initially
during page load, before zooming back in.

To fix this, we add some sanity checks to these viewport scaling heuristics. In ViewportConfiguration's
initialScaleFromSize method, in the codepath where an initial scale is not specified, we always scale to fit the
contents of the page; instead, detect the case where the content width is enormous (with a threshold arbitrarily
chosen to be 1920) and fall back to the scaling to fit the viewport's width, if such a width has been explicitly
set. This ensures that we avoid excessive shrinking in the case where content is extremely wide, but also that
we do scale the viewport down to fit all the content in the case where the content isn't extremely wide (e.g. on
daringfireball.com).

See WebKit ChangeLog for more detail.

Test: fast/viewport/ios/shrink-to-fit-large-content-width.html

  • page/ViewportConfiguration.cpp: (WebCore::ViewportConfiguration::initialScaleFromSize const):

Source/WebKit:

Tweaks the content-aware shrink-to-fit algorithm to bail in the case where the content width is extremely large,
such that it bails instead of attempting to fit the entire content of the page. See WebCore ChangeLog for more
details.

  • WebProcess/WebPage/ios/WebPageIOS.mm: (WebKit::WebPage::immediatelyShrinkToFitContent):

LayoutTests:

Adds a new layout test to verify that when the content width of the page is excessively large and an explicit
viewport width is specified, we don't attempt to zoom out to fit the larger content width, and instead zoom to
fit the explicit viewport width.

  • fast/viewport/ios/shrink-to-fit-large-content-width-expected.txt: Added.
  • fast/viewport/ios/shrink-to-fit-large-content-width.html: Added.

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

1:25 PM Changeset in webkit [250447] by Alan Coon
  • 8 edits
    9 adds in branches/safari-608-branch

Cherry-pick r250315. rdar://problem/55770706

[iPadOs] The second click event is missing on double tap when dblclick handler is not present
https://bugs.webkit.org/show_bug.cgi?id=202006
<rdar://problem/51706828>

Reviewed by Wenson Hsieh.

Source/WebKit:

While double tapping,

  1. the first tap triggers a click event through the normal _singleTapIdentified/_singleTapRecognized codepath.
  2. and the second tap should trigger either a second single click event or a second single click followed by a dblclick event when dblclick handler is present. However the second click is dropped on the floor when the node under the cursor does not have a dblclick handler (see handleDoubleTapForDoubleClickAtPoint()) -so we end up sending one click event.

This patch fixes this case by sending the second tap through the normal single tap flow when the dblclick handler is not present.

  • Shared/ios/InteractionInformationAtPosition.h:
  • Shared/ios/InteractionInformationAtPosition.mm: (WebKit::InteractionInformationAtPosition::encode const): (WebKit::InteractionInformationAtPosition::decode):
  • UIProcess/ios/WKContentViewInteraction.h:
  • UIProcess/ios/WKContentViewInteraction.mm: (-[WKContentView setupInteraction]): (-[WKContentView gestureRecognizerShouldBegin:]): (WebKit::WebPage::positionInformation): (WebKit::WebPage::requestPositionInformation):

LayoutTests:

  • fast/events/touch/ios/double-tap-for-two-clicks1-expected.txt: Added.
  • fast/events/touch/ios/double-tap-for-two-clicks1.html: Added.
  • fast/events/touch/ios/double-tap-for-two-clicks2-expected.txt: Added.
  • fast/events/touch/ios/double-tap-for-two-clicks2.html: Added.
  • fast/events/touch/ios/double-tap-for-two-clicks3-expected.txt: Added.
  • fast/events/touch/ios/double-tap-for-two-clicks3.html: Added.
  • fast/events/touch/ios/double-tap-for-two-clicks4-expected.txt: Added.
  • fast/events/touch/ios/double-tap-for-two-clicks4.html: Added.
  • fast/events/touch/ios/doubleclick.html: Added.
  • fast/events/touch/resources/doubleClickContent.html: Added.

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

1:25 PM Changeset in webkit [250446] by Alan Coon
  • 7 edits
    11 adds in branches/safari-608-branch

Cherry-pick r250300. rdar://problem/55770718

Mixed content blocking is bypassed for WebSockets in Workers (159726)
https://bugs.webkit.org/show_bug.cgi?id=159726
<rdar://problem/27326438>

Patch by Kate Cheney <Kate Cheney> on 2019-09-24
Reviewed by Brady Eidson.

Source/WebCore:

Tests: http/tests/websocket/tests/hybi/non-document-mixed-content-blocked-http-with-embedded-https-with-embedded-http.html

http/tests/websocket/tests/hybi/non-document-mixed-content-blocked-http-with-embedded-https.html
http/tests/websocket/tests/hybi/non-document-mixed-content-blocked-https-with-embedded-http-with-embedded-https.https.html
http/tests/websocket/tests/hybi/non-document-mixed-content-blocked.https.html

  • Modules/websockets/WebSocket.cpp: (WebCore::WebSocket::connect):
  • Modules/websockets/WorkerThreadableWebSocketChannel.cpp: (WebCore::WorkerThreadableWebSocketChannel::Bridge::connect):
  • loader/MixedContentChecker.cpp: (WebCore::MixedContentChecker::checkForMixedContentInFrameTree):
  • loader/MixedContentChecker.h: Patch to block insecure WebSocket URL connection attempts by Workers on secure pages. If the URL is ws, and any embedding iframe has protocol https, and the context is a Worker, the connection should be blocked.

I was unable to write a test case to hit the case where a document
does not have a frame and tries to communicate via a worker to
connect to a WebSocket because after removing the subframe from its
parent, the subframe is unable to perform a postMessage to a worker
even in the same script execution to tell the worker to connect
to a WebSocket.

LayoutTests:

Added 4 test cases and 2 html resources utilized by the tests.
The cases test the following:

  1. an https page with a worker trying to connect via ws: url --> fails.
  2. an https page embedded in an http page trying to connect via ws :url (through a worker) --> fails.
  3. an http page embedded in an https page with an http top frame trying to connect via an insecure ws url fails.
  4. an https page embedded in an http page embedded in an https page trying to connect to a ws :url via a worker --> fails.
  • http/tests/websocket/tests/hybi/non-document-mixed-content-blocked-http-with-embedded-https-expected.txt: Added.
  • http/tests/websocket/tests/hybi/non-document-mixed-content-blocked-http-with-embedded-https-with-embedded-http-expected.txt: Added.
  • http/tests/websocket/tests/hybi/non-document-mixed-content-blocked-http-with-embedded-https-with-embedded-http.html: Added.
  • http/tests/websocket/tests/hybi/non-document-mixed-content-blocked-http-with-embedded-https.html: Added.
  • http/tests/websocket/tests/hybi/non-document-mixed-content-blocked-https-with-embedded-http-with-embedded-https.https-expected.txt: Added.
  • http/tests/websocket/tests/hybi/non-document-mixed-content-blocked-https-with-embedded-http-with-embedded-https.https.html: Added.
  • http/tests/websocket/tests/hybi/non-document-mixed-content-blocked.https-expected.txt: Added.
  • http/tests/websocket/tests/hybi/non-document-mixed-content-blocked.https.html: Added.
  • http/tests/websocket/tests/hybi/resources/non-document-mixed-content-blocked-embedded-http.https.html: Added.
  • http/tests/websocket/tests/hybi/resources/non-document-mixed-content-blocked-embedding-https.js: Added. (handleConnect.self.postMessage): (handleConnect): (runTests.ws.onopen): (runTests.ws.onerror): (runTests):
  • http/tests/websocket/tests/hybi/resources/non-document-mixed-content-blocked.html: Added.
  • http/tests/websocket/tests/hybi/resources/non-document-mixed-content-blocked.js: Added. (handleConnect.self.postMessage): (handleConnect): (runTests.ws.onopen): (runTests.ws.onerror): (runTests):
  • http/tests/workers/service/resources/serviceworker-websocket-worker.js: (async.doTest): Updated previous test which was hitting the fix to use a wss url

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

1:25 PM Changeset in webkit [250445] by Alan Coon
  • 3 edits in branches/safari-608-branch/Source/WebCore

Cherry-pick r250290. rdar://problem/55770704

AudioTrackPrivateMediaStreamCocoa does not need to manipulate the audio unit in play/pause methods
https://bugs.webkit.org/show_bug.cgi?id=202097
<rdar://problem/51548144>

Reviewed by Eric Carlson.

Instead of manipulating the audio unit in play/pause methods, it is more convenient to do so in audioSamplesAvailable.
play/pause methods only update boolean values that audioSamplesAvailable will read.
In particular, m_autoPlay and m_isPlaying are no longer modified in the audio thread.

Behavior was racy so difficult to reproduce.

  • platform/mediastream/mac/AudioTrackPrivateMediaStreamCocoa.cpp: (WebCore::AudioTrackPrivateMediaStreamCocoa::playInternal): (WebCore::AudioTrackPrivateMediaStreamCocoa::pause): (WebCore::AudioTrackPrivateMediaStreamCocoa::audioSamplesAvailable):
  • platform/mediastream/mac/AudioTrackPrivateMediaStreamCocoa.h:

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

1:25 PM Changeset in webkit [250444] by Alan Coon
  • 2 edits in branches/safari-608-branch/Source/WebKit

Cherry-pick r250197. rdar://problem/55612001

Fix an assertion failure introduced in r250186.

  • UIProcess/Plugins/mac/PluginProcessProxyMac.mm: (WebKit::PluginProcessProxy::platformGetLaunchOptionsWithAttributes): Corrected the assertion.

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

1:25 PM Changeset in webkit [250443] by Alan Coon
  • 4 edits in branches/safari-608-branch/Source/WebKit

Cherry-pick r250186. rdar://problem/55612001

Safari 13 may launch leftover 32-bit plug-in process from Safari 12’s WebKit, which crashes
https://bugs.webkit.org/show_bug.cgi?id=202077
<rdar://problem/55547063>

Reviewed by Sam Weinig.

  • Shared/Plugins/Netscape/mac/NetscapePluginModuleMac.mm: (WebKit::getPluginArchitecture): Removed support for i386 plug-ins.
  • UIProcess/Launcher/mac/ProcessLauncherMac.mm: (WebKit::serviceName): Assert that the requested process type is not Plugin32.
  • UIProcess/Plugins/mac/PluginProcessProxyMac.mm: (WebKit::PluginProcessProxy::platformGetLaunchOptionsWithAttributes): Assert that the plug-in architecture is x86_64.

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

12:56 PM Changeset in webkit [250442] by Alan Coon
  • 18 edits
    1 copy
    2 adds in branches/safari-608-branch

Apply patch. rdar://problem/55608016

12:48 PM Changeset in webkit [250441] by jer.noble@apple.com
  • 4 edits in trunk/Source/WebCore

[iOS] Vimeo fails to AirPlay in desktop mode
https://bugs.webkit.org/show_bug.cgi?id=202322

Reviewed by Eric Carlson.

Add a Quirk which opts Vimeo out of the preload=auto restriction, and allows their
second video element containing a HLS stream to correctly start AirPlaying when the
system route changes.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::finishInitialization):

  • page/Quirks.cpp:

(WebCore::Quirks::needsPreloadAutoQuirk const):

  • page/Quirks.h:
12:30 PM Changeset in webkit [250440] by keith_miller@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

OSR exit shouldn't bother updating get_by_id array profiles that have changed modes
https://bugs.webkit.org/show_bug.cgi?id=202324
<rdar://problem/52669110>

Reviewed by Yusuke Suzuki.

This is an optimization that avoids polluting the array profile.

  • dfg/DFGOSRExit.cpp:

(JSC::DFG::OSRExit::executeOSRExit):
(JSC::DFG::OSRExit::compileExit):

12:25 PM Changeset in webkit [250439] by Alan Bujtas
  • 7 edits in trunk/Source/WebCore

[LFC][IFC] Line::close should merge the text runs.
https://bugs.webkit.org/show_bug.cgi?id=202319
<rdar://problem/55785949>

Reviewed by Antti Koivisto.

Now Line::close returns the final Display::Run list.

  • layout/displaytree/DisplayRect.h:

(WebCore::Display::Rect::expandHorizontally):
(WebCore::Display::Rect::expandVertically):
(WebCore::Display::Rect::expand):

  • layout/displaytree/DisplayRun.h:

(WebCore::Display::Run::expandVertically):
(WebCore::Display::Run::expandHorizontally):

  • layout/inlineformatting/InlineFormattingContextLineLayout.cpp:

(WebCore::Layout::InlineFormattingContext::InlineLayout::createDisplayRuns):

  • layout/inlineformatting/InlineLine.cpp:

(WebCore::Layout::Line::close):

  • layout/inlineformatting/InlineLine.h:

(WebCore::Layout::Line::Run::displayRun):

12:12 PM Changeset in webkit [250438] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebKit

Unreviewed build-fix: wrap the AssertionServicesSPI.h in an IOS_FAMILY check.

  • WebProcess/cocoa/WebProcessCocoa.mm:
12:09 PM Changeset in webkit [250437] by Chris Dumez
  • 5 edits in trunk

Allow pages served over HTTPS with Cache-Control: no-store header to enter the back/forward cache
https://bugs.webkit.org/show_bug.cgi?id=202314
<rdar://problem/55783482>

Reviewed by Alex Christensen.

Source/WebCore:

Allow pages served over HTTPS with Cache-Control: no-store header to enter the back/forward cache.
This was preventing all pages on Facebook.com to enter the back/forward cache.

No new tests, updated existing test.

  • history/PageCache.cpp:

(WebCore::canCacheFrame):

LayoutTests:

Update existing test to reflect behavior change.

  • http/tests/navigation/https-in-page-cache-expected.txt:
  • http/tests/navigation/resources/https-in-page-cache-1.php:
11:32 AM Changeset in webkit [250436] by commit-queue@webkit.org
  • 13 edits in trunk

Non-standard Error properties should not be enumerable
https://bugs.webkit.org/show_bug.cgi?id=198975

Patch by Alexey Shvayka <Alexey Shvayka> on 2019-09-27
Reviewed by Ross Kirsling.

JSTests:

  • ChakraCore/test/Error/NativeErrors_v4.baseline-jsc: Adjust expectations.
  • microbenchmarks/let-for-in.js: Adjust test.
  • test262/expectations.yaml: Mark 6 test cases as passing.

Source/JavaScriptCore:

Define non-standard Error properties "line", "column", and "sourceURL" as non-enumerable to match other engines.

  • runtime/ErrorInstance.cpp:

(JSC::ErrorInstance::materializeErrorInfoIfNeeded):

LayoutTests:

  • inspector/debugger/resources/exception.js: Introduce stringifyError helper.
  • inspector/debugger/setPauseOnExceptions-all.html:
  • inspector/debugger/setPauseOnExceptions-none.html:
  • inspector/debugger/setPauseOnExceptions-uncaught.html:
  • js/exception-properties-expected.txt:
  • js/script-tests/exception-properties.js:
11:28 AM Changeset in webkit [250435] by Alan Coon
  • 1 edit in branches/safari-608-branch/Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm

Unreviewed build fix. rdar://problem/55644650

10:54 AM Changeset in webkit [250434] by Devin Rousso
  • 3 edits in trunk/Source/WebCore

Flaky Test: inspector/canvas/updateShader.html
https://bugs.webkit.org/show_bug.cgi?id=202186
<rdar://problem/55716053>

Reviewed by Joseph Pecoraro.

If the WebGLProgram outlives it's WebGLRenderingContext, the ScriptExecutionContext*
that was provided in the constructor won't be invalidated leading to the bad access crash.

Rather than pass the ScriptExecutionContext* directly, have WebGLProgram inherit from
ContextDestructionObserver so that it can propertly invalidate (and notify Web Inspector)
when the related context is about to be destroyed.

Test: inspector/canvas/updateShader.html

  • html/canvas/WebGLProgram.h:

(WebCore::WebGLProgram::scriptExecutionContext const): Deleted.

  • html/canvas/WebGLProgram.cpp:

(WebCore::WebGLProgram::WebGLProgram):
(WebCore::WebGLProgram::contextDestroyed): Added.

10:45 AM Changeset in webkit [250433] by Alan Coon
  • 1 edit in branches/safari-608-branch/Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm

Unreviewed build fix. rdar://problem/55644650

10:33 AM Changeset in webkit [250432] by commit-queue@webkit.org
  • 3 edits
    2 adds in trunk

[iOS]: When inserting a photo and then inserting auto-corrected text, the photo is removed
https://bugs.webkit.org/show_bug.cgi?id=202294

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2019-09-27
Reviewed by Wenson Hsieh.

Source/WebKit:

WebPage::applyAutocorrectionInternal() calls wordRangeFromPosition() to
calculate the range of the word to be replaced with the auto-corrected
word. But if the text of the range does not match the original text,
applyAutocorrectionInternal() tries to correct the range by moving it
forward such that the length of the text range matches the length of the
original text.

Another case, which should correct the range also, is: the range does not
have a text but it is not collapsed. In this case, we should set the range
back to the selection range so non-text nodes is removed.

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::applyAutocorrectionInternal):

LayoutTests:

  • fast/events/ios/autocorrect-after-image-expected.txt: Added.
  • fast/events/ios/autocorrect-after-image.html: Added.
10:14 AM Changeset in webkit [250431] by wilander@apple.com
  • 6 edits
    2 adds in trunk

Storage Access API: document.hasStorageAccess() should return false by default
https://bugs.webkit.org/show_bug.cgi?id=202281
<rdar://problem/55718526>

Reviewed by Alex Christensen.

document.hasStorageAccess() should return false by default so that it only
returns true if the context has asked for and been granted storage access.

Source/WebKit:

  • NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:

(WebKit::ResourceLoadStatisticsDatabaseStore::hasStorageAccess):

  • NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp:

(WebKit::ResourceLoadStatisticsMemoryStore::hasStorageAccess):

LayoutTests:

  • http/tests/storageAccess/has-storage-access-false-by-default-expected.txt: Added.
  • http/tests/storageAccess/has-storage-access-false-by-default.html: Added.
  • platform/ios/TestExpectations:

The new test is marked as [ Pass ].

  • platform/mac-wk2/TestExpectations:

The new test is marked as [ Pass ].

9:56 AM Changeset in webkit [250430] by ysuzuki@apple.com
  • 4 edits
    2 adds in trunk

[JSC] DFG recursive-tail-call optimization should not emit jump to call-frame with varargs
https://bugs.webkit.org/show_bug.cgi?id=202299
<rdar://problem/52669116>

Reviewed by Saam Barati.

JSTests:

  • stress/recursive-tail-call-optimization-should-not-jump-into-call-frame-with-varargs-simple.js: Added.

(foo):
(test):

  • stress/recursive-tail-call-optimization-should-not-jump-into-call-frame-with-varargs.js: Added.

(foo):
(C1.prototype.baz):
(C1):
(bar):
(noInline.bar.goo):
(C2.prototype.baz):
(C2):
(test):

Source/JavaScriptCore:

When converting recursive-tail-call to jump to the upper call frame, we picked call-frame which is spread by LoadVarargs.
This is wrong since this call-frame does not know the exact number of arguments. We are using InlineCallFrame::argumentCountIncludingThis,
but this is maximal argumentCountIncludingThis when InlineCallFrame is Varargs call-frame. Let's see the simple example.

'use strict';
var count = 0;
function foo() {

count--;
if (count === 0)

return 30;

return foo(42, 42); HERE

}

function test() {

count = 100;
return foo(...[42, 42]); THERE

}
noInline(test);

In the above case, currently, we convert HERE's foo call to the jump to the prologue of the foo function inlined by "test". But since foo is called
in a varargs form, "test" emits LoadVarargs, and it also emits SetArgumentMaybe for 1st and 2nd arguments. Since HERE's foo call is actually passing
two arguments, we emit a Phi node which Upsilon is from SetArgumentMaybe and 42 Constant. This is wrong since SetArgumentMaybe should not be used. Later,
SSA conversion phase emits Upsilon with SetArgumentMaybe, and since SetArgumentMaybe is simply removed in SSA conversion phase, it ends up emitting
Upsilon without a child.

We are currently only performing recursive-tail-call optimization when argument count matches. Given this condition, we should not pick varargs CallFrame
as a jump target.

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::handleRecursiveTailCall):

  • dfg/DFGSSAConversionPhase.cpp:

(JSC::DFG::SSAConversionPhase::run):

9:49 AM Changeset in webkit [250429] by Alan Bujtas
  • 9 edits in trunk/Source/WebCore

[LFC][IFC] Replace Line::Run's logicalRect/textContext with Display::Run
https://bugs.webkit.org/show_bug.cgi?id=202313
<rdar://problem/55782430>

Reviewed by Antti Koivisto.

Display::Run is a container for logical rect and text context. Let's replace Line::Run's logical rect/text context with Display::Run.

  • layout/Verification.cpp:

(WebCore::Layout::outputMismatchingSimpleLineInformationIfNeeded):
(WebCore::Layout::outputMismatchingComplexLineInformationIfNeeded):

  • layout/displaytree/DisplayRun.h:

(WebCore::Display::Run::logicalRect const):

  • layout/inlineformatting/InlineFormattingContextLineLayout.cpp:

(WebCore::Layout::InlineFormattingContext::InlineLayout::createDisplayRuns):
(WebCore::Layout::InlineFormattingContext::InlineLayout::alignRuns const):

  • layout/inlineformatting/InlineFormattingContextQuirks.cpp:

(WebCore::Layout::InlineFormattingContext::Quirks::lineDescentNeedsCollapsing const):

  • layout/inlineformatting/InlineFormattingState.h:

(WebCore::Layout::InlineFormattingState::addInlineRun):

  • layout/inlineformatting/InlineLine.cpp:

(WebCore::Layout::Line::Run::Run):
(WebCore::Layout::Line::isVisuallyEmpty const):
(WebCore::Layout::Line::appendNonBreakableSpace):
(WebCore::Layout::Line::appendTextContent):
(WebCore::Layout::Line::appendNonReplacedInlineBox):
(WebCore::Layout::Line::appendHardLineBreak):

  • layout/inlineformatting/InlineLine.h:

(WebCore::Layout::Line::Run::displayRun const):
(WebCore::Layout::Line::Run::logicalRect const):
(WebCore::Layout::Line::Run::adjustLogicalTop):
(WebCore::Layout::Line::Run::moveVertically):
(WebCore::Layout::Line::Run::moveHorizontally):
(WebCore::Layout::Line::Run::textContext const): Deleted.

  • layout/layouttree/LayoutTreeBuilder.cpp:

(WebCore::Layout::outputInlineRuns):

9:27 AM Changeset in webkit [250428] by jer.noble@apple.com
  • 9 edits in trunk/Source/WebKit

[iOS] Lock screen controls can fail to play web content
https://bugs.webkit.org/show_bug.cgi?id=202279

Reviewed by Chris Dumez.

When playback is paused from the lock screen via Now Playing controls, the WebProcess,
UIProcess, and Network Process will all be suspended. MediaRemote will take an assertion
and wake up the WebProcess when a remote control command to "play" is sent via the Now
Playing controls. However, if a synchronous message to the (suspended) Network or UIProcess
is issued before the notification that the process was unexpectedly unsuspended can be
issued (which will subsequently unsuspend the UIProcess and Network process), we can get
into a deadlocked state where the main thread is blocked on the sync message to a suspended
process.

To work around this problem, move all the processing from ProcessTaskStateObserver to a
WorkQueue / background thread. This requires making the ProcessTaskStateObserver thread-safe,
though its only current client is a Singleton (the WebProcess class), and so the risk of
thread safety issues is currently minimal. Regardless, access to the Client pointer must be
guarded by a Lock, and the Client itself must become ref-counted, so that the
ProcessTaskStateObserver can ref its Client (the WebProcess) during callback processing.

Unfortunately, sendWithAsyncReply() is not thread safe, nor is ProcessAssertion, so instead
just use send() and set a 5-second timeout before expiring the assertion, and just use
BKSProcessStateAssertion directly.

  • Shared/Cocoa/ProcessTaskStateObserver.h:

(WebKit::ProcessTaskStateObserver::Client::ref):
(WebKit::ProcessTaskStateObserver::Client::deref):
(WebKit::ProcessTaskStateObserver::setClient): Deleted.
(WebKit::ProcessTaskStateObserver::client): Deleted.

  • Shared/Cocoa/ProcessTaskStateObserver.mm:

(-[WKProcessTaskStateObserverDelegate process:taskStateDidChange:]):
(WebKit::ProcessTaskStateObserver::create):
(WebKit::ProcessTaskStateObserver::ProcessTaskStateObserver):
(WebKit::ProcessTaskStateObserver::~ProcessTaskStateObserver):
(WebKit::ProcessTaskStateObserver::invalidate):
(WebKit::ProcessTaskStateObserver::client):
(WebKit::ProcessTaskStateObserver::setTaskState):

  • WebProcess/WebProcess.cpp:

(WebKit::m_taskStateObserver):

  • WebProcess/WebProcess.h:
  • UIProcess/Cocoa/WebProcessProxyCocoa.mm:

(WebKit::WebProcessProxy::processWasUnexpectedlyUnsuspended):

  • UIProcess/WebProcessProxy.h:
  • UIProcess/WebProcessProxy.messages.in:
  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::processTaskStateDidChange):

9:25 AM Changeset in webkit [250427] by Truitt Savell
  • 5 edits in trunk/Source/WebCore

Unreviewed, rolling out r250415.

Broke iOS debug testing with 50 crashes and 850 API failure

Reverted changeset:

"ScrollingTreeScrollingNode: use LayerRepresentation for
scroll container, scrolled contents layers"
https://bugs.webkit.org/show_bug.cgi?id=202256
https://trac.webkit.org/changeset/250415

9:07 AM Changeset in webkit [250426] by achristensen@apple.com
  • 20 edits in trunk

Move service worker process termination delay disabling from process pool to website data store
https://bugs.webkit.org/show_bug.cgi?id=202308

Reviewed by Chris Dumez.

Source/WebCore:

  • workers/service/server/SWServer.cpp:

(WebCore::SWServer::SWServer):
(WebCore::SWServer::unregisterServiceWorkerClient):

  • workers/service/server/SWServer.h:

(WebCore::SWServer::disableServiceWorkerProcessTerminationDelay): Deleted.

Source/WebKit:

It's only there for a test, which still works quickly.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::initializeNetworkProcess):
(WebKit::NetworkProcess::addWebsiteDataStore):
(WebKit::NetworkProcess::destroySession):
(WebKit::NetworkProcess::fetchWebsiteData):
(WebKit::NetworkProcess::deleteWebsiteDataForRegistrableDomains):
(WebKit::NetworkProcess::registrableDomainsWithWebsiteData):
(WebKit::NetworkProcess::swServerForSession):
(WebKit::NetworkProcess::addServiceWorkerSession):
(WebKit::NetworkProcess::disableServiceWorkerProcessTerminationDelay): Deleted.

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

(WebKit::WebsiteDataStoreParameters::encode const):
(WebKit::WebsiteDataStoreParameters::decode):

  • Shared/WebsiteDataStoreParameters.h:
  • UIProcess/API/Cocoa/WKProcessPool.mm:

(-[WKProcessPool _disableServiceWorkerProcessTerminationDelay]): Deleted.

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

(-[_WKWebsiteDataStoreConfiguration serviceWorkerProcessTerminationDelayEnabled]):
(-[_WKWebsiteDataStoreConfiguration setServiceWorkerProcessTerminationDelayEnabled:]):

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::ensureNetworkProcess):
(WebKit::WebProcessPool::disableServiceWorkerProcessTerminationDelay): Deleted.

  • UIProcess/WebProcessPool.h:
  • UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:

(WebKit::WebsiteDataStore::parameters):

  • UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp:

(WebKit::WebsiteDataStoreConfiguration::copy):

  • UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h:

(WebKit::WebsiteDataStoreConfiguration::serviceWorkerProcessTerminationDelayEnabled const):
(WebKit::WebsiteDataStoreConfiguration::setServiceWorkerProcessTerminationDelayEnabled):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm:
8:56 AM Changeset in webkit [250425] by Chris Dumez
  • 3 edits
    2 adds in trunk

IDBRequest should not prevent a page from entering the back/forward cache
https://bugs.webkit.org/show_bug.cgi?id=202270
<rdar://problem/55744717>

Reviewed by Youenn Fablet.

Source/WebCore:

Update IDBRequest::canSuspendForDocumentSuspension() to return true instead of
false. IDBRequest can only fire 2 events (error / success) and for both its
merely enqueues the Event to the DocumentEventQueue. The DocumentEventQueue
uses a SuspendableTimer (which will be suspended while the document is in the
page cache) so there is no risk of firing the events (and thus running script)
while in the page cache.

Test: storage/indexeddb/IDBRequest-page-cache.html

  • Modules/indexeddb/IDBRequest.cpp:

(WebCore::IDBRequest::canSuspendForDocumentSuspension const):

LayoutTests:

Add layout test coverage.

  • storage/indexeddb/IDBRequest-page-cache-expected.txt: Added.
  • storage/indexeddb/IDBRequest-page-cache.html: Added.
8:55 AM Changeset in webkit [250424] by achristensen@apple.com
  • 8 edits in trunk/Source/WebKit

Enable and disable ResourceLoadStatistics only by session
https://bugs.webkit.org/show_bug.cgi?id=202298

Reviewed by Chris Dumez.

This is needed to keep per-session things per-session and per-process-pool things per-process-pool.
This was a strange case where we would take the current session's value and apply it globally.
This has no change in behavior because it is globally enabled and disabled by API clients anyways.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::setResourceLoadStatisticsEnabled):

  • NetworkProcess/NetworkProcess.h:
  • NetworkProcess/NetworkProcess.messages.in:
  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _initializeWithConfiguration:]):

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::setResourceLoadStatisticsEnabled): Deleted.

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

(WebKit::WebsiteDataStore::setResourceLoadStatisticsEnabled):

8:31 AM Changeset in webkit [250423] by Alan Bujtas
  • 5 edits in trunk/Source/WebCore

[LFC][IFC] Remove redundant Line::TextContext member variables
https://bugs.webkit.org/show_bug.cgi?id=202300
<rdar://problem/55769916>

Reviewed by Antti Koivisto.

This is in preparation for using Display::Run in Line::Run instead of Display::Rect + TextContext.

  • layout/inlineformatting/InlineFormattingContextLineLayout.cpp:

(WebCore::Layout::InlineFormattingContext::InlineLayout::createDisplayRuns):

  • layout/inlineformatting/InlineFormattingContextQuirks.cpp:

(WebCore::Layout::InlineFormattingContext::Quirks::lineDescentNeedsCollapsing const):

  • layout/inlineformatting/InlineLine.cpp:

(WebCore::Layout::Line::Run::isWhitespace const):
(WebCore::Layout::Line::Run::canBeExtended const):
(WebCore::Layout::Line::isVisuallyEmpty const):
(WebCore::Layout::Line::removeTrailingTrimmableContent):
(WebCore::Layout::Line::trailingTrimmableWidth const):
(WebCore::Layout::Line::appendTextContent):

  • layout/inlineformatting/InlineLine.h:

(WebCore::Layout::Line::Run::isVisuallyEmpty const):
(WebCore::Layout::Line::Run::setVisuallyIsEmpty):
(WebCore::Layout::Line::Run::setTextIsCollapsed): Deleted.

7:34 AM Changeset in webkit [250422] by achristensen@apple.com
  • 21 edits
    2 deletes in trunk

Remove unused WebProcessPool::setCanHandleHTTPSServerTrustEvaluation
https://bugs.webkit.org/show_bug.cgi?id=202285

Reviewed by Youenn Fablet.

Source/WebKit:

The SPI to set this was deprecated in r250377 with a replacement that was adopted in rdar://problem/55731135
I removed a layout test using the old SPI and replaced it with a more precise API test verifying the behavior of the new SPI
before and after the introduction of NSURLSession's _strictTrustEvaluate:queue:completionHandler:

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::initializeNetworkProcess):
(WebKit::NetworkProcess::setCanHandleHTTPSServerTrustEvaluation): Deleted.

  • NetworkProcess/NetworkProcess.h:

(WebKit::NetworkProcess::canHandleHTTPSServerTrustEvaluation const): Deleted.

  • NetworkProcess/NetworkProcess.messages.in:
  • NetworkProcess/NetworkProcessCreationParameters.cpp:

(WebKit::NetworkProcessCreationParameters::encode const):
(WebKit::NetworkProcessCreationParameters::decode):

  • NetworkProcess/NetworkProcessCreationParameters.h:
  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(-[WKNetworkSessionDelegate URLSession:task:didReceiveChallenge:completionHandler:]):
(canNSURLSessionTrustEvaluate): Deleted.

  • UIProcess/API/C/WKContext.cpp:

(WKContextSetCanHandleHTTPSServerTrustEvaluation):

  • UIProcess/API/Cocoa/WKProcessPool.mm:

(-[WKProcessPool _setCanHandleHTTPSServerTrustEvaluation:]):

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::ensureNetworkProcess):
(WebKit::WebProcessPool::setCanHandleHTTPSServerTrustEvaluation): Deleted.

  • UIProcess/WebProcessPool.h:

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/Challenge.mm:

(-[ServerTrustDelegate webView:didFinishNavigation:]):
(-[ServerTrustDelegate webView:didFailProvisionalNavigation:withError:]):
(-[ServerTrustDelegate waitForDidFinishNavigation]):
(-[ServerTrustDelegate waitForDidFailProvisionalNavigationError]):
(-[ServerTrustDelegate authenticationChallengeCount]):
(-[ServerTrustDelegate webView:didReceiveAuthenticationChallenge:completionHandler:]):
(TestWebKitAPI::TEST):

  • WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
  • WebKitTestRunner/InjectedBundle/TestRunner.cpp:

(WTR::TestRunner::setCanHandleHTTPSServerTrustEvaluation): Deleted.
(WTR::TestRunner::canDoServerTrustEvaluationInNetworkProcess): Deleted.
(WTR::TestRunner::serverTrustEvaluationCallbackCallsCount): Deleted.

  • WebKitTestRunner/InjectedBundle/TestRunner.h:
  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::resetStateToConsistentValues):
(WTR::TestController::didReceiveAuthenticationChallenge):
(WTR::TestController::canDoServerTrustEvaluationInNetworkProcess const): Deleted.

  • WebKitTestRunner/TestController.h:

(WTR::TestController::serverTrustEvaluationCallbackCallsCount const): Deleted.

  • WebKitTestRunner/TestInvocation.cpp:

(WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle):

  • WebKitTestRunner/cocoa/TestControllerCocoa.mm:

(WTR::TestController::canDoServerTrustEvaluationInNetworkProcess const): Deleted.

LayoutTests:

  • http/tests/ssl/certificate-validation-expected.txt: Removed.
  • http/tests/ssl/certificate-validation.html: Removed.
7:05 AM Changeset in webkit [250421] by achristensen@apple.com
  • 17 edits in trunk

Remove unused APIProcessPoolConfiguration::diskCacheSpeculativeValidationEnabled
https://bugs.webkit.org/show_bug.cgi?id=202290

Reviewed by Carlos Garcia Campos.

Source/WebKit:

The SPI to set this was deprecated in r250377 with a replacement that was adopted in rdar://problem/55731135

  • NetworkProcess/NetworkProcessCreationParameters.cpp:

(WebKit::NetworkProcessCreationParameters::encode const):
(WebKit::NetworkProcessCreationParameters::decode):

  • NetworkProcess/NetworkProcessCreationParameters.h:
  • NetworkProcess/cocoa/NetworkProcessCocoa.mm:

(WebKit::NetworkProcess::platformInitializeNetworkProcessCocoa):

  • UIProcess/API/APIProcessPoolConfiguration.cpp:

(API::ProcessPoolConfiguration::copy):

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

(WKContextSetDiskCacheSpeculativeValidationEnabled):

  • UIProcess/API/C/WKWebsiteDataStoreConfigurationRef.cpp:

(WKWebsiteDataStoreConfigurationGetNetworkCacheSpeculativeValidationEnabled):
(WKWebsiteDataStoreConfigurationSetNetworkCacheSpeculativeValidationEnabled):

  • UIProcess/API/C/WKWebsiteDataStoreConfigurationRef.h:
  • UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm:

(-[_WKProcessPoolConfiguration diskCacheSpeculativeValidationEnabled]):
(-[_WKProcessPoolConfiguration setDiskCacheSpeculativeValidationEnabled:]):

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::ensureNetworkProcess):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/WKProcessPoolConfiguration.mm:

(TEST):

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::websiteDataStore):
(WTR::TestController::generatePageConfiguration):

3:48 AM Changeset in webkit [250420] by zandobersek@gmail.com
  • 3 edits in trunk/Source/WebCore

[Nicosia] Implement frame scrolling functionality
https://bugs.webkit.org/show_bug.cgi?id=202201

Reviewed by Carlos Garcia Campos.

Implement logic in the ScrollingTreeFrameScrollingNodeNicosia class,
largely following the Mac port's implementation but skipping areas we
don't support or can keep simple, like CSS scroll snap, frame pinning
and more complex wheel event handling through the platform-specific
delegate behavior.

  • page/scrolling/nicosia/ScrollingTreeFrameScrollingNodeNicosia.cpp:

(WebCore::ScrollingTreeFrameScrollingNodeNicosia::commitStateBeforeChildren):
(WebCore::ScrollingTreeFrameScrollingNodeNicosia::commitStateAfterChildren):
(WebCore::ScrollingTreeFrameScrollingNodeNicosia::handleWheelEvent):
(WebCore::ScrollingTreeFrameScrollingNodeNicosia::adjustedScrollPosition const):
(WebCore::ScrollingTreeFrameScrollingNodeNicosia::currentScrollPositionChanged):
(WebCore::ScrollingTreeFrameScrollingNodeNicosia::repositionScrollingLayers):
(WebCore::ScrollingTreeFrameScrollingNodeNicosia::repositionRelatedLayers):

  • page/scrolling/nicosia/ScrollingTreeFrameScrollingNodeNicosia.h:
3:36 AM Changeset in webkit [250419] by zandobersek@gmail.com
  • 2 edits in trunk/Source/WebCore

[Nicosia] ScrollingCoordinatorNicosia should handle wheel events coming from the main thread
https://bugs.webkit.org/show_bug.cgi?id=202275

Reviewed by Carlos Garcia Campos.

  • page/scrolling/nicosia/ScrollingCoordinatorNicosia.cpp:

(WebCore::ScrollingCoordinatorNicosia::handleWheelEvent):
Handle wheel events that get rerouted through the main thread,
dispatching them back to the scrolling thread so that they end up
performing the desired scroll if possible.

3:34 AM Changeset in webkit [250418] by zandobersek@gmail.com
  • 8 edits in trunk/Source

[CoordinatedGraphics] support bounds origin
https://bugs.webkit.org/show_bug.cgi?id=198998

Reviewed by Carlos Garcia Campos.

Source/WebCore:

Add bounds-origin support to the CoordinatedGraphics stack. Currently we
take the short-cut implementation of just combining the bounds origin
and the position value and incorporating them into the layer transform
we calculate in TextureMapperLayer.

Additional boilerplate code is added, as required, to relay the
WebCore::GraphicsLayer change of bounds origin to the rendering system.

  • platform/graphics/nicosia/NicosiaPlatformLayer.h:

(Nicosia::CompositionLayer::flushState):

  • platform/graphics/texmap/TextureMapperLayer.cpp:

(WebCore::TextureMapperLayer::computeTransformsRecursive):
(WebCore::TextureMapperLayer::setBoundsOrigin):

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

(WebCore::CoordinatedGraphicsLayer::setBoundsOrigin):
(WebCore::CoordinatedGraphicsLayer::computePositionRelativeToBase):

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

Source/WebKit:

  • Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:

(WebKit::CoordinatedGraphicsScene::updateSceneState):
Apply bounds origin value to the TextureMapperLayer object.

2:04 AM Changeset in webkit [250417] by youenn@apple.com
  • 6 edits in trunk

Make IsNSURLSessionWebSocketEnabled an experimental flag
https://bugs.webkit.org/show_bug.cgi?id=202135
<rdar://problem/55694721>

Reviewed by Geoff Garen.

Source/WebKit:

Add C API to switch off this feature in WTR.

  • Shared/WebPreferences.yaml:
  • UIProcess/API/C/WKPreferences.cpp:

(WKPreferencesSetIsNSURLSessionWebSocketEnabled):
(WKPreferencesGetIsNSURLSessionWebSocketEnabled):

  • UIProcess/API/C/WKPreferencesRefPrivate.h:

Tools:

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::resetPreferencesToConsistentValues):
Set preference to false by default.

12:13 AM Changeset in webkit [250416] by jiewen_tan@apple.com
  • 9 edits in trunk

SubFrameSOAuthorizationSession should ensure messages are posted in the right order to the parent frame
https://bugs.webkit.org/show_bug.cgi?id=202061
<rdar://problem/55485666>

Reviewed by Youenn Fablet.

Source/WebKit:

This patch ensures messages that signal the process of SOAuthorization interception are posted in
the right order to the parent frame. Before this patch, there are chances that SOAuthorizationDidCancel
could be posted to the parent before SOAuthorizationDidStart. There are few causes that lead to
this race condition:
1) SubFrameSOAuthorizationSession::beforeStart posts SOAuthorizationDidStart in the next runloop. So
extension could have the chance to invoke SubFrameSOAuthorizationSession::fallBackToWebPathInternal
before SOAuthorizationDidStart is posted.
2) Even if the order is right in the UI process, it is not guaranteed that Web process will strictly
follow the order as the loading process is async.

To fix the issue:
1) SubFrameSOAuthorizationSession::beforeStart now posts SOAuthorizationDidStart in the same runloop.
2) Observer is introduced in FrameLoadState such that SubFrameSOAuthorizationSession could know if
the loading is finished. With this new capacity, SubFrameSOAuthorizationSession can ensure it only
posts next message when the previous message has been posted.

Implementation wise, a deque to queue requests is provided to maintain order.
1) When new request is added to the deque, SubFrameSOAuthorizationSession will only load the request
if it is the only element in the deque. Otherwise, it does nothing.
2) When SubFrameSOAuthorizationSession receives didFinishLoad, it pops the head of the queue and loads
the next request in the queue if any.
The above design should guarantee all requests are loaded in sequence.

  • UIProcess/Cocoa/SOAuthorization/SubFrameSOAuthorizationSession.h:
  • UIProcess/Cocoa/SOAuthorization/SubFrameSOAuthorizationSession.mm:

(WebKit::SubFrameSOAuthorizationSession::SubFrameSOAuthorizationSession):
(WebKit::SubFrameSOAuthorizationSession::~SubFrameSOAuthorizationSession):
(WebKit::SubFrameSOAuthorizationSession::fallBackToWebPathInternal):
(WebKit::SubFrameSOAuthorizationSession::completeInternal):
(WebKit::SubFrameSOAuthorizationSession::beforeStart):
(WebKit::SubFrameSOAuthorizationSession::didFinishLoad):
(WebKit::SubFrameSOAuthorizationSession::appendRequestToLoad):
(WebKit::SubFrameSOAuthorizationSession::loadRequestToFrame):
(WebKit::SubFrameSOAuthorizationSession::loadDataToFrame): Deleted.
(WebKit::SubFrameSOAuthorizationSession::postDidCancelMessageToParent): Deleted.

  • UIProcess/FrameLoadState.cpp:

(WebKit::FrameLoadState::addObserver):
(WebKit::FrameLoadState::removeObserver):
(WebKit::FrameLoadState::didFinishLoad):

  • UIProcess/FrameLoadState.h:

Tools:

Adds tests that check the order of messages posted by SubFrameSOAuthorizationSession.

  • TestWebKitAPI/Tests/WebKitCocoa/TestSOAuthorization.mm:

(-[TestSOAuthorizationScriptMessageHandler userContentController:didReceiveScriptMessage:]):
(resetState):
(TestWebKitAPI::TEST):

Sep 26, 2019:

11:19 PM Changeset in webkit [250415] by zandobersek@gmail.com
  • 5 edits in trunk/Source/WebCore

ScrollingTreeScrollingNode: use LayerRepresentation for scroll container, scrolled contents layers
https://bugs.webkit.org/show_bug.cgi?id=202256

Reviewed by Simon Fraser.

Make the scroll container and scrolled contents layer holders
platform-independent by using the LayerRepresentation as the underlying
type for the two member variables in ScrollingTreeScrollingNode.

  • page/scrolling/ScrollingTreeScrollingNode.cpp:

(WebCore::ScrollingTreeScrollingNode::commitStateBeforeChildren):

  • page/scrolling/ScrollingTreeScrollingNode.h:
  • page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm:

(WebCore::ScrollingTreeFrameScrollingNodeMac::repositionScrollingLayers):

  • page/scrolling/mac/ScrollingTreeOverflowScrollingNodeMac.mm:

(WebCore::ScrollingTreeOverflowScrollingNodeMac::repositionScrollingLayers):

11:17 PM Changeset in webkit [250414] by Chris Dumez
  • 14 edits
    2 adds in trunk

Pages frequently fails to enter the back/forward cache due to pending loads
https://bugs.webkit.org/show_bug.cgi?id=202289
<rdar://problem/55758506>

Reviewed by Geoffrey Garen.

Source/WebCore:

Allow pages to enter the back / forward cache, even if they have pending loads.
Note that these pending loads get cancelled. Also note that we won't enter page
cache unless the 'load' event has been fired in the main frame, since a
HistoryItem would not get created otherwise. This was causing frequent transient
failures to enter the back / forward cache while browsing (e.g. on weather.com).

Test: http/tests/navigation/page-cache-pending-load.html

  • history/PageCache.cpp:

(WebCore::canCacheFrame):

  • loader/CrossOriginPreflightChecker.cpp:
  • loader/CrossOriginPreflightChecker.h:
  • loader/DocumentLoader.cpp:

(WebCore::DocumentLoader::setMainDocumentError):
(WebCore::DocumentLoader::stopLoading):

  • loader/DocumentLoader.h:
  • loader/DocumentThreadableLoader.cpp:
  • loader/DocumentThreadableLoader.h:
  • loader/cache/CachedResource.cpp:
  • loader/cache/CachedResource.h:
  • loader/cache/CachedResourceClient.h:

(WebCore::CachedResourceClient::deprecatedDidReceiveCachedResource):

  • page/DiagnosticLoggingKeys.cpp:

(WebCore::DiagnosticLoggingKeys::mainFrameHasNotFinishedLoadingKey):

  • page/DiagnosticLoggingKeys.h:

LayoutTests:

Add layout test coverage.

  • http/tests/navigation/page-cache-pending-load-expected.txt: Added.
  • http/tests/navigation/page-cache-pending-load.html: Added.
10:13 PM Changeset in webkit [250413] by commit-queue@webkit.org
  • 68 edits
    1 copy
    3 moves
    1 delete in trunk

Resource Load Statistics: Downgrade all third-party referrer headers
https://bugs.webkit.org/show_bug.cgi?id=201353
<rdar://problem/54895650>
Source/WebKit:

Majority of this patch was written by John Wilander <wilander@apple.com>.

Patch by Kate Cheney <Kate Cheney> on 2019-09-26
Reviewed by Brent Fulgham.

When tracking protections are enabled, we should downgrade all third-party
referrers to their origins. Note that this downgrade will be specific to
Cocoa so other ports will have to adopt as they see fit.

Cocoa already does this downgrade in ephemeral sessions (shipping).

The majority of these changes are test infrastructure. The functional
change is in WebKit::NetworkDataTaskCocoa and WebKit::NetworkSession.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::setShouldDowngradeReferrerForTesting):

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

(WebKit::NetworkSession::isResourceLoadStatisticsEnabled const):
(WebKit::NetworkSession::setShouldDowngradeReferrerForTesting):
(WebKit::NetworkSession::shouldDowngradeReferrer const):

  • NetworkProcess/NetworkSession.h:
  • NetworkProcess/cocoa/NetworkDataTaskCocoa.h:
  • NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:

(WebKit::NetworkDataTaskCocoa::isThirdPartyRequest const):
(WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa):
(WebKit::NetworkDataTaskCocoa::restrictRequestReferrerToOriginIfNeeded):
(WebKit::NetworkDataTaskCocoa::willPerformHTTPRedirection):
(WebKit::NetworkDataTaskCocoa::isThirdPartyRequest): Deleted.

  • UIProcess/API/C/WKWebsiteDataStoreRef.cpp:

(WKWebsiteDataStoreSetResourceLoadStatisticsShouldDowngradeReferrerForTesting):
(WKWebsiteDataStoreStatisticsResetToConsistentState):

  • UIProcess/API/C/WKWebsiteDataStoreRef.h:
  • UIProcess/Network/NetworkProcessProxy.cpp:

(WebKit::NetworkProcessProxy::setShouldDowngradeReferrerForTesting):

  • UIProcess/Network/NetworkProcessProxy.h:
  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::setResourceLoadStatisticsShouldDowngradeReferrerForTesting):

  • UIProcess/WebsiteData/WebsiteDataStore.h:

Tools:

Majority of this patch was written by John Wilander <wilander@apple.com>.

Patch by Kate Cheney <Kate Cheney> on 2019-09-26
Reviewed by Brent Fulgham.

The changes to the TestRunner facilitates an opt-out for test cases
that either test the referrer mechanism explicitly or tests that
rely on the full referrer to be sent.

The new boolean variable and early return in
TestRunner::setStatisticsShouldDowngradeReferrer() prevent the same
event from trying to set multiple TestRunner callbacks.

  • WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
  • WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:

(WTR::InjectedBundle::didReceiveMessageToPage):

  • WebKitTestRunner/InjectedBundle/TestRunner.cpp:

(WTR::TestRunner::setStatisticsShouldDowngradeReferrer):
(WTR::TestRunner::statisticsCallDidSetShouldDowngradeReferrerCallback):

  • WebKitTestRunner/InjectedBundle/TestRunner.h:
  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::setStatisticsShouldDowngradeReferrer):

  • WebKitTestRunner/TestController.h:
  • WebKitTestRunner/TestInvocation.cpp:

(WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle):
(WTR::TestInvocation::didSetShouldDowngradeReferrer):

  • WebKitTestRunner/TestInvocation.h:

LayoutTests:

Majority of this patch was written by John Wilander <wilander@apple.com>

Patch by Kate Cheney <Kate Cheney> on 2019-09-26
Reviewed by Brent Fulgham.

The changes in the two http/tests/resourceLoadStatistics/strip-referrer-to-origin*
tests and the http/tests/navigation/ping-attribute/* tests are for the functional
change. The other changes are to make use of the new
testRunner.setStatisticsShouldDowngradeReferrer() to maintain earlier functionality.

TestRunner::setStatisticsShouldDowngradeReferrer() function is not
supported for mac-wk1, win or wincairo.

  • http/tests/blink/sendbeacon/beacon-cross-origin-expected.txt:
  • http/tests/navigation/ping-attribute/anchor-cross-origin.html:
  • http/tests/navigation/ping-attribute/area-cross-origin.html:
  • http/tests/referrer-policy-script/no-referrer-when-downgrade/cross-origin-http-http.html:
  • http/tests/referrer-policy-script/no-referrer-when-downgrade/cross-origin-http.https.html:
  • http/tests/referrer-policy-script/no-referrer-when-downgrade/same-origin.html:
  • http/tests/referrer-policy-script/no-referrer/cross-origin-http-http.html:
  • http/tests/referrer-policy-script/no-referrer/cross-origin-http.https.html:
  • http/tests/referrer-policy-script/no-referrer/same-origin.html:
  • http/tests/referrer-policy-script/origin-when-cross-origin/cross-origin-http-http.html:
  • http/tests/referrer-policy-script/origin-when-cross-origin/cross-origin-http.https.html:
  • http/tests/referrer-policy-script/origin-when-cross-origin/same-origin.html:
  • http/tests/referrer-policy-script/origin/cross-origin-http-http.html:
  • http/tests/referrer-policy-script/origin/cross-origin-http.https.html:
  • http/tests/referrer-policy-script/origin/same-origin.html:
  • http/tests/referrer-policy-script/same-origin/cross-origin-http-http.html:
  • http/tests/referrer-policy-script/same-origin/cross-origin-http.https.html:
  • http/tests/referrer-policy-script/same-origin/same-origin.html:
  • http/tests/referrer-policy-script/strict-origin-when-cross-origin/cross-origin-http-http.html:
  • http/tests/referrer-policy-script/strict-origin-when-cross-origin/cross-origin-http.https.html:
  • http/tests/referrer-policy-script/strict-origin-when-cross-origin/same-origin.html:
  • http/tests/referrer-policy-script/strict-origin/cross-origin-http-http.html:
  • http/tests/referrer-policy-script/strict-origin/cross-origin-http.https.html:
  • http/tests/referrer-policy-script/strict-origin/same-origin.html:
  • http/tests/referrer-policy-script/unsafe-url/cross-origin-http-http.html:
  • http/tests/referrer-policy-script/unsafe-url/cross-origin-http.https.html:
  • http/tests/referrer-policy-script/unsafe-url/same-origin.html:
  • http/tests/referrer-policy/no-referrer-when-downgrade/cross-origin-http-http.html:
  • http/tests/referrer-policy/no-referrer-when-downgrade/cross-origin-http.https.html:
  • http/tests/referrer-policy/no-referrer-when-downgrade/same-origin.html:
  • http/tests/referrer-policy/unsafe-url/cross-origin-http-http.html:
  • http/tests/referrer-policy/unsafe-url/cross-origin-http.https.html:
  • http/tests/resourceLoadStatistics/strip-referrer-to-origin-for-prevalent-subresource-requests.html: Removed.
  • http/tests/resourceLoadStatistics/strip-referrer-to-origin-for-third-party-redirects-expected.txt: Renamed from LayoutTests/http/tests/resourceLoadStatistics/strip-referrer-to-origin-for-prevalent-subresource-redirects-expected.txt.
  • http/tests/resourceLoadStatistics/strip-referrer-to-origin-for-third-party-redirects.html: Copied from LayoutTests/http/tests/resourceLoadStatistics/strip-referrer-to-origin-for-prevalent-subresource-redirects.html.
  • http/tests/resourceLoadStatistics/strip-referrer-to-origin-for-third-party-requests-expected.txt: Renamed from LayoutTests/http/tests/resourceLoadStatistics/strip-referrer-to-origin-for-prevalent-subresource-requests-expected.txt.
  • http/tests/resourceLoadStatistics/strip-referrer-to-origin-for-third-party-requests.html: Renamed from LayoutTests/http/tests/resourceLoadStatistics/strip-referrer-to-origin-for-prevalent-subresource-redirects.html.
  • http/tests/security/contentSecurityPolicy/report-cross-origin-no-cookies-when-private-browsing-enabled.php:
  • http/tests/security/contentSecurityPolicy/report-cross-origin-no-cookies.php:
  • http/tests/security/referrer-policy-header.html:
  • platform/ios-wk2/TestExpectations:
  • platform/ios/TestExpectations:
  • platform/mac-wk1/TestExpectations:
  • platform/mac-wk2/TestExpectations:
  • platform/win/TestExpectations:
  • platform/wincairo/TestExpectations:
  • platform/wk2/TestExpectations:
  • resources/testharnessreport.js:
  • resources/js-test.js:
8:43 PM Changeset in webkit [250412] by Alan Bujtas
  • 4 edits in trunk/Source/WebCore

[LFC][IFC] Line::Run should have a reference to the associated InlineItem
https://bugs.webkit.org/show_bug.cgi?id=202288
<rdar://problem/55758112>

Reviewed by Antti Koivisto.

It makes it clearer where the type and the layout box come from.

  • layout/inlineformatting/InlineFormattingContextQuirks.cpp:

(WebCore::Layout::InlineFormattingContext::Quirks::lineDescentNeedsCollapsing const):

  • layout/inlineformatting/InlineLine.cpp:

(WebCore::Layout::Line::Run::Run):

  • layout/inlineformatting/InlineLine.h:

(WebCore::Layout::Line::Run::layoutBox const):
(WebCore::Layout::Line::Run::textContext const):
(WebCore::Layout::Line::Run::isText const):
(WebCore::Layout::Line::Run::isBox const):
(WebCore::Layout::Line::Run::isLineBreak const):
(WebCore::Layout::Line::Run::isContainerStart const):
(WebCore::Layout::Line::Run::isContainerEnd const):
(WebCore::Layout::Line::Run::type const): Deleted.

8:23 PM Changeset in webkit [250411] by Alan Bujtas
  • 6 edits in trunk/Source/WebCore

[LFC][IFC] Remove redundant Line::Content
https://bugs.webkit.org/show_bug.cgi?id=202284
<rdar://problem/55757187>

Reviewed by Antti Koivisto.

Line::Content is really just a list or runs at this point.

  • layout/inlineformatting/InlineFormattingContext.h:
  • layout/inlineformatting/InlineFormattingContextLineLayout.cpp:

(WebCore::Layout::InlineFormattingContext::InlineLayout::createDisplayRuns):

  • layout/inlineformatting/InlineFormattingContextQuirks.cpp:

(WebCore::Layout::InlineFormattingContext::Quirks::lineDescentNeedsCollapsing const):

  • layout/inlineformatting/InlineLine.cpp:

(WebCore::Layout::Line::Run::Run):
(WebCore::Layout::Line::Line):
(WebCore::Layout::Line::isVisuallyEmpty const):
(WebCore::Layout::Line::close):
(WebCore::Layout::Line::appendNonBreakableSpace):
(WebCore::Layout::Line::appendTextContent):
(WebCore::Layout::Line::appendNonReplacedInlineBox):
(WebCore::Layout::Line::appendHardLineBreak):
(WebCore::Layout::Line::Content::Run::Run): Deleted.

  • layout/inlineformatting/InlineLine.h:

(WebCore::Layout::Line::Run::layoutBox const):
(WebCore::Layout::Line::Run::logicalRect const):
(WebCore::Layout::Line::Run::textContext const):
(WebCore::Layout::Line::Run::type const):
(WebCore::Layout::Line::Run::isText const):
(WebCore::Layout::Line::Run::isBox const):
(WebCore::Layout::Line::Run::isLineBreak const):
(WebCore::Layout::Line::Run::isContainerStart const):
(WebCore::Layout::Line::Run::isContainerEnd const):
(WebCore::Layout::Line::Run::adjustLogicalTop):
(WebCore::Layout::Line::Run::moveVertically):
(WebCore::Layout::Line::Run::moveHorizontally):
(WebCore::Layout::Line::Run::setTextIsCollapsed):
(WebCore::Layout::Line::Content::Run::layoutBox const): Deleted.
(WebCore::Layout::Line::Content::Run::logicalRect const): Deleted.
(WebCore::Layout::Line::Content::Run::textContext const): Deleted.
(WebCore::Layout::Line::Content::Run::type const): Deleted.
(WebCore::Layout::Line::Content::Run::isText const): Deleted.
(WebCore::Layout::Line::Content::Run::isBox const): Deleted.
(WebCore::Layout::Line::Content::Run::isLineBreak const): Deleted.
(WebCore::Layout::Line::Content::Run::isContainerStart const): Deleted.
(WebCore::Layout::Line::Content::Run::isContainerEnd const): Deleted.
(WebCore::Layout::Line::Content::Run::adjustLogicalTop): Deleted.
(WebCore::Layout::Line::Content::Run::moveVertically): Deleted.
(WebCore::Layout::Line::Content::Run::moveHorizontally): Deleted.
(WebCore::Layout::Line::Content::Run::setTextIsCollapsed): Deleted.
(WebCore::Layout::Line::Content::runs const): Deleted.
(WebCore::Layout::Line::Content::runs): Deleted.

8:00 PM Changeset in webkit [250410] by eric.carlson@apple.com
  • 3 edits
    2 adds in trunk

REGRESSION (iOS 13): Trying to record just audio using HTML Media Capture crashes Safari
https://bugs.webkit.org/show_bug.cgi?id=202039
<rdar://problem/55566628>

Reviewed by Jer Noble.

Source/WebKit:

  • UIProcess/ios/forms/WKFileUploadPanel.mm:

(-[WKFileUploadPanel _mediaTypesForPickerSourceType:]): UIImagePickerController doesn't
support audio-only recording, so show the video recorder for "audio/*".

LayoutTests:

  • fast/forms/ios/file-upload-panel-capture-expected.txt: Added.
  • fast/forms/ios/file-upload-panel-capture.html: Added.
7:40 PM Changeset in webkit [250409] by Alan Coon
  • 7 edits in tags/Safari-609.1.5.1/Source

Versioning.

7:38 PM Changeset in webkit [250408] by Alan Coon
  • 1 copy in tags/Safari-609.1.5.1

New tag.

7:25 PM Changeset in webkit [250407] by Joseph Pecoraro
  • 4 edits in trunk/Source/WebInspectorUI

Web Inspector: Include LocalResourceOverrides in the Open Resource dialog
https://bugs.webkit.org/show_bug.cgi?id=202023

Reviewed by Devin Rousso.

  • UserInterface/Views/OpenResourceDialog.js:

(WI.OpenResourceDialog.prototype._addScriptsForTarget):
Also walk the extraScriptCollection. Some Worker resource loads never
fully become resources.

(WI.OpenResourceDialog.prototype.didPresentDialog):
(WI.OpenResourceDialog.prototype._addLocalResourceOverrides):
Include local resource override resources.

(WI.OpenResourceDialog.prototype._populateResourceTreeOutline):

  • Localizations/en.lproj/localizedStrings.js:

Include a subtitle for local resource overrides.

  • UserInterface/Views/OpenResourceDialog.css:

(.open-resource-dialog .tree-outline.large .item .titles .subtitle):
Improved subtitle styling.

6:54 PM Changeset in webkit [250406] by Alan Coon
  • 2 edits in tags/Safari-609.1.5/Source/JavaScriptCore

Cherry-pick r250383. rdar://problem/55673084

We need to initialize the Gigacage first in setJITEnabled() when disabling the JIT.
https://bugs.webkit.org/show_bug.cgi?id=202257

Reviewed by Saam Barati.

Because of an OS quirk, even after the JIT region has been unmapped, the OS thinks
that region is reserved, and as such, can cause Gigacage allocation to fail. We
work around this by initializing the Gigacage first.

Note: when called, setJITEnabled() is always called extra early in the process
bootstrap. Under normal operation (when setJITEnabled() isn't called at all), we
will naturally initialize the Gigacage before we allocate the JIT region.
Hence, this workaround is merely ensuring the same behavior of allocation ordering.

This patch only applies to iOS.

  • jit/ExecutableAllocator.cpp: (JSC::ExecutableAllocator::setJITEnabled):

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

5:59 PM Changeset in webkit [250405] by timothy_horton@apple.com
  • 3 edits in trunk/Source/WebKit

Add some logging to help diagnose blank or stuck WKWebViews
https://bugs.webkit.org/show_bug.cgi?id=202297
<rdar://problem/55763610>

Reviewed by Wenson Hsieh.

Our current logging is insufficient to rule out some of the potential
causes of stuck/blank WKWebViews in <rdar://problem/53399054>. Add
some new logging, and improve some existing logging, to aid in diagnosis.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _willInvokeUIScrollViewDelegateCallback]):
(-[WKWebView _didInvokeUIScrollViewDelegateCallback]):
Rename _delayUpdateVisibleContentRects to be more specific that it
was due to us being underneath a UIScrollView delegate callback.

(-[WKWebView _processWillSwapOrDidExit]):
(-[WKWebView _didCommitLayerTree:]):
Add a log when we receive an incoming commit while visible content rect
updates are being deferred. Also, include the current transaction ID
and the transaction ID that _needsResetViewState... is waiting for, to
help rule out a class of potential problems.

Add a log when we receive an incoming commit more than 5 seconds after
a visible content rect update.

(-[WKWebView _updateVisibleContentRects]):
Keep track of when we defer visual content rect updates for any reason,
and log the first time we do an update after deferring them. This will make
it MUCH easier at-a-glance to tell if one of the "bailing" messages
represents a long-term state (a problem), or is expected.

Keep track of how long it's been since we sent a visible content rect update
and didn't get a commit back from the Web Content process; if it's been
more than 5 seconds, start logging.

(-[WKWebView _cancelAnimatedResize]):
(-[WKWebView _didCompleteAnimatedResize]):
(-[WKWebView _beginAnimatedResizeWithUpdates:]):
(-[WKWebView _endAnimatedResize]):
(-[WKWebView _resizeWhileHidingContentWithUpdates:]):
Turn animated resize logging into release logging. It is a common culprit
for many kinds of bugs, while also not being high volume, so this is well worth it.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::freezeLayerTree):
(WebKit::WebPage::unfreezeLayerTree):
Show the current value of m_layerTreeFreezeReasons in addition to the old value and delta,
so you don't have to manually compute the current value when reading logs.

4:03 PM Changeset in webkit [250404] by Alan Bujtas
  • 5 edits in trunk/Source/WebCore

[LFC][IFC] Move Line::Content::m_lineBox to Line.
https://bugs.webkit.org/show_bug.cgi?id=202280
<rdar://problem/55755798>

Reviewed by Antti Koivisto.

This is in preparation for Line producing Display::Runs instead of Line::Runs.

  • layout/inlineformatting/InlineFormattingContext.h:
  • layout/inlineformatting/InlineFormattingContextLineLayout.cpp:

(WebCore::Layout::LineLayout::close):
(WebCore::Layout::LineLayout::placeInlineItem):
(WebCore::Layout::InlineFormattingContext::InlineLayout::layout):
(WebCore::Layout::InlineFormattingContext::InlineLayout::computedIntrinsicWidth const):
(WebCore::Layout::InlineFormattingContext::InlineLayout::createDisplayRuns):

  • layout/inlineformatting/InlineLine.cpp:

(WebCore::Layout::Line::Line):
(WebCore::Layout::Line::close):
(WebCore::Layout::Line::removeTrailingTrimmableContent):
(WebCore::Layout::Line::moveLogicalLeft):
(WebCore::Layout::Line::appendNonBreakableSpace):
(WebCore::Layout::Line::appendTextContent):
(WebCore::Layout::Line::appendNonReplacedInlineBox):
(WebCore::Layout::Line::adjustBaselineAndLineHeight):

  • layout/inlineformatting/InlineLine.h:

(WebCore::Layout::Line::Content::runs const):
(WebCore::Layout::Line::availableWidth const):
(WebCore::Layout::Line::lineBox const):
(WebCore::Layout::Line::logicalTop const):
(WebCore::Layout::Line::logicalBottom const):
(WebCore::Layout::Line::logicalLeft const):
(WebCore::Layout::Line::logicalHeight const):
(WebCore::Layout::Line::contentLogicalWidth const):
(WebCore::Layout::Line::contentLogicalRight const):
(WebCore::Layout::Line::baselineOffset const):
(WebCore::Layout::Line::Content::lineBox const): Deleted.
(WebCore::Layout::Line::Content::lineBox): Deleted.
(WebCore::Layout::Line::Content::setLineBox): Deleted.

3:41 PM Changeset in webkit [250403] by dino@apple.com
  • 2 edits in trunk/Tools

Build fix.

  • TestWebKitAPI/Tests/WebKitCocoa/ContextMenus.mm:

(-[TestContextMenuImageWithoutConfigurationUIDelegate webView:contextMenuConfigurationForElement:completionHandler:]): Deleted.
(-[TestContextMenuImageWithoutConfigurationUIDelegate webView:contextMenuWillPresentForElement:]): Deleted.
(-[TestContextMenuImageWithoutConfigurationUIDelegate webView:contextMenuForElement:willCommitWithAnimator:]): Deleted.
(-[TestContextMenuImageWithoutConfigurationUIDelegate webView:contextMenuDidEndForElement:]): Deleted.

3:19 PM Changeset in webkit [250402] by russell_e@apple.com
  • 2 edits in trunk/LayoutTests

[ iOS ] Layout Test scrollingcoordinator/ios/fixed-scrolling-with-keyboard.html is a Flaky Failure
https://bugs.webkit.org/show_bug.cgi?id=202283

Unreviewed Test Gardening.

  • platform/ios/TestExpectations: Marked

scrollingcoordinator/ios/fixed-scrolling-with-keyboard.html as flaky

3:19 PM Changeset in webkit [250401] by dino@apple.com
  • 4 edits in trunk

ContextMenu on a link in an email no longer shows web preview
https://bugs.webkit.org/show_bug.cgi?id=201120
<rdar://54353617>

Reviewed by Wenson Hsieh.

Source/WebKit:

Only go down the image path if we are not also a link.

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView continueContextMenuInteraction:]):

Tools:

Test context menus on a link that is also an image.

  • TestWebKitAPI/Tests/WebKitCocoa/ContextMenus.mm:

(contextMenuWebViewDriver):
(-[TestContextMenuImageWithoutConfigurationUIDelegate webView:contextMenuConfigurationForElement:completionHandler:]):
(-[TestContextMenuImageWithoutConfigurationUIDelegate webView:contextMenuWillPresentForElement:]):
(-[TestContextMenuImageWithoutConfigurationUIDelegate webView:contextMenuForElement:willCommitWithAnimator:]):
(-[TestContextMenuImageWithoutConfigurationUIDelegate webView:contextMenuDidEndForElement:]):
(TEST):

2:54 PM Changeset in webkit [250400] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

run-safari --ios-simulator is no longer working with Xcode 11
https://bugs.webkit.org/show_bug.cgi?id=199852

Path of MobileSafari.app has changed in Xcode 11. This patch updates
the run-safari script to use the new path. This removes support for
running Safari on iOS < 13, see discussions on bug 177595.

Patch by Frederic Wang <fwang@igalia.com> on 2019-09-26
Reviewed by Jonathan Bedard.

  • Scripts/webkitdirs.pm:

(iosSimulatorApplicationsPath):

2:51 PM Changeset in webkit [250399] by zhifei_fang@apple.com
  • 4 edits
    2 adds in trunk/Tools

[results.webkit.org] Timeline support Image inner label
https://bugs.webkit.org/show_bug.cgi?id=202180

Reviewed by Jonathan Bedard.

  • resultsdbpy/resultsdbpy/view/static/js/expectations.js:
  • resultsdbpy/resultsdbpy/view/static/library/css/webkit.css:

(.lengend>.item .dot img): support img symbol for lengend and dot

  • resultsdbpy/resultsdbpy/view/static/library/js/components/TimelineComponents.js:

(Timeline.CanvasSeriesComponent): Support user pass a Image object or a image url as inner label

2:37 PM Changeset in webkit [250398] by Chris Dumez
  • 149 edits in trunk

Stop using testRunner.overridePreference() to turn on Page Cache
https://bugs.webkit.org/show_bug.cgi?id=202274

Reviewed by Alex Christensen.

Source/WebKit:

  • WebProcess/InjectedBundle/InjectedBundle.cpp:

(WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner):

Tools:

  • DumpRenderTree/TestRunner.cpp:

(overridePreferenceCallback):

  • WebKitTestRunner/InjectedBundle/TestRunner.cpp:

(WTR::TestRunner::overridePreference):

LayoutTests:

Stop using testRunner.overridePreference() to turn on Page Cache, as this does not work
for WebKit2 when navigating cross-origin due to process swapping. Instead, update tests
to rely on <!-- webkit-test-runner [ enablePageCache=true ] -->.

  • animations/resume-after-page-cache.html:
  • compositing/accelerated-layers-after-back.html:
  • compositing/iframes/page-cache-layer-tree.html:
  • compositing/page-cache-back-crash.html:
  • compositing/show-composited-iframe-on-back-button.html:
  • editing/mac/input/unconfirmed-text-navigation-with-page-cache.html:
  • fast/css/fontloader-page-cache.html:
  • fast/dom/DeviceMotion/no-page-cache.html:
  • fast/dom/DeviceOrientation/event-after-navigation.html:
  • fast/dom/DeviceOrientation/no-page-cache.html:
  • fast/dom/Window/timer-resume-on-navigation-back.html:
  • fast/events/onunload-back-to-page-cache.html:
  • fast/events/pagehide-timeout-expected.txt:
  • fast/events/pagehide-timeout.html:
  • fast/events/pagehide-xhr-open-expected.txt:
  • fast/events/pagehide-xhr-open.html:
  • fast/events/pageshow-pagehide-on-back-cached-with-frames.html:
  • fast/events/pageshow-pagehide-on-back-cached.html:
  • fast/events/suspend-timers-expected.txt:
  • fast/events/suspend-timers.html:
  • fast/forms/autocomplete-off-with-default-value-does-not-clear.html:
  • fast/frames/frame-crash-with-page-cache.html:
  • fast/frames/frame-unload-navigate-and-setTimeout-assert-fail.html:
  • fast/frames/page-hide-document-open.html:
  • fast/frames/restoring-page-cache-should-not-run-scripts-via-style-update.html:
  • fast/frames/restoring-page-cache-should-not-run-scripts.html:
  • fast/harness/page-cache-crash-on-data-urls.html:
  • fast/harness/use-page-cache-expected.txt:
  • fast/harness/use-page-cache.html:
  • fast/history/back-from-page-with-focused-iframe.html:
  • fast/history/go-back-to-iframe-with-plugin.html:
  • fast/history/go-back-to-object-subframe.html:
  • fast/history/history-back-while-pdf-in-pagecache.html:
  • fast/history/page-cache-MessagePort-pending-message.html:
  • fast/history/page-cache-after-window-open.html:
  • fast/history/page-cache-back-navigation-crash.html:
  • fast/history/page-cache-clearing-expected.txt:
  • fast/history/page-cache-clearing.html:
  • fast/history/page-cache-closed-audiocontext.html:
  • fast/history/page-cache-createObjectURL-using-open-panel.html:
  • fast/history/page-cache-createObjectURL.html:
  • fast/history/page-cache-destroy-document.html:
  • fast/history/page-cache-element-state-focused.html:
  • fast/history/page-cache-execute-script-during-restore.html:
  • fast/history/page-cache-geolocation-active-oneshot.html:
  • fast/history/page-cache-geolocation-active-watcher.html:
  • fast/history/page-cache-geolocation.html:
  • fast/history/page-cache-indexed-closed-db.html:
  • fast/history/page-cache-indexed-opened-db.html:
  • fast/history/page-cache-media-source-closed-2.html:
  • fast/history/page-cache-media-source-closed.html:
  • fast/history/page-cache-media-source-opened.html:
  • fast/history/page-cache-navigate-during-restore.html:
  • fast/history/page-cache-notification-non-suspendable.html:
  • fast/history/page-cache-notification-suspendable.html:
  • fast/history/page-cache-removed-source-buffer.html:
  • fast/history/page-cache-running-audiocontext.html:
  • fast/history/page-cache-suspended-audiocontext.html:
  • fast/history/page-cache-webdatabase-no-transaction-db-expected.txt:
  • fast/history/page-cache-webdatabase-no-transaction-db.html:
  • fast/history/page-cache-webdatabase-pending-transaction.html:
  • fast/history/page-cache-with-opener.html:
  • fast/history/pagehide-remove-iframe-crash.html:
  • fast/history/resources/page-cache-window-with-iframe.html:
  • fast/history/resources/page-cache-window-with-opener.html:
  • fast/history/timed-refresh-in-cached-frame.html:
  • fast/images/animated-gif-restored-from-bfcache.html:
  • fast/loader/frames-with-unload-handlers-in-page-cache.html:
  • fast/loader/image-in-page-cache.html:
  • fast/loader/input-element-page-cache-crash.html:
  • fast/loader/navigate-with-new-target-after-back-forward-navigation.html:
  • fast/loader/navigate-with-post-to-new-target-after-back-forward-navigation.html:
  • fast/loader/scroll-position-restored-on-back.html:
  • fast/loader/stateobjects/no-popstate-when-back-to-stateless-entry-with-page-cache.html:
  • fast/loader/stateobjects/popstate-fires-with-page-cache.html:
  • fast/loader/unschedule-relayout-after-unload.html:
  • fast/loader/window-properties-restored-from-page-cache.html:
  • fast/overflow/horizontal-scroll-after-back.html:
  • fast/scrolling/iframe-scrollable-after-back.html:
  • fast/scrolling/ios/scroll-events-back-forward-after-pageshow.html:
  • fast/scrolling/ios/scroll-events-back-forward.html:
  • fast/scrolling/ios/touch-scroll-back-forward.html:
  • fast/scrolling/overflow-scrollable-after-back.html:
  • fast/scrolling/page-cache-back-overflow-scroll-restore.html:
  • fast/text-autosizing/ios/text-autosizing-after-back.html:
  • fast/viewport/ios/viewport-shrink-to-fit-on-new-navigation.html:
  • fast/viewport/viewport-128.html:
  • http/tests/cache/display-image-unset-allows-cached-image-load.html:
  • http/tests/loading/main-resource-delegates-on-back-navigation-expected.txt:
  • http/tests/loading/main-resource-delegates-on-back-navigation.html:
  • http/tests/loading/unfinished-load-back-to-cached-page-callbacks.html:
  • http/tests/loading/unfinished-main-resource-back-to-cached-page-callbacks.html:
  • http/tests/media/reload-after-dialog.html:
  • http/tests/navigation/go-back-to-error-page.html:
  • http/tests/navigation/https-in-page-cache.html:
  • http/tests/navigation/https-no-store-subframe-in-page-cache.html:
  • http/tests/navigation/image-load-in-pagehide-handler.html:
  • http/tests/navigation/page-cache-fragment-referrer.html:
  • http/tests/navigation/page-cache-iframe-no-current-historyItem.html:
  • http/tests/navigation/page-cache-iframe-provisional-load-async-delegates.html:
  • http/tests/navigation/page-cache-iframe-provisional-load.html:
  • http/tests/navigation/page-cache-pending-image-load-cache-partition.html:
  • http/tests/navigation/page-cache-pending-image-load.html:
  • http/tests/navigation/page-cache-pending-ping-load-cross-origin.html:
  • http/tests/navigation/page-cache-pending-ping-load-same-origin.html:
  • http/tests/navigation/page-cache-xhr-in-pagehide-expected.txt:
  • http/tests/navigation/page-cache-xhr-in-pagehide.html:
  • http/tests/navigation/page-cache-xhr.html:
  • http/tests/navigation/resources/https-in-page-cache-1.php:
  • http/tests/navigation/resources/https-in-page-cache-2.php:
  • http/tests/navigation/resources/https-in-page-cache-3.html:
  • http/tests/navigation/resources/https-no-store-subframe-in-page-cache.html:
  • http/tests/navigation/subframe-pagehide-handler-starts-load.html:
  • http/tests/navigation/subframe-pagehide-handler-starts-load2.html:
  • http/tests/security/cross-origin-window-open-insert-script.html:
  • http/tests/security/cross-origin-window-open-javascript-url.html:
  • http/tests/security/navigate-when-restoring-cached-page.html:
  • http/tests/security/xss-DENIED-click-and-form-submission-from-inactive-domwindow.html:
  • http/tests/security/xss-DENIED-script-inject-into-inactive-window.html:
  • http/tests/security/xss-DENIED-script-inject-into-inactive-window2-pson.html:
  • http/tests/security/xss-DENIED-script-inject-into-inactive-window2.html:
  • http/tests/security/xss-DENIED-script-inject-into-inactive-window3.html:
  • http/tests/websocket/tests/hybi/closed-when-entering-page-cache.html:
  • http/tests/websocket/tests/hybi/stop-on-resume-in-error-handler.html:
  • http/tests/workers/service/client-added-to-clients-when-restored-from-page-cache.html:
  • http/tests/workers/service/client-removed-from-clients-while-in-page-cache.html:
  • http/wpt/beacon/support/sendBeacon-onpagehide-window.html:
  • legacy-animation-engine/animations/resume-after-page-cache.html:
  • loader/go-back-cached-main-resource.html:
  • loader/go-back-to-different-window-size.html:
  • media/crash-closing-page-with-media-as-plugin-fallback.html:
  • media/restore-from-page-cache.html:
  • platform/ios/ios/fixed/fixed-back-forward.html:
  • plugins/crash-restoring-plugin-page-from-page-cache.html:
  • plugins/frameset-with-plugin-frame.html:
  • plugins/netscape-plugin-page-cache-works.html:
  • swipe/basic-cached-back-swipe.html:
  • swipe/main-frame-pinning-requirement.html:
  • swipe/pushState-cached-back-swipe.html:
  • swipe/pushState-programmatic-back-while-swiping-crash.html:
  • swipe/pushstate-with-manual-scrollrestoration.html:
  • tiled-drawing/scrolling/null-parent-back-crash.html:
  • tiled-drawing/tiled-drawing-scroll-position-page-cache-restoration.html:
2:36 PM Changeset in webkit [250397] by jiewen_tan@apple.com
  • 2 edits in trunk/Source/WebCore

REGRESSION: [ Catalina WK2 ] http/wpt/webauthn/public-key-credential-create-success-u2f.https.html is failing
https://bugs.webkit.org/show_bug.cgi?id=201620

Unreviewed, roll back part of r249737 to confirm the cause.

  • Modules/webauthn/fido/U2fResponseConverter.cpp:

(fido::WebCore::createAttestedCredentialDataFromU2fRegisterResponse):

1:09 PM Changeset in webkit [250396] by Jonathan Bedard
  • 3 edits in trunk/Tools

results.webkit.org: Use cursor: pointer for clickable elements
https://bugs.webkit.org/show_bug.cgi?id=202268

Rubber-stamped by Aakash Jain.

  • resultsdbpy/resultsdbpy/view/static/js/drawer.js: Give collapse button a pointer for cursor.
  • resultsdbpy/resultsdbpy/view/templates/search.html: Make 'X' to close test timeline a link-button.
1:05 PM Changeset in webkit [250395] by Truitt Savell
  • 7 edits in trunk

Unreviewed, rolling out r250385.

Broke imported/w3c/web-platform-tests/svg/animations/syncbase-
remove-add-while-running.html on all platforms. Which was
caught by EWS

Reverted changeset:

"Non-callable "handleEvent" property is silently ignored"
https://bugs.webkit.org/show_bug.cgi?id=200066
https://trac.webkit.org/changeset/250385

12:20 PM Changeset in webkit [250394] by aestes@apple.com
  • 2 edits in trunk/Source/WebKit

Crash under WebPage::beginPrinting when m_printContext becomes null due to synchronous layout
https://bugs.webkit.org/show_bug.cgi?id=202171
<rdar://problem/49731211>

Reviewed by Tim Horton.

Speculatively fix a null pointer dereference crash in WebPage::beginPrinting.

WebPage::beginPrinting creates a PrintContext, stores it in m_printContext, then calls
PrintContext::begin which forces a synchronous, paginated layout. If a post-layout task
executes script, that might result in the WebPage being closed and m_printContext being set
to nullptr.

Guard against this in WebPage::beginPrinting by adding a null check before calling
PrintContext::computePageRects.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::beginPrinting):

12:16 PM Changeset in webkit [250393] by commit-queue@webkit.org
  • 29 edits
    128 adds in trunk

Source/WebCore:
Enable LayoutTests using ResourceLoadStatistics SQLite backend (195420)
https://bugs.webkit.org/show_bug.cgi?id=195420
<rdar://problem/54213551>

Patch by Kate Cheney <Kate Cheney> on 2019-09-26
Reviewed by Brent Fulgham.

Tests: http/tests/resourceLoadStatistics/add-blocking-to-redirect-database.html

http/tests/resourceLoadStatistics/blocking-in-web-worker-script-import-database.html
http/tests/resourceLoadStatistics/cap-cache-max-age-for-prevalent-resource-database.html
http/tests/resourceLoadStatistics/capped-lifetime-for-cookie-set-in-js-database.html
http/tests/resourceLoadStatistics/capped-lifetime-for-cookie-set-in-js-with-link-decoration-same-site-database.html
http/tests/resourceLoadStatistics/capped-lifetime-for-cookie-set-in-js-with-link-fragment-from-prevalent-resource-database.html
http/tests/resourceLoadStatistics/capped-lifetime-for-cookie-set-in-js-with-link-query-and-fragment-from-prevalent-resource-database.html
http/tests/resourceLoadStatistics/capped-lifetime-for-cookie-set-in-js-with-link-query-from-prevalent-resource-database.html
http/tests/resourceLoadStatistics/capped-lifetime-for-cookie-set-in-js-without-link-decoration-from-prevalent-resource-database.html
http/tests/resourceLoadStatistics/classify-as-non-prevalent-based-on-mixed-statistics-database.html
http/tests/resourceLoadStatistics/classify-as-non-prevalent-based-on-sub-frame-under-top-frame-origins-database.html
http/tests/resourceLoadStatistics/classify-as-non-prevalent-based-on-subresource-under-top-frame-origins-database.html
http/tests/resourceLoadStatistics/classify-as-non-prevalent-based-on-subresource-unique-redirects-to-database.html
http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-mixed-statistics-database.html
http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-sub-frame-under-top-frame-origins-database.html
http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-redirect-collusion-database.html
http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-redirect-to-prevalent-database.html
http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-under-top-frame-origins-database.html
http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-unique-redirects-to-database.html
http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-top-frame-redirect-collusion-database.html
http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-top-frame-redirect-to-prevalent-database.html
http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-top-frame-unique-redirects-to-database.html
http/tests/resourceLoadStatistics/classify-as-very-prevalent-based-on-mixed-statistics-database.html
http/tests/resourceLoadStatistics/clear-in-memory-and-persistent-store-database.html
http/tests/resourceLoadStatistics/clear-in-memory-and-persistent-store-one-hour-database.html
http/tests/resourceLoadStatistics/cookie-deletion-database.html
http/tests/resourceLoadStatistics/cookies-with-and-without-user-interaction-database.html
http/tests/resourceLoadStatistics/delete-script-accessible-cookies-database.html
http/tests/resourceLoadStatistics/do-not-block-top-level-navigation-redirect-database.html
http/tests/resourceLoadStatistics/do-not-capture-statistics-for-simple-top-navigations-database.html
http/tests/resourceLoadStatistics/do-not-remove-blocking-in-redirect-database.html
http/tests/resourceLoadStatistics/do-not-switch-session-on-navigation-to-prevalent-without-interaction-database.html
http/tests/resourceLoadStatistics/downgraded-referrer-for-navigation-with-link-query-from-prevalent-resource-database.html
http/tests/resourceLoadStatistics/enable-debug-mode-database.html
http/tests/resourceLoadStatistics/grandfathering-database.html
http/tests/resourceLoadStatistics/non-prevalent-resource-with-user-interaction-database.html
http/tests/resourceLoadStatistics/non-prevalent-resource-without-user-interaction-database.html
http/tests/resourceLoadStatistics/non-prevalent-resources-can-access-cookies-in-a-third-party-context-database.html
http/tests/resourceLoadStatistics/non-sandboxed-iframe-redirect-ip-to-localhost-to-ip-database.html
http/tests/resourceLoadStatistics/non-sandboxed-iframe-redirect-localhost-to-ip-to-localhost-database.html
http/tests/resourceLoadStatistics/non-sandboxed-nesting-iframe-with-non-sandboxed-iframe-redirect-ip-to-localhost-to-ip-database.html
http/tests/resourceLoadStatistics/non-sandboxed-nesting-iframe-with-non-sandboxed-iframe-redirect-localhost-to-ip-to-localhost-database.html
http/tests/resourceLoadStatistics/non-sandboxed-nesting-iframe-with-sandboxed-iframe-redirect-ip-to-localhost-to-ip-database.html
http/tests/resourceLoadStatistics/non-sandboxed-nesting-iframe-with-sandboxed-iframe-redirect-localhost-to-ip-to-localhost-database.html
http/tests/resourceLoadStatistics/ping-to-prevalent-resource-database.html
http/tests/resourceLoadStatistics/prevalent-resource-handled-keydown-database.html
http/tests/resourceLoadStatistics/prevalent-resource-unhandled-keydown-database.html
http/tests/resourceLoadStatistics/prevalent-resource-with-user-interaction-database.html
http/tests/resourceLoadStatistics/prevalent-resource-with-user-interaction-timeout-database.html
http/tests/resourceLoadStatistics/prevalent-resource-without-user-interaction-database.html
http/tests/resourceLoadStatistics/prune-statistics-database.html
http/tests/resourceLoadStatistics/sandboxed-iframe-redirect-ip-to-localhost-to-ip-database.html
http/tests/resourceLoadStatistics/sandboxed-iframe-redirect-localhost-to-ip-to-localhost-database.html
http/tests/resourceLoadStatistics/sandboxed-nesting-iframe-with-non-sandboxed-iframe-redirect-ip-to-localhost-to-ip-database.html
http/tests/resourceLoadStatistics/sandboxed-nesting-iframe-with-non-sandboxed-iframe-redirect-localhost-to-ip-to-localhost-database.html
http/tests/resourceLoadStatistics/sandboxed-nesting-iframe-with-sandboxed-iframe-redirect-ip-to-localhost-to-ip-database.html
http/tests/resourceLoadStatistics/sandboxed-nesting-iframe-with-sandboxed-iframe-redirect-localhost-to-ip-to-localhost-database.html
http/tests/resourceLoadStatistics/set-custom-prevalent-resource-in-debug-mode-database.html
http/tests/resourceLoadStatistics/strip-referrer-to-origin-for-prevalent-subresource-redirects-database.html
http/tests/resourceLoadStatistics/strip-referrer-to-origin-for-prevalent-subresource-requests-database.html
http/tests/resourceLoadStatistics/switch-session-on-navigation-to-prevalent-with-interaction-database.html
http/tests/resourceLoadStatistics/user-interaction-in-cross-origin-sub-frame-database.html
http/tests/resourceLoadStatistics/user-interaction-only-reported-once-within-short-period-of-time-database.html
http/tests/resourceLoadStatistics/user-interaction-reported-after-website-data-removal-database.html

  • platform/sql/SQLiteDatabase.h:

Added WEBCORE_EXPORT prefix to 2 functions needed in the ITP Database
to clear out the database.

Source/WebKit:
Enable LayoutTests using ResourceLoadStatistics SQLite backend (195420)
https://bugs.webkit.org/show_bug.cgi?id=195420
<rdar://problem/54213551>

Patch by Kate Cheney <Kate Cheney> on 2019-09-26
Reviewed by Brent Fulgham.

Changed all RELEASE_LOG_ERROR() calls involving domain strings to
RELEASE_LOG_ERROR_IF_ALLOWED() to prevent leaking information about
the domain strings only if sessionID.isAlwaysOnLoggingAllowed().

  • NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:

(WebKit::ResourceLoadStatisticsDatabaseStore::ResourceLoadStatisticsDatabaseStore):
Added autovacuuming to the constructor to avoid manually calling
runVacuumCommand(). Changed constructor to take in sessionID so it
can use RELEASE_LOG_ERROR_IF_ALLOWED which requires the sessionID.

(WebKit::ResourceLoadStatisticsDatabaseStore::prepareStatements):
Added 2 statements that were not being prepared.

(WebKit::ResourceLoadStatisticsDatabaseStore::relationshipExists const):
Corrected incorrect capitalization. Added check for nullopt in case
domainID is for a domain not in the database yet.

(WebKit::ResourceLoadStatisticsDatabaseStore::domainID const):
Changed return value to Optional<unsigned>. Some tests were directly
checking for subframes under top frame domains on domains that had
not been inserted yet. Now, domainID() won't crash but will return
a nullopt value which can be checked to know that the tests failed.

(WebKit::ResourceLoadStatisticsDatabaseStore::insertDomainRelationships):
Added a check to assure domainID exists and updated the domainID
interactions to work as Optionals.

(WebKit::ResourceLoadStatisticsDatabaseStore::populateFromMemoryStore):
Moved the prepareStatements() call after the vacuum command in the case
where the database is empty. Otherwise called it before returning.

(WebKit::ResourceLoadStatisticsDatabaseStore::recursivelyFindNonPrevalentDomainsThatRedirectedToThisDomain):
Added a space to the SQL commands to correct the syntax.

(WebKit::ResourceLoadStatisticsDatabaseStore::findNotVeryPrevalentResources):
Corrected a bug in the SQL command for querying
subframeUnderTopFrameDomain. The old query was asking for subresource.

(WebKit::ResourceLoadStatisticsDatabaseStore::reclassifyResources):
Spelling fix.

(WebKit::ResourceLoadStatisticsDatabaseStore::requestStorageAccess):
Changed string concatenation to binding.

(WebKit::ResourceLoadStatisticsDatabaseStore::grandfatherDataForDomains):
The grandfathering.html test was failing because domains were being
"set" to grandfathered in the database before being inserted. This fix
ensures all domains before setting the grandfathering flag.

(WebKit::ResourceLoadStatisticsDatabaseStore::logFrameNavigation):
Multiple tests were failing because the query to insert the relationship
for the source domain relies on the target domain being in the
ObservedDomains table. This patch ensures all domains are added before
performing the query.

(WebKit::ResourceLoadStatisticsDatabaseStore::setUserInteraction):
Added a != SQLITE_OK check to make sure an error is logged if the
statement fails to bind.

(WebKit::ResourceLoadStatisticsDatabaseStore::clearUserInteraction):
Changed string concatenation to binding.

(WebKit::ResourceLoadStatisticsDatabaseStore::hasHadUserInteraction):
The SQL statement was being bound to a value and not being reset. This
patch resets the statement after binding. Additionally, the step()
function was being compared to SQLITE_DONE instead of SQLITE_ROW,
causing an error if the query returned results. The
ASSERT_NOT_REACHED() was causing null searches to crash instead of
returning false (i.e. if a domain is not in the database it should
return that it has no user interaction instead of crashing).

(WebKit::ResourceLoadStatisticsDatabaseStore::setPrevalentResource):
Updated domainID call to act as an Optional.

(WebKit::ResourceLoadStatisticsDatabaseStore::predicateValueForDomain const):
The SQL statement was being bound to a value and not being reset. This
patch resets the statement after binding. SQLITE_DONE changed to
SQLITE_ROW to return non-empty query results. ASSERT_NOT_REACHED()
removed for the same reasons as above.

(WebKit::ResourceLoadStatisticsDatabaseStore::ensureResourceStatisticsForRegistrableDomain):
Fixed the release log statement which was logging the wrong function
name.

(WebKit::ResourceLoadStatisticsDatabaseStore::clearDatabaseContents):
Clears the database and rebuilds the tables on a clear command to
match the functionality in the Memory Store.

(WebKit::ResourceLoadStatisticsDatabaseStore::clear):
Call the clearDatabaseContents function to match the functionality
in the Memory Store.

(WebKit::ResourceLoadStatisticsDatabaseStore::hasUserGrantedStorageAccessThroughPrompt const):
Updated domainID call to act as an Optional.

(WebKit::ResourceLoadStatisticsDatabaseStore::hasHadUnexpiredRecentUserInteraction):
Tests were failing because shouldRemoveAllWebsiteDataFor() was not
checking for expired user interaction. Matched functionality in the
Memory Store.

(WebKit::ResourceLoadStatisticsDatabaseStore::shouldRemoveAllWebsiteDataFor):
Tests were failing because shouldRemoveAllWebsiteDataFor() was not
checking for expired user interaction. Matched functionality in the
Memory Store.

(WebKit::ResourceLoadStatisticsDatabaseStore::registrableDomainsToRemoveWebsiteDataFor):
Spelling fix.

(WebKit::ResourceLoadStatisticsDatabaseStore::pruneStatisticsIfNeeded):
Last seen should be sorted in ascending order because you want to
prune the older statistics first, which will have a lower lastSeen
field (secondsSinceEpoch() will be lower for older values).

(WebKit::ResourceLoadStatisticsDatabaseStore::shouldRemoveAllWebsiteDataFor const): Deleted.
Deleted const specifier because the function needs to clear the
database.

  • NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h:

Declared new functions. Updated spelling error (registerable -->
registrable). Updated constructor to take sessionID.

  • NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:

(WebKit::WebResourceLoadStatisticsStore::WebResourceLoadStatisticsStore):
ITP database flag now is stored in the NetworkProcess.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::initializeNetworkProcess):
Set the ITP database flag which is now stored in the Network Process.

(WebKit::NetworkProcess::setUseITPDatabase):

  • NetworkProcess/NetworkProcess.h:

(WebKit::NetworkProcess::isITPDatabaseEnabled const):

  • NetworkProcess/NetworkProcess.messages.in:

Passed the setUseITPDatabase flag to the initialization function
of the statistics store to enable the database backend.

  • NetworkProcess/NetworkSession.cpp:

(WebKit::NetworkSession::NetworkSession):
SandboxExtension::consumePermanently was not getting called on the
WebKitTestRunner resourceLoadStatistics path. This was preventing
the database file from opening.

(WebKit::NetworkSession::recreateResourceLoadStatisticStore):
Destroy old WebResourceLoadStatisticsStore and create a new one using
the ITP database.

  • NetworkProcess/NetworkSession.h:
  • UIProcess/API/C/WKWebsiteDataStoreRef.cpp:

(WKWebsiteDataStoreSetUseITPDatabase):

  • UIProcess/API/C/WKWebsiteDataStoreRef.h:
  • UIProcess/Network/NetworkProcessProxy.cpp:

(WebKit::NetworkProcessProxy::setUseITPDatabase):

  • UIProcess/Network/NetworkProcessProxy.h:
  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::setUseITPDatabase):

  • UIProcess/WebsiteData/WebsiteDataStore.h:

Passed the setUseITPDatabase flag to the initialization function
of the statistics store to enable the database backend.

Tools:
Enable LayoutTests using ResourceLoadStatistics SQLite backend (195420)
https://bugs.webkit.org/show_bug.cgi?id=195420
<rdar://problem/54213551>

Patch by Kate Cheney <Kate Cheney> on 2019-09-26
Reviewed by Brent Fulgham.

Added in logic to send a message from the UIProcess to the Network
Process which will initalize the ITP Database backend to allow for
layout testing.

  • WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
  • WebKitTestRunner/InjectedBundle/TestRunner.cpp:

(WTR::TestRunner::setUseITPDatabase):

  • WebKitTestRunner/InjectedBundle/TestRunner.h:
  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::setUseITPDatabase):

  • WebKitTestRunner/TestController.h:
  • WebKitTestRunner/TestInvocation.cpp:

(WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle):

LayoutTests:
Enable LayoutTests using ResourceLoadStatistics SQLite backend (195420)
https://bugs.webkit.org/show_bug.cgi?id=195420
<rdar://problem/54213551>

Added a flag to all ITP tests to enable the ITP database backend to
allow for testing functionality against the memory store. Tests were
not created for telemetry-generation.html,
log-cross-site-load-with-link-decoration.html, or
website-data-removal-for-site-navigated-to-with-link-decoration.html,
because these rely on functions not yet implemented in the ITP database.
Additionally, added flags to some memory store tests to ensure they
are using the memory store before calling functions not implemented in
the database store yet.

Patch by Kate Cheney <Kate Cheney> on 2019-09-26
Reviewed by Brent Fulgham.

  • http/tests/resourceLoadStatistics/add-blocking-to-redirect-database-expected.txt: Added.
  • http/tests/resourceLoadStatistics/add-blocking-to-redirect-database.html: Added.
  • http/tests/resourceLoadStatistics/blocking-in-web-worker-script-import-database-expected.txt: Added.
  • http/tests/resourceLoadStatistics/blocking-in-web-worker-script-import-database.html: Added.
  • http/tests/resourceLoadStatistics/cap-cache-max-age-for-prevalent-resource-database-expected.txt: Added.
  • http/tests/resourceLoadStatistics/cap-cache-max-age-for-prevalent-resource-database.html: Added.
  • http/tests/resourceLoadStatistics/capped-lifetime-for-cookie-set-in-js-database-expected.txt: Added.
  • http/tests/resourceLoadStatistics/capped-lifetime-for-cookie-set-in-js-database.html: Added.
  • http/tests/resourceLoadStatistics/capped-lifetime-for-cookie-set-in-js-with-link-decoration-same-site-database-expected.txt: Added.
  • http/tests/resourceLoadStatistics/capped-lifetime-for-cookie-set-in-js-with-link-decoration-same-site-database.html: Added.
  • http/tests/resourceLoadStatistics/capped-lifetime-for-cookie-set-in-js-with-link-fragment-from-prevalent-resource-database-expected.txt: Added.
  • http/tests/resourceLoadStatistics/capped-lifetime-for-cookie-set-in-js-with-link-fragment-from-prevalent-resource-database.html: Added.
  • http/tests/resourceLoadStatistics/capped-lifetime-for-cookie-set-in-js-with-link-query-and-fragment-from-prevalent-resource-database-expected.txt: Added.
  • http/tests/resourceLoadStatistics/capped-lifetime-for-cookie-set-in-js-with-link-query-and-fragment-from-prevalent-resource-database.html: Added.
  • http/tests/resourceLoadStatistics/capped-lifetime-for-cookie-set-in-js-with-link-query-from-prevalent-resource-database-expected.txt: Added.
  • http/tests/resourceLoadStatistics/capped-lifetime-for-cookie-set-in-js-with-link-query-from-prevalent-resource-database.html: Added.
  • http/tests/resourceLoadStatistics/capped-lifetime-for-cookie-set-in-js-without-link-decoration-from-prevalent-resource-database-expected.txt: Added.
  • http/tests/resourceLoadStatistics/capped-lifetime-for-cookie-set-in-js-without-link-decoration-from-prevalent-resource-database.html: Added.
  • http/tests/resourceLoadStatistics/classify-as-non-prevalent-based-on-mixed-statistics-database-expected.txt: Added.
  • http/tests/resourceLoadStatistics/classify-as-non-prevalent-based-on-mixed-statistics-database.html: Added.
  • http/tests/resourceLoadStatistics/classify-as-non-prevalent-based-on-sub-frame-under-top-frame-origins-database-expected.txt: Added.
  • http/tests/resourceLoadStatistics/classify-as-non-prevalent-based-on-sub-frame-under-top-frame-origins-database.html: Added.
  • http/tests/resourceLoadStatistics/classify-as-non-prevalent-based-on-subresource-under-top-frame-origins-database-expected.txt: Added.
  • http/tests/resourceLoadStatistics/classify-as-non-prevalent-based-on-subresource-under-top-frame-origins-database.html: Added.
  • http/tests/resourceLoadStatistics/classify-as-non-prevalent-based-on-subresource-unique-redirects-to-database-expected.txt: Added.
  • http/tests/resourceLoadStatistics/classify-as-non-prevalent-based-on-subresource-unique-redirects-to-database.html: Added.
  • http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-mixed-statistics-database-expected.txt: Added.
  • http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-mixed-statistics-database.html: Added.
  • http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-sub-frame-under-top-frame-origins-database-expected.txt: Added.
  • http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-sub-frame-under-top-frame-origins-database.html: Added.
  • http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-redirect-collusion-database-expected.txt: Added.
  • http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-redirect-collusion-database.html: Added.
  • http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-redirect-to-prevalent-database-expected.txt: Added.
  • http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-redirect-to-prevalent-database.html: Added.
  • http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-under-top-frame-origins-database-expected.txt: Added.
  • http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-under-top-frame-origins-database.html: Added.
  • http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-unique-redirects-to-database-expected.txt: Added.
  • http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-unique-redirects-to-database.html: Added.
  • http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-top-frame-redirect-collusion-database-expected.txt: Added.
  • http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-top-frame-redirect-collusion-database.html: Added.
  • http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-top-frame-redirect-to-prevalent-database-expected.txt: Added.
  • http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-top-frame-redirect-to-prevalent-database.html: Added.
  • http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-top-frame-unique-redirects-to-database-expected.txt: Added.
  • http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-top-frame-unique-redirects-to-database.html: Added.
  • http/tests/resourceLoadStatistics/classify-as-very-prevalent-based-on-mixed-statistics-database-expected.txt: Added.
  • http/tests/resourceLoadStatistics/classify-as-very-prevalent-based-on-mixed-statistics-database.html: Added.
  • http/tests/resourceLoadStatistics/clear-in-memory-and-persistent-store-database-expected.txt: Added.
  • http/tests/resourceLoadStatistics/clear-in-memory-and-persistent-store-database.html: Added.
  • http/tests/resourceLoadStatistics/clear-in-memory-and-persistent-store-one-hour-database-expected.txt: Added.
  • http/tests/resourceLoadStatistics/clear-in-memory-and-persistent-store-one-hour-database.html: Added.
  • http/tests/resourceLoadStatistics/cookie-deletion-database-expected.txt: Added.
  • http/tests/resourceLoadStatistics/cookie-deletion-database.html: Added.
  • http/tests/resourceLoadStatistics/cookies-with-and-without-user-interaction-database-expected.txt: Added.
  • http/tests/resourceLoadStatistics/cookies-with-and-without-user-interaction-database.html: Added.
  • http/tests/resourceLoadStatistics/delete-script-accessible-cookies-database-expected.txt: Added.
  • http/tests/resourceLoadStatistics/delete-script-accessible-cookies-database.html: Added.
  • http/tests/resourceLoadStatistics/do-not-block-top-level-navigation-redirect-database-expected.txt: Added.
  • http/tests/resourceLoadStatistics/do-not-block-top-level-navigation-redirect-database.html: Added.
  • http/tests/resourceLoadStatistics/do-not-capture-statistics-for-simple-top-navigations-database-expected.txt: Added.
  • http/tests/resourceLoadStatistics/do-not-capture-statistics-for-simple-top-navigations-database.html: Added.
  • http/tests/resourceLoadStatistics/do-not-remove-blocking-in-redirect-database-expected.txt: Added.
  • http/tests/resourceLoadStatistics/do-not-remove-blocking-in-redirect-database.html: Added.
  • http/tests/resourceLoadStatistics/do-not-switch-session-on-navigation-to-prevalent-without-interaction-database-expected.txt: Added.
  • http/tests/resourceLoadStatistics/do-not-switch-session-on-navigation-to-prevalent-without-interaction-database.html: Added.
  • http/tests/resourceLoadStatistics/downgraded-referrer-for-navigation-with-link-query-from-prevalent-resource-database-expected.txt: Added.
  • http/tests/resourceLoadStatistics/downgraded-referrer-for-navigation-with-link-query-from-prevalent-resource-database.html: Added.
  • http/tests/resourceLoadStatistics/enable-debug-mode-database-expected.txt: Added.
  • http/tests/resourceLoadStatistics/enable-debug-mode-database.html: Added.
  • http/tests/resourceLoadStatistics/grandfathering-database-expected.txt: Added.
  • http/tests/resourceLoadStatistics/grandfathering-database.html: Added.
  • http/tests/resourceLoadStatistics/log-cross-site-load-with-link-decoration.html:
  • http/tests/resourceLoadStatistics/non-prevalent-resource-with-user-interaction-database-expected.txt: Added.
  • http/tests/resourceLoadStatistics/non-prevalent-resource-with-user-interaction-database.html: Added.
  • http/tests/resourceLoadStatistics/non-prevalent-resource-without-user-interaction-database-expected.txt: Added.
  • http/tests/resourceLoadStatistics/non-prevalent-resource-without-user-interaction-database.html: Added.
  • http/tests/resourceLoadStatistics/non-prevalent-resources-can-access-cookies-in-a-third-party-context-database-expected.txt: Added.
  • http/tests/resourceLoadStatistics/non-prevalent-resources-can-access-cookies-in-a-third-party-context-database.html: Added.
  • http/tests/resourceLoadStatistics/non-sandboxed-iframe-redirect-ip-to-localhost-to-ip-database-expected.txt: Added.
  • http/tests/resourceLoadStatistics/non-sandboxed-iframe-redirect-ip-to-localhost-to-ip-database.html: Added.
  • http/tests/resourceLoadStatistics/non-sandboxed-iframe-redirect-localhost-to-ip-to-localhost-database-expected.txt: Added.
  • http/tests/resourceLoadStatistics/non-sandboxed-iframe-redirect-localhost-to-ip-to-localhost-database.html: Added.
  • http/tests/resourceLoadStatistics/non-sandboxed-nesting-iframe-with-non-sandboxed-iframe-redirect-ip-to-localhost-to-ip-database-expected.txt: Added.
  • http/tests/resourceLoadStatistics/non-sandboxed-nesting-iframe-with-non-sandboxed-iframe-redirect-ip-to-localhost-to-ip-database.html: Added.
  • http/tests/resourceLoadStatistics/non-sandboxed-nesting-iframe-with-non-sandboxed-iframe-redirect-localhost-to-ip-to-localhost-database-expected.txt: Added.
  • http/tests/resourceLoadStatistics/non-sandboxed-nesting-iframe-with-non-sandboxed-iframe-redirect-localhost-to-ip-to-localhost-database.html: Added.
  • http/tests/resourceLoadStatistics/non-sandboxed-nesting-iframe-with-sandboxed-iframe-redirect-ip-to-localhost-to-ip-database-expected.txt: Added.
  • http/tests/resourceLoadStatistics/non-sandboxed-nesting-iframe-with-sandboxed-iframe-redirect-ip-to-localhost-to-ip-database.html: Added.
  • http/tests/resourceLoadStatistics/non-sandboxed-nesting-iframe-with-sandboxed-iframe-redirect-localhost-to-ip-to-localhost-database-expected.txt: Added.
  • http/tests/resourceLoadStatistics/non-sandboxed-nesting-iframe-with-sandboxed-iframe-redirect-localhost-to-ip-to-localhost-database.html: Added.
  • http/tests/resourceLoadStatistics/ping-to-prevalent-resource-database-expected.txt: Added.
  • http/tests/resourceLoadStatistics/ping-to-prevalent-resource-database.html: Added.
  • http/tests/resourceLoadStatistics/prevalent-resource-handled-keydown-database-expected.txt: Added.
  • http/tests/resourceLoadStatistics/prevalent-resource-handled-keydown-database.html: Added.
  • http/tests/resourceLoadStatistics/prevalent-resource-unhandled-keydown-database-expected.txt: Added.
  • http/tests/resourceLoadStatistics/prevalent-resource-unhandled-keydown-database.html: Added.
  • http/tests/resourceLoadStatistics/prevalent-resource-with-user-interaction-database-expected.txt: Added.
  • http/tests/resourceLoadStatistics/prevalent-resource-with-user-interaction-database.html: Added.
  • http/tests/resourceLoadStatistics/prevalent-resource-with-user-interaction-timeout-database-expected.txt: Added.
  • http/tests/resourceLoadStatistics/prevalent-resource-with-user-interaction-timeout-database.html: Added.
  • http/tests/resourceLoadStatistics/prevalent-resource-without-user-interaction-database-expected.txt: Added.
  • http/tests/resourceLoadStatistics/prevalent-resource-without-user-interaction-database.html: Added.
  • http/tests/resourceLoadStatistics/prune-statistics-database-expected.txt: Added.
  • http/tests/resourceLoadStatistics/prune-statistics-database.html: Added.
  • http/tests/resourceLoadStatistics/sandboxed-iframe-redirect-ip-to-localhost-to-ip-database-expected.txt: Added.
  • http/tests/resourceLoadStatistics/sandboxed-iframe-redirect-ip-to-localhost-to-ip-database.html: Added.
  • http/tests/resourceLoadStatistics/sandboxed-iframe-redirect-localhost-to-ip-to-localhost-database-expected.txt: Added.
  • http/tests/resourceLoadStatistics/sandboxed-iframe-redirect-localhost-to-ip-to-localhost-database.html: Added.
  • http/tests/resourceLoadStatistics/sandboxed-nesting-iframe-with-non-sandboxed-iframe-redirect-ip-to-localhost-to-ip-database-expected.txt: Added.
  • http/tests/resourceLoadStatistics/sandboxed-nesting-iframe-with-non-sandboxed-iframe-redirect-ip-to-localhost-to-ip-database.html: Added.
  • http/tests/resourceLoadStatistics/sandboxed-nesting-iframe-with-non-sandboxed-iframe-redirect-localhost-to-ip-to-localhost-database-expected.txt: Added.
  • http/tests/resourceLoadStatistics/sandboxed-nesting-iframe-with-non-sandboxed-iframe-redirect-localhost-to-ip-to-localhost-database.html: Added.
  • http/tests/resourceLoadStatistics/sandboxed-nesting-iframe-with-sandboxed-iframe-redirect-ip-to-localhost-to-ip-database-expected.txt: Added.
  • http/tests/resourceLoadStatistics/sandboxed-nesting-iframe-with-sandboxed-iframe-redirect-ip-to-localhost-to-ip-database.html: Added.
  • http/tests/resourceLoadStatistics/sandboxed-nesting-iframe-with-sandboxed-iframe-redirect-localhost-to-ip-to-localhost-database-expected.txt: Added.
  • http/tests/resourceLoadStatistics/sandboxed-nesting-iframe-with-sandboxed-iframe-redirect-localhost-to-ip-to-localhost-database.html: Added.
  • http/tests/resourceLoadStatistics/set-custom-prevalent-resource-in-debug-mode-database-expected.txt: Added.
  • http/tests/resourceLoadStatistics/set-custom-prevalent-resource-in-debug-mode-database.html: Added.
  • http/tests/resourceLoadStatistics/strip-referrer-to-origin-for-prevalent-subresource-redirects-database-expected.txt: Added.
  • http/tests/resourceLoadStatistics/strip-referrer-to-origin-for-prevalent-subresource-redirects-database.html: Added.
  • http/tests/resourceLoadStatistics/strip-referrer-to-origin-for-prevalent-subresource-requests-database-expected.txt: Added.
  • http/tests/resourceLoadStatistics/strip-referrer-to-origin-for-prevalent-subresource-requests-database.html: Added.
  • http/tests/resourceLoadStatistics/switch-session-on-navigation-to-prevalent-with-interaction-database-expected.txt: Added.
  • http/tests/resourceLoadStatistics/switch-session-on-navigation-to-prevalent-with-interaction-database.html: Added.
  • http/tests/resourceLoadStatistics/telemetry-generation.html:
  • http/tests/resourceLoadStatistics/user-interaction-in-cross-origin-sub-frame-database-expected.txt: Added.
  • http/tests/resourceLoadStatistics/user-interaction-in-cross-origin-sub-frame-database.html: Added.
  • http/tests/resourceLoadStatistics/user-interaction-only-reported-once-within-short-period-of-time-database-expected.txt: Added.
  • http/tests/resourceLoadStatistics/user-interaction-only-reported-once-within-short-period-of-time-database.html: Added.
  • http/tests/resourceLoadStatistics/user-interaction-reported-after-website-data-removal-database-expected.txt: Added.
  • http/tests/resourceLoadStatistics/user-interaction-reported-after-website-data-removal-database.html: Added.
  • http/tests/resourceLoadStatistics/website-data-removal-for-site-navigated-to-with-link-decoration.html:
  • platform/ios/TestExpectations:

Added test expectations to skip database tests which do not work in
ios because of reliance on EventSender.keydown() which is not
supported on iOS and also those which use UIHelper.activateAt() which
does not produce a user gesture captured by ITP in iOS.

12:03 PM Changeset in webkit [250392] by Wenson Hsieh
  • 4 edits
    4 adds in trunk

[iOS 13] Tapping on a non-editable text selection should toggle callout bar visibility instead of clearing selection
https://bugs.webkit.org/show_bug.cgi?id=202254
<rdar://problem/54410263>

Reviewed by Megan Gardner.

Source/WebKit:

In iOS 13, tapping a text selection should toggle callout bar visibility (i.e. "selection commands" in UIKit).
This currently does not work for non-editable text, since the synthetic click gesture simultaneously fires
alongside the text interaction assistant's non-editable tap gesture, which dispatches a click to the page which
then clears the selection.

To remedy this and match platform behavior, we avoid recognizing clicks that occur over the text selection, but
only in the case where the bounding rect of the text selection doesn't cover a large portion of the visible
content rect of the web view. This ensures that the user doesn't get stuck in a state where it's impossible to
dismiss a very large text selection (e.g. after selecting all the content on the page).

Tests: editing/selection/ios/clear-selection-after-tap-in-large-selected-non-editable-text.html

editing/selection/ios/toggle-callout-bar-after-tap-in-selected-non-editable-text.html

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView _shouldToggleSelectionCommandsAfterTapAt:]):

Check the last known selection rects (on _lastSelectionDrawingInfo) to see if the tapped point lies within at
least one of the selection rects.

(-[WKContentView gestureRecognizerShouldBegin:]):

LayoutTests:

  • editing/selection/ios/clear-selection-after-tap-in-large-selected-non-editable-text-expected.txt: Added.
  • editing/selection/ios/clear-selection-after-tap-in-large-selected-non-editable-text.html: Added.

Add a new layout test to verify that when tapping in a text selection that encompasses the entire page, we allow
the tap to dismiss the selection instead of toggling callout bar visibility.

  • editing/selection/ios/toggle-callout-bar-after-tap-in-selected-non-editable-text-expected.txt: Added.
  • editing/selection/ios/toggle-callout-bar-after-tap-in-selected-non-editable-text.html: Added.

Add another layout test to verify that when tapping inside a text selection, the callout bar is toggled, and
when tapping outside the selected text, the selection is dismissed.

  • resources/ui-helper.js:

(window.UIHelper.async.waitForSelectionToAppear):
(window.UIHelper.async.waitForSelectionToDisappear):

New helper methods to wait for selection rects to appear or disappear.

(window.UIHelper):

11:52 AM Changeset in webkit [250391] by Wenson Hsieh
  • 2 edits in trunk/Tools

TestWebKitAPI.WebKit.ReloadWithDifferingInitialScale is failing consistently
https://bugs.webkit.org/show_bug.cgi?id=202273

Reviewed by Aakash Jain.

The content width scaling limits added in r250361 prevent this test from scaling down the content width (2000px
wide) to fit the viewport (375px). To avoid this issue, change the content width from 2000px to 1500px, which is
still a very wide content width for a web page.

  • TestWebKitAPI/Tests/WebKitCocoa/ReloadWithDifferingInitialScale.mm:
11:25 AM Changeset in webkit [250390] by Antti Koivisto
  • 12 edits in trunk/Source/WebCore

Use LineLayoutTraversal for RenderText functions
https://bugs.webkit.org/show_bug.cgi?id=202266

Reviewed by Zalan Bujtas.

Replace a bunch of functions that have separate simple and complex line layout versions with
shared functions that use LineLayoutTraversal.

  • rendering/RenderText.cpp:

(WebCore::RenderText::absoluteRects const):
(WebCore::RenderText::firstRunLocation const):
(WebCore::RenderText::linesBoundingBox const):

This is substantially simpler than RenderTextLineBoxes::boundingBox because it uses physical rects for all computations
instead of using logical rects and flipping to physical at the end.

(WebCore::RenderText::caretMinOffset const):
(WebCore::RenderText::caretMaxOffset const):
(WebCore::RenderText::countRenderedCharacterOffsetsUntil const):
(WebCore::containsOffset):
(WebCore::RenderText::containsRenderedCharacterOffset const):
(WebCore::RenderText::containsCaretOffset const):
(WebCore::RenderText::hasRenderedText const):

  • rendering/RenderTextLineBoxes.cpp:

(WebCore::RenderTextLineBoxes::boundingBox const): Deleted.
(WebCore::RenderTextLineBoxes::firstRunLocation const): Deleted.
(WebCore::RenderTextLineBoxes::hasRenderedText const): Deleted.
(WebCore::RenderTextLineBoxes::caretMinOffset const): Deleted.
(WebCore::RenderTextLineBoxes::caretMaxOffset const): Deleted.
(WebCore::RenderTextLineBoxes::containsOffset const): Deleted.
(WebCore::RenderTextLineBoxes::countCharacterOffsetsUntil const): Deleted.
(WebCore::RenderTextLineBoxes::absoluteRects const): Deleted.

  • rendering/RenderTreeAsText.cpp:

(WebCore::write):

  • rendering/SimpleLineLayout.cpp:

(WebCore::SimpleLineLayout::LineState::appendFragmentAndCreateRunIfNeeded):

  • rendering/SimpleLineLayout.h:

(WebCore::SimpleLineLayout::Run::Run):

  • rendering/SimpleLineLayoutFunctions.cpp:

(WebCore::SimpleLineLayout::computeFirstRunLocation): Deleted.

  • rendering/SimpleLineLayoutFunctions.h:

(WebCore::SimpleLineLayout::findCaretMinimumOffset): Deleted.
(WebCore::SimpleLineLayout::findCaretMaximumOffset): Deleted.
(WebCore::SimpleLineLayout::containsOffset): Deleted.
(WebCore::SimpleLineLayout::isTextRendered): Deleted.

  • rendering/SimpleLineLayoutResolver.h:

(WebCore::SimpleLineLayout::RunResolver::Run::isLineBreak const):

  • rendering/line/LineLayoutTraversal.cpp:

(WebCore::LineLayoutTraversal::TextBox::isLineBreak const):
(WebCore::LineLayoutTraversal::firstTextBoxFor):
(WebCore::LineLayoutTraversal::firstTextBoxInTextOrderFor):
(WebCore::LineLayoutTraversal::textBoxesFor):
(WebCore::LineLayoutTraversal::firstTextBoxInVisualOrderFor): Deleted.
(WebCore::LineLayoutTraversal::textBoxRangeFor): Deleted.

  • rendering/line/LineLayoutTraversal.h:

(WebCore::LineLayoutTraversal::hasTextBoxes):

11:17 AM Changeset in webkit [250389] by commit-queue@webkit.org
  • 21 edits in trunk

toExponential, toFixed, and toPrecision should allow arguments up to 100
https://bugs.webkit.org/show_bug.cgi?id=199163

Patch by Alexey Shvayka <Alexey Shvayka> on 2019-09-26
Reviewed by Ross Kirsling.

JSTests:

  • ChakraCore/test/Number/toString_3.baseline-jsc:
  • ChakraCore/test/es5/exceptions3.baseline-jsc:
  • test262/expectations.yaml: Mark 6 test cases as passing.

Source/JavaScriptCore:

Previously, the spec gave fixed range of [0,20] for Number.prototype.{toExponential,toFixed} argument and
range of [1,21] for Number.prototype.toPrecision argument, but allowed implementations to permit a larger range.
Historically, only SpiderMonkey accepted a larger range, and other implementations threw a RangeError outside the range.
Later the spec was changed (see https://github.com/tc39/ecma262/pull/857) to specify the SpiderMonkey behavior.

  • runtime/NumberPrototype.cpp:

(JSC::numberProtoFuncToExponential): Accept arguments between 0 and 100.
(JSC::numberProtoFuncToFixed): Accept arguments between 0 and 100.
(JSC::numberProtoFuncToPrecision): Accept arguments between 1 and 100.
(JSC::getIntegerArgumentInRange): Inline to improve readability.

Source/WTF:

Increase size of NumberToStringBuffer: <21 digits> + decimal point + <100 digits> + null char = 123.
Increase kMaxFixedDigitsAfterPoint to make Number.prototype.toFixed work with arguments up to 100.
Also update other constants to their correct values.

  • wtf/dtoa.h:
  • wtf/dtoa/double-conversion.cc:
  • wtf/dtoa/double-conversion.h:

Tools:

Adjust StringNumberFixedWidth test due to lowering kMaxFixedDigitsBeforePoint.

  • TestWebKitAPI/Tests/WTF/WTFString.cpp:

LayoutTests:

  • js/dom/number-tofixed-expected.txt:
  • js/dom/number-toprecision-expected.txt:
  • js/dom/script-tests/number-tofixed.js:
  • js/dom/script-tests/number-toprecision.js:
  • js/kde/Number-expected.txt:
  • js/kde/script-tests/Number.js:
  • js/number-toExponential-expected.txt:
  • js/script-tests/number-toExponential.js:
11:04 AM Changeset in webkit [250388] by Patrick Griffis
  • 2 edits in trunk/Source/WebKit

[GTK] Fix logic of dark theme detection
https://bugs.webkit.org/show_bug.cgi?id=202276

  • If GTK_THEME is set it has a higher priority to GtkSettings.
  • GTK_THEME may be a -dark theme or :dark variant, handle both.

Reviewed by Michael Catanzaro.

  • UIProcess/API/gtk/PageClientImpl.cpp:

(WebKit::PageClientImpl::effectiveAppearanceIsDark const):

10:59 AM Changeset in webkit [250387] by russell_e@apple.com
  • 2 edits
    1 delete in trunk/LayoutTests

Layout Test platform/ios/ios/fast/text/opticalFont.html is Failing on iOS13.
https://bugs.webkit.org/show_bug.cgi?id=202278

Unreviewed Test Gardening.

  • platform/ios/ios/fast/text/opticalFont-expected.txt: Removed.
  • platform/ios/platform/ios/ios/fast/text/opticalFont-expected.txt:

Rebaselined for iOS 13.

10:49 AM Changeset in webkit [250386] by Truitt Savell
  • 5 edits in trunk/Source/WebCore

Unreviewed, rolling out r250381.

broke multiple webgpu/ tests on Mojave WK2

Reverted changeset:

"Flaky Test: inspector/canvas/updateShader.html"
https://bugs.webkit.org/show_bug.cgi?id=202186
https://trac.webkit.org/changeset/250381

10:43 AM Changeset in webkit [250385] by commit-queue@webkit.org
  • 7 edits in trunk

Non-callable "handleEvent" property is silently ignored
https://bugs.webkit.org/show_bug.cgi?id=200066

Patch by Alexey Shvayka <Alexey Shvayka> on 2019-09-26
Reviewed by Darin Adler.

LayoutTests/imported/w3c:

  • web-platform-tests/IndexedDB/fire-error-event-exception-expected.txt:
  • web-platform-tests/IndexedDB/fire-success-event-exception-expected.txt:
  • web-platform-tests/IndexedDB/fire-upgradeneeded-event-exception-expected.txt:
  • web-platform-tests/dom/events/EventListener-handleEvent-expected.txt:

Source/WebCore:

Tests: imported/w3c/web-platform-tests/IndexedDB/fire-error-event-exception.html

imported/w3c/web-platform-tests/IndexedDB/fire-success-event-exception.html
imported/w3c/web-platform-tests/IndexedDB/fire-upgradeneeded-event-exception.html
imported/w3c/web-platform-tests/dom/events/EventListener-handleEvent.html

  • bindings/js/JSEventListener.cpp:

(WebCore::JSEventListener::handleEvent): Report TypeError if "handleEvent" is not callable.

8:44 AM Changeset in webkit [250384] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][IFC] Decouple Display::Run and Display::Box initializations.
https://bugs.webkit.org/show_bug.cgi?id=202255
<rdar://problem/55731445>

Reviewed by Antti Koivisto.

This is in preparation for moving Display::Run initialization to Line class.

  • layout/inlineformatting/InlineFormattingContextLineLayout.cpp:

(WebCore::Layout::InlineFormattingContext::InlineLayout::createDisplayRuns):

8:07 AM Changeset in webkit [250383] by mark.lam@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

We need to initialize the Gigacage first in setJITEnabled() when disabling the JIT.
https://bugs.webkit.org/show_bug.cgi?id=202257

Reviewed by Saam Barati.

Because of an OS quirk, even after the JIT region has been unmapped, the OS thinks
that region is reserved, and as such, can cause Gigacage allocation to fail. We
work around this by initializing the Gigacage first.

Note: when called, setJITEnabled() is always called extra early in the process
bootstrap. Under normal operation (when setJITEnabled() isn't called at all), we
will naturally initialize the Gigacage before we allocate the JIT region.
Hence, this workaround is merely ensuring the same behavior of allocation ordering.

This patch only applies to iOS.

  • jit/ExecutableAllocator.cpp:

(JSC::ExecutableAllocator::setJITEnabled):

2:48 AM Changeset in webkit [250382] by jiewen_tan@apple.com
  • 2 edits in trunk/Tools

TestWebKitAPI.SOAuthorizationSubFrame.AuthorizationOptions is failing consistently on iOS API tests EWS
https://bugs.webkit.org/show_bug.cgi?id=202249

Reviewed by Alex Christensen.

Swizzles +[AKAuthorizationController isURLFromAppleOwnedDomain:] following other tests.

  • TestWebKitAPI/Tests/WebKitCocoa/TestSOAuthorization.mm:

(TestWebKitAPI::TEST):

1:33 AM Changeset in webkit [250381] by Devin Rousso
  • 5 edits in trunk/Source/WebCore

Flaky Test: inspector/canvas/updateShader.html
https://bugs.webkit.org/show_bug.cgi?id=202186
<rdar://problem/55716053>

Reviewed by Joseph Pecoraro.

If the WebGPUPipeline/WebGLProgram outlives it's WebGPUDevice/WebGLRenderingContext,
the ScriptExecutionContext* that was provided in the constructor won't be invalidated
leading to the bad access crash.

Rather than pass the ScriptExecutionContext* directly, have WebGPUPipeline/WebGLProgram
extend from ContextDestructionObserver so that it can propertly invalidate (and notify Web
Inspector) when the related context is about to be destroyed.

Test: inspector/canvas/updateShader.html

  • Modules/webgpu/WebGPUPipeline.h:

(WebCore::WebGPUPipeline::scriptExecutionContext const): Deleted.

  • Modules/webgpu/WebGPUPipeline.cpp:

(WebCore::WebGPUPipeline::WebGPUPipeline):
(WebCore::WebGPUPipeline::contextDestroyed): Added.

  • html/canvas/WebGLProgram.h:

(WebCore::WebGLProgram::scriptExecutionContext const): Deleted.

  • html/canvas/WebGLProgram.cpp:

(WebCore::WebGLProgram::WebGLProgram):
(WebCore::WebGLProgram::contextDestroyed): Added.

Sep 25, 2019:

11:41 PM Changeset in webkit [250380] by Keith Rollin
  • 2 edits in trunk/Source/WTF

Address static analysis warning in UTextProviderLatin1.cpp: Array access results in a null pointer dereference
https://bugs.webkit.org/show_bug.cgi?id=202155
<rdar://problem/55672422>

Reviewed by Geoffrey Garen.

Xcode's static analysis reports:

.../OpenSource/Source/WTF/wtf/text/icu/UTextProviderLatin1.cpp:185:22: warning: Array access (from variable 'dest') results in a null pointer dereference

dest[length] = 0;

This error is due to an earlier "if" statement that caused the static
analyzer to infer that "dest" could be NULL. It turns out that that
previous check was in error, in that it tested for "!dest" when it
should have tested for "dest". So this patch fixes that.

Even with that error fixed, the static analyzer will still infer that
"dest" could be NULL at the point shown above. Therefore, add a "dest"
test just before the assignment.

  • wtf/text/icu/UTextProviderLatin1.cpp:

(WTF::uTextLatin1Extract):

10:32 PM Changeset in webkit [250379] by Chris Dumez
  • 8 edits
    2 adds in trunk

Add very basic PageCache support for RTCPeerConnection
https://bugs.webkit.org/show_bug.cgi?id=202244

Reviewed by Geoffrey Garen.

Source/WebCore:

RTCPeerConnection::canSuspendForDocumentSuspension() returns true if
RTCPeerConnection::hasPendingActivity() return false. Previously, hasPendingActivity()
would return true unless the JS has called close() on the RTCPeerConnection
object.

On weather.com, an ad would construct an RTCPeerConnection just to do some feature
checking and then let the variable go out of scope (without calling close()). Because
of the previous implementation of RTCPeerConnection::hasPendingActivity(), this wrapper
and its implementation object would stay alive forever AND prevent the page from
entering PageCache on navigation.

To improve this, the implementation of hadPendingActivity() has been updated so that
it keeps returning false if close() has been called, but will also return false if
there are no pending Promises to be resolved and no event listeners.

Test: fast/mediastream/RTCPeerConnection-page-cache.html

  • Modules/mediastream/RTCPeerConnection.cpp:

WebCore::RTCPeerConnection::RTCPeerConnection:
Stop taking a pending activity in the constructor, this would be NOT keep the wrapper
alive since RTCPeerConnection::hasPendingActivity() was not checking
ActiveDOMObject::hasPendingActivity().

(WebCore::RTCPeerConnection::canSuspendForDocumentSuspension const):
(WebCore::RTCPeerConnection::hasPendingActivity const):

  • Modules/mediastream/RTCPeerConnection.h:
  • bindings/js/JSDOMPromiseDeferred.h:

(WebCore::DOMPromiseDeferredBase::whenSettled):

LayoutTests:

Add layout test coverage.

  • fast/mediastream/RTCPeerConnection-page-cache-expected.txt: Added.
  • fast/mediastream/RTCPeerConnection-page-cache.html: Added.
9:30 PM Changeset in webkit [250378] by Chris Dumez
  • 10 edits
    1 move
    1 add
    1 delete in trunk

Improve Service worker support for Page Caching
https://bugs.webkit.org/show_bug.cgi?id=202221

Reviewed by Geoffrey Garen.

Source/WebCore:

Allow pages using service workers to enter the back / forward cache.
Update ServiceWorkerRegistration / ServiceWorker ActiveDOMObjects
to properly suspend while in PageCache. Also, let documents controlled
by a service worker to enter PageCache (we already unregistered it as
a client of the service worker while suspended).

Test: http/tests/workers/service/page-caching.html

  • dom/Document.cpp:

(WebCore::Document::suspend):
(WebCore::Document::resume):

  • history/PageCache.cpp:

(WebCore::canCacheFrame):

  • workers/service/ServiceWorker.cpp:

(WebCore::ServiceWorker::updateState):
(WebCore::ServiceWorker::canSuspendForDocumentSuspension const):
(WebCore::ServiceWorker::suspend):
(WebCore::ServiceWorker::resume):

  • workers/service/ServiceWorker.h:
  • workers/service/ServiceWorkerRegistration.cpp:

(WebCore::ServiceWorkerRegistration::fireUpdateFoundEvent):
(WebCore::ServiceWorkerRegistration::canSuspendForDocumentSuspension const):
(WebCore::ServiceWorkerRegistration::suspend):
(WebCore::ServiceWorkerRegistration::resume):

  • workers/service/ServiceWorkerRegistration.h:

LayoutTests:

Add layout test coverage.

  • http/tests/workers/service/no-page-cache-when-controlled-expected.txt: Removed.
  • http/tests/workers/service/page-caching-expected.txt: Added.
  • http/tests/workers/service/page-caching.html: Renamed from LayoutTests/http/tests/workers/service/no-page-cache-when-controlled.html.
9:24 PM Changeset in webkit [250377] by achristensen@apple.com
  • 16 edits in trunk

Add replacement SPI on _WKWebsiteDataStoreConfiguration for enabling speculative cache validation and IPC-free server trust evaluation
https://bugs.webkit.org/show_bug.cgi?id=202251

Reviewed by Tim Horton.

Source/WebKit:

These are two performance optimizations that are currently per-ProcessPool that need to be per-WebsiteDataStore.
This makes replacement SPI and deprecates the old SPI. I'm going to adopt the new SPI then remove the old SPI.

  • NetworkProcess/NetworkSession.cpp:

(WebKit::NetworkSession::NetworkSession):

  • NetworkProcess/NetworkSessionCreationParameters.cpp:

(WebKit::NetworkSessionCreationParameters::encode const):
(WebKit::NetworkSessionCreationParameters::decode):

  • NetworkProcess/NetworkSessionCreationParameters.h:
  • NetworkProcess/cocoa/NetworkSessionCocoa.h:
  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(-[WKNetworkSessionDelegate URLSession:task:didReceiveChallenge:completionHandler:]):
(WebKit::NetworkSessionCocoa::NetworkSessionCocoa):

  • UIProcess/API/C/WKContextPrivate.h:
  • UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
  • UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h:
  • UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h:
  • UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm:

(-[_WKWebsiteDataStoreConfiguration networkCacheSpeculativeValidationEnabled]):
(-[_WKWebsiteDataStoreConfiguration setNetworkCacheSpeculativeValidationEnabled:]):
(-[_WKWebsiteDataStoreConfiguration fastServerTrustEvaluationEnabled]):
(-[_WKWebsiteDataStoreConfiguration setFastServerTrustEvaluationEnabled:]):

  • UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:

(WebKit::WebsiteDataStore::parameters):

  • UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp:

(WebKit::WebsiteDataStoreConfiguration::copy):

  • UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h:

(WebKit::WebsiteDataStoreConfiguration::fastServerTrustEvaluationEnabled const):
(WebKit::WebsiteDataStoreConfiguration::setFastServerTrustEvaluationEnabled):
(WebKit::WebsiteDataStoreConfiguration::networkCacheSpeculativeValidationEnabled const):
(WebKit::WebsiteDataStoreConfiguration::setNetworkCacheSpeculativeValidationEnabled):

Tools:

Adopt new SPI instead of deprecated SPI.

  • MiniBrowser/mac/AppDelegate.m:

(persistentDataStore):
(defaultConfiguration):
(-[BrowserAppDelegate fetchDefaultStoreWebsiteData:]):
(-[BrowserAppDelegate fetchAndClearDefaultStoreWebsiteData:]):
(-[BrowserAppDelegate clearDefaultStoreWebsiteData:]):

9:19 PM Changeset in webkit [250376] by Joseph Pecoraro
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: REGRESSION: Elements detail sidebar sometimes starts collapsed
https://bugs.webkit.org/show_bug.cgi?id=202057
<rdar://problem/55572345>

Reviewed by Devin Rousso.

  • UserInterface/Views/ElementsTabContentView.js:

(WI.ElementsTabContentView.prototype.get detailsSidebarExpandedByDefault):
Default the Elements tab detail sidebar to be shown, not collapsed.

  • UserInterface/Views/TabContentView.js:

(WI.TabContentView):
(WI.TabContentView.prototype.get detailsSidebarExpandedByDefault):
Allow classes to specify whether or not their detail sidebar should
be expanded by default.

7:01 PM Changeset in webkit [250375] by Jonathan Bedard
  • 35 edits
    1 add
    2 deletes in trunk/Tools

Python 3: Add support in webkitpy.common.system
https://bugs.webkit.org/show_bug.cgi?id=201826
<rdar://problem/55452671>

Reviewed by Stephanie Lewis.

Tested compatibility by running 'python3 -m unittest webkitpy.common.system.<_unittest>' on
each of the effected files.

  • Scripts/webkitpy/common/checkout/changelog.py: Import StringIO from io module.

(set_reviewer):
(set_short_description_and_bug_url):

  • Scripts/webkitpy/common/checkout/checkout.py: Import StringIO from io module.

(Checkout._latest_entry_for_changelog_at_revision):

  • Scripts/webkitpy/common/config/committers.py:

(CommitterList.load_json): iteritems -> items.

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

(NetworkTransaction.run): urllib2 is urllib in Python3.

  • Scripts/webkitpy/common/system/abstractexecutive.py:

(AbstractExecutive._stringify_args):
(AbstractExecutive.command_for_printing): The str type is unicode in Python3.

  • Scripts/webkitpy/common/system/crashlogs_unittest.py: Explicitly encode and decode binary crashlogs.
  • Scripts/webkitpy/common/system/environment_unittest.py: Use absolute imports.
  • Scripts/webkitpy/common/system/executive.py:

(ScriptError.message_with_output): The str type is unicode in Python3.
(Executive.WrappedPopen): Python3's Popen object is a context manager. To allow us to use it as one,
our Python2 Popen needs to be one as well.
(Executive.WrappedPopen.init):
(Executive.WrappedPopen.enter):
(Executive.WrappedPopen.exit):
(Executive._run_command_with_teed_output): Simplify loop, decode unicode strings.
(Executive.run_and_throw_if_fail): The child output file should not be unicode strings.
(Executive.running_pids): Use the Popen context manager to guarantee clean-up.
(Executive._compute_stdin):
(Executive.run_command): Use the Popen context manager to guarantee clean-up.
(Executive._stringify_args): The str type is unicode in Python3.
(Executive.popen): Return a context manager if the Popen object is not one.

  • Scripts/webkitpy/common/system/executive_mock.py:

(MockProcess.init): StringIO -> BytesIO.
(MockProcess.enter):
(MockProcess):
(MockProcess.exit):

  • Scripts/webkitpy/common/system/executive_unittest.py:

(ExecutiveTest.test_auto_stringify_args): Use the Popen context manager to guarantee clean-up.
(ExecutiveTest.test_popen_args): Ditto.
(ExecutiveTest.serial_test_kill_process): Ditto.
(ExecutiveTest.serial_test_kill_all): Ditto.

  • Scripts/webkitpy/common/system/filesystem.py:

(FileSystem.read_binary_file): Use 'open' instead of 'file'.
(FileSystem.write_binary_file): Ditto.
(FileSystem.write_text_file): The str type is unicode in Python3.
(FileSystem.relpath):
(FileSystem.remove): The WindowsError is just anther OSError in Python3.
(FileSystem._WindowsError): Deleted.

  • Scripts/webkitpy/common/system/filesystem_mock.py:

(MockFileSystem.glob): filter returns a generator instead of a list.
(WritableBinaryFileObject.init): Binary files are comprised of bytes, not string in Python3.
(WritableBinaryFileObject.write): Ditto.
(ReadableTextFileObject.init): Ditto.

  • Scripts/webkitpy/common/system/filesystem_mock_unittest.py:

(MockFileSystemTest.test_normpath):
(MockFileSystemTest.test_dirs_under): assertEquals -> assertEqual.

  • Scripts/webkitpy/common/system/filesystem_unittest.py:

(RealFileSystemTest.test_read_and_write_file): Explicitly define byte arrays instead of strings.
(RealFileSystemTest.test_remove_file_with_retry.remove_with_exception): The WindowsError is just
anther OSError in Python3.

  • Scripts/webkitpy/common/system/outputcapture.py:
  • Scripts/webkitpy/common/system/outputtee_unittest.py:

(SimpleTeeTest.test_simple_tee):

  • Scripts/webkitpy/common/system/path.py:

(_escape): urllib library has been broken into parts.

  • Scripts/webkitpy/common/system/pemfile.py:

(_parse_pem_format.find_end): Python3 does not define a maxint.

  • Scripts/webkitpy/common/system/pemfile_unittest.py:
  • Scripts/webkitpy/common/system/platforminfo.py:

(PlatformInfo.total_bytes_memory): Not 'long' type in Python3.

  • Scripts/webkitpy/common/system/platforminfo_unittest.py:

(TestPlatformInfo.test_real_code): assertNotEquals -> assertNotEqual.
(TestPlatformInfo.test_display_name): Ditto.

  • Scripts/webkitpy/common/system/profiler.py:

(ProfilerFactory.create_profiler): Manually implement ifilter.

  • Scripts/webkitpy/common/system/profiler_unittest.py: Use absolute imports.
  • Scripts/webkitpy/common/system/stack_utils_unittest.py:

(current_thread_id): items() returns a generator in Python3.

  • Scripts/webkitpy/common/system/systemhost.py: Use absolute imports.
  • Scripts/webkitpy/common/system/urlfetcher.py: Removed.
  • Scripts/webkitpy/common/system/urlfetcher_mock.py: Removed.
  • Scripts/webkitpy/common/system/user.py:

(User.prompt): Use absolute imports, raw_input -> input.
(User.prompt_with_multiple_lists):
(User.prompt_with_list):
(User.confirm):

  • Scripts/webkitpy/common/unicode.py: Tooling to manage compatibility between Python 2

and Python 3 unicode handling.

  • Scripts/webkitpy/common/system/user_mock.py:

(MockUser.prompt): raw_input -> input.
(MockUser.prompt_with_list): Ditto.

  • Scripts/webkitpy/common/version.py:

(Version.from_iterable): xrange -> range.
(Version.from_name): Use absolute import path.
(Version.contains): xrange -> range.
(Version.str): xrange -> range.
(Version.cmp): amp is no longer an operator in Python3, but versions are comprised
Of integers, so subtraction has the same effect.
(Version):
(Version.eq): cmp operator is no longer respected, so we need to implement
each comparison.
(Version.ne): Ditto.
(Version.lt): Ditto.
(Version.le): Ditto.
(Version.gt): Ditto.
(Version.ge): Ditto.

  • Scripts/webkitpy/common/version_name_map.py:

(VersionNameMap._automap_to_major_version):
(VersionNameMap.to_name): xrange -> range.
(VersionNameMap.from_name): iteritems -> items.

  • Scripts/webkitpy/common/version_name_map_unittest.py: Use absolute imports.
  • Scripts/webkitpy/common/version_unittest.py: Ditto.
  • Scripts/webkitpy/common/wavediff.py:

(WaveDiff.init): StringIO -> BytesIO.

  • Scripts/webkitpy/port/init.py:

(outside):

6:43 PM Changeset in webkit [250374] by Fujii Hironori
  • 2 edits in trunk/Source/WebKitLegacy/win

Unreviewed build fix for Windows ports.
https://bugs.webkit.org/show_bug.cgi?id=202125
<rdar://problem/14944104>

  • WebCoreSupport/WebEditorClient.h: Added missing subFrameScrollPositionChanged.
5:57 PM Changeset in webkit [250373] by Wenson Hsieh
  • 2 edits in trunk/Source/WebKit

Fix failing layout tests after trac.webkit.org/r250183
https://bugs.webkit.org/show_bug.cgi?id=202053
<rdar://problem/54542190>

Reviewed by Tim Horton.

Followup to r250183: move the implementation of -gestureRecognizer:shouldReceiveTouch: out of
ENABLE(TOUCH_EVENTS) and into ENABLE(POINTER_EVENTS) instead. This logic is necessary in order for scrolling
via pan gestures to work on iOS, in the case where ENABLE(POINTER_EVENTS) is on but ENABLE(TOUCH_EVENTS) is off.
This is because the new swipe gesture recognizers added in r250183 will otherwise always take priority over the
scroll view's pan gestures.

Fixes the following layout tests:

  • fast/scrolling/ios/reconcile-layer-position-recursive.html
  • fast/scrolling/ios/click-events-during-momentum-scroll-in-main-frame.html
  • fast/scrolling/ios/click-events-after-long-press-during-momentum-scroll-in-main-frame.html
  • UIProcess/ios/WKContentViewInteraction.mm:
5:44 PM Changeset in webkit [250372] by Devin Rousso
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Uncaught Exception: TypeError: undefined is not an object (evaluating 'WI.showDebugUISetting.addEventListener')
https://bugs.webkit.org/show_bug.cgi?id=202220

Reviewed by Joseph Pecoraro.

  • UserInterface/Views/SettingsTabContentView.js:

(WI.SettingsTabContentView.prototype.initialLayout):

5:29 PM Changeset in webkit [250371] by Alan Coon
  • 7 edits in trunk/Source

Versioning.

5:09 PM Changeset in webkit [250370] by Alan Coon
  • 1 copy in tags/Safari-609.1.5

Tag Safari-609.1.5.

4:47 PM Changeset in webkit [250369] by Chris Dumez
  • 5 edits
    8 adds in trunk

[Cocoa] Regression(r212041) Safari adds a .dms extension automatically when downloading binaries with no extension
https://bugs.webkit.org/show_bug.cgi?id=202147
<rdar://problem/54886021>

Reviewed by Alexey Proskuryakov.

Source/WebCore:

When getting a suggested filename without extension (either from Content-Disposition header or from the download
attribute), we determine a suitable file extension based on the Content-Type header and append it. This is useful
since a lot of operating systems (such as macOS) rely on the file extension to determine file type.

The issue is that if the Content-Type is not provided or when it is provided but is "application/octet-stream",
we would append a .dms extension, which was unexpected. This patch makes it so that we no longer try to append
an extension when the resolved content type is "application/octet-stream".

Tests: http/tests/download/anchor-download-attribute-content-disposition-no-extension-octet-stream.html

http/tests/download/anchor-download-attribute-content-disposition-no-extension-text-plain.html
http/tests/security/anchor-download-octet-stream-no-extension.html

  • platform/MIMETypeRegistry.cpp:

(WebCore::MIMETypeRegistry::appendFileExtensionIfNecessary):

LayoutTests:

Add layout test coverage.

  • http/tests/download/anchor-download-attribute-content-disposition-no-extension-octet-stream-expected.txt: Added.
  • http/tests/download/anchor-download-attribute-content-disposition-no-extension-octet-stream.html: Added.
  • http/tests/download/anchor-download-attribute-content-disposition-no-extension-text-plain-expected.txt: Added.
  • http/tests/download/anchor-download-attribute-content-disposition-no-extension-text-plain.html: Added.
  • http/tests/download/resources/content-disposition-pass-no-extension-octet-stream.php: Added.
  • http/tests/download/resources/content-disposition-pass-no-extension-text-plain.php: Added.
  • http/tests/security/anchor-download-octet-stream-no-extension-expected.txt: Added.
  • http/tests/security/anchor-download-octet-stream-no-extension.html: Added.
  • platform/mac-wk1/TestExpectations:
  • platform/win/TestExpectations:
4:08 PM Changeset in webkit [250368] by Alan Coon
  • 2 edits in branches/safari-608-branch/Source/WebKit

Cherry-pick r250187. rdar://problem/55644650

Regression(iOS 13) web views do not deal properly with their window's UIScene changing
https://bugs.webkit.org/show_bug.cgi?id=202070
<rdar://problem/55580699>

Reviewed by Tim Horton.

Web views do not deal properly with their window's UIScene changing. If a Safari window is in the
background for 1 minute, its UIScene will be detached and the window will get a new UIScene if
the user later switches to this window. Our web views listen to UIScene notifications to determine
their visibility and currently stop receiving visibility updates once the window’s UIScene has
changed. This causes view freezes because our WebContent process does not know its view is visible
and keeps its layer tree frozen.

Previously, when our view would be added to a window, we would get this window's UIScene and listen
for UISceneDidEnterBackgroundNotification / UISceneWillEnterForegroundNotification for this UIScene
object. Instead, we now listen to these notifications for ALL the application's UIScenes. Our handler
then checks if the notification's UIScene object matches the current window's UIScene before
forwarding the notification to the rest of WebKit.

  • UIProcess/ApplicationStateTracker.mm: (WebKit::ApplicationStateTracker::ApplicationStateTracker): (WebKit::ApplicationStateTracker::~ApplicationStateTracker):

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

4:08 PM Changeset in webkit [250367] by Alan Coon
  • 2 edits in branches/safari-608-branch/Source/WebKit

Cherry-pick r250154. rdar://problem/55644650

ApplicationStateTracker::m_isBackground initialization does not account for UIScenes
https://bugs.webkit.org/show_bug.cgi?id=202048

Reviewed by Geoffrey Garen.

ApplicationStateTracker::m_isBackground initialization does not account for UIScenes, it merely checks
the visibility state of the whole app. It should instead check the visibility state of the window's
UIScene.

This patch also refactors the code a little bit to reduce #ifdef'ing.

  • UIProcess/ApplicationStateTracker.mm: (WebKit::ApplicationStateTracker::ApplicationStateTracker):

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

4:08 PM Changeset in webkit [250366] by Alan Coon
  • 4 edits in branches/safari-608-branch/Source/WebKit

Cherry-pick r250111. rdar://problem/55644650

Add better logging for when the view visibility state changes
https://bugs.webkit.org/show_bug.cgi?id=202008

Reviewed by Geoffrey Garen.

  • UIProcess/ApplicationStateTracker.mm:
  • UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::updateActivityState):
  • UIProcess/ios/WebPageProxyIOS.mm: (WebKit::WebPageProxy::applicationDidEnterBackground): (WebKit::WebPageProxy::applicationWillEnterForeground):

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

3:54 PM Changeset in webkit [250365] by Megan Gardner
  • 13 edits
    2 adds in trunk

Update selections after scrolling for iframes and hide selections while iframes and overflow scrolls are scrolling.
https://bugs.webkit.org/show_bug.cgi?id=202125

Reviewed by Tim Horton.

Source/WebCore:

Test: editing/selection/ios/update-selection-after-iframe-scroll.html

When we end scrolling, make sure that iframes get a final update to ensure that the
selection is in the correct position. Pipe that to WebKit/UIProcess via
frame specific plath.

  • loader/EmptyClients.cpp:
  • page/EditorClient.h:
  • page/scrolling/AsyncScrollingCoordinator.cpp:

(WebCore::AsyncScrollingCoordinator::updateScrollPositionAfterAsyncScroll):

Source/WebKit:

Add additional calls into UIKit differentiate between main frame scrolling and overflow/iframe scrolling.
Add piping for iframe specific scrolling.

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

(-[WKContentView _willStartScrollingOrZooming]):
(-[WKContentView _didEndScrollingOrZooming]):

  • WebProcess/WebCoreSupport/WebEditorClient.cpp:

(WebKit::WebEditorClient::subFrameScrollPositionChanged):

  • WebProcess/WebCoreSupport/WebEditorClient.h:
  • WebProcess/WebCoreSupport/ios/WebEditorClientIOS.mm:

(WebKit::WebEditorClient::subFrameScrollPositionChanged):

Source/WebKitLegacy/mac:

Filling out unused functions needed for new fix.

  • WebCoreSupport/WebEditorClient.h:

LayoutTests:

Test that an iframe selection is updated after a scroll is completed.

  • editing/selection/ios/update-selection-after-iframe-scroll-expected.txt: Added.
  • editing/selection/ios/update-selection-after-iframe-scroll.html: Added.
3:53 PM Changeset in webkit [250364] by Alan Coon
  • 3 edits in branches/safari-608-branch/Source

Revert r249936. rdar://problem/55461414

3:53 PM Changeset in webkit [250363] by Alan Coon
  • 4 edits in branches/safari-608-branch/Source

Cherry-pick r249933. rdar://problem/55461414

REGRESSION: iPad: Safari becomes unresponsive after context menu on 1-800-MY-APPLE phone number, tapping 'Add to Contacts'
https://bugs.webkit.org/show_bug.cgi?id=201816
<rdar://55105827>

Reviewed by Darin Adler.

Source/WebCore/PAL:

Expose kDataDetectorsSourceRectKey (and sort things while there).

  • pal/spi/ios/DataDetectorsUISPI.h:

Source/WebKit:

When generating the DataDetectorsContext for a position, we should
also provide the source rectangle for the link in root view coordinates.
This allows DataDetectors to show any modal dialogs in the right
position.

  • UIProcess/ios/WKContentViewInteraction.mm: Use either the bounds of the positionInformation or the text bounding rectangle. (-[WKContentView dataDetectionContextForPositionInformation:]):

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

3:46 PM Changeset in webkit [250362] by aboya@igalia.com
  • 2 edits
    2 adds in trunk/LayoutTests

[GTK] Unreviewed test gardening
https://bugs.webkit.org/show_bug.cgi?id=202246

  • platform/gtk/TestExpectations:
3:30 PM Changeset in webkit [250361] by Wenson Hsieh
  • 5 edits
    2 adds in trunk

Page temporarily jumps to an excessively small viewport scale while loading usatoday.com
https://bugs.webkit.org/show_bug.cgi?id=202224
<rdar://problem/52906640>

Reviewed by Tim Horton.

Source/WebCore:

On some pages (e.g. usatoday.com), the content width of the page temporarily becomes very large during page
load. This causes a couple of viewport scaling behaviors (notably, the existing shrink-to-fit heuristic in
ViewportConfiguration::initialScaleFromSize, as well as the new iPad-specific content-aware shrink-to-fit
heuristic in WebPage::immediatelyShrinkToFitContent) to cause the page to shrink down excessively in an attempt
to fit all the content to the viewport. This causes a very ugly flash as the page appears zoomed out initially
during page load, before zooming back in.

To fix this, we add some sanity checks to these viewport scaling heuristics. In ViewportConfiguration's
initialScaleFromSize method, in the codepath where an initial scale is not specified, we always scale to fit the
contents of the page; instead, detect the case where the content width is enormous (with a threshold arbitrarily
chosen to be 1920) and fall back to the scaling to fit the viewport's width, if such a width has been explicitly
set. This ensures that we avoid excessive shrinking in the case where content is extremely wide, but also that
we do scale the viewport down to fit all the content in the case where the content isn't extremely wide (e.g. on
daringfireball.com).

See WebKit ChangeLog for more detail.

Test: fast/viewport/ios/shrink-to-fit-large-content-width.html

  • page/ViewportConfiguration.cpp:

(WebCore::ViewportConfiguration::initialScaleFromSize const):

Source/WebKit:

Tweaks the content-aware shrink-to-fit algorithm to bail in the case where the content width is extremely large,
such that it bails instead of attempting to fit the entire content of the page. See WebCore ChangeLog for more
details.

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::immediatelyShrinkToFitContent):

LayoutTests:

Adds a new layout test to verify that when the content width of the page is excessively large and an explicit
viewport width is specified, we don't attempt to zoom out to fit the larger content width, and instead zoom to
fit the explicit viewport width.

  • fast/viewport/ios/shrink-to-fit-large-content-width-expected.txt: Added.
  • fast/viewport/ios/shrink-to-fit-large-content-width.html: Added.
3:30 PM Changeset in webkit [250360] by Alan Coon
  • 7 edits in branches/safari-608-branch/Source

Versioning.

3:17 PM Changeset in webkit [250359] by Alan Coon
  • 1 copy in tags/Safari-608.3.4

Tag Safari-608.3.4.

2:45 PM Changeset in webkit [250358] by Alan Bujtas
  • 2 edits in trunk/LayoutTests

Adjust tap position to avoid double-tap issue across tests.

Unreviewed test gardening.

  • fast/events/touch/ios/double-tap-for-two-clicks3.html:
2:12 PM Changeset in webkit [250357] by aakash_jain@apple.com
  • 3 edits in trunk/Tools

[EWS] RunJavaScriptCoreTestsToT should use the same command as RunJavaScriptCoreTests
https://bugs.webkit.org/show_bug.cgi?id=202216

Reviewed by Jonathan Bedard.

  • BuildSlaveSupport/ews-build/steps.py:

(RunJavaScriptCoreTestsToT): Removed the command so as to use the command from base class.

  • BuildSlaveSupport/ews-build/steps_unittest.py: Updatd unit-tests.
1:56 PM Changeset in webkit [250356] by aakash_jain@apple.com
  • 5 edits in trunk/Tools

[ews] JSC queues should run or skip tests based on runTests key from config.json
https://bugs.webkit.org/show_bug.cgi?id=202223

Reviewed by Jonathan Bedard.

  • BuildSlaveSupport/ews-build/config.json: Added the runTests key.
  • BuildSlaveSupport/ews-build/factories.py:

(JSCTestsFactory.init): Add RunJavaScriptCoreTests step based on runTests key.

  • BuildSlaveSupport/ews-build/loadConfig.py:

(loadBuilderConfig): Pass the runTests key to the factory.

  • BuildSlaveSupport/ews-build/loadConfig_unittest.py:

(ConfigDotJSONTest.test_builder_keys): Added the runTests key.

1:27 PM Changeset in webkit [250355] by Jonathan Bedard
  • 7 edits
    2 adds in trunk/Tools

results.webkit.org: Add investigation drawer
https://bugs.webkit.org/show_bug.cgi?id=202106

Reviewed by Dewei Zhu.

  • resultsdbpy/resultsdbpy/view/static/js/drawer.js: Support multiple 'main' classes.
  • resultsdbpy/resultsdbpy/view/static/js/expectations.js: Added.

(Expectations.colorMap): Return a dictionary mapping type strings to colors.
(Expectations.stringToStateId): Map a string to a state ID for sorting.
(Expectations.typeForId): Return a type string given an ID.
(Expectations.symbolForId): Return a symbol for a type given an ID.
(Expectations.colorForId): Return a color given an ID.
(Expectations.unexpectedResults): Given a list of actual results and expected results,
return a state.
(Expectations):

  • resultsdbpy/resultsdbpy/view/static/js/investigate.js: Added.

(commitsForUuid):
(testRunLink):
(elapsed):
(percentage):
(contentForAgregateData):
(contentForData):
(_InvestigateDrawer):
(_InvestigateDrawer.prototype.isRendered):
(_InvestigateDrawer.prototype.expand): Expand the investigation drawer.
(_InvestigateDrawer.prototype.collapse): Collapse the investigation drawer.
(_InvestigateDrawer.prototype.select): Select an element to investigate.

  • resultsdbpy/resultsdbpy/view/static/js/timeline.js:

(statsForSingleResult): Move Expectation constants.
(TimelineFromEndpoint.prototype.render): Investigate specific data points instead
of jumping to the build.
(Expectations.stringToStateId): Deleted.
(Expectations.unexpectedResults): Deleted.
(Expectations): Deleted.

  • resultsdbpy/resultsdbpy/view/static/library/css/webkit.css:

(.drawer.display): Make minimum height.
(@media screen and (min-width: 600px)): Move main and sidebar so they override drawer.
(@media screen and (min-width: 768px)): Ditto.

  • resultsdbpy/resultsdbpy/view/templates/commits.html:
  • resultsdbpy/resultsdbpy/view/templates/search.html:
  • resultsdbpy/resultsdbpy/view/templates/suite_results.html:
12:43 PM Changeset in webkit [250354] by achristensen@apple.com
  • 3 edits in trunk/Source/WebKit

Don't fall back to default session if session can't be found for cookie operations
https://bugs.webkit.org/show_bug.cgi?id=202222

Reviewed by Geoff Garen.

Apparently, during teardown of private browsing sessions, there is sometimes a race condition and cookies from a torn-down session are requested.
In this case, just fail like we do all other operations in this file. Otherwise, it's a breach of privacy.

  • NetworkProcess/NetworkConnectionToWebProcess.cpp:

(WebKit::NetworkConnectionToWebProcess::storageSession):
(WebKit::NetworkConnectionToWebProcess::cookiesForDOM):
(WebKit::NetworkConnectionToWebProcess::setCookiesFromDOM):
(WebKit::NetworkConnectionToWebProcess::cookiesEnabled):
(WebKit::NetworkConnectionToWebProcess::cookieRequestHeaderFieldValue):
(WebKit::NetworkConnectionToWebProcess::getRawCookies):
(WebKit::NetworkConnectionToWebProcess::deleteCookie):

  • NetworkProcess/NetworkConnectionToWebProcess.h:
12:34 PM Changeset in webkit [250353] by Alan Bujtas
  • 2 edits in trunk/LayoutTests

Rebaselining after r250315.

  • fast/events/touch/ios/double-tap-for-double-click3-expected.txt:
12:22 PM Changeset in webkit [250352] by achristensen@apple.com
  • 12 edits in trunk

Remove duplicate WebsiteDataStoreConfiguration copying code
https://bugs.webkit.org/show_bug.cgi?id=202215

Reviewed by Tim Horton.

Source/WebKit:

WKWebsiteDataStore's _initWithConfiguration was duplicating the functionality of WebsiteDataStoreConfiguration::copy.
The former should just call the latter.
This move has the side effect of making _WKWebsiteDataStoreConfiguration's paths readable, which I think is desirable so I added a unit test verifying it is so.

  • UIProcess/API/C/WKWebsiteDataStoreConfigurationRef.cpp:

(WKWebsiteDataStoreConfigurationCreate):

  • UIProcess/API/Cocoa/WKWebsiteDataStore.mm:

(-[WKWebsiteDataStore _initWithConfiguration:]):

  • UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm:

(-[_WKWebsiteDataStoreConfiguration init]):
(-[_WKWebsiteDataStoreConfiguration initNonPersistentConfiguration]):

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::mayHaveRegisteredServiceWorkers):

  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::createNonPersistent):
(WebKit::WebsiteDataStore::defaultDataStore):
(WebKit::WebsiteDataStore::defaultDataStoreConfiguration): Deleted.

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

(WebKit::WebsiteDataStoreConfiguration::WebsiteDataStoreConfiguration):
(WebKit::WebsiteDataStoreConfiguration::copy):

  • UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h:

(WebKit::WebsiteDataStoreConfiguration::create):
(WebKit::WebsiteDataStoreConfiguration::isPersistent const):
(WebKit::WebsiteDataStoreConfiguration::setPersistent): Deleted.

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/WebsiteDataStoreCustomPaths.mm:

(TEST):

12:16 PM Changeset in webkit [250351] by achristensen@apple.com
  • 12 edits in trunk

Replace WebsiteDataStoreParameters::privateSessionParameters with re-initializing all sessions immediately upon NetworkProcess resumption
https://bugs.webkit.org/show_bug.cgi?id=202211

Reviewed by Tim Horton.

Source/WebKit:

Re-adding an ephemeral session after a NetworkProcess crash based on guessing that all its parameters are empty was added in r227590 with a test.
That test passes even when that re-adding code is removed because we re-add all sessions with parameters from the UIProcess when we restart a NetworkProcess.
I move the addition of non-default sessions to the initialization message instead of messages after the initialization message to remove race conditions that
might cause loads to happen before the NetworkProcess has received its second message from the UIProcess. I also add a unit test to verify that session
resumption also works with non-default persistent WebsiteDataStores.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::initializeNetworkProcess):

  • NetworkProcess/NetworkProcessCreationParameters.cpp:

(WebKit::NetworkProcessCreationParameters::encode const):
(WebKit::NetworkProcessCreationParameters::decode):

  • NetworkProcess/NetworkProcessCreationParameters.h:
  • NetworkProcess/NetworkResourceLoader.cpp:

(WebKit::NetworkResourceLoader::startNetworkLoad):

  • NetworkProcess/NetworkSessionCreationParameters.cpp:

(WebKit::NetworkSessionCreationParameters::privateSessionParameters): Deleted.

  • NetworkProcess/NetworkSessionCreationParameters.h:
  • Shared/WebsiteDataStoreParameters.cpp:

(WebKit::WebsiteDataStoreParameters::privateSessionParameters): Deleted.

  • Shared/WebsiteDataStoreParameters.h:

(WebKit::WebsiteDataStoreParameters::legacyPrivateSessionParameters): Deleted.

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::ensureNetworkProcess):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/NetworkProcessCrashNonPersistentDataStore.mm:

(checkRecoveryAfterCrash):
(TEST):

11:35 AM Changeset in webkit [250350] by aakash_jain@apple.com
  • 4 edits in trunk/Tools

[EWS] JSC queues should dynamically add required build steps for re-testing the patch
https://bugs.webkit.org/show_bug.cgi?id=202170

Reviewed by Jonathan Bedard.

  • BuildSlaveSupport/ews-build/factories.py:

(JSCTestsFactory.init): Do not add ReRunJavaScriptCoreTests and related steps here, as
these are dynamically added (if required) in steps.py.

  • BuildSlaveSupport/ews-build/steps.py:

(CompileJSCToT): Remove doStepIf() and hideStepIf() method, these are no longer required as we add
this step dynamically only if required. We don't need an extra property ('patchFailedToBuild') to be set.
(RunJavaScriptCoreTests.evaluateCommand): Dynamically add ReRunJavaScriptCoreTests step if required.
(ReRunJavaScriptCoreTests): Removed doStepIf() and hideStepIf() method.
(ReRunJavaScriptCoreTests.evaluateCommand): Dynamically add UnApplyPatchIfRequired(), CompileJSCToT() and RunJavaScriptCoreTestsToT steps.
(RunJavaScriptCoreTestsToT.evaluateCommand): Overriden to avoid caling the base-class method which dynamically adds
more steps.

  • BuildSlaveSupport/ews-build/steps_unittest.py: Updated unit-tests accordingly.
10:14 AM Changeset in webkit [250349] by achristensen@apple.com
  • 11 edits in trunk/Source/WebKit

Replace _WKProcessPoolConfiguration.CTDataConnectionServiceType with _WKWebsiteDataStoreConfiguration.dataConnectionServiceType
https://bugs.webkit.org/show_bug.cgi?id=202174

Reviewed by Tim Horton.

_WKProcessPoolConfiguration.CTDataConnectionServiceType is used in one place and needs a replacement so we can
start a NetworkProcess without a WKProcessPool. Since this SPI only does something in the low-level networking code,
I verified that the new SPI sets the String the way the old one does, and the old one keeps working in the interim.

  • NetworkProcess/NetworkSessionCreationParameters.cpp:

(WebKit::NetworkSessionCreationParameters::encode const):
(WebKit::NetworkSessionCreationParameters::decode):

  • NetworkProcess/NetworkSessionCreationParameters.h:
  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(WebKit::NetworkSessionCocoa::NetworkSessionCocoa):

  • UIProcess/API/Cocoa/WKWebsiteDataStore.mm:

(-[WKWebsiteDataStore _initWithConfiguration:]):

  • UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h:
  • UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h:
  • UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm:

(-[_WKWebsiteDataStoreConfiguration dataConnectionServiceType]):
(-[_WKWebsiteDataStoreConfiguration setDataConnectionServiceType:]):

  • UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:

(WebKit::WebsiteDataStore::parameters):

  • UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp:

(WebKit::WebsiteDataStoreConfiguration::copy):

  • UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h:

(WebKit::WebsiteDataStoreConfiguration::dataConnectionServiceType const):
(WebKit::WebsiteDataStoreConfiguration::setDataConnectionServiceType):

10:04 AM Changeset in webkit [250348] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

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

it is creating failures on iOS bots (Requested by youenn on
#webkit).

Reverted changeset:

"Make IsNSURLSessionWebSocketEnabled an experimental flag"
https://bugs.webkit.org/show_bug.cgi?id=202135
https://trac.webkit.org/changeset/250336

9:47 AM Changeset in webkit [250347] by commit-queue@webkit.org
  • 72 edits
    28 copies
    4 moves
    58 adds
    7 deletes in trunk/LayoutTests

Re-sync web-platform-tests/IndexedDB from upstream
https://bugs.webkit.org/show_bug.cgi?id=202179

Patch by Alexey Shvayka <Alexey Shvayka> on 2019-09-25
Reviewed by Alex Christensen.

Re-sync web-platform-tests/IndexedDB from upstream a0f781e4d4e9.

LayoutTests/imported/w3c:

  • web-platform-tests/IndexedDB/*: Updated.

LayoutTests:

  • TestExpectations:
  • platform/ios/TestExpectations:
  • platform/mac-wk1/TestExpectations:
  • platform/mac/TestExpectations:
  • tests-options.json:
9:23 AM Changeset in webkit [250346] by youenn@apple.com
  • 3 edits in trunk/Source/WebKit

Creation of a service worker connection for a service worker job should be based on the job scope
https://bugs.webkit.org/show_bug.cgi?id=202185

Reviewed by Alex Christensen.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::swServerForSession):
Assert that registrable domain is not empty.

  • NetworkProcess/ServiceWorker/WebSWServerConnection.cpp:

(WebKit::WebSWServerConnection::scheduleJobInServer):
Use the scope URL instead of the script URL which may be empty in case of an unregister job.

9:01 AM Changeset in webkit [250345] by Wenson Hsieh
  • 19 edits in trunk

[iPadOS] [DataActivation] Focus moves away after focusing input fields on www.att.com
https://bugs.webkit.org/show_bug.cgi?id=202167
<rdar://problem/55185021>

Reviewed by Tim Horton.

Source/WebCore:

Adds a new site-specific quirk. See WebKit ChangeLog for more details.

  • page/Quirks.cpp:

(WebCore::Quirks::shouldUseLegacySelectPopoverDismissalBehaviorInDataActivation const):

  • page/Quirks.h:
  • platform/RuntimeApplicationChecks.h:
  • platform/cocoa/RuntimeApplicationChecksCocoa.mm:

(WebCore::IOSApplication::isDataActivation):

Source/WebKit:

When using the data activation page on www.att.com, one of the sections on the page contains several select
elements; in the case where the user agent:

  1. contains the string "iPad", and
  2. does not contain the string "Safari"

...www.att.com's data activation page will opt into a mode where it adds blur event listeners to the select
elements; in this blur event listener, www.att.com proceeds to programmatically focus a non-editable div element
after a 1 second timeout. The reasons for this behavior remain unclear to me, though it's worth noting that the
blur event handler name is "screenReaderFocus", which suggests that this is in place to ensure compatibility
with screen readers.

In iOS 12, dismissing the popover would blur the focused select menu with an animation. Since the animation
would take a slightly less than 1 second, www.att.com's logic would have the effect of moving focus to the div
element shortly after dismissing the select menu. However, after r243808, we no longer attempt to blur the
focused select element when dismissing the popover. This means that the select element is only blurred the next
time the user activates another focused element, such as one of the input fields on the page, or a different
select element. Consequently, the logic to move focus into a div element now occurs only after a different
element has already been focused; this results in focus moving away from newly focused elements after 1 second
in the case where a select element has previously focused.

To mitigate this, restore iOS 12 behavior behind a site- and app-specific quirk. See comments below for more
details.

  • Shared/FocusedElementInformation.cpp:

(WebKit::FocusedElementInformation::encode const):
(WebKit::FocusedElementInformation::decode):

  • Shared/FocusedElementInformation.h:

Add a new behavioral quirk flag to FocusedElementInformation to determine whether we should use "legacy" select
popover dismissal behavior (i.e. blurring the focused select element when dismissing the select popover, as well
as dismissing the popover with animation).

  • Shared/WebPreferences.yaml:

Enable site-specific quirks by default in WKWebView. With regards to this bug, this change allows for
site-specific hacks (namely, legacy select popover dismissal) in DataActivation. However, this also fixes
various known bugs that are otherwise addressed in Safari only, via site-specific quirks.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _initializeWithConfiguration:]):

For apps linked on or before iOS 13 and macOS 10.15, revert the default of value of NeedsSiteSpecificQuirks to
false. This is done here instead of in a default value function in WebPreferencesDefaultValues to prevent the
default values of NeedsSiteSpecificQuirks in the web process and UI process from going out of sync, since the
web process is not necessarily linked against the same SDK as the application.

  • UIProcess/Cocoa/VersionChecks.h:

Add a new DYLD version check for the first version of iOS and macOS where site-specific quirks are enabled by
default.

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

(-[WKContentView endEditingAndUpdateFocusAppearanceWithReason:]):
(-[WKContentView _elementDidBlur]):
(-[WKContentView _shouldUseLegacySelectPopoverDismissalBehavior]):

We only use "legacy" select popover dismissal behavior in the case where the site-specific quirk flag is on, a
select popover is used (i.e. the device is an iPad and a select element is focused), and the application bundle
is "com.apple.DataActivation".

  • UIProcess/ios/forms/WKFormSelectPopover.mm:

(-[WKSelectTableViewController shouldDismissWithAnimation]):

Keyed off of _shouldUseLegacySelectPopoverDismissalBehavior.

(-[WKSelectPopover controlEndEditing]):

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::getFocusedElementInformation):

Source/WTF:

Declare DYLD_IOS_VERSION_13_2.

  • wtf/spi/darwin/dyldSPI.h:

Tools:

Rebaseline an API test.

  • TestWebKitAPI/Tests/WebKit/WKPreferences.cpp:

(TestWebKitAPI::TEST):

7:55 AM Changeset in webkit [250344] by Jonathan Bedard
  • 29 edits
    128 deletes in trunk

Unreviewed, rolling out r250324.

Source/WebCore:

Broke many mac wk2 layout tests

Reverted changeset:

"Enable LayoutTests using ResourceLoadStatistics SQLite
backend (195420)"
https://bugs.webkit.org/show_bug.cgi?id=195420
https://trac.webkit.org/changeset/250324

Source/WebKit:

Broke many mac wk2 layout tests

Reverted changeset:

"Enable LayoutTests using ResourceLoadStatistics SQLite
backend (195420)"
https://bugs.webkit.org/show_bug.cgi?id=195420
https://trac.webkit.org/changeset/250324

Tools:

Tools/ChangeLog

Reverted changeset:

"Enable LayoutTests using ResourceLoadStatistics SQLite
backend (195420)"
https://bugs.webkit.org/show_bug.cgi?id=195420
https://trac.webkit.org/changeset/250324

LayoutTests:

Broke many mac wk2 layout tests

Reverted changeset:

"Enable LayoutTests using ResourceLoadStatistics SQLite
backend (195420)"
https://bugs.webkit.org/show_bug.cgi?id=195420
https://trac.webkit.org/changeset/250324

7:43 AM Changeset in webkit [250343] by Antti Koivisto
  • 8 edits
    2 moves in trunk/Source/WebCore

Rename LineLayoutInterface to LineLayoutTraversal
https://bugs.webkit.org/show_bug.cgi?id=202202

Reviewed by Zalan Bujtas.

Use a bit more informative namespace name.

  • Headers.cmake:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • dom/Position.cpp:

(WebCore::Position::upstream const):
(WebCore::Position::downstream const):

  • editing/TextIterator.cpp:

(WebCore::TextIterator::handleTextNode):
(WebCore::TextIterator::handleTextBox):
(WebCore::TextIterator::handleTextNodeFirstLetter):

  • editing/TextIterator.h:
  • rendering/RenderTreeAsText.cpp:

(WebCore::RenderTreeAsText::writeRenderObject):
(WebCore::writeTextBox):
(WebCore::write):

  • rendering/line/LineLayoutTraversal.cpp: Renamed from Source/WebCore/rendering/line/LineLayoutInterfaceTextBoxes.cpp.

(WebCore::LineLayoutTraversal::TextBox::rect const):
(WebCore::LineLayoutTraversal::TextBox::logicalRect const):
(WebCore::LineLayoutTraversal::TextBox::hasHyphen const):
(WebCore::LineLayoutTraversal::TextBox::isLeftToRightDirection const):
(WebCore::LineLayoutTraversal::TextBox::dirOverride const):
(WebCore::LineLayoutTraversal::TextBox::text const):
(WebCore::LineLayoutTraversal::TextBox::localStartOffset const):
(WebCore::LineLayoutTraversal::TextBox::localEndOffset const):
(WebCore::LineLayoutTraversal::TextBox::length const):
(WebCore::LineLayoutTraversal::TextBox::isLastOnLine const):
(WebCore::LineLayoutTraversal::TextBox::isLast const):
(WebCore::LineLayoutTraversal::TextBox::iterator const):
(WebCore::LineLayoutTraversal::TextBoxIterator::TextBoxIterator):
(WebCore::LineLayoutTraversal::TextBoxIterator::traverseNextInVisualOrder):
(WebCore::LineLayoutTraversal::TextBoxIterator::ComplexPath::nextInlineTextBoxInTextOrder const):
(WebCore::LineLayoutTraversal::TextBoxIterator::traverseNextInTextOrder):
(WebCore::LineLayoutTraversal::TextBoxIterator::operator== const):
(WebCore::LineLayoutTraversal::TextBoxIterator::atEnd const):
(WebCore::LineLayoutTraversal::firstTextBoxInVisualOrderFor):
(WebCore::LineLayoutTraversal::firstTextBoxInTextOrderFor):
(WebCore::LineLayoutTraversal::textBoxRangeFor):

  • rendering/line/LineLayoutTraversal.h: Renamed from Source/WebCore/rendering/line/LineLayoutInterfaceTextBoxes.h.

(WebCore::LineLayoutTraversal::TextBoxIterator::TextBoxIterator):
(WebCore::LineLayoutTraversal::TextBoxIterator::operator++):
(WebCore::LineLayoutTraversal::TextBoxIterator::operator bool const):
(WebCore::LineLayoutTraversal::TextBoxIterator::operator!= const):
(WebCore::LineLayoutTraversal::TextBoxIterator::operator== const):
(WebCore::LineLayoutTraversal::TextBoxIterator::operator* const):
(WebCore::LineLayoutTraversal::TextBoxIterator::operator-> const):
(WebCore::LineLayoutTraversal::TextBoxRange::TextBoxRange):
(WebCore::LineLayoutTraversal::TextBoxRange::begin const):
(WebCore::LineLayoutTraversal::TextBoxRange::end const):
(WebCore::LineLayoutTraversal::hasTextBoxes):

7:33 AM Changeset in webkit [250342] by Alan Bujtas
  • 5 edits in trunk/Source/WebCore

[LFC][IFC] Use existing Line::Content::LineBox to track the current line geometry
https://bugs.webkit.org/show_bug.cgi?id=202182

Reviewed by Antti Koivisto.

This patch removes the redundant Line::m_logicalTopLeft, m_contentLogicalWidth, m_lineLogicalHeight, m_baseline, m_baselineTop members
and switches over to Line::m_content's LineBox.

  • layout/displaytree/DisplayRect.h:

(WebCore::Display::Rect::Rect):

  • layout/inlineformatting/InlineLine.cpp:

(WebCore::Layout::Line::Line):
(WebCore::Layout::Line::close):
(WebCore::Layout::Line::removeTrailingTrimmableContent):
(WebCore::Layout::Line::moveLogicalLeft):
(WebCore::Layout::Line::appendNonBreakableSpace):
(WebCore::Layout::Line::appendTextContent):
(WebCore::Layout::Line::appendNonReplacedInlineBox):
(WebCore::Layout::Line::adjustBaselineAndLineHeight):
(WebCore::Layout::m_skipVerticalAligment): Deleted.

  • layout/inlineformatting/InlineLine.h:

(WebCore::Layout::Line::Content::lineBox):
(WebCore::Layout::Line::contentLogicalRight const):
(WebCore::Layout::Line::logicalTop const):
(WebCore::Layout::Line::logicalBottom const):
(WebCore::Layout::Line::logicalLeft const):
(WebCore::Layout::Line::logicalHeight const):
(WebCore::Layout::Line::contentLogicalWidth const):
(WebCore::Layout::Line::baselineOffset const):

  • layout/inlineformatting/InlineLineBox.h:

(WebCore::Layout::LineBox::setLogicalTopLeft):
(WebCore::Layout::LineBox::setLogicalHeight):
(WebCore::Layout::LineBox::setLogicalWidth):
(WebCore::Layout::LineBox::moveHorizontally):
(WebCore::Layout::LineBox::expandHorizontally):
(WebCore::Layout::LineBox::shrinkHorizontally):
(WebCore::Layout::LineBox::expandVertically):
(WebCore::Layout::LineBox::shrinkVertically):
(WebCore::Layout::LineBox::LineBox):
(WebCore::Layout::LineBox::setLogicalHeightIfGreater):
(WebCore::Layout::LineBox::setBaseline):
(WebCore::Layout::LineBox::baseline const):
(WebCore::Layout::LineBox::baseline):
(WebCore::Layout::LineBox::setBaselineOffset):
(WebCore::Layout::LineBox::Baseline::setAscentIfGreater):
(WebCore::Layout::LineBox::Baseline::setDescentIfGreater):

7:23 AM Changeset in webkit [250341] by Antti Koivisto
  • 17 edits in trunk/Source/WebCore

Rename InlineBox::nextLeafChild to nextLeafOnLine
https://bugs.webkit.org/show_bug.cgi?id=202197

Reviewed by Zalan Bujtas.

The name is confusing as it never returns a child of the inline box it is called on.
Rename it and other similar functions that traverse within a line.

  • dom/Position.cpp:

(WebCore::Position::getInlineBoxAndOffset const):

  • editing/RenderedPosition.cpp:

(WebCore::RenderedPosition::RenderedPosition):
(WebCore::RenderedPosition::previousLeafOnLine const):
(WebCore::RenderedPosition::nextLeafOnLine const):
(WebCore::RenderedPosition::isEquivalent const):
(WebCore::RenderedPosition::bidiLevelOnLeft const):
(WebCore::RenderedPosition::bidiLevelOnRight const):
(WebCore::RenderedPosition::leftBoundaryOfBidiRun):
(WebCore::RenderedPosition::rightBoundaryOfBidiRun):
(WebCore::RenderedPosition::atLeftBoundaryOfBidiRun const):
(WebCore::RenderedPosition::atRightBoundaryOfBidiRun const):
(WebCore::RenderedPosition::positionAtLeftBoundaryOfBiDiRun const):
(WebCore::RenderedPosition::positionAtRightBoundaryOfBiDiRun const):
(WebCore::RenderedPosition::prevLeafChild const): Deleted.
(WebCore::RenderedPosition::nextLeafChild const): Deleted.

  • editing/RenderedPosition.h:

(WebCore::RenderedPosition::RenderedPosition):

  • editing/VisiblePosition.cpp:

(WebCore::VisiblePosition::leftVisuallyDistinctCandidate const):
(WebCore::VisiblePosition::rightVisuallyDistinctCandidate const):

  • editing/VisibleUnits.cpp:

(WebCore::startPositionForLine):
(WebCore::endPositionForLine):
(WebCore::previousLinePosition):
(WebCore::nextLinePosition):

  • layout/Verification.cpp:

(WebCore::Layout::collectFlowBoxSubtree):

  • rendering/ComplexLineLayout.cpp:

(WebCore::ComplexLineLayout::updateRubyForJustifiedText):
(WebCore::expansionBehaviorForInlineTextBox):
(WebCore::ComplexLineLayout::computeInlineDirectionPositionsForSegment):
(WebCore::ComplexLineLayout::layoutRunsAndFloats):

  • rendering/InlineBox.cpp:

(WebCore::InlineBox::previousOnLineExists const):
(WebCore::InlineBox::nextLeafOnLine const):
(WebCore::InlineBox::previousLeafOnLine const):
(WebCore::InlineBox::nextLeafOnLineIgnoringLineBreak const):
(WebCore::InlineBox::previousLeafOnLineIgnoringLineBreak const):
(WebCore::InlineBox::nextLeafChild const): Deleted.
(WebCore::InlineBox::prevLeafChild const): Deleted.
(WebCore::InlineBox::nextLeafChildIgnoringLineBreak const): Deleted.
(WebCore::InlineBox::prevLeafChildIgnoringLineBreak const): Deleted.

  • rendering/InlineBox.h:

(WebCore::InlineBox::nextOnLine const):
(WebCore::InlineBox::previousOnLine const):
(WebCore::InlineBox::setNextOnLine):
(WebCore::InlineBox::setPreviousOnLine):
(WebCore::InlineBox::InlineBox):
(WebCore::InlineBox::prevOnLine const): Deleted.
(WebCore::InlineBox::setPrevOnLine): Deleted.

  • rendering/InlineFlowBox.cpp:

(WebCore::InlineFlowBox::addToLine):
(WebCore::InlineFlowBox::removeChild):
(WebCore::InlineFlowBox::nodeAtPoint):
(WebCore::InlineFlowBox::firstLeafDescendant const):
(WebCore::InlineFlowBox::lastLeafDescendant const):
(WebCore::InlineFlowBox::placeEllipsisBox):
(WebCore::InlineFlowBox::collectLeafBoxesInLogicalOrder const):
(WebCore::InlineFlowBox::checkConsistency const):
(WebCore::InlineFlowBox::firstLeafChild const): Deleted.
(WebCore::InlineFlowBox::lastLeafChild const): Deleted.

  • rendering/InlineFlowBox.h:
  • rendering/InlineTextBox.cpp:

(WebCore::InlineTextBox::expansionBehavior const):

  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::containsNonZeroBidiLevel const):
(WebCore::RenderBlockFlow::positionForPointWithInlineChildren):

  • rendering/RenderCounter.cpp:

(WebCore::RenderCounter::rendererRemovedFromTree):

  • rendering/RenderTextLineBoxes.cpp:

(WebCore::lineDirectionPointFitsInBox):
(WebCore::createVisiblePositionAfterAdjustingOffsetForBiDi):
(WebCore::RenderTextLineBoxes::positionForPoint const):

  • rendering/RootInlineBox.cpp:

(WebCore::RootInlineBox::isHyphenated const):
(WebCore::RootInlineBox::lineSelectionGap):
(WebCore::RootInlineBox::selectionState):
(WebCore::RootInlineBox::firstSelectedBox):
(WebCore::RootInlineBox::lastSelectedBox):
(WebCore::RootInlineBox::closestLeafChildForLogicalLeftPosition):

  • rendering/svg/SVGRootInlineBox.cpp:

(WebCore::SVGRootInlineBox::closestLeafChildForPosition):
(WebCore::SVGRootInlineBox::nodeAtPoint):

3:11 AM Changeset in webkit [250340] by guijemont@igalia.com
  • 2 edits in trunk/Source/JavaScriptCore

testapi: slow devices need more time before watchdog fires
https://bugs.webkit.org/show_bug.cgi?id=202149

Reviewed by Mark Lam.

In testExecutionTimeLimit(), the time that we leave for the watchdog
to fire is often not enough on (slower) arm and mips devices, creating
a testapi failure.
This change also skips FTL-specific testing when FTL is disabled.

  • API/tests/ExecutionTimeLimitTest.cpp:

(testExecutionTimeLimit):

2:47 AM Changeset in webkit [250339] by zandobersek@gmail.com
  • 8 edits
    2 adds in trunk/Source/WebCore

[Nicosia] Add implementations for fixed, positioned, sticky ScrollingTreeNodes
https://bugs.webkit.org/show_bug.cgi?id=202100

Reviewed by Carlos Garcia Campos.

Fill in the Nicosia implementations for the ScrollingTreeFixedNode,
ScrollingTreePositionedNode and ScrollingTreeStickyNode classes.

The implementations in majority repeat what the Cocoa implementations
do, with the main difference being the Nicosia-specific layer state
application. Sharing more of this logic should be investigated in the
future.

  • PlatformPlayStation.cmake: Add ScrollingTreePositionedNode to build.
  • SourcesGTK.txt: Ditto.
  • SourcesWPE.txt: Ditto.
  • page/scrolling/nicosia/ScrollingTreeFixedNode.cpp:

(WebCore::ScrollingTreeFixedNode::commitStateBeforeChildren):
(WebCore::ScrollingTreeFixedNode::applyLayerPositions):
(WebCore::ScrollingTreeFixedNode::dumpProperties const):

  • page/scrolling/nicosia/ScrollingTreeFixedNode.h:
  • page/scrolling/nicosia/ScrollingTreePositionedNode.cpp: Added.

(WebCore::ScrollingTreePositionedNode::create):
(WebCore::ScrollingTreePositionedNode::ScrollingTreePositionedNode):
(WebCore::ScrollingTreePositionedNode::commitStateBeforeChildren):
(WebCore::ScrollingTreePositionedNode::applyLayerPositions):
(WebCore::ScrollingTreePositionedNode::dumpProperties const):

  • page/scrolling/nicosia/ScrollingTreePositionedNode.h: Added.

(WebCore::ScrollingTreePositionedNode::relatedOverflowScrollingNodes const):

  • page/scrolling/nicosia/ScrollingTreeStickyNode.cpp:

(WebCore::ScrollingTreeStickyNode::commitStateBeforeChildren):
(WebCore::ScrollingTreeStickyNode::applyLayerPositions):
(WebCore::ScrollingTreeStickyNode::dumpProperties const):
(WebCore::ScrollingTreeStickyNode::computeLayerPosition const):

  • page/scrolling/nicosia/ScrollingTreeStickyNode.h:
2:25 AM Changeset in webkit [250338] by Fujii Hironori
  • 2 edits in trunk/LayoutTests

Unreviewed test gardening for WinCairo port.

  • platform/wincairo/TestExpectations: Updated several tests.
12:40 AM Changeset in webkit [250337] by Fujii Hironori
  • 3 edits in trunk/LayoutTests

Layout Test http/tests/misc/bubble-drag-events.html is a flaky crash
https://bugs.webkit.org/show_bug.cgi?id=182130

Unreviewed test gardening for Windows ports.

It doesn't flaky crash these days for Windows ports.
<https://webkit-test-results.webkit.org/dashboards/flakiness_dashboard.html#tests=http%2Ftests%2Fmisc%2Fbubble-drag-events.html>

  • platform/win/TestExpectations:
  • platform/wincairo/TestExpectations:

Unmarked it.

12:27 AM Changeset in webkit [250336] by youenn@apple.com
  • 2 edits in trunk/Source/WebKit

Make IsNSURLSessionWebSocketEnabled an experimental flag
https://bugs.webkit.org/show_bug.cgi?id=202135

Reviewed by Geoffrey Garen.

  • Shared/WebPreferences.yaml:
Note: See TracTimeline for information about the timeline view.