⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Timeline



Apr 1, 2019:

11:44 PM Changeset in webkit [243738] by rniwa@webkit.org
  • 2 edits in trunk/Source/WebCore

Nullptr crash in Document::open after calling policyChecker().stopCheck()
https://bugs.webkit.org/show_bug.cgi?id=196479

Reviewed by Antti Koivisto.

Added a missing nullptr check in Document::open after calling m_frame->loader().policyChecker().stopCheck()
since it invokes m_willSubmitFormCompletionHandlers in WebKit2, and that could clear m_frame.

Unfortunately, we don't have any reproducible test case.

  • dom/Document.cpp:

(WebCore::Document::open):

11:23 PM Changeset in webkit [243737] by rniwa@webkit.org
  • 2 edits in trunk/LayoutTests

Skip the tests added in r236519 on iOS. This feature was never implemented in iOS.

  • platform/ios/TestExpectations:
9:01 PM Changeset in webkit [243736] by timothy@apple.com
  • 2 edits in trunk/Source/WebCore

Unreviewed build fix.

  • crypto/mac/SerializedCryptoKeyWrapMac.mm:

(WebCore::createAndStoreMasterKey): Add ALLOW_DEPRECATED_DECLARATIONS_BEGIN/END
around SecTrustedApplicationCreateFromPath call.

8:16 PM Changeset in webkit [243735] by Simon Fraser
  • 3 edits in trunk/Source/WebCore

Remove some unused iOS scrolling-related code in Frame
https://bugs.webkit.org/show_bug.cgi?id=196473

Reviewed by Zalan Bujtas.

This code has no callers.

  • page/Frame.cpp:

(WebCore::Frame::Frame):
(WebCore::Frame::scrollOverflowLayer): Deleted.
(WebCore::Frame::overflowAutoScrollTimerFired): Deleted.
(WebCore::Frame::startOverflowAutoScroll): Deleted.
(WebCore::Frame::checkOverflowScroll): Deleted.

  • page/Frame.h:
8:14 PM Changeset in webkit [243734] by Chris Dumez
  • 4 edits in trunk

Attr nodes are not cloned properly
https://bugs.webkit.org/show_bug.cgi?id=196466

Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

Rebaseline WPT test now that one more check is passing.

  • web-platform-tests/dom/nodes/Document-importNode-expected.txt:

Source/WebCore:

Attr nodes are not cloned properly according to:

A cloned Attr node should retain its prefix and namespace.

Both Gecko and Blink agree with the DOM specification here.

No new tests, rebaselined existing test.

  • dom/Document.cpp:

(WebCore::Document::importNode):

8:12 PM Changeset in webkit [243733] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

Unreviewed, drop debug logging landed as part of r242903 by mistake.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::decidePolicyForNavigationAction):

7:57 PM Changeset in webkit [243732] by Jonathan Bedard
  • 11 edits in trunk/Tools

run-api-tests: Upload test results
https://bugs.webkit.org/show_bug.cgi?id=196323
<rdar://problem/49356714>

Reviewed by Lucas Forschler.

  • Scripts/webkitpy/api_tests/manager.py:

(Manager):
(Manager.run): Upload results to a results database.

  • Scripts/webkitpy/api_tests/run_api_tests.py:

(parse_args): Add upload arguments.

  • Scripts/webkitpy/port/base.py:

(Port):
(Port.configuration_for_upload): Creates a configuration dictionary for uploading results.
(Port.commits_for_upload): Create a list of commits from the WebKit repository tests are run from along
with commits from any other associated repositories.

  • Scripts/webkitpy/port/device.py:

(Device):
(Device.build_version): Access build_versoin of underlying platform device.

  • Scripts/webkitpy/port/ios_simulator_unittest.py:

(IOSSimulatorTest):
(IOSSimulatorTest.test_configuration_for_upload):

  • Scripts/webkitpy/port/device_port.py:

(DevicePort):
(DevicePort.configuration_for_upload): Devices are unique because their configuration is not
the same as the machine uploading results.

  • Scripts/webkitpy/port/mac.py:

(MacPort):
(MacPort.configuration_for_upload): Define SDK in upload configuration for Mac.

  • Scripts/webkitpy/port/mac_unittest.py:

(MacTest):
(MacTest.test_configuration_for_upload):

  • Scripts/webkitpy/xcode/simulated_device.py:

(SimulatedDeviceManager._create_device_with_runtime):
(SimulatedDevice.init): Create simulated device with a build_version.

  • Scripts/webkitpy/xcode/simulated_device_unittest.py:

(test_existing_simulator):

7:04 PM Changeset in webkit [243731] by commit-queue@webkit.org
  • 2 edits
    2 adds in trunk/Source/WebKit

Add SPI to give injected bundles access to displayed PDFDocuments
https://bugs.webkit.org/show_bug.cgi?id=196471
<rdar://problem/48080768>

Patch by Remy Demarest <rdemarest@apple.com> on 2019-04-01
Reviewed by Tim Horton.

  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/InjectedBundle/API/c/mac/WKBundlePageMac.h: Added.
  • WebProcess/InjectedBundle/API/c/mac/WKBundlePageMac.mm: Added.

(WKBundlePageGetPDFDocumentInFrame):

6:31 PM Changeset in webkit [243730] by commit-queue@webkit.org
  • 51 edits
    15 deletes in trunk

Remove the SVG tear off objects for SVGMatrix, SVGTransfrom, SVGTransformList and SVGAnimatedTransformList
https://bugs.webkit.org/show_bug.cgi?id=196086

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

Source/WebCore:

The IDL changes:

SVGTransform.idl:

Remove the NewObject qualifier from matrix attribute. This matches
the specs: https://www.w3.org/TR/SVG11/coords.html#InterfaceSVGTransform.
SVGTransform will internally hold an SVGMatrix. A change in this
SVGMatrix will affect the container SVGTransform.

SVGTransformList.idl:

Remove the NewObject qualifier from consolidate() method. This matches
the specs:
https://www.w3.org/TR/SVG11/coords.html#__svg__SVGTransformList__consolidate
The method consolidate() should return a reference to the first item
in the list after consolidating it.

Code changes:

-- SVGMatrix is now a superclass of SVGValueProperty<AffineTransform>.

No need for SVGMatrixValue since it was wrapper of AffineTransform.

-- SVGTransformValue now holds a Ref<SVGMatrix> member in addition to the

angle and the rotationCenter. Ref<SVGMatrix> is what SVGTransform.matrix
will return. So a change in this matrix will change the owner SVGTransform.

-- SVGTransform is now the owner of SVGMatrix via its SVGTransformValue.

-- SVGTransformList is now a superclass of SVGValuePropertyList<SVGTransform>.

It is responsible for parsing a String to items of SVGTransform.

-- SVGAnimatedTransformList is now defined as SVGAnimatedPropertyList<

SVGTransformList>.

Note the ownership chain of these objects is the following:

-- SVGAnimatedTransformList owns the SVGTransformList via its baseVal

and animVal members.

-- SVGTransformList owns SVGTransform via its list of items

-- SVGTransform owns SVGMatrix via its SVGTransformValue.

So a change in SVGMatrix will propagate to the owner SVGElement through
the following ownership chain:

SVGMatrix

|_ SVGTransfrom

|_ SVGTransformList

|_ SVGAmimatedTransformList

|_ SVGElement

To get the mechanics of this change right, a new accessor, a new animator
and animation functions are added for the SVGAnimatedTransformList.

-- SVGViewSpec used to hold an SVGAnimatedTransformListAttribute for the
member m_transform although this member should not be animated. See the
comment in the old SVGViewSpec::transform(). This has been changed in this
patch. SVGViewSpec now holds Ref<SVGTransformList> which matches the specs:
https://www.w3.org/TR/SVG11/types.html#InterfaceSVGViewSpec.

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • svg/SVGAnimateElementBase.cpp:

(WebCore::SVGAnimateElementBase::attributeAnimationController):
(WebCore::SVGAnimateElementBase::hasValidAttributeType const):
(WebCore::SVGAnimateElementBase::calculateToAtEndOfDurationValue):
(WebCore::SVGAnimateElementBase::calculateFromAndToValues):
(WebCore::SVGAnimateElementBase::calculateFromAndByValues):

  • svg/SVGAnimateElementBase.h:

(WebCore::SVGAnimateElementBase::animateRangeString const):

  • svg/SVGAnimateTransformElement.cpp:

(WebCore::SVGAnimateTransformElement::animateRangeString const):

  • svg/SVGAnimateTransformElement.h:

This change is needed because animating the transform attribute can be

written as

<animate ... from="translate(100)" to="translate(200)"/>

or

<animateTransform type="translate" from="100" to="200"/>"

So we need to surround the animation range string with the type qualifier
for animateTransform.

  • svg/SVGAnimatedTransformList.cpp: Removed.
  • svg/SVGAnimatedTransformList.h: Removed.
  • svg/SVGAnimatedType.h: Removed.
  • svg/SVGAnimatedTypeAnimator.cpp: Removed.
  • svg/SVGAnimatedTypeAnimator.h: Removed.
  • svg/SVGAnimationElement.cpp:

(WebCore::SVGAnimationElement::adjustForInheritance): Deleted.

  • svg/SVGAnimationElement.h:

(WebCore::SVGAnimationElement::adjustForInheritance): Deleted.
(WebCore::SVGAnimationElement::adjustFromToListValues): Deleted.
(WebCore::SVGAnimationElement::animateDiscreteType): Deleted.
These functions were used by SVGLegacyAttributeAnimationController.

  • svg/SVGAnimatorFactory.h: Removed.
  • svg/SVGExternalResourcesRequired.h:

(WebCore::SVGExternalResourcesRequired::isKnownAttribute):

  • svg/SVGFEImageElement.h:
  • svg/SVGFEMorphologyElement.h:
  • svg/SVGFETileElement.h:
  • svg/SVGFitToViewBox.h:

(WebCore::SVGFitToViewBox::isKnownAttribute):

  • svg/SVGGradientElement.cpp:

(WebCore::SVGGradientElement::SVGGradientElement):
(WebCore::SVGGradientElement::parseAttribute):
(WebCore::SVGGradientElement::registerAttributes): Deleted.

  • svg/SVGGradientElement.h:

(WebCore::SVGGradientElement::gradientTransform const):
(WebCore::SVGGradientElement::gradientTransformAnimated):
(WebCore::SVGGradientElement::isKnownAttribute):

  • svg/SVGGraphicsElement.cpp:

(WebCore::SVGGraphicsElement::SVGGraphicsElement):
(WebCore::SVGGraphicsElement::animatedLocalTransform const):
(WebCore::SVGGraphicsElement::parseAttribute):
(WebCore::SVGGraphicsElement::svgAttributeChanged):
There is one attribute for this element which is "SVGNames::transformAttr"
So there is no need to check for it twice.

(WebCore::SVGGraphicsElement::registerAttributes): Deleted.

  • svg/SVGGraphicsElement.h:

(WebCore::SVGGraphicsElement::transform const):
(WebCore::SVGGraphicsElement::transformAnimated):
(WebCore::SVGGraphicsElement::isKnownAttribute): Deleted.

  • svg/SVGLangSpace.cpp:

(WebCore::SVGLangSpace::SVGLangSpace):
(WebCore::SVGLangSpace::xmlspace const):
(WebCore::SVGLangSpace::isKnownAttribute):
(WebCore::SVGLangSpace::svgAttributeChanged):
(WebCore::SVGLangSpace::registerAttributes): Deleted.

  • svg/SVGLangSpace.h:

(WebCore::SVGLangSpace::xmllang const):
(WebCore::SVGLangSpace::setXmllang):
(WebCore::SVGLangSpace::setXmlspace):
(WebCore::SVGLangSpace::attributeRegistry): Deleted.
(WebCore::SVGLangSpace::isKnownAttribute): Deleted.

  • svg/SVGLegacyAttributeAnimationController.cpp: Removed.
  • svg/SVGLegacyAttributeAnimationController.h: Removed.
  • svg/SVGLinearGradientElement.cpp:

(WebCore::setGradientAttributes):

  • svg/SVGMaskElement.h:
  • svg/SVGMatrix.h:

(WebCore::SVGMatrix::create):
(WebCore::SVGMatrix::a const):
(WebCore::SVGMatrix::setA):
(WebCore::SVGMatrix::b const):
(WebCore::SVGMatrix::setB):
(WebCore::SVGMatrix::c const):
(WebCore::SVGMatrix::setC):
(WebCore::SVGMatrix::d const):
(WebCore::SVGMatrix::setD):
(WebCore::SVGMatrix::e const):
(WebCore::SVGMatrix::setE):
(WebCore::SVGMatrix::f const):
(WebCore::SVGMatrix::setF):
(WebCore::SVGMatrix::multiply const):
(WebCore::SVGMatrix::inverse const):
(WebCore::SVGMatrix::translate const):
(WebCore::SVGMatrix::scale const):
(WebCore::SVGMatrix::scaleNonUniform const):
(WebCore::SVGMatrix::rotate const):
(WebCore::SVGMatrix::rotateFromVector const):
(WebCore::SVGMatrix::flipX const):
(WebCore::SVGMatrix::flipY const):
(WebCore::SVGMatrix::skewX const):
(WebCore::SVGMatrix::skewY const):

  • svg/SVGPatternElement.cpp:

(WebCore::SVGPatternElement::SVGPatternElement):
(WebCore::SVGPatternElement::parseAttribute):
(WebCore::SVGPatternElement::svgAttributeChanged):
(WebCore::SVGPatternElement::collectPatternAttributes const):
(WebCore::SVGPatternElement::localCoordinateSpaceTransform const):
(WebCore::SVGPatternElement::registerAttributes): Deleted.

  • svg/SVGPatternElement.h:
  • svg/SVGPoint.h:

(WebCore::SVGPoint::matrixTransform const):

  • svg/SVGPolyElement.h:

(WebCore::SVGPolyElement::isKnownAttribute): Deleted.

  • svg/SVGRadialGradientElement.cpp:

(WebCore::setGradientAttributes):

  • svg/SVGSVGElement.cpp:

(WebCore::SVGSVGElement::createSVGTransform):
(WebCore::SVGSVGElement::createSVGTransformFromMatrix):
(WebCore::SVGSVGElement::viewBoxToViewTransform const):

  • svg/SVGTextElement.cpp:

(WebCore::SVGTextElement::animatedLocalTransform const):

  • svg/SVGTransform.cpp: Removed.
  • svg/SVGTransform.h:

(WebCore::SVGTransform::create):
(WebCore::SVGTransform::~SVGTransform):
(WebCore::SVGTransform::clone const):
(WebCore::SVGTransform::type):
(WebCore::SVGTransform::angle):
(WebCore::SVGTransform::matrix):
(WebCore::SVGTransform::setMatrix):
(WebCore::SVGTransform::setTranslate):
(WebCore::SVGTransform::setScale):
(WebCore::SVGTransform::setRotate):
(WebCore::SVGTransform::setSkewX):
(WebCore::SVGTransform::setSkewY):
(WebCore::SVGTransform::SVGTransform):

  • svg/SVGTransform.idl:
  • svg/SVGTransformList.h:
  • svg/SVGTransformList.idl:
  • svg/SVGTransformListValues.cpp: Removed.
  • svg/SVGTransformListValues.h: Removed.
  • svg/SVGTransformValue.cpp: Removed.
  • svg/SVGTransformValue.h:

(WebCore::SVGTransformValue::SVGTransformValue):
(WebCore::SVGTransformValue::operator=):
(WebCore::SVGTransformValue::matrix const):
(WebCore::SVGTransformValue::rotationCenter const):
(WebCore::SVGTransformValue::isValid const):
(WebCore::SVGTransformValue::setMatrix):
(WebCore::SVGTransformValue::matrixDidChange):
(WebCore::SVGTransformValue::translate const):
(WebCore::SVGTransformValue::setTranslate):
(WebCore::SVGTransformValue::scale const):
(WebCore::SVGTransformValue::setScale):
(WebCore::SVGTransformValue::setRotate):
(WebCore::SVGTransformValue::setSkewX):
(WebCore::SVGTransformValue::setSkewY):
(WebCore::SVGTransformValue::valueAsString const):
(WebCore::SVGTransformValue::prefixForTransfromType):
(WebCore::SVGTransformValue::appendNumbers const):
(WebCore::SVGTransformValue::appendMatrix const):
(WebCore::SVGTransformValue::appendTranslate const):
(WebCore::SVGTransformValue::appendScale const):
(WebCore::SVGTransformValue::appendRotate const):
(WebCore::SVGTransformValue::appendSkewX const):
(WebCore::SVGTransformValue::appendSkewY const):
(WebCore::SVGTransformValue::matrix): Deleted.

  • svg/SVGTransformable.cpp:

(WebCore::SVGTransformable::parseAndSkipType):
(WebCore::parseAndSkipType): Deleted.
(WebCore::SVGTransformable::parseTransformAttribute): Deleted.
The code of this function was moved to SVGTransformList::parse().

  • svg/SVGTransformable.h:

There is no need for enum TransformParsingMode. It was used by
SVGViewSpec::parseViewSpec() to tell SVGTransformable::parseTransformAttribute()
not to clear the list. SVGTransfromList now has two parse() functions:
one public and the second is private. The public one clear the list
before parsing the input String. The private one just does the parsing.
SVGViewSpec::parseViewSpec() calls the private once since it is a friend
of SVGTransfromList.

  • svg/SVGValue.h: Removed.
  • svg/SVGViewSpec.cpp:

(WebCore::SVGViewSpec::SVGViewSpec):
(WebCore::SVGViewSpec::reset):
(WebCore::SVGViewSpec::parseViewSpec):
(WebCore::SVGViewSpec::registerAttributes): Deleted.
(WebCore::SVGViewSpec::transform): Deleted.

  • svg/SVGViewSpec.h:
  • svg/properties/SVGAnimatedPropertyAccessorImpl.h:
  • svg/properties/SVGAnimatedPropertyAnimatorImpl.h:
  • svg/properties/SVGAnimatedPropertyImpl.h:
  • svg/properties/SVGAnimatedTransformListPropertyTearOff.h: Removed.
  • svg/properties/SVGAnimationAdditiveListFunctionImpl.h:

(WebCore::SVGAnimationTransformListFunction::progress):

  • svg/properties/SVGAnimationAdditiveValueFunctionImpl.h:
  • svg/properties/SVGAttributeRegistry.h:
  • svg/properties/SVGMatrixTearOff.h: Removed.
  • svg/properties/SVGPropertyAccessorImpl.h:
  • svg/properties/SVGPropertyOwnerRegistry.h:

(WebCore::SVGPropertyOwnerRegistry::registerProperty):

LayoutTests:

  • svg/dom/SVGTransformList-basics-expected.txt:
  • svg/dom/SVGTransformList-basics.xhtml:

These changes are required because SVGTransfromList will be following the
SVG2 specs regarding adding new items to the list.

See https://www.w3.org/TR/SVG/types.html#TermListInterface.

6:08 PM Changeset in webkit [243729] by Fujii Hironori
  • 2 edits in trunk

[CMake] Remove EXTRA_DIRECTORIES parameter of WEBKIT_MAKE_FORWARDING_HEADERS
https://bugs.webkit.org/show_bug.cgi?id=196436

Reviewed by Darin Adler.

The parameter was only for WebCore/ForwardingHeaders which was
removed in Bug 182347.

  • Source/cmake/WebKitMacros.cmake: Remove unused EXTRA_DIRECTORIES parameter.
5:26 PM Changeset in webkit [243728] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

Remove extra newline characters (Follow-up fix to r243707)

  • BuildSlaveSupport/ews-app/ews/views/statusbubble.py:
5:20 PM Changeset in webkit [243727] by Devin Rousso
  • 6 edits in trunk/Source/WebInspectorUI

Web Inspector: Debugger: modernize serialization of breakpoints and the maps that hold them
https://bugs.webkit.org/show_bug.cgi?id=196230
<rdar://problem/49236485>

Reviewed by Joseph Pecoraro.

  • UserInterface/Controllers/DebuggerManager.js:

(WI.DebuggerManager):
(WI.DebuggerManager.prototype.breakpointsForSourceCode):
(WI.DebuggerManager.prototype.addBreakpoint):
(WI.DebuggerManager.prototype.removeBreakpoint):
(WI.DebuggerManager.prototype._setBreakpoint):
(WI.DebuggerManager.prototype._setBreakpoint.didSetBreakpoint):

  • UserInterface/Models/Breakpoint.js:

(WI.Breakpoint):
(WI.Breakpoint.fromJSON): Added.
(WI.Breakpoint.prototype.toJSON):
(WI.Breakpoint.prototype.set resolved):
(WI.Breakpoint.prototype.recreateAction):
(WI.Breakpoint.prototype.saveIdentityToCookie):
(WI.Breakpoint.prototype._isSpecial): Added.
(WI.Breakpoint.set resolved.isSpecialBreakpoint): Deleted.
(WI.Breakpoint.serializeOptions): Deleted.

  • UserInterface/Models/BreakpointAction.js:

(WI.BreakpointAction):
(WI.BreakpointAction.fromJSON): Added.
(WI.BreakpointAction.prototype.toProtocol): Added.

  • UserInterface/Views/DebuggerSidebarPanel.js:

(WI.DebuggerSidebarPanel.prototype._addBreakpointsForSourceCode):

  • UserInterface/Views/SourceCodeTextEditor.js:

(WI.SourceCodeTextEditor.prototype._prepareEditorForInitialContent):
(WI.SourceCodeTextEditor.prototype._breakpointsEnabledDidChange):

5:01 PM Changeset in webkit [243726] by Wenson Hsieh
  • 9 edits
    4 copies in trunk/Source/WebKit

[WebKit2] Introduce a public version of WKWebsitePolicies
https://bugs.webkit.org/show_bug.cgi?id=195989
<rdar://problem/47228232>

Reviewed by Tim Horton.

Expose the existing _WKWebsitePolicies object as WKWebpagePreferences, in what will eventually become a public
header in the WebKit SDK (WKWebpagePreferences.h). Following a similar transitioning strategy as
_WKWebsiteDataStore and WKWebsiteDataStore, we move existing logic from _WKWebsitePolicies to WKWebpagePreferences
and make _WKWebsitePolicies a wrapper around WKWebpagePreferences.

No change in behavior.

  • Shared/Cocoa/APIObject.mm:

(API::Object::newObject):

Wrap API::WebsitePolicies with WKWebpagePreferences.

  • SourcesCocoa.txt:
  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _updateWebsitePolicies:]):

  • UIProcess/API/Cocoa/WKWebpagePreferences.h: Copied from Source/WebKit/UIProcess/API/Cocoa/_WKWebsitePoliciesInternal.h.
  • UIProcess/API/Cocoa/WKWebpagePreferences.mm: Copied from Source/WebKit/UIProcess/API/Cocoa/_WKWebsitePolicies.mm.

Introduce WKWebpagePreferences.

(+[WKWebpagePreferences defaultPreferences]):
(-[WKWebpagePreferences dealloc]):
(-[WKWebpagePreferences init]):
(-[WKWebpagePreferences _setContentBlockersEnabled:]):
(-[WKWebpagePreferences _contentBlockersEnabled]):
(-[WKWebpagePreferences _setAllowedAutoplayQuirks:]):
(-[WKWebpagePreferences _allowedAutoplayQuirks]):
(-[WKWebpagePreferences _setAutoplayPolicy:]):
(-[WKWebpagePreferences _autoplayPolicy]):
(-[WKWebpagePreferences _setDeviceOrientationAndMotionAccessPolicy:]):
(-[WKWebpagePreferences _deviceOrientationAndMotionAccessPolicy]):
(-[WKWebpagePreferences _setPopUpPolicy:]):
(-[WKWebpagePreferences _popUpPolicy]):
(-[WKWebpagePreferences _customHeaderFields]):
(-[WKWebpagePreferences _setCustomHeaderFields:]):
(-[WKWebpagePreferences _websiteDataStore]):
(-[WKWebpagePreferences _setWebsiteDataStore:]):
(-[WKWebpagePreferences _setCustomUserAgent:]):
(-[WKWebpagePreferences _customUserAgent]):
(-[WKWebpagePreferences _setCustomJavaScriptUserAgentAsSiteSpecificQuirks:]):
(-[WKWebpagePreferences _customJavaScriptUserAgentAsSiteSpecificQuirks]):
(-[WKWebpagePreferences _setCustomNavigatorPlatform:]):
(-[WKWebpagePreferences _customNavigatorPlatform]):
(-[WKWebpagePreferences _apiObject]):

  • UIProcess/API/Cocoa/WKWebpagePreferencesInternal.h: Copied from Source/WebKit/UIProcess/API/Cocoa/_WKWebsitePoliciesInternal.h.
  • UIProcess/API/Cocoa/WKWebpagePreferencesPrivate.h: Copied from Source/WebKit/UIProcess/API/Cocoa/_WKWebsitePolicies.h.

Reintroduce all the interfaces currently available on _WKWebsitePolicies as underscore-prefixed SPI on
WKWebpagePreferences.

  • UIProcess/API/Cocoa/_WKWebsitePolicies.h:
  • UIProcess/API/Cocoa/_WKWebsitePolicies.mm:

Make _WKWebsitePolicies wrap WKWebpagePreferences, and plumb all existing SPI on WKWebsitePolicies through to
WKWebpagePreferences.

(-[_WKWebsitePolicies init]):
(-[_WKWebsitePolicies webpagePreferences]):
(-[_WKWebsitePolicies setContentBlockersEnabled:]):
(-[_WKWebsitePolicies contentBlockersEnabled]):
(-[_WKWebsitePolicies setAllowedAutoplayQuirks:]):
(-[_WKWebsitePolicies allowedAutoplayQuirks]):
(-[_WKWebsitePolicies setAutoplayPolicy:]):
(-[_WKWebsitePolicies autoplayPolicy]):
(-[_WKWebsitePolicies setDeviceOrientationAndMotionAccessPolicy:]):
(-[_WKWebsitePolicies deviceOrientationAndMotionAccessPolicy]):
(-[_WKWebsitePolicies setPopUpPolicy:]):
(-[_WKWebsitePolicies popUpPolicy]):
(-[_WKWebsitePolicies customHeaderFields]):
(-[_WKWebsitePolicies setCustomHeaderFields:]):
(-[_WKWebsitePolicies websiteDataStore]):
(-[_WKWebsitePolicies setWebsiteDataStore:]):
(-[_WKWebsitePolicies setCustomUserAgent:]):
(-[_WKWebsitePolicies customUserAgent]):
(-[_WKWebsitePolicies setCustomJavaScriptUserAgentAsSiteSpecificQuirks:]):
(-[_WKWebsitePolicies customJavaScriptUserAgentAsSiteSpecificQuirks]):
(-[_WKWebsitePolicies setCustomNavigatorPlatform:]):
(-[_WKWebsitePolicies customNavigatorPlatform]):
(-[_WKWebsitePolicies description]):
(-[_WKWebsitePolicies _apiObject]):
(-[_WKWebsitePolicies dealloc]): Deleted.

  • UIProcess/API/Cocoa/_WKWebsitePoliciesInternal.h:
  • UIProcess/Cocoa/NavigationState.mm:

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

  • WebKit.xcodeproj/project.pbxproj:
5:00 PM Changeset in webkit [243725] by Alan Coon
  • 7 edits in tags/Safari-608.1.13.4/Source

Versioning.

4:54 PM Changeset in webkit [243724] by Alan Coon
  • 3 edits
    2 adds in tags/Safari-608.1.13.4

Cherry-pick r243684. rdar://problem/49454962

[iOS] Crash when changing inputmode for certain types of focusable elements
https://bugs.webkit.org/show_bug.cgi?id=196431
<rdar://problem/49454962>

Reviewed by Tim Horton.

Source/WebKit:

The crash is happening because WebPage::focusedElementDidChangeInputMode assumes that the document's focused
element must be the same as m_focusedElement in WebPage. However, this is not the case, since m_focusedElement
is only set for certain types of elements that require user input (e.g. text fields, editable content, select
menus, etc.). The function then attempts to dereference m_focusedElement, which may be null if the document's
focused element doesn't fall into one of the aforementioned categories.

To fix this, bail if the element that is changing inputmode is not equal to the WebPage's current focused
element. See below for more details.

Test: fast/forms/change-inputmode-crash.html

  • WebProcess/WebPage/WebPage.cpp: (WebKit::isTextFormControlOrEditableContent):

Clean up some existing logic by introducing a helper method for determining whether an element should
propagate inputmode attribute changes to the UI process. Also, check the element type using type traits instead
of checking against the tag name.

(WebKit::WebPage::elementDidFocus):
(WebKit::WebPage::focusedElementDidChangeInputMode):

LayoutTests:

Add a layout test that exercises the edge case; see WebKit ChangeLogs for more details.

  • fast/forms/change-inputmode-crash-expected.txt: Added.
  • fast/forms/change-inputmode-crash.html: Added.

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

4:54 PM Changeset in webkit [243723] by Alan Coon
  • 20 edits
    3 adds
    1 delete in tags/Safari-608.1.13.4

Cherry-pick r243671. rdar://problem/47859936

Move WebResourceLoadStatisticsStore IPC calls from the UI process to the network process
https://bugs.webkit.org/show_bug.cgi?id=196407
<rdar://problem/47859936>

Reviewed by Brent Fulgham.

Source/WebCore:

Test: http/tests/storageAccess/grant-storage-access-under-opener-at-popup-user-gesture.html

This patch removes old code for the batching into "statistics updated" calls.
Since the move of Resource Load Statistics to the network process, all such
collection is done directly through dedicated calls to the network process.

The remaining functionality was renamed to make it more clear, i.e.
ResourceLoadObserver::notifyObserver() renamed to
ResourceLoadObserver::updateCentralStatisticsStore().

  • loader/ResourceLoadObserver.cpp: (WebCore::ResourceLoadObserver::setStatisticsUpdatedCallback): (WebCore::ResourceLoadObserver::setRequestStorageAccessUnderOpenerCallback): (WebCore::ResourceLoadObserver::logSubresourceLoading): (WebCore::ResourceLoadObserver::logWebSocketLoading): (WebCore::ResourceLoadObserver::logUserInteractionWithReducedTimeResolution): (WebCore::ResourceLoadObserver::requestStorageAccessUnderOpener): (WebCore::ResourceLoadObserver::updateCentralStatisticsStore): (WebCore::ResourceLoadObserver::clearState): (WebCore::ResourceLoadObserver::setNotificationCallback): Deleted. (WebCore::ResourceLoadObserver::ResourceLoadObserver): Deleted. (WebCore::ResourceLoadObserver::scheduleNotificationIfNeeded): Deleted. (WebCore::ResourceLoadObserver::notifyObserver): Deleted.
  • loader/ResourceLoadObserver.h:
  • testing/Internals.cpp: (WebCore::Internals::notifyResourceLoadObserver):

Source/WebKit:

The two WebResourceLoadStatisticsStore IPC endpoints were left behind when we
moved Resource Load Statistics from the UI process to the network process. One
of the endpoints is the message RequestStorageAccessUnderOpener which underpins
our compatibility fix for federated logins using popups. This patch redirects
these IPC calls to the network process and cleans up some assumptions around
them.

  • CMakeLists.txt:

Removed the old IPC receiver.

  • DerivedSources.make:

Removed the old IPC receiver.

  • NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: (WebKit::WebResourceLoadStatisticsStore::requestUpdate): Deleted.

This is no longer needed since there is a dedicated update mechanism
that actually sends the update.

  • NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h:
  • NetworkProcess/NetworkConnectionToWebProcess.cpp: (WebKit::NetworkConnectionToWebProcess::resourceLoadStatisticsUpdated): (WebKit::NetworkConnectionToWebProcess::requestStorageAccessUnderOpener):

Two new IPC receivers to pipe the calls to the network process.

(WebKit::NetworkConnectionToWebProcess::requestResourceLoadStatisticsUpdate): Deleted.

NetworkConnectionToWebProcess::resourceLoadStatisticsUpdated now serves
this purpose.

  • NetworkProcess/NetworkConnectionToWebProcess.h:
  • NetworkProcess/NetworkConnectionToWebProcess.messages.in:
  • UIProcess/WebResourceLoadStatisticsStore.messages.in: Removed.

Removed the old IPC receiver.

  • UIProcess/WebsiteData/WebsiteDataStore.cpp:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/InjectedBundle/API/c/WKBundle.cpp: (WKBundleResourceLoadStatisticsNotifyObserver):

Function name update.

  • WebProcess/WebProcess.cpp:

Now calls IPC to the network process instead of the UI process.

LayoutTests:

  • http/tests/storageAccess/deny-storage-access-under-opener-expected.txt:
  • http/tests/storageAccess/deny-storage-access-under-opener-if-auto-dismiss-expected.txt:
  • http/tests/storageAccess/grant-storage-access-under-opener-at-popup-user-gesture-expected.txt: Added.
  • http/tests/storageAccess/grant-storage-access-under-opener-at-popup-user-gesture.html: Added.
  • http/tests/storageAccess/resources/get-cookies.php:
  • http/tests/storageAccess/resources/produce-user-gesture-set-cookie-and-report-back.html: Added.

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

4:38 PM Changeset in webkit [243722] by Devin Rousso
  • 6 edits in trunk/Source/WebInspectorUI

Web Inspector: DOMDebugger: disabling a breakpoint for a specific event listener removes it from the UI
https://bugs.webkit.org/show_bug.cgi?id=196453
<rdar://problem/49489318>

Reviewed by Joseph Pecoraro.

Allow breakpoints for specific event listeners to be disabled, rather than immeditately
removing/deleting them when they are about to become disabled. This preserves the existing
functionality, but now allows for the tree element to stay in the UI in a disabled state.

  • UserInterface/Controllers/DOMManager.js:

(WI.DOMManager):
(WI.DOMManager.prototype.setBreakpointForEventListener):
(WI.DOMManager.prototype.removeBreakpointForEventListener):
(WI.DOMManager.prototype.removeEventListenerBreakpointsForNode): Added.
(WI.DOMManager.prototype._updateEventBreakpoint): Added.
(WI.DOMManager.prototype._handleEventBreakpointDisabledStateChanged): Added.

  • UserInterface/Controllers/DOMDebuggerManager.js:

(WI.DOMDebuggerManager.prototype._handleEventBreakpointDisabledStateChanged):

  • UserInterface/Views/EventBreakpointTreeElement.js:

(WI.EventBreakpointTreeElement.prototype.populateContextMenu):
(WI.EventBreakpointTreeElement.prototype._toggleBreakpoint):

  • UserInterface/Views/ContextMenuUtilities.js:

(WI.appendContextMenuItemsForDOMNodeBreakpoints):

  • UserInterface/Views/DOMNodeTreeElement.js:

(WI.DOMNodeTreeElement.prototype.ondelete):

4:13 PM Changeset in webkit [243721] by Alan Coon
  • 1 copy in tags/Safari-608.1.13.4

New tag.

3:41 PM Changeset in webkit [243720] by Devin Rousso
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: Canvas: auto-record after page load sometimes shows the wrong UI
https://bugs.webkit.org/show_bug.cgi?id=196320
<rdar://problem/49356686>

Reviewed by Joseph Pecoraro.

It was previously possible that the timing of a recording being started and the preview
image being loaded would not always be in the same order.

Utilize the existing View.prototype.layout mechanics to ensure that updates are coalesced
and that the changes are always applied in a particular order.

  • UserInterface/Views/CanvasContentView.js:

(WI.CanvasContentView):
(WI.CanvasContentView.prototype.refreshPreview): Added.
(WI.CanvasContentView.prototype.initialLayout):
(WI.CanvasContentView.prototype.layout):
(WI.CanvasContentView.prototype.shown):
(WI.CanvasContentView.prototype.attached):
(WI.CanvasContentView.prototype._refreshPixelSize):
(WI.CanvasContentView.prototype.refresh): Deleted.
(WI.CanvasContentView.prototype._recordingStarted): Deleted.
(WI.CanvasContentView.prototype._recordingProgress): Deleted.
(WI.CanvasContentView.prototype._recordingStopped): Deleted.
(WI.CanvasContentView.prototype._shaderProgramAdded): Deleted.
(WI.CanvasContentView.prototype._shaderProgramRemoved): Deleted.

  • UserInterface/Views/CanvasOverviewContentView.js:

(WI.CanvasOverviewContentView.prototype._refreshPreviews):

3:41 PM Changeset in webkit [243719] by Devin Rousso
  • 5 edits in trunk

Web Inspector: DOMDebugger: breakpoints for attribute modifications still fire when breakpoints are disabled
https://bugs.webkit.org/show_bug.cgi?id=196456
<rdar://problem/49489747>

Reviewed by Joseph Pecoraro.

Source/WebCore:

Test: inspector/dom-debugger/dom-breakpoints.html

  • inspector/agents/InspectorDOMDebuggerAgent.cpp:

(WebCore::InspectorDOMDebuggerAgent::didInvalidateStyleAttr):
(WebCore::InspectorDOMDebuggerAgent::descriptionForDOMEvent):

LayoutTests:

  • inspector/dom-debugger/dom-breakpoints.html:
  • inspector/dom-debugger/dom-breakpoints-expected.txt:
3:38 PM Changeset in webkit [243718] by Devin Rousso
  • 4 edits in trunk/Source/WebInspectorUI

Web Inspector: Canvas: add compatibility support for WebMetal
https://bugs.webkit.org/show_bug.cgi?id=196412
<rdar://problem/49439417>

Reviewed by Joseph Pecoraro.

  • UserInterface/Models/Canvas.js:

(WI.Canvas.fromPayload):
(WI.Canvas.displayNameForContextType):

  • UserInterface/Protocol/Legacy/12.2/InspectorBackendCommands.js:
  • Versions/Inspector-iOS-12.2.json:
3:35 PM Changeset in webkit [243717] by Devin Rousso
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: "Copy as HTML" appears twice when showing a context menu for a logged node
https://bugs.webkit.org/show_bug.cgi?id=196271
<rdar://problem/49290676>

Reviewed by Joseph Pecoraro.

  • UserInterface/Views/ObjectTreeBaseTreeElement.js:

(WI.ObjectTreeBaseTreeElement.prototype._appendMenusItemsForObject):

  • Localizations/en.lproj/localizedStrings.js:
2:57 PM Changeset in webkit [243716] by aakash_jain@apple.com
  • 3 edits in trunk/Tools

[ews-app] Use API_KEY to accept results data
https://bugs.webkit.org/show_bug.cgi?id=196461

Reviewed by Dewei Zhu.

  • BuildSlaveSupport/ews-app/ews/views/results.py:

(Results.post): Validate EWS_API_KEY before accepting any data.

  • BuildSlaveSupport/ews-build/events.py:

(Events.sendData): Send EWS_API_KEY if available along with event data.

2:50 PM Changeset in webkit [243715] by Devin Rousso
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: Debugger: breakpoints don't populate in inspector2 on first load
https://bugs.webkit.org/show_bug.cgi?id=196063
<rdar://problem/49097787>

Reviewed by Joseph Pecoraro.

In the case that a breakpoint becomes resolved after the resource has finished loaded, there
won't be an already existing TreeElement for the breakpoint to replace.

This can realistically only happen if the IndexedDB lookup is super slow, or the resource is
extremely fast (e.g. a data url).

  • UserInterface/Views/DebuggerSidebarPanel.js:

(WI.DebuggerSidebarPanel.prototype._handleDebuggerObjectDisplayLocationDidChange):
(WI.DebuggerSidebarPanel.prototype._addDebuggerObject): Deleted.

  • UserInterface/Views/SourcesNavigationSidebarPanel.js:

(WI.SourcesNavigationSidebarPanel.prototype._addBreakpoint):
(WI.SourcesNavigationSidebarPanel.prototype._addBreakpointsForSourceCode):
(WI.SourcesNavigationSidebarPanel.prototype._handleDebuggerObjectDisplayLocationDidChange):

2:27 PM Changeset in webkit [243714] by pvollan@apple.com
  • 2 edits in trunk/LayoutTests

[Win10] Look into platform specific layout test failures
https://bugs.webkit.org/show_bug.cgi?id=196463

Unreviewed test gardening.

  • platform/win/TestExpectations:
2:21 PM Changeset in webkit [243713] by Wenson Hsieh
  • 9 edits in trunk

Unable to copy and paste a PDF from Notes into Mail compose body
https://bugs.webkit.org/show_bug.cgi?id=196442
<rdar://problem/48573098>

Reviewed by Tim Horton.

Source/WebCore:

Refactor some logic for inserting attachment elements upon paste or drop. Currently, we only prefer inserting
content as attachment elements if the items are annotated with UIPreferredPresentationStyleAttachment. However,
many data sources around the system (both first and third party) have not adopted this API, which makes it
difficult to determine whether a given item provider should be treated as a file or not. In this bug in
particular, no preferred presentation style is set, so we fail to handle the paste command by inserting an
attachment element.

However, most apps around the system that write file or attachment-like data to the pasteboard will at least
offer a suggested name for the file, in the form of -[NSItemProvider suggestedName]. To address this, instead of
relying solely on the preferredPresentationStyle, additionally take a suggested name as an indicator that the
item is probably a file.

In fact, Pasteboard::fileContentState already has similar logic to check for either a suggested file name or
explicitly specified presentation style. We pull this out into a separate helper method on PasteboardItemInfo,
and use it for both Pasteboard::fileContentState and prefersAttachmentRepresentation.

Tests: WKAttachmentTestsIOS.InsertPastedContactAsAttachment

WKAttachmentTestsIOS.InsertPastedMapItemAsAttachment

  • editing/cocoa/WebContentReaderCocoa.mm:

(WebCore::mimeTypeFromContentType):

Work around <rdar://problem/49478229> by using the "text/vcard" MIME type to handle "public.vcard". CoreServices
currently maps "public.vcard" to "text/directory" when using UTTypeCopyPreferredTagWithClass, despite the SPI
-[NSURLFileTypeMappings MIMETypeForExtension:] returning "text/vcard" for a ".vcf" file.

  • platform/PasteboardItemInfo.h:

(WebCore::PasteboardItemInfo::canBeTreatedAsAttachmentOrFile const):

Add a helper method to determine whether the PasteboardItemInfo prefers to be represented as inline data, or an
attachment, or neither. This differs slightly from the existing value of preferredPresentationStyle in that we
consider having a suggested file name as a strong indicator that the item should be treated as an attachment,
even if the presentation style is unspecified.

  • platform/cocoa/PasteboardCocoa.mm:

(WebCore::Pasteboard::fileContentState):

Use PasteboardItemInfo::canBeTreatedAsAttachmentOrFile().

  • platform/ios/PasteboardIOS.mm:

(WebCore::prefersAttachmentRepresentation):

Use PasteboardItemInfo::canBeTreatedAsAttachmentOrFile().

Source/WebKit:

Relax the -canPerformAction: logic in the case of pasting an attachment. Consider an NSItemProvider to possibly
paste as an attachment if either it has a preferred presentation style of UIPreferredPresentationStyleAttachment
or has a style of UIPreferredPresentationStyleUnspecified, but has a suggested file name.

This allows for the "Paste" action to be shown in the callout menu when copying and pasting a non-text file.

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView canPerformActionForWebView:withSender:]):

Tools:

Add new API tests to exercise pasting CNContact and MKMapItem-backed item providers. Additionally, adjust an
existing test that pastes a PDF file as an attachment to not require UIPreferredPresentationStyleAttachment
to be specified on the item providers.

  • TestWebKitAPI/Tests/WebKitCocoa/WKAttachmentTests.mm:

(TestWebKitAPI::mapItemForTesting):
(TestWebKitAPI::contactItemForTesting):

2:08 PM Changeset in webkit [243712] by timothy_horton@apple.com
  • 7 edits in trunk

Make UIWKDocumentContext rects per-character instead of per-word
https://bugs.webkit.org/show_bug.cgi?id=196459

Reviewed by Wenson Hsieh.

Source/WebCore:

No new tests; adjusted expected results of WebKit.DocumentEditingContext.

  • editing/TextIterator.cpp:

(WebCore::CharacterIterator::CharacterIterator):

  • editing/TextIterator.h:

(WebCore::CharacterIterator::atEnd const):
(WebCore::CharacterIterator::text const):
Add WEBCORE_EXPORT to some things.
Introduce a CharacterIterator constructor that takes Positions, like one that TextIterator has.
Move initializers to the header.

Source/WebKit:

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::requestDocumentEditingContext):
Switch to CharacterIterator instead of TextIterator directly, to get
per-character rects as the API requests.

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/DocumentEditingContext.mm:

(TEST):
Adjust test results due to switching to per-character rects.

1:52 PM Changeset in webkit [243711] by Chris Dumez
  • 9 edits in trunk

UIProcess crash when a prewarmed process is terminated
https://bugs.webkit.org/show_bug.cgi?id=196451
<rdar://problem/49245471>

Reviewed by Geoffrey Garen.

Source/WebKit:

Stop assuming that WebProcessProxy::m_websiteDataStore is non-null as this is no longer
true after r243384. For example, prewarmed WebContent processe do not get a data store
until they actually get used.

  • UIProcess/API/Cocoa/WKProcessPool.mm:

(-[WKProcessPool _prewarmedProcessIdentifier]):

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

(WebKit::WebProcessPool::networkProcessIdentifier):
(WebKit::WebProcessPool::prewarmedProcessIdentifier):

  • UIProcess/WebProcessPool.h:
  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::didClose):
(WebKit::WebProcessProxy::didFinishLaunching):
(WebKit::WebProcessProxy::requestTermination):
(WebKit::WebProcessProxy::isReleaseLoggingAllowed const):

  • UIProcess/WebProcessProxy.h:

Tools:

Add API test coverage.

  • TestWebKitAPI/Tests/WebKitCocoa/ProcessPreWarming.mm:

(TEST):

1:46 PM Changeset in webkit [243710] by Shawn Roberts
  • 2 edits in trunk/LayoutTests

accessibility/Mac/async-increment-decrement-action.html is crashing and blaming other tests on bots
https://bugs.webkit.org/show_bug.cgi?id=187391

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations: Updating test expectations to skip crashing test
12:53 PM Changeset in webkit [243709] by Antti Koivisto
  • 5 edits
    2 adds in trunk

Update event region when toggling pointer-events:none
https://bugs.webkit.org/show_bug.cgi?id=195902
<rdar://problem/48988384>

Reviewed by Simon Fraser.

Source/WebCore:

Test: fast/scrolling/ios/event-region-pointer-events.html

Normally paint invalidation requests compositing configuration update whenever anything that would
affect event region changes. However mutating 'pointer-events' property does not cause paint invalidation.

  • rendering/RenderElement.cpp:

(WebCore::RenderElement::styleWillChange):

Request compositing update explicitly from the containing layer.

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::invalidateEventRegion):

  • rendering/RenderLayer.h:

LayoutTests:

  • fast/scrolling/ios/event-region-pointer-events-expected.txt: Added.
  • fast/scrolling/ios/event-region-pointer-events.html: Added.
12:51 PM Changeset in webkit [243708] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebKit

[GTK][WPE] Add more websitedatastore directories to web process sandbox
https://bugs.webkit.org/show_bug.cgi?id=196447

Patch by Patrick Griffis <Patrick Griffis> on 2019-04-01
Reviewed by Michael Catanzaro.

  • UIProcess/Launcher/glib/BubblewrapLauncher.cpp:

(WebKit::bubblewrapSpawn):

  • UIProcess/glib/WebProcessProxyGLib.cpp:

(WebKit::WebProcessProxy::platformGetLaunchOptions):

12:48 PM Changeset in webkit [243707] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

[ews-app] Display OS and Xcode configuration in status-bubble's hover-over message
https://bugs.webkit.org/show_bug.cgi?id=196449

Reviewed by Lucas Forschler.

  • BuildSlaveSupport/ews-app/ews/views/statusbubble.py:

(StatusBubble.get_os_details): Method to get OS and Xcode details.
(StatusBubble._build_bubble): Moved the timestamp logic to common method.
(StatusBubble.get_build_timestamp): Method to get the timestamp to display for the build.

12:45 PM Changeset in webkit [243706] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

[ews-build] Remove force schedulers from OpenSource EWS Buildbot
https://bugs.webkit.org/show_bug.cgi?id=196444

Reviewed by Lucas Forschler.

  • BuildSlaveSupport/ews-build/loadConfig.py: Remove ForceSchedulers.
12:05 PM Changeset in webkit [243705] by Chris Dumez
  • 7 edits
    5 adds in trunk

Support "noreferrer" for window.open()
https://bugs.webkit.org/show_bug.cgi?id=194533

Reviewed by Geoffrey Garen.

LayoutTests/imported/w3c:

Rebaseline WPT test now that all checks are passing.

  • web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-tokenization-noreferrer-expected.txt:

Source/WebCore:

Support "noreferrer" for window.open() as per:

Tests: imported/w3c/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-tokenization-noreferrer.html

http/wpt/html/browsers/the-window-object/window-open-noopener-webkit.html

  • page/DOMWindow.cpp:

(WebCore::DOMWindow::createWindow):

  • page/WindowFeatures.cpp:

(WebCore::setWindowFeature):

  • page/WindowFeatures.h:

LayoutTests:

Add equivalent test to imported/w3c/web-platform-tests/html/browsers/the-window-object/window-open-noopener.html
but which relies on localStorage instead of BroadcastChannel so that it works with WebKit.

  • http/wpt/html/browsers/the-window-object/support/noreferrer-target-webkit.html: Added.
  • http/wpt/html/browsers/the-window-object/window-open-noopener-webkit-expected.txt: Added.
  • http/wpt/html/browsers/the-window-object/window-open-noopener-webkit.html: Added.
11:54 AM Changeset in webkit [243704] by Joseph Pecoraro
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: CPU Usage Timeline - Adjust Energy Impact Threshholds
https://bugs.webkit.org/show_bug.cgi?id=196421
<rdar://problem/49125703>

Reviewed by Devin Rousso.

  • Low - Keep Below 3% to continue to encourage idle pages stay below 3% Might want to reduce to 2.5 or 2 after fixing bug 196419.
  • High - Make Above 30% instead of 50% to encourage long running interactivity to stay below 30% Depends on interaction, but sustained (1-2min) at 30%+ will certainly impact battery.
  • Very High - Make above 100% instead of 150% CPU Usage spikes around page load and is quite often still under 100% despite many threads. Drop this a bit as we dropped High down.

Reduce the size of the Medium section, and increase the High section
Having 70% of the chart be "Medium" is just too much Medium, and
we've now made it more possible to be in the High range.

  • UserInterface/Views/CPUTimelineView.js:

(WI.CPUTimelineView.prototype.get mediumEnergyThreshold):
(WI.CPUTimelineView.prototype.get highEnergyThreshold):
(WI.CPUTimelineView.prototype.get lowEnergyGraphBoundary):
(WI.CPUTimelineView.prototype.get mediumEnergyGraphBoundary):
(WI.CPUTimelineView.prototype.get highEnergyGraphBoundary):
(WI.CPUTimelineView.prototype.initialLayout):
(WI.CPUTimelineView.prototype.layout.bestThreadLayoutMax):
(WI.CPUTimelineView.prototype._layoutEnergyChart):

11:46 AM Changeset in webkit [243703] by commit-queue@webkit.org
  • 12 edits
    1 delete in trunk

SVGMatrix.IDL methods do not conform to the specs
https://bugs.webkit.org/show_bug.cgi?id=196263

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

Source/WebCore:

I think there was a misconception about these functions. The specs link
is: https://www.w3.org/TR/SVG11/coords.html#InterfaceSVGMatrix.

Notice that the specs does not state that the SVGMethod methods should
raise the exception NO_MODIFICATION_ALLOWED_ERR if the object is read
only. Notice setting the attribute 'a' for example may raise this
exception. Therefore, I think the specs wanted to make these operations
read-only. None of the methods should raise the exception
NO_MODIFICATION_ALLOWED_ERR.

In fact the SVG code was doing the right thing. For example SVGMatrix::scale()
was calling SVGMatrixValue::scale() which was making a copy of itself,
applying the scale on the copy and then returning the copy. When
SVGMatrix::scale() receives the copy of the SVGMatrixValue it creates and
returns a new SVGMatrix object.

  • WebCore.xcodeproj/project.pbxproj:
  • svg/SVGMatrix.h:

(WebCore::SVGMatrix::create):
(WebCore::SVGMatrix::a const):
(WebCore::SVGMatrix::b const):
(WebCore::SVGMatrix::c const):
(WebCore::SVGMatrix::d const):
(WebCore::SVGMatrix::e const):
(WebCore::SVGMatrix::f const):
(WebCore::SVGMatrix::multiply const):
(WebCore::SVGMatrix::inverse const):
(WebCore::SVGMatrix::translate const):
(WebCore::SVGMatrix::scale const):
(WebCore::SVGMatrix::scaleNonUniform const):
(WebCore::SVGMatrix::rotate const):
(WebCore::SVGMatrix::rotateFromVector const):
(WebCore::SVGMatrix::flipX const):
(WebCore::SVGMatrix::flipY const):
(WebCore::SVGMatrix::skewX const):
(WebCore::SVGMatrix::skewY const):
(WebCore::SVGMatrix::a): Deleted.
(WebCore::SVGMatrix::b): Deleted.
(WebCore::SVGMatrix::c): Deleted.
(WebCore::SVGMatrix::d): Deleted.
(WebCore::SVGMatrix::e): Deleted.
(WebCore::SVGMatrix::f): Deleted.
(WebCore::SVGMatrix::multiply): Deleted.
(WebCore::SVGMatrix::inverse): Deleted.
(WebCore::SVGMatrix::translate): Deleted.
(WebCore::SVGMatrix::scale): Deleted.
(WebCore::SVGMatrix::scaleNonUniform): Deleted.
(WebCore::SVGMatrix::rotate): Deleted.
(WebCore::SVGMatrix::rotateFromVector): Deleted.
(WebCore::SVGMatrix::flipX): Deleted.
(WebCore::SVGMatrix::flipY): Deleted.
(WebCore::SVGMatrix::skewX): Deleted.
(WebCore::SVGMatrix::skewY): Deleted.
(WebCore::SVGMatrix::SVGMatrix): Deleted.

  • svg/SVGMatrix.idl:
  • svg/SVGMatrixValue.h: Removed.
  • svg/SVGTransform.cpp:

(WebCore::SVGTransform::matrix):

  • svg/SVGTransformDistance.cpp:

(WebCore::SVGTransformDistance::addToSVGTransform const):

  • svg/SVGTransformValue.h:

(WebCore::SVGTransformValue::matrix const):
(WebCore::SVGTransformValue::matrix):
(WebCore::SVGTransformValue::svgMatrix): Deleted.
(WebCore::operator==): Deleted.
(WebCore::operator!=): Deleted.

  • svg/properties/SVGMatrixTearOff.h:
  • svg/properties/SVGPropertyTearOff.h:

(WebCore::SVGPropertyTearOff::propertyReference const):

LayoutTests:

  • svg/dom/SVGMatrix-expected.txt:
  • svg/dom/SVGMatrix.html:

Clean this test. Make it test the case when valid arguments are passed to
the methods of the SVGMatrix. Make sure the methods are read-only. All
of them should be making a copy of the matrix, applying the transform and
returning the copy.

11:33 AM Changeset in webkit [243702] by ysuzuki@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

[JSC] JSRunLoopTimer::Manager should be small
https://bugs.webkit.org/show_bug.cgi?id=196425

Reviewed by Darin Adler.

Using very large Key or Value in HashMap potentially bloats memory since HashMap pre-allocates large size of
memory ((sizeof(Key) + sizeof(Value)) * N) for its backing storage's array. Using std::unique_ptr<> for JSRunLoopTimer's
PerVMData to keep HashMap's backing store size small.

  • runtime/JSRunLoopTimer.cpp:

(JSC::JSRunLoopTimer::Manager::timerDidFire):
(JSC::JSRunLoopTimer::Manager::registerVM):
(JSC::JSRunLoopTimer::Manager::scheduleTimer):
(JSC::JSRunLoopTimer::Manager::cancelTimer):
(JSC::JSRunLoopTimer::Manager::timeUntilFire):
(JSC::JSRunLoopTimer::Manager::didChangeRunLoop):

  • runtime/JSRunLoopTimer.h:
11:33 AM Changeset in webkit [243701] by Simon Fraser
  • 11 edits in trunk/Source/WebCore

Plumb through a ScrollType value that indicates whether a scroll was a user or programmatic scroll
https://bugs.webkit.org/show_bug.cgi?id=196424

Reviewed by Zalan Bujtas.

In preparation for fixing webkit.org/b/195584, we need to know if an overflow scroll
is programmatic, so plumb through an enum value. The functions touched by this patch are
only ever called for programmatic scrolls.

  • dom/Element.cpp:

(WebCore::Element::scrollTo):
(WebCore::Element::setScrollLeft):
(WebCore::Element::setScrollTop):

  • platform/ScrollTypes.h:
  • rendering/RenderBox.cpp:

(WebCore::RenderBox::setScrollLeft):
(WebCore::RenderBox::setScrollTop):

  • rendering/RenderBox.h:
  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::scrollToXPosition):
(WebCore::RenderLayer::scrollToYPosition):

  • rendering/RenderLayer.h:
  • rendering/RenderListBox.cpp:

(WebCore::RenderListBox::setScrollLeft):
(WebCore::RenderListBox::setScrollTop):

  • rendering/RenderListBox.h:
  • rendering/RenderTextControlSingleLine.cpp:

(WebCore::RenderTextControlSingleLine::setScrollLeft):
(WebCore::RenderTextControlSingleLine::setScrollTop):

  • rendering/RenderTextControlSingleLine.h:
11:25 AM Changeset in webkit [243700] by stephan.szabo@sony.com
  • 3 edits
    3 adds in trunk

[PlayStation] Add initialization for JSC shell for PlayStation port
https://bugs.webkit.org/show_bug.cgi?id=195411

Reviewed by Ross Kirsling.

.:

Add functions for doing the automatic libc, floating point
initializations, signing of binaries and libraries and
wrapping of libc functions on PlayStation port.

  • Source/cmake/OptionsPlayStation.cmake:

Source/JavaScriptCore:

Add ps options

  • shell/PlatformPlayStation.cmake: Added.
  • shell/playstation/Initializer.cpp: Added.

(initializer):

11:23 AM Changeset in webkit [243699] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[macOS] Crash when loading Twitter with autoplay video enabled.
https://bugs.webkit.org/show_bug.cgi?id=196446
<rdar://problem/49060359>

Reviewed by Brent Fulgham.

This is caused by a syscall violation.

  • WebProcess/com.apple.WebProcess.sb.in:
11:21 AM Changeset in webkit [243698] by commit-queue@webkit.org
  • 5 edits
    1 add in trunk

Add SPI to canonicalize NSURLs with WTF::URL
https://bugs.webkit.org/show_bug.cgi?id=196415
<rdar://problem/44980271>

Patch by Alex Christensen <achristensen@webkit.org> on 2019-04-01
Reviewed by Darin Adler.

Source/WebKitLegacy/mac:

  • Misc/WebNSURLExtras.h:
  • Misc/WebNSURLExtras.mm:

(-[NSURL _webkit_canonicalize_with_wtf]):
_webkit_canonicalize is old and changing it causes strange bugs like rdar://problem/5315926
Instead, make a new version that uses WTF::URL to canonicalize an NSURL.

Tools:

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

(TestWebKitAPI::TEST):

10:27 AM Changeset in webkit [243697] by Michael Catanzaro
  • 10 edits in trunk/Source

Stop trying to support building JSC with clang 3.8
https://bugs.webkit.org/show_bug.cgi?id=195947
<rdar://problem/49069219>

Reviewed by Darin Adler.

It seems WebKit hasn't built with clang 3.8 in a while, no devs are using this compiler, we
don't know how much effort it would be to make JSC work again, and it's making the code
Source/JavaScriptCore:

worse. Remove my hacks to support clang 3.8 from JSC.

  • bindings/ScriptValue.cpp:

(Inspector::jsToInspectorValue):

  • bytecode/GetterSetterAccessCase.cpp:

(JSC::GetterSetterAccessCase::create):
(JSC::GetterSetterAccessCase::clone const):

  • bytecode/InstanceOfAccessCase.cpp:

(JSC::InstanceOfAccessCase::clone const):

  • bytecode/IntrinsicGetterAccessCase.cpp:

(JSC::IntrinsicGetterAccessCase::clone const):

  • bytecode/ModuleNamespaceAccessCase.cpp:

(JSC::ModuleNamespaceAccessCase::clone const):

  • bytecode/ProxyableAccessCase.cpp:

(JSC::ProxyableAccessCase::clone const):

Source/WTF:

worse. Remove my hacks to support clang 3.8 from WTF.

  • wtf/MetaAllocator.cpp:

(WTF::MetaAllocator::allocate):

  • wtf/text/StringConcatenate.h:

(WTF::tryMakeStringFromAdapters):

10:21 AM Changeset in webkit [243696] by Shawn Roberts
  • 2 edits in trunk/LayoutTests

storage/indexeddb/modern/deletedatabase-2-private.html is a flaky failure on Mac Debug
https://bugs.webkit.org/show_bug.cgi?id=196445

Unreviewed test gardening

  • platform/ios-simulator-wk2/TestExpectations: Updating test expectations for flaky test
9:45 AM Changeset in webkit [243695] by Wenson Hsieh
  • 5 edits in trunk/Source/WebCore

[iOS] Refactor some logic for inserting pasted or dropped virtual card files as attachment elements
https://bugs.webkit.org/show_bug.cgi?id=196435
Work towards <rdar://problem/48573098>

Reviewed by Darin Adler.

Refactor some existing codepaths on iOS for inserting VCard files as attachment elements. Instead of using a
separate readVirtualContactFile method for converting a vcard file or data into an attachment element (possibly
accompanied by a link), use the existing readFilePaths WebContentReader method.

To handle links which may accompany the attachment element, add a helper method in PasteboardIOS that reads a
titled URL prior to inserting an attachment element, in the case of pasting or dropping a VCF.

This means we no longer need to handle attachment reading in readPasteboardWebContentDataForType, so we can
simply bail before reading "public.vcard" here and defer to reading other data types.

Covered by existing API tests in WKAttachmentTests and DragAndDropTestsIOS.

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

(WebCore::WebContentReader::readVirtualContactFile): Deleted.

  • platform/Pasteboard.h:
  • platform/ios/PasteboardIOS.mm:

(WebCore::Pasteboard::readPasteboardWebContentDataForType):
(WebCore::readURLAlongsideAttachmentIfNecessary):
(WebCore::prefersAttachmentRepresentation):
(WebCore::Pasteboard::read):
(WebCore::Pasteboard::readRespectingUTIFidelities):

9:38 AM Changeset in webkit [243694] by Antti Koivisto
  • 4 edits
    2 adds in trunk

Trying to scroll the compose pane on gmail.com scrolls the message list behind
https://bugs.webkit.org/show_bug.cgi?id=196426
<rdar://problem/49402667>

Reviewed by Darin Adler.

Source/WebCore:

Test: fast/scrolling/ios/event-region-visibility-hidden.html

We fail to gather event region from desdendants of non-overflowing elements with 'visibility:hidden'.

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::paintObject):

Skip the subtree walk only if the current region covers the box already.

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::paintList):

Remove the (wrong) optimization, we bail out quickly on first renderer if possible so this is not high value.

LayoutTests:

  • fast/scrolling/ios/event-region-visibility-hidden-expected.txt: Added.
  • fast/scrolling/ios/event-region-visibility-hidden.html: Added.
6:36 AM Changeset in webkit [243693] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

Change expectation for imported/w3c/web-platform-tests/resize-observer/eventloop.html.
https://bugs.webkit.org/show_bug.cgi?id=196422

Patch by Cathie Chen <cathiechen> on 2019-04-01
Reviewed by Frédéric Wang.

At current implement, notifyResizeObservers is not synchronized to requestAnimationFrame, so the test would be flaky.

  • TestExpectations: eventloop.html is flaky because it depend on the order of requestAnimationFrame and ResizeObserver timer.
6:02 AM Changeset in webkit [243692] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

[GTK][WPE] Fix seccomp rule for blacklisting TIOCSTI
https://bugs.webkit.org/show_bug.cgi?id=196297

Patch by Patrick Griffis <Patrick Griffis> on 2019-04-01
Reviewed by Michael Catanzaro.

More information can be found here: https://www.exploit-db.com/exploits/46594

Note that this sandbox never made it into production so does not
warrant any CVE specific to WebKit.

  • UIProcess/Launcher/glib/BubblewrapLauncher.cpp:

(WebKit::setupSeccomp):

5:50 AM Changeset in webkit [243691] by emilio
  • 13 edits in trunk

Be less strict about closing blocks in attribute and functional pseudo-element selectors.
https://bugs.webkit.org/show_bug.cgi?id=142167

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

  • web-platform-tests/dom/nodes/selectors.js: Add tests for ::slotted

Source/WebCore:

This was also an issue for, e.g., "::slotted(foo", turns out.

This matches Chromium, Firefox, and the spec:

https://drafts.csswg.org/css-syntax/#parse-error:

Certain points in the parsing algorithm are said to be parse errors. The error
handling for parse errors is well-defined: user agents must either act as
described below when encountering such problems, or must abort processing at
the first error that they encounter for which they do not wish to apply the
rules described below.

https://drafts.csswg.org/css-syntax/#consume-simple-block:

<EOF-token>

This is a parse error. Return the block.

Tests: web-platform-tests/dom/nodes/selectors.js (and probably others)

  • css/parser/CSSSelectorParser.cpp:

(WebCore::CSSSelectorParser::consumeAttribute):
(WebCore::CSSSelectorParser::consumePseudo):

2:47 AM Changeset in webkit [243690] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Build failure after r243644 in GTK Linux 64-bit stable builds
https://bugs.webkit.org/show_bug.cgi?id=196440

Patch by Pablo Saavedra <Pablo Saavedra> on 2019-04-01
Reviewed by Philippe Normand.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:

(WebCore::MediaPlayerPrivateGStreamerBase::updateTextureMapperFlags):

2:07 AM Changeset in webkit [243689] by zandobersek@gmail.com
  • 3 edits in trunk/Tools

[WPE] EventSenderProxy constructor is called before a PlatformWindow is usable
https://bugs.webkit.org/show_bug.cgi?id=196441

Reviewed by Carlos Garcia Campos.

Don't cache the wpe_view_backend object that might not exist yet at the
time of EventSenderProxy constructor invocation, but instead retrieve
that object whenever it's required for event dispatching. This should
avoid crashes in this constructor now that it's invoked before any
PlatformWindow has been set up (as changed in r243496).

  • WebKitTestRunner/EventSenderProxy.h:
  • WebKitTestRunner/wpe/EventSenderProxyWPE.cpp:

(WTR::viewBackend):
(WTR::EventSenderProxy::EventSenderProxy):
(WTR::EventSenderProxy::mouseDown):
(WTR::EventSenderProxy::mouseUp):
(WTR::EventSenderProxy::mouseMoveTo):
(WTR::EventSenderProxy::mouseScrollBy):
(WTR::EventSenderProxy::keyDown):
(WTR::EventSenderProxy::prepareAndDispatchTouchEvent):

Mar 31, 2019:

11:51 PM Changeset in webkit [243688] by ysuzuki@apple.com
  • 21 edits in trunk/Source

[JSC] Butterfly allocation from LargeAllocation should try "realloc" behavior if collector thread is not active
https://bugs.webkit.org/show_bug.cgi?id=196160

Reviewed by Saam Barati.

Source/JavaScriptCore:

"realloc" can be effective in terms of peak/current memory footprint when realloc succeeds because,

  1. It does not allocate additional memory while expanding a vector
  2. It does not deallocate an old memory, just reusing the current memory by expanding, so that memory footprint is tight even before scavenging

We found that we can "realloc" large butterflies in certain conditions are met because,

  1. If it goes to LargeAllocation, this memory region is never reused until GC sweeps it.
  2. Butterflies are owned by owner JSObjects, so we know the lifetime of Butterflies.

This patch attempts to use "realloc" onto butterflies if,

  1. Butterflies are allocated in LargeAllocation kind
  2. Concurrent collector is not active
  3. Butterflies do not have property storage

The condition (2) is required to avoid deallocating butterflies while the concurrent collector looks into it. The condition (3) is
also required to avoid deallocating butterflies while the concurrent compiler looks into it.

We also change LargeAllocation mechanism to using "malloc" and "free" instead of "posix_memalign". This allows us to use "realloc"
safely in all the platforms. Since LargeAllocation uses alignment to distinguish LargeAllocation and MarkedBlock, we manually adjust
16B alignment by allocating 8B more memory in "malloc".

Speedometer2 and JetStream2 are neutral. RAMification shows about 1% progression (even in some of JIT tests).

  • heap/AlignedMemoryAllocator.h:
  • heap/CompleteSubspace.cpp:

(JSC::CompleteSubspace::tryAllocateSlow):
(JSC::CompleteSubspace::reallocateLargeAllocationNonVirtual):

  • heap/CompleteSubspace.h:
  • heap/FastMallocAlignedMemoryAllocator.cpp:

(JSC::FastMallocAlignedMemoryAllocator::tryAllocateMemory):
(JSC::FastMallocAlignedMemoryAllocator::freeMemory):
(JSC::FastMallocAlignedMemoryAllocator::tryReallocateMemory):

  • heap/FastMallocAlignedMemoryAllocator.h:
  • heap/GigacageAlignedMemoryAllocator.cpp:

(JSC::GigacageAlignedMemoryAllocator::tryAllocateMemory):
(JSC::GigacageAlignedMemoryAllocator::freeMemory):
(JSC::GigacageAlignedMemoryAllocator::tryReallocateMemory):

  • heap/GigacageAlignedMemoryAllocator.h:
  • heap/IsoAlignedMemoryAllocator.cpp:

(JSC::IsoAlignedMemoryAllocator::tryAllocateMemory):
(JSC::IsoAlignedMemoryAllocator::freeMemory):
(JSC::IsoAlignedMemoryAllocator::tryReallocateMemory):

  • heap/IsoAlignedMemoryAllocator.h:
  • heap/LargeAllocation.cpp:

(JSC::isAlignedForLargeAllocation):
(JSC::LargeAllocation::tryCreate):
(JSC::LargeAllocation::tryReallocate):
(JSC::LargeAllocation::LargeAllocation):
(JSC::LargeAllocation::destroy):

  • heap/LargeAllocation.h:

(JSC::LargeAllocation::indexInSpace):
(JSC::LargeAllocation::setIndexInSpace):
(JSC::LargeAllocation::basePointer const):

  • heap/MarkedSpace.cpp:

(JSC::MarkedSpace::sweepLargeAllocations):
(JSC::MarkedSpace::prepareForConservativeScan):

  • heap/WeakSet.h:

(JSC::WeakSet::isTriviallyDestructible const):

  • runtime/Butterfly.h:
  • runtime/ButterflyInlines.h:

(JSC::Butterfly::reallocArrayRightIfPossible):

  • runtime/JSObject.cpp:

(JSC::JSObject::ensureLengthSlow):

Source/WTF:

  • wtf/FastMalloc.h:

(WTF::FastMalloc::tryRealloc):

  • wtf/Gigacage.cpp:

(Gigacage::tryRealloc):

  • wtf/Gigacage.h:
11:42 PM Changeset in webkit [243687] by Manuel Rego Casasnovas
  • 3 edits
    2 adds in trunk

Scroll position gets reset when overflow:scroll is inside grid
https://bugs.webkit.org/show_bug.cgi?id=196337
<rdar://problem/49385784>

Reviewed by Simon Fraser.

Fix scroll position when there are changes inside a grid item with "overflow: scroll".

Source/WebCore:

Test: fast/css-grid-layout/grid-item-content-scroll-position.html

  • rendering/RenderGrid.cpp:

(WebCore::RenderGrid::layoutBlock): Use beginUpdateScrollInfoAfterLayoutTransaction()
and endAndCommitUpdateScrollInfoAfterLayoutTransaction().

LayoutTests:

  • fast/css-grid-layout/grid-item-content-scroll-position-expected.txt: Added.
  • fast/css-grid-layout/grid-item-content-scroll-position.html: Added.
7:03 PM Changeset in webkit [243686] by rniwa@webkit.org
  • 4 edits in trunk/Source/WebCore

Reduce the size of Node::deref by eliminating an explicit parentNode check
https://bugs.webkit.org/show_bug.cgi?id=195776

Reviewed by Darin Adler.

Address post-commit review comments.

  • dom/Document.cpp:

(WebCore::Document::removedLastRef):

  • dom/Node.cpp:

(WebCore::Node::~Node):
(WebCore::Node::removedLastRef):

  • dom/Node.h:

(WebCore::Node::deref):
(WebCore::Node::setParentNode):

6:38 PM Changeset in webkit [243685] by Fujii Hironori
  • 3 edits in trunk/Tools

[Win][WebKit] MiniBrowser should support high DPI display
https://bugs.webkit.org/show_bug.cgi?id=196391

Reviewed by Alex Christensen.

  • MiniBrowser/win/WebKitBrowserWindow.cpp:

(WebKitBrowserWindow::WebKitBrowserWindow): Call resetZoom to set the page zoom factor.
(WebKitBrowserWindow::resetZoom): Changed the default page zoom factor from 1 to the device scale factor.

  • MiniBrowser/win/stdafx.h: Define WEBCORE_EXPORT.
1:01 PM Changeset in webkit [243684] by Wenson Hsieh
  • 3 edits
    2 adds in trunk

[iOS] Crash when changing inputmode for certain types of focusable elements
https://bugs.webkit.org/show_bug.cgi?id=196431
<rdar://problem/49454962>

Reviewed by Tim Horton.

Source/WebKit:

The crash is happening because WebPage::focusedElementDidChangeInputMode assumes that the document's focused
element must be the same as m_focusedElement in WebPage. However, this is not the case, since m_focusedElement
is only set for certain types of elements that require user input (e.g. text fields, editable content, select
menus, etc.). The function then attempts to dereference m_focusedElement, which may be null if the document's
focused element doesn't fall into one of the aforementioned categories.

To fix this, bail if the element that is changing inputmode is not equal to the WebPage's current focused
element. See below for more details.

Test: fast/forms/change-inputmode-crash.html

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::isTextFormControlOrEditableContent):

Clean up some existing logic by introducing a helper method for determining whether an element should
propagate inputmode attribute changes to the UI process. Also, check the element type using type traits instead
of checking against the tag name.

(WebKit::WebPage::elementDidFocus):
(WebKit::WebPage::focusedElementDidChangeInputMode):

LayoutTests:

Add a layout test that exercises the edge case; see WebKit ChangeLogs for more details.

  • fast/forms/change-inputmode-crash-expected.txt: Added.
  • fast/forms/change-inputmode-crash.html: Added.
12:29 PM Changeset in webkit [243683] by weinig@apple.com
  • 14 edits in trunk

Remove more i386 specific configurations
https://bugs.webkit.org/show_bug.cgi?id=196430

Reviewed by Alexey Proskuryakov.

Source/JavaScriptCore:

  • Configurations/FeatureDefines.xcconfig:

ENABLE_WEB_AUTHN_macosx can now be enabled unconditionally on macOS.

  • Configurations/ToolExecutable.xcconfig:

ARC can be enabled unconditionally now.

Source/WebCore:

  • Configurations/FeatureDefines.xcconfig:

ENABLE_WEB_AUTHN_macosx can now be enabled unconditionally on macOS.

Source/WebCore/PAL:

  • Configurations/FeatureDefines.xcconfig:

ENABLE_WEB_AUTHN_macosx can now be enabled unconditionally on macOS.

Source/WebKit:

  • Configurations/BaseTarget.xcconfig:

WK_HAVE_CORE_PREDICTION can now be enabled unconditionally.

  • Configurations/FeatureDefines.xcconfig:

ENABLE_WEB_AUTHN_macosx can now be enabled unconditionally on macOS.

Source/WebKitLegacy/mac:

  • Configurations/FeatureDefines.xcconfig:

ENABLE_WEB_AUTHN_macosx can now be enabled unconditionally on macOS.

Tools:

  • TestWebKitAPI/Configurations/FeatureDefines.xcconfig:

ENABLE_WEB_AUTHN_macosx and ENABLE_WEB_RTC_macosx can now be enabled unconditionally on macOS.

10:37 AM Changeset in webkit [243682] by aestes@apple.com
  • 24 edits
    1 move in trunk

[iOS] WebKit should consult the navigation response policy delegate before previewing a QuickLook document
https://bugs.webkit.org/show_bug.cgi?id=196433
<rdar://problem/49293305>

Reviewed by Tim Horton.

Source/WebCore:

When ResourceLoader would encounter a response with a MIME type that QuickLook supports, the
response would be implicitly allowed and a QuickLook preview would be generated. After
generating, the client's navigation response policy delegate would be notified of the
preview response, but not the underlying response. Notably, the preview response has a URL
scheme of "x-apple-ql-id", does not include any underlying HTTP headers, and usually has a
MIME type of "text/html" or "application/pdf" rather than the underlying response MIME type.

To allow clients to make better navigation response policy decisions, this patch changes the
above behavior for WKWebView clients that have linked against a version of WebKit that
includes this change. Rather than notifying the client's navigation response policy delegate
of the preview response, we notify the client of the underlying response. Only if the client
responds with a policy of "allow" will the QuickLook preview response be loaded (without
another call to the navigation response policy delegate).

Non-WKWebView clients and clients that have linked against a version of WebKit that does not
include this change will retain the original behavior.

Covered by existing layout tests and new and existing API tests.

  • WebCore.xcodeproj/project.pbxproj:
  • loader/SubresourceLoader.cpp:

(WebCore::SubresourceLoader::shouldCreatePreviewLoaderForResponse const):
(WebCore::SubresourceLoader::didReceiveResponse):

  • loader/ios/PreviewLoader.h:
  • loader/ios/PreviewLoader.mm:

(-[WebPreviewLoader initWithResourceLoader:resourceResponse:]):
(-[WebPreviewLoader _loadPreviewIfNeeded]):
(-[WebPreviewLoader connection:didReceiveData:lengthReceived:]):
(-[WebPreviewLoader connectionDidFinishLoading:]):
(-[WebPreviewLoader connection:didFailWithError:]):
(WebCore::PreviewLoader::create):
(WebCore::PreviewLoader::didReceiveResponse):
(-[WebPreviewLoader _sendDidReceiveResponseIfNecessary]): Deleted.
(WebCore::PreviewLoader::shouldCreateForMIMEType): Deleted.

  • page/Settings.yaml:
  • platform/MIMETypeRegistry.cpp:

(WebCore::MIMETypeRegistry::canShowMIMEType):

  • platform/network/ios/PreviewConverter.h:
  • platform/network/ios/PreviewConverter.mm:

(WebCore::PreviewConverter::supportsMIMEType):

Source/WebKit:

Added WKWebViewConfiguration SPI for setting the QuickLook navigation response policy
decision behavior. The configuration setting defaults to YES for clients linked on or after
this WebKit change and NO otherwise.

  • NetworkProcess/NetworkResourceLoader.cpp:

(WebKit::NetworkResourceLoader::shouldInterruptLoadForCSPFrameAncestorsOrXFrameOptions):

  • Shared/WebPreferences.yaml:
  • Shared/ios/QuickLookDocumentData.cpp:

(WebKit::QuickLookDocumentData::isEmpty const):

  • Shared/ios/QuickLookDocumentData.h:
  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _initializeWithConfiguration:]):

  • UIProcess/API/Cocoa/WKWebViewConfiguration.mm:

(defaultShouldDecidePolicyBeforeLoadingQuickLookPreview):
(-[WKWebViewConfiguration init]):
(-[WKWebViewConfiguration encodeWithCoder:]):
(-[WKWebViewConfiguration initWithCoder:]):
(-[WKWebViewConfiguration copyWithZone:]):
(-[WKWebViewConfiguration _shouldDecidePolicyBeforeLoadingQuickLookPreview]):
(-[WKWebViewConfiguration _setShouldDecidePolicyBeforeLoadingQuickLookPreview:]):

  • UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
  • UIProcess/Cocoa/VersionChecks.h:
  • WebProcess/WebCoreSupport/ios/WebPreviewLoaderClient.cpp:

(WebKit::WebPreviewLoaderClient::didReceiveDataArray):

Source/WTF:

  • wtf/NeverDestroyed.h:

(WTF::NeverDestroyed::operator->):
(WTF::NeverDestroyed::operator-> const):

Tools:

Enhanced API test coverage to include all navigation response policy decisions in both
linked-before and linked-on-or-after modes. Also added new expectations for all tests.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebCore/ios/PreviewConverter.cpp: Renamed from Tools/TestWebKitAPI/Tests/WebCore/ios/PreviewLoader.cpp.

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/QuickLook.mm:

(readFile):
(-[QuickLookDelegate initWithExpectedFileURL:responsePolicy:]):
(-[QuickLookDelegate initWithExpectedFileURL:previewMIMEType:responsePolicy:]):
(-[QuickLookDelegate webView:decidePolicyForNavigationResponse:decisionHandler:]):
(-[QuickLookDelegate _webView:didStartLoadForQuickLookDocumentInMainFrameWithFileName:uti:]):
(-[QuickLookDelegate _webView:didFinishLoadForQuickLookDocumentInMainFrame:]):
(-[QuickLookDelegate webView:didFailProvisionalNavigation:withError:]):
(-[QuickLookDelegate _webViewWebProcessDidCrash:]):
(-[QuickLookDelegate _downloadDidStart:]):
(-[QuickLookDelegate _download:didReceiveResponse:]):
(-[QuickLookDelegate _download:didReceiveData:]):
(-[QuickLookDelegate _download:decideDestinationWithSuggestedFilename:completionHandler:]):
(-[QuickLookDelegate _downloadDidFinish:]):
(-[QuickLookDelegate _download:didFailWithError:]):
(-[QuickLookDelegate _downloadDidCancel:]):
(-[QuickLookDelegate verifyDownload]):
(runTest):
(runTestDecideBeforeLoading):
(runTestDecideAfterLoading):
(TEST):
(-[QuickLookAsyncDelegate webView:decidePolicyForNavigationResponse:decisionHandler:]):
(-[QuickLookPasswordDelegate _webViewDidRequestPasswordForQuickLookDocument:]):
(-[QuickLookFrameLoadDelegate webView:didFinishLoadForFrame:]):
(-[QuickLookNavigationDelegate _webView:didStartLoadForQuickLookDocumentInMainFrameWithFileName:uti:]): Deleted.
(-[QuickLookNavigationDelegate _webView:didFinishLoadForQuickLookDocumentInMainFrame:]): Deleted.
(-[QuickLookNavigationDelegate webView:didFinishNavigation:]): Deleted.
(-[QuickLookAsyncNavigationDelegate webView:decidePolicyForNavigationResponse:decisionHandler:]): Deleted.
(-[QuickLookAsyncNavigationDelegate _webView:didStartLoadForQuickLookDocumentInMainFrameWithFileName:uti:]): Deleted.
(-[QuickLookAsyncNavigationDelegate _webView:didFinishLoadForQuickLookDocumentInMainFrame:]): Deleted.
(-[QuickLookAsyncNavigationDelegate webView:didFinishNavigation:]): Deleted.
(-[QuickLookDecidePolicyDelegate webView:decidePolicyForNavigationResponse:decisionHandler:]): Deleted.
(-[QuickLookDecidePolicyDelegate webView:didFailProvisionalNavigation:withError:]): Deleted.
(-[QuickLookDecidePolicyDelegate _webViewWebProcessDidCrash:]): Deleted.
(-[QuickLookPasswordNavigationDelegate _webViewDidRequestPasswordForQuickLookDocument:]): Deleted.

Note: See TracTimeline for information about the timeline view.