Timeline



Oct 26, 2017:

11:18 PM Changeset in webkit [224086] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

[WinCairo] Fix build after WebCore moves to unified source.
https://bugs.webkit.org/show_bug.cgi?id=178920

Added empty implementations to fix link error.

Patch by Basuke Suzuki <Basuke Suzuki> on 2017-10-26
Reviewed by Ryosuke Niwa.

  • platform/network/curl/DNSCurl.cpp:

(WebCore::DNSResolveQueue::updateIsUsingProxy):
(WebCore::DNSResolveQueue::platformResolve):

11:06 PM Changeset in webkit [224085] by commit-queue@webkit.org
  • 14 edits in trunk/Source

Implement seek tolerance methods in WebAVPlayerController.
https://bugs.webkit.org/show_bug.cgi?id=178838
rdar://problem/33781777

Patch by Jeremy Jones <jeremyj@apple.com> on 2017-10-26
Reviewed by Eric Carlson.

Source/WebCore:

No new tests because this doesn't change any behavior in the page, but exposes seek tolerance to fullscreen platform UI.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::setCurrentTimeWithTolerance):

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

(WebCore::PlaybackSessionModelMediaElement::seekToTime):

  • platform/ios/WebAVPlayerController.mm:

(-[WebAVPlayerController seekToTime:]):
(-[WebAVPlayerController seekToTime:toleranceBefore:toleranceAfter:]):
(-[WebAVPlayerController seekByTimeInterval:]):
(-[WebAVPlayerController seekByTimeInterval:toleranceBefore:toleranceAfter:]):
(-[WebAVPlayerController seekToBeginning:]):
(-[WebAVPlayerController seekToEnd:]):

  • platform/ios/WebVideoFullscreenControllerAVKit.mm:

(VideoFullscreenControllerContext::seekToTime):

Source/WebKit:

This implementes additional methods on WebAVPlayerController that allows AVKit more control over seeking.

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

(WebKit::PlaybackSessionModelContext::seekToTime):
(WebKit::PlaybackSessionManagerProxy::seekToTime):

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

(WebKit::PlaybackSessionManager::seekToTime):

9:04 PM Changeset in webkit [224084] by commit-queue@webkit.org
  • 5 edits
    2 moves
    1 delete in trunk

[GTK][WPE] install-dependencies can't find libapache2-mod-php7.0 on Ubuntu 17.10
https://bugs.webkit.org/show_bug.cgi?id=178854

Patch by Fujii Hironori <Fujii Hironori> on 2017-10-26
Reviewed by Michael Catanzaro.

Tools:

  • Scripts/webkitpy/port/base.py:

(Port._debian_php_version): Return "-php7.1" if libphp7.1.so found.
(Port._is_debian_php_version_7): Deleted.

  • gtk/install-dependencies: Install libapache2-mod-php instead of libapache2-mod-php7.0.
  • wpe/install-dependencies: Ditto.

LayoutTests:

  • http/conf/debian-httpd-2.2.conf: Removed.
  • http/conf/debian-httpd-2.4-php7.0.conf: Renamed from LayoutTests/http/conf/debian-httpd-2.4-php7.conf.
  • http/conf/debian-httpd-2.4-php7.1.conf: Copied from LayoutTests/http/conf/debian-httpd-2.4-php7.conf.
7:44 PM Changeset in webkit [224083] by achristensen@apple.com
  • 2 edits in trunk/Source/WebKitLegacy/win

Fix Windows build
https://bugs.webkit.org/show_bug.cgi?id=178892

  • AccessibleBase.cpp:

(MSAARole):

7:32 PM Changeset in webkit [224082] by BJ Burg
  • 2 edits in trunk/Source/WebKit

Web Automation: denying user permission for getUserMedia doesn't work
https://bugs.webkit.org/show_bug.cgi?id=178895

Reviewed by Youenn Fablet.

  • UIProcess/UserMediaPermissionRequestManagerProxy.cpp:

(WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame):
The ordering of special cases is incorrect. Safari configures its automation views to
allow mock devices and never prompt for them. These checks were before the check for
the automation session's getUserMedia permission. Switch these checks.

Also change the deny reason so that subsequent requests are also denied. This matches
behavior when a user denies a permission request on a real dialog. With this change,
the DOM error changes from SecurityError to NotAllowedError, which makes more sense.

7:20 PM Changeset in webkit [224081] by webkit@devinrousso.com
  • 8 edits in trunk

Web Inspector: Canvas Tab: canvas path components from old page stick around when page is reloaded
https://bugs.webkit.org/show_bug.cgi?id=178806
<rdar://problem/35176360>

Reviewed by Brian Burg.

Source/WebInspectorUI:

Before this change, the CanvasCollection was regenerated each time the Canvas tab was
attached. This also caused the invisible TreeOutline, used for the path components and to
manage selection, to be reset as well. Whenever the page refreshed, however, the old
canvases, and associated recordings, were not removed. This patch reworks all of this logic
to create the CanvasCollection on construction of the tab and add/remove canvases as needed.

  • UserInterface/Controllers/CanvasManager.js:

(WI.CanvasManager.prototype.canvasAdded):
(WI.CanvasManager.prototype.canvasRemoved):
(WI.CanvasManager.prototype._removeCanvas):
(WI.CanvasManager.prototype._mainResourceDidChange):
Replaced the "Cleared" event by instead firing "CanvasRemoved" for every tracked canvas. This
massively simplifies the logic for when the page navigates, as everything goes through a
single event listener.
Drive-by: changed existing event names to remove unnecessary words.

  • UserInterface/Views/CanvasTabContentView.js:

(WI.CanvasTabContentView):
(WI.CanvasTabContentView.prototype.attached):
(WI.CanvasTabContentView.prototype.detached):
(WI.CanvasTabContentView.prototype._addCanvas):
(WI.CanvasTabContentView.prototype._removeCanvas):
(WI.CanvasTabContentView.prototype._handleCanvasAdded):
(WI.CanvasTabContentView.prototype._handleCanvasRemoved):
(WI.CanvasTabContentView.prototype._canvasAdded): Deleted.
(WI.CanvasTabContentView.prototype._canvasRemoved): Deleted.
(WI.CanvasTabContentView.prototype._mainResourceDidChange): Deleted.
Rework logic for the way that the CanvasCollection is maintained. It is no longer
created/destroyed each time the view is attached/detached, and instead a diff is calculated
for the added/existing/removed canvases and the content views are added/removed as such.

  • UserInterface/Views/CanvasOverviewContentView.js:

(WI.CanvasOverviewContentView.prototype._selectionPathComponentsChanged):
Drive-by: if an imported recording is selected on the Canvas Overview view, we should show it.

LayoutTests:

  • inspector/canvas/context-attributes.html:
  • inspector/canvas/resources/create-context-utilities.js:

(destroyCanvases):
(TestPage.registerInitializer.awaitCanvasAdded):
(TestPage.registerInitializer):

  • inspector/canvas/resources/shaderProgram-utilities.js:

(deleteContext):
(TestPage.registerInitializer.window.addParentCanvasRemovedTestCase):
(TestPage.registerInitializer):

7:19 PM Changeset in webkit [224080] by Michael Catanzaro
  • 2 edits in trunk/Source/WebKit

Unreviewed, fix GCC warning spam after r224077
https://bugs.webkit.org/show_bug.cgi?id=178823

Need to leave a blank line at the bottom of the file.

  • Scripts/PreferencesTemplates/WebPreferencesDefinitions.h.erb:
7:02 PM Changeset in webkit [224079] by Michael Catanzaro
  • 2 edits in trunk/Source/WebCore

Unreviewed, fix WPE build after r224074
https://bugs.webkit.org/show_bug.cgi?id=178892

  • accessibility/wpe/AccessibilityObjectWPE.cpp:

(WebCore::AccessibilityObject::accessibilityPlatformIncludesObject const):

6:57 PM Changeset in webkit [224078] by Simon Fraser
  • 17 edits
    1 move
    3 adds in trunk

When navigating back to a page, compositing layers may not use accelerated drawing
https://bugs.webkit.org/show_bug.cgi?id=178749
rdar://problem/35158946

Reviewed by Dean Jackson.
Source/WebCore:

There were two issues with setting GraphicsLayerCA's "acceleratesDrawing" state which
occurred on back navigation, related to the ordering of style recalcs and layout.

First, at style recalc time, we created a RenderLayerCompositor but hadn't yet called
its cacheAcceleratedCompositingFlags(), so any layers created during style update
didn't get accelerated drawing. Fix by making cacheAcceleratedCompositingFlags() internal
to RenderLayerCompositor and calling it from willRecalcStyle() and updateCompositingLayers().

Secondly, GraphicsLayerCA::commitLayerChangesBeforeSublayers() needs to updateAcceleratesDrawing()
before updating tiles, so that new tiles fetch the right acceleratesDrawing state from
the TileController.

Test: compositing/accelerated-layers-after-back.html

  • page/FrameView.cpp:

(WebCore::FrameView::updateCompositingLayersAfterLayout):

  • platform/graphics/ca/GraphicsLayerCA.cpp:

(WebCore::GraphicsLayerCA::commitLayerChangesBeforeSublayers):

  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::willRecalcStyle):
(WebCore::RenderLayerCompositor::didRecalcStyleWithNoPendingLayout):
(WebCore::RenderLayerCompositor::updateCompositingLayers):

  • rendering/RenderLayerCompositor.h:

Source/WebKit:

Avoid assertions when a test enables accelerated drawing (which we can't support
in the iOS simulator).

  • Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:

(WebKit::RemoteLayerBackingStore::ensureBackingStore):

Tools:

Fix WTR and DRT to parse "useAcceleratedDrawing" out of "webkit-test-runner" options
and use it to set the state of the web view.

  • DumpRenderTree/TestOptions.h:
  • DumpRenderTree/TestOptions.mm:

(TestOptions::TestOptions):

  • DumpRenderTree/mac/DumpRenderTree.mm:

(setWebPreferencesForTestOptions):

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::resetPreferencesToConsistentValues):
(WTR::updateTestOptionsFromTestHeader):

  • WebKitTestRunner/TestOptions.h:

(WTR::TestOptions::hasSameInitializationOptions const):

LayoutTests:

Moved iframes/resources/page-cache-helper.html up to compositing/resources/go-back.html.

  • compositing/accelerated-layers-after-back-expected.txt: Added.
  • compositing/accelerated-layers-after-back.html: Added.
  • compositing/iframes/page-cache-layer-tree.html:
  • compositing/page-cache-back-crash.html:
  • compositing/resources/go-back.html: Renamed from LayoutTests/compositing/iframes/resources/page-cache-helper.html.
  • platform/ios/compositing/accelerated-layers-after-back-expected.txt: Added.
6:45 PM Changeset in webkit [224077] by commit-queue@webkit.org
  • 14 edits
    1 copy in trunk/Source/WebKit

[Settings] Generate the bulk of WebPage::updatePreferences(...)
https://bugs.webkit.org/show_bug.cgi?id=178823

Patch by Sam Weinig <sam@webkit.org> on 2017-10-26
Reviewed by Tim Horton.

  • CMakeLists.txt:
  • DerivedSources.make:
  • WebKit.xcodeproj/project.pbxproj:

Add new file generation.

  • Scripts/GeneratePreferences.rb:

Replace 'webkitOnly' boolean option with a new 'webcoreBinding' option.
'webcoreBinding' supports the following values:

  • none (same as webkit only)
  • custom (means that you do bind to a webcore concept, but currently it must be done in a custom manner)
  • DeprecatedGlobalSettings (binds to a DeprecatedGlobalSettings setting)
  • RuntimeEnabledFeatures (binds to a RuntimeEnabledFeatures setting)

If 'webcoreBinding' is not provided, the preference binds to WebCore Setting
of either the same name or the override name provided by the new 'webcoreName'
option (we should try to remove the need for 'webcoreName' by unifying with
WebCore on preference/setting naming).

A 'condition' option was also added to indicate that the preference is only available
when that macro condition is true.

Since we are generating most of WebPage::updatePreferences, we can simplify the
macros in WebPreferencesDefinitions.h to only have normal/debug/experimental variants
and remove the need for per-type macros, which were only used in WebPage::updatePreferences.

  • Scripts/PreferencesTemplates/WebPageUpdatePreferences.cpp.erb: Added.

Generates bindings from WebPreferences to WebCore::Settings/DeprecatedGlobalSettings/RuntimeEnabledFeatures.
Does not generate a binding if the 'webcoreBinding' option is set to either 'none' or 'custom'.

  • Scripts/PreferencesTemplates/WebPreferencesDefinitions.h.erb:

Simplify down to just normal/debug/experimental macros.

  • Shared/WebPreferences.yaml:

Annotate perferences with new optional 'webcoreBinding', 'webcoreName', and 'condition'
options.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::updatePreferences):

Replace a ton of hand written preference to settings bindings with a call to updatePreferencesGenerated().

  • WebProcess/WebPage/WebPage.h:

Add declaration of updatePreferencesGenerated, remove platformPreferencesDidChange.

  • WebProcess/WebPage/gtk/WebPageGtk.cpp:

(WebKit::WebPage::platformPreferencesDidChange): Deleted.

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::platformPreferencesDidChange): Deleted.

  • WebProcess/WebPage/mac/WebPageMac.mm:

(WebKit::WebPage::platformPreferencesDidChange): Deleted.

  • WebProcess/WebPage/win/WebPageWin.cpp:

(WebKit::WebPage::platformPreferencesDidChange): Deleted.

  • WebProcess/WebPage/wpe/WebPageWPE.cpp:

(WebKit::WebPage::platformPreferencesDidChange): Deleted.

Remove all the empty platformPreferencesDidChange functions.

6:14 PM Changeset in webkit [224076] by achristensen@apple.com
  • 2 edits in trunk/Source/WebKitLegacy/win

Fix Windows build
https://bugs.webkit.org/show_bug.cgi?id=178892

  • AccessibleBase.cpp:

(AccessibleBase::state const):
(MSAARole):

5:54 PM Changeset in webkit [224075] by achristensen@apple.com
  • 2 edits in trunk/Source/WebCore

Fix Windows build
https://bugs.webkit.org/show_bug.cgi?id=178892

  • accessibility/win/AccessibilityObjectWin.cpp:

(WebCore::AccessibilityObject::accessibilityPlatformIncludesObject const):

5:37 PM Changeset in webkit [224074] by achristensen@apple.com
  • 57 edits in trunk/Source/WebCore

Modernize AccessibilityObject.h
https://bugs.webkit.org/show_bug.cgi?id=178892

Reviewed by Tim Horton.

The enums in AccessibilityObject.h are causing naming collisions with unified builds.
This is what enum classes are for.
HashMaps of enum classes still need a few casts to/from int.

I also made some RefPtr's Ref's, use some initializer lists instead of values in the constructor implementation, and indentation fixing.

No change in behavior.

  • accessibility/AXObjectCache.cpp:

(WebCore::AXComputedObjectAttributeCache::getIgnored const):
(WebCore::AXObjectCache::~AXObjectCache):
(WebCore::AXObjectCache::getOrCreate):
(WebCore::AXObjectCache::remove):
(WebCore::AXObjectCache::notificationPostTimerFired):

  • accessibility/AXObjectCache.h:

(WebCore::AXComputedObjectAttributeCache::CachedAXObjectAttributes::CachedAXObjectAttributes):
(WebCore::AXComputedObjectAttributeCache::getIgnored const):

  • accessibility/AccessibilityARIAGrid.cpp:

(WebCore::AccessibilityARIAGrid::addChildren):

  • accessibility/AccessibilityARIAGridCell.cpp:

(WebCore::AccessibilityARIAGridCell::parentRowGroup const):

  • accessibility/AccessibilityARIAGridRow.cpp:

(WebCore::AccessibilityARIAGridRow::headerObject):

  • accessibility/AccessibilityAttachment.cpp:

(WebCore::AccessibilityAttachment::accessibilityText):

  • accessibility/AccessibilityAttachment.h:
  • accessibility/AccessibilityImageMapLink.cpp:

(WebCore::AccessibilityImageMapLink::roleValue const):
(WebCore::AccessibilityImageMapLink::accessibilityText):

  • accessibility/AccessibilityLabel.cpp:

(WebCore::childrenContainOnlyStaticText):

  • accessibility/AccessibilityLabel.h:
  • accessibility/AccessibilityList.cpp:

(WebCore::AccessibilityList::isUnorderedList const):
(WebCore::AccessibilityList::isOrderedList const):
(WebCore::AccessibilityList::determineAccessibilityRole):
(WebCore::AccessibilityList::roleValue const):

  • accessibility/AccessibilityListBox.cpp:

(WebCore::AccessibilityListBox::setSelectedChildren):
(WebCore::AccessibilityListBox::listBoxOptionAccessibilityObject const):

  • accessibility/AccessibilityListBox.h:
  • accessibility/AccessibilityListBoxOption.h:
  • accessibility/AccessibilityMathMLElement.cpp:

(WebCore::AccessibilityMathMLElement::determineAccessibilityRole):
(WebCore::AccessibilityMathMLElement::isMathScriptObject const):
(WebCore::AccessibilityMathMLElement::isMathMultiscriptObject const):

  • accessibility/AccessibilityMediaControls.cpp:

(WebCore::AccessibilityMediaControl::accessibilityText):
(WebCore::AccessibilityMediaControl::roleValue const):

  • accessibility/AccessibilityMediaControls.h:
  • accessibility/AccessibilityMenuList.cpp:

(WebCore::AccessibilityMenuList::addChildren):

  • accessibility/AccessibilityMenuList.h:
  • accessibility/AccessibilityMenuListOption.h:
  • accessibility/AccessibilityMenuListPopup.cpp:

(WebCore::AccessibilityMenuListPopup::menuListOptionAccessibilityObject const):

  • accessibility/AccessibilityMenuListPopup.h:
  • accessibility/AccessibilityNodeObject.cpp:

(WebCore::AccessibilityNodeObject::AccessibilityNodeObject):
(WebCore::AccessibilityNodeObject::determineAccessibilityRole):
(WebCore::AccessibilityNodeObject::canHaveChildren const):
(WebCore::AccessibilityNodeObject::computeAccessibilityIsIgnored const):
(WebCore::AccessibilityNodeObject::isSearchField const):
(WebCore::AccessibilityNodeObject::isImage const):
(WebCore::AccessibilityNodeObject::isPasswordField const):
(WebCore::AccessibilityNodeObject::isInputImage const):
(WebCore::AccessibilityNodeObject::isProgressIndicator const):
(WebCore::AccessibilityNodeObject::isSlider const):
(WebCore::AccessibilityNodeObject::isMenuRelated const):
(WebCore::AccessibilityNodeObject::isMenu const):
(WebCore::AccessibilityNodeObject::isMenuBar const):
(WebCore::AccessibilityNodeObject::isMenuButton const):
(WebCore::AccessibilityNodeObject::isMenuItem const):
(WebCore::AccessibilityNodeObject::isEnabled const):
(WebCore::AccessibilityNodeObject::isChecked const):
(WebCore::AccessibilityNodeObject::supportsRequiredAttribute const):
(WebCore::AccessibilityNodeObject::headingLevel const):
(WebCore::AccessibilityNodeObject::isHeading const):
(WebCore::AccessibilityNodeObject::isLink const):
(WebCore::AccessibilityNodeObject::isGroup const):
(WebCore::AccessibilityNodeObject::selectedRadioButton):
(WebCore::AccessibilityNodeObject::checkboxOrRadioValue const):
(WebCore::AccessibilityNodeObject::actionElement const):
(WebCore::AccessibilityNodeObject::alterSliderValue):
(WebCore::AccessibilityNodeObject::isGenericFocusableElement const):
(WebCore::AccessibilityNodeObject::menuElementForMenuButton const):
(WebCore::AccessibilityNodeObject::menuItemElementForMenu const):
(WebCore::AccessibilityNodeObject::titleElementText const):
(WebCore::AccessibilityNodeObject::alternativeText const):
(WebCore::AccessibilityNodeObject::visibleText const):
(WebCore::AccessibilityNodeObject::helpText const):
(WebCore::AccessibilityNodeObject::accessibilityText):
(WebCore::AccessibilityNodeObject::ariaLabeledByText const):
(WebCore::AccessibilityNodeObject::accessibilityDescription const):
(WebCore::AccessibilityNodeObject::roleIgnoresTitle const):
(WebCore::AccessibilityNodeObject::hierarchicalLevel const):
(WebCore::AccessibilityNodeObject::title const):
(WebCore::AccessibilityNodeObject::text const):
(WebCore::AccessibilityNodeObject::stringValue const):
(WebCore::AccessibilityNodeObject::determineAriaRoleAttribute const):
(WebCore::AccessibilityNodeObject::remapAriaRoleDueToParent const):
(WebCore::AccessibilityNodeObject::canSetSelectedAttribute const):

  • accessibility/AccessibilityNodeObject.h:
  • accessibility/AccessibilityObject.cpp:

(WebCore::AccessibilityObject::detach):
(WebCore::AccessibilityObject::isAccessibilityObjectSearchMatchAtIndex):
(WebCore::AccessibilityObject::accessibleNameDerivesFromContent const):
(WebCore::AccessibilityObject::isBlockquote const):
(WebCore::AccessibilityObject::isTextControl const):
(WebCore::AccessibilityObject::isARIATextControl const):
(WebCore::AccessibilityObject::isLandmark const):
(WebCore::AccessibilityObject::findMatchingObjects):
(WebCore::AccessibilityObject::rangeOfStringClosestToRangeInDirection const):
(WebCore::AccessibilityObject::selectText):
(WebCore::AccessibilityObject::isARIAInput):
(WebCore::AccessibilityObject::isARIAControl):
(WebCore::AccessibilityObject::isRangeControl const):
(WebCore::AccessibilityObject::visiblePositionForBounds const):
(WebCore::AccessibilityObject::supportsARIAReadOnly const):
(WebCore::AccessibilityObject::ariaReadOnlyValue const):
(WebCore::AccessibilityObject::headingElementForNode):
(WebCore::AccessibilityObject::ariaTreeRows):
(WebCore::AccessibilityObject::ariaTreeItemContent):
(WebCore::AccessibilityObject::ariaTreeItemDisclosedRows):
(WebCore::AccessibilityObject::defaultLiveRegionStatusForRole):
(WebCore::AccessibilityObject::actionVerb const):
(WebCore::AccessibilityObject::ariaCurrentState const):
(WebCore::AccessibilityObject::ariaCurrentValue const):
(WebCore::AccessibilityObject::orientation const):
(WebCore::initializeRoleMap):
(WebCore::AccessibilityObject::ariaRoleToWebCoreRole):
(WebCore::AccessibilityObject::computedRoleString const):
(WebCore::AccessibilityObject::supportsPressAction const):
(WebCore::AccessibilityObject::sortDirection const):
(WebCore::AccessibilityObject::supportsExpanded const):
(WebCore::AccessibilityObject::isExpanded const):
(WebCore::AccessibilityObject::supportsChecked const):
(WebCore::AccessibilityObject::checkboxOrRadioValue const):
(WebCore::AccessibilityObject::scrollByPage const):
(WebCore::AccessibilityObject::lastKnownIsIgnoredValue):
(WebCore::AccessibilityObject::setLastKnownIsIgnoredValue):
(WebCore::AccessibilityObject::buttonRoleType const):
(WebCore::AccessibilityObject::isButton const):
(WebCore::AccessibilityObject::accessibilityIsIgnoredByDefault const):
(WebCore::AccessibilityObject::defaultObjectInclusion const):
(WebCore::AccessibilityObject::accessibilityIsIgnored const):
(WebCore::AccessibilityObject::isContainedByPasswordField const):
(WebCore::AccessibilityObject::AccessibilityObject): Deleted.

  • accessibility/AccessibilityObject.h:

(WebCore::AccessibilityText::AccessibilityText):
(WebCore::AccessibilityIsIgnoredFromParentData::AccessibilityIsIgnoredFromParentData):
(WebCore::AccessibilityObject::isImageMap const):
(WebCore::AccessibilityObject::isWebArea const):
(WebCore::AccessibilityObject::isCheckbox const):
(WebCore::AccessibilityObject::isRadioButton const):
(WebCore::AccessibilityObject::isListBox const):
(WebCore::AccessibilityObject::isSpinButton const):
(WebCore::AccessibilityObject::isSwitch const):
(WebCore::AccessibilityObject::isToggleButton const):
(WebCore::AccessibilityObject::isTabList const):
(WebCore::AccessibilityObject::isTabItem const):
(WebCore::AccessibilityObject::isRadioGroup const):
(WebCore::AccessibilityObject::isComboBox const):
(WebCore::AccessibilityObject::isTree const):
(WebCore::AccessibilityObject::isTreeGrid const):
(WebCore::AccessibilityObject::isTreeItem const):
(WebCore::AccessibilityObject::isScrollbar const):
(WebCore::AccessibilityObject::isListItem const):
(WebCore::AccessibilityObject::isScrollView const):
(WebCore::AccessibilityObject::isCanvas const):
(WebCore::AccessibilityObject::isPopUpButton const):
(WebCore::AccessibilityObject::isColorWell const):
(WebCore::AccessibilityObject::isSplitter const):
(WebCore::AccessibilityObject::isToolbar const):
(WebCore::AccessibilityObject::isSummary const):
(WebCore::AccessibilityObject::isStaticText const):
(WebCore::AccessibilityObject::ariaRoleAttribute const):
(WebCore::AccessibilityObject::accessibilityPlatformIncludesObject const):

  • accessibility/AccessibilityProgressIndicator.h:
  • accessibility/AccessibilityRenderObject.cpp:

(WebCore::AccessibilityRenderObject::parentObject const):
(WebCore::AccessibilityRenderObject::isAttachment const):
(WebCore::AccessibilityRenderObject::helpText const):
(WebCore::AccessibilityRenderObject::stringValue const):
(WebCore::AccessibilityRenderObject::addRadioButtonGroupChildren const):
(WebCore::AccessibilityRenderObject::addRadioButtonGroupMembers const):
(WebCore::AccessibilityRenderObject::linkedUIElements const):
(WebCore::AccessibilityRenderObject::isAllowedChildOfTree const):
(WebCore::objectInclusionFromAltText):
(WebCore::AccessibilityRenderObject::defaultObjectInclusion const):
(WebCore::AccessibilityRenderObject::computeAccessibilityIsIgnored const):
(WebCore::AccessibilityRenderObject::selectedTextRange const):
(WebCore::AccessibilityRenderObject::isTabItemSelected const):
(WebCore::AccessibilityRenderObject::isFocused const):
(WebCore::AccessibilityRenderObject::setSelectedRows):
(WebCore::AccessibilityRenderObject::getDocumentLinks):
(WebCore::AccessibilityRenderObject::shouldFocusActiveDescendant const):
(WebCore::AccessibilityRenderObject::handleAriaExpandedChanged):
(WebCore::AccessibilityRenderObject::supportsExpandedTextValue const):
(WebCore::AccessibilityRenderObject::determineAccessibilityRole):
(WebCore::AccessibilityRenderObject::orientation const):
(WebCore::AccessibilityRenderObject::inheritsPresentationalRole const):
(WebCore::AccessibilityRenderObject::ariaRoleHasPresentationalChildren const):
(WebCore::AccessibilityRenderObject::canSetExpandedAttribute const):
(WebCore::AccessibilityRenderObject::addImageMapChildren):
(WebCore::AccessibilityRenderObject::addTextFieldChildren):
(WebCore::AccessibilityRenderObject::updateRoleAfterChildrenCreation):
(WebCore::AccessibilityRenderObject::ariaLiveRegionAtomic const):
(WebCore::AccessibilityRenderObject::canHaveSelectedChildren const):
(WebCore::AccessibilityRenderObject::ariaListboxSelectedChildren):
(WebCore::AccessibilityRenderObject::selectedChildren):
(WebCore::AccessibilityRenderObject::visibleChildren):
(WebCore::AccessibilityRenderObject::tabChildren):
(WebCore::AccessibilityRenderObject::actionVerb const):
(WebCore::msaaRoleForRenderer):
(WebCore::AccessibilityRenderObject::roleValueForMSAA const):

  • accessibility/AccessibilitySVGElement.cpp:

(WebCore::AccessibilitySVGElement::accessibilityText):
(WebCore::AccessibilitySVGElement::computeAccessibilityIsIgnored const):
(WebCore::AccessibilitySVGElement::inheritsPresentationalRole const):
(WebCore::AccessibilitySVGElement::determineAriaRoleAttribute const):
(WebCore::AccessibilitySVGElement::determineAccessibilityRole):

  • accessibility/AccessibilitySVGRoot.h:
  • accessibility/AccessibilityScrollView.cpp:

(WebCore::AccessibilityScrollView::scrollBar):

  • accessibility/AccessibilityScrollView.h:
  • accessibility/AccessibilityScrollbar.cpp:

(WebCore::AccessibilityScrollbar::orientation const):

  • accessibility/AccessibilityScrollbar.h:
  • accessibility/AccessibilitySlider.cpp:

(WebCore::AccessibilitySlider::orientation const):
(WebCore::AccessibilitySlider::addChildren):

  • accessibility/AccessibilitySlider.h:
  • accessibility/AccessibilitySpinButton.cpp:

(WebCore::AccessibilitySpinButton::addChildren):

  • accessibility/AccessibilitySpinButton.h:
  • accessibility/AccessibilityTable.cpp:

(WebCore::AccessibilityTable::hasARIARole const):
(WebCore::AccessibilityTable::addChildren):
(WebCore::AccessibilityTable::headerContainer):
(WebCore::AccessibilityTable::roleValue const):
(WebCore::AccessibilityTable::computeAccessibilityIsIgnored const):
(WebCore::AccessibilityTable::titleElementText const):

  • accessibility/AccessibilityTableCell.cpp:

(WebCore::AccessibilityTableCell::computeAccessibilityIsIgnored const):
(WebCore::AccessibilityTableCell::determineAccessibilityRole):

  • accessibility/AccessibilityTableColumn.cpp:

(WebCore::AccessibilityTableColumn::headerObject):

  • accessibility/AccessibilityTableColumn.h:
  • accessibility/AccessibilityTableHeaderContainer.h:
  • accessibility/AccessibilityTableRow.cpp:

(WebCore::AccessibilityTableRow::determineAccessibilityRole):
(WebCore::AccessibilityTableRow::computeAccessibilityIsIgnored const):

  • accessibility/AccessibilityTree.cpp:

(WebCore::AccessibilityTree::determineAccessibilityRole):

  • accessibility/ios/AccessibilityObjectIOS.mm:

(WebCore::AccessibilityObject::accessibilityPlatformIncludesObject const):
(WebCore::AccessibilityObject::isInputTypePopupButton const):

  • accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:

(-[WebAccessibilityObjectWrapper accessibilityCanFuzzyHitTest]):
(-[WebAccessibilityObjectWrapper _accessibilityIsLandmarkRole:]):
(-[WebAccessibilityObjectWrapper _accessibilityTreeAncestor]):
(-[WebAccessibilityObjectWrapper _accessibilityListAncestor]):
(-[WebAccessibilityObjectWrapper _accessibilityArticleAncestor]):
(-[WebAccessibilityObjectWrapper _accessibilityTraitsFromAncestors]):
(-[WebAccessibilityObjectWrapper _accessibilityTextEntryTraits]):
(-[WebAccessibilityObjectWrapper accessibilityTraits]):
(-[WebAccessibilityObjectWrapper determineIsAccessibilityElement]):
(-[WebAccessibilityObjectWrapper stringValueShouldBeUsedInLabel]):
(-[WebAccessibilityObjectWrapper accessibilityLabel]):
(-[WebAccessibilityObjectWrapper accessibilityValue]):
(-[WebAccessibilityObjectWrapper accessibilityIsComboBox]):
(-[WebAccessibilityObjectWrapper containsUnnaturallySegmentedChildren]):
(-[WebAccessibilityObjectWrapper accessibilityLinkedElement]):
(-[WebAccessibilityObjectWrapper treeItemParentForObject:]):
(-[WebAccessibilityObjectWrapper accessibilityElementDidBecomeFocused]):
(-[WebAccessibilityObjectWrapper accessibilitySortDirection]):

  • accessibility/mac/AccessibilityObjectMac.mm:

(WebCore::AccessibilityObject::accessibilityPlatformIncludesObject const):

  • accessibility/mac/WebAccessibilityObjectWrapperBase.mm:

(-[WebAccessibilityObjectWrapperBase baseAccessibilityTitle]):
(-[WebAccessibilityObjectWrapperBase baseAccessibilityDescription]):
(-[WebAccessibilityObjectWrapperBase baseAccessibilityHelpText]):
(-[WebAccessibilityObjectWrapperBase ariaLandmarkRoleDescription]):
(createAccessibilitySearchKeyMap):
(accessibilitySearchKeyForString):
(accessibilitySearchCriteriaForSearchPredicateParameterizedAttribute):

  • accessibility/mac/WebAccessibilityObjectWrapperMac.mm:

(accessibilitySelectTextCriteriaForCriteriaParameterizedAttribute):
(-[WebAccessibilityObjectWrapper additionalAccessibilityAttributeNames]):
(-[WebAccessibilityObjectWrapper accessibilityAttributeNames]):
(createAccessibilityRoleMap):
(roleValueToNSString):
(-[WebAccessibilityObjectWrapper role]):
(-[WebAccessibilityObjectWrapper subrole]):
(-[WebAccessibilityObjectWrapper roleDescription]):
(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]):
(-[WebAccessibilityObjectWrapper accessibilityPerformShowMenuAction]):
(-[WebAccessibilityObjectWrapper _accessibilitySetValue:forAttribute:]):

  • inspector/InspectorDOMAgent.cpp:

(WebCore::InspectorDOMAgent::buildObjectForAccessibilityProperties):

5:34 PM Changeset in webkit [224073] by mmaxfield@apple.com
  • 10 edits in trunk/LayoutTests

[iOS] Update expected results for writing-mode tests
https://bugs.webkit.org/show_bug.cgi?id=178916
<rdar://problem/33250084>

Unreviewed.

  • platform/ios/TestExpectations:
  • platform/ios/fast/writing-mode/border-vertical-lr-expected.txt:
  • platform/ios/fast/writing-mode/japanese-lr-text-expected.txt:
  • platform/ios/fast/writing-mode/japanese-rl-text-expected.txt:
  • platform/ios/fast/writing-mode/japanese-ruby-horizontal-bt-expected.txt:
  • platform/ios/fast/writing-mode/japanese-ruby-vertical-lr-expected.txt:
  • platform/ios/fast/writing-mode/japanese-ruby-vertical-rl-expected.txt:
  • platform/ios/fast/writing-mode/vertical-align-table-baseline-expected.txt:
  • platform/ios/fast/writing-mode/vertical-baseline-alignment-expected.txt:
5:31 PM Changeset in webkit [224072] by msaboff@apple.com
  • 3 edits
    1 add in trunk

REGRESSION(r222601): We fail to properly backtrack into a sub pattern of a parenthesis with non-zero minimum
https://bugs.webkit.org/show_bug.cgi?id=178890

Reviewed by Keith Miller.

JSTests:

New regression test.

  • stress/regress-178890.js: Added.

Source/JavaScriptCore:

We need to let a contained subpattern backtrack before declaring that the containing
parenthesis doesn't match. If the subpattern fails to match backtracking, then we
can check to see if we trying to backtrack below the minimum match count.

  • yarr/YarrInterpreter.cpp:

(JSC::Yarr::Interpreter::backtrackParentheses):

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

Move WKWebViewConfiguration validation to WKWebView construction
https://bugs.webkit.org/show_bug.cgi?id=178840

Reviewed by Tim Horton.
Source/WebKit:


I'm trying to remove WKWebViewConfigurationInternal methods so I can make WKWebViewConfiguration
a wrapper around an APIObject like all the other API objects. A small step towards making this easier
is to remove the unnecessary method _validate and move its logic to its one callsite. I added an API test
that ensures no change in behavior.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _initializeWithConfiguration:]):

  • UIProcess/API/Cocoa/WKWebViewConfiguration.mm:

(-[WKWebViewConfiguration _validate]): Deleted.

  • UIProcess/API/Cocoa/WKWebViewConfigurationInternal.h:

Tools:

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

(TEST):

4:50 PM Changeset in webkit [224070] by commit-queue@webkit.org
  • 3 edits
    4 adds in trunk

importScripts in service worker should use ServiceWorkersMode::None
https://bugs.webkit.org/show_bug.cgi?id=178888

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

Source/WebCore:

Test: http/tests/workers/service/service-worker-importScript.html

Made sure ServiceWorkersMode::None is used for loading scripts in service workers as we do not support foreign fetch.

  • workers/WorkerScriptLoader.cpp:

(WebCore::WorkerScriptLoader::loadSynchronously):

LayoutTests:

  • http/tests/workers/service/resources/service-worker-importScript-worker.js: Added.
  • http/tests/workers/service/resources/service-worker-importScript.js: Added.
  • http/tests/workers/service/service-worker-importScript-expected.txt: Added.
  • http/tests/workers/service/service-worker-importScript.html: Added.
4:44 PM Changeset in webkit [224069] by keith_miller@apple.com
  • 1 edit in trunk/Source/WebCore/ChangeLog

Unreviewed, cleanup changelogs.

4:42 PM Changeset in webkit [224068] by Megan Gardner
  • 3 edits in trunk/Source/WebKit

Remove unneeded block selection calculation code
https://bugs.webkit.org/show_bug.cgi?id=178889

Reviewed by Tim Horton.

Removing more block selection code. Much of this should have been removed
before, as the only things that were using these functions were removed in the
last patch. Also remove the code decided if you should move to block mode or not,
as the answer now is always NO.

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

(WebKit::WebPage::updateSelectionWithTouches):
(WebKit::WebPage::rangeForBlockAtPoint): Deleted.
(WebKit::distanceBetweenRectsForPosition): Deleted.
(WebKit::rectsEssentiallyTheSame): Deleted.
(WebKit::unionDOMRanges): Deleted.
(WebKit::computeEdgeCenter): Deleted.
(WebKit::WebPage::expandedRangeFromHandle): Deleted.
(WebKit::WebPage::contractedRangeFromHandle): Deleted.
(WebKit::WebPage::computeExpandAndShrinkThresholdsForHandle): Deleted.
(WebKit::WebPage::switchToBlockSelectionAtPoint): Deleted.
(WebKit::WebPage::shouldSwitchToBlockModeForHandle): Deleted.

4:41 PM Changeset in webkit [224067] by webkit@devinrousso.com
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: Canvas Tab: canvases overview should support navigation via keyboard
https://bugs.webkit.org/show_bug.cgi?id=178800
<rdar://problem/35175856>

Reviewed by Brian Burg.

Create a KeyboardShorcut for each of the following:

  • Up: selects the previous canvas in the selected column
  • Down: selects the next canvas in the selected column
  • Right: selects the next canvas in the selected row
  • Left: selects the previous canvas in the selected row
  • Space: toggle recording of the selected canvas
  • Shift+Space: toggle single-frame recording of the selected canvas

The calculation for selected row/colum is based on the offsetWidth of the parent element
and the selected item's content view element. Since this view uses a flexbox, all of the
items are expected to have the same dimensions, meaning that this value is uniform. The
intended functionality is that of a spreadsheet, where pressing pressing left/right will
never change the selected row and up/down will never change the selected column.

  • UserInterface/Views/CanvasOverviewContentView.css:

(.content-view.canvas-overview):
(.content-view.canvas-overview .content-view.canvas):
Move margin value to a CSS variable so that it can be easily retrieved via JavaScript.

  • UserInterface/Views/CanvasOverviewContentView.js:

(WI.CanvasOverviewContentView):
(WI.CanvasOverviewContentView.prototype.contentViewAdded):
(WI.CanvasOverviewContentView.prototype.contentViewRemoved):
(WI.CanvasOverviewContentView.prototype.attached):
(WI.CanvasOverviewContentView.prototype.detached):
(WI.CanvasOverviewContentView.prototype.get _itemMargin):
(WI.CanvasOverviewContentView.prototype._changeSelectedItemVertically):
(WI.CanvasOverviewContentView.prototype._changeSelectedItemHorizontally):
(WI.CanvasOverviewContentView.prototype._updateNavigationItems):
(WI.CanvasOverviewContentView.prototype._handleUp):
(WI.CanvasOverviewContentView.prototype._handleRight):
(WI.CanvasOverviewContentView.prototype._handleDown):
(WI.CanvasOverviewContentView.prototype._handleLeft):
(WI.CanvasOverviewContentView.prototype._handleSpace):
(WI.CanvasOverviewContentView.prototype._supplementalRepresentedObjectsDidChange):
Drive-by: call _updateNavigationItems whenever an item is added/removed so that if there
are no items the navigation items cannot be clicked.

4:37 PM Changeset in webkit [224066] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

Implement ServiceWorkerContainer getRegistration
https://bugs.webkit.org/show_bug.cgi?id=178882

Unreviewed.

Patch by Youenn Fablet <youenn@apple.com> on 2017-10-26

  • TestExpectations: Skipping service worker tests until they can produce results.
4:32 PM Changeset in webkit [224065] by mmaxfield@apple.com
  • 2 edits
    47 adds in trunk/Tools

Demonstrate a possible structure of the WebGPU API
https://bugs.webkit.org/show_bug.cgi?id=178874

Reviewed by Dean Jackson.

Over the past few weeks, we've been putting together an example showing that a WebGPU API
which has implicit barriers can work on all three low-level graphics APIs. We've implemented
it on top of Vulkan first, because this is the API which has the strictest requirements and
is most difficult to use.

With this API, this is a valid WebGPU snippet:

auto device = WebGPU::Device::create(hInstance, hWnd);
auto& commandQueue = device->getCommandQueue();
auto& renderState = device->getRenderState(vertexShader, "main", fragmentShader, "main", { }, { }, { }, nullptr);

… later, in the draw() function …

auto renderPass = commandQueue->createRenderPass(nullptr);
renderPass->setRenderState(renderState);
renderPass->setViewport(0, 0, width, height);
renderPass->setScissorRect(0, 0, width, height);
renderPass->draw(3);
commandQueue->commitRenderPass(std::move(renderPass));
commandQueue->present();

This snippet doesn’t hook up any vertex attributes or resources, which means the vertex
shader has to say something like ({vec4(…), vec4(…), vec4(…)})[gl_VertexIndex]. It also
passes in “nullptr” when creating the render pass, which means “render to the screen, rather
than to a frame buffer.” You can also see that it doesn’t attach any resources to the draw
call.

In Direct3D 12 and Vulkan, resources are bound in sets, rather than individually. For
example, a set might contain two uniform buffers, a texture, and another uniform buffer. At
draw time, you swap in whole sets of resources with a single call. A shader invocation can
access a collection of sets. Because all shader resource accesses are indirected through
these sets, the shape of these sets needs to be supplied at the time you compile the render
state. Here is a snippet which bounds a single set which contains a uniform buffer and a
texture:

auto buffer = device->getBuffer(bufferInitialContents);
auto texture = device->getTexture(buffer width, height, WebGPU::PixelFormat::RGBA8, textureInitialContents);
One resource set, which holds a single uniform buffer object and a single texture
auto& renderState = device->getRenderState(vertexShader, "main", fragmentShader, "main", { }, { }, { { WebGPU::ResourceType::UniformBufferObject, WebGPU::ResourceType::Texture } }, nullptr);

… later, in the draw() function …

auto renderPass = commandQueue->createRenderPass(nullptr);
renderPass->setRenderState(renderState);
renderPass->setResources(0, { WebGPU::UniformBufferObjectReference(buffer.get()), WebGPU::TextureReference(texture.get()) });

renderPass->draw(3);
commandQueue->commitRenderPass(std::move(renderPass));
commandQueue->present();

The first argument to the setResources() call identifies which set to populate with the supplied resources.

One tenant of the low-level graphics APIs is that, if you’ve enabled double buffering (or
triple buffering), the GPU is executing one frame at the same time you are recording the
next frame. This often means that you need duplicate resources so the CPU and GPU don’t step
on each other’s toes. However, platforms have platform-specific requirements about whether
or not they can be double / triple buffered, and we don’t want to expose this to the Web for
fear of badly-authored programs.

To solve this, resources are reference counted, and the return type of getBuffer() is an
RAII type called BufferHolder which increments and decrements the reference count
automatically. The reference count is also incremented and decremented when the GPU is using
the resource in a Pass. When the reference count reaches 0, the resource isn’t destroyed;
instead, it’s simply moved to a “free list” which getBuffer() may pull from. Therefore,
applications don’t need to know whether the frame buffer is double buffered or triple
buffered; they can just getBuffer() each frame, and the correct number of buffers will be
created and recycled.

{

auto buffer = device->getBuffer(bufferSize); These get recycled
… populate the buffer …
auto renderPass = commandQueue->createRenderPass(nullptr);
renderPass->setRenderState(renderState);
renderPass->setResources(0, { WebGPU::UniformBufferObjectReference(buffer.get()) });

renderPass->draw(…);
commandQueue->commitRenderPass(std::move(renderPass));

}
commandQueue->present();

In Direct3D and Vulkan, vertex buffers and index buffers are not part of the resource sets
mentioned above. Instead, you tell the render state about the shape of the vertex and index
buffers, and you swap them out independently in the draw loop. Metal and Vulkan have almost
identical API to specify this shape of the vertex buffers, so I’ve mostly copied it. In this
example, we have two vertex attributes, a vec2 and a vec3, which both come from the same
buffer:

{ Attribute format, offset within stride, buffer to pull from }
std::vector<WebGPU::RenderState::VertexAttribute> vertexAttributes = { {WebGPU::RenderState::VertexFormat::Float2, 0, 0}, {WebGPU::RenderState::VertexFormat::Float3, sizeof(float) * 2, 0} };
A single vertex buffer, with a stride of 5 floats
auto& renderState = device->getRenderState(vertexShader, "main", fragmentShader, "main", { sizeof(float) * 5 }, vertexAttributes, resourceTypes, nullptr);

… later, in the draw() function …

auto renderPass = commandQueue->createRenderPass(nullptr);
renderPass->setRenderState(renderState);
renderPass->setVertexAttributeBuffers({ vertexBuffer.get() }); The one vertex buffer which both attributes pull from
renderPass->setResources(…);

renderPass->draw(…);
commandQueue->commitRenderPass(std::move(renderPass));
commandQueue->present();

You can also tell the RenderState about how many render targets you have and their formats,
and then when you create the RenderPass, you specify the specific textures you want to
render into.

std::vector<WebGPU::PixelFormat> colorPixelFormats = { WebGPU::PixelFormat::RGBA8, WebGPU::PixelFormat::RGBA8 }; Two render targets, with these formats
auto& renderState = device->getRenderState(vertexShader, "main", fragmentShader, "main", vertexBufferStrides, vertexAttributes, resourceTypes, &colorPixelFormats);

… later, in the draw() function …

std::vector<std::reference_wrapper<WebGPU::Texture>> destinationTextures = { texture1->get(), texture2->get() };
auto renderPass = commandQueue->createRenderPass(&destinationTextures);
renderPass->setRenderState(renderState);

renderPass->draw(…);
commandQueue->commitRenderPass(std::move(renderPass));

Now, draw one of the textures to the screen. Note that no synchronization is necessary here!
auto renderPass = commandQueue->createRenderPass(nullptr);
renderPass->setRenderState(renderState2);
renderPass->setResources(0, { WebGPU:: TextureReference(texture1.get()) });

renderPass->draw(…);
commandQueue->commitRenderPass(std::move(renderPass));
commandQueue->present();

Just like how in Metal has Render Encoders and Compute Encoders, WebGPU has RenderPasses
and ComputePasses.

auto& computeState = device->getComputeState(computeShader, "main", resourceTypes);

auto computePass = commandQueue->createComputePass();
computePass->setComputeState(computeState);
computePass->setResources(0, resources);
computePass->dispatch(width, height, depth);
commandQueue->commitComputePass(std::move(computePass));

Now, draw the resources we just computed. Note that no synchronization is necessary here!
auto renderPass = commandQueue->createRenderPass(nullptr);
renderPass->setRenderState(renderState);
renderPass->setResources(0, resources });

renderPass->draw(…);
commandQueue->commitRenderPass(std::move(renderPass));
commandQueue->present();

There are also two other types of passes: one that corresponds to a Metal blit encoder, and
one that allows the CPU to change the contents of GPU buffers and textures. This last kind
of pass is a little interesting: you can’t just change the contents of a buffer at any time
you feel like it, because that resource might be in use by the GPU. Therefore, we need to do
the same kind of synchronization that we already do at render pass boundaries.

In addition, both Vulkan and Direct3D have a concept of a memory heap. A resource might
exist inside a heap which is fast, but invisible from the CPU, or in a heap which is slow,
but visible by the CPU. Certain operations are not possible from some types of images (e.g.
non-tiled textures may not be able to be sampled from). The usual way to get around this
problem is to have two resources: a slow staging resource which the CPU can see, and a fast
resource which the CPU can’t see. Uploading data is a two-pass algorithm, where the CPU
memcpy()s into the slow staging resource, and then a blit command is enqueued on the GPU to
copy the contents of the staging resource to the real resource. This requires that the
upload have access to the commandQueue so it can possibly enqueue a blit between the staging
and real resources. Therefore, a pass is the right level of abstraction for these facilities.

std::queue<boost::unique_future<std::vector<uint8_t>>> futureQueue; Promises for data downloads from the GPU

… later, in the draw() function …

See if any of the previously-enqueued downloads are finished
while (!futureQueue.empty() && futureQueue.front(). has_value()) {

std::vector<uint8_t>& data = futureQueue.front().get();
Use the downloaded data
futureQueue.pop();

}

auto hostAccessPass = commandQueue->createHostAccessPass();
hostAccessPass->overwriteBuffer(buffer->get(), bufferContents); Upload data to a resource

futureQueue.emplace(hostAccessPass->getBufferContents(buffer->get()));
commandQueue->commitHostAccessPass(std::move(hostAccessPass));

You can also issue copy commands between resources entirely on the GPU:

auto blitPass = commandQueue->createBlitPass();
blitPass->copyTexture(source->get(), destination->get(), sourceX, sourceY, destinationX, destinationY, width, height);
commandQueue->commitBlitPass(std::move(blitPass));

  • Scripts/webkitpy/style/checker.py:
  • WebGPUAPIStructure/Example/Example.cpp: Added.

(readFile):
(drawWebGPU):
(wWinMain):
(MyRegisterClass):
(InitInstance):
(WndProc):

  • WebGPUAPIStructure/Example/Example.h: Added.
  • WebGPUAPIStructure/Example/Example.ico: Added.
  • WebGPUAPIStructure/Example/Example.rc: Added.
  • WebGPUAPIStructure/Example/Example.vcxproj: Added.
  • WebGPUAPIStructure/Example/Example.vcxproj.filters: Added.
  • WebGPUAPIStructure/Example/Example.vcxproj.user: Added.
  • WebGPUAPIStructure/Example/resource.h: Added.
  • WebGPUAPIStructure/Example/small.ico: Added.
  • WebGPUAPIStructure/Example/stdafx.cpp: Added.
  • WebGPUAPIStructure/Example/stdafx.h: Added.
  • WebGPUAPIStructure/Example/targetver.h: Added.
  • WebGPUAPIStructure/WebGPU-Common/WebGPU-Common.vcxproj: Added.
  • WebGPUAPIStructure/WebGPU-Common/WebGPU-Common.vcxproj.filters: Added.
  • WebGPUAPIStructure/WebGPU-Common/WebGPU.cpp: Added.

(WebGPU::BufferHolder::BufferHolder):
(WebGPU::BufferHolder::~BufferHolder):
(WebGPU::TextureHolder::TextureHolder):
(WebGPU::TextureHolder::~TextureHolder):
(WebGPU::SamplerHolder::SamplerHolder):
(WebGPU::SamplerHolder::~SamplerHolder):

  • WebGPUAPIStructure/WebGPU-Common/WebGPU.h: Added.

(WebGPU::Queue::~Queue):
(WebGPU::RenderState::~RenderState):
(WebGPU::ComputeState::~ComputeState):
(WebGPU::Buffer::~Buffer):
(WebGPU::Texture::~Texture):
(WebGPU::Sampler::~Sampler):
(WebGPU::TextureReference::TextureReference):
(WebGPU::TextureReference::get const):
(WebGPU::SamplerReference::SamplerReference):
(WebGPU::SamplerReference::get const):
(WebGPU::UniformBufferObjectReference::UniformBufferObjectReference):
(WebGPU::UniformBufferObjectReference::get const):
(WebGPU::ShaderStorageBufferObjectReference::ShaderStorageBufferObjectReference):
(WebGPU::ShaderStorageBufferObjectReference::get const):
(WebGPU::RenderPass::~RenderPass):
(WebGPU::ComputePass::~ComputePass):
(WebGPU::BlitPass::~BlitPass):
(WebGPU::HostAccessPass::~HostAccessPass):
(WebGPU::BufferHolder::get):
(WebGPU::TextureHolder::get):
(WebGPU::SamplerHolder::get):
(WebGPU::Device::~Device):

  • WebGPUAPIStructure/WebGPU-Vulkan/BlitPassImpl.cpp: Added.

(WebGPU::BlitPassImpl::BlitPassImpl):
(WebGPU::BlitPassImpl::copyTexture):

  • WebGPUAPIStructure/WebGPU-Vulkan/BlitPassImpl.h: Added.
  • WebGPUAPIStructure/WebGPU-Vulkan/BufferImpl.cpp: Added.

(WebGPU::BufferImpl::BufferImpl):
(WebGPU::BufferImpl::decrementReferenceCount):

  • WebGPUAPIStructure/WebGPU-Vulkan/BufferImpl.h: Added.

(WebGPU::BufferImpl::getBuffer const):
(WebGPU::BufferImpl::getDeviceMemory const):
(WebGPU::BufferImpl::incrementReferenceCount):
(WebGPU::BufferImpl::getLength const):

  • WebGPUAPIStructure/WebGPU-Vulkan/ComputePassImpl.cpp: Added.

(WebGPU::ComputePassImpl::ComputePassImpl):
(WebGPU::ComputePassImpl::setComputeState):
(WebGPU::ComputePassImpl::setResources):
(WebGPU::ComputePassImpl::dispatch):

  • WebGPUAPIStructure/WebGPU-Vulkan/ComputePassImpl.h: Added.
  • WebGPUAPIStructure/WebGPU-Vulkan/ComputeStateImpl.cpp: Added.

(WebGPU::ComputeStateImpl::ComputeStateImpl):

  • WebGPUAPIStructure/WebGPU-Vulkan/ComputeStateImpl.h: Added.

(WebGPU::ComputeStateImpl::getPipeline const):
(WebGPU::ComputeStateImpl::getPipelineLayout const):
(WebGPU::ComputeStateImpl::getDescriptorSetLayouts const):

  • WebGPUAPIStructure/WebGPU-Vulkan/DeviceImpl.cpp: Added.

(WebGPU::Device::create):
(WebGPU::convertPixelFormat):
(WebGPU::convertFormat):
(WebGPU::debugReport):
(WebGPU::DeviceImpl::DeviceImpl):
(WebGPU::DeviceImpl::getCommandQueue):
(WebGPU::DeviceImpl::prepareShader):
(WebGPU::DeviceImpl::createPipelineLayout):
(WebGPU::DeviceImpl::createCompatibleRenderPass):
(WebGPU::convertVertexFormat):
(WebGPU::DeviceImpl::getRenderState):
(WebGPU::DeviceImpl::getComputeState):
(WebGPU::DeviceImpl::getBuffer):
(WebGPU::DeviceImpl::returnBuffer):
(WebGPU::DeviceImpl::getTexture):
(WebGPU::DeviceImpl::returnTexture):
(WebGPU::DeviceImpl::getSampler):
(WebGPU::DeviceImpl::returnSampler):
(WebGPU::DeviceImpl::~DeviceImpl):

  • WebGPUAPIStructure/WebGPU-Vulkan/DeviceImpl.h: Added.

(WebGPU::DeviceImpl::UniqueDebugReportCallbackEXT::UniqueDebugReportCallbackEXT):
(WebGPU::DeviceImpl::UniqueDebugReportCallbackEXT::operator=):
(WebGPU::DeviceImpl::UniqueDebugReportCallbackEXT::~UniqueDebugReportCallbackEXT):
(WebGPU::DeviceImpl::UniqueDebugReportCallbackEXT::destroy):
(WebGPU::DeviceImpl::TextureParameters::operator== const):
(WebGPU::DeviceImpl::TextureParametersHash::operator() const):

  • WebGPUAPIStructure/WebGPU-Vulkan/HostAccessPassImpl.cpp: Added.

(WebGPU::HostAccessPassImpl::HostAccessPassImpl):
(WebGPU::HostAccessPassImpl::overwriteBuffer):
(WebGPU::HostAccessPassImpl::getBufferContents):
(WebGPU::HostAccessPassImpl::execute):

  • WebGPUAPIStructure/WebGPU-Vulkan/HostAccessPassImpl.h: Added.

(WebGPU::HostAccessPassImpl::getFinishedEvent const):

  • WebGPUAPIStructure/WebGPU-Vulkan/PassImpl.cpp: Added.

(WebGPU::PassImpl::PassImpl):
(WebGPU::ResourceVisitor::operator()):
(WebGPU::ResourceVisitor::getBindings const):
(WebGPU::ResourceVisitor::releaseWriteDescriptorSets):
(WebGPU::ResourceVisitor::getDescriptorImageInfos const):
(WebGPU::ResourceVisitor::getDescriptorBufferInfos const):
(WebGPU::ResourceVisitor::getBuffers const):
(WebGPU::ResourceVisitor::getTextures const):
(WebGPU::ResourceVisitor::getSamplers const):
(WebGPU::ResourceVisitor::getImageCount const):
(WebGPU::ResourceVisitor::getSamplerCount const):
(WebGPU::ResourceVisitor::getUniformBufferCount const):
(WebGPU::ResourceVisitor::getStorageBufferCount const):
(WebGPU::PassImpl::setResources):
(WebGPU::PassImpl::insertBuffer):
(WebGPU::PassImpl::insertTexture):
(WebGPU::PassImpl::insertSampler):

  • WebGPUAPIStructure/WebGPU-Vulkan/PassImpl.h: Added.

(WebGPU::PassImpl::getCommandBuffer const):
(WebGPU::PassImpl::iterateBuffers):
(WebGPU::PassImpl::iterateTextures):
(WebGPU::PassImpl::ResourceReference::ResourceReference):
(WebGPU::PassImpl::ResourceReference::~ResourceReference):
(WebGPU::PassImpl::ResourceReference::operator=):
(WebGPU::PassImpl::ResourceReference::operator== const):
(WebGPU::PassImpl::ResourceReference::get const):
(WebGPU::PassImpl::ResourceReference::release):
(WebGPU::PassImpl::ResourceReferenceHash::operator() const):

  • WebGPUAPIStructure/WebGPU-Vulkan/QueueImpl.cpp: Added.

(WebGPU::QueueImpl::QueueImpl):
(WebGPU::QueueImpl::prepareCurrentFrame):
(WebGPU::QueueImpl::createSpecificRenderPass):
(WebGPU::QueueImpl::createFramebuffer):
(WebGPU::QueueImpl::createRenderPass):
(WebGPU::QueueImpl::commitRenderPass):
(WebGPU::QueueImpl::createComputePass):
(WebGPU::QueueImpl::commitComputePass):
(WebGPU::QueueImpl::createBlitPass):
(WebGPU::QueueImpl::commitBlitPass):
(WebGPU::QueueImpl::createHostAccessPass):
(WebGPU::QueueImpl::commitHostAccessPass):
(WebGPU::QueueImpl::present):
(WebGPU::QueueImpl::commitPass):
(WebGPU::QueueImpl::synchronizeResources):
(WebGPU::QueueImpl::~QueueImpl):

  • WebGPUAPIStructure/WebGPU-Vulkan/QueueImpl.h: Added.
  • WebGPUAPIStructure/WebGPU-Vulkan/RenderPassImpl.cpp: Added.

(WebGPU::RenderPassImpl::RenderPassImpl):
(WebGPU::RenderPassImpl::setRenderState):
(WebGPU::RenderPassImpl::setVertexAttributeBuffers):
(WebGPU::RenderPassImpl::setResources):
(WebGPU::RenderPassImpl::setViewport):
(WebGPU::RenderPassImpl::setScissorRect):
(WebGPU::RenderPassImpl::draw):

  • WebGPUAPIStructure/WebGPU-Vulkan/RenderPassImpl.h: Added.
  • WebGPUAPIStructure/WebGPU-Vulkan/RenderStateImpl.cpp: Added.

(WebGPU::RenderStateImpl::RenderStateImpl):

  • WebGPUAPIStructure/WebGPU-Vulkan/RenderStateImpl.h: Added.

(WebGPU::RenderStateImpl::getPipeline const):
(WebGPU::RenderStateImpl::getPipelineLayout const):
(WebGPU::RenderStateImpl::getDescriptorSetLayouts const):

  • WebGPUAPIStructure/WebGPU-Vulkan/SamplerImpl.cpp: Added.

(WebGPU::SamplerImpl::SamplerImpl):
(WebGPU::SamplerImpl::decrementReferenceCount):

  • WebGPUAPIStructure/WebGPU-Vulkan/SamplerImpl.h: Added.

(WebGPU::SamplerImpl::getSampler):
(WebGPU::SamplerImpl::incrementReferenceCount):
(WebGPU::SamplerImpl::getFilter):
(WebGPU::SamplerImpl::getMipmapMode):
(WebGPU::SamplerImpl::getAddressMode):

  • WebGPUAPIStructure/WebGPU-Vulkan/TextureImpl.cpp: Added.

(WebGPU::TextureImpl::TextureImpl):
(WebGPU::TextureImpl::decrementReferenceCount):

  • WebGPUAPIStructure/WebGPU-Vulkan/TextureImpl.h: Added.

(WebGPU::TextureImpl::getImage const):
(WebGPU::TextureImpl::getImageView const):
(WebGPU::TextureImpl::getFormat const):
(WebGPU::TextureImpl::incrementReferenceCount):
(WebGPU::TextureImpl::getWidth const):
(WebGPU::TextureImpl::getHeight const):
(WebGPU::TextureImpl::getTransferredToGPU const):
(WebGPU::TextureImpl::setTransferredToGPU):

  • WebGPUAPIStructure/WebGPU-Vulkan/WebGPU-Vulkan.vcxproj: Added.
  • WebGPUAPIStructure/WebGPU-Vulkan/WebGPU-Vulkan.vcxproj.filters: Added.
  • WebGPUAPIStructure/WebGPU.sln: Added.
4:32 PM Changeset in webkit [224064] by Nikita Vasilyev
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: Styles Redesign: Make "Style Attribute" text darker and non-focusable
https://bugs.webkit.org/show_bug.cgi?id=178837

Reviewed by Brian Burg.

  • UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.css:

(.spreadsheet-css-declaration .selector.style-attribute):
Use the same shade of gray as in the "Inherited from" sections.

  • UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:

(WI.SpreadsheetCSSStyleDeclarationSection.prototype.initialLayout):
Only editable selectors should be focusable.

4:30 PM Changeset in webkit [224063] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

Call setFullscreenClient on iOS.
https://bugs.webkit.org/show_bug.cgi?id=178089

Patch by Jeremy Jones <jeremyj@apple.com> on 2017-10-26
Reviewed by Simon Fraser.

This was only being set for MacOS.

  • UIProcess/ios/WKContentView.mm:

(-[WKContentView _commonInitializationWithProcessPool:configuration:]):

4:28 PM Changeset in webkit [224062] by keith_miller@apple.com
  • 2 edits in trunk/Source/WebCore

[Payment Request] Restrict API use to secure, same-origin frames
https://bugs.webkit.org/show_bug.cgi?id=178887

Patch by Andy Estes <aestes@apple.com> on 2017-10-26
Reviewed by Tim Horton.

Reuse the access checks from Apple Pay to restrict PaymentRequest API usage to secure frames
in the same origin as the main frame.

Progresses active-document-cross-origin.https.sub.html and
active-document-same-origin.https.html from web-platform-tests. Regresses basic.https.html
since the allowpaymentrequest <iframe> attribute is not yet implemented.

  • Modules/applepay/ApplePaySession.cpp:

(WebCore::ApplePaySession::create):
(WebCore::ApplePaySession::supportsVersion):
(WebCore::ApplePaySession::canMakePayments):
(WebCore::ApplePaySession::canMakePaymentsWithActiveCard):
(WebCore::ApplePaySession::openPaymentSetup):
(WebCore::isSecure): Deleted.
(WebCore::canCallApplePaySessionAPIs): Deleted.

  • Modules/applepay/PaymentSession.cpp: Added.

(WebCore::isSecure):
(WebCore::PaymentSession::canCreateSession):

  • Modules/applepay/PaymentSession.h:
  • Modules/paymentrequest/PaymentHandler.cpp:

(WebCore::PaymentHandler::canCreateSession):

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

(WebCore::PaymentRequest::create):

  • WebCore.xcodeproj/project.pbxproj:
4:25 PM Changeset in webkit [224061] by aestes@apple.com
  • 11 edits
    1 add in trunk

[Payment Request] Restrict API use to secure, same-origin frames
https://bugs.webkit.org/show_bug.cgi?id=178887

Reviewed by Tim Horton.

LayoutTests/imported/w3c:

The allowpaymentrequest <iframe> attribute is not yet implemented, so the regression in basic.https.html is expected.

  • web-platform-tests/payment-request/allowpaymentrequest/active-document-cross-origin.https.sub-expected.txt:
  • web-platform-tests/payment-request/allowpaymentrequest/active-document-same-origin.https-expected.txt:
  • web-platform-tests/payment-request/allowpaymentrequest/basic.https-expected.txt:

Source/WebCore:

Reuse the access checks from Apple Pay to restrict PaymentRequest API usage to secure frames
in the same origin as the main frame.

Progresses active-document-cross-origin.https.sub.html and
active-document-same-origin.https.html from web-platform-tests. Regresses basic.https.html
since the allowpaymentrequest <iframe> attribute is not yet implemented.

  • Modules/applepay/ApplePaySession.cpp:

(WebCore::ApplePaySession::create):
(WebCore::ApplePaySession::supportsVersion):
(WebCore::ApplePaySession::canMakePayments):
(WebCore::ApplePaySession::canMakePaymentsWithActiveCard):
(WebCore::ApplePaySession::openPaymentSetup):
(WebCore::isSecure): Deleted.
(WebCore::canCallApplePaySessionAPIs): Deleted.

  • Modules/applepay/PaymentSession.cpp: Added.

(WebCore::isSecure):
(WebCore::PaymentSession::canCreateSession):

  • Modules/applepay/PaymentSession.h:
  • Modules/paymentrequest/PaymentHandler.cpp:

(WebCore::PaymentHandler::canCreateSession):

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

(WebCore::PaymentRequest::create):

  • WebCore.xcodeproj/project.pbxproj:
4:07 PM Changeset in webkit [224060] by jmarcell@apple.com
  • 7 edits in branches/safari-604-branch/Source

Versioning.

3:57 PM Changeset in webkit [224059] by commit-queue@webkit.org
  • 7 edits
    4 adds in trunk

Add service worker handle fetch support for all subresource requests
https://bugs.webkit.org/show_bug.cgi?id=178769

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

Source/WebCore:

Test: http/tests/workers/service/image-fetch.html

Moving DocumentThreadableLoader logic to CachedResourceLoader to apply it for all resource loads.
Setting the selected service worker identifier for subresource only at the moment.

Testing is limited to images, future wpt tests should cover other subresource cases.

  • loader/DocumentThreadableLoader.cpp:

(WebCore::DocumentThreadableLoader::DocumentThreadableLoader):

  • loader/cache/CachedResourceLoader.cpp:

(WebCore::CachedResourceLoader::prepareFetch):

  • loader/cache/CachedResourceRequest.cpp:

(WebCore::CachedResourceRequest::setSelectedServiceWorkerIdentifierIfNeeded):

  • loader/cache/CachedResourceRequest.h:

LayoutTests:

  • http/tests/workers/service/image-fetch-expected.txt: Added.
  • http/tests/workers/service/image-fetch.html: Added.
  • http/tests/workers/service/resources/image-fetch-worker.js: Added.

(event.event.request.url.indexOf):
(event.event.request.url.endsWith):

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

(done):
(async.loadedImage):
(async.erroredImage):
(async.logStatus):
(async.test):

3:55 PM Changeset in webkit [224058] by jmarcell@apple.com
  • 1 copy in tags/Safari-604.4.6

Tag Safari-604.4.6.

3:44 PM Changeset in webkit [224057] by eric.carlson@apple.com
  • 24 edits in trunk

NowPlayingInfo should contain a unique identifier
https://bugs.webkit.org/show_bug.cgi?id=178872

Reviewed by Jer Noble.

Source/WebCore:

Updated TestWebKitAPI/Tests/WebKitCocoa/NowPlayingControlsTests.mm.

  • platform/audio/PlatformMediaSessionManager.h:

(WebCore::PlatformMediaSessionManager::lastUpdatedNowPlayingInfoUniqueIdentifier const): New.

  • platform/audio/ios/MediaSessionManagerIOS.h:
  • platform/audio/ios/MediaSessionManagerIOS.mm:

(WebCore::MediaSessionManageriOS::updateNowPlayingInfo): Ditto.

  • platform/audio/mac/MediaSessionManagerMac.h:
  • platform/audio/mac/MediaSessionManagerMac.mm:

(WebCore::MediaSessionManagerMac::updateNowPlayingInfo): Ditto. Don't leak CFString.

  • platform/mac/MediaRemoteSoftLink.cpp: Softlink kMRMediaRemoteNowPlayingInfoUniqueIdentifier.
  • platform/mac/MediaRemoteSoftLink.h:

Source/WebKit:

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _requestActiveNowPlayingSessionInfo:]): Take a completion handler.
(-[WKWebView _requestActiveNowPlayingSessionInfo]): Deleted.
(-[WKWebView _handleActiveNowPlayingSessionInfoResponse:title:duration:elapsedTime:]): Deleted.

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

(WebKit::WebPageProxy::requestActiveNowPlayingSessionInfo): Ditto.
(WebKit::WebPageProxy::nowPlayingInfoCallback): Lookup and call completion handler.
(WebKit::WebPageProxy::handleActiveNowPlayingSessionInfoResponse const): Deleted.

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

(WebKit::PageClientImpl::handleActiveNowPlayingSessionInfoResponse): Deleted.

  • UIProcess/mac/PageClientImplMac.h:
  • UIProcess/mac/PageClientImplMac.mm:

(WebKit::PageClientImpl::handleActiveNowPlayingSessionInfoResponse): Deleted.

  • WebProcess/WebPage/Cocoa/WebPageCocoa.mm:

(WebKit::WebPage::requestActiveNowPlayingSessionInfo): Take callback ID. Pass unique ID.

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

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/NowPlayingControlsTests.mm:

(-[NowPlayingTestWebView hasActiveNowPlayingSession]): Use completion handler.
(TestWebKitAPI::TEST): Cleanup tests. Use new API.
(-[NowPlayingTestWebView waitForNowPlayingInfoToChange]): Deleted.

3:42 PM Changeset in webkit [224056] by keith_miller@apple.com
  • 3 edits in trunk/Source/WebCore

Unreviewed, iOS build fix.

  • SourcesMac.txt:
  • WebCore.xcodeproj/project.pbxproj:
3:36 PM Changeset in webkit [224055] by mark.lam@apple.com
  • 8 edits
    1 add in trunk

JSRopeString::RopeBuilder::append() should check for overflows.
https://bugs.webkit.org/show_bug.cgi?id=178385
<rdar://problem/35027468>

Reviewed by Saam Barati.

JSTests:

  • stress/regress-178385.js: Added.

Source/JavaScriptCore:

  1. Made RopeString check for overflow like the Checked class does.
  2. Added a missing overflow check in objectProtoFuncToString().
  • runtime/JSString.cpp:

(JSC::JSRopeString::RopeBuilder<RecordOverflow>::expand):
(JSC::JSRopeString::RopeBuilder::expand): Deleted.

  • runtime/JSString.h:
  • runtime/ObjectPrototype.cpp:

(JSC::objectProtoFuncToString):

  • runtime/Operations.h:

(JSC::jsStringFromRegisterArray):
(JSC::jsStringFromArguments):

Source/WTF:

  • wtf/CheckedArithmetic.h:
3:25 PM Changeset in webkit [224054] by keith_miller@apple.com
  • 4 edits in trunk/Source/WebCore

Move Mac specific files to unified sources
https://bugs.webkit.org/show_bug.cgi?id=178883

Rubber-stamped by Tim Horton.

  • SourcesCocoa.txt:
  • SourcesMac.txt:
  • WebCore.xcodeproj/project.pbxproj:
3:02 PM Changeset in webkit [224053] by rniwa@webkit.org
  • 9 edits in trunk/Source/WebCore

DidMoveToNewDocumentAssertionScope shouldn't be necessary
https://bugs.webkit.org/show_bug.cgi?id=178836
<rdar://problem/35008876>

Reviewed by Antti Koivisto.

DidMoveToNewDocumentAssertionScope was introduced in r217972 to replace an existing assertion to make sure
Node::didMoveToNewDocument is always called by its overrides in Node's subclasses. However, we can ensure
better Node::didMoveToNewDocument is always called if we called it directly in Node::moveTreeToNewScope.

Because only subclasses of Element and ShadowRoot override Node::didMoveToNewDocument and we already have
a specialized code path to adopt a ShadowRoot to a new document, this refactoring eliminates the need for
having a virtual function on Node at all.

Hence this patch names Node::didMoveToNewDocument to Node::moveToNewDocument and makes it non-virtual,
splits ShadowRoot::didMoveToNewDocument into moveShadowRootToNewParentScope and moveShadowRootToNewDocument,
and removes DidMoveToNewDocumentAssertionScope completely.

No new tests since there should be no behavioral change.

  • dom/Document.cpp:

(WebCore::Document::moveNodeIteratorsToNewDocumentSlowCase): Renamed from moveNodeIteratorsToNewDocument.

  • dom/Document.h:

(WebCore::Document::moveNodeIteratorsToNewDocument): Inlined the check for emptiness of m_nodeIterators to
avoid keep calling moveNodeIteratorsToNewDocumentSlowCase on every single node getting moved.

  • dom/Element.cpp:

(WebCore::Element::didMoveToNewDocument): Removed the call to Node::didMoveToNewDocument since this is the
base virtual function now.

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

(WebCore::DidMoveToNewDocumentAssertionScope::DidMoveToNewDocumentAssertionScope): Deleted.
(WebCore::DidMoveToNewDocumentAssertionScope::~DidMoveToNewDocumentAssertionScope): Deleted.
(WebCore::DidMoveToNewDocumentAssertionScope::didRecieveCall): Deleted.
(WebCore::moveNodeToNewDocument): Deleted.
(WebCore::Node::moveShadowTreeToNewDocument): Made this a member function of Node since it needs to call
moveNodeToNewDocument, which is private to Node.
(WebCore::Node::moveTreeToNewScope): Removed the release assert for the root node since the same check
exists inside traverseSubtreeToUpdateTreeScope. Also removed the release assertion for checking that
node's old document matches the old document since document() simply calls treeScope().documentScope()
and we're already release-asserting that the old scope of a node matches the old scope we know of.
We release-assert that the old tree scope's document didn't change after the traversal instead. Finally,
replaced a bunch of RELEASE_ASSERT with RELEASE_ASSERT_WITH_SECURITY_IMPLICATION.
(WebCore::Node::moveNodeToNewDocument): Renamed from didMoveToNewDocument. Moved the code related to
mutation observers inside hasRareData() check, and moved the the code to move event listeners inside
eventTargetData() check both for clarity, and avoid doing the work for every single node being moved.
Finally, call the old didMoveToNewDocument when "this" is an Element.

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

(WebCore::ShadowRoot::moveShadowRootToNewParentScope): Added. Extracted from didMoveToNewDocument.
(WebCore::ShadowRoot::moveShadowRootToNewDocument): Renamed from didMoveToNewDocument. We now
release-assert that parent tree scope's document matches the new document if any.

  • dom/ShadowRoot.h:
3:00 PM Changeset in webkit [224052] by rniwa@webkit.org
  • 3 edits in trunk/LayoutTests

LayoutTest http/tests/security/clipboard/copy-paste-html-cross-origin-iframe-across-origin.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=178828

Reviewed by Wenson Hsieh.

When the pasted content's iframe's body isn't available, wait for load event.

  • http/tests/security/clipboard/resources/content-to-copy.html: Always wait for load event before notifying

the parent page that it had finish loading.

  • http/tests/security/clipboard/resources/subdirectory/paste-html.html:
2:41 PM Changeset in webkit [224051] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore

Implement ServiceWorkerContainer getRegistration
https://bugs.webkit.org/show_bug.cgi?id=178882

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

Replace rejection promise by resolving the promise with a null value.
This helps in running WPT tests as WPT tests usually check for registered service workers before running tests.
For WTR, there should be no registered service worker anyway.

  • workers/service/ServiceWorkerContainer.cpp:

(WebCore::ServiceWorkerContainer::getRegistration):

  • workers/service/ServiceWorkerContainer.h:
2:36 PM Changeset in webkit [224050] by mmaxfield@apple.com
  • 4 edits in trunk/LayoutTests

[iOS] Update expected results for platform/ios/ios/fast/text/opticalFontWith*.html
https://bugs.webkit.org/show_bug.cgi?id=178885

Unreviewed.

  • platform/ios/TestExpectations:
  • platform/ios/platform/ios/ios/fast/text/opticalFontWithTextStyle-expected.txt:
  • platform/ios/platform/ios/ios/fast/text/opticalFontWithWeight-expected.txt:
2:24 PM Changeset in webkit [224049] by mmaxfield@apple.com
  • 3 edits
    1 add in trunk/LayoutTests

[iOS] Update expected results for fast/text/international/complex-character-based-fallback.html
https://bugs.webkit.org/show_bug.cgi?id=178884
<rdar://problem/33602192>

Unreviewed.

Test gardening.

  • platform/ios/TestExpectations:
  • platform/ios/fast/text/international/complex-character-based-fallback-expected.png: Added.
  • platform/ios/fast/text/international/complex-character-based-fallback-expected.txt:
2:07 PM Changeset in webkit [224048] by mitz@apple.com
  • 2 edits in trunk/Source/WebCore

Account for Mail’s WebMessageDocument class being renamed
https://bugs.webkit.org/show_bug.cgi?id=178881

Reviewed by Sam Weinig.

  • editing/cocoa/HTMLConverter.mm:

(_WebMessageDocumentClass): Look up the class by its new name. No longer look it up by the

old old name, because TOT WebKit isn’t going to be used by versions of Mail that have that name.

1:57 PM Changeset in webkit [224047] by Adrian Perez de Castro
  • 3 edits
    1 add in trunk

[WPE] Use proper shared object versioning for libWPEWebKit.so
https://bugs.webkit.org/show_bug.cgi?id=178878

Reviewed by Michael Catanzaro.

Move the CALCULATE_LIBRARY_VERSIONS_FROM_LIBTOOL_TRIPLE() to a new CMake include file,
and use it both for the GTK+ and WPE ports. Also add a SET_PROJECT_VERSION() macro to
unify setting the PROJECT_VERSION* family of variables.

  • Source/cmake/OptionsGTK.cmake: Use the common macros imported from VersioningUtils.cmake.
  • Source/cmake/OptionsWPE.cmake: Properly assign a shared object version to libWPEWebKit.so,

using the common macros from VersioningUtils.cmake.

  • Source/cmake/VersioningUtils.cmake: Added.
1:45 PM Changeset in webkit [224046] by jmarcell@apple.com
  • 8 edits
    1 delete in tags/Safari-605.1.12

Revert r223691. rdar://problem/35205048

1:22 PM Changeset in webkit [224045] by commit-queue@webkit.org
  • 5 edits in trunk/Source/WebCore

Remove FrameView::serviceScriptedAnimations and Document::serviceScriptedAnimations
https://bugs.webkit.org/show_bug.cgi?id=178879

Patch by Antoine Quint <Antoine Quint> on 2017-10-26
Reviewed by Dean Jackson.

There are no call sites for FrameView::serviceScriptedAnimations() and that method is the
only call site for Document::serviceScriptedAnimations(), so both can go.

  • dom/Document.cpp:

(WebCore::Document::serviceScriptedAnimations): Deleted.

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

(WebCore::FrameView::serviceScriptedAnimations): Deleted.

  • page/FrameView.h:
1:22 PM Changeset in webkit [224044] by Ryan Haddad
  • 2 edits in trunk/Tools

[MediaStream] Clear cached gUM prompt state
https://bugs.webkit.org/show_bug.cgi?id=178754
<rdar://problem/32742356>

Unreviewed, fix a flakey test.

Patch by Eric Carlson <eric.carlson@apple.com> on 2017-10-26

  • TestWebKitAPI/Tests/WebKit/GetUserMediaReprompt.mm:

(-[GetUserMediaRepromptTestView haveStream:]): New, check several times for expected state.
(TestWebKitAPI::TEST): Don't assume stream state changes in the page immediately.

1:20 PM Changeset in webkit [224043] by aestes@apple.com
  • 7 edits in trunk

[Payment Request] Enable Payment Request whenever Apple Pay is enabled
https://bugs.webkit.org/show_bug.cgi?id=178880

Reviewed by Tim Horton.

Source/WebKit:

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

(WKPreferencesSetPaymentRequestEnabled): Deleted.
(WKPreferencesGetPaymentRequestEnabled): Deleted.

  • UIProcess/API/C/WKPreferencesRefPrivate.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::updatePreferences):

Tools:

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::resetPreferencesToConsistentValues):

1:17 PM Changeset in webkit [224042] by commit-queue@webkit.org
  • 5 edits in trunk/LayoutTests

http/tests/workers/service/service-worker-cache-api.https.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=178877

Patch by Youenn Fablet <youenn@apple.com> on 2017-10-26
Reviewed by Alex Christensen.

Marking test as PASS/FAIL.
Changing test to finish after 10 seconds.
Beefing up logging to help identifiying flakiness reason.

  • TestExpectations:
  • http/tests/workers/service/resources/service-worker-cache-api-worker.js:

(event.event.respondWith.promise.then):

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

(async.test):

  • http/tests/workers/service/service-worker-cache-api.https-expected.txt:
1:14 PM Changeset in webkit [224041] by Chris Dumez
  • 10 edits
    2 copies
    3 moves in trunk/Source

Bring back SWContextManager abstraction in WebCore
https://bugs.webkit.org/show_bug.cgi?id=178876

Reviewed by Geoffrey Garen.

Bring back SWContextManager abstraction in WebCore. It was killed in <https://trac.webkit.org/changeset/223718> but
is actually useful when the ServiceWorker wants to message the storage process.

Source/WebCore:

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • workers/service/context/SWContextManager.cpp: Added.

(WebCore::SWContextManager::singleton):
(WebCore::SWContextManager::setConnection):
(WebCore::SWContextManager::connection const):
(WebCore::SWContextManager::registerServiceWorkerThread):
(WebCore::SWContextManager::serviceWorkerThreadProxy const):
(WebCore::SWContextManager::postMessageToServiceWorkerGlobalScope):

  • workers/service/context/SWContextManager.h: Copied from Source/WebKit/WebProcess/Storage/ServiceWorkerContextManager.h.

(WebCore::SWContextManager::Connection::~Connection):

Source/WebKit:

  • CMakeLists.txt:
  • DerivedSources.make:
  • StorageProcess/ServiceWorker/WebSWServerConnection.cpp:

(WebKit::WebSWServerConnection::startServiceWorkerContext):
(WebKit::WebSWServerConnection::startFetch):
(WebKit::WebSWServerConnection::postMessageToServiceWorkerGlobalScope):

  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/Storage/WebSWContextManagerConnection.cpp: Renamed from Source/WebKit/WebProcess/Storage/ServiceWorkerContextManager.cpp.

(WebKit::WebSWContextManagerConnection::WebSWContextManagerConnection):
(WebKit::WebSWContextManagerConnection::updatePreferences):
(WebKit::WebSWContextManagerConnection::startServiceWorker):
(WebKit::WebSWContextManagerConnection::startFetch):
(WebKit::WebSWContextManagerConnection::postMessageToServiceWorkerGlobalScope):

  • WebProcess/Storage/WebSWContextManagerConnection.h: Renamed from Source/WebKit/WebProcess/Storage/ServiceWorkerContextManager.h.
  • WebProcess/Storage/WebSWContextManagerConnection.messages.in: Renamed from Source/WebKit/WebProcess/Storage/ServiceWorkerContextManager.messages.in.
  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::didReceiveMessage):
(WebKit::WebProcess::getWorkerContextConnection):

  • WebProcess/WebProcess.h:
1:13 PM Changeset in webkit [224040] by Simon Fraser
  • 2 edits in trunk/Source/WebKitLegacy/mac

Fix issues with WebView subframe painting
https://bugs.webkit.org/show_bug.cgi?id=178842
rdar://problem/34072253

Reviewed by Daniel Bates.

WebHTMLView overrides some NSView internal methods to make sure that AppKit doesn't paint
subframes (WebKit controls subframe painting). The method signature of one of these changed in macOS
High Sierra, so match the new signature.

Also rename the 'rect' param to 'displayRect' to match AppKit code.

  • WebView/WebHTMLView.mm:

(-[WebHTMLView _recursive:displayRectIgnoringOpacity:inGraphicsContext:shouldChangeFontReferenceColor:_recursive:displayRectIgnoringOpacity:inGraphicsContext:CGContext:topView:shouldChangeFontReferenceColor:]):
(-[WebHTMLView _recursive:displayRectIgnoringOpacity:inGraphicsContext:CGContext:shouldChangeFontReferenceColor:_recursive:displayRectIgnoringOpacity:inGraphicsContext:CGContext:topView:shouldChangeFontReferenceColor:]): Deleted.

12:33 PM Changeset in webkit [224039] by jmarcell@apple.com
  • 6 edits
    6 adds in branches/safari-604-branch

Cherry-pick r223974. rdar://problem/35178887

12:19 PM Changeset in webkit [224038] by Joseph Pecoraro
  • 2 edits in trunk/Tools

Add and update some watchlists
https://bugs.webkit.org/show_bug.cgi?id=178304

Reviewed by Simon Fraser.

  • Scripts/webkitpy/common/config/watchlist:
11:58 AM Changeset in webkit [224037] by commit-queue@webkit.org
  • 8 edits
    3 moves
    1 add in trunk/Source/WebCore

[Curl] Rename CurlJobManager to CurlRequestScheduler
https://bugs.webkit.org/show_bug.cgi?id=178775

To match the meaning of the class.
It was originally meant to be more generic purpose, but as
other classes was introduced, the objective of the class is
now only to handle the life cycle of curl requests.

The delegate is also renamed to CurlRequestSchedulerClient.

Patch by Basuke Suzuki <Basuke Suzuki> on 2017-10-26
Reviewed by Alex Christensen.

  • platform/Curl.cmake:
  • platform/network/curl/CurlDownload.cpp:

(WebCore::CurlDownload::~CurlDownload):
(WebCore::CurlDownload::willSendRequest):

  • platform/network/curl/CurlDownload.h:
  • platform/network/curl/CurlRequest.cpp:

(WebCore::CurlRequest::CurlRequest):
(WebCore::CurlRequest::start):
(WebCore::CurlRequest::startWithJobManager):
(WebCore::CurlRequest::cancel):
(WebCore::CurlRequest::callClient):
(WebCore::CurlRequest::didReceiveData):
(WebCore::CurlRequest::didCompleteTransfer):
(WebCore::CurlRequest::invokeDidReceiveResponseForFile):
(WebCore::CurlRequest::invokeDidReceiveResponse):
(WebCore::CurlRequest::completeDidReceiveResponse):
(WebCore::CurlRequest::pausedStatusChanged):
(WebCore::CurlRequest::callDelegate): Deleted.

  • platform/network/curl/CurlRequest.h:

(WebCore::CurlRequest::create):
(WebCore::CurlRequest::setClient):
(WebCore::CurlRequest::setDelegate): Deleted.

  • platform/network/curl/CurlRequestClient.h: Renamed from Source/WebCore/platform/network/curl/CurlRequestDelegate.h.
  • platform/network/curl/CurlRequestScheduler.cpp: Renamed from Source/WebCore/platform/network/curl/CurlJobManager.cpp.

(WebCore::CurlJobList::startJobs):
(WebCore::CurlJobList::finishJobs):
(WebCore::CurlRequestScheduler::singleton):
(WebCore::CurlRequestScheduler::add):
(WebCore::CurlRequestScheduler::cancel):
(WebCore::CurlRequestScheduler::callOnWorkerThread):
(WebCore::CurlRequestScheduler::startThreadIfNeeded):
(WebCore::CurlRequestScheduler::stopThreadIfNoMoreJobRunning):
(WebCore::CurlRequestScheduler::stopThread):
(WebCore::CurlRequestScheduler::updateJobList):
(WebCore::CurlRequestScheduler::workerThread):

  • platform/network/curl/CurlRequestScheduler.h: Renamed from Source/WebCore/platform/network/curl/CurlJobManager.h.

(WebCore::CurlRequestScheduler::~CurlRequestScheduler):

  • platform/network/curl/CurlRequestSchedulerClient.h: Added.

(WebCore::CurlRequestSchedulerClient::~CurlRequestSchedulerClient):

  • platform/network/curl/ResourceHandleCurlDelegate.cpp:

(WebCore::ResourceHandleCurlDelegate::~ResourceHandleCurlDelegate):
(WebCore::ResourceHandleCurlDelegate::setAuthentication):
(WebCore::ResourceHandleCurlDelegate::continueAfterWillSendRequest):

  • platform/network/curl/ResourceHandleCurlDelegate.h:
11:56 AM Changeset in webkit [224036] by Matt Lewis
  • 3 edits in trunk/LayoutTests

Marked webrtc/video-mute.html as flaky.
https://bugs.webkit.org/show_bug.cgi?id=177501

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
  • platform/mac-wk2/TestExpectations:
11:54 AM Changeset in webkit [224035] by ap@apple.com
  • 6 edits
    1 delete in trunk/Source/WebKit

Remove deprecated WebKit symbols
https://bugs.webkit.org/show_bug.cgi?id=178875
rdar://problem/31139070

Reviewed by Dan Bernstein.

  • PlatformMac.cmake:
  • Shared/API/c/WKDeprecatedFunctions.cpp:

(WKContextSetProcessModel):
(WKPageGroupCopyIdentifier): Deleted.
(WKPageGroupAddUserContentFilter): Deleted.
(WKPageGroupRemoveUserContentFilter): Deleted.

  • UIProcess/API/C/WKPageGroup.h:
  • UIProcess/API/Cocoa/_WKVisitedLinkProvider.mm: Removed.
  • UIProcess/API/Cocoa/_WKVisitedLinkStore.h:
  • WebKit.xcodeproj/project.pbxproj:
11:51 AM Changeset in webkit [224034] by Antti Koivisto
  • 4 edits in trunk/Source/WebCore

Remove unnecessary whitespace invalidation logic from RenderTreeUpdater
https://bugs.webkit.org/show_bug.cgi?id=178786

Reviewed by Zalan Bujtas.

RenderTreeUpdater::invalidateWhitespaceOnlyTextSiblingsAfterAttachIfNeeded is a somewhat complex
and confusing function for figuring out if some whitespace-only text node might need to have its
rendering status recomputed. However actually computing if a text renderer is needed is not expensive.
We can simply do it for all whitespace nodes after a sibling mutation.

This also removes a set that could have stale renderer pointers in it (they were never dereferenced).

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::addChildIgnoringContinuation):

Fix a display:contents bug exposed by this change. With display:contents a text renderer may have an anonymous
inline wrapper and we need to take it into account when the text renderer is the beforeChild.

Tested by imported/w3c/web-platform-tests/css/css-display-3/display-contents-state-change-001.html

  • style/RenderTreeUpdater.cpp:

(WebCore::RenderTreeUpdater::updateRenderTree):

Call updateTextRenderer() for all whitespace-only text nodes after a change in siblings.
In normal update case it just figures out quickly (by calling textRendererIsNeeded)
that there are no changes and bails out.

(WebCore::RenderTreeUpdater::updateElementRenderer):
(WebCore::RenderTreeUpdater::updateTextRenderer):
(WebCore::RenderTreeUpdater::invalidateWhitespaceOnlyTextSiblingsAfterAttachIfNeeded): Deleted.

No longer needed. Just mark that there have been changes to siblings instead.

  • style/RenderTreeUpdater.h:
11:46 AM Changeset in webkit [224033] by mmaxfield@apple.com
  • 2 edits in trunk/Source/WebCore

Mark font palettes as in development
https://bugs.webkit.org/show_bug.cgi?id=178590

Unreviewed.

  • features.json:
11:44 AM Changeset in webkit [224032] by Ryan Haddad
  • 16 edits
    1 move
    3 deletes in trunk

Unreviewed, rolling out r223984.

Caused LayoutTest assertion failures.

Reverted changeset:

"When navigating back to a page, compositing layers may not
use accelerated drawing"
https://bugs.webkit.org/show_bug.cgi?id=178749
https://trac.webkit.org/changeset/223984

11:41 AM Changeset in webkit [224031] by achristensen@apple.com
  • 11 edits in trunk/LayoutTests

Rebase contentextensions test expectations
https://bugs.webkit.org/show_bug.cgi?id=178841

Reviewed by Alexey Proskuryakov.

They've been marked as flaky for so long that nobody has rebased them. The URLParser
has changed underneath them, DOM error reporting has changed, etc. The first step to
gaining this test coverage back again is rebasing.

  • http/tests/contentextensions/block-everything-if-domain-expected.txt:
  • http/tests/contentextensions/block-everything-unless-domain-redirect-expected.txt:
  • http/tests/contentextensions/character-set-basic-support-expected.txt:
  • http/tests/contentextensions/main-resource-expected.txt:
  • http/tests/contentextensions/main-resource-redirect-blocked-expected.txt:
  • http/tests/contentextensions/main-resource-redirect-error-expected.txt:
  • http/tests/contentextensions/make-https-expected.txt:
  • http/tests/contentextensions/plugin-doesnt-crash-expected.txt:
  • http/tests/contentextensions/sync-xhr-blocked-expected.txt:
  • http/tests/contentextensions/text-track-blocked-expected.txt:
11:38 AM Changeset in webkit [224030] by commit-queue@webkit.org
  • 4 edits in trunk/Source/WebCore

Add inspector logging for MediaElementSession autoplay
https://bugs.webkit.org/show_bug.cgi?id=178846

Patch by Youenn Fablet <youenn@apple.com> on 2017-10-26
Reviewed by Eric Carlson.

No change of behavior.
Making use of pal Logger in MediaElementSession.
This new logging is limited to autoplay/playback for now.

  • html/MediaElementSession.cpp:

(WebCore::MediaElementSession::MediaElementSession):
(WebCore::MediaElementSession::playbackPermitted const):
(WebCore::MediaElementSession::autoplayPermitted const):
(WebCore::MediaElementSession::willLog const):
(WebCore::MediaElementSession::logChannel const):

  • html/MediaElementSession.h:
11:20 AM Changeset in webkit [224029] by Megan Gardner
  • 13 edits in trunk/Source/WebKit

Remove code to update block selection
https://bugs.webkit.org/show_bug.cgi?id=178843

Reviewed by Tim Horton.

Removes code for updating block selection, which has been disabled.
This code is being slowly pruned to avoid regressions and accidental removal of code that is being used.

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

(WebKit::PageClientImpl::didUpdateBlockSelectionWithTouch): Deleted.

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

(toSelectionHandlePosition): Deleted.
(-[WKContentView _didUpdateBlockSelectionWithTouch:withFlags:growThreshold:shrinkThreshold:]): Deleted.
(-[WKContentView changeBlockSelectionWithTouchAt:withSelectionTouch:forHandle:]): Deleted.

  • UIProcess/ios/WebPageProxyIOS.mm:

(WebKit::WebPageProxy::updateBlockSelectionWithTouch): Deleted.
(WebKit::WebPageProxy::didUpdateBlockSelectionWithTouch): Deleted.

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

(WebKit::shouldExpand): Deleted.
(WebKit::WebPage::changeBlockSelection): Deleted.
(WebKit::WebPage::updateBlockSelectionWithTouch): Deleted.

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

Skipped webrtc/video-replace-muted-track.html on iOS.
https://bugs.webkit.org/show_bug.cgi?id=173608

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
11:11 AM Changeset in webkit [224027] by keith_miller@apple.com
  • 3 edits in trunk/Source/WebCore

Move ApplePay to unified sources
https://bugs.webkit.org/show_bug.cgi?id=178871

Rubber-stamped by Tim Horton.

Also, add some other missing files.

  • SourcesCocoa.txt:
  • WebCore.xcodeproj/project.pbxproj:
10:59 AM Changeset in webkit [224026] by Adrian Perez de Castro
  • 2 edits in trunk

[GTK] WebKit library .so version is not being set correctly
https://bugs.webkit.org/show_bug.cgi?id=178873

Reviewed by Michael Catanzaro.

  • Source/cmake/OptionsGTK.cmake: Adjust name of the target for which the .so version gets calculated.
10:45 AM Changeset in webkit [224025] by Ryan Haddad
  • 8 edits
    6 deletes in trunk

Unreviewed, rolling out r224019.

This change caused API test WebKit.MSEIsPlayingAudio to time
out.

Reverted changeset:

"XMLHttpRequest should not treat file URLs as same origin"
https://bugs.webkit.org/show_bug.cgi?id=178565
https://trac.webkit.org/changeset/224019

10:26 AM Changeset in webkit [224024] by Ryan Haddad
  • 8 edits
    4 deletes in trunk

Unreviewed, rolling out r223994.

The LayoutTest for this change is failing.

Reverted changeset:

"Add service worker handle fetch support for all subresource
requests"
https://bugs.webkit.org/show_bug.cgi?id=178769
https://trac.webkit.org/changeset/223994

10:18 AM Changeset in webkit [224023] by Ryan Haddad
  • 20 edits
    1 delete in trunk/Source

Unreviewed, rolling out r223908.

Causes LayoutTest crashes with newer SDKs.

Reverted changeset:

"Adopt new secure coding APIs"
https://bugs.webkit.org/show_bug.cgi?id=178484
https://trac.webkit.org/changeset/223908

9:41 AM Changeset in webkit [224022] by Ryan Haddad
  • 2 edits in trunk/JSTests

Unreviewed, rolling out r223961.

The change that required this has been rolled out.

Reverted changeset:

"Mark test262.yaml/test262/test/language/statements/try/tco-
catch.js as passing."
https://bugs.webkit.org/show_bug.cgi?id=178592
https://trac.webkit.org/changeset/223961

9:32 AM Changeset in webkit [224021] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Update TestExpectations for compositing/tiling/non-active-window-tiles-size.html.
https://bugs.webkit.org/show_bug.cgi?id=171763

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations: Remove Debug-only flag.
9:13 AM WebKitGTK/2.18.x edited by Adrian Perez de Castro
(diff)
9:12 AM WebKitGTK/2.18.x edited by Adrian Perez de Castro
(diff)
9:11 AM WebKitGTK/2.18.x edited by Adrian Perez de Castro
(diff)
9:01 AM WebKitGTK/2.18.x edited by Adrian Perez de Castro
(diff)
8:56 AM WebKitGTK/2.18.x edited by Adrian Perez de Castro
(diff)
8:49 AM WebKitGTK/2.18.x edited by Carlos Garcia Campos
(diff)
8:33 AM Changeset in webkit [224020] by jfbastien@apple.com
  • 25 edits in trunk/Source/JavaScriptCore

WebAssembly: no VM / JS version of our implementation
https://bugs.webkit.org/show_bug.cgi?id=177472

Reviewed by Michael Saboff.

This patch removes all appearances of "JS" and "VM" in the wasm
directory. These now only appear in the wasm/js directory, which
is only used in a JS embedding of wasm. It should therefore now be
possible to create non-JS embeddings of wasm through JSC, though
it'll still require:

  • Mild codegen for wasm<->embedder calls;
  • A strategy for trap handling (no need for full unwind! Could kill).
  • Creation of the Wasm::* objects.
  • Calling convention handling to call the embedder.
  • Handling of multiple embedders (see #177475, this is optional).

Most of the patch consists in renaming JSWebAssemblyInstance to
Instance, and removing temporary copies which I'd added to make
this specific patch very simple.

  • interpreter/CallFrame.cpp:

(JSC::CallFrame::wasmAwareLexicalGlobalObject): this one place
which needs to know about who "owns" the Wasm::Instance. In a JS
embedding it's the JSWebAssemblyInstance.

  • wasm/WasmB3IRGenerator.cpp:

(JSC::Wasm::B3IRGenerator::B3IRGenerator):
(JSC::Wasm::B3IRGenerator::restoreWebAssemblyGlobalState):
(JSC::Wasm::B3IRGenerator::addGrowMemory):
(JSC::Wasm::B3IRGenerator::addCurrentMemory):
(JSC::Wasm::B3IRGenerator::getGlobal):
(JSC::Wasm::B3IRGenerator::setGlobal):
(JSC::Wasm::B3IRGenerator::addCall):
(JSC::Wasm::B3IRGenerator::addCallIndirect):

  • wasm/WasmBinding.cpp:

(JSC::Wasm::wasmToWasm):

  • wasm/WasmContext.cpp:

(JSC::Wasm::Context::load const):
(JSC::Wasm::Context::store):

  • wasm/WasmContext.h:
  • wasm/WasmEmbedder.h:
  • wasm/WasmInstance.cpp:

(JSC::Wasm::Instance::Instance):
(JSC::Wasm::Instance::create):
(JSC::Wasm::Instance::extraMemoryAllocated const):

  • wasm/WasmInstance.h: add an "owner", the Wasm::Context, move the

"tail" import information from JSWebAssemblyInstance over to here.
(JSC::Wasm::Instance::finalizeCreation):
(JSC::Wasm::Instance::owner const):
(JSC::Wasm::Instance::offsetOfOwner):
(JSC::Wasm::Instance::context const):
(JSC::Wasm::Instance::setMemory):
(JSC::Wasm::Instance::setTable):
(JSC::Wasm::Instance::offsetOfMemory):
(JSC::Wasm::Instance::offsetOfGlobals):
(JSC::Wasm::Instance::offsetOfTable):
(JSC::Wasm::Instance::offsetOfTail):
(JSC::Wasm::Instance::numImportFunctions const):
(JSC::Wasm::Instance::importFunctionInfo):
(JSC::Wasm::Instance::offsetOfTargetInstance):
(JSC::Wasm::Instance::offsetOfWasmEntrypoint):
(JSC::Wasm::Instance::offsetOfWasmToEmbedderStubExecutableAddress):
(JSC::Wasm::Instance::offsetOfImportFunction):
(JSC::Wasm::Instance::importFunction):
(JSC::Wasm::Instance::allocationSize):
(JSC::Wasm::Instance::create): Deleted.

  • wasm/WasmOMGPlan.cpp:

(JSC::Wasm::OMGPlan::runForIndex):

  • wasm/WasmOMGPlan.h:
  • wasm/WasmTable.cpp:

(JSC::Wasm::Table::Table):
(JSC::Wasm::Table::setFunction):

  • wasm/WasmTable.h:
  • wasm/WasmThunks.cpp:

(JSC::Wasm::throwExceptionFromWasmThunkGenerator):
(JSC::Wasm::triggerOMGTierUpThunkGenerator):

  • wasm/js/JSToWasm.cpp:

(JSC::Wasm::createJSToWasmWrapper):

  • wasm/js/JSWebAssemblyInstance.cpp: delete code that is now on Wasm::Instance

(JSC::JSWebAssemblyInstance::JSWebAssemblyInstance): The embedder
decides what the import function is. Here we must properly
placement-new it to what we've elected (and initialize it later).
(JSC::JSWebAssemblyInstance::visitChildren):
(JSC::JSWebAssemblyInstance::finalizeCreation):
(JSC::JSWebAssemblyInstance::create):

  • wasm/js/JSWebAssemblyInstance.h: delete code that is now on Wasm::Instance

(JSC::JSWebAssemblyInstance::instance):
(JSC::JSWebAssemblyInstance::moduleNamespaceObject):
(JSC::JSWebAssemblyInstance::setMemory):
(JSC::JSWebAssemblyInstance::table):
(JSC::JSWebAssemblyInstance::setTable):
(JSC::JSWebAssemblyInstance::offsetOfInstance):
(JSC::JSWebAssemblyInstance::offsetOfCallee):
(JSC::JSWebAssemblyInstance::context const): Deleted.
(JSC::JSWebAssemblyInstance::offsetOfTail): Deleted.
(): Deleted.
(JSC::JSWebAssemblyInstance::importFunctionInfo): Deleted.
(JSC::JSWebAssemblyInstance::offsetOfTargetInstance): Deleted.
(JSC::JSWebAssemblyInstance::offsetOfWasmEntrypoint): Deleted.
(JSC::JSWebAssemblyInstance::offsetOfWasmToEmbedderStubExecutableAddress): Deleted.
(JSC::JSWebAssemblyInstance::offsetOfImportFunction): Deleted.
(JSC::JSWebAssemblyInstance::importFunction): Deleted.
(JSC::JSWebAssemblyInstance::internalMemory): Deleted.
(JSC::JSWebAssemblyInstance::wasmCodeBlock const): Deleted.
(JSC::JSWebAssemblyInstance::offsetOfWasmTable): Deleted.
(JSC::JSWebAssemblyInstance::offsetOfGlobals): Deleted.
(JSC::JSWebAssemblyInstance::offsetOfCodeBlock): Deleted.
(JSC::JSWebAssemblyInstance::offsetOfWasmCodeBlock): Deleted.
(JSC::JSWebAssemblyInstance::offsetOfCachedStackLimit): Deleted.
(JSC::JSWebAssemblyInstance::offsetOfWasmMemory): Deleted.
(JSC::JSWebAssemblyInstance::offsetOfTopEntryFramePointer): Deleted.
(JSC::JSWebAssemblyInstance::cachedStackLimit const): Deleted.
(JSC::JSWebAssemblyInstance::setCachedStackLimit): Deleted.
(JSC::JSWebAssemblyInstance::wasmMemory): Deleted.
(JSC::JSWebAssemblyInstance::wasmModule): Deleted.
(JSC::JSWebAssemblyInstance::allocationSize): Deleted.

  • wasm/js/JSWebAssemblyTable.cpp:

(JSC::JSWebAssemblyTable::setFunction):

  • wasm/js/WasmToJS.cpp: One extra indirection to find the JSWebAssemblyInstance.

(JSC::Wasm::materializeImportJSCell):
(JSC::Wasm::handleBadI64Use):
(JSC::Wasm::wasmToJS):
(JSC::Wasm::wasmToJSException):

  • wasm/js/WasmToJS.h:
  • wasm/js/WebAssemblyFunction.cpp:

(JSC::callWebAssemblyFunction):

  • wasm/js/WebAssemblyInstanceConstructor.cpp:

(JSC::constructJSWebAssemblyInstance):

  • wasm/js/WebAssemblyModuleRecord.cpp:

(JSC::WebAssemblyModuleRecord::link):
(JSC::WebAssemblyModuleRecord::evaluate):

  • wasm/js/WebAssemblyPrototype.cpp:

(JSC::instantiate):

  • wasm/js/WebAssemblyWrapperFunction.cpp:

(JSC::WebAssemblyWrapperFunction::create):

8:14 AM Changeset in webkit [224019] by Brent Fulgham
  • 8 edits
    6 adds in trunk

XMLHttpRequest should not treat file URLs as same origin
https://bugs.webkit.org/show_bug.cgi?id=178565
<rdar://problem/11115901>

Reviewed by Ryosuke Niwa.

Source/WebCore:

Do not treat file URLs as same-origin for XHR requests.

Test: fast/xmlhttprequest/xmlhttprequest-access-self-as-file.html

  • loader/DocumentThreadableLoader.cpp:

(WebCore::DocumentThreadableLoader::DocumentThreadableLoader): Use new helper method.

  • page/SecurityOrigin.cpp:

(WebCore::SecurityOrigin::requestIsSameOrigin): New method to recognize same-origin
requests, with special handling for XHR.

  • page/SecurityOrigin.h:

LayoutTests:

  • fast/xmlhttprequest/resources/xmlhttprequest-access-self-as-file-real.html: Added.
  • fast/xmlhttprequest/xmlhttprequest-access-self-as-file.html: Added.
  • fast/xmlhttprequest/xmlhttprequest-access-self-as-file-expected.txt: Added.
  • fast/xmlhttprequest/xmlhttprequest-access-self-as-blob-expected.txt: Added.
  • fast/xmlhttprequest/xmlhttprequest-access-self-as-blob.html: Added.
  • fast/xmlhttprequest/xmlhttprequest-nonexistent-file-expected.txt: Rebaseline test now that we reject XHR to local file URLs.
  • platform/ios/fast/xmlhttprequest/xmlhttprequest-nonexistent-file-expected.txt: Rebaselined.
  • platform/wk2/TestExpectations: Skip test since 'beginDragWithFiles' is not supported in WKTR.
7:06 AM Changeset in webkit [224018] by commit-queue@webkit.org
  • 13 edits
    1 delete in trunk

Remove scopeguard from platform
https://bugs.webkit.org/show_bug.cgi?id=178681

Patch by Christopher Reid <chris.reid@sony.com> on 2017-10-26
Reviewed by Brady Eidson.

Source/WebCore:

Replacing platform/ScopeGuard with WTF::ScopeExit.
No new tests, no change in behavior.

  • Modules/indexeddb/IDBRequest.cpp:
  • Modules/indexeddb/IDBRequest.h:
  • Modules/indexeddb/server/UniqueIDBDatabase.cpp:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/FileSystem.cpp:
  • platform/ScopeGuard.h: Removed.
  • platform/network/BlobRegistryImpl.cpp:
  • workers/service/ServiceWorkerContainer.cpp:

Source/WebKit:

  • Shared/mac/ChildProcessMac.mm:

Tools:

  • TestWebKitAPI/Tests/WebCore/FileMonitor.cpp:
6:14 AM Changeset in webkit [224017] by Carlos Garcia Campos
  • 3 edits in releases/WebKitGTK/webkit-2.18/Source/WebCore

[GTK][Stable] Crash on WebCore::SharedBuffer::data() on 2.18.1
https://bugs.webkit.org/show_bug.cgi?id=178852

Reviewed by Carlos Garcia Campos.

Add a mutex to control that the image decoders are not used at the same
time from the main thread and the decoding thread.

Backport of the fix to https://bugs.webkit.org/show_bug.cgi?id=178510
created by Fujii Hironori <Fujii Hironori>.

Covered by existent tests.

  • platform/image-decoders/ImageDecoder.cpp:

(WebCore::ImageDecoder::frameIsCompleteAtIndex):
(WebCore::ImageDecoder::frameHasAlphaAtIndex const):
(WebCore::ImageDecoder::frameBytesAtIndex const):
(WebCore::ImageDecoder::frameDurationAtIndex):
(WebCore::ImageDecoder::createFrameImageAtIndex):

  • platform/image-decoders/ImageDecoder.h:

(WebCore::ImageDecoder::setData):

5:50 AM Changeset in webkit [224016] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.18/Source/WebCore

Merge r224015 - REGRESSION(r222090): [HarfBuzz] Arabic shaping is broken except for first word in line
https://bugs.webkit.org/show_bug.cgi?id=178625

Reviewed by Michael Catanzaro.

Source/WebCore:

Once we find the first space, which has the COMMON script, we split the run, and the next ones keep using
COMMON instead of ARABIC because we don't update the current script on every loop iteration. This patch
simplifies the script handling by moving the code back to the loop and always breaking in case of different
scripts, correctly handling INHERITED and COMMON cases and updating the current script when needed.

Covered by existing tests. This improves several tests that have been rebaselined.

  • platform/graphics/harfbuzz/ComplexTextControllerHarfBuzz.cpp:

(WebCore::findNextRun):
(WebCore::scriptsAreCompatibleForCharacters): Deleted.

5:34 AM WebKitGTK/2.18.x edited by Michael Catanzaro
(diff)
5:03 AM Changeset in webkit [224015] by Carlos Garcia Campos
  • 19 edits in trunk

REGRESSION(r222090): [HarfBuzz] Arabic shaping is broken except for first word in line
https://bugs.webkit.org/show_bug.cgi?id=178625

Reviewed by Michael Catanzaro.

Source/WebCore:

Once we find the first space, which has the COMMON script, we split the run, and the next ones keep using
COMMON instead of ARABIC because we don't update the current script on every loop iteration. This patch
simplifies the script handling by moving the code back to the loop and always breaking in case of different
scripts, correctly handling INHERITED and COMMON cases and updating the current script when needed.

Covered by existing tests. This improves several tests that have been rebaselined.

  • platform/graphics/harfbuzz/ComplexTextControllerHarfBuzz.cpp:

(WebCore::findNextRun):
(WebCore::scriptsAreCompatibleForCharacters): Deleted.

LayoutTests:

Rebaseline several tests that have been improved.

  • platform/gtk/editing/selection/vertical-rl-rtl-extend-line-backward-br-expected.png:
  • platform/gtk/editing/selection/vertical-rl-rtl-extend-line-backward-br-expected.txt:
  • platform/gtk/editing/selection/vertical-rl-rtl-extend-line-backward-p-expected.png:
  • platform/gtk/editing/selection/vertical-rl-rtl-extend-line-backward-p-expected.txt:
  • platform/gtk/editing/selection/vertical-rl-rtl-extend-line-forward-br-expected.png:
  • platform/gtk/editing/selection/vertical-rl-rtl-extend-line-forward-br-expected.txt:
  • platform/gtk/editing/selection/vertical-rl-rtl-extend-line-forward-p-expected.png:
  • platform/gtk/editing/selection/vertical-rl-rtl-extend-line-forward-p-expected.txt:
  • platform/gtk/fast/text/atsui-negative-spacing-features-expected.png:
  • platform/gtk/fast/text/atsui-negative-spacing-features-expected.txt:
  • platform/gtk/fast/text/international/hebrew-vowels-expected.png:
  • platform/gtk/fast/text/international/hebrew-vowels-expected.txt:
  • platform/gtk/svg/W3C-SVG-1.1/fonts-glyph-02-t-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1/fonts-glyph-02-t-expected.txt:
  • platform/gtk/svg/custom/glyph-selection-arabic-forms-expected.png:
  • platform/gtk/svg/custom/glyph-selection-arabic-forms-expected.txt:
3:58 AM Changeset in webkit [224014] by Carlos Garcia Campos
  • 3 edits
    315 adds in trunk

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

Reviewed by Brian Burg.

Tools:

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

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

code.

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

required by the WebDriver tests.

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

WebDriverTests:

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

  • imported/w3c/importer.json: Added.
  • imported/w3c/tools/pytest/: Added.
  • imported/w3c/tools/webdriver/: Added.
  • imported/w3c/tools/wptrunner/: Added.
  • imported/w3c/webdriver/: Added.
3:44 AM Changeset in webkit [224013] by commit-queue@webkit.org
  • 1 edit
    2 adds in trunk/Source/WebInspectorUI

[GTK] Web Inspector: Add CanvasOverview.svg and Canvas.svg
https://bugs.webkit.org/show_bug.cgi?id=178426

Patch by Fujii Hironori <Fujii Hironori> on 2017-10-26
Reviewed by Carlos Garcia Campos.

  • UserInterface/Images/gtk/Canvas.svg: Added.
  • UserInterface/Images/gtk/CanvasOverview.svg: Added.
3:31 AM Changeset in webkit [224012] by eocanha@igalia.com
  • 2 edits in trunk/Source/WebCore

[MSE][GStreamer] Fix hang on clearing/destroying AppendPipeline
https://bugs.webkit.org/show_bug.cgi?id=178819

Reviewed by Xabier Rodriguez-Calvar.

The deadlock may occur when UI thread tries to clear pipeline in
AppendPipeline::clearPlayerPrivate() while parser thread tries to change
pipeline state to pause holding the stream lock in
AppendPipeline::connectDemuxerSrcPadToAppsinkFromAnyThread()

This patch is authored by Eugene Mutavchi <Ievgen_Mutavchi@comcast.com>

  • platform/graphics/gstreamer/mse/AppendPipeline.cpp:

(WebCore::AppendPipeline::connectDemuxerSrcPadToAppsinkFromAnyThread):
Return if there's no player private.

1:46 AM Changeset in webkit [224011] by rniwa@webkit.org
  • 5 edits in trunk/Source/WebCore

Assert that no script is executed during style recalc
https://bugs.webkit.org/show_bug.cgi?id=178845
<rdar://problem/35106129>

Reviewed by Antti Koivisto.

This patch adds NoEventDispatchAssertion to Document::updateStyle and Document::updateStyleIfNeeded
to make sure we don't start mutating DOM in the middle of a style update.

Added NoEventDispatchAssertion::EventAllowedScope for various places in SVGUseElement to update its
shadow tree since that happens while updating the style.

No new tests since there should be no behavioral change.

  • dom/Document.cpp:

(WebCore::Document::resolveStyle): Added NoEventDispatchAssertion while flushing pending stylesheets
and calling FrameView::willRecalcStyle, and while the style tree solver is in works. Also moved in
the code to update the selection and schedule to dispatch a fake mouse event into the same scope.
Also increment m_styleRecalcCount in the same code since post resolution callbacks could run author
scripts which in turn trigger another (recursive) style recalc.
(WebCore::Document::updateStyleIfNeeded): Put everything but the call to resolveStyle in a scope with
NoEventDispatchAssertion.

  • dom/Element.cpp:

(WebCore::Element::cloneElementWithChildren): Added NoEventDispatchAssertion::EventAllowedScope to the
newly cloned element for SVG use element's shadow tree.
(WebCore::Element::cloneElementWithoutChildren): Ditto.

  • dom/EventDispatcher.cpp:

(WebCore::EventDispatcher::dispatchEvent): Make the assertion more precise to workaround the fact SVG
use elements update its shadow tree in the middle of style updates. Also removed a redundant assertion
since the result of NoEventDispatchAssertion::isEventDispatchAllowedInSubtree cannot chance without
pushing or popoing the stack frame.

  • svg/SVGUseElement.cpp:

(WebCore::SVGUseElement::clearShadowTree):
(WebCore::SVGUseElement::updateShadowTree): Added NoEventDispatchAssertion to the user-agent shadow root
of a SVG use element. Since this is a newly created shadow tree which hasn't been exposed to author
scripts, it's safe to mutate them during the style recalc even though it's not the best design.
(WebCore::SVGUseElement::cloneTarget const): Ditto.
(WebCore::SVGUseElement::expandUseElementsInShadowTree const): Ditto.
(WebCore::SVGUseElement::expandSymbolElementsInShadowTree const): Ditto.
(WebCore::SVGUseElement::transferEventListenersToShadowTree const):

12:10 AM Changeset in webkit [224010] by rniwa@webkit.org
  • 2 edits in trunk/LayoutTests

LayoutTest http/tests/security/clipboard/copy-paste-html-cross-origin-iframe-across-origin.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=178828

Reviewed by Wenson Hsieh.

Removed the superflous call to finishJSTest after 3s.

  • http/tests/security/clipboard/copy-paste-html-cross-origin-iframe-across-origin.html:
12:07 AM Changeset in webkit [224009] by keith_miller@apple.com
  • 3 edits in trunk/Source/WebCore

Move platform Cocoa sources to unified sources
https://bugs.webkit.org/show_bug.cgi?id=178851

Rubber-stamped by Tim Horton.

  • SourcesCocoa.txt:
  • WebCore.xcodeproj/project.pbxproj:

Oct 25, 2017:

11:21 PM Changeset in webkit [224008] by keith_miller@apple.com
  • 4 edits in trunk/Source/WebCore

Start moving Cocoa specific unified sources
https://bugs.webkit.org/show_bug.cgi?id=178850

Rubber-stamped by Tim Horton.

  • PlatformMac.cmake:
  • SourcesCocoa.txt:
  • WebCore.xcodeproj/project.pbxproj:
11:03 PM Changeset in webkit [224007] by Carlos Garcia Campos
  • 3 edits in trunk/Source/WebCore

[HarfBuzz] ComplexTextRun should initialize direction from the harfbuzz buffer
https://bugs.webkit.org/show_bug.cgi?id=178788

Reviewed by Michael Catanzaro.

Instead of using the TextRun direction. If the TextRun is ltr, but the harfbuzz buffer is rtl, the character
indexes will be swapped in m_coreTextIndices.

  • platform/graphics/ComplexTextController.h:

(WebCore::ComplexTextController::ComplexTextRun::create): Remove the ltr parameter.

  • platform/graphics/harfbuzz/ComplexTextControllerHarfBuzz.cpp:

(WebCore::ComplexTextController::ComplexTextRun::ComplexTextRun): Initialize m_isLTR using hb_buffer_get_direction().
(WebCore::ComplexTextController::collectComplexTextRunsForCharacters): Do not pass ltr to ComplexTextRun::create().

10:23 PM Changeset in webkit [224006] by keith_miller@apple.com
  • 4 edits in trunk/Source/WebCore

Move remaining platform independent sources to unified sources
https://bugs.webkit.org/show_bug.cgi?id=178849

Rubber-stamped by Tim Horton.

  • CMakeLists.txt:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
9:57 PM Changeset in webkit [224005] by keith_miller@apple.com
  • 4 edits in trunk/Source/WebCore

Move plugins and rendering to unified sources
https://bugs.webkit.org/show_bug.cgi?id=178848

Rubber-stamped by Tim Horton.

  • CMakeLists.txt:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
9:27 PM Changeset in webkit [224004] by keith_miller@apple.com
  • 2 edits in trunk/Source/WebCore

Unreviewed, add FEMorphology.cpp back to the regular build after r224003.

  • WebCore.xcodeproj/project.pbxproj:
9:24 PM Changeset in webkit [224003] by keith_miller@apple.com
  • 2 edits in trunk/Source/WebCore

Unreviewed, Windows build fix.

  • Sources.txt:
9:07 PM Changeset in webkit [224002] by webkit@devinrousso.com
  • 16 edits
    2 adds in trunk

Web Inspector: provide a way to enable/disable event listeners
https://bugs.webkit.org/show_bug.cgi?id=177451
<rdar://problem/34994925>

Reviewed by Joseph Pecoraro.

Source/JavaScriptCore:

  • inspector/protocol/DOM.json:

Add setEventListenerDisabled command that enables/disables a specific event listener
during event dispatch. When a disabled event listener is fired, the listener's callback will
not be called.

Source/WebCore:

Test: inspector/dom/setEventListenerDisabled.html

  • dom/EventTarget.cpp:

(WebCore::EventTarget::fireEventListeners):
Add InspectorInstrumentation call to isEventListenerDisabled. If true, the event listener's
callback will not be called.

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

(WebCore::InspectorDOMAgent::discardBindings):
(WebCore::InspectorDOMAgent::getEventListenersForNode):
(WebCore::InspectorDOMAgent::setEventListenerDisabled):
(WebCore::InspectorDOMAgent::buildObjectForEventListener):
(WebCore::InspectorDOMAgent::willRemoveEventListener):
(WebCore::InspectorDOMAgent::isEventListenerDisabled):
Introduce a mapping of EventListener* to InspectorEventListener, a struct for uniquely
identifying event listeners so they can be referenced from the frontend. We only add items
to this mapping when getEventListenersForNode is called, as that is when EventListener
data is sent to the frontend. This allows us to defer creating an Inspector "mirror" object
for each EventListener until it is needed. Items are removed whenever an event listener is
removed or when the document changes.

  • inspector/InspectorInstrumentation.h:

(WebCore::InspectorInstrumentation::isEventListenerDisabled):

  • inspector/InspectorInstrumentation.cpp:

(WebCore::InspectorInstrumentation::willRemoveEventListenerImpl):
(WebCore::InspectorInstrumentation::isEventListenerDisabledImpl):
Pass additional parameters to InspectorDOMAgent so it can determine if the event listener
actually exists. If not, don't dispatch an event to the frontend as nothing will change.

Source/WebInspectorUI:

  • Localizations/en.lproj/localizedStrings.js:
  • UserInterface/Controllers/DOMTreeManager.js:

(WI.DOMTreeManager.prototype.setEventListenerDisabled):

  • UserInterface/Views/DOMNodeDetailsSidebarPanel.js:

(WI.DOMNodeDetailsSidebarPanel.prototype.attached):
(WI.DOMNodeDetailsSidebarPanel.prototype.detached):
(WI.DOMNodeDetailsSidebarPanel.prototype._eventListenersChanged):
(WI.DOMNodeDetailsSidebarPanel.prototype.addEventListeners): Deleted.
(WI.DOMNodeDetailsSidebarPanel.prototype.removeEventListeners): Deleted.
Listen for WI.DOMNode.Event.EventListenersChanged on all instances of WI.DOMNode, since we
will still want to refresh the event listeners section in the event that an event listener
is removed from a parent node.

  • UserInterface/Views/EventListenerSectionGroup.js:

(WI.EventListenerSectionGroup):
(WI.EventListenerSectionGroup.prototype._eventText):
(WI.EventListenerSectionGroup.prototype._nodeTextOrLink):
(WI.EventListenerSectionGroup.prototype._createDisabledToggleElement):
(WI.EventListenerSectionGroup.prototype._createDisabledToggleElement.updateTitle):

  • UserInterface/Views/EventListenerSectionGroup.css:

(.event-listener-section > .content input[type="checkbox"]):

  • UserInterface/Views/DetailsSectionSimpleRow.js:

(WI.DetailsSectionSimpleRow.prototype.get label):
(WI.DetailsSectionSimpleRow.prototype.set label):

LayoutTests:

  • inspector/dom/setEventListenerDisabled-expected.txt: Added.
  • inspector/dom/setEventListenerDisabled.html: Added.
8:59 PM Changeset in webkit [224001] by keith_miller@apple.com
  • 6 edits in trunk/Source/WebCore

Move Platform to unified sources.
https://bugs.webkit.org/show_bug.cgi?id=178829

Rubber-stamped by Tim Horton.

  • CMakeLists.txt:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/Cursor.cpp:
  • platform/sql/SQLiteDatabase.h:
7:57 PM Changeset in webkit [224000] by Chris Dumez
  • 4 edits in trunk/Source/WebCore

messageEvent.source can also be a ServiceWorker
https://bugs.webkit.org/show_bug.cgi?id=178839

Reviewed by Brady Eidson.

messageEvent.source can also be a ServiceWorker:

This enables calling postMessage() from a ServiceWorker via Bug 178794.

  • dom/MessageEvent.cpp:

(WebCore::MessageEvent::source const): Deleted.

  • dom/MessageEvent.h:
  • dom/MessageEvent.idl:
5:30 PM Changeset in webkit [223999] by rniwa@webkit.org
  • 7 edits in trunk/Source/WebCore

Style::Scope::flushPendingUpdate() can replace the entire document in XSLTProcessor::createDocumentFromSource
https://bugs.webkit.org/show_bug.cgi?id=178715
<rdar://problem/35144665>

Reviewed by Brent Fulgham.

Apply XLS tranforms when a 0s timer fires or the document finishes parsing or loading whichever comes first
instead of in the middle of collecting a list of stylesheets.

  • dom/Document.cpp:

(WebCore::Document::Document): Initialize the newly added timer.
(WebCore::Document::implicitClose): Apply any pending XSLT before we fire load events since some of the event
handlers may be expecting to see the document after XSLT had been applied.
(WebCore::Document::scheduleToApplyXSLTransforms): Added.
(WebCore::Document::applyPendingXSLTransformsNowIfScheduled): Added.
(WebCore::Document::applyPendingXSLTransformsTimerFired): Added. Moved the logic to apply XSL transforms from
Style::Scope::collectActiveStyleSheets, and merged applyXSLTransform into this function.
(WebCore::Document::applyXSLTransform): Deleted.
(WebCore::Document::finishedParsing): Apply XSLT right before updating the style. This is where used to apply
inline XSLT and it happens much earlier than implicitClose.

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

(WebCore::ProcessingInstruction::checkStyleSheet): Schedule XSLT in the document instead of flushing pending
stylesheets, which would have synchronously applied XSLT. We can't apply XSLT synchronously here because this
function can be called from a non-script-resilient call stack.
(WebCore::ProcessingInstruction::sheetLoaded): Ditto.

  • style/StyleScope.cpp:

(WebCore::Style::Scope::collectXSLTransforms): Added.
(WebCore::Style::Scope::collectActiveStyleSheets): Removed the code to apply XSLT. Skip ProcessingInstructions
that applies XSLT. Also use RefPtr<StyleSheet> instead of a raw pointer to store StyleSheet.

  • style/StyleScope.h:
  • xml/parser/XMLDocumentParserLibxml2.cpp:

(WebCore::XMLDocumentParser::doEnd): Apply any pending XSLTs synchronously here as the comment suggests.

4:50 PM Changeset in webkit [223998] by webkit@devinrousso.com
  • 5 edits in trunk

Web Inspector: Canvas Tab: starting a second recording doesn't show red titlebar if the first recording was empty
https://bugs.webkit.org/show_bug.cgi?id=178805
<rdar://problem/35176303>

Reviewed by Brian Burg.

Source/WebCore:

No new tests, updated existing tests.

  • inspector/InspectorCanvasAgent.cpp:

(WebCore::InspectorCanvasAgent::didFinishRecordingCanvasFrame):
If the recording was stopped and had no data, reset the CallTracingActive flag to false.

LayoutTests:

  • inspector/canvas/recording-2d-expected.txt:
  • inspector/canvas/recording-2d.html:
4:49 PM Changeset in webkit [223997] by webkit@devinrousso.com
  • 16 edits in trunk

Web Inspector: replace TypeVerifier with subclasses of WI.Collection
https://bugs.webkit.org/show_bug.cgi?id=178045
<rdar://problem/35174307>

Reviewed by Brian Burg.

Source/WebInspectorUI:

  • UserInterface/Models/Collection.js:

(WI.Collection):
(WI.Collection.prototype.get displayName):
(WI.Collection.prototype.objectIsRequiredType):
(WI.Collection.prototype.add):
(WI.Collection.prototype.get typeVerifier): Deleted.
Instead of exposing the typeVerifier, we create a public predicate that returns whether the
given object matches the expected type of the Collection. Subclasses can override it to
limit the scope of the collection to a particular type.

  • UserInterface/Models/CollectionTypes.js:

(WI.FrameCollection.prototype.get displayName):
(WI.FrameCollection.prototype.objectIsRequiredType):
(WI.FrameCollection): Deleted.
(WI.ScriptCollection.prototype.get displayName):
(WI.ScriptCollection.prototype.objectIsRequiredType):
(WI.ScriptCollection): Deleted.
(WI.CSSStyleSheetCollection.prototype.get displayName):
(WI.CSSStyleSheetCollection.prototype.objectIsRequiredType):
(WI.CSSStyleSheetCollection): Deleted.
(WI.CanvasCollection.prototype.get displayName):
(WI.CanvasCollection.prototype.objectIsRequiredType):
(WI.CanvasCollection): Deleted.
(WI.ShaderProgramCollection.prototype.get displayName):
(WI.ShaderProgramCollection.prototype.objectIsRequiredType):
(WI.ShaderProgramCollection): Deleted.
(WI.RecordingCollection.prototype.get displayName):
(WI.RecordingCollection.prototype.objectIsRequiredType):
(WI.RecordingCollection): Deleted.

  • UserInterface/Models/ResourceCollection.js:

(WI.ResourceCollection):
(WI.ResourceCollection.prototype.get displayName):
(WI.ResourceCollection.prototype.objectIsRequiredType):
(WI.ResourceCollection.verifierForType): Deleted.

  • UserInterface/Views/TreeOutlineGroup.js:

(WI.TreeOutlineGroup.prototype.objectIsRequiredType):
(WI.TreeOutlineGroup): Deleted.
Introduce additional subclasses of Collection for other model types. Modify existing
subclasses to remove typeVerifier and instead extend objectIsRequiredType.

  • UserInterface/Models/Canvas.js:

(WI.Canvas):

  • UserInterface/Models/Frame.js:

(WI.Frame):

  • UserInterface/Protocol/Target.js:

(WI.Target):

  • UserInterface/Views/ResourceSidebarPanel.js:

(WI.ResourceSidebarPanel.prototype.treeElementForRepresentedObject):
(WI.ResourceSidebarPanel.prototype._addScript):

  • UserInterface/Views/CollectionContentView.js:

(WI.CollectionContentView):
(WI.CollectionContentView.titleForCollection): Delete.

  • UserInterface/Views/ResourceCollectionContentView.js:

(WI.ResourceCollectionContentView):
Require that subclasses of Collection override get displayName if the CollectionContentView
is not provided with a contentPlaceholderText.

(WI.CollectionContentView.prototype.initialLayout):
We don't need to create and add ContentView for each item of the Collection, as this is
already done by attached().

(WI.CollectionContentView.prototype._showContentPlaceholder):
Remove the 250ms delay before showing the placeholder TitleView.

  • UserInterface/Views/FolderizedTreeElement.js:

(WI.FolderizedTreeElement.prototype._settingsForRepresentedObject):

LayoutTests:

  • inspector/unit-tests/collection-expected.txt:
  • inspector/unit-tests/collection.html:
4:47 PM Changeset in webkit [223996] by keith_miller@apple.com
  • 4 edits in trunk/Source/WebCore

Move html to unified sources
https://bugs.webkit.org/show_bug.cgi?id=178709

Reviewed by Alex Christensen.

  • CMakeLists.txt:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
4:39 PM Changeset in webkit [223995] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore

[Curl] Delete temporally downloaded file when it cancelled
https://bugs.webkit.org/show_bug.cgi?id=134393

Patch by Basuke Suzuki <Basuke Suzuki> on 2017-10-25
Reviewed by Alex Christensen.

  • platform/network/curl/CurlRequest.cpp:

(WebCore::CurlRequest::didCancelTransfer):
(WebCore::CurlRequest::writeDataToDownloadFileIfEnabled):
(WebCore::CurlRequest::closeDownloadFile):
(WebCore::CurlRequest::cleanupDownloadFile):

  • platform/network/curl/CurlRequest.h:
4:32 PM Changeset in webkit [223994] by commit-queue@webkit.org
  • 7 edits
    4 adds in trunk

Add service worker handle fetch support for all subresource requests
https://bugs.webkit.org/show_bug.cgi?id=178769

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

Source/WebCore:

Test: http/tests/workers/service/image-fetch.https.html

Moving DocumentThreadableLoader logic to CachedResourceLoader to apply it for all resource loads.
Setting the selected service worker identifier for subresource only at the moment.

Testing is limited to images, future wpt tests should cover other subresource cases.

  • loader/DocumentThreadableLoader.cpp:

(WebCore::DocumentThreadableLoader::DocumentThreadableLoader):

  • loader/cache/CachedResourceLoader.cpp:

(WebCore::CachedResourceLoader::prepareFetch):

  • loader/cache/CachedResourceRequest.cpp:

(WebCore::CachedResourceRequest::setSelectedServiceWorkerIdentifierIfNeeded):

  • loader/cache/CachedResourceRequest.h:

LayoutTests:

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

(event.event.request.url.indexOf):
(event.event.request.url.endsWith):

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

(done):
(async.loadedImage):
(async.erroredImage):
(async.logStatus):
(async.test):

4:24 PM Changeset in webkit [223993] by pvollan@apple.com
  • 4 edits in trunk/Source/WebKit

Network process crash under WebKit::AuthenticationManager::rejectProtectionSpaceAndContinueForSingleChallenge.
https://bugs.webkit.org/show_bug.cgi?id=160234
rdar://problem/30675510

Reviewed by Geoffrey Garen.

An exception is raised because we call the method rejectProtectionSpaceAndContinueWithChallenge on the CFNetwork
challenge sender, which does not implement this optional method. The methods on the authentication challenge
sender are deprecated when network session is used, so we should not call them in that case.

  • Shared/Authentication/AuthenticationManager.cpp:

(WebKit::AuthenticationManager::useCredentialForSingleChallenge):
(WebKit::AuthenticationManager::continueWithoutCredentialForSingleChallenge):
(WebKit::AuthenticationManager::cancelSingleChallenge):
(WebKit::AuthenticationManager::performDefaultHandlingForSingleChallenge):
(WebKit::AuthenticationManager::rejectProtectionSpaceAndContinueForSingleChallenge):

  • Shared/Authentication/cocoa/AuthenticationManagerCocoa.mm:

(WebKit::AuthenticationManager::receivedCredential):
(WebKit::AuthenticationManager::receivedRequestToContinueWithoutCredential):
(WebKit::AuthenticationManager::receivedCancellation):
(WebKit::AuthenticationManager::receivedRequestToPerformDefaultHandling):
(WebKit::AuthenticationManager::receivedChallengeRejection):

  • Shared/Authentication/soup/AuthenticationManagerSoup.cpp:
4:21 PM Changeset in webkit [223992] by Simon Fraser
  • 3 edits
    3 adds in trunk

Aliasing of text in CSS specs is blocky and ugly
https://bugs.webkit.org/show_bug.cgi?id=174946
Source/WebCore:

rdar://problem/33594542

Reviewed by Dean Jackson.

The PaintedContentRequest relating to subpixel-antialiased text was failing to be
satisfied if the text content in a composited layer was nested inside descendant
RenderLayers, because RenderLayer::isVisuallyNonEmpty() returned early. If this
function is passed a request, we can't return until we've satisfied the request
(which triggers the checking of descendant layers).

Test: compositing/contents-format/subpixel-antialiased-nested-layer.html

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::calculateClipRects const):

LayoutTests:

Reviewed by Dean Jackson.

  • compositing/contents-format/subpixel-antialiased-nested-layer-expected.txt: Added.
  • compositing/contents-format/subpixel-antialiased-nested-layer.html: Added.
4:13 PM Changeset in webkit [223991] by webkit@devinrousso.com
  • 7 edits in trunk/Source/WebInspectorUI

Web Inspector: Canvas Tab: clicking on a canvas card causes details sidebar to show and mess up card arrangement
https://bugs.webkit.org/show_bug.cgi?id=178803
<rdar://problem/35176082>

Reviewed by Brian Burg.

  • Localizations/en.lproj/localizedStrings.js:
  • UserInterface/Views/CanvasDetailsSidebarPanel.css:

(.sidebar > .panel.details.canvas > .content > .empty-content-placeholder):
(.sidebar > .panel.details.canvas > .content > .empty-content-placeholder > .message):

  • UserInterface/Views/CanvasDetailsSidebarPanel.js:

(WI.CanvasDetailsSidebarPanel):
(WI.CanvasDetailsSidebarPanel.prototype.inspect):
(WI.CanvasDetailsSidebarPanel.prototype.initialLayout):
(WI.CanvasDetailsSidebarPanel.prototype.layout):

  • UserInterface/Views/RecordingNavigationSidebarPanel.js:

(WI.RecordingNavigationSidebarPanel.disallowInstanceForClass): Deleted.

  • UserInterface/Views/RecordingStateDetailsSidebarPanel.js:

(WI.RecordingStateDetailsSidebarPanel.disallowInstanceForClass): Deleted.

  • UserInterface/Views/RecordingTraceDetailsSidebarPanel.js:

(WI.RecordingTraceDetailsSidebarPanel.disallowInstanceForClass): Deleted.
Drive-by: these sidebar panels are now only used by the Canvas tab, so we no longer need to
provide support for multiple instances of them.

4:04 PM CommitterTips edited by Ross Kirsling
(diff)
3:27 PM Changeset in webkit [223990] by commit-queue@webkit.org
  • 4 edits
    2 adds in trunk/Source/WebKit

Move DNS resolution outside of NetworkRTCProvider
https://bugs.webkit.org/show_bug.cgi?id=178796

Patch by Youenn Fablet <youenn@apple.com> on 2017-10-25
Reviewed by Geoffrey Garen.

Tested through manual testing on external STUN servers.
Moving NetworkRTCProvider::Resolver into NetworkRTCResolver.
Updating the implementation to use a completion handler.

  • NetworkProcess/webrtc/NetworkRTCProvider.cpp:

(WebKit::NetworkRTCProvider::createResolver):

  • NetworkProcess/webrtc/NetworkRTCProvider.h:
  • NetworkProcess/webrtc/NetworkRTCResolver.cpp:

(WebKit::NetworkRTCResolver::NetworkRTCResolver):
(WebKit::NetworkRTCResolver::~NetworkRTCResolver):
(WebKit::NetworkRTCResolver::start):
(WebKit::NetworkRTCResolver::stop):
(WebKit::NetworkRTCResolver::completed):
(WebKit::NetworkRTCProvider::Resolver::~Resolver): Deleted.
(WebKit::NetworkRTCProvider::stop): Deleted.
(WebKit::NetworkRTCProvider::resolutionCompleted): Deleted.

  • NetworkProcess/webrtc/NetworkRTCResolver.h:
  • WebKit.xcodeproj/project.pbxproj:
3:15 PM Changeset in webkit [223989] by commit-queue@webkit.org
  • 8 edits
    1 delete in trunk

Unreviewed, rolling out r223691 and r223729.
https://bugs.webkit.org/show_bug.cgi?id=178834

Broke Speedometer 2 React-Redux-TodoMVC test case (Requested
by rniwa on #webkit).

Reverted changesets:

"Turn recursive tail calls into loops"
https://bugs.webkit.org/show_bug.cgi?id=176601
https://trac.webkit.org/changeset/223691

"REGRESSION(r223691): DFGByteCodeParser.cpp:1483:83: warning:
comparison is always false due to limited range of data type
[-Wtype-limits]"
https://bugs.webkit.org/show_bug.cgi?id=178543
https://trac.webkit.org/changeset/223729

3:15 PM Changeset in webkit [223988] by eric.carlson@apple.com
  • 12 edits
    1 add in trunk

[MediaStream] Clear cached gUM prompt state
https://bugs.webkit.org/show_bug.cgi?id=178754
<rdar://problem/32742356>

Reviewed by Youenn Fablet.

Source/WebKit:

  • Shared/WebPreferences.yaml: Define new settings.
  • Shared/WebPreferencesDefinitionsBase.h: New default values.
  • UIProcess/API/C/WKPreferences.cpp:

(WKPreferencesSetInactiveMediaCaptureSteamRepromptIntervalInMinutes): New.
(WKPreferencesGetInactiveMediaCaptureSteamRepromptIntervalInMinutes): Ditto.

  • UIProcess/API/C/WKPreferencesRefPrivate.h:
  • UIProcess/API/Cocoa/WKPreferences.mm:

(-[WKPreferences _inactiveMediaCaptureSteamRepromptIntervalInMinutes]): Ditto.
(-[WKPreferences _setInactiveMediaCaptureSteamRepromptIntervalInMinutes:]): Ditto.

  • UIProcess/API/Cocoa/WKPreferencesPrivate.h:
  • UIProcess/UserMediaPermissionRequestManagerProxy.cpp:

(WebKit::UserMediaPermissionRequestManagerProxy::UserMediaPermissionRequestManagerProxy): Initialize
the timer.
(WebKit::UserMediaPermissionRequestManagerProxy::createRequest): Remove unneeded namespace.
(WebKit::toWebCore): Remove unneeded breaks.
(WebKit::UserMediaPermissionRequestManagerProxy::searchForGrantedRequest const): Remove unneeded namespace.
(WebKit::UserMediaPermissionRequestManagerProxy::wasRequestDenied): Ditto.
(WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame): Ditto.
(WebKit::UserMediaPermissionRequestManagerProxy::getUserMediaPermissionInfo): Ditto.
(WebKit::UserMediaPermissionRequestManagerProxy::enumerateMediaDevicesForFrame): Ditto.
(WebKit::UserMediaPermissionRequestManagerProxy::syncWithWebCorePrefs const): Ditto.
(WebKit::UserMediaPermissionRequestManagerProxy::captureStateChanged): Set the watchdog timer
to the correct interval based on capture state.
(WebKit::UserMediaPermissionRequestManagerProxy::watchdogTimerFired): Clear cached state.

  • UIProcess/UserMediaPermissionRequestManagerProxy.h:

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: Add new test
  • TestWebKitAPI/Tests/WebKit/GetUserMediaReprompt.mm: Added.

(-[GetUserMediaRepromptUIDelegate _webView:requestUserMediaAuthorizationForDevices:url:mainFrameURL:decisionHandler:]):
(-[GetUserMediaRepromptUIDelegate _webView:checkUserMediaPermissionForURL:mainFrameURL:frameIdentifier:decisionHandler:]):
(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKit/getUserMedia.html:
3:06 PM Changeset in webkit [223987] by Ross Kirsling
  • 2 edits in trunk/Tools

Add committer status for Ross Kirsling
https://bugs.webkit.org/show_bug.cgi?id=178832

Unreviewed.

  • Scripts/webkitpy/common/config/contributors.json:
2:47 PM Changeset in webkit [223986] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Unreviewed, add missing copyright header to ServiceWorkerClientType.idl.

  • workers/service/ServiceWorkerClientType.idl:
2:36 PM Changeset in webkit [223985] by Chris Dumez
  • 8 edits
    1 copy in trunk/Source/WebCore

Make toJS() do the right thing for ServiceWorkerClient
https://bugs.webkit.org/show_bug.cgi?id=178816

Reviewed by Youenn Fablet.

Make toJS() do the right thing for ServiceWorkerClient. In particular,
it needs to construct a JSServiceWorkerWindowClient wrapper if the
implementation object is a ServiceWorkerWindowClient.

Also, ServiceWorkerClient does not need to be an ActiveDOMObject as
it does not have any long-running tasks. Make it a ContextDestructionObject
instead for now.

  • CMakeLists.txt:
  • DerivedSources.make:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • workers/service/ServiceWorkerClient.cpp:

(WebCore::ServiceWorkerClient::postMessage):

  • workers/service/ServiceWorkerClient.h:

(WebCore::ServiceWorkerClient::create):

  • workers/service/ServiceWorkerClient.idl:
  • workers/service/ServiceWorkerClientType.h: Copied from Source/WebCore/workers/service/ServiceWorkerClient.idl.
  • workers/service/ServiceWorkerClientType.idl: Added.
  • workers/service/ServiceWorkerClients.h:
  • workers/service/ServiceWorkerClients.idl:
2:32 PM Changeset in webkit [223984] by Simon Fraser
  • 16 edits
    1 move
    3 adds in trunk

When navigating back to a page, compositing layers may not use accelerated drawing
https://bugs.webkit.org/show_bug.cgi?id=178749
rdar://problem/35158946

Reviewed by Dean Jackson.
Source/WebCore:

There were two issues with setting GraphicsLayerCA's "acceleratesDrawing" state which
occurred on back navigation, related to the ordering of style recalcs and layout.

First, at style recalc time, we created a RenderLayerCompositor but hadn't yet called
its cacheAcceleratedCompositingFlags(), so any layers created during style update
didn't get accelerated drawing. Fix by making cacheAcceleratedCompositingFlags() internal
to RenderLayerCompositor and calling it from willRecalcStyle() and updateCompositingLayers().

Secondly, GraphicsLayerCA::commitLayerChangesBeforeSublayers() needs to updateAcceleratesDrawing()
before updating tiles, so that new tiles fetch the right acceleratesDrawing state from
the TileController.

Test: compositing/accelerated-layers-after-back.html

  • page/FrameView.cpp:

(WebCore::FrameView::updateCompositingLayersAfterLayout):

  • platform/graphics/ca/GraphicsLayerCA.cpp:

(WebCore::GraphicsLayerCA::commitLayerChangesBeforeSublayers):

  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::willRecalcStyle):
(WebCore::RenderLayerCompositor::didRecalcStyleWithNoPendingLayout):
(WebCore::RenderLayerCompositor::updateCompositingLayers):

  • rendering/RenderLayerCompositor.h:

Source/WebKit:

Avoid assertions when a test enables accelerated drawing (which we can't support
in the iOS simulator).

  • Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:

(WebKit::RemoteLayerBackingStore::ensureBackingStore):

Tools:

Fix WTR and DRT to parse "useAcceleratedDrawing" out of "webkit-test-runner" options
and use it to set the state of the web view.

  • DumpRenderTree/TestOptions.h:
  • DumpRenderTree/TestOptions.mm:

(TestOptions::TestOptions):

  • DumpRenderTree/mac/DumpRenderTree.mm:

(setWebPreferencesForTestOptions):

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::resetPreferencesToConsistentValues):
(WTR::updateTestOptionsFromTestHeader):

  • WebKitTestRunner/TestOptions.h:

(WTR::TestOptions::hasSameInitializationOptions const):

LayoutTests:

Moved iframes/resources/page-cache-helper.html up to compositing/resources/go-back.html.

  • compositing/accelerated-layers-after-back-expected.txt: Added.
  • compositing/accelerated-layers-after-back.html: Added.
  • compositing/iframes/page-cache-layer-tree.html:
  • compositing/page-cache-back-crash.html:
  • compositing/resources/go-back.html: Renamed from LayoutTests/compositing/iframes/resources/page-cache-helper.html.
  • platform/ios/compositing/accelerated-layers-after-back-expected.txt: Added.
2:30 PM Changeset in webkit [223983] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Display fetch() initiated loads as "fetch" instead of "xhr" in the Network Tab
https://bugs.webkit.org/show_bug.cgi?id=178826

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-10-25
Reviewed by Youenn Fablet.

  • UserInterface/Views/NetworkTableContentView.js:

(WI.NetworkTableContentView.shortDisplayNameForResourceType):
Fetch and XHR loads are still grouped under the succinct "XHR" filter, but
at least display the better type name in the "Type" column of the table.

2:19 PM Changeset in webkit [223982] by achristensen@apple.com
  • 5 edits in trunk/LayoutTests

LayoutTest http/tests/loading/basic-credentials-sent-automatically.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=159427

Reviewed by Youenn Fablet.

Use setTimeout to make load delegate callback printing more deterministic.
The important part is that the credentials are printed, and they still are.

  • http/tests/loading/basic-credentials-sent-automatically-expected.txt:
  • http/tests/loading/basic-credentials-sent-automatically.html:
  • platform/mac/TestExpectations:
  • platform/wk2/http/tests/loading/basic-credentials-sent-automatically-expected.txt:
2:17 PM Changeset in webkit [223981] by commit-queue@webkit.org
  • 35 edits
    2 copies
    5 adds in trunk

Enable ServiceWorker to fetch resources
https://bugs.webkit.org/show_bug.cgi?id=178673

Patch by Youenn Fablet <youenn@apple.com> on 2017-10-25
Reviewed by Brady Eidson.

Source/WebCore:

Test: http/tests/workers/service/service-worker-fetch.html

Allow reusing of EmptyFrameLoaderClient for network loading in WebKit Service Worker environment.
Allow overriding the creation of a document loader, pageID, frameID and sessionID getters.

Allow the possibility to create synthetic documents for all ports.

Beefing up ServiceWorkerThreadProxy as it owns a Document and a Page that do nothing but server
the purpose of loading resources for a service worker thread.

  • WebCore.xcodeproj/project.pbxproj:
  • loader/DocumentLoader.h:

(WebCore::DocumentLoader::setResponse):

  • loader/EmptyClients.cpp:

(WebCore::EmptyFrameLoaderClient::sessionID const):
(WebCore::EmptyFrameLoaderClient::createNetworkingContext):
(WebCore::createEmptyFrameNetworkingContext):

  • loader/EmptyClients.h:
  • loader/EmptyFrameLoaderClient.h: Added.
  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::initForSynthesizedDocument):

  • loader/FrameLoader.h:
  • loader/FrameLoaderClient.h:
  • workers/service/context/ServiceWorkerThread.cpp:

(WebCore::ServiceWorkerThread::ServiceWorkerThread):
(WebCore::m_workerObjectProxy):

  • workers/service/context/ServiceWorkerThread.h:
  • workers/service/context/ServiceWorkerThreadProxy.cpp:

(WebCore::ServiceWorkerThreadProxy::create):
(WebCore::createPageForServiceWorker):
(WebCore::ServiceWorkerThreadProxy::ServiceWorkerThreadProxy):
(WebCore::ServiceWorkerThreadProxy::postTaskToLoader):

  • workers/service/context/ServiceWorkerThreadProxy.h:

Test: http/tests/workers/service/service-worker-fetch.html

Source/WebKit:

ServiceWorkerContextManager makes use of the new ServiceWorkerThreadProxy.
It creates the necessary environment for the thread to make use of network loads, web sockets and cache storage.
Fetch is functional with these changes.

ServiceWorkerProcessProxy is introduced as a UIProcess proxy to the service worker process.
This process proxy is responsible to give the pageID used by all service worker thread instances for network loads.
ServiceWorkerContextManager is responsible to give a unique frameID for all service worker threads.
This is necessary as these two ids are currently needed for any network load.

ServiceWorkerThreadProxy creates its own FrameLoaderClient which is now used to get pageID, frameID and sessionID.

  • UIProcess/ServiceWorkerProcessProxy.cpp: Added.

(WebKit::ServiceWorkerProcessProxy::ServiceWorkerProcessProxy):
(WebKit::m_serviceWorkerPageID):
(WebKit::ServiceWorkerProcessProxy::~ServiceWorkerProcessProxy):
(WebKit::ServiceWorkerProcessProxy::start):

  • UIProcess/ServiceWorkerProcessProxy.h: Added.
  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::getWorkerContextProcessConnection):
(WebKit::WebProcessPool::createNewWebProcess):
(WebKit::WebProcessPool::initializeNewWebProcess):
(WebKit::WebProcessPool::disconnectProcess):
(WebKit::WebProcessPool::createNewWebProcessRespectingProcessCountLimit):
(WebKit::WebProcessPool::createWebPage):

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

(WebKit::WebProcessProxy::generatePageID):

  • UIProcess/WebProcessProxy.h:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/Network/WebLoaderStrategy.cpp:

(WebKit::WebLoaderStrategy::scheduleLoad):
(WebKit::WebLoaderStrategy::scheduleLoadFromNetworkProcess):
(WebKit::WebLoaderStrategy::startPingLoad):

  • WebProcess/Network/WebLoaderStrategy.h:
  • WebProcess/Storage/ServiceWorkerContextManager.cpp:

(WebKit::ServiceWorkerContextManager::ServiceWorkerContextManager):
(WebKit::ServiceWorkerContextManager::startServiceWorker):
(WebKit::ServiceWorkerContextManager::startFetch):

  • WebProcess/Storage/ServiceWorkerContextManager.h:
  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:

(WebKit::WebFrameLoaderClient::pageID const):
(WebKit::WebFrameLoaderClient::frameID const):
(WebKit::WebFrameLoaderClient::sessionID const):

  • WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::getWorkerContextConnection):

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

Source/WebKitLegacy/mac:

  • WebCoreSupport/WebFrameLoaderClient.mm:

(WebFrameLoaderClient::pageID const):
(WebFrameLoaderClient::frameID const):
(WebFrameLoaderClient::sessionID const):

Added implementation to the new getters.
They are noop in the context of WK1.

Source/WebKitLegacy/win:

Added implementation to the new getters.
They are noop in the context of WK1.

  • WebCoreSupport/WebFrameLoaderClient.cpp:

(WebFrameLoaderClient::pageID const):
(WebFrameLoaderClient::frameID const):
(WebFrameLoaderClient::sessionID const):

  • WebCoreSupport/WebFrameLoaderClient.h:

LayoutTests:

  • http/tests/workers/service/resources/service-worker-fetch-worker.js: Added.
  • http/tests/workers/service/resources/service-worker-fetch.js: Added.
  • http/tests/workers/service/service-worker-fetch-expected.txt: Added.
  • http/tests/workers/service/service-worker-fetch.html: Added.
2:12 PM Changeset in webkit [223980] by msaboff@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

REGRESSION(r223937): Use of -fobjc-weak causes build failures with older compilers
https://bugs.webkit.org/show_bug.cgi?id=178825

Reviewed by Mark Lam.

Enable ARC for ARM64_32. This eliminate the need for setting CLANG_ENABLE_OBJC_WEAK.

  • Configurations/ToolExecutable.xcconfig:
2:12 PM Changeset in webkit [223979] by webkit@devinrousso.com
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Canvas Tab: selected canvas card loses selection outline style while recording
https://bugs.webkit.org/show_bug.cgi?id=178814
<rdar://problem/35177317>

Reviewed by Brian Burg.

  • UserInterface/Views/CanvasOverviewContentView.css:

(.content-view.canvas-overview .content-view.canvas):
(.content-view.canvas-overview .content-view.canvas > :matches(header, .preview, footer)):
(.content-view.canvas-overview .content-view.canvas.selected > :matches(.preview, footer),):
(.content-view.canvas-overview .content-view.canvas > header):
(.content-view.canvas-overview .content-view.canvas.is-recording > header):
(.content-view.canvas-overview .content-view.canvas > .preview):
(.content-view.canvas-overview .content-view.canvas > footer):
(.content-view.canvas-overview .content-view.canvas.selected:not(.is-recording)): Deleted.
Instead of applying the border to the entire element, apply parts of the border to each of
its children so that we can choose what colors to use for each part.

2:09 PM Changeset in webkit [223978] by Nikita Vasilyev
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: [PARITY] Styles Redesign: Add color gradient, bezier curve, and spring inline widgets
https://bugs.webkit.org/show_bug.cgi?id=178404
<rdar://problem/35035992>

Reviewed by Devin Rousso.

Add inline widgets for the following CSS values:

  • Gradients, e.g. background-image: linear-gradient(yellow, orange)
  • Bezier curves, e.g. transition-timing-function: cubic-bezier(0.68, -0.55, 0.265, 1.55)
  • Spring functions, e.g. transition-timing-function: spring(1, 2, 2, 4)
  • UserInterface/Models/Color.js:

(WI.Color.prototype.toString):
Don't throw. The are never try/catch blocks on the callsites.

  • UserInterface/Views/SpreadsheetStyleProperty.js:

(WI.SpreadsheetStyleProperty.prototype._renderValue):
(WI.SpreadsheetStyleProperty.prototype._createInlineSwatch):
(WI.SpreadsheetStyleProperty.prototype._addGradientTokens):
(WI.SpreadsheetStyleProperty.prototype._addColorTokens):
(WI.SpreadsheetStyleProperty.prototype._addTimingFunctionTokens):

1:44 PM Changeset in webkit [223977] by jmarcell@apple.com
  • 7 edits in trunk/Source

Versioning.

1:18 PM Changeset in webkit [223976] by jmarcell@apple.com
  • 1 copy in tags/Safari-605.1.12

Tag Safari-605.1.12.

12:48 PM Changeset in webkit [223975] by Dewei Zhu
  • 3 edits in trunk/Websites/perf.webkit.org

Fix a bug in syncing script that test/build syncer is never set.
https://bugs.webkit.org/show_bug.cgi?id=178772

Reviewed by Ryosuke Niwa.

Neither 'buildSyncer' nor 'testSyncer' is ever set.
Added a unit test to cover this case.

  • server-tests/tools-sync-buildbot-integration-tests.js:

(createTriggerable): Refactor it to allow customized name.

  • tools/js/buildbot-triggerable.js:

(BuildbotTriggerable.prototype._pullBuildbotOnAllSyncers): Update syncer info accordingly.
(BuildbotTriggerable._testGroupMapForBuildRequests): Initialize build and test syncer to null.

12:42 PM Changeset in webkit [223974] by jer.noble@apple.com
  • 6 edits
    6 adds in trunk

UNPACK_FLIP_Y is broken for MSE-backed videos
https://bugs.webkit.org/show_bug.cgi?id=178774

Reviewed by Dean Jackson.

Source/WebCore:

The global GLSL variable gl_Position can apparently only be set once, and any modifications
made after that initial set are ignored. So rather than implement flipping by changing
gl_Position.y, flip the texture coordinates instead.

Drive-by fix: some of the constants used in VideoTextureCopierCV are not defined on older
macOS versions, so make them optional.

Tests: fast/canvas/webgl/texImage2D-mse-flipY-false.html

fast/canvas/webgl/texImage2D-mse-flipY-true.html

  • platform/graphics/cv/VideoTextureCopierCV.cpp:

(WebCore::transferFunctionFromString):
(WebCore::VideoTextureCopierCV::initializeUVContextObjects):

  • platform/cocoa/CoreVideoSoftLink.cpp:
  • platform/cocoa/CoreVideoSoftLink.h:

LayoutTests:

  • fast/canvas/webgl/resources/orientation-flipped-fragmented.mp4: Added.
  • fast/canvas/webgl/resources/orientation-normal-fragmented.mp4: Added.
  • fast/canvas/webgl/texImage2D-mse-flipY-false-expected.txt: Added.
  • fast/canvas/webgl/texImage2D-mse-flipY-false.html: Added.
  • fast/canvas/webgl/texImage2D-mse-flipY-true-expected.txt: Added.
  • fast/canvas/webgl/texImage2D-mse-flipY-true.html: Added.
  • platform/ios/TestExpectations:
12:36 PM Changeset in webkit [223973] by Chris Dumez
  • 10 edits
    1 copy
    1 add in trunk/Source/WebCore

[Service Worker] Add stubs for serviceWorkerClient.type
https://bugs.webkit.org/show_bug.cgi?id=178812

Reviewed by Youenn Fablet.

Add stubs for serviceWorkerClient.type to match the latest specification:

  • CMakeLists.txt:
  • DerivedSources.make:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • workers/service/ServiceWorkerClient.cpp:

(WebCore::ServiceWorkerClient::type const):

  • workers/service/ServiceWorkerClient.h:
  • workers/service/ServiceWorkerClient.idl:
  • workers/service/ServiceWorkerClientType.h: Added.
  • workers/service/ServiceWorkerClientType.idl: Added.
  • workers/service/ServiceWorkerClients.h:
  • workers/service/ServiceWorkerClients.idl:
12:27 PM Changeset in webkit [223972] by keith_miller@apple.com
  • 4 edits in trunk/Source/WebCore

Move mathml and page to unified souces
https://bugs.webkit.org/show_bug.cgi?id=178770

Rubber-stamped by Tim Horton.

  • CMakeLists.txt:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
12:06 PM Changeset in webkit [223971] by keith_miller@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Fix implicit cast of enum, which seems to break the windows build of unified sources.
https://bugs.webkit.org/show_bug.cgi?id=178822

Reviewed by Saam Barati.

  • bytecode/DFGExitProfile.h:

(JSC::DFG::FrequentExitSite::hash const):

12:02 PM Changeset in webkit [223970] by Nikita Vasilyev
  • 5 edits in trunk/Source/WebInspectorUI

Web Inspector: Styles Redesign: Newly added invalid property isn't immediately shown as invalid
https://bugs.webkit.org/show_bug.cgi?id=178488

Reviewed by Brian Burg.

  • UserInterface/Models/CSSStyleDeclaration.js:

(WI.CSSStyleDeclaration.prototype.newBlankProperty):
Call this.update to update _properties, _allProperties, _visibleProperties, and _allVisibleProperties.

  • UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css:

(.spreadsheet-style-declaration-editor .property:matches(.invalid-name, .other-vendor, .overridden):not(.disabled)):
(.spreadsheet-style-declaration-editor .property.invalid-name:not(.disabled)):
(.spreadsheet-style-declaration-editor .property.invalid-value:not(.disabled) .value):
When the property name is valid, but the value isn't, display red line-through only for the value.
This is how it works in the old styles sidebar as well.

  • UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:

(WI.SpreadsheetCSSStyleDeclarationEditor.prototype._propertiesChanged):
(WI.SpreadsheetCSSStyleDeclarationEditor):

  • UserInterface/Views/SpreadsheetStyleProperty.js:

(WI.SpreadsheetStyleProperty):
(WI.SpreadsheetStyleProperty.prototype.updateClassNames):
(WI.SpreadsheetStyleProperty.prototype._update):
Introduce updateClassNames method. Unlike _update, it doesn't change text selection or focus and
can be safely called on a property while it's being edited.

12:01 PM Changeset in webkit [223969] by jmarcell@apple.com
  • 5 edits in branches/safari-604-branch/Source/WebCore

Cherry-pick r223960. rdar://problem/35178892

11:54 AM Changeset in webkit [223968] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore

fast/images/animated-gif-paint-after-animation.html flaky crash
https://bugs.webkit.org/show_bug.cgi?id=178510

Patch by Fujii Hironori <Fujii Hironori> on 2017-10-25
Reviewed by Said Abou-Hallawa.

ScalableImageDecoder was accessed from the main thread and the
image decoding thread without a mutex.

No new tests because there is no behavior change.

  • platform/image-decoders/ScalableImageDecoder.h: Add m_mutex. Lock the mutex in setData.
  • platform/image-decoders/ScalableImageDecoder.cpp:

(WebCore::ScalableImageDecoder::frameIsCompleteAtIndex const): Lock the mutex.
(WebCore::ScalableImageDecoder::frameHasAlphaAtIndex const): Ditto.
(WebCore::ScalableImageDecoder::frameBytesAtIndex const): Ditto.
(WebCore::ScalableImageDecoder::frameDurationAtIndex const): Ditto.
(WebCore::ScalableImageDecoder::createFrameImageAtIndex): Ditto.

11:42 AM Changeset in webkit [223967] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Mark http/tests/loading/basic-credentials-sent-automatically.html as flaky.
https://bugs.webkit.org/show_bug.cgi?id=159427

Unreviewed test gardening.

  • platform/mac/TestExpectations:
11:38 AM Changeset in webkit [223966] by commit-queue@webkit.org
  • 4 edits
    2 copies
    2 adds in trunk/Source/WebKit

[WinCairo] Add WebKit platform files for wincairo webkit
https://bugs.webkit.org/show_bug.cgi?id=178000

Patch by Yousuke Kimoto <yousuke.kimoto@sony.com> on 2017-10-25
Reviewed by Alex Christensen.

  • Platform/Module.h:
  • Platform/SharedMemory.h:

(WebKit::SharedMemory::handle const):

  • Platform/win/LoggingWin.cpp: Added. It is based on Source/WebCore/platform/win/LoggingWin.cpp

(WebKit::logLevelString):

  • Platform/win/ModuleWin.cpp: Added.

(WebKit::Module::load):
(WebKit::Module::unload):
(WebKit::Module::platformFunctionPointer const):

  • Platform/win/SharedMemoryWin.cpp: Added.

(WebKit::SharedMemory::Handle::Handle):
(WebKit::SharedMemory::Handle::~Handle):
(WebKit::SharedMemory::Handle::isNull const):
(WebKit::SharedMemory::Handle::encode const):
(WebKit::SharedMemory::Handle::clear):
(WebKit::getDuplicatedHandle):
(WebKit::SharedMemory::Handle::decode):
(WebKit::protectAttribute):
(WebKit::SharedMemory::allocate):
(WebKit::SharedMemory::create):
(WebKit::accessRights):
(WebKit::SharedMemory::map):
(WebKit::SharedMemory::adopt):
(WebKit::SharedMemory::~SharedMemory):
(WebKit::SharedMemory::createHandle):
(WebKit::SharedMemory::systemPageSize):

  • PlatformWin.cmake:
11:32 AM Changeset in webkit [223965] by commit-queue@webkit.org
  • 8 edits in trunk/Source

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

"It made WasmBench crash" (Requested by saamyjoon on #webkit).

Reverted changeset:

"bmalloc mutex should be adaptive"
https://bugs.webkit.org/show_bug.cgi?id=177839
https://trac.webkit.org/changeset/222945

11:28 AM Changeset in webkit [223964] by Chris Dumez
  • 20 edits
    3 adds in trunk

Add support for unregistering a service worker
https://bugs.webkit.org/show_bug.cgi?id=178735

Reviewed by Brady Eidson.

Source/WebCore:

Add support for unregistering a service worker:

Test: http/tests/workers/service/basic-unregister.https.html

  • workers/service/ServiceWorkerContainer.cpp:

(WebCore::ServiceWorkerContainer::addRegistration):
(WebCore::ServiceWorkerContainer::removeRegistration):
(WebCore::ServiceWorkerContainer::jobResolvedWithUnregistrationResult):

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

(WebCore::ServiceWorkerJob::resolvedWithUnregistrationResult):

  • workers/service/ServiceWorkerJob.h:
  • workers/service/ServiceWorkerJobClient.h:
  • workers/service/ServiceWorkerJobData.h:

(WebCore::ServiceWorkerJobData::encode const):
(WebCore::ServiceWorkerJobData::decode):

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

(WebCore::containerForScriptExecutionContext):
(WebCore::ServiceWorkerRegistration::unregister):

  • workers/service/server/SWClientConnection.cpp:

(WebCore::SWClientConnection::registrationJobResolvedInServer):
(WebCore::SWClientConnection::unregistrationJobResolvedInServer):

  • workers/service/server/SWClientConnection.h:
  • workers/service/server/SWServer.cpp:

(WebCore::SWServer::resolveRegistationJob):
(WebCore::SWServer::resolveUnregistrationJob):

  • workers/service/server/SWServer.h:
  • workers/service/server/SWServerRegistration.cpp:

(WebCore::SWServerRegistration::scriptContextStarted):
(WebCore::SWServerRegistration::startNextJob):
(WebCore::SWServerRegistration::runUnregisterJob):
(WebCore::SWServerRegistration::resolveWithRegistrationOnMainThread):
(WebCore::SWServerRegistration::resolveWithUnregistrationResultOnMainThread):
(WebCore::SWServerRegistration::resolveCurrentRegistrationJob):
(WebCore::SWServerRegistration::resolveCurrentUnregistrationJob):

  • workers/service/server/SWServerRegistration.h:

Source/WebKit:

Add support for unregistering a service worker:

  • StorageProcess/ServiceWorker/WebSWServerConnection.cpp:

(WebKit::WebSWServerConnection::resolveRegistrationJobInClient):
(WebKit::WebSWServerConnection::resolveUnregistrationJobInClient):

  • StorageProcess/ServiceWorker/WebSWServerConnection.h:
  • WebProcess/Storage/WebSWClientConnection.messages.in:

LayoutTests:

Add layout test coverage.

  • http/tests/workers/service/basic-unregister.https-expected.txt: Added.
  • http/tests/workers/service/basic-unregister.https.html: Added.
  • http/tests/workers/service/resources/basic-unregister.js: Added.
11:21 AM Changeset in webkit [223963] by Simon Fraser
  • 3 edits in trunk/Source/WebCore

MediaSessionManager* needs to catch Obj-C exceptions
https://bugs.webkit.org/show_bug.cgi?id=178813

Reviewed by Tim Horton.

Wrap all calls out to Objective-C with BEGIN_BLOCK_OBJC_EXCEPTIONS/END_BLOCK_OBJC_EXCEPTIONS.

  • platform/audio/ios/MediaSessionManagerIOS.mm:

(WebCore::MediaSessionManageriOS::MediaSessionManageriOS):
(WebCore::MediaSessionManageriOS::~MediaSessionManageriOS):
(WebCore::MediaSessionManageriOS::hasWirelessTargetsAvailable):
(WebCore::MediaSessionManageriOS::configureWireLessTargetMonitoring):
(WebCore::MediaSessionManageriOS::updateNowPlayingInfo):
(WebCore::MediaSessionManageriOS::externalOutputDeviceAvailableDidChange):
(-[WebMediaSessionHelper allocateVolumeView]):
(-[WebMediaSessionHelper initWithCallback:]):

  • platform/audio/mac/MediaSessionManagerMac.mm:

(WebCore::MediaSessionManagerMac::updateNowPlayingInfo):

11:00 AM Changeset in webkit [223962] by aestes@apple.com
  • 11 edits in trunk

[Payment Request] Implement the "user aborts the payment request" algorithm
https://bugs.webkit.org/show_bug.cgi?id=178810

Reviewed by Tim Horton.

Source/WebCore:

  • Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp:

(WebCore::ApplePayPaymentHandler::didCancelPaymentSession):

  • Modules/applepay/paymentrequest/ApplePayPaymentHandler.h:
  • Modules/paymentrequest/PaymentRequest.cpp:

(WebCore::PaymentRequest::cancel):

  • Modules/paymentrequest/PaymentRequest.h:
  • testing/MockPaymentCoordinator.cpp:

(WebCore::MockPaymentCoordinator::cancelPayment):

  • testing/MockPaymentCoordinator.h:
  • testing/MockPaymentCoordinator.idl:

LayoutTests:

  • http/tests/paymentrequest/payment-request-show-method.https-expected.txt:
  • http/tests/paymentrequest/payment-request-show-method.https.html:
10:42 AM Changeset in webkit [223961] by Ryan Haddad
  • 2 edits in trunk/JSTests

Mark test262.yaml/test262/test/language/statements/try/tco-catch.js as passing.
https://bugs.webkit.org/show_bug.cgi?id=178592

Unreviewed test gardening.

  • test262.yaml:
10:39 AM Changeset in webkit [223960] by jer.noble@apple.com
  • 5 edits in trunk/Source/WebCore

Autoplay muted videos still stop playback of other streaming apps in the background
https://bugs.webkit.org/show_bug.cgi?id=177920

Reviewed by Eric Carlson.

When creating a new <video> or <audio> element, the global AudioSession can sometimes have
its sessionCategory() set to "MediaPlayback", even if the element does not yet have a
source. This is because the constructor for the MediaElementSession is called before
m_isPlayingToWirelessTarget is initialized, and so in the MediaElementSession constructor,
the media element's m_isPlayingToWirelessTarget ivar is sometimes (uninitialized) true.

We could move the MediaElementSession ivar to the very end of the header, so it's
initialized last, but that still leaves the possibility of the MediaElementSession et. all
calling into the HTMLMediaElement before it's subclass's constructors have a chance to
initialize their own ivars (much less their vtables). So instead, we'll create and set the
MediaElementSession in a finishInitialization() method called from the HTMLVideoElement and
HTMLAudioElement's create() factory methods.

  • html/HTMLAudioElement.cpp:

(WebCore::HTMLAudioElement::create):

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::HTMLMediaElement):
(WebCore::HTMLMediaElement::finishInitialization):

  • html/HTMLMediaElement.h:
  • html/HTMLVideoElement.cpp:

(WebCore::HTMLVideoElement::create):

10:27 AM Changeset in webkit [223959] by dbates@webkit.org
  • 3 edits in trunk/LayoutTests

Attempt to fix flaky test fast/writing-mode/english-bt-text-with-spelling-marker.html following r223938
(https://bugs.webkit.org/show_bug.cgi?id=178759)

Call internals.updateEditorUINowIfScheduled() to force the editor UI to update and add spelling markers.

  • fast/writing-mode/english-bt-text-with-spelling-marker-expected.html:
  • fast/writing-mode/english-bt-text-with-spelling-marker.html:
10:19 AM Changeset in webkit [223958] by Chris Dumez
  • 8 edits
    2 copies in trunk/Source/WebKit

Make SharedStringHashTable less error prone
https://bugs.webkit.org/show_bug.cgi?id=178764

Reviewed by Youenn Fablet.

SharedStringHashTable is backed by SharedMemory and this SharedMemory
may be readonly (and is when used in the WebContent process). As a result,
some of the operations on SharedStringHashTable that write to this shared
memory will crash if called and the SharedMemory is readonly.

To make this less error prone, introduce a new SharedStringHashTableReadOnly
base class for SharedStringHashTable and only keep the operations that
write to the shared memory on SharedStringHashTableReadOnly (namely, add() /
remove() / clear(). Update VisitedLinkTableController and WebSWOriginTable
to use SharedStringHashTableReadOnly since they are instantiated in the
WebContent process and use readonly shared memory.

  • Shared/SharedStringHashTable.cpp:

(WebKit::SharedStringHashTableReadOnly::SharedStringHashTableReadOnly):
(WebKit::SharedStringHashTableReadOnly::~SharedStringHashTableReadOnly):
(WebKit::SharedStringHashTableReadOnly::setSharedMemory):
(WebKit::doubleHash):
(WebKit::SharedStringHashTableReadOnly::contains const):
(WebKit::SharedStringHashTableReadOnly::findSlot const):
(WebKit::SharedStringHashTable::SharedStringHashTable):
(WebKit::SharedStringHashTable::~SharedStringHashTable):
(WebKit::SharedStringHashTable::add):
(WebKit::SharedStringHashTable::remove):
(WebKit::SharedStringHashTable::clear):

  • Shared/SharedStringHashTable.h:
  • WebProcess/Storage/WebSWOriginTable.h:
  • WebProcess/WebPage/VisitedLinkTableController.cpp:

(WebKit::VisitedLinkTableController::removeAllVisitedLinks):

  • WebProcess/WebPage/VisitedLinkTableController.h:
10:18 AM Changeset in webkit [223957] by eric.carlson@apple.com
  • 3 edits in trunk/LayoutTests

Web Inspector: Enable WebKit logging configuration and display
https://bugs.webkit.org/show_bug.cgi?id=177027
<rdar://problem/33964767>

Unreviewed, fix flakey test.

  • inspector/console/webcore-logging-expected.txt:
  • inspector/console/webcore-logging.html:
9:58 AM Changeset in webkit [223956] by rmorisset@apple.com
  • 5 edits
    2 deletes in trunk

Support the TailBench9000 benchmark in run-jsc-benchmarks
https://bugs.webkit.org/show_bug.cgi?id=178451

Reviewed by Saam Barati.

PerformanceTests:

The separation between the definition of the benchmarks (in merge-sort.js and n-body.js) and their loops (in *-run.js)
was causing trouble since the load of the js files only succeeded from the same directory. So I chose to merge them, following
the example of the other benchmarks.

  • TailBench9000/merge-sort-run.js: Removed.
  • TailBench9000/merge-sort.js:
  • TailBench9000/n-body-run.js: Removed.
  • TailBench9000/n-body.js:

Tools:

  • Scripts/run-jsc-benchmarks:
9:38 AM Changeset in webkit [223955] by jfernandez@igalia.com
  • 3 edits in trunk/Source/WebCore

[css-grid] Avoid clearing the overrideContainingBlockWidth if possible
https://bugs.webkit.org/show_bug.cgi?id=178260

Reviewed by Sergio Villar Senin.

Since the intrinsic width computation uses the same logic than the
track sizing algorithm we are clearing the overrideContainingBlockWidth
of some grid items that are required to laid out them properly.

It's very uncommon that any intrinsic size computation isn't performed
as part of a layout process. However, if it happens, once cleared the
overrideContainingBlockWidth it may lead to an incorrect layout of the
affected grid items.

This change is a defensive approach to avoid the issues caused by
such off-layout preferred size requests, which may imply recomputing
the grid container intrinsic size.

No new tests, because we are only removing some redundant logic.

  • rendering/GridTrackSizingAlgorithm.cpp:

(WebCore::GridTrackSizingAlgorithmStrategy::minContentForChild const):
(WebCore::GridTrackSizingAlgorithmStrategy::maxContentForChild const):
(WebCore::GridTrackSizingAlgorithmStrategy::minSizeForChild const):
(WebCore::GridTrackSizingAlgorithmStrategy::updateOverrideContainingBlockContentSizeForChild const):
(WebCore::IndefiniteSizeStrategy::minLogicalWidthForChild const):
(WebCore::DefiniteSizeStrategy::minLogicalWidthForChild const):

  • rendering/GridTrackSizingAlgorithm.h:
8:33 AM WebKitGTK/Gardening/Calendar edited by aboya@igalia.com
(diff)
8:11 AM Changeset in webkit [223954] by Gustavo Noronha Silva
  • 2 edits in trunk/Source/WebCore

Unreviewed follow up changing one more enum value as discussed in the bug
https://bugs.webkit.org/show_bug.cgi?id=177810

  • platform/glib/LowPowerModeNotifierGLib.cpp:

(WebCore::LowPowerModeNotifier::updateState): use NONE instead of DISCHARGING, to ensure
it will build even with older upower.

2:00 AM WebKitGTK/2.18.x edited by Adrian Perez de Castro
(diff)
1:34 AM Changeset in webkit [223953] by Adrian Perez de Castro
  • 15 edits in trunk

[WPE] Remove GLib API functions which use Cairo
https://bugs.webkit.org/show_bug.cgi?id=178205

Reviewed by Michael Catanzaro.

Source/WebKit:

Add PLATFORM(GTK) guards for the parts of of the GLib API which use cairo_surface_t (web
page snapshots and favicons), and remove the affected function prototypes from public API
headers. This way, the WPE version of the API is not tied to Cairo.

  • PlatformWPE.cmake:
  • UIProcess/API/glib/WebKitFaviconDatabase.cpp:
  • UIProcess/API/glib/WebKitFaviconDatabasePrivate.h:
  • UIProcess/API/glib/WebKitInjectedBundleClient.cpp:
  • UIProcess/API/glib/WebKitWebView.cpp:

(webkitWebViewConstructed):
(webkitWebViewGetProperty):
(webkitWebViewDispose):
(webkit_web_view_class_init):
(webkitWebViewLoadChanged):

  • UIProcess/API/glib/WebKitWebViewPrivate.h:
  • UIProcess/API/wpe/WebKitFaviconDatabase.h:
  • UIProcess/API/wpe/WebKitWebView.h:
  • WebProcess/InjectedBundle/API/glib/WebKitWebPage.cpp:

(webkitWebPageDidReceiveMessage):

Tools:

Add PLATFORM(GTK) guards for the API tests (or parts of them) which use cairo_surface_t (web
page snapshots and favicons) which are not available in the WPE version of the GLib API.

  • TestWebKitAPI/Tests/WebKitGLib/TestWebKitFaviconDatabase.cpp:

(testNotInitialized):
(testPrivateBrowsing):
(testFaviconDatabase):

  • TestWebKitAPI/Tests/WebKitGLib/TestWebKitFindController.cpp:

(testFindControllerHide):
(beforeAll):

  • TestWebKitAPI/glib/WebKitGLib/WebViewTest.cpp:
  • TestWebKitAPI/glib/WebKitGLib/WebViewTest.h:
12:39 AM Changeset in webkit [223952] by webkit@devinrousso.com
  • 9 edits in trunk

Web Inspector: preserve Recordings for each Canvas after closing the Canvas tab
https://bugs.webkit.org/show_bug.cgi?id=178767
<rdar://problem/35167239>

Reviewed by Brian Burg.

Source/WebInspectorUI:

  • UserInterface/Test.html:

Include CollectionTypes for tests.

  • UserInterface/Controllers/CanvasManager.js:

(WI.CanvasManager.prototype.recordingFinished):

  • UserInterface/Models/Canvas.js:

(WI.Canvas):
(WI.Canvas.prototype.get recordingCollection):

  • UserInterface/Models/CollectionTypes.js:

(WI.CanvasCollection):
(WI.RecordingCollection):

  • UserInterface/Views/CanvasContentView.js:

(WI.CanvasContentView.prototype.initialLayout):
(WI.CanvasContentView.prototype._addRecording):
(WI.CanvasContentView.prototype._recordingStopped):

  • UserInterface/Views/CanvasTabContentView.js:

(WI.CanvasTabContentView.prototype.attached):
(WI.CanvasTabContentView.prototype._recordingAdded):

LayoutTests:

  • inspector/canvas/resources/recording-utilities.js:

(TestPage.registerInitializer.window.startRecording):
Add assertions that the recording is added to the canvas' RecordingCollection.

12:17 AM Changeset in webkit [223951] by zandobersek@gmail.com
  • 16 edits in trunk

Make SERVICE_WORKER feature buildable on GTK, WPE
https://bugs.webkit.org/show_bug.cgi?id=178574

Reviewed by Carlos Garcia Campos.

Source/WebCore:

  • CMakeLists.txt: Add missing include paths and files to the build.
  • Sources.txt: Add missing files to the build.
  • WebCore.xcodeproj/project.pbxproj: Remove the JSDOMPromise.cpp and

JSFetchEventCustom.cpp targets, they're now built via unified sources.

  • bindings/js/JSFetchEventCustom.cpp: Guard custom JSFetchEvent code

with the ENABLE(SERVICE_WORKER) guards.

Source/WebKit:

  • CMakeLists.txt: Add missing files to the build.
  • StorageProcess/StorageProcess.cpp:

(WebKit::StorageProcess::didGetWorkerContextProcessConnection):
IPC::Attachment object should be accessed through an rvalue reference,
making it mutable and enabling releasing the file descriptor.

  • StorageProcess/StorageProcess.h: Adjust the method signature.
  • WebProcess/Storage/ServiceWorkerClientFetch.cpp:

Explicitly include the ResourceError header from WebCore (using a forwarding header).

  • WebProcess/Storage/WebServiceWorkerProvider.cpp:

Include the CachedResource header from WebCore (again using a forwarding header).

  • WebProcess/Storage/WebServiceWorkerProvider.h: Forward-declare the WebCore::CachedResource type.

Source/WTF:

  • wtf/Identified.h: Explicitly include the <atomic> header since

std::atomic<> is used in the ThreadSafeIdentified definition.

Tools:

  • Scripts/webkitperl/FeatureList.pm: Add the --service-worker option

that enables the SERVICE_WORKER feature flag. For now it's enabled
on Apple's Cocoa ports (even when build-webkit isn't used for those
builds, the flag is enabled here for consistency).

Oct 24, 2017:

11:55 PM Changeset in webkit [223950] by zandobersek@gmail.com
  • 3 edits in trunk/Source/bmalloc

[Linux] Enable Gigacage in x64 Linux environment
https://bugs.webkit.org/show_bug.cgi?id=177745
<rdar://problem/34773148>

Reviewed by Yusuke Suzuki.

Re-enable Gigacage on x86_64 Linux platforms after it was disabled in 223877.

The cause for the revert was problems with huge coredumps being generated
while Gigacage was enabled. The feature virtually allocates about 80GB of
memory at the beginning of the process lifetime. This is not a problem in
itself since the memory range is marked as not needed through madvise(),
but all this memory was still included upon core dump generation on Linux.
Since there are reasonable limits enforced upon core dumps, these were
being truncated every time, not yielding any useful information.

To avoid this, on Linux, invocations of madvise() with the MADV_NORMAL and
MADV_DONTNEED advice parameters should be accompanied with respectively
matching MADV_DODUMP and MADV_DONTDUMP madvise() calls. This correctly
avoids core-dumping any memory that's not yet been physically allocated.

  • bmalloc/Gigacage.h:
  • bmalloc/VMAllocate.h:

(bmalloc::vmDeallocatePhysicalPages):
(bmalloc::vmAllocatePhysicalPages):

11:26 PM Changeset in webkit [223949] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore

Clean up gcc build warnings about reaching the end of a non void function for webrtc classes
https://bugs.webkit.org/show_bug.cgi?id=178721

Patch by Alejandro G. Castro <alex@igalia.com> on 2017-10-24
Reviewed by Youenn Fablet.

Assert when we reach those situations and return some value after that to avoid warning.

No new tests, this is a clean up.

  • Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:

(WebCore::sessionDescriptionType):
(WebCore::signalingState):
(WebCore::toRTCIceConnectionState):

  • Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp:

(WebCore::bundlePolicyfromConfiguration):
(WebCore::iceTransportPolicyfromConfiguration):

10:37 PM Changeset in webkit [223948] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebInspectorUI

REGRESSION(r222181): Web Inspector: Augmenting Agents Domains are not getting activated
https://bugs.webkit.org/show_bug.cgi?id=178768
<rdar://problem/35081334>

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-10-24
Reviewed by Brian Burg.

  • UserInterface/Base/Main.js:

Simplify event dispatch.

  • UserInterface/Controllers/AppController.js:

(WI.AppController.prototype.activateExtraDomains):
Pass the domains on.

6:35 PM Changeset in webkit [223947] by rniwa@webkit.org
  • 5 edits
    2 adds in trunk

RenderSVGModelObject::checkIntersection triggers layout
https://bugs.webkit.org/show_bug.cgi?id=178710

Reviewed by Simon Fraser.

Source/WebCore:

Fixed the bug that checkIntersection and checkEnclosure no longer updates the layout after r223882.

Test: svg/custom/check-intersection-basic.svg

  • svg/SVGSVGElement.cpp:

(WebCore::SVGSVGElement::collectIntersectionOrEnclosureList):
(WebCore::SVGSVGElement::checkIntersection):
(WebCore::SVGSVGElement::checkEnclosure):

  • svg/SVGSVGElement.h:

LayoutTests:

Added the support for SVG documents to js-test.js, and added a basic test for checkIntersection
and checkEnclosure using it.

  • resources/js-test.js:

(ensureRootElement): Added. Creates a foreignObject element inside a SVG document.
(moveForeignObjectToTopIfNeeded): Added. In SVG, z-index order is determined by the element order.
In order to make the results visible, we move the foreignObject to the top by appending to the end
of the document element.
(getOrCreate):
(debug): Run innerHTML before appendChild as setting namespaceURI before running innerHTML would
result in span's being parsed as SVG elements.
(insertStyleSheet):
(finishJSTest):

  • svg/custom/check-intersection-basic-expected.txt: Added.
  • svg/custom/check-intersection-basic.svg: Added.
6:34 PM Changeset in webkit [223946] by Dewei Zhu
  • 3 edits in trunk/Websites/perf.webkit.org

Owner commit does not necessarily exist in the same commit set for an owned commit.
https://bugs.webkit.org/show_bug.cgi?id=178763

Reviewed by Ryosuke Niwa.

Remove the check based on previous incorrect assumption.
Added unit tests to cover this change.

  • public/privileged-api/create-test-group.php:
  • server-tests/privileged-api-create-test-group-tests.js:

(return.addTriggerableAndCreateTask.string_appeared_here.then.id.taskId.id.then):

5:52 PM Changeset in webkit [223945] by aestes@apple.com
  • 20 edits
    4 copies
    2 adds in trunk

[Apple Pay] Implement a paymentmethodselected event for PaymentRequest
https://bugs.webkit.org/show_bug.cgi?id=178765

Reviewed by Tim Horton.

Source/WebCore:

When the Apple Pay payment method changes, fire an applepaypaymentmethodchanged event on the
PaymentRequest object. The event has a paymentMethod property and an updateWith() method
which behaves identically to PaymentRequestUpdateEvent.updateWith().

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

  • DerivedSources.make:
  • Modules/applepay/ApplePayPaymentMethod.idl:
  • Modules/applepay/ApplePayPaymentMethodSelectedEvent.h:
  • Modules/applepay/PaymentMethod.h:

(WebCore::PaymentMethod::PaymentMethod): Deleted.
(WebCore::PaymentMethod::pkPaymentMethod const): Deleted.

  • Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp:

(WebCore::ApplePayPaymentHandler::detailsUpdated):
(WebCore::ApplePayPaymentHandler::paymentMethodUpdated):
(WebCore::ApplePayPaymentHandler::didSelectPaymentMethod):

  • Modules/applepay/paymentrequest/ApplePayPaymentHandler.h:
  • Modules/applepay/paymentrequest/ApplePayPaymentMethodUpdateEvent.cpp: Added.

(WebCore::ApplePayPaymentMethodUpdateEvent::ApplePayPaymentMethodUpdateEvent):
(WebCore::ApplePayPaymentMethodUpdateEvent::eventInterface const):

  • Modules/applepay/paymentrequest/ApplePayPaymentMethodUpdateEvent.h: Added.
  • Modules/applepay/paymentrequest/ApplePayPaymentMethodUpdateEvent.idl: Added.
  • Modules/paymentrequest/PaymentHandler.h:
  • Modules/paymentrequest/PaymentRequest.cpp:

(WebCore::PaymentRequest::shippingAddressChanged):
(WebCore::PaymentRequest::shippingOptionChanged):
(WebCore::PaymentRequest::dispatchEvent):
(WebCore::PaymentRequest::updateWith):
(WebCore::PaymentRequest::settleDetailsPromise):
(WebCore::PaymentRequest::dispatchUpdateEvent): Deleted.

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

(WebCore::PaymentRequestUpdateEvent::updateWith):

  • Modules/paymentrequest/PaymentRequestUpdateEvent.h:
  • WebCore.xcodeproj/project.pbxproj:
  • dom/EventNames.h:
  • dom/EventNames.in:
  • testing/MockPaymentCoordinator.cpp:

(WebCore::MockPaymentCoordinator::changePaymentMethod):

  • testing/MockPaymentCoordinator.h:
  • testing/MockPaymentCoordinator.idl:
  • testing/MockPaymentMethod.h: Added.

LayoutTests:

  • http/tests/ssl/applepay/ApplePayPaymentMethodUpdateEvent.https-expected.txt: Added.
  • http/tests/ssl/applepay/ApplePayPaymentMethodUpdateEvent.https.html: Added.
5:47 PM Changeset in webkit [223944] by commit-queue@webkit.org
  • 6 edits in trunk/Source

ServiceWorkerClientFetch should return an error that is not null in case of failure
https://bugs.webkit.org/show_bug.cgi?id=178761

Patch by Youenn Fablet <youenn@apple.com> on 2017-10-24
Reviewed by Geoffrey Garen.

Source/WebCore:

Covered by existing tests.

As per spec, ServiceWorkerJob should not go through Service Worker Handle Fetch
for fetching scripts.

  • workers/WorkerScriptLoader.cpp:

(WebCore::WorkerScriptLoader::loadAsynchronously):

  • workers/WorkerScriptLoaderClient.h:

(WebCore::WorkerScriptLoaderClient::isServiceWorkerClient const):

  • workers/service/ServiceWorkerJob.h:

Source/WebKit:

  • WebProcess/Storage/ServiceWorkerClientFetch.cpp:

(WebKit::ServiceWorkerClientFetch::didFail): Generating a General error.

5:36 PM Changeset in webkit [223943] by Michael Catanzaro
  • 3 edits in trunk/Tools

Unreviewed, fix name of Perl LibXML package on Fedora
https://bugs.webkit.org/show_bug.cgi?id=178206
<rdar://problem/35028586>

  • gtk/install-dependencies:
  • wpe/install-dependencies:
5:33 PM Changeset in webkit [223942] by keith_miller@apple.com
  • 4 edits in trunk/Source/WebCore

Move inspector and loader to unified sources.
https://bugs.webkit.org/show_bug.cgi?id=178760

Rubber-stamped by Tim Horton.

  • CMakeLists.txt:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
5:27 PM Changeset in webkit [223941] by achristensen@apple.com
  • 2 edits in trunk/Source/WebCore

Fix build after r223940

  • inspector/WebConsoleAgent.cpp:
5:12 PM Changeset in webkit [223940] by achristensen@apple.com
  • 2 edits in trunk/Source/WebCore

Fix Windows build after r223929.
https://bugs.webkit.org/show_bug.cgi?id=177027

  • inspector/WebConsoleAgent.cpp:

(WebCore::WebConsoleAgent::getLoggingChannels):
Always initialize the variable "level". Visual studio was complaining about the possibility of not initializing it
but this is only possible if logChannel->level is an invalid enum value.

5:09 PM Changeset in webkit [223939] by achristensen@apple.com
  • 2 edits in trunk/Source/WebCore

Fix Windows build after r223925
https://bugs.webkit.org/show_bug.cgi?id=178687

  • html/ImageBitmap.cpp:

(WebCore::interpolationQualityForResizeQuality):
Visual Studio was complaining that not all control paths returned a value.

4:33 PM Changeset in webkit [223938] by dbates@webkit.org
  • 3 edits in trunk/LayoutTests

Test fast/writing-mode/english-bt-text-with-spelling-marker.html should wait for editing commands to complete
https://bugs.webkit.org/show_bug.cgi?id=178759

Reviewed by Ryosuke Niwa.

Make use of typeCharacterCommand() from (LayoutTests/editing/editing.js) to type each character
with a delay and delay test completion until all characters have been typed.

  • fast/writing-mode/english-bt-text-with-spelling-marker-expected.html:
  • fast/writing-mode/english-bt-text-with-spelling-marker.html:
3:59 PM Changeset in webkit [223937] by msaboff@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

Allow OjbC Weak References when building TestAPI
https://bugs.webkit.org/show_bug.cgi?id=178748

Reviewed by Dan Bernstein.

Set TestAPI build flag Weak References in Manual Retain Release to true.

  • JavaScriptCore.xcodeproj/project.pbxproj: Reverted.
  • Configurations/ToolExecutable.xcconfig: Changed the flag here instead.
3:30 PM Changeset in webkit [223936] by ddkilzer@apple.com
  • 5 edits in trunk/Source/bmalloc

Need to pass non-nil argument to SimulateCrash() in bmalloc::logVMFailure()
<https://webkit.org/b/178740>
<rdar://problem/35154943>

Reviewed by Saam Barati.

  • bmalloc/BPlatform.h:

(BUNUSED_PARAM): Define macro.

  • bmalloc/Logging.cpp:

(SimulateCrash): Change third argument of SimulateCrash() to
CFStringRef since it's an NSString * in Objective-C.
(bmalloc::logVMFailure): Create a CFStringRef to use as a
description string. Use new vmSize parameter to log size.

  • bmalloc/Logging.h:

(bmalloc::logVMFailure): Update function signature to take a
size_t parameter representing vmSize.

  • bmalloc/VMAllocate.h:

(bmalloc::tryVMAllocate): Pass vmSize into logVMFailure().

3:28 PM Changeset in webkit [223935] by commit-queue@webkit.org
  • 17 edits
    1 copy
    5 adds in trunk

Enable service worker to use cache storage api
https://bugs.webkit.org/show_bug.cgi?id=178684

Patch by Youenn Fablet <youenn@apple.com> on 2017-10-24
Reviewed by Brady Eidson.

Source/WebCore:

Test: http/tests/workers/service/service-worker-cache-api.https.html

Updated WorkerLoaderProxy so that it can create a CacheStorageConnection.
Update WorkerCacheStorageConnection to take benefit of that.
This allows creating a CacheStorageConnection based on the page for regular workers and differently for Service Worker context.

Added ServiceWorkerThreadProxy as a proxy to ServiceWorkerThread.
It is in particular responsible to do proxy for loading tasks.
It implements cache API support for service worker by creating a dedicated CacheStorageConnection.

  • Modules/cache/WorkerCacheStorageConnection.cpp:

(WebCore::WorkerCacheStorageConnection::create):
(WebCore::WorkerCacheStorageConnection::~WorkerCacheStorageConnection):
(WebCore::WorkerCacheStorageConnection::doOpen):
(WebCore::WorkerCacheStorageConnection::doRemove):
(WebCore::WorkerCacheStorageConnection::doRetrieveCaches):
(WebCore::WorkerCacheStorageConnection::reference):
(WebCore::WorkerCacheStorageConnection::dereference):
(WebCore::WorkerCacheStorageConnection::doRetrieveRecords):
(WebCore::WorkerCacheStorageConnection::doBatchDeleteOperation):
(WebCore::WorkerCacheStorageConnection::doBatchPutOperation):

  • WebCore.xcodeproj/project.pbxproj:
  • workers/WorkerLoaderProxy.h:
  • workers/WorkerMessagingProxy.cpp:

(WebCore::WorkerMessagingProxy::createCacheStorageConnection):

  • workers/WorkerMessagingProxy.h:
  • workers/service/context/ServiceWorkerThread.cpp:

(WebCore::ServiceWorkerThread::ServiceWorkerThread):

  • workers/service/context/ServiceWorkerThread.h:
  • workers/service/context/ServiceWorkerThreadProxy.cpp: Added.

(WebCore::ServiceWorkerThreadProxy::create):
(WebCore::ServiceWorkerThreadProxy::ServiceWorkerThreadProxy):
(WebCore::ServiceWorkerThreadProxy::postTaskForModeToWorkerGlobalScope):
(WebCore::ServiceWorkerThreadProxy::postTaskToLoader):
(WebCore::ServiceWorkerThreadProxy::createCacheStorageConnection):

  • workers/service/context/ServiceWorkerThreadProxy.h: Added.

Source/WebKit:

Passing the WebPreferences store of the default page group of the WebProcessPool to its ServiceWorker process.
ServiceWorkerContextManager then uses it to initialize the preferences accordingly.
Patch is covered by new test which is using cache api previously disabled and now enabled through the store.

Made use of the new ServiceWorkerThreadProxy in ServiceWorkerContextManager to enable a cache storage connection.
Fixed the default size of quota in WebsiteDataStore.

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::getWorkerContextProcessConnection):

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

(WebKit::ServiceWorkerContextManager::ServiceWorkerContextManager):
(WebKit::ServiceWorkerContextManager::updatePreferences):
(WebKit::ServiceWorkerContextManager::startServiceWorker):
(WebKit::ServiceWorkerContextManager::startFetch):

  • WebProcess/Storage/ServiceWorkerContextManager.h:

(WebKit::ServiceWorkerContextManager::ServiceWorkerContextManager): Deleted.

  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::getWorkerContextConnection):

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

LayoutTests:

  • http/tests/workers/service/resources/service-worker-cache-api-worker.js: Added.
  • http/tests/workers/service/resources/service-worker-cache-api.js: Added.
  • http/tests/workers/service/service-worker-cache-api.https-expected.txt: Added.
  • http/tests/workers/service/service-worker-cache-api.https.html: Added.
3:23 PM Changeset in webkit [223934] by achristensen@apple.com
  • 4 edits in trunk

Selecting and right-clicking URL-like strings with IDNA-disallowed characters in host or authority causes rendering engine crash
https://bugs.webkit.org/show_bug.cgi?id=174267

Reviewed by Tim Horton.

Source/WebKit:

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

(WKBundlePageCanHandleRequest):

Tools:

  • TestWebKitAPI/Tests/WebKit/CanHandleRequest_Bundle.cpp:

(TestWebKitAPI::runTest):

3:20 PM Changeset in webkit [223933] by achristensen@apple.com
  • 4 edits in trunk/Source/WebCore

Optionally store entire ResourceRequest for ping loads
https://bugs.webkit.org/show_bug.cgi?id=178756

Reviewed by Tim Horton.

No change in behavior.
This uses less memory in the common loading case.
This will be needed for moving appcache loading to the Networking Process.
See https://bugs.webkit.org/show_bug.cgi?id=178540

  • loader/cache/CachedResource.cpp:

(WebCore::CachedResource::load):

  • loader/cache/CachedResource.h:

(WebCore::CachedResource::setOriginalRequest):
(WebCore::CachedResource::originalRequest const):
(WebCore::CachedResource::setOriginalRequestHeaders): Deleted.

  • loader/cache/CachedResourceLoader.cpp:

(WebCore::CachedResourceLoader::requestResource):

3:19 PM Changeset in webkit [223932] by Matt Lewis
  • 2 edits in trunk/LayoutTests

Skipped imported/w3c/web-platform-tests/html/dom/dynamic-markup-insertion/opening-the-input-stream/011.html on High Sierra Release.
https://bugs.webkit.org/show_bug.cgi?id=178553

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
3:11 PM Changeset in webkit [223931] by Joseph Pecoraro
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: Console Drawer resizing doesn't match cursor position
https://bugs.webkit.org/show_bug.cgi?id=178753
<rdar://problem/35160484>

Reviewed by Brian Burg.

  • UserInterface/Views/ConsoleDrawer.js:

(WI.ConsoleDrawer.prototype._updateDrawerHeight):
Drive-by fix an early return that would never have worked.

  • UserInterface/Views/Main.css:

(#content):
Give the #content a flex grow of 1. This causes the space to grow as it
already was but now it does not affect the size of the fixed height sibling.

3:05 PM Changeset in webkit [223930] by aestes@apple.com
  • 4 edits in trunk/Source/WebCore

[WebIDL] Support the ExportMacro attribute for dictionaries
https://bugs.webkit.org/show_bug.cgi?id=178752

Reviewed by Sam Weinig.

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateDictionaryHeaderContent):

  • bindings/scripts/test/JS/JSTestStandaloneDictionary.h:
  • bindings/scripts/test/TestStandaloneDictionary.idl:
3:00 PM Changeset in webkit [223929] by eric.carlson@apple.com
  • 43 edits
    1 copy
    2 adds in trunk

Web Inspector: Enable WebKit logging configuration and display
https://bugs.webkit.org/show_bug.cgi?id=177027
<rdar://problem/33964767>

Reviewed by Joseph Pecoraro.

Source/JavaScriptCore:

  • inspector/ConsoleMessage.cpp:

(Inspector::messageSourceValue): Inspector::Protocol::Console::ConsoleMessage ->

Inspector::Protocol::Console::ChannelSource.

  • inspector/agents/JSGlobalObjectConsoleAgent.cpp:

(Inspector::JSGlobalObjectConsoleAgent::getLoggingChannels): There are no logging channels

specific to a JSContext yet, so return an empty channel array.

(Inspector::JSGlobalObjectConsoleAgent::setLoggingChannelLevel): No channels, return an error.

  • inspector/agents/JSGlobalObjectConsoleAgent.h:
  • inspector/protocol/Console.json: Add ChannelSource, ChannelLevel, and Channel. Add getLoggingChannels

and setLoggingChannelLevel.

  • inspector/scripts/codegen/generator.py: Special case "webrtc"-> "WebRTC".
  • inspector/scripts/tests/generic/expected/enum-values.json-result:
  • inspector/scripts/tests/generic/expected/type-declaration-array-type.json-result:
  • inspector/scripts/tests/generic/expected/type-declaration-enum-type.json-result:
  • inspector/scripts/tests/generic/expected/type-declaration-object-type.json-result:
  • inspector/scripts/tests/generic/expected/type-requiring-runtime-casts.json-result:
  • runtime/ConsoleTypes.h: Add Media and WebRTC.

Source/WebCore:

Test: inspector/console/webcore-logging.html

  • dom/Document.cpp:

(WebCore::Document::~Document): Stop observing the logger.
(WebCore::Document::logger): Observe the logger.
(WebCore::Document::didLogMessage): Forward logging messages to the inspector.

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

(WebCore::WebConsoleAgent::getLoggingChannels): New, return the state of log runtime channels.
(WebCore::WebConsoleAgent::setLoggingChannelLevel): New, set the state of a channel.

  • inspector/WebConsoleAgent.h:
  • platform/Logging.cpp:

(WebCore::getLogChannel): New, get a log channel by name.

  • platform/Logging.h:

Source/WebCore/PAL:

  • pal/Logger.h:

(PAL::Logger::willLog const): Always return true for Always and Error so those messages are

always logged to the system.

(PAL::Logger::log): Always log Always and Error to the system, but pay strict attention to level

and channel state for logging to observers so logging only shows up in the inspector when
explicitly enabled by the user.

Source/WebInspectorUI:

  • Localizations/en.lproj/localizedStrings.js: Add new localized strings.
  • UserInterface/Controllers/LogManager.js:

(WI.LogManager): Initialize _loggingChannelSources, fetch _customLoggingChannels.
(WI.LogManager.supportsLogChannels): New.
(WI.LogManager.prototype.get customLoggingChannels): New.
(WI.LogManager.prototype.get logChannelSources): New.

  • UserInterface/Main.html:
  • UserInterface/Models/ConsoleMessage.js: Add Media and WebRTC.
  • UserInterface/Models/IssueMessage.js:

(WI.IssueMessage): Add media and webrtc.

  • UserInterface/Models/LoggingChannel.js: Added.

(WI.LoggingChannel):
(WI.LoggingChannel.fromPayload):
(WI.LoggingChannel.prototype.get source):
(WI.LoggingChannel.prototype.get level):

  • UserInterface/Views/LogContentView.js:

(WI.LogContentView): Add new scope buttons for "Log", "Info", and "Debug". Create log channel

scope buttons once logging has started.

(WI.LogContentView.prototype.get navigationItems): Add the log message scope bar when necessary.
(WI.LogContentView.prototype._scopeFromMessageSource): New.
(WI.LogContentView.prototype._scopeFromMessageLevel): Don't group Info, Log, and Debug.
(WI.LogContentView.prototype._messageAdded): Force a UI update the first time a WebKit log

message is added.

(WI.LogContentView.prototype._messageShouldBeVisible): New, deal with message source bar buttons.
(WI.LogContentView.prototype._messageSourceBarSelectionDidChange): New.
(WI.LogContentView.prototype._filterMessageElements): Deal with message source bar buttons.

  • UserInterface/Views/SettingsTabContentView.js:

(WI.SettingsTabContentView.prototype._createGeneralSettingsView): Create and initialize menus

for each log channel.

Source/WebKitLegacy/mac:

  • WebCoreSupport/WebChromeClient.mm:

(stringForMessageSource): Deal with Media and WebRTC message sources.

Tools:

Allow new 'dumpJSConsoleLogInStdErr' test header to redirect log console output to stderr.

  • DumpRenderTree/TestOptions.h:
  • DumpRenderTree/TestOptions.mm:

(TestOptions::TestOptions):

  • DumpRenderTree/mac/DumpRenderTree.mm:

(runTest):

  • WebKitTestRunner/TestController.cpp:

(WTR::updateTestOptionsFromTestHeader):
(WTR::TestController::runTest):

  • WebKitTestRunner/TestOptions.h:

(WTR::TestOptions::hasSameInitializationOptions const):

LayoutTests:

  • inspector/console/webcore-logging-expected.txt: Added.
  • inspector/console/webcore-logging.html: Added.
  • platform/mac/TestExpectations: Skip new test on Yosemite and ElCapitan.
  • platform/win/TestExpectations: Skip new test.
2:58 PM Changeset in webkit [223928] by dino@apple.com
  • 2 edits in trunk/Source/WebCore

Attempted build fix for Sierra.

  • html/ImageBitmap.cpp:

(WebCore::croppedSourceRectangleWithFormatting):

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

Uncaught Exception: TypeError: null is not an object (evaluating 'this.treeOutline.isXMLMimeType')
https://bugs.webkit.org/show_bug.cgi?id=178745

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-10-24
Reviewed by Brian Burg.

  • UserInterface/Views/DOMTreeUpdater.js:

(WI.DOMTreeUpdater.prototype._updateModifiedNodes):
An earlier tree element update might have caused this other tree element's
waiting to be updated to actually be removed. So just skip past them.

2:48 PM Changeset in webkit [223926] by msaboff@apple.com
  • 2 edits in trunk/Source/WTF

WTF: Eliminated PLATFORM checks for HAVE_MACH_EXCEPTIONS
https://bugs.webkit.org/show_bug.cgi?id=178747

Reviewed by Saam Barati.

Removed unnecessary PLATFORM checks as they can cause build failures
when the include file is present.

  • wtf/Platform.h:
2:46 PM Changeset in webkit [223925] by dino@apple.com
  • 7 edits
    1 move
    5 adds in trunk

Implement resizing options for ImageBitmap rendering
https://bugs.webkit.org/show_bug.cgi?id=178687
<rdar://problem/35135417>

Reviewed by Sam Weinig.

Source/WebCore:

Implement many of the sizing options for createImageBitmap.

Test: http/wpt/2dcontext/imagebitmap/createImageBitmap-sizing.html

  • html/ImageBitmap.cpp:

(WebCore::croppedSourceRectangleWithFormatting):

Implement the first bit of the algorithm from
the HTML specification.

(WebCore::outputSizeForSourceRectangle):

... and then the second bit. Leave the rest in
comments for now.

(WebCore::interpolationQualityForResizeQuality):

Helper function to map ImageBitmapOptions to
GraphicsContext.

(WebCore::ImageBitmap::createPromise):

Implement more of the sizing algorithm.

  • html/ImageBitmap.h: Origin tainting is defined to be false by default.

LayoutTests:

More ImageBitmap tests, this time focusing on sizing.

  • http/wpt/2dcontext/imagebitmap/common.js:

(createCanvasOfSize):
(create9x9CanvasWith2dContext):
(create18x18CanvasWith2dContext):

Helper functions.

  • http/wpt/2dcontext/imagebitmap/createImageBitmap-sizing-expected.txt: Added.
  • http/wpt/2dcontext/imagebitmap/createImageBitmap-sizing.html: Added.
  • http/wpt/2dcontext/imagebitmap/drawImage-ImageBitmap.html:
  • http/wpt/2dcontext/imagebitmap/resources/target-blue-dot-no-intrinsic.svg: Added.
  • http/wpt/2dcontext/imagebitmap/resources/target-blue-dot.png: Renamed from LayoutTests/http/wpt/2dcontext/imagebitmap/target-blue-dot.png.
  • http/wpt/2dcontext/imagebitmap/resources/target-blue-dot.svg: Added.
2:35 PM Changeset in webkit [223924] by commit-queue@webkit.org
  • 1 edit
    1 add in trunk/Source/WebInspectorUI

[GTK] Web Inspector: Add Recording.svg
https://bugs.webkit.org/show_bug.cgi?id=175045

Patch by Fujii Hironori <Fujii Hironori> on 2017-10-24
Reviewed by Brian Burg.

  • UserInterface/Images/gtk/Recording.svg: Added.
2:31 PM Changeset in webkit [223923] by msaboff@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Allow OjbC Weak References when building TestAPI
https://bugs.webkit.org/show_bug.cgi?id=178748

Reviewed by Saam Barati.

Set TestAPI build flag Weak References in Manual Retain Release to true.

2:22 PM Changeset in webkit [223922] by Chris Dumez
  • 34 edits
    3 copies
    5 adds in trunk

Add initial implementation for serviceWorker.postMessage()
https://bugs.webkit.org/show_bug.cgi?id=178534

Reviewed by Youenn Fablet.

Source/WebCore:

Add initial implementation for serviceWorker.postMessage():

Test: http/tests/workers/service/basic-ServiceWorker-postMessage.https.html

  • CMakeLists.txt:
  • DerivedSources.make:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/JSBindingsAllInOne.cpp:
  • bindings/js/JSExtendableMessageEvent.cpp: Added.

(WebCore::JSExtendableMessageEvent::data const):

  • bindings/js/WebCoreBuiltinNames.h:
  • dom/Document.h:
  • dom/EventNames.in:
  • dom/MessagePortChannel.h:
  • dom/ScriptExecutionContext.h:
  • workers/WorkerGlobalScope.h:
  • workers/service/ExtendableEvent.cpp:

(WebCore::ExtendableEvent::ExtendableEvent):
(WebCore::ExtendableEvent::~ExtendableEvent):

  • workers/service/ExtendableEvent.h:
  • workers/service/ExtendableMessageEvent.cpp: Added.

(WebCore::ExtendableMessageEvent::create):
(WebCore::ExtendableMessageEvent::ExtendableMessageEvent):
(WebCore::ExtendableMessageEvent::~ExtendableMessageEvent):

  • workers/service/ExtendableMessageEvent.h: Added.
  • workers/service/ExtendableMessageEvent.idl: Added.
  • workers/service/ServiceWorker.cpp:

(WebCore::ServiceWorker::ServiceWorker):
(WebCore::ServiceWorker::postMessage):
(WebCore::ServiceWorker::state const):
(WebCore::ServiceWorker::scriptExecutionContext const):

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

(WebCore::ServiceWorkerContainer::controller const):

  • workers/service/ServiceWorkerContainer.h:
  • workers/service/ServiceWorkerGlobalScope.cpp:

(WebCore::ServiceWorkerGlobalScope::thread):

  • workers/service/ServiceWorkerGlobalScope.h:

(isType):

  • workers/service/context/ServiceWorkerThread.cpp:

(WebCore::ServiceWorkerThread::postMessageToServiceWorkerGlobalScope):

  • workers/service/context/ServiceWorkerThread.h:
  • workers/service/server/SWClientConnection.h:

Source/WebKit:

Add initial implementation for serviceWorker.postMessage():

  • StorageProcess/ServiceWorker/WebSWServerConnection.cpp:

(WebKit::WebSWServerConnection::postMessageToServiceWorkerGlobalScope):

  • StorageProcess/ServiceWorker/WebSWServerConnection.h:
  • StorageProcess/ServiceWorker/WebSWServerConnection.messages.in:
  • WebProcess/Storage/ServiceWorkerContextManager.cpp:

(WebKit::ServiceWorkerContextManager::postMessageToServiceWorkerGlobalScope):

  • WebProcess/Storage/ServiceWorkerContextManager.h:
  • WebProcess/Storage/ServiceWorkerContextManager.messages.in:
  • WebProcess/Storage/WebSWClientConnection.cpp:

(WebKit::WebSWClientConnection::postMessageToServiceWorkerGlobalScope):

  • WebProcess/Storage/WebSWClientConnection.h:

LayoutTests:

Add layout test coverage.

  • http/tests/workers/service/basic-ServiceWorker-postMessage.https-expected.txt: Added.
  • http/tests/workers/service/basic-ServiceWorker-postMessage.https.html: Added.
  • http/tests/workers/service/resources/basic-ServiceWorker-postMessage-worker.js: Added.
  • http/tests/workers/service/resources/basic-ServiceWorker-postMessage.js: Added.
2:17 PM Changeset in webkit [223921] by webkit@devinrousso.com
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: allow ShaderProgram to be shown in CanvasContentView
https://bugs.webkit.org/show_bug.cgi?id=178714

Reviewed by Brian Burg.

  • UserInterface/Views/CanvasDetailsSidebarPanel.js:

(WI.CanvasDetailsSidebarPanel.prototype.inspect):
Allow ShaderProgram to show the related Canvas information.

  • UserInterface/Views/CanvasTabContentView.js:

(WI.CanvasTabContentView.prototype.canShowRepresentedObject):
(WI.CanvasTabContentView.prototype.showRepresentedObject):
(WI.CanvasTabContentView.prototype._canvasTreeOutlineSelectionDidChange):
If a ShaderProgram is selected in the path component, display a ShaderProgramContentView.

2:08 PM Changeset in webkit [223920] by webkit@devinrousso.com
  • 11 edits in trunk/Source/WebInspectorUI

Web Inspector: remove canvases from Resources and experimental setting/UI
https://bugs.webkit.org/show_bug.cgi?id=178711

Reviewed by Brian Burg.

  • UserInterface/Base/Main.js:

(WI.tabContentViewClassForRepresentedObject):

  • UserInterface/Base/Setting.js:
  • UserInterface/Controllers/CanvasManager.js:

(WI.CanvasManager.prototype.canvasAdded):
(WI.CanvasManager.prototype.canvasRemoved):

  • UserInterface/Models/Canvas.js:
  • UserInterface/Models/Frame.js:

(WI.Frame):
(WI.Frame.prototype.get extraScriptCollection):
(WI.Frame.prototype.commitProvisionalLoad):
(WI.Frame.prototype.get canvasCollection): Deleted.

  • UserInterface/Views/CanvasTabContentView.js:

(WI.CanvasTabContentView.isTabAllowed):

  • UserInterface/Views/FrameTreeElement.js:

(WI.FrameTreeElement):
(WI.FrameTreeElement.prototype.onattach):
(WI.FrameTreeElement.prototype.ondetach):
(WI.FrameTreeElement.prototype.onpopulate):
(WI.FrameTreeElement.prototype._styleSheetAdded):
(WI.FrameTreeElement.prototype._canvasWasAdded): Deleted.
(WI.FrameTreeElement.prototype._canvasWasRemoved): Deleted.

  • UserInterface/Views/ResourceSidebarPanel.js:

(WI.ResourceSidebarPanel):
(WI.ResourceSidebarPanel.prototype.matchTreeElementAgainstCustomFilters.match):
(WI.ResourceSidebarPanel.prototype.matchTreeElementAgainstCustomFilters):
(WI.ResourceSidebarPanel.prototype._treeSelectionDidChange):

  • UserInterface/Views/ResourcesTabContentView.js:

(WI.ResourcesTabContentView):
(WI.ResourcesTabContentView.prototype.canShowRepresentedObject):

  • UserInterface/Views/SettingsTabContentView.js:

(WI.SettingsTabContentView.prototype._createExperimentalSettingsView):

1:48 PM Changeset in webkit [223919] by Yusuke Suzuki
  • 5 edits
    1 add in trunk

[FTL] Support NewStringObject
https://bugs.webkit.org/show_bug.cgi?id=178737

Reviewed by Saam Barati.

JSTests:

  • stress/new-string-object.js: Added.

(shouldBe):
(test):

Source/JavaScriptCore:

FTL should support NewStringObject and encourage use of NewStringObject in DFG pipeline.
After this change, we can convert CallObjectConstructor(String) to NewStringObject(String).

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

(JSC::FTL::canCompile):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileNode):
(JSC::FTL::DFG::LowerDFGToB3::compileNewStringObject):

1:47 PM Changeset in webkit [223918] by webkit@devinrousso.com
  • 18 edits
    1 delete in trunk/Source/WebInspectorUI

Web Inspector: Show recordings in CanvasTabContentView
https://bugs.webkit.org/show_bug.cgi?id=177606
<rdar://problem/34715819>

Reviewed by Brian Burg.

Original patch by Matt Baker <Matt Baker>.

This patch folds canvas recordings into the new Canvas tab, which now
supports showing both CanvasCollections and Recordings.

When viewing recordings, a back button is shown at the start of the
navigation bar, allowing the user to return to the overview. It has been
styled with a back arrow, to make its function as clear as possible.
Like other navigation path components, the item for the recording can
clicked to select another recording taken from the same canvas.

The recording action scrubber has been moved from the content browser's
navigation bar to a more prominent location in the recording content view.
Selecting a frame tree element in the navigation sidebar no longer selects
the last action for that frame. This was changed to prevent the scrubber
position from behaving non-monotonically when selecting actions in sequential
order.

While this patch retains support for importing recordings, the feature
is not polished. Currently it is not possible to return to an imported
recording after leaving closing the view. In the future we may want to
consider including a navigation sidebar panel for the overview, which
could list canvas recordings (and eventually shaders).

  • .eslintrc:

Drive-by: remove duplicate key.

  • Localizations/en.lproj/localizedStrings.js:
  • UserInterface/Base/Main.js:

(WI.contentLoaded):
(WI.tabContentViewClassForRepresentedObject):

  • UserInterface/Main.html:
  • UserInterface/Views/RecordingTabContentView.js: Removed.

Remove RecordingTabContentView.

  • UserInterface/Images/Recording.svg:

New recording icon, used for tree elements and canvas preview UI.

  • UserInterface/Models/Recording.js:

(WI.Recording):
(WI.Recording.prototype.get visualActionIndexes):
Visual action indexes should be computed by the recording.

  • UserInterface/Views/CanvasContentView.js:

(WI.CanvasContentView):
(WI.CanvasContentView.prototype.refresh):
(WI.CanvasContentView.prototype.initialLayout):
(WI.CanvasContentView.prototype.attached):
(WI.CanvasContentView.prototype._recordingStopped):
(WI.CanvasContentView.prototype._handleRecordingSelectElementChange):
New UI for showing CanvasContentView as a CollectionView item. Includes
recordings button and select for choosing a recording to view.

  • UserInterface/Views/CanvasOverviewContentView.css:

(.content-view.canvas-overview .content-view.canvas > header):
Switch to 13px, which is more frequently used.

(.content-view.canvas-overview .content-view.canvas > header .subtitle::before):
Switch to literal em dash. Surrounding spaces were ignored when using
the backslash-escaped character.

(.content-view.canvas-overview .content-view.canvas:not(:hover, .is-recording, .selected) > header > .navigation-bar):
(.content-view.canvas-overview .content-view.canvas > footer > .recordings):
(.content-view.canvas-overview .content-view.canvas > footer > .recordings::before):
(.content-view.canvas-overview .content-view.canvas > footer > .recordings > select):
(.content-view.canvas-overview .content-view.canvas > footer .recordings > select:focus):
(.content-view.canvas-overview .content-view.canvas > footer > .flexible-space):
(.popover-content > .tree-outline .item.recording > .icon):
(.popover-content > .tree-outline .item.recording:hover):
(.popover-content > .tree-outline .item.recording:hover > .icon):
(.content-view.canvas-overview .content-view.canvas:not(:hover, .is-recording) > header > .navigation-bar): Deleted.
(.content-view.canvas-overview .content-view.canvas > footer): Deleted.
New styles for the recording picker.

  • UserInterface/Views/CanvasOverviewContentView.js:

(WI.CanvasOverviewContentView):
(WI.CanvasOverviewContentView.prototype.get selectionPathComponents):
(WI.CanvasOverviewContentView.prototype.contentViewAdded):
(WI.CanvasOverviewContentView.prototype.contentViewRemoved):
(WI.CanvasOverviewContentView.prototype._supplementalRepresentedObjectsDidChange):
(WI.CanvasOverviewContentView.prototype._selectedPathComponentChanged): Deleted.
(WI.CanvasOverviewContentView.prototype._supplementalRepresentedObjectsDidChange.createCanvasPathComponent): Deleted.
Canvas tree elements are now managed by CanvasTabContentView, which is
now responsible for maintaining the tree of canvas objects. For now the
tree holds canvases and recordings, but will eventually include shader programs.

  • UserInterface/Views/CanvasTabContentView.css:

(.content-view.tab.canvas .navigation-bar > .item .recording > .icon):
(.content-view.tab.canvas .navigation-bar > .item > .canvas-overview > .icon): Deleted.
Add styles for recording path components.

  • UserInterface/Views/CanvasTabContentView.js:

(WI.CanvasTabContentView):
(WI.CanvasTabContentView.prototype.treeElementForRepresentedObject):
(WI.CanvasTabContentView.prototype.canShowRepresentedObject):
(WI.CanvasTabContentView.prototype.showRepresentedObject):
(WI.CanvasTabContentView.prototype.shown):
(WI.CanvasTabContentView.prototype.restoreStateFromCookie):
(WI.CanvasTabContentView.prototype.attached):
(WI.CanvasTabContentView.prototype.detached):
(WI.CanvasTabContentView.prototype._canvasAdded):
(WI.CanvasTabContentView.prototype._canvasRemoved):
(WI.CanvasTabContentView.prototype._canvasTreeOutlineSelectionDidChange):
(WI.CanvasTabContentView.prototype._recordingStopped):
(WI.CanvasTabContentView.prototype._navigationSidebarImport):
(WI.CanvasTabContentView.prototype._navigationSidebarTreeOutlineSelectionChanged):
(WI.CanvasTabContentView.prototype._recordingAdded):
(WI.CanvasTabContentView.prototype._recordingActionIndexChanged):
(WI.CanvasTabContentView.prototype._updateActionIndex):
(WI.CanvasTabContentView.prototype.restoreFromCookie): Deleted.
(WI.CanvasTabContentView.prototype._overviewPathComponentClicked): Deleted.

  • UserInterface/Views/ContentView.js:

(WI.ContentView.createFromRepresentedObject):

  • UserInterface/Views/RecordingActionTreeElement.css:

(body:not(.window-inactive, .window-docked-inactive) .tree-outline:matches(:focus, .force-focus) .item.action.selected > .titles .parameter.swizzled,):
(body:not(.window-inactive, .window-docked-inactive) :matches(:focus, .force-focus) .item.action.selected > .titles .parameter.swizzled,): Deleted.

  • UserInterface/Views/RecordingContentView.css:

(.content-view:not(.tab).recording):
(.content-view:not(.tab).recording > header):
(.content-view:not(.tab).recording > header > .slider-container):
(.content-view:not(.tab).recording > header > .slider-container > input[type=range]):
(.content-view:not(.tab).recording > header > .slider-container > input[type=range]::-webkit-slider-runnable-track):
(.content-view:not(.tab).recording > header > .slider-container > input[type=range]::-webkit-slider-thumb):
(.content-view:not(.tab).recording > .preview-container):

  • UserInterface/Views/RecordingContentView.js:

(WI.RecordingContentView):
(WI.RecordingContentView.prototype.updateActionIndex):
(WI.RecordingContentView.prototype.initialLayout):
(WI.RecordingContentView.prototype.async._generateContentCanvas2D):
(WI.RecordingContentView.prototype._updateSliderValue):
(WI.RecordingContentView.prototype._sliderChanged):
(WI.RecordingContentView.prototype.get supplementalRepresentedObjects): Deleted.

  • UserInterface/Views/RecordingNavigationSidebarPanel.js:

(WI.RecordingNavigationSidebarPanel.prototype.set recording):
(WI.RecordingNavigationSidebarPanel.prototype.updateActionIndex):

  • UserInterface/Views/ResourceIcons.css:

(.canvas .icon):
(.canvas.canvas-2d .icon): Deleted.
(.canvas:matches(.webgl, .webgl2, .webgpu) .icon): Deleted.

1:45 PM Changeset in webkit [223917] by Joseph Pecoraro
  • 2 edits in trunk/LayoutTests

Unreviewed test gardening. Update inspector/network/har tests.

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

Size of the test file changed and results needed to be updated.

1:36 PM Changeset in webkit [223916] by guijemont@igalia.com
  • 2 edits in trunk/Source/JavaScriptCore

[mips] fix offsets of branches that have to go over a jump
https://bugs.webkit.org/show_bug.cgi?id=153464

The jump() function creates 8 instructions, but the offsets of branches
meant to go over them only account for 6. In most cases, this is not an
issue as the last two instructions of jump() would be nops, but in the
rarer case where the jump destination is in a different 256 MB segment,
MIPSAssembler::linkWithOffset() will rewrite the code in a way in which
the last 4 instructions would be a 2 instruction load (lui/ori) into
$t9, a "j $t9" and then a nop. The wrong offset will mean that the
previous branches meant to go over the whole jump will branch to the
"j $t9" instruction, which would jump to whatever is currently in $t9
(since lui/ori would not be executed).

Reviewed by Michael Catanzaro.

  • assembler/MacroAssemblerMIPS.h:

(JSC::MacroAssemblerMIPS::branchAdd32):
(JSC::MacroAssemblerMIPS::branchMul32):
(JSC::MacroAssemblerMIPS::branchSub32):
Fix the offsets of branches meant to go over code generated by jump().

1:21 PM Changeset in webkit [223915] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Skip fast/html/marquee-reparent-check.html on macOS debug.
https://bugs.webkit.org/show_bug.cgi?id=178465

Unreviewed test gardening.

  • platform/mac/TestExpectations:
1:11 PM Changeset in webkit [223914] by commit-queue@webkit.org
  • 5 edits in trunk

Web Inspector: Layer mutations should be purely based on layerId, not based on nodeId
https://bugs.webkit.org/show_bug.cgi?id=178554

Patch by Ross Kirsling <Ross Kirsling> on 2017-10-24
Reviewed by Devin Rousso.

Source/WebInspectorUI:

  • UserInterface/Controllers/LayerTreeManager.js:

(WI.LayerTreeManager.prototype.layerTreeMutations):
Looking for special cases involving nodeIds is incorrect, as nodeIds need not be unique in the layer list (such
as when an element and a pseudo-element thereof each give rise to a layer). A layer object marked "preserved" in
this way shares no data with its predecessor, meaning that no consumer can act upon this so-called preservation.
A preserved layer should be nothing more or less than a recycled layerId (the thing that *is* unique).

LayoutTests:

  • inspector/layers/layer-tree-manager-expected.txt:
  • inspector/layers/layer-tree-manager.html:
1:08 PM WebKitGTK/Gardening/Calendar edited by Adrian Perez de Castro
(diff)
1:06 PM Changeset in webkit [223913] by Adrian Perez de Castro
  • 2 edits
    2 adds in trunk/LayoutTests

[GTK] Unskip layout tests editing/deleting/delete-emoji-1.html & editing/deleting/delete-emoji-1.html
https://bugs.webkit.org/show_bug.cgi?id=178742

Unreviewed test gardening.

  • platform/gtk/TestExpectations: Updated expectations for the emoji deletion layout tests.
  • platform/gtk/editing/deleting/delete-emoji-1-expected.txt: Added.
  • platform/gtk/editing/deleting/delete-emoji-expected.txt: Added.
1:04 PM Changeset in webkit [223912] by Adrian Perez de Castro
  • 2 edits in trunk/LayoutTests

[WPE] Remove expectations for tests which do not exist anymore
https://bugs.webkit.org/show_bug.cgi?id=178717

Unreviewed WPE test gardening.

This avoids the following warning being emitted by run-webkit-tests:

--lint-test-files warnings:
LayoutTests/platform/wpe/TestExpectations:366 Path does not exist. fast/events/constructors/device-proximity-event-constructor.html
LayoutTests/platform/wpe/TestExpectations:902 Path does not exist. http/tests/dom/document-attributes-null-handling

  • platform/wpe/TestExpectations:
12:56 PM Changeset in webkit [223911] by Adrian Perez de Castro
  • 2 edits in trunk/LayoutTests

Unreviewed GTK+ test gardening.

  • platform/gtk/TestExpectations:
12:53 PM Changeset in webkit [223910] by aestes@apple.com
  • 16 edits
    6 adds in trunk

[Payment Request] Implement the "PaymentRequest updated" algorithm
https://bugs.webkit.org/show_bug.cgi?id=178689

Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

  • web-platform-tests/payment-request/payment-request-update-event-updatewith-method.https-expected.txt:

Source/WebCore:

Implemented the "PaymentRequest updated" algorithm by firing shippingaddresschange and
shippingoptionchange events at the right times and implementing
PaymentRequestUpdateEvent.updateWith().

Tests: http/tests/paymentrequest/payment-request-change-shipping-address.https.html

http/tests/paymentrequest/payment-request-change-shipping-option.https.html
http/tests/paymentrequest/updateWith-method-pmi-handling.https.html

  • Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp:

(WebCore::convertAndValidate): Added. Converts a PaymentDetailsInit to a
ApplePaySessionPaymentRequest::TotalAndLineItems.
(WebCore::ApplePayPaymentHandler::shippingAddressUpdated): Created a ShippingContactUpdate
and passed it to PaymentCoordinator::completeShippingContactSelection().
(WebCore::ApplePayPaymentHandler::shippingOptionUpdated): Created a ShippingMethodUpdate and
passed it to PaymentCoordinator::completeShippingMethodSelection().

  • Modules/applepay/paymentrequest/ApplePayPaymentHandler.h:
  • Modules/paymentrequest/PaymentHandler.h:
  • Modules/paymentrequest/PaymentRequest.cpp:

(WebCore::checkAndCanonicalizeDetails): Moved the logic for checking and canonicalizing a
PaymentDetailsBase from PaymentRequest::create() to here.
(WebCore::PaymentRequest::create): Called checkAndCanonicalizeDetails().
(WebCore::PaymentRequest::abortWithException): Moved the body of stop() to here and
parameterized the Exception with which to abort m_showPromise.
(WebCore::PaymentRequest::stop): Called abortWithException() with an AbortError.
(WebCore::PaymentRequest::shippingAddressChanged): Called dispatchUpdateEvent() with
shippingaddresschangeEvent.
(WebCore::PaymentRequest::shippingOptionChanged): Ditto with shippingoptionchangeEvent.
(WebCore::PaymentRequest::dispatchUpdateEvent): Created a PaymentRequestUpdateEvent and
dispatched it.
(WebCore::PaymentRequest::updateWith): Added a settle handler to m_detailsPromise.
(WebCore::PaymentRequest::settleDetailsPromise): Updated the PaymentRequest with the new
details and called PaymentHandler::shippingAddressUpdated() or
PaymentHandler::shippingOptionUpdated().

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

(WebCore::PaymentRequestUpdateEvent::PaymentRequestUpdateEvent):
(WebCore::PaymentRequestUpdateEvent::updateWith): Called PaymentRequest::updateWith().
(WebCore::PaymentRequestUpdateEvent::eventInterface const): Returned
PaymentRequestUpdateEventInterfaceType.

  • Modules/paymentrequest/PaymentRequestUpdateEvent.h:
  • Modules/paymentrequest/PaymentRequestUpdateEvent.idl:
  • testing/MockPaymentCoordinator.cpp:

(WebCore::MockPaymentCoordinator::canMakePaymentsWithActiveCard):
(WebCore::MockPaymentCoordinator::openPaymentSetup):
(WebCore::MockPaymentCoordinator::completeMerchantValidation): Stopped calling
PaymentCoordinator::didAuthorizePayment().
(WebCore::MockPaymentCoordinator::changeShippingOption): Called
PaymentCoordinator::didSelectShippingMethod().
(WebCore::MockPaymentCoordinator::acceptPayment): Called
PaymentCoordinator::didAuthorizePayment().

  • testing/MockPaymentCoordinator.h:
  • testing/MockPaymentCoordinator.idl:

LayoutTests:

  • http/tests/paymentrequest/payment-request-change-shipping-address.https-expected.txt: Added.
  • http/tests/paymentrequest/payment-request-change-shipping-address.https.html: Copied from imported/w3c/web-platform-tests/payment-request/shipping-address-changed-manual.https.html.
  • http/tests/paymentrequest/payment-request-change-shipping-option.https-expected.txt: Added.
  • http/tests/paymentrequest/payment-request-change-shipping-option.https.html: Copied from imported/w3c/web-platform-tests/payment-request/change-shipping-option-manual.https.html.
  • http/tests/paymentrequest/resources/helpers.js:

(async.getPaymentRequestResponse):

  • http/tests/paymentrequest/updateWith-method-pmi-handling.https-expected.txt: Added.
  • http/tests/paymentrequest/updateWith-method-pmi-handling.https.html: Copied from imported/w3c/web-platform-tests/payment-request/updateWith-method-pmi-handling-manual.https.html.
12:33 PM Changeset in webkit [223909] by achristensen@apple.com
  • 5 edits in trunk

Apply custom header fields from WebsitePolicies to same-domain requests
https://bugs.webkit.org/show_bug.cgi?id=178356
Source/WebCore:

<rdar://problem/31073436>

Reviewed by Brady Eidson.

Covered by new API tests.

  • loader/cache/CachedResourceLoader.cpp:

(WebCore::CachedResourceLoader::requestResource):

  • platform/network/ResourceRequestBase.cpp:

(WebCore::ResourceRequestBase::setCachePolicy):
(WebCore::ResourceRequestBase::setTimeoutInterval):
(WebCore::ResourceRequestBase::setHTTPMethod):
(WebCore::ResourceRequestBase::setHTTPHeaderField):
(WebCore::ResourceRequestBase::clearHTTPAuthorization):
(WebCore::ResourceRequestBase::clearHTTPContentType):
(WebCore::ResourceRequestBase::clearHTTPReferrer):
(WebCore::ResourceRequestBase::clearHTTPOrigin):
(WebCore::ResourceRequestBase::clearHTTPUserAgent):
(WebCore::ResourceRequestBase::clearHTTPAccept):
(WebCore::ResourceRequestBase::clearHTTPAcceptEncoding):
(WebCore::ResourceRequestBase::setResponseContentDispositionEncodingFallbackArray):
(WebCore::ResourceRequestBase::setHTTPBody):
(WebCore::ResourceRequestBase::setAllowCookies):
(WebCore::ResourceRequestBase::setPriority):
(WebCore::ResourceRequestBase::addHTTPHeaderFieldIfNotPresent):
(WebCore::ResourceRequestBase::addHTTPHeaderField):
(WebCore::ResourceRequestBase::setHTTPHeaderFields):
If we only update the platform request when headers are added (or other changes) for HTTP requests,
then the changes will not affect the NSURLRequest that is sent over IPC or visible to the API.
This is necessary for these new tests to work, but it's also of growing importance since our
introduction of WKURLSchemeHandler.

Tools:

Reviewed by Brady Eidson.

  • TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm:

(expectHeaders):

12:07 PM Changeset in webkit [223908] by Brent Fulgham
  • 20 edits
    1 add in trunk/Source

Adopt new secure coding APIs
https://bugs.webkit.org/show_bug.cgi?id=178484
<rdar://problem/34837193>

Reviewed by Tim Horton.

Source/WebCore:

Switch to new NSKeyed[Un]Archiver methods that active and use
NSSecureCoding by default.

Most of the new API is wrapped in a set of convenience methods so we can
build without the new API on older systems.

No change in behavior.

  • editing/cocoa/EditorCocoa.mm:

(WebCore::archivedDataForAttributedString): Use new convenience method
to archive the string object.

  • loader/archive/cf/LegacyWebArchiveMac.mm:

(WebCore::LegacyWebArchive::createResourceResponseFromMacArchivedData): Update to
use secure coding where possible.
(WebCore::LegacyWebArchive::createPropertyListRepresentation): Ditto.

  • platform/ios/PlatformPasteboardIOS.mm:

(WebCore::PlatformPasteboard::write): Use new secure API.
(WebCore::PlatformPasteboard::typesSafeForDOMToReadAndWrite const): Ditto.

  • testing/cocoa/WebArchiveDumpSupport.mm:

(WebCoreTestSupport::createCFURLResponseFromResponseData): Update to
secure coding API where possible.

Source/WebCore/PAL:

Add new convenience methods (and SPI headers) so we can adopt new NSKeyedArchiver
API that uses secure coding by default.

  • PAL.xcodeproj/project.pbxproj:
  • pal/spi/cocoa/NSKeyedArchiverSPI.h: Added.

(securelyArchivedDataWithRootObject): New convenience method.
(securelyUnarchiveRootObjectOfClassFromData): Ditto.
(secureArchiverFromMutableData): Ditto.
(secureUnarchiverFromData): Ditto.

Source/WebKit:

Switch to new NSKeyed[Un]Archiver methods that active and use
NSSecureCoding by default.

  • Platform/ios/AccessibilityIOS.mm:

(WebKit::newAccessibilityRemoteToken): Use secure-by-default API.

  • Shared/Cocoa/DataDetectionResult.mm:

(WebKit::DataDetectionResult::encode const): Ditto.
(WebKit::DataDetectionResult::decode): Ditto.

  • Shared/Cocoa/WebCoreArgumentCodersCocoa.mm:

(IPC::ArgumentCoder<WebCore::Payment>::encode): Ditto.
(IPC::ArgumentCoder<WebCore::Payment>::decode): Ditto.
(IPC::ArgumentCoder<WebCore::PaymentContact>::encode): Ditto.
(IPC::ArgumentCoder<WebCore::PaymentContact>::decode): Ditto.
(IPC::ArgumentCoder<WebCore::PaymentMerchantSession>::encode): Ditto.
(IPC::ArgumentCoder<WebCore::PaymentMerchantSession>::decode): Ditto.
(IPC::ArgumentCoder<WebCore::PaymentMethod>::encode): Ditto.
(IPC::ArgumentCoder<WebCore::PaymentMethod>::decode): Ditto.

  • Shared/ios/InteractionInformationAtPosition.mm:

(WebKit::InteractionInformationAtPosition::encode const): Ditto.
(WebKit::InteractionInformationAtPosition::decode): Ditto.

  • Shared/mac/WebCoreArgumentCodersMac.mm:

(IPC::ArgumentCoder<ProtectionSpace>::encodePlatformData): Ditto.
(IPC::ArgumentCoder<ProtectionSpace>::decodePlatformData): Ditto.
(IPC::ArgumentCoder<Credential>::encodePlatformData): Ditto.
(IPC::ArgumentCoder<Credential>::decodePlatformData): Ditto.
(IPC::ArgumentCoder<ContentFilterUnblockHandler>::encode): Ditto.
(IPC::ArgumentCoder<ContentFilterUnblockHandler>::decode): Ditto.
(IPC::ArgumentCoder<MediaPlaybackTargetContext>::encodePlatformData): Ditto.
(IPC::ArgumentCoder<MediaPlaybackTargetContext>::decodePlatformData): Ditto.

  • Shared/mac/WebHitTestResultData.mm:

(WebKit::WebHitTestResultData::platformEncode const): Ditto.
(WebKit::WebHitTestResultData::platformDecode): Ditto.

  • UIProcess/API/Cocoa/WKProcessPool.mm:

(-[WKProcessPool _setObject:forBundleParameter:]): Ditto.
(-[WKProcessPool _setObjectsForBundleParametersWithDictionary:]): Ditto.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _setInputDelegate:]): Ditto.

  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::platformInitializeWebProcess): Ditto.

  • UIProcess/ios/PageClientImplIOS.mm:

(WebKit::PageClientImpl::startAssistingNode): Ditto.

  • WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:

(-[WKWebProcessPlugInBrowserContextController _setFormDelegate:]): Ditto.

  • WebProcess/InjectedBundle/mac/InjectedBundleMac.mm:

(WebKit::InjectedBundle::initialize): Ditto.
(WebKit::InjectedBundle::setBundleParameter): Ditto.
(WebKit::InjectedBundle::setBundleParameters): Ditto.

11:55 AM Changeset in webkit [223907] by jfbastien@apple.com
  • 9 edits in trunk/Source/JavaScriptCore

WebAssembly: NFC renames of things that aren't JS-specific
https://bugs.webkit.org/show_bug.cgi?id=178738

Reviewed by Saam Barati.

  • wasm/WasmB3IRGenerator.cpp:

(JSC::Wasm::parseAndCompile):

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

(JSC::Wasm::BBQPlan::complete):

  • wasm/WasmCodeBlock.cpp:

(JSC::Wasm::CodeBlock::CodeBlock):

  • wasm/WasmCodeBlock.h:

(JSC::Wasm::CodeBlock::embedderEntrypointCalleeFromFunctionIndexSpace):
(JSC::Wasm::CodeBlock::jsEntrypointCalleeFromFunctionIndexSpace): Deleted.

  • wasm/WasmFormat.h:
  • wasm/js/JSToWasm.cpp:

(JSC::Wasm::createJSToWasmWrapper):

  • wasm/js/WebAssemblyModuleRecord.cpp:

(JSC::WebAssemblyModuleRecord::link):
(JSC::WebAssemblyModuleRecord::evaluate):

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

HTMLMediaElement should iterate HTMLTrackElements consistently.
https://bugs.webkit.org/show_bug.cgi?id=178423
rdar://problem/35044967

Patch by Jeremy Jones <jeremyj@apple.com> on 2017-10-24
Reviewed by Eric Carlson.

No new tests because no expected behavior change.

HTMLMediaElement iterates HTMLTrackElements as children in every place but one, where it iterates them
as descendants. It should always iterate them as children.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::finishParsingChildren):

11:50 AM Changeset in webkit [223905] by Chris Dumez
  • 4 edits in trunk/Source/WebCore

SerializedScriptValue::deserialize() should take ports as a const Vector&
https://bugs.webkit.org/show_bug.cgi?id=178727

Reviewed by Alex Christensen.

SerializedScriptValue::deserialize() should take ports as a const Vector&, not a Vector&.
It does not modify the input vector.

  • bindings/js/JSMessageEventCustom.cpp:

(WebCore::JSMessageEvent::data const):

  • bindings/js/SerializedScriptValue.cpp:

(WebCore::CloneDeserializer::deserialize):
(WebCore::CloneDeserializer::CloneDeserializer):
(WebCore::SerializedScriptValue::deserialize):

  • bindings/js/SerializedScriptValue.h:
11:46 AM Changeset in webkit [223904] by commit-queue@webkit.org
  • 6 edits
    1 add in trunk

[Win][JSCOnly] Make jsconly build testapi and dlls and copy dlls when running tests
https://bugs.webkit.org/show_bug.cgi?id=177279

Patch by Stephan Szabo <stephan.szabo@sony.com> on 2017-10-24
Reviewed by Yusuke Suzuki.

.:

  • Source/cmake/OptionsJSCOnly.cmake:

Source/JavaScriptCore:

  • shell/PlatformJSCOnly.cmake: Added.

Tools:

  • Scripts/build-jsc:
  • Scripts/run-jsc-stress-tests:
11:43 AM Changeset in webkit [223903] by commit-queue@webkit.org
  • 4 edits
    5 adds
    1 delete in trunk/Source/WebKit

[Settings] Add initial support for generating preferences related code
https://bugs.webkit.org/show_bug.cgi?id=178656

Patch by Sam Weinig <sam@webkit.org> on 2017-10-24
Reviewed by Dean Jackson.

As a first step towards getting off the macros in WebPreferencesDefinitions.h
and reducing the overhead of adding a preference, this change generates adds
WebPreferences.yaml where preference changes will go, and generates much of
WebPreferencesDefinitions.h from it (all the custom defaults moved to
WebPreferencesDefinitionsBase.h). Subsequent changes will remove the need for
the macros in WebPreferencesDefinitions.h entirely.

  • CMakeLists.txt:
  • DerivedSources.make:
  • WebKit.xcodeproj/project.pbxproj:

Add new files / rules to generate WebPreferencesDefinitions.h.

  • Scripts/GeneratePreferences.rb: Added.
  • Scripts/PreferencesTemplates: Added.
  • Scripts/PreferencesTemplates/WebPreferencesDefinitions.h.erb: Added.

Add scripts and template to generate WebPreferencesDefinitions.h from
WebPreferences.yaml.

  • Shared/WebPreferences.yaml: Added.

Configuration file for preferences.

  • Shared/WebPreferencesDefinitions.h: Removed.
  • Shared/WebPreferencesDefinitionsBase.h: Copied from Source/WebKit/Shared/WebPreferencesDefinitions.h.

Moved custom defaults to new WebPreferencesDefinitionsBase.h. Removed the need for
FOR_EACH_WEBKIT_STRING_PREFERENCE by using custom defaults for the font family values.

11:40 AM Changeset in webkit [223902] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore

[MediaFoundation] Videos are always autoplaying for local files
https://bugs.webkit.org/show_bug.cgi?id=178693

Patch by Doug Massay.
Patch by Konstantin Tokarev <Konstantin Tokarev> on 2017-10-24
Reviewed by Alex Christensen.

r199114 fixes autoplay issue only if starting session invokes
buffering stage. However when local files are played, onBufferingStarted
and onBufferingStopped are not called, and video is not paused.

  • platform/graphics/win/MediaPlayerPrivateMediaFoundation.cpp:

(WebCore::MediaPlayerPrivateMediaFoundation::endGetEvent):
(WebCore::MediaPlayerPrivateMediaFoundation::onSessionStarted):

  • platform/graphics/win/MediaPlayerPrivateMediaFoundation.h:
11:19 AM Changeset in webkit [223901] by ddkilzer@apple.com
  • 1 edit
    2 copies
    1 delete in trunk

[Regression] Webkit "-apple-system" font fallback token handles font weights of PingFang incorrectly.
https://bugs.webkit.org/show_bug.cgi?id=177345
<rdar://problem/32975942>

Unreviewed fix to move tests into LayoutTests.

If these tests start failing, please roll out this commit and
r223589.

  • fast/text/system-ui-chinese-bold-fallback-expected.html: Renamed from fast/text/system-ui-chinese-bold-fallback-expected.html.
  • fast/text/system-ui-chinese-bold-fallback.html: Renamed from fast/text/system-ui-chinese-bold-fallback.html.
11:14 AM Changeset in webkit [223900] by Matt Lewis
  • 20 edits
    1 delete in trunk/Source

Unreviewed, rolling out r223889.

This caused multiple crashes on all platforms

Reverted changeset:

"Adopt new secure coding APIs"
https://bugs.webkit.org/show_bug.cgi?id=178484
https://trac.webkit.org/changeset/223889

11:04 AM Changeset in webkit [223899] by Joseph Pecoraro
  • 3 edits in trunk/LayoutTests

Unreviewed test gardening. Improved attempt to reduce flakiness of inspector/network/har tests.

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

Earlier filters were taking affect, so move these checks up.

10:50 AM Changeset in webkit [223898] by Antti Koivisto
  • 8 edits in trunk

Create inline wrappers for before/after pseudo elements that have display:contents
https://bugs.webkit.org/show_bug.cgi?id=178722

Reviewed by Ryosuke Niwa.

Source/WebCore:

We can handle before and after pseudo elements with display:contents by giving them
inline renderers with style inherited from display:contents style. This removes
need for complicated logic for this case and handles everything correctly.

This is a better approach and replaces the one taken in bug 178584.
It also fixes two display:contents WPTs.

  • dom/PseudoElement.h:

There is no need to track content renderers separately anymore. They always descendants of
pseudo element's renderer (which is an inline wrapper in case of display:contents).

  • rendering/style/RenderStyle.cpp:

(WebCore::RenderStyle::copyContentFrom):

  • rendering/style/RenderStyle.h:
  • style/RenderTreeUpdaterGeneratedContent.cpp:

(WebCore::createContentRenderers):
(WebCore::updateStyleForContentRenderers):
(WebCore::RenderTreeUpdater::GeneratedContent::updatePseudoElement):
(WebCore::removeAndDestroyContentRenderers): Deleted.

Since content renderers are now always descendants of the pseudo renderer
there is no need for a separate destruction path.

  • style/StyleTreeResolver.cpp:

(WebCore::Style::TreeResolver::resolvePseudoStyle):

Create ElementUpdate with a style that will produce an inline wrapper.

LayoutTests:

Enable

imported/w3c/web-platform-tests/css/css-display-3/display-contents-dynamic-before-after-first-letter-001.html and
imported/w3c/web-platform-tests/css/css-display-3/display-contents-dynamic-before-after-001.html

10:49 AM WebKitGTK/Gardening/Calendar edited by Adrian Perez de Castro
(diff)
10:38 AM Changeset in webkit [223897] by Wenson Hsieh
  • 2 edits in trunk/Source/WebCore

[iOS] MediaPlayer::isAvailable() takes ~150 ms during web process initialization
https://bugs.webkit.org/show_bug.cgi?id=178713
<rdar://problem/35115906>

Reviewed by Eric Carlson.

Loading AVFoundation should not be required to answer the question of MediaPlayer::isAvailable() on iOS, where
both AVFoundation and CoreMedia frameworks should always exist. As such, we can bail early and return true to
avoid always dynamically loading AVFoundation and CoreMedia.

  • platform/graphics/MediaPlayer.cpp:

(WebCore::MediaPlayer::isAvailable):

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

RenderThemeCocoa::mediaControlsFormattedStringForDuration may cause a crash due to unhandled Obj-C exception
https://bugs.webkit.org/show_bug.cgi?id=178716
<rdar://problem/35112900>

Patch by Antoine Quint <Antoine Quint> on 2017-10-24
Reviewed by Dean Jackson.

  • rendering/RenderThemeCocoa.mm:

(WebCore::RenderThemeCocoa::mediaControlsFormattedStringForDuration):

10:24 AM Changeset in webkit [223895] by rniwa@webkit.org
  • 3 edits in trunk

SizesAttributeParser::SizesAttributeParser triggers layout
https://bugs.webkit.org/show_bug.cgi?id=178712

Reviewed by Antti Koivisto.

Revert r213711 as this change introduced an unwated synchronous layout inside Node::insertedIntoAncestor.

The test had been marked as timing out since r191379 and changed to failing expectation in r199225
as the test result's error message changes from run to run.

Disabled Tests: imported/w3c/web-platform-tests/html/semantics/embedded-content/the-img-element/environment-changes/viewport-change.html

had been marked failing since r199225, prior to which it was marked as timeout in r191379.
imported/w3c/web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute.html
is now marked as flaky.

  • css/parser/SizesAttributeParser.cpp:

(WebCore::SizesAttributeParser::SizesAttributeParser):

10:11 AM Changeset in webkit [223894] by Yusuke Suzuki
  • 4 edits in trunk

[JSC] modules can be visited more than once when resolving bindings through "star" exports as long as the exportName is different each time
https://bugs.webkit.org/show_bug.cgi?id=178308

Reviewed by Mark Lam.

JSTests:

  • test262.yaml:

Source/JavaScriptCore:

With the change of the spec[1], we now do not need to remember star resolution modules.
We reflect this change to our implementation. Since this change is covered by test262,
this patch improves the score of test262.

We also add logging to ResolveExport to debug it easily.

[1]: https://github.com/tc39/ecma262/commit/a865e778ff0fc60e26e3e1c589635103710766a1

  • runtime/AbstractModuleRecord.cpp:

(JSC::AbstractModuleRecord::ResolveQuery::dump const):
(JSC::AbstractModuleRecord::resolveExportImpl):

10:05 AM Changeset in webkit [223893] by keith_miller@apple.com
  • 2 edits in trunk/Source/WebCore

Unreviewed, fix internal iOS build.

  • Sources.txt:
9:42 AM Changeset in webkit [223892] by Yusuke Suzuki
  • 2 edits in trunk/Source/JavaScriptCore

[JSC] Use emitDumbVirtualCall in 32bit JIT
https://bugs.webkit.org/show_bug.cgi?id=178644

Reviewed by Mark Lam.

This patch aligns 32bit JIT op_call_eval slow case to 64bit version by using emitDumbVirtualCall.

  • jit/JITCall32_64.cpp:

(JSC::JIT::compileCallEvalSlowCase):

9:36 AM Changeset in webkit [223891] by Yusuke Suzuki
  • 7 edits in trunk/Source/JavaScriptCore

[JSC] Drop ArityCheckData
https://bugs.webkit.org/show_bug.cgi?id=178648

Reviewed by Mark Lam.

ArityCheckData is used to return a pair of slotsToAdd and thunkToCall.
However, use of thunkToCall is removed in 64bit environment at r189575.

We remove thunkToCall and align 32bit implementation to 64bit implementation.
Since we no longer need to have the above pair, we can remove ArityCheckData too.

  • llint/LowLevelInterpreter32_64.asm:
  • llint/LowLevelInterpreter64.asm:
  • runtime/CommonSlowPaths.cpp:

(JSC::SLOW_PATH_DECL):
(JSC::setupArityCheckData): Deleted.

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

(JSC::VM::VM):

  • runtime/VM.h:
9:33 AM Changeset in webkit [223890] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

ASSERTION FAILED: !m_serviceWorkerManager in WebProcess::getWorkerContextConnection() on API tests
https://bugs.webkit.org/show_bug.cgi?id=178586
<rdar://problem/35115902>

Patch by Youenn Fablet <youenn@apple.com> on 2017-10-24
Reviewed by Brady Eidson.

Covered by API tests no longer crashing.

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::getWorkerContextProcessConnection): Sending a worker context process connection message only at creation of the service worker process.

9:21 AM Changeset in webkit [223889] by Brent Fulgham
  • 20 edits
    1 add in trunk/Source

Adopt new secure coding APIs
https://bugs.webkit.org/show_bug.cgi?id=178484
<rdar://problem/34837193>

Reviewed by Tim Horton.

Source/WebCore:

Switch to new NSKeyed[Un]Archiver methods that active and use
NSSecureCoding by default.

Most of the new API is wrapped in a set of convenience methods so we can
build without the new API on older systems.

No change in behavior.

  • editing/cocoa/EditorCocoa.mm:

(WebCore::archivedDataForAttributedString): Use new convenience method
to archive the string object.

  • loader/archive/cf/LegacyWebArchiveMac.mm:

(WebCore::LegacyWebArchive::createResourceResponseFromMacArchivedData): Update to
use secure coding where possible.
(WebCore::LegacyWebArchive::createPropertyListRepresentation): Ditto.

  • platform/ios/PlatformPasteboardIOS.mm:

(WebCore::PlatformPasteboard::write): Use new secure API.
(WebCore::PlatformPasteboard::typesSafeForDOMToReadAndWrite const): Ditto.

  • testing/cocoa/WebArchiveDumpSupport.mm:

(WebCoreTestSupport::createCFURLResponseFromResponseData): Update to
secure coding API where possible.

Source/WebCore/PAL:

Add new convenience methods (and SPI headers) so we can adopt new NSKeyedArchiver
API that uses secure coding by default.

  • PAL.xcodeproj/project.pbxproj:
  • pal/spi/cocoa/NSKeyedArchiverSPI.h: Added.

(securelyArchivedDataWithRootObject): New convenience method.
(securelyUnarchiveRootObjectOfClassFromData): Ditto.
(secureArchiverFromMutableData): Ditto.
(secureUnarchiverFromData): Ditto.

Source/WebKit:

Switch to new NSKeyed[Un]Archiver methods that active and use
NSSecureCoding by default.

  • Platform/ios/AccessibilityIOS.mm:

(WebKit::newAccessibilityRemoteToken): Use secure-by-default API.

  • Shared/Cocoa/DataDetectionResult.mm:

(WebKit::DataDetectionResult::encode const): Ditto.
(WebKit::DataDetectionResult::decode): Ditto.

  • Shared/Cocoa/WebCoreArgumentCodersCocoa.mm:

(IPC::ArgumentCoder<WebCore::Payment>::encode): Ditto.
(IPC::ArgumentCoder<WebCore::Payment>::decode): Ditto.
(IPC::ArgumentCoder<WebCore::PaymentContact>::encode): Ditto.
(IPC::ArgumentCoder<WebCore::PaymentContact>::decode): Ditto.
(IPC::ArgumentCoder<WebCore::PaymentMerchantSession>::encode): Ditto.
(IPC::ArgumentCoder<WebCore::PaymentMerchantSession>::decode): Ditto.
(IPC::ArgumentCoder<WebCore::PaymentMethod>::encode): Ditto.
(IPC::ArgumentCoder<WebCore::PaymentMethod>::decode): Ditto.

  • Shared/ios/InteractionInformationAtPosition.mm:

(WebKit::InteractionInformationAtPosition::encode const): Ditto.
(WebKit::InteractionInformationAtPosition::decode): Ditto.

  • Shared/mac/WebCoreArgumentCodersMac.mm:

(IPC::ArgumentCoder<ProtectionSpace>::encodePlatformData): Ditto.
(IPC::ArgumentCoder<ProtectionSpace>::decodePlatformData): Ditto.
(IPC::ArgumentCoder<Credential>::encodePlatformData): Ditto.
(IPC::ArgumentCoder<Credential>::decodePlatformData): Ditto.
(IPC::ArgumentCoder<ContentFilterUnblockHandler>::encode): Ditto.
(IPC::ArgumentCoder<ContentFilterUnblockHandler>::decode): Ditto.
(IPC::ArgumentCoder<MediaPlaybackTargetContext>::encodePlatformData): Ditto.
(IPC::ArgumentCoder<MediaPlaybackTargetContext>::decodePlatformData): Ditto.

  • Shared/mac/WebHitTestResultData.mm:

(WebKit::WebHitTestResultData::platformEncode const): Ditto.
(WebKit::WebHitTestResultData::platformDecode): Ditto.

  • UIProcess/API/Cocoa/WKProcessPool.mm:

(-[WKProcessPool _setObject:forBundleParameter:]): Ditto.
(-[WKProcessPool _setObjectsForBundleParametersWithDictionary:]): Ditto.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _setInputDelegate:]): Ditto.

  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::platformInitializeWebProcess): Ditto.

  • UIProcess/ios/PageClientImplIOS.mm:

(WebKit::PageClientImpl::startAssistingNode): Ditto.

  • WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:

(-[WKWebProcessPlugInBrowserContextController _setFormDelegate:]): Ditto.

  • WebProcess/InjectedBundle/mac/InjectedBundleMac.mm:

(WebKit::InjectedBundle::initialize): Ditto.
(WebKit::InjectedBundle::setBundleParameter): Ditto.
(WebKit::InjectedBundle::setBundleParameters): Ditto.

7:14 AM Changeset in webkit [223888] by pvollan@apple.com
  • 2 edits in trunk/LayoutTests

Mark fast/css-generated-content/details-summary-before-after.html as failing on Windows.
https://bugs.webkit.org/show_bug.cgi?id=178724

Unreviewed test gardening.

  • platform/win/TestExpectations:
5:06 AM Changeset in webkit [223887] by magomez@igalia.com
  • 3 edits in trunk/Source/WebCore

[GTK][X11] Windy.com shows always straight wind lines
https://bugs.webkit.org/show_bug.cgi?id=176718

Reviewed by Carlos Garcia Campos.

WebGL's GL_LUMINANCE_ALPHA format is not available in OpenGL when using a version >= 3.2
and a core profile. In that case, we need to replace it with GL_RG and swizzle the color
components appropriately.

No new behavior.

  • platform/graphics/opengl/GraphicsContext3DOpenGL.cpp:

(WebCore::GraphicsContext3D::texImage2D):

  • platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:

(WebCore::GraphicsContext3D::texSubImage2D):

1:54 AM Changeset in webkit [223886] by rniwa@webkit.org
  • 2 edits in trunk/Source/WebCore

DocumentOrderedMap::add should release assert that tree scopes match
https://bugs.webkit.org/show_bug.cgi?id=178708

Reviewed by Antti Koivisto.

Assert that the tree scope of element matches the given tree scope instead of asserting that
element is in tree scope, and replaced the use of RELEASE_ASSERT by the newly added
RELEASE_ASSERT_WITH_SECURITY_IMPLICATION to clarify the semantics of these assertions.

Also removed now redudnant early exits which would never execute due to release assertions.

  • dom/DocumentOrderedMap.cpp:

(WebCore::DocumentOrderedMap::add):
(WebCore::DocumentOrderedMap::remove):
(WebCore::DocumentOrderedMap::get const):

1:38 AM Changeset in webkit [223885] by Michael Catanzaro
  • 2 edits in trunk/Source/WebCore

-Wsubobject-linkage warning in InspectorIndexedDBAgent.cpp
https://bugs.webkit.org/show_bug.cgi?id=178698

Reviewed by Joseph Pecoraro.

  • inspector/InspectorIndexedDBAgent.cpp:
1:20 AM Changeset in webkit [223884] by zandobersek@gmail.com
  • 3 edits in trunk/Source/WebKit

[GTK][WPE] generate-forwarding-headers.pl should also scan derived sources in WebKit framework
https://bugs.webkit.org/show_bug.cgi?id=178579

Reviewed by Carlos Garcia Campos.

  • PlatformGTK.cmake: When generating forwarding headers, derived sources

should be scanned as well. The DERIVED_SOURCES_WEBKIT_DIR value has to
be passed as an include path to the generate-forward-headers.pl script
to achieve that. This target then also has to depend on all the derived
source files to be generated before this can be performed.

  • PlatformWPE.cmake: Ditto.
12:51 AM Changeset in webkit [223883] by commit-queue@webkit.org
  • 10 edits
    10 copies
    12 adds in trunk

[Web Animations] Add basic timing and target properties
https://bugs.webkit.org/show_bug.cgi?id=178674

Patch by Antoine Quint <Antoine Quint> on 2017-10-24
Reviewed by Dean Jackson.

Source/WebCore:

We add three new interfaces to expose enough properties to establish basic timing properties,
a start time and duration, and the target of an animation. The startTime property is set on
the Animation object, the target is set on the KeyframeEffect set as the effect property on
the Animation object, and the duration is set on the AnimationEffectTiming set on the effect.

Tests: webanimations/animation-effect-timing.html

webanimations/animation-effect.html
webanimations/animation-interface-effect-property.html
webanimations/animation-interface-start-time-property.html
webanimations/keyframe-effect-interface-timing-duration.html
webanimations/keyframe-effect.html

  • CMakeLists.txt:
  • DerivedSources.make:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • animation/AnimationEffect.cpp: Copied from Source/WebCore/animation/WebAnimation.idl.

(WebCore::AnimationEffect::AnimationEffect):
(WebCore::AnimationEffect::~AnimationEffect):

  • animation/AnimationEffect.h: Copied from Source/WebCore/animation/WebAnimation.h.

(WebCore::AnimationEffect::isKeyframeEffect const):
(WebCore::AnimationEffect::timing const):
(WebCore::AnimationEffect::classType const):

  • animation/AnimationEffect.idl: Copied from Source/WebCore/animation/WebAnimation.idl.
  • animation/AnimationEffectTiming.cpp: Copied from Source/WebCore/animation/WebAnimation.idl.

(WebCore::AnimationEffectTiming::create):
(WebCore::AnimationEffectTiming::AnimationEffectTiming):
(WebCore::AnimationEffectTiming::~AnimationEffectTiming):

  • animation/AnimationEffectTiming.h: Copied from Source/WebCore/animation/WebAnimation.h.
  • animation/AnimationEffectTiming.idl: Copied from Source/WebCore/animation/WebAnimation.idl.
  • animation/KeyframeEffect.cpp: Copied from Source/WebCore/animation/WebAnimation.idl.

(WebCore::KeyframeEffect::create):
(WebCore::KeyframeEffect::KeyframeEffect):

  • animation/KeyframeEffect.h: Copied from Source/WebCore/animation/WebAnimation.h.
  • animation/KeyframeEffect.idl: Copied from Source/WebCore/animation/WebAnimation.idl.
  • animation/WebAnimation.cpp:

(WebCore::WebAnimation::setEffect):

  • animation/WebAnimation.h:
  • animation/WebAnimation.idl:
  • bindings/js/JSAnimationEffectCustom.cpp: Copied from Source/WebCore/animation/WebAnimation.cpp.

(WebCore::toJSNewlyCreated):
(WebCore::toJS):

  • bindings/js/WebCoreBuiltinNames.h:

LayoutTests:

Add new tests to check the behavior of the newly exposed interfaces,
constructors and properties.

  • webanimations/animation-effect-expected.txt: Added.
  • webanimations/animation-effect-timing-expected.txt: Added.
  • webanimations/animation-effect-timing.html: Added.
  • webanimations/animation-effect.html: Added.
  • webanimations/animation-interface-effect-property-expected.txt: Added.
  • webanimations/animation-interface-effect-property.html: Added.
  • webanimations/animation-interface-start-time-property-expected.txt: Added.
  • webanimations/animation-interface-start-time-property.html: Added.
  • webanimations/keyframe-effect-expected.txt: Added.
  • webanimations/keyframe-effect-interface-timing-duration-expected.txt: Added.
  • webanimations/keyframe-effect-interface-timing-duration.html: Added.
  • webanimations/keyframe-effect.html: Added.
12:41 AM Changeset in webkit [223882] by rniwa@webkit.org
  • 3 edits in trunk/Source/WebCore

RenderSVGModelObject::checkIntersection triggers layout
https://bugs.webkit.org/show_bug.cgi?id=178710

Reviewed by Antti Koivisto.

Don't trigger a layout inside getElementCTM. Update the layout upfront in getEnclosureList.

  • rendering/svg/RenderSVGModelObject.cpp:

(WebCore::getElementCTM):

  • svg/SVGSVGElement.cpp:

(WebCore::SVGSVGElement::getEnclosureList):

12:25 AM Changeset in webkit [223881] by n_wang@apple.com
  • 3 edits
    2 adds in trunk

AX: Crash at -[WebAccessibilityObjectWrapper _accessibilityMinValue] + 24
https://bugs.webkit.org/show_bug.cgi?id=178697

Reviewed by Chris Fleizach.

Source/WebCore:

When we are calling _accessibilityMinValue and _accessibilityMaxValue on iOS,
it might cause crash if the AX object has already been detached. Fixed this
by adding the necessary checks.

Test: accessibility/ios-simulator/slider-min-value-crash.html

  • accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:

(-[WebAccessibilityObjectWrapper _accessibilityMinValue]):
(-[WebAccessibilityObjectWrapper _accessibilityMaxValue]):

LayoutTests:

  • accessibility/ios-simulator/slider-min-value-crash-expected.txt: Added.
  • accessibility/ios-simulator/slider-min-value-crash.html: Added.

Oct 23, 2017:

10:13 PM Changeset in webkit [223880] by BJ Burg
  • 6 edits in trunk/Source/WebKit

[Cocoa] Web Automation: add SPI to tell whether the automation session is currently simulating user interactions
https://bugs.webkit.org/show_bug.cgi?id=178616

Reviewed by Joseph Pecoraro.

This is needed to disambiguate whether an action (such as selectAll:) came from
a user clicking on "Edit > Select All" in a menu or whether it was produced by
simulating the keystrokes to produce the chord for "Command + a". Some clients,
such as Safari, would allow the latter but not the former during automation.

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

(-[_WKAutomationSession isSimulatingUserInteraction]):
Add new SPI property that's backed by the same WebAutomationSession method.

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

(WebKit::WebAutomationSession::keyboardEventsFlushedForPage):
(WebKit::WebAutomationSession::performMouseInteraction):
(WebKit::WebAutomationSession::performKeyboardInteractions):
Set m_simulatingUserInteraction prior to sending the synthesized events. It will
be cleared when keyboardEventsFlushedForPage() is called by WebPageProxy.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::didReceiveEvent):
Notify the automation session that the key event queue was flushed *after* giving
delegates a chance to do something with the key event. This is necessary so that
any actions that are created from the NSEvent by the delegates are handled prior
to the automation session finishing its keyboard interaction command.

9:23 PM WebKitGTK/Gardening/Calendar edited by Michael Catanzaro
(diff)
9:21 PM Changeset in webkit [223879] by Michael Catanzaro
  • 2 edits in trunk/LayoutTests

Unreviewed WPE test gardening

  • platform/wpe/TestExpectations:
9:17 PM Changeset in webkit [223878] by keith_miller@apple.com
  • 2 edits in trunk/Source/WebCore

Unreviewed, restore unneeded all in ones.

  • CMakeLists.txt:
8:32 PM Changeset in webkit [223877] by Michael Catanzaro
  • 2 edits in trunk/Source/bmalloc

Unreviewed, roll out r222731
https://bugs.webkit.org/show_bug.cgi?id=177745
<rdar://problem/34773148>

Unfortunately Gigacage has broken core dump generation.

  • bmalloc/Gigacage.h:
8:26 PM Changeset in webkit [223876] by commit-queue@webkit.org
  • 4 edits in trunk/Source/WebCore

Unreviewed, rolling out r223870 and r223871.
https://bugs.webkit.org/show_bug.cgi?id=178702

broke the windows build (Requested by keith_miller on
#webkit).

Reverted changesets:

"Add html, inspector, loader to unified sources"
https://bugs.webkit.org/show_bug.cgi?id=178695
https://trac.webkit.org/changeset/223870

"Unrievwed, fix windows build."
https://trac.webkit.org/changeset/223871

8:20 PM Changeset in webkit [223875] by keith_miller@apple.com
  • 19 edits in trunk/Source/JavaScriptCore

Unreviewed, reland r223866

Didn't break the windows build...

Restored changeset:

"WebAssembly: topEntryFrame on Wasm::Instance"
https://bugs.webkit.org/show_bug.cgi?id=178690
https://trac.webkit.org/changeset/223866

7:33 PM Changeset in webkit [223874] by commit-queue@webkit.org
  • 19 edits in trunk/Source/JavaScriptCore

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

Probably broke the windows build (Requested by keith_miller on
#webkit).

Reverted changeset:

"WebAssembly: topEntryFrame on Wasm::Instance"
https://bugs.webkit.org/show_bug.cgi?id=178690
https://trac.webkit.org/changeset/223866

6:44 PM Changeset in webkit [223873] by Joseph Pecoraro
  • 3 edits in trunk/LayoutTests

Unreviewed test gardening. Try to reduce flakiness of inspector/network/har tests.

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

Remove properties which may sometimes be optional.
Filter contents which are shared across tests and might change.

6:42 PM Changeset in webkit [223872] by Michael Catanzaro
  • 2 edits in trunk/Source/WebCore

Unreviewed, attempt to fix initializeSupportedImageMIMETypes after r223860
https://bugs.webkit.org/show_bug.cgi?id=178618
<rdar://problem/35108852>

  • platform/MIMETypeRegistry.cpp:

(WebCore::initializeSupportedImageMIMETypes):

6:31 PM Changeset in webkit [223871] by keith_miller@apple.com
  • 2 edits in trunk/Source/WebCore

Unrievwed, fix windows build.

  • CMakeLists.txt:
6:25 PM Changeset in webkit [223870] by keith_miller@apple.com
  • 4 edits in trunk/Source/WebCore

Add html, inspector, loader to unified sources
https://bugs.webkit.org/show_bug.cgi?id=178695

Rubber-stamped by Tim Horton.

  • CMakeLists.txt:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
6:16 PM Changeset in webkit [223869] by BJ Burg
  • 3 edits in trunk/Source/WebKit

[Mac] Web Automation: key modifiers for synthesized NSEvents are incorrect
https://bugs.webkit.org/show_bug.cgi?id=178615

Reviewed by Joseph Pecoraro.

In both PLATFORM(MAC) platform methods for simulating keyboard interactions,
we errantly relied on +[NSEvent modifierFlags] to get the current state of
sticky modifiers when creating synthesized events. This is incorrect for two reasons:
modifierFlags is never updated when simulating a sequence of events (because
all the events are synthesized before any are delivered); and the NSEvent class
method only reflects the modifier state of the primary physical keyboard, which
is not affected by synthesized NSEvents that happen to have modifier flags.

Instead, just keep our own m_currentModifiers state in the session and compute
the necessary NSEventModifierFlags to put on each synthesized event. This aligns
the implementation with the treatment of sticky keys in the iOS and GTK platform methods.

  • UIProcess/Automation/WebAutomationSession.h: Every port gets this variable now.
  • UIProcess/Automation/mac/WebAutomationSessionMac.mm:

(WebKit::WebAutomationSession::platformSimulateKeyStroke):
(WebKit::WebAutomationSession::platformSimulateKeySequence):
Use and update m_currentModifiers.

5:55 PM Changeset in webkit [223868] by BJ Burg
  • 14 edits
    2 deletes in trunk/Source

Web Inspector: Remove unused Console.setMonitoringXHREnabled
https://bugs.webkit.org/show_bug.cgi?id=178617

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-10-23
Reviewed by Sam Weinig.

Source/JavaScriptCore:

  • JavaScriptCore.xcodeproj/project.pbxproj:
  • Sources.txt:
  • inspector/agents/InspectorConsoleAgent.h:
  • inspector/agents/JSGlobalObjectConsoleAgent.cpp: Removed.
  • inspector/agents/JSGlobalObjectConsoleAgent.h: Removed.
  • inspector/protocol/Console.json:

Removed files and method.

  • inspector/JSGlobalObjectInspectorController.cpp:

(Inspector::JSGlobalObjectInspectorController::JSGlobalObjectInspectorController):
This can use the base ConsoleAgent now.

Source/WebCore:

  • inspector/InspectorInstrumentation.cpp:

(WebCore::InspectorInstrumentation::didFinishXHRLoadingImpl):

  • inspector/InspectorInstrumentation.h:

(WebCore::InspectorInstrumentation::didFinishXHRLoading):

  • inspector/WebConsoleAgent.cpp:

(WebCore::WebConsoleAgent::setMonitoringXHREnabled): Deleted.
(WebCore::WebConsoleAgent::didFinishXHRLoading): Deleted.

  • inspector/WebConsoleAgent.h:

Remove XHR monitoring code.

  • xml/XMLHttpRequest.h:
  • xml/XMLHttpRequest.cpp:

(WebCore::XMLHttpRequest::send):
(WebCore::XMLHttpRequest::didFinishLoading):
(WebCore::XMLHttpRequest::setLastSendLineAndColumnNumber): Deleted.

  • xml/XMLHttpRequest.idl:

Remove now unused state on XHR and ExecState requirement for send().

5:35 PM Changeset in webkit [223867] by Nikita Vasilyev
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Styles Redesign: Inline widgets don't hide when starting editing by tabbing from property name
https://bugs.webkit.org/show_bug.cgi?id=178638

Reviewed by Joseph Pecoraro.

  • UserInterface/Views/SpreadsheetStyleProperty.js:

(WI.SpreadsheetStyleProperty.prototype.spreadsheetTextFieldDidBlur):
Blur event on the property name text field caused WI.SpreadsheetStyleProperty.prototype._renderValue,
which displayed inline swatches. Display inline swatches only after blur event on the property value.

5:29 PM Changeset in webkit [223866] by jfbastien@apple.com
  • 19 edits in trunk/Source/JavaScriptCore

WebAssembly: topEntryFrame on Wasm::Instance
https://bugs.webkit.org/show_bug.cgi?id=178690

Reviewed by Saam Barati.

topEntryFrame is usually on VM, but for a no-VM WebAssembly we
need to hold topEntryFrame elsewhere, and generated code cannot
hard-code where topEntryFrame live. Do this at creation time of
Wasm::Instance, and then generated code will just load from
wherever Wasm::Instance was told topEntryFrame is. In a JavaScript
embedding this is still from VM, so all of the unwinding machinery
stays the same.

  • dfg/DFGOSREntry.cpp:

(JSC::DFG::prepareOSREntry):

  • dfg/DFGOSRExit.cpp:

(JSC::DFG::restoreCalleeSavesFromVMEntryFrameCalleeSavesBuffer):
(JSC::DFG::copyCalleeSavesToVMEntryFrameCalleeSavesBuffer):

  • ftl/FTLOSRExitCompiler.cpp:

(JSC::FTL::compileStub):

  • interpreter/Interpreter.cpp:

(JSC::UnwindFunctor::copyCalleeSavesToEntryFrameCalleeSavesBuffer const):

  • jit/AssemblyHelpers.cpp:

(JSC::AssemblyHelpers::restoreCalleeSavesFromEntryFrameCalleeSavesBuffer):
(JSC::AssemblyHelpers::copyCalleeSavesToEntryFrameCalleeSavesBufferImpl):

  • jit/AssemblyHelpers.h:

(JSC::AssemblyHelpers::copyCalleeSavesToEntryFrameCalleeSavesBuffer):
The default parameter was never non-defaulted from any of the
callers. The new version calls the impl directly because it
doesn't have VM and doesn't hard-code the address of
topEntryFrame.

  • jit/RegisterSet.cpp:

(JSC::RegisterSet::vmCalleeSaveRegisterOffsets): This was weird on
VM because it's not really VM-specific.

  • jit/RegisterSet.h:
  • runtime/VM.cpp:

(JSC::VM::getAllCalleeSaveRegisterOffsets): Deleted.

  • runtime/VM.h:

(JSC::VM::getCTIStub):

  • wasm/WasmB3IRGenerator.cpp:

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

  • wasm/WasmInstance.cpp:

(JSC::Wasm::Instance::Instance):

  • wasm/WasmInstance.h: topEntryFramePointer will eventually live

here for real. Right now it's mirrored in JSWebAssemblyInstance
because that's the acting Context.
(JSC::Wasm::Instance::create):
(JSC::Wasm::Instance::offsetOfTopEntryFramePointer):

  • wasm/WasmThunks.cpp:

(JSC::Wasm::throwExceptionFromWasmThunkGenerator):

  • wasm/js/JSWebAssemblyInstance.cpp:

(JSC::JSWebAssemblyInstance::JSWebAssemblyInstance):

  • wasm/js/JSWebAssemblyInstance.h: Mirror Wasm::Instance temporarily.

(JSC::JSWebAssemblyInstance::offsetOfCallee):
(JSC::JSWebAssemblyInstance::offsetOfTopEntryFramePointer):
(JSC::JSWebAssemblyInstance::offsetOfVM): Deleted.

  • wasm/js/WebAssemblyInstanceConstructor.cpp:

(JSC::constructJSWebAssemblyInstance):

  • wasm/js/WebAssemblyPrototype.cpp:

(JSC::instantiate):

5:27 PM Changeset in webkit [223865] by keith_miller@apple.com
  • 4 edits in trunk/Source/WebCore

Add dom, editing, fileapi, and history to unified sources
https://bugs.webkit.org/show_bug.cgi?id=178694

Rubber-stamped by Tim Horton.

  • CMakeLists.txt:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
5:22 PM Changeset in webkit [223864] by Dewei Zhu
  • 4 edits in trunk/Websites/perf.webkit.org

Update perf dashboard upload logic to support uploading binaries from owned commits.
https://bugs.webkit.org/show_bug.cgi?id=178610

Reviewed by Ryosuke Niwa.

Update build requests to 'completed' only when all commit set items are satisfied.
Extend 'repositoryList' parameter to be able to specified own commit information.
Items in 'repositoryList' can either be a string for top level repository,
or a dictionary with two keys: 'ownerRepository' and 'ownedRepository'.

  • public/api/upload-root.php: Extend upload logic for support uploading binaries from owned commits.
  • server-tests/api-upload-root-tests.js: Added unit tests.
  • server-tests/tools-sync-buildbot-integration-tests.js: Added unit tests.
5:08 PM Changeset in webkit [223863] by keith_miller@apple.com
  • 4 edits in trunk/Source/WebCore

Move bridge, contentextensions, crypto, and css to unified sources.
https://bugs.webkit.org/show_bug.cgi?id=178691

Reviewed by Tim Horton.

  • CMakeLists.txt:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
4:40 PM Changeset in webkit [223862] by Wenson Hsieh
  • 2 edits in trunk/Source/WebCore

Unreviewed, fix the Windows build after r223860

UTIUtilities only exists on Cocoa platforms, so we need to guard it accordingly.

  • platform/MIMETypeRegistry.cpp:

(WebCore::initializeSupportedImageMIMETypes):

4:23 PM Changeset in webkit [223861] by achristensen@apple.com
  • 2 edits in trunk/Source/WebKit

Fix ASAN test after r222824
https://bugs.webkit.org/show_bug.cgi?id=178688
<rdar://problem/35104706>

Reviewed by Tim Horton.

  • UIProcess/WebBackForwardList.cpp:

(WebKit::WebBackForwardList::clear):
Resizing a list of Ref<T> after we've WTFMoved all the elements doesn't make ASAN happy.

4:17 PM AddingFiles edited by keith_miller@apple.com
(diff)
4:12 PM AddingFiles edited by keith_miller@apple.com
(diff)
4:11 PM AddingFiles edited by keith_miller@apple.com
(diff)
4:03 PM AddingFiles edited by keith_miller@apple.com
(diff)
3:37 PM Changeset in webkit [223860] by Wenson Hsieh
  • 3 edits in trunk/Source/WebCore

[iOS] DocumentWriter::createDocument can spend ~100ms unnecessarily converting image UTIs to MIME types
https://bugs.webkit.org/show_bug.cgi?id=178618
<rdar://problem/35108852>

Reviewed by Said Abou-Hallawa.

Currently, in setting up a new Document, DocumentWriter::createDocument() always asks whether or not the
Document should be a PDF document by calling MIMETypeRegistry::isPDFMIMEType(), which forces lazy initialization
of every MIME type dictionary (e.g. image types, PDF types, JavaScript types, etc.). As evidenced by traces,
this can be an expensive operation on certain devices.

This patch implements two optimizations. First, we refactor the initializeSupportedImageMIMETypes() helper to
stop asking for MIMETypeForImageSourceType for each of the supported UTIs. This is because the known MIME types
corresponding to these hard-coded UTI types is a fixed set anyways, so we can simply iterate over a constant
array of MIME types and populate the supported image (and image resource) types. Also, add assertions to ensure
that we keep allowed image MIME types in sync with allowed image UTIs.

The second optimization removes initializeMIMETypeRegistry() altogether in favor of calling just the
initialize*MIMETypes() functions needed to ensure the information required. For instance, getPDFMIMETypes()
currently calls initializeMIMETypeRegistry() if the pdfMIMETypes dictionary doesn't exist, when it really only
needs to ensure that the pdfMIMETypes is initialized, for which initializePDFMIMETypes() is sufficient.

  • platform/MIMETypeRegistry.cpp:

(WebCore::initializeSupportedImageMIMETypes):
(WebCore::initializeSupportedJavaScriptMIMETypes):
(WebCore::initializePDFMIMETypes):
(WebCore::initializeSupportedNonImageMimeTypes):
(WebCore::initializeUnsupportedTextMIMETypes):

Move MIME type dictionary creation into initialize*MIMETypes() helpers. Additionally, remove
initializePDFAndPostScriptMIMETypes, which is no longer necessary.

(WebCore::MIMETypeRegistry::isSupportedImageMIMEType):
(WebCore::MIMETypeRegistry::isSupportedImageResourceMIMEType):
(WebCore::MIMETypeRegistry::isSupportedJavaScriptMIMEType):
(WebCore::MIMETypeRegistry::isSupportedNonImageMIMEType):
(WebCore::MIMETypeRegistry::isUnsupportedTextMIMEType):
(WebCore::MIMETypeRegistry::isPDFOrPostScriptMIMEType):

Tweak to check that the type isPDFMIMEType(), or that it's otherwise "application/postscript".

(WebCore::MIMETypeRegistry::isPDFMIMEType):
(WebCore::MIMETypeRegistry::getSupportedImageMIMETypes):
(WebCore::MIMETypeRegistry::getSupportedImageResourceMIMETypes):
(WebCore::MIMETypeRegistry::getSupportedNonImageMIMETypes):
(WebCore::MIMETypeRegistry::getPDFMIMETypes):
(WebCore::MIMETypeRegistry::getUnsupportedTextMIMETypes):

Call only the relevant MIME type initializers when needed.

(WebCore::initializePostScriptMIMETypes): Deleted.
(WebCore::initializeMIMETypeRegistry): Deleted.
(WebCore::MIMETypeRegistry::getPDFAndPostScriptMIMETypes): Deleted.

Remove an unused and unexported function.

  • platform/MIMETypeRegistry.h:
3:30 PM Changeset in webkit [223859] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

Multiple imported layout tests are crashing and timing out.
https://bugs.webkit.org/show_bug.cgi?id=178685

Unreviewed.

Patch by Youenn Fablet <youenn@apple.com> on 2017-10-23

  • TestExpectations: skipping cache storage tests in service worker context until it is functional.
3:14 PM Changeset in webkit [223858] by aestes@apple.com
  • 2 edits in trunk/Source/WebCore

[Payment Request] Take the JSC API lock before creating the PaymentResponse.details object
https://bugs.webkit.org/show_bug.cgi?id=178686

Reviewed by Keith Miller.

This fixes several flaky crashes in http/tests/paymentrequest/ after r223855.

  • Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp:

(WebCore::ApplePayPaymentHandler::didAuthorizePayment):

2:58 PM Changeset in webkit [223857] by timothy_horton@apple.com
  • 3 edits in trunk/Source/WebKit

Stop using _UIApplicationUsesLegacyUI()
https://bugs.webkit.org/show_bug.cgi?id=178680
<rdar://problem/35131949>

Reviewed by Dan Bernstein.

  • Platform/spi/ios/UIKitSPI.h:
  • UIProcess/ios/forms/WKFormSelectPopover.mm:

(-[WKSelectTableViewController tableView:cellForRowAtIndexPath:]):
(-[WKSelectPopover initWithView:hasGroups:]):
Resolve _UIApplicationUsesLegacyUI to false and simplify.

2:34 PM Changeset in webkit [223856] by Joseph Pecoraro
  • 22 edits
    6 adds in trunk

Web Inspector: Please support HAR Export for network traffic
https://bugs.webkit.org/show_bug.cgi?id=146692
<rdar://problem/7463672>

Reviewed by Brian Burg.

Source/JavaScriptCore:

  • inspector/protocol/Network.json:

Add a walltime to each send request.

Source/WebCore:

Tests: http/tests/inspector/network/har/har-basic.html

http/tests/inspector/network/har/har-page.html

  • inspector/InspectorNetworkAgent.cpp:

(WebCore::InspectorNetworkAgent::willSendRequest):
Include the wall time when sending a request. This is needed for HAR to
include a wall time, and can be used for Cookie expiration time calculation
as well.

Source/WebInspectorUI:

  • UserInterface/Main.html:
  • UserInterface/Test.html:

New resources.

  • UserInterface/Base/Platform.js:

Include a build number as well.

  • UserInterface/Base/URLUtilities.js:

(parseLocationQueryParameters): Deleted.
Remove unused function.

  • UserInterface/Controllers/FrameResourceManager.js:

(WI.FrameResourceManager.prototype.frameDidNavigate):
(WI.FrameResourceManager.prototype.resourceRequestWillBeSent):
(WI.FrameResourceManager.prototype.resourceRequestWasServedFromMemoryCache):
(WI.FrameResourceManager.prototype.resourceRequestDidReceiveResponse):
(WI.FrameResourceManager.prototype._addNewResourceToFrameOrTarget):
Pass along a walltime.

  • UserInterface/Protocol/NetworkObserver.js:

(WI.NetworkObserver.prototype.requestWillBeSent):
Pass along a walltime. This new parameter shifts old parameters.

  • UserInterface/Controllers/HARBuilder.js: Added.

(WI.HARBuilder.async.buildArchive):
(WI.HARBuilder.creator):
(WI.HARBuilder.pages):
(WI.HARBuilder.pageTimings):
(WI.HARBuilder.entry):
(WI.HARBuilder.request):
(WI.HARBuilder.response):
(WI.HARBuilder.cookies):
(WI.HARBuilder.headers):
(WI.HARBuilder.content):
(WI.HARBuilder.postData):
(WI.HARBuilder.cache):
(WI.HARBuilder.timings):
(WI.HARBuilder.ipAddress):
(WI.HARBuilder.date):
(WI.HARBuilder.fetchType):
HAR construction and helpers.

  • UserInterface/Models/Cookie.js:

(WI.Cookie.prototype.expirationDate):

  • UserInterface/Models/Resource.js:

(WI.Resource.prototype.get queryStringParameters):
(WI.Resource.prototype.get requestFormParameters):
(WI.Resource.prototype.get requestSentWalltime):
(WI.Resource.prototype.get requestSentDate):
(WI.Resource.prototype.hasRequestFormParameters):
Helpers for HAR generation and sub-sets of data.

  • UserInterface/Models/SourceCode.js:

(WI.SourceCode.prototype._processContent):
Capture the raw, unmodified, base64 encoded flag and content. This ends
up getting used by HAR generation and is otherwise lost.

  • UserInterface/Test/TestHarness.js:

(TestHarness.prototype.json):
Helper for just logging JSON data with a filter. This defaults to
a reasonable 2 space indent for JSON logs in our test output.

  • UserInterface/Views/DOMTreeContentView.js:

(WI.DOMTreeContentView.prototype.get saveData):
(WI.DOMTreeContentView.get saveData.saveHandler): Deleted.
Drive-by simplify while looking at other save handlers.

  • UserInterface/Views/NetworkTableContentView.js:

(WI.NetworkTableContentView.prototype.get supportsSave):
(WI.NetworkTableContentView.prototype.get saveData):
(WI.NetworkTableContentView.prototype.tableCellContextMenuClicked):
(WI.NetworkTableContentView.prototype._HARResources):
(WI.NetworkTableContentView.prototype._exportHAR):
Provide a context menu and save keyboard handler to export a HAR.
This matches other browsers.

  • UserInterface/Views/ResourceClusterContentView.js:

(WI.ResourceClusterContentView.prototype._canShowRequestContentView):
Use code that is now available in Resource.

LayoutTests:

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

Tests with mock resources / data and real resources.

  • platform/mac-wk1/TestExpectations:
  • platform/mac/TestExpectations:
  • platform/win/TestExpectations:

Skip on platforms that cannot provide complete metrics, so some optional
fields may be missing.

2:00 PM Changeset in webkit [223855] by aestes@apple.com
  • 23 edits
    6 copies
    14 adds in trunk

[Payment Request] Resolve PaymentRequest.show()'s accept promise when a payment is authorized
https://bugs.webkit.org/show_bug.cgi?id=178609
<rdar://problem/33542813>

Reviewed by Alex Christensen.

Source/WebCore:

This patch implements the logic for resolving PaymentRequest.show()'s accept promise when
the user authorizes a payment, and implements PaymentResponse.complete().

Tests: http/tests/paymentrequest/payment-address-attributes-and-toJSON-method.https.html

http/tests/paymentrequest/payment-response-complete-method.https.html
http/tests/paymentrequest/payment-response-methodName-attribute.https.html
http/tests/paymentrequest/payment-response-payerEmail-attribute.https.html
http/tests/paymentrequest/payment-response-payerName-attribute.https.html
http/tests/paymentrequest/payment-response-payerPhone-attribute.https.html

  • DerivedSources.make:
  • Modules/applepay/ApplePayPaymentContact.h:
  • Modules/applepay/Payment.h:

(WebCore::Payment::Payment): Deleted.
(WebCore::Payment::pkPayment const): Deleted.

  • Modules/applepay/PaymentContact.h:

(WebCore::PaymentContact::PaymentContact): Deleted.
(WebCore::PaymentContact::pkContact const): Deleted.

  • Modules/applepay/cocoa/PaymentContactCocoa.mm:

(WebCore::convert):

  • Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp:

(WebCore::ApplePayPaymentHandler::hasActiveSession):
(WebCore::ApplePayPaymentHandler::ApplePayPaymentHandler):
(WebCore::ApplePayPaymentHandler::document):
(WebCore::ApplePayPaymentHandler::paymentCoordinator):
(WebCore::ApplePayPaymentHandler::convertData):
(WebCore::ApplePayPaymentHandler::show):
(WebCore::ApplePayPaymentHandler::hide):
(WebCore::ApplePayPaymentHandler::canMakePayment):
(WebCore::ApplePayPaymentHandler::complete):
(WebCore::convert):
(WebCore::ApplePayPaymentHandler::didAuthorizePayment):
(WebCore::ApplePayPaymentHandler::didSelectShippingMethod):
(WebCore::ApplePayPaymentHandler::didSelectShippingContact):

  • Modules/applepay/paymentrequest/ApplePayPaymentHandler.h:
  • Modules/paymentrequest/PaymentAddress.h:
  • Modules/paymentrequest/PaymentAddress.idl:
  • Modules/paymentrequest/PaymentHandler.cpp:

(WebCore::PaymentHandler::create):

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

(WebCore::PaymentRequest::show):
(WebCore::PaymentRequest::stop):
(WebCore::PaymentRequest::canMakePayment):
(WebCore::PaymentRequest::canSuspendForDocumentSuspension const):
(WebCore::PaymentRequest::shippingAddressChanged):
(WebCore::PaymentRequest::shippingOptionChanged):
(WebCore::PaymentRequest::accept):
(WebCore::PaymentRequest::complete):

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

(WebCore::PaymentResponse::PaymentResponse):
(WebCore::PaymentResponse::complete):

  • Modules/paymentrequest/PaymentResponse.h:
  • WebCore.xcodeproj/project.pbxproj:
  • testing/Internals.cpp:

(WebCore::Internals::Internals):
(WebCore::Internals::mockPaymentCoordinator const):

  • testing/Internals.h:
  • testing/Internals.idl:
  • testing/MockPayment.h: Added.
  • testing/MockPaymentAddress.h: Added.
  • testing/MockPaymentAddress.idl: Added.
  • testing/MockPaymentContact.h: Added.
  • testing/MockPaymentCoordinator.cpp:

(WebCore::MockPaymentCoordinator::canMakePaymentsWithActiveCard):
(WebCore::MockPaymentCoordinator::openPaymentSetup):
(WebCore::dispatchIfShowing):
(WebCore::MockPaymentCoordinator::showPaymentUI):
(WebCore::MockPaymentCoordinator::completeMerchantValidation):
(WebCore::MockPaymentCoordinator::completePaymentSession):
(WebCore::MockPaymentCoordinator::abortPaymentSession):
(WebCore::MockPaymentCoordinator::cancelPaymentSession):
(WebCore::MockPaymentCoordinator::paymentCoordinatorDestroyed):

  • testing/MockPaymentCoordinator.h:
  • testing/MockPaymentCoordinator.idl: Added.

LayoutTests:

  • http/tests/paymentrequest/payment-address-attributes-and-toJSON-method.https-expected.txt: Added.
  • http/tests/paymentrequest/payment-address-attributes-and-toJSON-method.https.html: Copied from imported/w3c/web-platform-tests/payment-request/PaymentAddress/attributes-and-toJSON-method-manual.https.html.
  • http/tests/paymentrequest/payment-response-complete-method.https-expected.txt: Added.
  • http/tests/paymentrequest/payment-response-complete-method.https.html: Copied from imported/w3c/web-platform-tests/payment-request/payment-response/complete-method-manual.https.html.
  • http/tests/paymentrequest/payment-response-methodName-attribute.https-expected.txt: Added.
  • http/tests/paymentrequest/payment-response-methodName-attribute.https.html: Copied from imported/w3c/web-platform-tests/payment-request/payment-response/methodName-attribute-manual.https.html.
  • http/tests/paymentrequest/payment-response-payerEmail-attribute.https-expected.txt: Added.
  • http/tests/paymentrequest/payment-response-payerEmail-attribute.https.html: Copied from imported/w3c/web-platform-tests/payment-request/payment-response/payerEmail-attribute-manual.https.html.
  • http/tests/paymentrequest/payment-response-payerName-attribute.https-expected.txt: Added.
  • http/tests/paymentrequest/payment-response-payerName-attribute.https.html: Copied from imported/w3c/web-platform-tests/payment-request/payment-response/payerName-attribute-manual.https.html.
  • http/tests/paymentrequest/payment-response-payerPhone-attribute.https-expected.txt: Added.
  • http/tests/paymentrequest/payment-response-payerPhone-attribute.https.html: Copied from imported/w3c/web-platform-tests/payment-request/payment-response/payerPhone-attribute-manual.https.html.
  • http/tests/paymentrequest/resources/helpers.js: Copied from imported/w3c/web-platform-tests/payment-request/payment-response/helpers.js.

(test):
(async.getPaymentResponse):
(async.getPaymentRequestResponse):
(async.runTest):

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

Attempt to stop iOS Simulator tests from failing because
we don't support Accelerated ImageBuffer.

  • html/ImageBitmap.cpp:
1:42 PM Changeset in webkit [223853] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[FrameView::layout cleanup] Make m_subtreeLayoutRoot weak.
https://bugs.webkit.org/show_bug.cgi?id=178621
<rdar://problem/35110321>

Reviewed by Simon Fraser.

This patch turn m_subtreeLayoutRoot into a weak pointer to handle both the optional and the mutation cases.

Covered by existing cases.

  • page/FrameView.cpp:

(WebCore::FrameView::reset):
(WebCore::FrameView::willDestroyRenderTree):
(WebCore::FrameView::didDestroyRenderTree):
(WebCore::FrameView::calculateScrollbarModesForLayout):
(WebCore::FrameView::handleLayoutWithFrameFlatteningIfNeeded):
(WebCore::FrameView::canPerformLayout const):
(WebCore::FrameView::layout): WeakPtr<RenderElement> protects us from recursive layouts triggering UAF on layoutRoot.
(WebCore::FrameView::convertSubtreeLayoutToFullLayout):
(WebCore::FrameView::scheduleRelayout):
(WebCore::FrameView::scheduleRelayoutOfSubtree):
(WebCore::FrameView::needsLayout const):
(WebCore::FrameView::autoSizeIfEnabled):

  • page/FrameView.h:
1:40 PM Changeset in webkit [223852] by keith_miller@apple.com
  • 2 edits in trunk/Source/WebCore

Unreviewed, fix windows build.

  • CMakeLists.txt:
1:37 PM WebKitGTK/2.18.x edited by Adrian Perez de Castro
(diff)
1:32 PM Changeset in webkit [223851] by Ryan Haddad
  • 2 edits in trunk/Source/WebKit

Unreviewed, suppress deprecation warnings to fix the build.
<rdar://problem/35131949>

  • UIProcess/ios/forms/WKFormSelectPopover.mm:

(-[WKSelectTableViewController tableView:cellForRowAtIndexPath:]):
(-[WKSelectPopover initWithView:hasGroups:]):

1:23 PM Changeset in webkit [223850] by keith_miller@apple.com
  • 4 edits in trunk/Source/WebCore

Move shared accessibility and animiations files to unified sources.
https://bugs.webkit.org/show_bug.cgi?id=178677

Reviewed by Tim Horton.

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
12:36 PM Changeset in webkit [223849] by Chris Dumez
  • 16 edits
    2 adds in trunk

Drop confusing Event::dispatched() method
https://bugs.webkit.org/show_bug.cgi?id=178670

Reviewed by Youenn Fablet.

Source/WebCore:

Drop confusing Event::dispatched() method. What the call sites want to do is check
that the Event's "dispatch" flag is set:

This flag gets set at the beginning of dispatchEvent() and unset at the end of
dispatchEvent():

See as an example event.initEvent():

The right way to check the Event's "dispatch" flag is the Event::isBeingDispatched()
method, so use this instead. One side effect of this change is that it is now
possible to call the init*Event() method on events that have already been dispatched
in order to dispatch them again, as per the specification.

Test: fast/events/initEvent-after-dispatching.html

  • dom/CompositionEvent.cpp:

(WebCore::CompositionEvent::initCompositionEvent):

  • dom/DeviceMotionEvent.cpp:

(WebCore::DeviceMotionEvent::initDeviceMotionEvent):

  • dom/DeviceOrientationEvent.cpp:

(WebCore::DeviceOrientationEvent::initDeviceOrientationEvent):

  • dom/Event.h:
  • dom/HashChangeEvent.h:
  • dom/KeyboardEvent.cpp:

(WebCore::KeyboardEvent::initKeyboardEvent):

  • dom/MessageEvent.cpp:

(WebCore::MessageEvent::initMessageEvent):

  • dom/MouseEvent.cpp:

(WebCore::MouseEvent::initMouseEvent):

  • dom/OverflowEvent.cpp:

(WebCore::OverflowEvent::initOverflowEvent):

  • dom/TextEvent.cpp:

(WebCore::TextEvent::initTextEvent):

  • dom/TouchEvent.cpp:

(WebCore::TouchEvent::initTouchEvent):

  • dom/UIEvent.cpp:

(WebCore::UIEvent::initUIEvent):

  • dom/WheelEvent.cpp:

(WebCore::WheelEvent::initWheelEvent):

  • storage/StorageEvent.cpp:

(WebCore::StorageEvent::initStorageEvent):

LayoutTests:

Add layout test coverage.

  • fast/events/initEvent-after-dispatching-expected.txt: Added.
  • fast/events/initEvent-after-dispatching.html: Added.
11:59 AM Changeset in webkit [223848] by Antti Koivisto
  • 8 edits in trunk

Remember previous child renderer during render tree update
https://bugs.webkit.org/show_bug.cgi?id=178659

Reviewed by Zalan Bujtas.

Source/WebCore:

We shouldn't need to recompute the previous renderer, we know it already.

  • style/RenderTreePosition.cpp:

(WebCore::RenderTreePosition::previousSiblingRenderer const): Deleted.

No longer needed. This was also subtly wrong as doesn't take display:contents into account.

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

(WebCore::RenderTreeUpdater::updateRenderTree):
(WebCore::RenderTreeUpdater::textRendererIsNeeded):

Use the saved previous renderer.

(WebCore::RenderTreeUpdater::updateTextRenderer):
(WebCore::RenderTreeUpdater::storePreviousRenderer):

Save the previous renderere as we walk the tree.

(WebCore::textRendererIsNeeded): Deleted.

  • style/RenderTreeUpdater.h:

LayoutTests:

  • fast/block/float/float-not-removed-from-pre-block-expected.txt:
  • platform/mac/fast/css-generated-content/details-summary-before-after-expected.txt:
11:57 AM Changeset in webkit [223847] by keith_miller@apple.com
  • 4 edits in trunk/Source/WebCore

Add Shared Modules files to the unified source build.
https://bugs.webkit.org/show_bug.cgi?id=178675

Reviewed by Tim Horton.

This patch all the Modules sources files shared across all ports to
unified sources.

  • CMakeLists.txt:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
11:42 AM Changeset in webkit [223846] by Lucas Forschler
  • 2 edits in trunk/Tools

<rdar://problem/35045445>
Update README to reference WebKit build archives, instead of 'nightly'

Reviewed by Aakash Jain.

  • WebKitArchiveSupport/README:
11:10 AM Changeset in webkit [223845] by dbates@webkit.org
  • 3 edits
    4 adds in trunk/LayoutTests

Add tests to ensure spelling error dots are drawn in the correct place in bottom-to-top
and right-to-left writing modes
https://bugs.webkit.org/show_bug.cgi?id=178671

Reviewed by Simon Fraser.

  • fast/writing-mode/english-bt-text-with-spelling-marker-expected.html: Added.
  • fast/writing-mode/english-bt-text-with-spelling-marker.html: Added.
  • fast/writing-mode/english-rl-text-with-spelling-marker-expected.html: Added.
  • fast/writing-mode/english-rl-text-with-spelling-marker.html: Added.
  • platform/ios/TestExpectations: Skip the test on iOS as it does not support spelling and grammar

marker painting.

10:56 AM Changeset in webkit [223844] by zandobersek@gmail.com
  • 2 edits in trunk/Source/bmalloc

bmalloc::api::tryLargeMemalignVirtual() shouldn't assert on a failed allocation
https://bugs.webkit.org/show_bug.cgi?id=178654

Reviewed by Geoffrey Garen.

  • bmalloc/bmalloc.h:

(bmalloc::api::tryLargeMemalignVirtual): Call Heap::tryAllocateLarge()
instead of Heap::allocateLarge(). The former will return a null pointer
upon a failed allocation, allowing the caller to fail gracefully just as
the API entrypoint implies, while the latter currently provokes a crash
in these circumstances.

10:51 AM Changeset in webkit [223843] by dino@apple.com
  • 9 edits
    4 adds in trunk

Implement drawImage(ImageBitmap) on 2d canvas
https://bugs.webkit.org/show_bug.cgi?id=178653
<rdar://problem/35104360>

Reviewed by Antoine Quint.

LayoutTests/imported/w3c:

Update expected results now that drawImage is implemented.

  • web-platform-tests/2dcontext/imagebitmap/createImageBitmap-drawImage-expected.txt:

Source/WebCore:

Implement CanvasRenderingContext2D::drawImage with ImageBitmap.
It's probably not going to be a very common operation, but
it importantly allows us to test the ImageBitmap creation
code.

Test: http/wpt/2dcontext/imagebitmap/drawImage-ImageBitmap.html

  • html/ImageBitmap.cpp:

(WebCore::taintsOrigin): New helper function to determine if a
CachedImage would provide a clean origin.
(WebCore::ImageBitmap::createPromise): Set the flag that records
if this ImageBitmap has a clean origin.

  • html/ImageBitmap.h:

(WebCore::ImageBitmap::buffer): Exposes the ImageBuffer backing
store, allowing access to the data for drawing.
(WebCore::ImageBitmap::originClean const): Is this ImageBitmap
going to taint a destination.

  • html/canvas/CanvasRenderingContext.cpp:

(WebCore::CanvasRenderingContext::wouldTaintOrigin): Implement
the ImageBitmap version of this template function.

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

(WebCore::CanvasRenderingContext2D::drawImage): Implement the
actual drawing of an ImageBitmap.

LayoutTests:

Add a new test that exercises drawImage(ImageBitmap)
that will be contributed back to Web Platform Tests.

  • http/wpt/2dcontext/imagebitmap/common.js: Copied (mostly) from WPT.

(create9x9CanvasWith2dContext): New helper function to create a canvas
and provide a rendering context.

  • http/wpt/2dcontext/imagebitmap/drawImage-ImageBitmap-expected.txt: Added.
  • http/wpt/2dcontext/imagebitmap/drawImage-ImageBitmap.html: Added.
  • http/wpt/2dcontext/imagebitmap/target-blue-dot.png: Added.
10:49 AM Changeset in webkit [223842] by dbates@webkit.org
  • 3 edits
    4 adds in trunk/LayoutTests

Add tests to ensure spelling error dots are drawn in the correct place for overlapping lines
https://bugs.webkit.org/show_bug.cgi?id=178611
<rdar://problem/35105805>

Reviewed by Zalan Bujtas.

Add tests to ensure that we paint the spelling error dots in the correct place for
overlapping lines.

  • editing/spelling/spelling-markers-in-overlapping-lines-expected.html: Added.
  • editing/spelling/spelling-markers-in-overlapping-lines-large-font-expected.html: Added.
  • editing/spelling/spelling-markers-in-overlapping-lines-large-font.html: Added.
  • editing/spelling/spelling-markers-in-overlapping-lines.html: Added.
  • platform/ios/TestExpectations: Skip the test on iOS as it does not support spelling and grammar

marker painting.

10:35 AM Changeset in webkit [223841] by zandobersek@gmail.com
  • 2 edits
    839 adds in trunk/LayoutTests

Unreviewed WPE gardening. Unskip the SVG tests and generate the
required platform-specific baselines.

  • platform/wpe/TestExpectations:
  • platform/wpe/svg: Added ~800 baselines.
10:28 AM Changeset in webkit [223840] by dbates@webkit.org
  • 3 edits in trunk/Source/WebCore

Unreviewed, rolling out r223699.

Caused regressions with right-to-left text selection and
painting of markers in flipped writing mode and in overlapping
lines. Will investigate offline.

Reverted changeset:

"Share logic in InlineTextBox to compute selection rect"
https://bugs.webkit.org/show_bug.cgi?id=178232
https://trac.webkit.org/changeset/223699

10:25 AM Changeset in webkit [223839] by commit-queue@webkit.org
  • 27 edits
    2 copies
    2 adds in trunk

Source/WebCore:
Create a Fetch event when ServiceWorker has to handle a fetch
https://bugs.webkit.org/show_bug.cgi?id=178491

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

Covered by existing test.

Updating FetchEvent to pass a FetchResponse* within its onResponse callback.
Making it a CompletionHandler.
Fixing a check on respondWith to ensure that event is dispatched when respondWith is called.

Adding ServiceWorkerFetch class to handle the creation of the fetch event, waiting for the fetch event to be responded
and processing when fetch event is responded.
ServiceWorkerFetchTask takes a client to which will be sent the response body or the error.
WebKit implementation of it will be to send the related IPC message back to the WebProcess that made the fetch request.

Adding a method to ServiceWorkerThread to create the fetch event on worker thread and dispatch on the global scope.

  • WebCore.xcodeproj/project.pbxproj:
  • platform/network/ResourceResponseBase.h:
  • testing/Internals.cpp:

(WebCore::Internals::waitForFetchEventToFinish):

  • workers/service/FetchEvent.cpp:

(WebCore::FetchEvent::~FetchEvent):
(WebCore::FetchEvent::respondWith):
(WebCore::FetchEvent::onResponse):
(WebCore::FetchEvent::respondWithError):
(WebCore::FetchEvent::processResponse):
(WebCore::FetchEvent::promiseIsSettled):

  • workers/service/FetchEvent.h:
  • workers/service/context/ServiceWorkerFetch.cpp: Added.

(WebCore::ServiceWorkerFetch::dispatchFetchTask):
(WebCore::ServiceWorkerFetch::processResponse):

  • workers/service/context/ServiceWorkerFetch.h: Added.
  • workers/service/context/ServiceWorkerThread.cpp:

(WebCore::m_workerObjectProxy):
(WebCore::ServiceWorkerThread::dispatchFetchEvent):

  • workers/service/context/ServiceWorkerThread.h:

Source/WebKit:
TestController should clear all fetch caches when resetting its state
https://bugs.webkit.org/show_bug.cgi?id=178486
<rdar://problem/35066305>

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

Adding a new DidNotHandle message to disambiguate with the DidFail fetch case.
With DidNotHandle, the loading should go the network process.
With DidFail, the loading should return a network error.

On receiving an order to start a fetch, ServiceWorkerThread will dispatch a fetch event.
The client of this event will retrieve the response and return it to the WebProcess through IPC.

  • StorageProcess/ServiceWorker/WebSWServerConnection.cpp:

(WebKit::WebSWServerConnection::didNotHandleFetch):

  • StorageProcess/ServiceWorker/WebSWServerConnection.h:
  • StorageProcess/StorageProcess.cpp:

(WebKit::StorageProcess::didNotHandleFetch):

  • StorageProcess/StorageProcess.h:
  • StorageProcess/StorageProcess.messages.in:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/Storage/ServiceWorkerClientFetch.cpp:

(WebKit::ServiceWorkerClientFetch::didFail):
(WebKit::ServiceWorkerClientFetch::didNotHandle):

  • WebProcess/Storage/ServiceWorkerClientFetch.h:
  • WebProcess/Storage/ServiceWorkerClientFetch.messages.in:
  • WebProcess/Storage/ServiceWorkerContextManager.cpp:

(WebKit::ServiceWorkerContextManager::startFetch):

  • WebProcess/Storage/ServiceWorkerContextManager.h:
  • WebProcess/Storage/WebServiceWorkerFetchTaskClient.cpp: Added.

(WebKit::WebServiceWorkerFetchTaskClient::~WebServiceWorkerFetchTaskClient):
(WebKit::WebServiceWorkerFetchTaskClient::WebServiceWorkerFetchTaskClient):
(WebKit::WebServiceWorkerFetchTaskClient::didReceiveResponse):
(WebKit::WebServiceWorkerFetchTaskClient::didReceiveData):
(WebKit::WebServiceWorkerFetchTaskClient::didFail):
(WebKit::WebServiceWorkerFetchTaskClient::didFinish):

  • WebProcess/Storage/WebServiceWorkerFetchTaskClient.h: Added.
  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::startFetchInServiceWorker):

  • WebProcess/WebProcess.h:

LayoutTests:
TestController should clear all fetch caches when resetting its state
https://bugs.webkit.org/show_bug.cgi?id=178486
<rdar://problem/35066305>

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

Beefing up the test by using fetch event handler to return responses
previously hard coded in ServiceWorkerContextManager.

  • http/tests/workers/service/basic-fetch.https-expected.txt:
  • http/tests/workers/service/resources/basic-fetch-worker.js:

(event.event.request.url.indexOf):

  • http/tests/workers/service/resources/basic-fetch.js:
10:21 AM Changeset in webkit [223838] by commit-queue@webkit.org
  • 5 edits in trunk/Source/WebCore

[Curl] Fix authentication related bugs
https://bugs.webkit.org/show_bug.cgi?id=178652

Patch by Basuke Suzuki <Basuke Suzuki> on 2017-10-23
Reviewed by Alex Christensen.

  • platform/network/curl/AuthenticationChallengeCurl.cpp:

(WebCore::AuthenticationChallenge::protectionSpaceFromHandle):

  • platform/network/curl/CurlContext.cpp:

(WebCore::CurlHandle::setHttpAuthUserPass):

  • platform/network/curl/CurlRequest.cpp:

(WebCore::CurlRequest::setUserPass):
(WebCore::CurlRequest::setupTransfer):
(WebCore::CurlRequest::didReceiveHeader):

  • platform/network/curl/CurlRequest.h:
10:10 AM Changeset in webkit [223837] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Mark compositing/visible-rect/iframe-no-layers.html as a flaky failure.
https://bugs.webkit.org/show_bug.cgi?id=178669

Unreviewed test gardening.

  • platform/ios/TestExpectations:
9:44 AM Changeset in webkit [223836] by Matt Lewis
  • 14 edits
    2 adds in trunk/Source

Unreviewed, rolling out r223820.

This caused a build break on Windows.

Reverted changeset:

"Web Inspector: Remove unused Console.setMonitoringXHREnabled"
https://bugs.webkit.org/show_bug.cgi?id=178617
https://trac.webkit.org/changeset/223820

8:57 AM Changeset in webkit [223835] by Alan Bujtas
  • 4 edits in trunk/Source/WebCore

Call FrameView::scheduleSelectionUpdate when selection needs repainting after layout instead of setting the RenderView dirty.
https://bugs.webkit.org/show_bug.cgi?id=178651
<rdar://problem/35117448>

Reviewed by Antti Koivisto.

Calling setNeedsLayout() on the RenderView to trigger selection update is problematic in 2 different ways:

  1. marking the root renderer dirty does not trigger layout (this is very specific to the root,

other renderers do trigger layout). It means that it works as long as someone else schedules a layout.

  1. when a subtree layout is already scheduled and we mark the root renderer dirty, the root gets stuck with

the dirty flag (since the entry point for the subsequent layout is a descendant of the root and not the root itself).

This patch addresses these issues by scheduling/converting subtree layout when needed.

Covered by fast/dynamic/remove-invisible-node-inside-selection.html/remove-node-inside-selection.html

  • editing/FrameSelection.cpp:

(WebCore::FrameSelection::respondToNodeModification):

  • page/FrameView.cpp:

(WebCore::FrameView::scheduleSelectionUpdate):

  • page/FrameView.h:
4:50 AM Changeset in webkit [223834] by Yusuke Suzuki
  • 6 edits
    4 adds in trunk

[JSC] Use fastJoin in Array#toString
https://bugs.webkit.org/show_bug.cgi?id=178062

Reviewed by Darin Adler.

JSTests:

  • microbenchmarks/contiguous-array-to-string.js: Added.

(target):

  • microbenchmarks/double-array-to-string.js: Added.

(target):

  • microbenchmarks/int32-array-to-string.js: Added.

(target):

Source/JavaScriptCore:

Array#toString()'s fast path uses original join operation.
But this should use fastJoin if possible.
This patch adds a fast path using fastJoin in Array#toString.
And we also extend fastJoin to perform fast joining for int32
arrays.

baseline patched

double-array-to-string 126.6157+-5.8625 103.7343+-4.4968 definitely 1.2206x faster
int32-array-to-string 64.7792+-2.6524 61.2390+-2.1749 might be 1.0578x faster
contiguous-array-to-string 62.6224+-2.6388 56.9899+-2.0852 definitely 1.0988x faster

  • runtime/ArrayPrototype.cpp:

(JSC::fastJoin):
(JSC::arrayProtoFuncToString):
(JSC::arrayProtoFuncToLocaleString):

  • runtime/JSStringJoiner.h:

(JSC::JSStringJoiner::appendWithoutSideEffects):
(JSC::JSStringJoiner::appendInt32):
(JSC::JSStringJoiner::appendDouble):

Source/WTF:

A bit cleaning up to use StringImpl::copyChars instead of
using for-loop directly.

  • wtf/text/StringView.h:

(WTF::StringView::getCharactersWithUpconvert const):

3:11 AM Changeset in webkit [223833] by magomez@igalia.com
  • 6 edits in trunk/Source/WebCore

[TexMap] Remove GraphicsContext3D usage from TextureMapperShaderProgram
https://bugs.webkit.org/show_bug.cgi?id=175425

Reviewed by Žan Doberšek.

Remove usage of the GraphicsContext3D class in TextureMapperShaderProgram.
Direct OpenGL API calls, types and constants are used instead.

By removing GraphicsContext3D, we don't use ANGLE anymore to perform the
shader adaptation to the used OpenGL/GLES2 version, so we need to do that
inside TextureMapperShaderProgram. The main changes required for this are
adding the #version directive and use in/out to define input/output parameters
when using OpenGL >= 3.2, and defining the default precision only when using
GLES2.

Besides that, now that VideoTextureCopierGStreamer doesn't have its own
GraphicsContext3D, we need to add a VAO to it when using OpenGL >= 3.2.

Based on a previous patch by Žan Doberšek <zdobersek@igalia.com>.

No behavior change.

  • platform/graphics/gstreamer/VideoTextureCopierGStreamer.cpp:

(WebCore::VideoTextureCopierGStreamer::VideoTextureCopierGStreamer):
(WebCore::VideoTextureCopierGStreamer::~VideoTextureCopierGStreamer):
(WebCore::VideoTextureCopierGStreamer::copyVideoTextureToPlatformTexture):

  • platform/graphics/gstreamer/VideoTextureCopierGStreamer.h:
  • platform/graphics/texmap/TextureMapperGL.cpp:

(WebCore::TextureMapperGLData::getShaderProgram):
(WebCore::prepareFilterProgram):
(WebCore::TextureMapperGL::drawTexture):
(WebCore::TextureMapperGL::drawFiltered):

  • platform/graphics/texmap/TextureMapperShaderProgram.cpp:

(WebCore::TextureMapperShaderProgram::create):
(WebCore::getShaderLog):
(WebCore::getProgramLog):
(WebCore::TextureMapperShaderProgram::TextureMapperShaderProgram):
(WebCore::TextureMapperShaderProgram::~TextureMapperShaderProgram):
(WebCore::TextureMapperShaderProgram::setMatrix):
(WebCore::TextureMapperShaderProgram::getLocation):

  • platform/graphics/texmap/TextureMapperShaderProgram.h:

(WebCore::TextureMapperShaderProgram::programID const):

Oct 22, 2017:

10:27 PM Changeset in webkit [223832] by zandobersek@gmail.com
  • 2 edits in trunk/JSTests

stress/check-string-ident.js is improperly skipped
https://bugs.webkit.org/show_bug.cgi?id=178642

Reviewed by Saam Barati.

  • stress/check-string-ident.js: Drop the defaultNoEagerRun directive

since it enforces the run-jsc-stress-tests script to still set up the
test to run, despite the skip directive that's used before.

10:26 PM Changeset in webkit [223831] by zandobersek@gmail.com
  • 2 edits in trunk/Source/JavaScriptCore

[JSC] Remove !(OS(LINUX) && CPU(ARM64)) guards in RegisterState.h
https://bugs.webkit.org/show_bug.cgi?id=178452

Reviewed by Yusuke Suzuki.

  • heap/RegisterState.h: Re-enable the custom RegisterState and

ALLOCATE_AND_GET_REGISTER_STATE definitions on ARM64 Linux. These don't
cause any crashes nowadays.

8:38 PM Changeset in webkit [223830] by jmarcell@apple.com
  • 7 edits in tags/Safari-604.4.5.1/Source

Versioning.

8:24 PM Changeset in webkit [223829] by jmarcell@apple.com
  • 1 copy in tags/Safari-604.4.5.1

New tag.

8:13 PM Changeset in webkit [223828] by commit-queue@webkit.org
  • 5 edits
    8 adds
    3 deletes in trunk/Source/WebCore

[Settings] Replace current Settings generation with template file based approach
https://bugs.webkit.org/show_bug.cgi?id=178634

Patch by Sam Weinig <sam@webkit.org> on 2017-10-22
Reviewed by Joseph Pecoraro.

This replaces the recently added python based Settings generation with a generator
built in ruby, so we can take advantage of ERB for templating. The result has much
of the logic in the templates and as a result feels much easier to follow and cleaner.

Since I was moving things to ruby, I took the opertunity to switch the Settings definition
file from our .in format to yaml, which is quite a bit easier to read.

  • CMakeLists.txt:
  • DerivedSources.make:
  • Scripts/GenerateSettings: Removed.
  • Scripts/GenerateSettings.py: Removed.
  • Scripts/GenerateSettings.rb: Added.
  • Scripts/GenerateSettings/GenerateInternalSettingsHeaderFile.py: Removed.
  • Scripts/GenerateSettings/GenerateInternalSettingsIDLFile.py: Removed.
  • Scripts/GenerateSettings/GenerateInternalSettingsImplementationFile.py: Removed.
  • Scripts/GenerateSettings/GenerateSettings.py: Removed.
  • Scripts/GenerateSettings/GenerateSettingsHeaderFile.py: Removed.
  • Scripts/GenerateSettings/GenerateSettingsImplementationFile.py: Removed.
  • Scripts/GenerateSettings/Settings.py: Removed.
  • Scripts/GenerateSettings/init.py: Removed.
  • Scripts/SettingsTemplates: Added.
  • Scripts/SettingsTemplates/InternalSettingsGenerated.cpp.erb: Added.
  • Scripts/SettingsTemplates/InternalSettingsGenerated.h.erb: Added.
  • Scripts/SettingsTemplates/InternalSettingsGenerated.idl.erb: Added.
  • Scripts/SettingsTemplates/Settings.cpp.erb: Added.
  • Scripts/SettingsTemplates/Settings.h.erb: Added.
  • WebCore.xcodeproj/project.pbxproj:
  • WebCoreMacros.cmake:
  • page/Settings.in: Removed.
  • page/Settings.yaml: Added.
7:20 PM Changeset in webkit [223827] by Wenson Hsieh
  • 6 edits in trunk/Source/WebKit

[iOS] WebProcess::initializeWebProcess spends ~150ms spinning up AVSystemController on some devices
https://bugs.webkit.org/show_bug.cgi?id=178640
<rdar://problem/35113105>

Reviewed by Youenn Fablet.

In r213933, we added a mechanism to allow the web process to drive media capture, by setting an attribute on the
shared AVSystemController. This requires us to fault in the Celestial framework, which is a slight performance
hit on some hardware. Instead of doing this at the start of every web process launch, we can just do this work
lazily, the first time the web process requests permissions for user media access.

  • WebProcess/WebCoreSupport/WebUserMediaClient.cpp:

(WebKit::WebUserMediaClient::requestUserMediaAccess):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::prepareToSendUserMediaPermissionRequest):

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

(WebKit::WebPage::prepareToSendUserMediaPermissionRequest):

  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::platformInitializeWebProcess):

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

REGRESSION(r219675): Web Inspector: CommandLineAPI getEventListeners does not work
https://bugs.webkit.org/show_bug.cgi?id=178650
<rdar://problem/35116347>

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-10-22
Reviewed by Sam Weinig.

Source/WebCore:

Test: inspector/console/command-line-api-getEventListeners.html

  • inspector/CommandLineAPIHost.cpp:

(WebCore::listenerEntriesFromListenerInfo):
Fix typo.

(WebCore::CommandLineAPIHost::getEventListeners):
Fix incorrect early return.

  • inspector/CommandLineAPIHost.h:
  • inspector/CommandLineAPIHost.idl:

Add more attributes about the listener. These new attributes match output from Chrome.

LayoutTests:

  • inspector/console/command-line-api-getEventListeners-expected.txt: Added.
  • inspector/console/command-line-api-getEventListeners.html: Added.
2:31 PM Changeset in webkit [223825] by commit-queue@webkit.org
  • 10 edits
    2 adds in trunk

[Web Animations] Add animations to the timeline
https://bugs.webkit.org/show_bug.cgi?id=178643

Patch by Antoine Quint <Antoine Quint> on 2017-10-22
Reviewed by Dean Jackson.

Source/WebCore:

If a timeline is provided as a parameter to the Animation constructor,
add it to the timeline, and remove it when the object is destroyed.

We also start the basic mechanism to dump the contents of a timeline
as text for testing purposes, currently only logging the number of
animations in a timeline and just logging the class name for animation
themselves.

Test: webanimations/animation-creation-addition.html

  • animation/AnimationTimeline.cpp:

(WebCore::AnimationTimeline::description):

  • animation/AnimationTimeline.h:
  • animation/AnimationTimeline.idl:
  • animation/WebAnimation.cpp:

(WebCore::WebAnimation::create):
(WebCore::WebAnimation::~WebAnimation):
(WebCore::WebAnimation::description):

  • animation/WebAnimation.h:
  • testing/Internals.cpp:

(WebCore::Internals::timelineDescription):

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

LayoutTests:

Add a new test that checks that animations created with a timeline
are added to the provided timeline.

  • webanimations/animation-creation-addition-expected.txt: Added.
  • webanimations/animation-creation-addition.html: Added.
11:28 AM Changeset in webkit [223824] by Yusuke Suzuki
  • 11 edits in trunk/Source/JavaScriptCore

[JSC][Baseline] Use linkAllSlowCasesForBytecodeOffset as much as possible to simplify slow cases handling
https://bugs.webkit.org/show_bug.cgi?id=178647

Reviewed by Saam Barati.

There is much code counting slow cases in fast paths to call linkSlowCase carefully. This is really error-prone
since the number of slow cases depends on values of instruction's metadata. We have linkAllSlowCasesForBytecodeOffset,
which drains all slow cases for a specified bytecode offset. In typical cases like just calling a slow path function,
this is enough. We use linkAllSlowCasesForBytecodeOffset as much as possible. It significantly simplifies the code.

  • jit/JIT.h:

(JSC::JIT::linkAllSlowCases):

  • jit/JITArithmetic.cpp:

(JSC::JIT::emitSlow_op_unsigned):
(JSC::JIT::emit_compareAndJump):
(JSC::JIT::emit_compareAndJumpSlow):
(JSC::JIT::emitSlow_op_inc):
(JSC::JIT::emitSlow_op_dec):
(JSC::JIT::emitSlow_op_mod):
(JSC::JIT::emitSlow_op_negate):
(JSC::JIT::emitSlow_op_bitand):
(JSC::JIT::emitSlow_op_bitor):
(JSC::JIT::emitSlow_op_bitxor):
(JSC::JIT::emitSlow_op_lshift):
(JSC::JIT::emitSlow_op_rshift):
(JSC::JIT::emitSlow_op_urshift):
(JSC::JIT::emitSlow_op_add):
(JSC::JIT::emitSlow_op_div):
(JSC::JIT::emitSlow_op_mul):
(JSC::JIT::emitSlow_op_sub):

  • jit/JITArithmetic32_64.cpp:

(JSC::JIT::emit_compareAndJumpSlow):
(JSC::JIT::emitSlow_op_unsigned):
(JSC::JIT::emitSlow_op_inc):
(JSC::JIT::emitSlow_op_dec):
(JSC::JIT::emitSlow_op_mod):

  • jit/JITCall.cpp:

(JSC::JIT::compileCallEvalSlowCase):
(JSC::JIT::compileOpCallSlowCase):

  • jit/JITCall32_64.cpp:

(JSC::JIT::compileCallEvalSlowCase):
(JSC::JIT::compileOpCallSlowCase):

  • jit/JITInlines.h:

(JSC::JIT::linkAllSlowCasesForBytecodeOffset):

  • jit/JITOpcodes.cpp:

(JSC::JIT::emitSlow_op_new_object):
(JSC::JIT::emitSlow_op_create_this):
(JSC::JIT::emitSlow_op_check_tdz):
(JSC::JIT::emitSlow_op_to_this):
(JSC::JIT::emitSlow_op_to_primitive):
(JSC::JIT::emitSlow_op_not):
(JSC::JIT::emitSlow_op_eq):
(JSC::JIT::emitSlow_op_neq):
(JSC::JIT::emitSlow_op_stricteq):
(JSC::JIT::emitSlow_op_nstricteq):
(JSC::JIT::emitSlow_op_instanceof):
(JSC::JIT::emitSlow_op_instanceof_custom):
(JSC::JIT::emitSlow_op_to_number):
(JSC::JIT::emitSlow_op_to_string):
(JSC::JIT::emitSlow_op_loop_hint):
(JSC::JIT::emitSlow_op_check_traps):
(JSC::JIT::emitSlow_op_has_indexed_property):
(JSC::JIT::emitSlow_op_get_direct_pname):
(JSC::JIT::emitSlow_op_has_structure_property):

  • jit/JITOpcodes32_64.cpp:

(JSC::JIT::emitSlow_op_new_object):
(JSC::JIT::emitSlow_op_instanceof):
(JSC::JIT::emitSlow_op_instanceof_custom):
(JSC::JIT::emitSlow_op_to_primitive):
(JSC::JIT::emitSlow_op_not):
(JSC::JIT::emitSlow_op_stricteq):
(JSC::JIT::emitSlow_op_nstricteq):
(JSC::JIT::emitSlow_op_to_number):
(JSC::JIT::emitSlow_op_to_string):
(JSC::JIT::emitSlow_op_create_this):
(JSC::JIT::emitSlow_op_to_this):
(JSC::JIT::emitSlow_op_check_tdz):
(JSC::JIT::emitSlow_op_has_indexed_property):
(JSC::JIT::emitSlow_op_get_direct_pname):

  • jit/JITPropertyAccess.cpp:

(JSC::JIT::emitSlow_op_try_get_by_id):
(JSC::JIT::emitSlow_op_get_by_id):
(JSC::JIT::emitSlow_op_get_by_id_with_this):
(JSC::JIT::emitSlow_op_put_by_id):
(JSC::JIT::emitSlow_op_resolve_scope):
(JSC::JIT::emitSlow_op_get_from_scope):
(JSC::JIT::emitSlow_op_put_to_scope):

  • jit/JITPropertyAccess32_64.cpp:

(JSC::JIT::emitSlow_op_try_get_by_id):
(JSC::JIT::emitSlow_op_get_by_id):
(JSC::JIT::emitSlow_op_get_by_id_with_this):
(JSC::JIT::emitSlow_op_put_by_id):
(JSC::JIT::emitSlow_op_resolve_scope):
(JSC::JIT::emitSlow_op_get_from_scope):
(JSC::JIT::emitSlow_op_put_to_scope):

9:47 AM Changeset in webkit [223823] by Yusuke Suzuki
  • 9 edits in trunk/Source/JavaScriptCore

[JSC] Clean up baseline slow path
https://bugs.webkit.org/show_bug.cgi?id=178646

Reviewed by Saam Barati.

If the given op is just calling a slow path function, we should use DEFINE_SLOW_OP instead.
It is good since (1) we can reduce the manual emitting code and (2) it can clarify which
function is implemented as a slow path call. This patch is an attempt to reduce 32bit specific
code in baseline JIT.

  • jit/JIT.cpp:

(JSC::JIT::privateCompileMainPass):

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

(JSC::JIT::emit_op_pow): Deleted.

  • jit/JITArithmetic32_64.cpp:

(JSC::JIT::emitSlow_op_mod):

  • jit/JITOpcodes.cpp:

(JSC::JIT::emit_op_strcat): Deleted.
(JSC::JIT::emit_op_push_with_scope): Deleted.
(JSC::JIT::emit_op_assert): Deleted.
(JSC::JIT::emit_op_create_lexical_environment): Deleted.
(JSC::JIT::emit_op_throw_static_error): Deleted.
(JSC::JIT::emit_op_new_array_with_spread): Deleted.
(JSC::JIT::emit_op_spread): Deleted.
(JSC::JIT::emit_op_get_enumerable_length): Deleted.
(JSC::JIT::emit_op_has_generic_property): Deleted.
(JSC::JIT::emit_op_get_property_enumerator): Deleted.
(JSC::JIT::emit_op_to_index_string): Deleted.
(JSC::JIT::emit_op_create_direct_arguments): Deleted.
(JSC::JIT::emit_op_create_scoped_arguments): Deleted.
(JSC::JIT::emit_op_create_cloned_arguments): Deleted.
(JSC::JIT::emit_op_create_rest): Deleted.
(JSC::JIT::emit_op_unreachable): Deleted.

  • jit/JITOpcodes32_64.cpp:

(JSC::JIT::emit_op_strcat): Deleted.
(JSC::JIT::emit_op_push_with_scope): Deleted.
(JSC::JIT::emit_op_assert): Deleted.
(JSC::JIT::emit_op_create_lexical_environment): Deleted.

  • jit/JITPropertyAccess.cpp:

(JSC::JIT::emit_op_put_by_val_with_this): Deleted.
(JSC::JIT::emit_op_get_by_val_with_this): Deleted.
(JSC::JIT::emit_op_put_by_id_with_this): Deleted.
(JSC::JIT::emit_op_resolve_scope_for_hoisting_func_decl_in_eval): Deleted.
(JSC::JIT::emit_op_define_data_property): Deleted.
(JSC::JIT::emit_op_define_accessor_property): Deleted.

  • jit/JITPropertyAccess32_64.cpp:

(JSC::JIT::emit_op_resolve_scope_for_hoisting_func_decl_in_eval): Deleted.
(JSC::JIT::emit_op_get_by_val_with_this): Deleted.
(JSC::JIT::emit_op_put_by_id_with_this): Deleted.
(JSC::JIT::emit_op_put_by_val_with_this): Deleted.

Note: See TracTimeline for information about the timeline view.