Timeline



Jul 12, 2017:

11:34 PM Changeset in webkit [219442] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebKit2

Web Automation: evaluateJavaScriptFunction should start the callback timeout after the function is applied
https://bugs.webkit.org/show_bug.cgi?id=174421

Reviewed by Brian Burg.

This is causing selenium test testShouldNotTimeoutIfScriptCallsbackInsideAZeroTimeout to fail, because
JavaScriptTimeout error is generated unexpectedly. When no script timeout is specified, 0 is used by default,
which means we do a setTimeout with 0 and then the script does another setTimeout with 0, but ours is dispatched
before and reportTimeoutError is called. We should start our timeout after applying the function, and only if
the result hasn't been reported yet.

  • WebProcess/Automation/WebAutomationSessionProxy.js:

(let.AutomationSessionProxy.prototype.evaluateJavaScriptFunction):

7:39 PM Changeset in webkit [219441] by jmarcell@apple.com
  • 28 edits
    1 move
    1 add
    3 deletes in branches/safari-604.1.31-branch

Cherry-pick r219421. rdar://problem/33265549

7:39 PM Changeset in webkit [219440] by Wenson Hsieh
  • 5 edits in trunk/Source/WebKit2

[iOS DnD] [WK2] Add SPI to enable, disable, or follow default behavior for DnD on a WKWebView
https://bugs.webkit.org/show_bug.cgi?id=174440
<rdar://problem/33272627>

Reviewed by Beth Dakin.

Adds a new _dragInteractionPolicy property to WKWebView, which an internal client may use to always allow
dragging out of the web view (_WKDragInteractionPolicyAlwaysEnable), never allow
(_WKDragInteractionPolicyAlwaysDisable) or just use the default device-dependent behavior
(_WKDragInteractionPolicyDefault).

Also removes an extraneous class from WKContentViewInteraction.mm that is no longer used anywhere.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _initializeWithConfiguration:]):

Set _dragInteractionPolicy to _WKDragInteractionPolicyDefault upon initialization.

(-[WKWebView _dragInteractionPolicy]):
(-[WKWebView _setDragInteractionPolicy:]):

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

(shouldEnableDragInteractionForPolicy):
(-[WKContentView _didChangeDragInteractionPolicy]):

Called by the WKWebView when its _dragInteractionPolicy changes. The content view updates its
UIDragInteraction's -enabled property here in response.

(-[WKContentView setupDataInteractionDelegates]):

7:37 PM Changeset in webkit [219439] by jmarcell@apple.com
  • 7 edits in branches/safari-604.1.31-branch/Source

Versioning.

7:20 PM Changeset in webkit [219438] by commit-queue@webkit.org
  • 20 edits in trunk/Source

Async image decoding for large images should be disabled by default
https://bugs.webkit.org/show_bug.cgi?id=174432

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2017-07-12
Reviewed by Simon Fraser.

Source/WebCore:

-- Rename GraphicsLayerPaintFlags::Snapshotting to AllowAsyncImageDecoding.
-- Replace every reference to GraphicsLayerPaintFlags::Snapshotting by

GraphicsLayerPaintFlags::None and every GraphicsLayerPaintFlags::None
by AllowAsyncImageDecoding.

-- Rename PaintBehaviorSnapshotting to PaintBehaviorAllowAsyncImageDecoding.
-- Propagate PaintBehaviorAllowAsyncImageDecoding from a parent view to

a child view instead of propagating PaintBehaviorSnapshotting.

-- Remove setting the bit PaintBehaviorSnapshotting in any new PaintBehavoir.
-- Replace setting the bit PaintBehaviorSnapshotting in an existing PaintBehavoir

by resetting the bit PaintBehaviorAllowAsyncImageDecoding.

  • html/shadow/MediaControlElements.cpp:

(WebCore::MediaControlTextTrackContainerElement::createTextTrackRepresentationImage):

  • page/FrameView.cpp:

(WebCore::FrameView::willPaintContents):
(WebCore::FrameView::paintContentsForSnapshot):

  • platform/graphics/GraphicsLayer.h:
  • platform/graphics/GraphicsLayerClient.h:
  • platform/graphics/mac/WebLayer.mm:

(-[WebLayer drawInContext:]):
(-[WebSimpleLayer drawInContext:]):

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

(WebCore::RenderBoxModelObject::decodingModeForImageDraw):
(WebCore::RenderBoxModelObject::paintFillLayerExtended):

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

(WebCore::RenderImage::paintIntoRect):

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::paintLayerContents):
(WebCore::RenderLayer::paintForegroundForFragments):

  • rendering/RenderLayerBacking.cpp:

(WebCore::RenderLayerBacking::paintContents):

  • rendering/RenderWidget.cpp:

(WebCore::RenderWidget::paintContents): We need to propagate the
PaintBehaviorAllowAsyncImageDecoding from RenderWidget to the FrameView.
We did not need to do that for PaintBehaviorSnapshotting because
FrameView was setting it in its m_paintBehavior if (document->printing())
in FrameView::willPaintContents().

Source/WebKit/mac:

-- Remove setting the bit PaintBehaviorSnapshotting in any new PaintBehavoir.
-- Return PaintBehaviorAllowAsyncImageDecoding when the return value was 0.
-- Propagate PaintBehaviorAllowAsyncImageDecoding from a parent view to

a child view instead of propagating PaintBehaviorSnapshotting.

-- Replace setting the bit PaintBehaviorSnapshotting in an existing PaintBehavoir

by resetting the bit PaintBehaviorAllowAsyncImageDecoding.

  • WebView/WebFrame.mm:

(-[WebFrame _paintBehaviorForDestinationContext:]):
(-[WebFrame _drawRect:contentsOnly:]):

  • WebView/WebHTMLView.mm:

(imageFromRect):

Source/WebKit2:

-- Replace every reference to GraphicsLayerPaintFlags::Snapshotting by

GraphicsLayerPaintFlags::None and every GraphicsLayerPaintFlags::None
by AllowAsyncImageDecoding.

-- Replace setting the bit PaintBehaviorSnapshotting in an existing PaintBehavoir

by resetting the bit PaintBehaviorAllowAsyncImageDecoding.

  • Shared/mac/RemoteLayerBackingStore.mm:

(WebKit::RemoteLayerBackingStore::drawInContext):

  • WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.cpp:

(WebKit::imageForRect):

  • WebProcess/InjectedBundle/DOM/InjectedBundleRangeHandle.cpp:

(WebKit::InjectedBundleRangeHandle::renderedImage):

5:22 PM Changeset in webkit [219437] by mark.lam@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

Gardening: build fix after r219434.
https://bugs.webkit.org/show_bug.cgi?id=174441

Not reviewed.

Make public some MacroAssembler functions that are needed by the probe implementationq.

  • assembler/MacroAssemblerARM.h:

(JSC::MacroAssemblerARM::trustedImm32FromPtr):

  • assembler/MacroAssemblerARMv7.h:

(JSC::MacroAssemblerARMv7::linkCall):

5:15 PM Changeset in webkit [219436] by timothy@hatcher.name
  • 2 edits in trunk/Source/WebCore

REGRESSION(r219391): Broke the USE(OPENGL_ES_2) build
https://bugs.webkit.org/show_bug.cgi?id=174442

Unreviewed build fix.

  • platform/graphics/egl/GLContextEGL.cpp: Fix typo of OPENGL_ES2.
5:03 PM Changeset in webkit [219435] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Recreate the AudioUnit when restarting capture
https://bugs.webkit.org/show_bug.cgi?id=174439

Patch by Youenn Fablet <youenn@apple.com> on 2017-07-12
Reviewed by Jer Noble.

Sometimes other applications in the system like FaceTime may make the audio unit not functional.
Reloading the tab capturing audio will trigger a call to stop the audio shared unit.
When the tab requests again audio, the shared unit will restart.
At that time, the AudioUnit shared unit will be fully recreated.

Manually tested by doing a webrtc call and then doing a FaceTime call.
Remote WebRTC endpoints may not receive any audio.
With the patch, reloading the web page will get back the audio.
Previously, restarting the UIProcess was the only way.

  • platform/mediastream/mac/CoreAudioCaptureSource.cpp:

(WebCore::CoreAudioSharedUnit::startProducingData): Cleaning the audio unit when starting to produce data if there is a preexisting audio unit.

4:50 PM Changeset in webkit [219434] by mark.lam@apple.com
  • 12 edits in trunk/Source/JavaScriptCore

Move Probe code from AbstractMacroAssembler to MacroAssembler.
https://bugs.webkit.org/show_bug.cgi?id=174441

Reviewed by Saam Barati.

This is a pure refactoring patch for moving probe code from the AbstractMacroAssembler
to MacroAssembler. There is no code behavior change.

  • assembler/AbstractMacroAssembler.h:

(JSC::AbstractMacroAssembler<AssemblerType>::Address::indexedBy):
(JSC::AbstractMacroAssembler::CPUState::gprName): Deleted.
(JSC::AbstractMacroAssembler::CPUState::fprName): Deleted.
(JSC::AbstractMacroAssembler::CPUState::gpr): Deleted.
(JSC::AbstractMacroAssembler::CPUState::fpr): Deleted.
(JSC::MacroAssemblerType>::Address::indexedBy): Deleted.

  • assembler/MacroAssembler.h:

(JSC::MacroAssembler::CPUState::gprName):
(JSC::MacroAssembler::CPUState::fprName):
(JSC::MacroAssembler::CPUState::gpr):
(JSC::MacroAssembler::CPUState::fpr):

  • assembler/MacroAssemblerARM.cpp:

(JSC::MacroAssembler::probe):
(JSC::MacroAssemblerARM::probe): Deleted.

  • assembler/MacroAssemblerARM.h:
  • assembler/MacroAssemblerARM64.cpp:

(JSC::MacroAssembler::probe):
(JSC::MacroAssemblerARM64::probe): Deleted.

  • assembler/MacroAssemblerARM64.h:
  • assembler/MacroAssemblerARMv7.cpp:

(JSC::MacroAssembler::probe):
(JSC::MacroAssemblerARMv7::probe): Deleted.

  • assembler/MacroAssemblerARMv7.h:
  • assembler/MacroAssemblerMIPS.h:
  • assembler/MacroAssemblerX86Common.cpp:

(JSC::MacroAssembler::probe):
(JSC::MacroAssemblerX86Common::probe): Deleted.

  • assembler/MacroAssemblerX86Common.h:
4:30 PM Changeset in webkit [219433] by sbarati@apple.com
  • 3 edits
    1 add in trunk

GenericArguments consults the wrong state when tracking modified argument descriptors and mapped arguments
https://bugs.webkit.org/show_bug.cgi?id=174411
<rdar://problem/31696186>

Reviewed by Mark Lam.

JSTests:

  • stress/generic-arguments-correct-delete-behavior.js: Added.

(assert):
(makeTest):

Source/JavaScriptCore:

The code for deleting an argument was incorrectly referencing state
when it decided if it should unmap or mark a property as having its
descriptor modified. This patch fixes the bug where if we delete a
property, we would sometimes not unmap an argument when deleting it.

  • runtime/GenericArgumentsInlines.h:

(JSC::GenericArguments<Type>::getOwnPropertySlot):
(JSC::GenericArguments<Type>::getOwnPropertySlotByIndex):
(JSC::GenericArguments<Type>::deleteProperty):
(JSC::GenericArguments<Type>::deletePropertyByIndex):

4:27 PM Changeset in webkit [219432] by jmarcell@apple.com
  • 7 edits in trunk/Source

Versioning.

4:15 PM Changeset in webkit [219431] by jmarcell@apple.com
  • 1 copy in tags/Safari-604.1.31.1

Tag Safari-604.1.31.1.

4:14 PM Changeset in webkit [219430] by jmarcell@apple.com
  • 1 delete in tags/Safari-604.1.31.1

Delete Tag.

3:35 PM Changeset in webkit [219429] by jmarcell@apple.com
  • 21 edits in branches/safari-604.1.31-branch/Source

Cherry-pick r219427. rdar://problem/33275032

3:31 PM Changeset in webkit [219428] by commit-queue@webkit.org
  • 2 edits
    2 adds in trunk

Accessing localDescription, remoteDescription, etc. after setTimeout raises EXC_BAD_ACCESS
https://bugs.webkit.org/show_bug.cgi?id=174323
<rdar://problem/33267876>

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

Test: webrtc/calling-peerconnection-once-closed.html

In case the libwebrtc backend is null, we should not use it to get description from it.
Return null in that case.

Adding ASSERT to other calls where the layer above LibWebRTCMediaEndpoint should protect
from calling a function on a null libwebrtc backend.

  • Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:

(WebCore::LibWebRTCMediaEndpoint::currentLocalDescription):
(WebCore::LibWebRTCMediaEndpoint::currentRemoteDescription):
(WebCore::LibWebRTCMediaEndpoint::pendingLocalDescription):
(WebCore::LibWebRTCMediaEndpoint::pendingRemoteDescription):
(WebCore::LibWebRTCMediaEndpoint::localDescription):
(WebCore::LibWebRTCMediaEndpoint::remoteDescription):
(WebCore::LibWebRTCMediaEndpoint::doSetLocalDescription):
(WebCore::LibWebRTCMediaEndpoint::doSetRemoteDescription):
(WebCore::LibWebRTCMediaEndpoint::addTrack):
(WebCore::LibWebRTCMediaEndpoint::removeTrack):
(WebCore::LibWebRTCMediaEndpoint::doCreateOffer):
(WebCore::LibWebRTCMediaEndpoint::doCreateAnswer):
(WebCore::LibWebRTCMediaEndpoint::createDataChannel):

3:26 PM Changeset in webkit [219427] by commit-queue@webkit.org
  • 21 edits in trunk/Source

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

"Can cause infinite recursion on iOS" (Requested by mlam on
#webkit).

Reverted changeset:

"WTF::Thread should have the threads stack bounds."
https://bugs.webkit.org/show_bug.cgi?id=173975
http://trac.webkit.org/changeset/219176

3:20 PM Changeset in webkit [219426] by n_wang@apple.com
  • 13 edits
    2 adds in trunk

AX: [iOS] Implement a way to retrieve a text marker range with desired text that is closest to a position
https://bugs.webkit.org/show_bug.cgi?id=174393
<rdar://problem/33248006>

Reviewed by Chris Fleizach.

Source/WebCore:

Used the existing findClosestPlainText function to search the range on iOS.
Also exposed a function on the iOS wrapper to return the selection rects of
the result range from the searching.

Test: accessibility/ios-simulator/text-marker-range-matches-text.html

  • accessibility/AXObjectCache.cpp:

(WebCore::visiblePositionForPositionWithOffset):
(WebCore::AXObjectCache::rangeMatchesTextNearRange):

  • accessibility/AXObjectCache.h:
  • accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:

(-[WebAccessibilityObjectWrapper rangeFromMarkers:withText:]):
(-[WebAccessibilityObjectWrapper textMarkerRangeFromMarkers:withText:]):
(-[WebAccessibilityObjectWrapper textRectsFromMarkers:withText:]):
(-[WebAccessibilityObjectWrapper rectsForSelectionRects:]):

Tools:

  • DumpRenderTree/AccessibilityUIElement.cpp:

(textMarkerRangeMatchesTextNearMarkersCallback):
(AccessibilityUIElement::textMarkerRangeMatchesTextNearMarkers):
(AccessibilityUIElement::getJSClass):

  • DumpRenderTree/AccessibilityUIElement.h:
  • DumpRenderTree/ios/AccessibilityUIElementIOS.mm:

(AccessibilityUIElement::textMarkerRangeMatchesTextNearMarkers):

  • WebKitTestRunner/InjectedBundle/AccessibilityUIElement.cpp:

(WTR::AccessibilityUIElement::textMarkerRangeMatchesTextNearMarkers):

  • WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:
  • WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl:
  • WebKitTestRunner/InjectedBundle/ios/AccessibilityUIElementIOS.mm:

(WTR::AccessibilityUIElement::textMarkerRangeMatchesTextNearMarkers):

LayoutTests:

  • accessibility/ios-simulator/text-marker-range-matches-text-expected.txt: Added.
  • accessibility/ios-simulator/text-marker-range-matches-text.html: Added.
3:14 PM Changeset in webkit [219425] by mitz@apple.com
  • 9 copies
    1 add in releases/Apple/Safari Technology Preview 35

Added a tag for Safari Technology Preview release 35.

1:57 PM Changeset in webkit [219424] by Matt Lewis
  • 13 edits
    2 deletes in trunk

Unreviewed, rolling out r219409.

The revision caused the Windows builds to fail.

Reverted changeset:

"AX: [iOS] Implement a way to retrieve a text marker range
with desired text that is closest to a position"
https://bugs.webkit.org/show_bug.cgi?id=174393
http://trac.webkit.org/changeset/219409

1:46 PM Changeset in webkit [219423] by jmarcell@apple.com
  • 5 edits in branches/safari-604.1.31-branch/Source

Fix for rdar://problem/33128863

1:44 PM Changeset in webkit [219422] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

[FreeType] Enable BCI on webfonts
https://bugs.webkit.org/show_bug.cgi?id=174403

Patch by Alicia Boya García <aboya@igalia.com> on 2017-07-12
Reviewed by Michael Catanzaro.

The FreeType BCI hinter used to be disabled on webfonts in favor of
the autohinter.

FreeType BCI hinter has improved considerably in the past and now most
other browsers enable it too. Given the old reasons no longer apply,
the BCI has now been enabled in order to get better text rendering when
embedded hints are available.

  • platform/graphics/freetype/FontCustomPlatformDataFreeType.cpp:

(WebCore::FontCustomPlatformData::FontCustomPlatformData):

1:43 PM Changeset in webkit [219421] by commit-queue@webkit.org
  • 28 edits
    1 move
    1 add
    3 deletes in trunk

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

Huge PLUM memory regression on iOS (Requested by kling on
#webkit).

Reverted changeset:

"[WebIDL] Convert MutationCallback to be a normal generate
callback"
https://bugs.webkit.org/show_bug.cgi?id=174140
http://trac.webkit.org/changeset/219361

1:21 PM Changeset in webkit [219420] by commit-queue@webkit.org
  • 4 edits in trunk/LayoutTests/imported/w3c

Update web platform tests for elementFromPoint and elementsFromPoint
https://bugs.webkit.org/show_bug.cgi?id=174391

Patch by Ali Juma <ajuma@chromium.org> on 2017-07-12
Reviewed by Youenn Fablet.

This updates tests to include changes made upstream in
https://github.com/w3c/web-platform-tests/pull/6349. These changes make the tests
fit within the 800x600 window size used in layout tests.

  • web-platform-tests/cssom-view/elementFromPoint-expected.txt: Updated.
  • web-platform-tests/cssom-view/elementFromPoint.html: Updated.
  • web-platform-tests/cssom-view/elementsFromPoint.html: Updated.
1:19 PM Changeset in webkit [219419] by eric.carlson@apple.com
  • 16 edits
    2 adds in trunk

[MediaStream] a capture source failure should end the MediaStreamTrack
https://bugs.webkit.org/show_bug.cgi?id=174375

Reviewed by Youenn Fablet.

Source/WebCore:

Test: fast/mediastream/media-stream-track-source-failure.html

  • platform/mediastream/RealtimeMediaSource.cpp:

(WebCore::RealtimeMediaSource::captureFailed): New, signal observers that the source has ended.

  • platform/mediastream/RealtimeMediaSource.h:
  • platform/mediastream/mac/AVMediaCaptureSource.h:
  • platform/mediastream/mac/AVMediaCaptureSource.mm:

(WebCore::AVMediaCaptureSource::setupSession): Call captureFailed if setupCaptureSession fails.

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

(WebCore::AVVideoCaptureSource::setupCaptureSession): Return false on failure.
(WebCore::AVVideoCaptureSource::shutdownCaptureSession): Delete unused instance variable.
(WebCore::AVVideoCaptureSource::processNewFrame): Ditto.

  • testing/Internals.cpp:

(WebCore::Internals::endMediaStreamTrackCaptureSource): Call track.source.captureFailed().

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

Source/WebKit2:

  • UIProcess/UserMediaPermissionRequestManagerProxy.cpp:

(WebKit::UserMediaPermissionRequestManagerProxy::captureStateChanged): Consolidate start/end.
(WebKit::UserMediaPermissionRequestManagerProxy::startedCaptureSession): Deleted.
(WebKit::UserMediaPermissionRequestManagerProxy::endedCaptureSession): Deleted.

  • UIProcess/UserMediaPermissionRequestManagerProxy.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::isPlayingMediaDidChange): Call captureStateChanged if the capture
state changes. Consider interrupted flags.

LayoutTests:

  • fast/mediastream/media-stream-track-source-failure-expected.txt: Added.
  • fast/mediastream/media-stream-track-source-failure.html: Added.
12:16 PM Changeset in webkit [219418] by timothy@hatcher.name
  • 2 edits in trunk/Source/WebCore

Improve font matching with FontConfig and FreeType
https://bugs.webkit.org/show_bug.cgi?id=174374

Reviewed by Michael Catanzaro.

  • platform/graphics/freetype/FontCacheFreeType.cpp:

(WebCore::FontCache::createFontPlatformData): Loop through all family name matches from FcFontMatch.

12:08 PM Changeset in webkit [219417] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Reactivate audio ducking when restarting the shared unit
https://bugs.webkit.org/show_bug.cgi?id=174428

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

Currently, when another application ducks WebKit, there is no other way than to quit the UIProcess and restart it.
By again audio ducking when starting the audio unit, reloading the page will be enough.
Testing by launching a tab with audio capture and audio playing.
Then make a FaceTime call and hear the tab volume go down.
End the call to FaceTime and the tab volume remains low.
Reload the tab and the volume has a normal level.

  • platform/mediastream/mac/CoreAudioCaptureSource.cpp:

(WebCore::CoreAudioSharedUnit::setupAudioUnit):
(WebCore::CoreAudioSharedUnit::startInternal):

11:43 AM Changeset in webkit [219416] by Adrian Perez de Castro
  • 2 edits in trunk/Source/bmalloc

bmalloc: Failure to build when the compiler specifically targets ARMv8-A / defines ARM_ARCH_8A
https://bugs.webkit.org/show_bug.cgi?id=174424

Reviewed by Michael Catanzaro.

  • bmalloc/BPlatform.h: Also check for ARCH_ARM_8A to detect ARMv8.
11:42 AM Changeset in webkit [219415] by Adrian Perez de Castro
  • 2 edits in trunk/Source/WTF

[WTF] Failure to build when the compiler specifically targets ARMv8-A / defines ARM_ARCH_8A
https://bugs.webkit.org/show_bug.cgi?id=174425

Reviewed by Michael Catanzaro.

  • wtf/Platform.h: Also check for ARCH_ARM_8A to detect ARMv8.
11:38 AM Changeset in webkit [219414] by jmarcell@apple.com
  • 1 copy in tags/Safari-604.1.31.1

Tag Safari-604.1.31.1.

11:34 AM Changeset in webkit [219413] by jmarcell@apple.com
  • 15 edits in branches/safari-604.1.31-branch

rdar://problem/32913370

11:19 AM Changeset in webkit [219412] by commit-queue@webkit.org
  • 5 edits in trunk

Playback controls should not hide while AirPlay is active
https://bugs.webkit.org/show_bug.cgi?id=174422
<rdar://problem/33011477>

Patch by Antoine Quint <Antoine Quint> on 2017-07-12
Reviewed by Eric Carlson.

Source/WebCore:

We now also track changes in AirPlay playback status and account for it when identifying whether we
ought to let media controls automatically hide, which should only happen if the media is playing and
not playing back through AirPlay.

  • Modules/modern-media-controls/media/controls-visibility-support.js:

(ControlsVisibilitySupport.prototype.get mediaEvents):
(ControlsVisibilitySupport.prototype._updateControls):
(ControlsVisibilitySupport):

LayoutTests:

Expand the existing AirPlaySupport test to check that when we enter AirPlay we correctly prevent
the media controls from automatically hiding.

  • media/modern-media-controls/airplay-support/airplay-support-expected.txt:
  • media/modern-media-controls/airplay-support/airplay-support.html:
11:07 AM Changeset in webkit [219411] by msaboff@apple.com
  • 2 edits in trunk/Source/WTF

Unreviewed build fix when both DATA_LOG_TO_FILE and DATA_LOG_FILENAME are defined.

  • wtf/DataLog.cpp:

(WTF::initializeLogFileOnce): Changed declaration of logBasename from
char* logBasename to const char* logBasename.

11:01 AM Changeset in webkit [219410] by dbates@webkit.org
  • 3 edits in trunk/Source/WebCore

Attempt to fix the build following <https://trac.webkit.org/changeset/219407>
(https://bugs.webkit.org/show_bug.cgi?id=174386)

Fix bad merge after <https://trac.webkit.org/changeset/219404>.

  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::loadURL):
(WebCore::FrameLoader::loadWithNavigationAction):
(WebCore::FrameLoader::loadPostRequest):
(WebCore::FrameLoader::continueLoadAfterNewWindowPolicy):
(WebCore::FrameLoader::loadDifferentDocumentItem):

  • loader/FrameLoader.h:
10:58 AM Changeset in webkit [219409] by n_wang@apple.com
  • 13 edits
    2 adds in trunk

AX: [iOS] Implement a way to retrieve a text marker range with desired text that is closest to a position
https://bugs.webkit.org/show_bug.cgi?id=174393
<rdar://problem/33248006>

Reviewed by Chris Fleizach.

Source/WebCore:

Used the existing findClosestPlainText function to search the range on iOS.
Also exposed a function on the iOS wrapper to return the selection rects of
the result range from the searching.

Test: accessibility/ios-simulator/text-marker-range-matches-text.html

  • accessibility/AXObjectCache.cpp:

(WebCore::visiblePositionForPositionWithOffset):
(WebCore::AXObjectCache::rangeMatchesTextNearRange):

  • accessibility/AXObjectCache.h:
  • accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:

(-[WebAccessibilityObjectWrapper rangeFromMarkers:withText:]):
(-[WebAccessibilityObjectWrapper textMarkerRangeFromMarkers:withText:]):
(-[WebAccessibilityObjectWrapper textRectsFromMarkers:withText:]):
(-[WebAccessibilityObjectWrapper rectsForSelectionRects:]):

Tools:

  • DumpRenderTree/AccessibilityUIElement.cpp:

(textMarkerRangeMatchesTextNearMarkersCallback):
(AccessibilityUIElement::textMarkerRangeMatchesTextNearMarkers):
(AccessibilityUIElement::getJSClass):

  • DumpRenderTree/AccessibilityUIElement.h:
  • DumpRenderTree/ios/AccessibilityUIElementIOS.mm:

(AccessibilityUIElement::textMarkerRangeMatchesTextNearMarkers):

  • WebKitTestRunner/InjectedBundle/AccessibilityUIElement.cpp:

(WTR::AccessibilityUIElement::textMarkerRangeMatchesTextNearMarkers):

  • WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:
  • WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl:
  • WebKitTestRunner/InjectedBundle/ios/AccessibilityUIElementIOS.mm:

(WTR::AccessibilityUIElement::textMarkerRangeMatchesTextNearMarkers):

LayoutTests:

  • accessibility/ios-simulator/text-marker-range-matches-text-expected.txt: Added.
  • accessibility/ios-simulator/text-marker-range-matches-text.html: Added.
10:50 AM Changeset in webkit [219408] by pvollan@apple.com
  • 2 edits in trunk/LayoutTests

Skip WebRTC tests on Windows.

Unreviewed test gardening.

  • platform/win/TestExpectations:
10:25 AM Changeset in webkit [219407] by dbates@webkit.org
  • 8 edits in trunk/Source

NavigationAction should track whether the navigation was initiated by the main frame
https://bugs.webkit.org/show_bug.cgi?id=174386
<rdar://problem/33245267>

Reviewed by Brady Eidson.

Source/WebCore:

Although we added state to NavigationAction to track whether the navigation was
initiated by the main frame in r219170 it is not possible to initialize this state
when instantiating a NavigationAction. Having NavigationAction track this state
will be useful to ensure that we can always compute the source frame information
when asking the embedding client whether to allow a navigation. We will make use
of it in the fix for <https://bugs.webkit.org/show_bug.cgi?id=174385>.

No behavior changed. So, no new tests.

  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::loadURL): Pass whether the load was initiated by the main frame
when instantiating the NavigationAction.
(WebCore::FrameLoader::load): For now, pass InitiatedByMainFrame::Unknown when instantiating
the NavigationAction as we do not know if the load was initiated by the main frame.
(WebCore::FrameLoader::loadWithDocumentLoader): Ditto.
(WebCore::FrameLoader::reload): Ditto
(WebCore::FrameLoader::loadDifferentDocumentItem): Ditto.
(WebCore::createWindow): Pass whether the load was initiated by the main frame when
instantiating the NavigationAction.

  • loader/NavigationAction.cpp:

(WebCore::NavigationAction::NavigationAction): Modified to take argument of type InitiatedByMainFrame
that indicates whether the navigation was initiated by the main frame.

  • loader/NavigationAction.h:
  • loader/PolicyChecker.cpp:

(WebCore::PolicyChecker::checkNavigationPolicy): For now, pass InitiatedByMainFrame::Unknown
when instantiating the NavigationAction as we do not know if the load was initiated by the
main frame.

  • page/ContextMenuController.cpp:

(WebCore::openNewWindow): Pass whether the load was initiated by the main frame when
instantiating the NavigationAction.

Source/WebKit2:

  • WebProcess/WebPage/WebInspector.cpp:

(WebKit::WebInspector::openInNewTab): Pass whether the load was initiated by the main frame
when instantiating the NavigationAction.

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

Make prepare-ChangeLog -g <commit> generate a more standard ChangeLog entry.
https://bugs.webkit.org/show_bug.cgi?id=174197

Patch by Emilio Cobos Álvarez <ecobos@igalia.com> on 2017-07-12
Reviewed by Darin Adler.

This bit me the first time I tried to submit a patch to WebKit, and still I have
to manually edit the ChangeLog every time I use the script.

This generates a more convenient and standard ChangeLog entry.

  • Scripts/prepare-ChangeLog:

(generateNewChangeLogs):

10:14 AM Changeset in webkit [219405] by Matt Lewis
  • 2 edits in trunk/LayoutTests

Rebaseline of test fast/dom/Window/property-access-on-cached-window-after-frame-removed.html.
https://bugs.webkit.org/show_bug.cgi?id=174400

Unreviewed test gardening.

  • fast/dom/Window/property-access-on-cached-window-after-frame-removed-expected.txt:
10:12 AM Changeset in webkit [219404] by dbates@webkit.org
  • 22 edits in trunk/Source

Rename NavigationInitiatedByMainFrame to InitiatedByMainFrame
https://bugs.webkit.org/show_bug.cgi?id=174427

Rubber-stamped by Brady Eidson.

Source/WebCore:

  • inspector/InspectorFrontendClientLocal.cpp:

(WebCore::InspectorFrontendClientLocal::openInNewTab):

  • inspector/InspectorPageAgent.cpp:

(WebCore::InspectorPageAgent::navigate):

  • loader/FrameLoadRequest.cpp:

(WebCore::FrameLoadRequest::FrameLoadRequest):

  • loader/FrameLoadRequest.h:

(WebCore::FrameLoadRequest::FrameLoadRequest):
(WebCore::FrameLoadRequest::initiatedByMainFrame):
(WebCore::FrameLoadRequest::navigationInitiatedByMainFrame): Deleted.

  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::urlSelected):
(WebCore::FrameLoader::loadURLIntoChildFrame):
(WebCore::shouldOpenExternalURLsPolicyToApply):
(WebCore::applyShouldOpenExternalURLsPolicyToNewDocumentLoader):
(WebCore::FrameLoader::loadURL):
(WebCore::FrameLoader::loadWithNavigationAction):
(WebCore::FrameLoader::reloadWithOverrideEncoding):
(WebCore::FrameLoader::reload):
(WebCore::FrameLoader::loadPostRequest):
(WebCore::FrameLoader::continueLoadAfterNewWindowPolicy):
(WebCore::FrameLoader::loadDifferentDocumentItem):

  • loader/FrameLoader.h:
  • loader/FrameLoaderTypes.h:
  • loader/NavigationAction.h:

(WebCore::NavigationAction::initiatedByMainFrame):
(WebCore::NavigationAction::navigationInitiatedByMainFrame): Deleted.

  • loader/NavigationScheduler.cpp:

(WebCore::ScheduledNavigation::ScheduledNavigation):
(WebCore::ScheduledNavigation::initiatedByMainFrame):
(WebCore::NavigationScheduler::scheduleLocationChange):
(WebCore::ScheduledNavigation::navigationInitiatedByMainFrame): Deleted.

  • page/ContextMenuController.cpp:

(WebCore::openNewWindow):
(WebCore::ContextMenuController::contextMenuItemSelected):

  • page/DOMWindow.cpp:

(WebCore::DOMWindow::createWindow):

Source/WebKit/ios:

  • WebView/WebPDFViewPlaceholder.mm:

(-[WebPDFViewPlaceholder simulateClickOnLinkToURL:]):

Source/WebKit/mac:

  • WebView/WebPDFView.mm:

(-[WebPDFView PDFViewWillClickOnLink:withURL:]):

Source/WebKit/win:

  • Plugins/PluginView.cpp:

(WebCore::PluginView::start):
(WebCore::PluginView::getURLNotify):
(WebCore::PluginView::getURL):
(WebCore::PluginView::handlePost):

Source/WebKit2:

  • WebProcess/Plugins/PluginView.cpp:

(WebKit::PluginView::loadURL):

  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:

(WebKit::WebFrameLoaderClient::dispatchCreatePage):

  • WebProcess/WebPage/WebInspector.cpp:

(WebKit::WebInspector::openInNewTab):

10:06 AM Changeset in webkit [219403] by Matt Lewis
  • 33 edits
    4 deletes in trunk

Unreviewed, rolling out r219401.

This revision rolled out the previous patch, but after talking
with reviewer, a rebaseline is what was needed.Rolling back in
before rebaseline.

Reverted changeset:

"Unreviewed, rolling out r219379."
https://bugs.webkit.org/show_bug.cgi?id=174400
http://trac.webkit.org/changeset/219401

9:57 AM Changeset in webkit [219402] by dbates@webkit.org
  • 2 edits in trunk/Source/WebKit2

Update description of Secure Contexts experimental flag
https://bugs.webkit.org/show_bug.cgi?id=174401

Reviewed by Simon Fraser.

Change the description of the Secure Contexts experimental flag from "isSecureContext attribute"
to "Secure Contexts API".

  • Shared/WebPreferencesDefinitions.h:
9:44 AM Changeset in webkit [219401] by Matt Lewis
  • 33 edits
    1 copy
    3 adds in trunk

Unreviewed, rolling out r219379.

This revision caused a consistent failure in the test
fast/dom/Window/property-access-on-cached-window-after-frame-
removed.html.

Reverted changeset:

"Remove NAVIGATOR_HWCONCURRENCY"
https://bugs.webkit.org/show_bug.cgi?id=174400
http://trac.webkit.org/changeset/219379

9:24 AM Changeset in webkit [219400] by jmarcell@apple.com
  • 7 edits in branches/safari-604.1.31-branch/Source

Versioning.

9:14 AM Changeset in webkit [219399] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

[GTK] Media test gardening after r219253
https://bugs.webkit.org/show_bug.cgi?id=174254

Unreviewed test gardening.

video-cookie was fixed by r219252.
media/video-restricted-no-preload-metadata.html been passing consistently.

Patch by Charlie Turner <cturner@igalia.com> on 2017-07-12

  • platform/gtk/TestExpectations:
8:58 AM Changeset in webkit [219398] by jmarcell@apple.com
  • 1 copy in branches/safari-604.1.31-branch

New branch.

8:58 AM Changeset in webkit [219397] by jmarcell@apple.com
  • 1 copy in tags/Safari-604.1.31

Tag Safari-604.1.31.

8:57 AM Changeset in webkit [219396] by commit-queue@webkit.org
  • 13 edits in trunk

Wrong radix used in Unicode Escape in invalid character error message
https://bugs.webkit.org/show_bug.cgi?id=174419

Patch by Tooru Fujisawa [:arai] <arai.unmht@gmail.com> on 2017-07-12
Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

  • web-platform-tests/html/syntax/parsing-html-fragments/the-input-byte-stream-003-expected.txt:
  • web-platform-tests/html/syntax/parsing-html-fragments/the-input-byte-stream-004-expected.txt:

Source/JavaScriptCore:

  • parser/Lexer.cpp:

(JSC::Lexer<T>::invalidCharacterMessage):

LayoutTests:

  • fast/loader/cache-encoding-expected.txt:
  • http/tests/preload/preload-encoding-expected.txt:
  • js/basic-strict-mode-expected.txt:
  • js/kde/parse-expected.txt:
  • loader/reload-subresource-when-type-changes-expected.txt:
  • platform/ios/imported/w3c/web-platform-tests/html/syntax/parsing-html-fragments/the-input-byte-stream-003-expected.txt:
  • platform/ios/imported/w3c/web-platform-tests/html/syntax/parsing-html-fragments/the-input-byte-stream-004-expected.txt:
8:47 AM Changeset in webkit [219395] by fred.wang@free.fr
  • 2 edits
    2 adds in trunk/LayoutTests/imported/w3c

Import test verifying combination of allow-top-navigation and allow-top-navigation-by-user-activation
https://bugs.webkit.org/show_bug.cgi?id=174351

Patch by Frederic Wang <fwang@igalia.com> on 2017-07-12
Reviewed by Youenn Fablet.

This imports a test to verify that the combination of the allow-top-navigation and
allow-top-navigation-by-user-activation flags is just treated as allow-top-navigation.
For now the expectation contains a parsing error message which will be removed when bug
171327 is fixed.

  • web-platform-tests/html/semantics/embedded-content/the-iframe-element/w3c-import.log:

Add the new test.

  • web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_allow_top_navigation-3.html: Added.

This is imported from the W3C repository.

  • web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_allow_top_navigation-3-expected.txt: Added.

The test passes, even if for now the 'allow-top-navigation-by-user-activation' triggers a
parsing error message in the console.

8:37 AM Changeset in webkit [219394] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

Paginated mode: Infinite recursion in RenderTable::layout
https://bugs.webkit.org/show_bug.cgi?id=174413

Reviewed by Simon Fraser.

This patch is a workaround for avoiding infinite recursion when the table layout does not stabilize.
Apparently we leak some context (computed padding in this case) from the current to the subsequent layout.
The subsequent layouts always end up producing different line heights for some of the cells in the <thead>.
In paginated mode, when the section moves (<thead>, <tbody> etc) we call layout again recursively.
This could lead to infinite recursion for unstable table layout.

Unable to come up with a reduction yet.

  • rendering/RenderTable.cpp:

(WebCore::RenderTable::layout):

  • rendering/RenderTable.h:
7:27 AM Changeset in webkit [219393] by commit-queue@webkit.org
  • 5 edits
    2 adds in trunk

WebRTC: Incorrect sdpMLineIndex for video breaks Firefox interop
https://bugs.webkit.org/show_bug.cgi?id=173530

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

Source/WebCore:

Test: webrtc/ice-candidate-sdpMLineIndex.html

Reading missing parameter from libwebrtc backend and setting it when firing the RTCIceCandidate event.

  • Modules/mediastream/PeerConnectionBackend.cpp:

(WebCore::PeerConnectionBackend::disableICECandidateFiltering):
(WebCore::PeerConnectionBackend::newICECandidate):

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

(WebCore::LibWebRTCMediaEndpoint::OnIceCandidate):

LayoutTests:

  • webrtc/ice-candidate-sdpMLineIndex-expected.txt: Added.
  • webrtc/ice-candidate-sdpMLineIndex.html: Added.
6:59 AM Changeset in webkit [219392] by zandobersek@gmail.com
  • 4 edits in trunk

[GCrypt] Implement CryptoKeyEC PKCS#8 exports
https://bugs.webkit.org/show_bug.cgi?id=173648

Reviewed by Jiewen Tan.

Source/WebCore:

Implement the PKCS#8 export operation for EC keys for platforms that use
libgcrypt.

First, the ECParameters and the ECPrivateKey ASN.1 structures are created
and filled out accordingly. For the former, the appropriate object identifier
is written under the namedCurve element of the structure. For the latter, we
write out '1' under version, and eliminate the optional parameters element.
An libgcrypt EC context is then used to retrieve the private and public key
MPIs that are then written out under the privateKey and publicKey elements,
respectively.

After that, we can proceed to create and fill out the PrivateKeyInfo structure.
0 is written out under the version element, and the id-ecPublicKey object
identifier is written out under the privateKeyAlgorithm.algorithm element. This
doesn't strictly follow the specification, since the id-ecDH identifier should be
used for ECDH keys, but no test in WebKit or the web-platform-tests suite covers
this, so this specific detail should be revisited later.

Data of the previously-constructed ECParameters structure is retrieved and
written out under the privateKeyAlgorithm.parameters element. Similarly is done
for the ECPrivateKey structure, writing out its data under the privateKey
element. Finally, the optional attributes element of the PrivateKeyInfo
structure is eliminated, and the encoded data of this structure is retrieved and
returned.

No new tests -- relevant tests are now passing and are unskipped.

  • crypto/gcrypt/CryptoKeyECGCrypt.cpp:

(WebCore::CryptoKeyEC::platformExportPkcs8):

LayoutTests:

  • platform/gtk/TestExpectations: Unskip the EC PKCS#8 export tests

that are now passing.

6:58 AM Changeset in webkit [219391] by zandobersek@gmail.com
  • 27 edits
    2 adds in trunk

[WPE] Use libepoxy
https://bugs.webkit.org/show_bug.cgi?id=172104

Reviewed by Michael Catanzaro.

.:

  • Source/cmake/FindLibEpoxy.cmake: Added.
  • Source/cmake/OptionsWPE.cmake: Find libepoxy, don't search for

EGL or OpenGL ES anymore, and enable USE_LIBEPOXY by default.

Source/WebCore:

No new tests -- no changes in behavior.

Implement the proper libepoxy header inclusion for ports that enable it.

The library acts as a loading facility working on top of the system-provided
OpenGL and EGL libraries, with the headers providing a complete collection of
specification-defined OpenGL and EGL types, constants and entrypoints.

Support is added through the USE(LIBEPOXY) build guard. Note that this guard
isn't exclusive with USE(OPENGL), USE(OPENGL_ES_2) or USE(EGL), so the
USE(LIBEPOXY) condition is tested before those.

In case of OpenGL headers, the <epoxy/gl.h> header is included, and in
case of EGL headers, the <epoxy/egl.h> header. <epoxy/egl.h> includes
<epoxy/gl.h> on its own, so in some cases the inclusion of the latter is
omitted.

EpoxyShims.h header is added, doing a job similar to OpenGLESShims.h. The
EXT-suffixed GL entrypoints are redefined to the non-suffixed versions.
No suffixed constants are defined because those are defined by the libepoxy
headers to the well-known values.

  • CMakeLists.txt:
  • PlatformWPE.cmake:
  • platform/graphics/ANGLEWebKitBridge.h:
  • platform/graphics/EpoxyShims.h: Added.
  • platform/graphics/GLContext.cpp:

(WebCore::initializeOpenGLShimsIfNeeded):

  • platform/graphics/GraphicsContext3DPrivate.cpp:
  • platform/graphics/PlatformDisplay.cpp:
  • platform/graphics/cairo/CairoUtilities.cpp:
  • platform/graphics/cairo/GraphicsContext3DCairo.cpp:

(WebCore::GraphicsContext3D::create):

  • platform/graphics/cairo/ImageBufferCairo.cpp:
  • platform/graphics/egl/GLContextEGL.cpp:
  • platform/graphics/egl/GLContextEGLWPE.cpp:
  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
  • platform/graphics/opengl/Extensions3DOpenGLCommon.cpp:
  • platform/graphics/opengl/Extensions3DOpenGLES.cpp:
  • platform/graphics/opengl/Extensions3DOpenGLES.h:
  • platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:
  • platform/graphics/opengl/TemporaryOpenGLSetting.cpp:
  • platform/graphics/texmap/TextureMapperGC3DPlatformLayer.cpp:
  • platform/graphics/wpe/PlatformDisplayWPE.cpp:

Source/WebKit2:

  • PlatformWPE.cmake: Drop the EGL_INCLUDE_DIRS compilation flags.
  • Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:

Include <epoxy/gl.h> when compiling with libepoxy usage enabled.

Tools:

  • WebKitTestRunner/wpe/HeadlessViewBackend.h:

Include the <epoxy/egl.h> header, dropping the EGL and GLES2 inclusions.

4:26 AM Changeset in webkit [219390] by zandobersek@gmail.com
  • 2 edits
    3 adds
    2 deletes in trunk/Tools

[GTK][WPE] Align Jhbuild patches for GStreamer packages
https://bugs.webkit.org/show_bug.cgi?id=174363

Reviewed by Michael Catanzaro.

Align the patches we apply over Jhbuild-managed GStreamer dependency packages
between the GTK+ and WPE port. There's no reason for the two ports to apply
different patches over same versions of GStreamer releases.

This aligns the two ports on this specific issue. Next we'll look into
creating a single GStreamer-specific Jhbuild moduleset that will allow us
to keep these patches in a single place, avoiding duplicate files.

  • gtk/jhbuild.modules:
  • gtk/patches/gst-plugins-good-0005-souphttpsrc-cookie-jar-and-context-query-support.patch: Added.
  • gtk/patches/gst-plugins-good-0006-qtdemux-add-context-for-a-preferred-protection.patch: Renamed from Tools/gtk/patches/gst-plugins-good-0004-qtdemux-add-context-for-a-preferred-protection.patch.
  • gtk/patches/gst-plugins-good-0008-qtdemux-also-push-buffers-without-encryption-info-in.patch: Added.
  • wpe/patches/gstreamer-typefind-Only-push-a-CAPS-event-downstream-if-the-.patch: Removed.
3:58 AM Changeset in webkit [219389] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebCore

ImageDecoder: Gifs with infinite animation only play once very often
https://bugs.webkit.org/show_bug.cgi?id=173403

Reviewed by Michael Catanzaro.

It doesn't always happen, it's easier to reproduce when loading big files from the network, but it also depends
on every file. The problem is that ImageFrameCache is caching the repetition count value always when the size is
already available. In the case of gif files, the loop count value can be at any point of the image stream, so
having the size available doesn't mean we also have the loop count. So, if the value is queried before it's
available, the default value is cached (repeat once) and then always used. We should clear the cached value when
new data is added to the decoder, like we do with other cached values that can change when more data is decoded.

  • platform/graphics/ImageFrameCache.cpp:

(WebCore::ImageFrameCache::clearMetadata): Clear m_repetitionCount.

3:56 AM Changeset in webkit [219388] by Carlos Garcia Campos
  • 1 edit
    6 adds in trunk/Source/WebKit2

Web Automation: upstream safaridriver's JavaScript atom implementations
https://bugs.webkit.org/show_bug.cgi?id=172060
<rdar://problem/32168187>

Reviewed by Brian Burg.

  • UIProcess/Automation/atoms/ElementAttribute.js: Added.
  • UIProcess/Automation/atoms/ElementDisplayed.js: Added.
  • UIProcess/Automation/atoms/FindNodes.js: Added.
  • UIProcess/Automation/atoms/FormElementClear.js: Added.
  • UIProcess/Automation/atoms/FormSubmit.js: Added.
3:12 AM Changeset in webkit [219387] by Adrian Perez de Castro
  • 2 edits in trunk/Source/WebCore

[SOUP] Do not use C linkage for functions using C++ features
https://bugs.webkit.org/show_bug.cgi?id=174392

Reviewed by Michael Catanzaro.

No new tests because there is no behavior change.

  • platform/network/soup/WebKitSoupRequestGeneric.h: Move G_END_DECLS

to leave functions which use C++ features outside of the block it
delimits.

3:11 AM Changeset in webkit [219386] by Yusuke Suzuki
  • 2 edits in trunk/Source/WTF

Unreviewed, attempt to fix Windows build
https://bugs.webkit.org/show_bug.cgi?id=174366

  • wtf/FastMalloc.h:

(WTF::operator==):
(WTF::operator!=):
(WTF::FastAllocator::operator==): Deleted.
(WTF::FastAllocator::operator!=): Deleted.

12:02 AM Changeset in webkit [219385] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebCore

[GTK] Crashes in WebCore::PasteboardHelper::fillSelectionData when source file of drag is unavailable
https://bugs.webkit.org/show_bug.cgi?id=174161

Reviewed by Michael Catanzaro.

It seems selection data could contain an empty string, in which case gtk_selection_data_get_data() returns a
valid pointer, but gtk_selection_data_get_length() returns 0. When this happens we end up trying to split an
empty string resulting in an empty vector, but we unconditionally access the first element of the vector.

  • platform/gtk/PasteboardHelper.cpp:

(WebCore::selectionDataToUTF8String): Return a null string in case selection data length is 0.
(WebCore::PasteboardHelper::fillSelectionData): Return early if selection data length is 0, instead of checking
the selection data pointer.

Jul 11, 2017:

11:59 PM Changeset in webkit [219384] by Carlos Garcia Campos
  • 7 edits in trunk

[GTK][WPE] Enable FILE_LOCK and implement lockFile and unlockFile
https://bugs.webkit.org/show_bug.cgi?id=174357

Reviewed by Michael Catanzaro.

.:

  • Source/cmake/OptionsGTK.cmake: Use gio-unix unconditionally.

Source/WebCore:

Implement lockFile and unlockFile using flock().

  • PlatformWPE.cmake:
  • platform/glib/FileSystemGlib.cpp:

(WebCore::lockFile):
(WebCore::unlockFile):

Source/WTF:

  • wtf/Platform.h: Enable FILE_LOCK in GTK and WPE ports.
10:42 PM Changeset in webkit [219383] by Yusuke Suzuki
  • 17 edits in trunk/Source/WebCore

Use FastAllocator in STL containers
https://bugs.webkit.org/show_bug.cgi?id=174366

Rubber stamped by Sam Weinig.

This patch uses FastAllocator for STL containers including std::set and std::map.
STL can take a template parameter to be used as allocator for containers.
We prepare FastAllocator, which uses fastMalloc for allocation.
This allows us to use bmalloc (if supported) for STL containers which offers
functionalities that is not supported in WTF containers.

  • Modules/indexeddb/IDBKeyData.h:
  • Modules/indexeddb/server/IndexValueEntry.cpp:

(WebCore::IDBServer::IndexValueEntry::IndexValueEntry):
(WebCore::IDBServer::IndexValueEntry::Iterator::Iterator):
(WebCore::IDBServer::IndexValueEntry::reverseFind):

  • Modules/indexeddb/server/IndexValueEntry.h:
  • Modules/indexeddb/server/IndexValueStore.cpp:

(WebCore::IDBServer::IndexValueStore::lowestIteratorInRange):
(WebCore::IDBServer::IndexValueStore::highestReverseIteratorInRange):
(WebCore::IDBServer::IndexValueStore::Iterator::Iterator):

  • Modules/indexeddb/server/IndexValueStore.h:
  • Modules/indexeddb/server/MemoryBackingStoreTransaction.cpp:

(WebCore::IDBServer::MemoryBackingStoreTransaction::objectStoreCleared):

  • Modules/indexeddb/server/MemoryBackingStoreTransaction.h:
  • Modules/indexeddb/server/MemoryObjectStore.cpp:

(WebCore::IDBServer::MemoryObjectStore::replaceKeyValueStore):
(WebCore::IDBServer::MemoryObjectStore::addRecord):
(WebCore::IDBServer::MemoryObjectStore::updateCursorsForPutRecord):

  • Modules/indexeddb/server/MemoryObjectStore.h:

(WebCore::IDBServer::MemoryObjectStore::orderedKeys):

  • Modules/indexeddb/server/MemoryObjectStoreCursor.cpp:

(WebCore::IDBServer::MemoryObjectStoreCursor::keyAdded):
(WebCore::IDBServer::MemoryObjectStoreCursor::setFirstInRemainingRange):
(WebCore::IDBServer::MemoryObjectStoreCursor::setForwardIteratorFromRemainingRange):
(WebCore::IDBServer::MemoryObjectStoreCursor::setReverseIteratorFromRemainingRange):
(WebCore::IDBServer::MemoryObjectStoreCursor::incrementForwardIterator):
(WebCore::IDBServer::MemoryObjectStoreCursor::incrementReverseIterator):

  • Modules/indexeddb/server/MemoryObjectStoreCursor.h:
  • Modules/mediasource/SampleMap.h:
  • page/WheelEventTestTrigger.cpp:

(WebCore::WheelEventTestTrigger::deferTestsForReason):
(WebCore::dumpState):

  • page/WheelEventTestTrigger.h:
  • platform/graphics/cv/VideoTextureCopierCV.cpp:

(WebCore::enumToStringMap):

  • rendering/OrderIterator.h:
9:14 PM Changeset in webkit [219382] by pvollan@apple.com
  • 4 edits in trunk/Source/WebCore

[Win] Build error when building WebKit.dll from WebKit.proj project file.
https://bugs.webkit.org/show_bug.cgi?id=174410

Reviewed by Brent Fulgham.

Copy required header files to forwarding headers folder.

Source/WebCore:

  • PlatformWin.cmake:

Source/WebCore/PAL:

  • pal/PlatformWin.cmake:
8:00 PM Changeset in webkit [219381] by rniwa@webkit.org
  • 2 edits in trunk/Websites/perf.webkit.org

Another build fix.

  • public/v3/components/chart-pane-base.js:

(ChartPaneBase.prototype._updateCommitLogViewer):

7:38 PM Changeset in webkit [219380] by rniwa@webkit.org
  • 2 edits in trunk/Websites/perf.webkit.org

Build fix. It looks like the code here is racy.

  • public/v3/components/chart-pane-base.js:

(ChartPaneBase.prototype.configure):
(ChartPaneBase.prototype.setOpenRepository):

7:18 PM Changeset in webkit [219379] by dino@apple.com
  • 31 edits
    4 deletes in trunk

Remove NAVIGATOR_HWCONCURRENCY
https://bugs.webkit.org/show_bug.cgi?id=174400

.:

Reviewed by Sam Weinig.

  • Source/cmake/OptionsMac.cmake:
  • Source/cmake/WebKitFeatures.cmake:

Source/JavaScriptCore:

Reviewed by Sam Weinig.

  • Configurations/FeatureDefines.xcconfig:

Source/WebCore:

Reviewed by Sam Weinig.

  • Configurations/FeatureDefines.xcconfig:
  • WebCore.xcodeproj/project.pbxproj:
  • page/NavigatorBase.cpp:

(WebCore::NavigatorBase::hardwareConcurrency): Deleted.

  • page/NavigatorBase.h:
  • page/NavigatorConcurrentHardware.idl: Removed.

Source/WebCore/PAL:

Reviewed by Sam Weinig.

  • Configurations/FeatureDefines.xcconfig:

Source/WebKit/mac:

  • Configurations/FeatureDefines.xcconfig:

Source/WebKit2:

Reviewed by Sam Weinig.

  • Configurations/FeatureDefines.xcconfig:

Source/WTF:

Reviewed by Sam Weinig.

  • wtf/FeatureDefines.h:

Tools:

Reviewed by Sam Weinig.

  • TestWebKitAPI/Configurations/FeatureDefines.xcconfig:
5:25 PM Changeset in webkit [219378] by commit-queue@webkit.org
  • 6 edits
    1 copy in trunk

WKWindowFeatures needs to expose scrollbar, fullscreen, and dialog configuration properties
https://bugs.webkit.org/show_bug.cgi?id=174239

Patch by Ansh Shukla <ansh_shukla@apple.com> on 2017-07-11
Reviewed by Brady Eidson.

Source/WebKit2:

Add a new private header to expose getters for window feature properties already available
in the TFB APIWindowFeatures class. These properties are necessary for Safari to adopt more
modern API.

  • UIProcess/API/Cocoa/WKWindowFeatures.mm:

(-[WKWindowFeatures _locationBarVisibility]):
(-[WKWindowFeatures _scrollbarsVisibility]):
(-[WKWindowFeatures _fullscreenDisplay]):
(-[WKWindowFeatures _dialogDisplay]):

  • UIProcess/API/Cocoa/WKWindowFeaturesInternal.h: Expose some window features as read-only

properties.

  • UIProcess/API/Cocoa/WKWindowFeaturesPrivate.h:
  • WebKit2.xcodeproj/project.pbxproj:

Tools:

Create windows with specific features set and make sure those are properly reflected in the
WKWindowFeatures object.

  • TestWebKitAPI/Tests/WebKit2Cocoa/OpenAndCloseWindow.mm:

(resetToConsistentState):
(-[CheckWindowFeaturesUIDelegate webView:createWebViewWithConfiguration:forNavigationAction:windowFeatures:]):
(TEST):

5:25 PM Changeset in webkit [219377] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore

RealtimeOutgoingAudioSource should not push more audio data if the WebRTC thread is not able to process it
https://bugs.webkit.org/show_bug.cgi?id=174383

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

This patch adds support to check for pending-processing audio data.
If the amount of audio data is bigger than a high water mark of 0.5 seconds,
we stop pushing new audio data until buffered audio data is lower than a low water mark of 0.1 seconds.
Patch is tested by adding breakpoints to trigger the high water mark, verifying that low water mark is triggered
and receiving audio is fine on the other connection endpoint.

  • platform/mediastream/mac/RealtimeOutgoingAudioSource.cpp:

(WebCore::RealtimeOutgoingAudioSource::isReachingBufferedAudioDataHighLimit):
(WebCore::RealtimeOutgoingAudioSource::isReachingBufferedAudioDataLowLimit):
(WebCore::RealtimeOutgoingAudioSource::audioSamplesAvailable):

  • platform/mediastream/mac/RealtimeOutgoingAudioSource.h:
5:24 PM Changeset in webkit [219376] by Jonathan Bedard
  • 2 edits in trunk/Tools

Do not duplicate files when deleting directories with svn 1.9
https://bugs.webkit.org/show_bug.cgi?id=174339
<rdar://problem/33226781>

Reviewed by David Kilzer.

  • Scripts/svn-create-patch:

(diffOptionsForFile): No longer pass -N option, since this does not work in SVN 1.9.4.
(generateFileList): Determine which files are deleted because they are part of a
directory being deleted.

5:23 PM Changeset in webkit [219375] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Correct a typo in the .eslintrc
https://bugs.webkit.org/show_bug.cgi?id=174389

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-07-11
Reviewed by Matt Baker.

  • .eslintrc:
5:23 PM Changeset in webkit [219374] by Chris Dumez
  • 4 edits in trunk/Source/WebKit2

Avoid duplicating default parameter values in [WKWebsiteDataStore _resourceLoadStatisticsResetToConsistentState]
https://bugs.webkit.org/show_bug.cgi?id=174402

Reviewed by Brent Fulgham.

  • UIProcess/API/Cocoa/WKWebsiteDataStore.mm:

(-[WKWebsiteDataStore _resourceLoadStatisticsResetToConsistentState]):

  • UIProcess/WebResourceLoadStatisticsStore.cpp:

(WebKit::WebResourceLoadStatisticsStore::WebResourceLoadStatisticsStore):
(WebKit::WebResourceLoadStatisticsStore::removeDataRecords):
(WebKit::WebResourceLoadStatisticsStore::processStatisticsAndDataRecords):
(WebKit::WebResourceLoadStatisticsStore::grandfatherExistingWebsiteData):
(WebKit::WebResourceLoadStatisticsStore::performDailyTasks):
(WebKit::WebResourceLoadStatisticsStore::setTimeToLiveUserInteraction):
(WebKit::WebResourceLoadStatisticsStore::setTimeToLiveCookiePartitionFree):
(WebKit::WebResourceLoadStatisticsStore::setMinimumTimeBetweenDataRecordsRemoval):
(WebKit::WebResourceLoadStatisticsStore::setGrandfatheringTime):
(WebKit::WebResourceLoadStatisticsStore::shouldRemoveDataRecords):
(WebKit::WebResourceLoadStatisticsStore::shouldPartitionCookies):
(WebKit::WebResourceLoadStatisticsStore::hasStatisticsExpired):
(WebKit::WebResourceLoadStatisticsStore::setMaxStatisticsEntries):
(WebKit::WebResourceLoadStatisticsStore::setPruneEntriesDownTo):
(WebKit::WebResourceLoadStatisticsStore::pruneStatisticsIfNeeded):
(WebKit::WebResourceLoadStatisticsStore::resetParametersToDefaultValues):

  • UIProcess/WebResourceLoadStatisticsStore.h:
4:58 PM Changeset in webkit [219373] by dino@apple.com
  • 20 edits
    1 add in trunk

Rolling out r219372.

.:

  • Source/cmake/OptionsMac.cmake:
  • Source/cmake/WebKitFeatures.cmake:

Source/JavaScriptCore:

  • Configurations/FeatureDefines.xcconfig:

Source/WebCore:

  • Configurations/FeatureDefines.xcconfig:
  • WebCore.xcodeproj/project.pbxproj:
  • page/NavigatorBase.cpp:

(WebCore::NavigatorBase::hardwareConcurrency):

  • page/NavigatorBase.h:
  • page/NavigatorConcurrentHardware.idl: Added.

Source/WebCore/PAL:

  • Configurations/FeatureDefines.xcconfig:

Source/WebKit/mac:

  • Configurations/FeatureDefines.xcconfig:

Source/WebKit2:

  • Configurations/FeatureDefines.xcconfig:

Source/WTF:

  • wtf/FeatureDefines.h:

Tools:

  • TestWebKitAPI/Configurations/FeatureDefines.xcconfig:
4:19 PM Changeset in webkit [219372] by dino@apple.com
  • 20 edits
    1 delete in trunk

Remove NAVIGATOR_HWCONCURRENCY
https://bugs.webkit.org/show_bug.cgi?id=174400

.:

Reviewed by Sam Weinig.

  • Source/cmake/OptionsMac.cmake:
  • Source/cmake/WebKitFeatures.cmake:

Source/JavaScriptCore:

Reviewed by Sam Weinig.

  • Configurations/FeatureDefines.xcconfig:

Source/WebCore:

Reviewed by Sam Weinig.

  • Configurations/FeatureDefines.xcconfig:
  • WebCore.xcodeproj/project.pbxproj:
  • page/NavigatorBase.cpp:

(WebCore::NavigatorBase::hardwareConcurrency): Deleted.

  • page/NavigatorBase.h:
  • page/NavigatorConcurrentHardware.idl: Removed.

Source/WebCore/PAL:

Reviewed by Sam Weinig.

  • Configurations/FeatureDefines.xcconfig:

Source/WebKit/mac:

  • Configurations/FeatureDefines.xcconfig:

Source/WebKit2:

Reviewed by Sam Weinig.

  • Configurations/FeatureDefines.xcconfig:

Source/WTF:

Reviewed by Sam Weinig.

  • wtf/FeatureDefines.h:

Tools:

Reviewed by Sam Weinig.

  • TestWebKitAPI/Configurations/FeatureDefines.xcconfig:
4:11 PM Changeset in webkit [219371] by jiewen_tan@apple.com
  • 2 edits in trunk/Source/WebCore

[WebCrypto] CryptoKeyECMac::Custom OpenSSL tag is actually tagged type [1]
https://bugs.webkit.org/show_bug.cgi?id=174382
<rdar://problem/33244871>

Reviewed by Brent Fulgham.

No change of behaviour.

  • crypto/mac/CryptoKeyECMac.cpp:

(WebCore::CryptoKeyEC::platformImportPkcs8):
(WebCore::CryptoKeyEC::platformExportPkcs8):
Replace CustomECParameters with TaggedType1 according to X.690(08/2015) section 8.14:
https://www.itu.int/rec/T-REC-X.690-201508-I/en
and RFC 5915 Appendix A:
http://www.ietf.org/rfc/rfc5915.txt.

3:54 PM Changeset in webkit [219370] by rniwa@webkit.org
  • 2 edits in trunk/Websites/perf.webkit.org

Show the roots built by perf try bots on results page
https://bugs.webkit.org/show_bug.cgi?id=174305

Reviewed by Joseph Pecoraro.

Show build products created by a perf try bots so that we can download them for local testing.

  • public/v3/components/test-group-revision-table.js:

(TestGroupRevisionTable.prototype._renderTable): Find the set of repositories for which a patch is applied.
Show build products for all commit sets for such a repository since when WebKit is built with a patch in
one configuration, the other configuration also needs to be built for consistency.
(TestGroupRevisionTable.prototype._buildCommitCell): Added the hyperlink for build products.
(TestGroupRevisionTable.prototype._buildFileInfo): Takes a string to override the file's label. Since all
build products made by bots tend to have the same filename, we show the label of "Build product" instead.
(TestGroupRevisionTable.prototype._mergeCellsWithSameCommitsAcrossRows): Fixed a bug that any entry with
a patch wasn't getting merged since it was comparing against the result commit set, which does not contain
the patch (only requested commit set contains a patch).

3:48 PM Changeset in webkit [219369] by dino@apple.com
  • 2 edits in trunk/Source/WebKit2

Viewport fit experimental feature should be always on by default
https://bugs.webkit.org/show_bug.cgi?id=174398
<rdar://problem/33248920>

Reviewed by Simon Fraser.

Even though this is experimental, it should be enabled by default, and
not follow the value of DEFAULT_EXPERIMENTAL_FEATURES_ENABLED.

  • Shared/WebPreferencesDefinitions.h:
3:33 PM Changeset in webkit [219368] by clopez@igalia.com
  • 2 edits in trunk/LayoutTests

REGRESSION(r219332): [GTK] 9 new failures on fast/forms spinbutton related tests.
https://bugs.webkit.org/show_bug.cgi?id=174395

Unreviewed GTK gardening.

  • platform/gtk/TestExpectations: Mark the new failures. Further investigation pending.
3:28 PM Changeset in webkit [219367] by sbarati@apple.com
  • 1 edit
    2 deletes in trunk/Source/JavaScriptCore

remove the empty JavaScriptCore/wasm/js/WebAssemblyFunctionCell.* files
https://bugs.webkit.org/show_bug.cgi?id=174397

Rubber stamped by David Kilzer.

  • wasm/js/WebAssemblyFunctionCell.cpp: Removed.
  • wasm/js/WebAssemblyFunctionCell.h: Removed.
3:27 PM Changeset in webkit [219366] by Adrian Perez de Castro
  • 3 edits in trunk/Source/WebKit2

Fix typo: ContentRuleListStore::nonLegacyDdefaultStore()
https://bugs.webkit.org/show_bug.cgi?id=174387

Reviewed by Michael Catanzaro.

Rename nonLegacyDdefaultStore() to nonLegacyDefaultStore().

  • UIProcess/API/APIContentRuleListStore.cpp:

(API::ContentRuleListStore::nonLegacyDefaultStore):
(API::ContentRuleListStore::defaultStore):

  • UIProcess/API/APIContentRuleListStore.h:
2:46 PM Changeset in webkit [219365] by Chris Dumez
  • 2 edits in trunk/Source/WebKit2

Simplify primary domain lambda captures in WebResourceLoadStatisticsStore
https://bugs.webkit.org/show_bug.cgi?id=174381

Reviewed by Brent Fulgham.

  • UIProcess/WebResourceLoadStatisticsStore.cpp:

(WebKit::isolatedPrimaryDomain):
(WebKit::WebResourceLoadStatisticsStore::logUserInteraction):
(WebKit::WebResourceLoadStatisticsStore::clearUserInteraction):
(WebKit::WebResourceLoadStatisticsStore::hasHadUserInteraction):
(WebKit::WebResourceLoadStatisticsStore::setLastSeen):
(WebKit::WebResourceLoadStatisticsStore::setPrevalentResource):
(WebKit::WebResourceLoadStatisticsStore::isPrevalentResource):
(WebKit::WebResourceLoadStatisticsStore::clearPrevalentResource):
(WebKit::WebResourceLoadStatisticsStore::setGrandfathered):
(WebKit::WebResourceLoadStatisticsStore::isGrandfathered):
(WebKit::WebResourceLoadStatisticsStore::setSubframeUnderTopFrameOrigin):
(WebKit::WebResourceLoadStatisticsStore::setSubresourceUnderTopFrameOrigin):
(WebKit::WebResourceLoadStatisticsStore::setSubresourceUniqueRedirectTo):
(WebKit::primaryDomain): Deleted.

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

REGRESSION(r219045): The <body> element does not get repainted when its background image finishes decoding
https://bugs.webkit.org/show_bug.cgi?id=174376

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2017-07-11
Reviewed by Simon Fraser.

Source/WebCore:

When adding a CachedImageClient to CachedImage::m_pendingImageDrawingClients
and the CachedImageClient is not one of the CachedImage::m_clients, we
should cancel the repaint optimization in CachedImage::imageFrameAvailable().
This can be done by adding all the CachedImage::m_clients to CachedImage::
m_pendingImageDrawingClients.

Test: fast/images/async-image-body-background-image.html

  • loader/cache/CachedImage.cpp:

(WebCore::CachedImage::addPendingImageDrawingClient):

LayoutTests:

  • fast/images/async-image-body-background-image-expected.html: Added.
  • fast/images/async-image-body-background-image.html: Added.
2:09 PM Changeset in webkit [219363] by Chris Dumez
  • 3 edits in trunk/Source/WebCore

Unreviewed, fix Windows build after r219355.

  • bindings/js/JSDOMWindowCustom.cpp:

(WebCore::addCrossOriginWindowPropertyNames):
(WebCore::addCrossOriginWindowOwnPropertyNames):
(WebCore::JSDOMWindow::getOwnPropertyNames):
(WebCore::addCrossOriginPropertyNames): Deleted.
(WebCore::addCrossOriginOwnPropertyNames): Deleted.

  • bindings/js/JSLocationCustom.cpp:

(WebCore::addCrossOriginLocationPropertyNames):
(WebCore::addCrossOriginLocationOwnPropertyNames):
(WebCore::JSLocation::getOwnPropertyNames):
(WebCore::addCrossOriginPropertyNames): Deleted.
(WebCore::addCrossOriginOwnPropertyNames): Deleted.

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

We should do ICE candidate filtering at the Document level
https://bugs.webkit.org/show_bug.cgi?id=173861
<rdar://problem/33122058>

Unreviewed.

Patch by Youenn Fablet <youenn@apple.com> on 2017-07-11

  • resources/testharnessreport.js: Not calling setICECandidateFiltering if not defined.
2:07 PM Changeset in webkit [219361] by weinig@apple.com
  • 28 edits
    4 adds
    2 deletes in trunk

[WebIDL] Convert MutationCallback to be a normal generate callback
https://bugs.webkit.org/show_bug.cgi?id=174140

Reviewed by Chris Dumez.

Source/WebCore:

To make this work more nicely, I:

  • Added the ability to for non-nullable interfaces in sequences to be passed via a Ref<> rather than a RefPtr<> as a parameter to a callback function. (e.g. callback MyCallback = void (sequence<Foo> foos) will now have the signature, CallbackResult<void> handleEvent(const Vector<Ref<Foo>>&) rather than CallbackResult<void> handleEvent(const Vector<RefPtr<Foo>>&).
  • Added a new extended attribute for callback functions called [CallbackNeedsCanInvoke] that adds a virtual function called canInvoke() to the generated callback. All it does is forward to ActiveDOMCallback's canInvokeCallback, but it allows the implementation to get to it. We may one day want to move the inheritance of ActiveDOMCallback from the generated source to the base class.
  • Added a new extended attribute for callback functions called [CallbackThisObject=Type] which allows you to specify that the callback needs a this object in addition to its arguments. When specified, the first argument of the C++ implementation function will now correspond to the this object, with the remaining arguments shifted over one.
  • DerivedSources.make:

Add MutationCallback.

  • WebCore.xcodeproj/project.pbxproj:

Remove non-generated JSMutationCallback.cpp, and add generated JSMutationCallback.cpp.

  • Modules/mediastream/MediaDevicesRequest.cpp:

(WebCore::MediaDevicesRequest::filterDeviceList):
(WebCore::MediaDevicesRequest::start):

  • Modules/mediastream/MediaDevicesRequest.h:

Switch to using Ref.

  • bindings/IDLTypes.h:

Add InnerParameterType and NullableInnerParameterType type hooks
and specialize wrappers to use Ref for InnerParameterType, and RefPtr
for NullableInnerParameterType.

  • bindings/js/JSCallbackData.cpp:
  • bindings/js/JSCallbackData.h:

Add support for passing a this object.

  • bindings/js/JSMutationCallback.cpp: Removed.
  • bindings/js/JSMutationCallback.h: Removed.

Remove custom callback code.

  • bindings/js/JSMutationObserverCustom.cpp:

(WebCore::constructJSMutationObserver): Deleted.
Remove no longer needed custom constructor.

  • bindings/scripts/CodeGenerator.pm:

(ParseType):
Add helper to parse a type and cache the result.

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateCallbackHeaderContent):
(GenerateCallbackImplementationContent):
Add support for [CallbackNeedsCanInvoke] and [CallbackThisObject]. When [CallbackThisObject]
is not specified, use jsUndefined() as the this object as specified by WebIDL.

  • bindings/scripts/IDLAttributes.json:

Add [CallbackNeedsCanInvoke] and [CallbackThisObject].

  • bindings/scripts/IDLParser.pm:

(ParseType):
Add entry point to parse a single type.

  • css/FontFaceSet.h:

Switch to using Ref.

  • dom/MutationCallback.h:

Update signatures.

  • dom/MutationCallback.idl: Added.


  • dom/MutationObserver.cpp:

(WebCore::MutationObserver::canDeliver):
(WebCore::MutationObserver::deliver):
Switch to new signatures.

  • dom/MutationObserver.idl:

Remove CustomConstructor.

  • page/IntersectionObserverCallback.h:

Switch to using Ref.

  • bindings/scripts/test/JS/JSTestCallbackFunction.cpp:
  • bindings/scripts/test/JS/JSTestCallbackFunctionRethrow.cpp:
  • bindings/scripts/test/JS/JSTestCallbackFunctionWithThisObject.cpp: Added.
  • bindings/scripts/test/JS/JSTestCallbackFunctionWithThisObject.h: Added.
  • bindings/scripts/test/JS/JSTestCallbackFunctionWithTypedefs.cpp:
  • bindings/scripts/test/JS/JSTestCallbackInterface.cpp:
  • bindings/scripts/test/JS/JSTestCallbackInterface.h:
  • bindings/scripts/test/JS/JSTestVoidCallbackFunction.cpp:

Add / update bindings tests.

LayoutTests:

  • fast/dom/MutationObserver/mutation-observer-constructor-expected.txt:

Update results for standard error messages.

1:56 PM Changeset in webkit [219360] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore

RenderImage should not add itself as a RelevantRepaintedObject if its image frame is being decoded
https://bugs.webkit.org/show_bug.cgi?id=174336

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2017-07-11
Reviewed by Simon Fraser.

Since nothing will be drawn till the image frame finishes decoding we should
treat returning ImageDrawResult::DidRequestDecoding from BitmapImage::draw
the same as we do when the image is still loading.

  • rendering/RenderImage.cpp:

(WebCore::RenderImage::paintReplaced):
(WebCore::RenderImage::paintIntoRect):

  • rendering/RenderImage.h:
1:46 PM Changeset in webkit [219359] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

[WebRTC] Hanging under LibWebRTCMediaEndpoint::getStats
https://bugs.webkit.org/show_bug.cgi?id=174377

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

No change of behavior.
Moving calls to libwebrtc getStats in the signalling thread since doing it in the main thread
would block the main thread until the signalling thread is ready to handle getStats.
Reducing stat logging since this may be too much for some devices.

  • Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:

(WebCore::LibWebRTCMediaEndpoint::getStats):
(WebCore::LibWebRTCMediaEndpoint::gatherStatsForLogging):
(WebCore::LibWebRTCMediaEndpoint::OnStatsDelivered):
(WebCore::LibWebRTCMediaEndpoint::startLoggingStats):

1:42 PM Changeset in webkit [219358] by Lucas Forschler
  • 2 edits in trunk/Tools

Teach build workers to fetch archives from S3.
https://bugs.webkit.org/show_bug.cgi?id=174384

Reviewed by Aakash Jain.

  • BuildSlaveSupport/build.webkit.org-config/master.cfg:

(DownloadBuiltProduct):

1:38 PM Changeset in webkit [219357] by timothy@hatcher.name
  • 2 edits in trunk/Source/WebKit2

Fix a build failure in WebDragClient when !PLATFORM(COCOA) && !PLATFORM(GTK).
https://bugs.webkit.org/show_bug.cgi?id=174372

Reviewed by Beth Dakin.

  • WebProcess/WebCoreSupport/WebDragClient.cpp:

(WebKit::WebDragClient::didConcludeEditDrag): Added empty method.

1:21 PM Changeset in webkit [219356] by Michael Catanzaro
  • 1 edit
    3 deletes in trunk/Source/WebCore

Remove unused OpenGL files
https://bugs.webkit.org/show_bug.cgi?id=174371

Reviewed by Timothy Hatcher.

  • platform/graphics/opengl/GLPlatformContext.cpp: Removed.
  • platform/graphics/opengl/GLPlatformContext.h: Removed.
  • platform/graphics/opengl/GLPlatformSurface.h: Removed.
1:11 PM Changeset in webkit [219355] by Chris Dumez
  • 5 edits in trunk

Window's OwnPropertyKeys? is wrong for cross origin windows
https://bugs.webkit.org/show_bug.cgi?id=174364
<rdar://problem/33238056>

Reviewed by Brent Fulgham.

Source/WebCore:

Window's OwnPropertyKeys? should not list descendant frame names
when the window is cross-origin:

This aligns our behavior with Firefox and Chrome.

No new tests, updated existing test.

  • bindings/js/JSDOMWindowCustom.cpp:

(WebCore::addCrossOriginPropertyNames):
(WebCore::addCrossOriginOwnPropertyNames):
(WebCore::JSDOMWindow::getOwnPropertyNames):

LayoutTests:

Update test to reflect behavior change. I verified that the test is passing in Firefox.
The test fails in Chrome because its does not expose frames indexes on the Window, and
it is incorrectly listing "assign" on Location.

  • http/tests/security/cross-frame-access-enumeration.html:
12:31 PM Changeset in webkit [219354] by jmarcell@apple.com
  • 17 edits in tags/Safari-604.1.30/Source

Cherry-pick r219340. rdar://problem/33030639

12:25 PM Changeset in webkit [219353] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

[GTK] editing/input new passes since r211277
https://bugs.webkit.org/show_bug.cgi?id=160119

Unreviewed test gardening.

Patch by Charlie Turner <cturner@igalia.com> on 2017-07-11

  • platform/gtk/TestExpectations:
11:57 AM Changeset in webkit [219352] by Brent Fulgham
  • 9 edits
    2 adds in trunk

Reset cookie partitioning state after network process crashes
https://bugs.webkit.org/show_bug.cgi?id=174306
<rdar://problem/33171605>

Reviewed by Chris Dumez.

Source/WebKit2:

  • UIProcess/Storage/ResourceLoadStatisticsStore.cpp:

(WebKit::ResourceLoadStatisticsStore::fireShouldPartitionCookiesHandler): Move cookie
partioning state code to helper function.
(WebKit::ResourceLoadStatisticsStore::resetPartitionCookiesState): Added.

  • UIProcess/Storage/ResourceLoadStatisticsStore.h:
  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::ensureNetworkProcess): Inform the statistics store that
the network process crashed.
(WebKit::WebProcessPool::terminateNetworkProcess): Mark network process as crashed.

  • UIProcess/WebResourceLoadStatisticsStore.cpp:

(WebKit::WebResourceLoadStatisticsStore::networkProcessDidCrash): Reset the cookie
partitioning state after a crash.

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

(WebKit::WebsiteDataStore::notifyResourceLoadStatisticsNetworkProcessDidCrash): Relay
information to the statistics store.

  • UIProcess/WebsiteData/WebsiteDataStore.h:

LayoutTests:

  • http/tests/loading/resourceLoadStatistics/partitioned-and-unpartitioned-cookie-with-network-process-crash-expected.txt: Added.
  • http/tests/loading/resourceLoadStatistics/partitioned-and-unpartitioned-cookie-with-network-process-crash.html: Added.
  • http/tests/loading/resourceLoadStatistics/resources/get-cookies.php:
  • http/tests/loading/resourceLoadStatistics/resources/set-cookie.php:
11:48 AM Changeset in webkit [219351] by Lucas Forschler
  • 2 edits in trunk/Tools

Configure buildbot to transfer all archives to S3.
Previously this was Mac only, but it's time to expand!
https://bugs.webkit.org/show_bug.cgi?id=174378

Reviewed by Aakash Jain.

  • BuildSlaveSupport/build.webkit.org-config/master.cfg:

(BuildFactory.init):

11:37 AM Changeset in webkit [219350] by jmarcell@apple.com
  • 7 edits in trunk/Source

Versioning.

11:30 AM Changeset in webkit [219349] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

REGRESSION(r219298): [GTK] imported/w3c/IndexedDB-private-browsing/idbfactory_open.html is crashing occassionaly
https://bugs.webkit.org/show_bug.cgi?id=174354

Unreviewed test gardening.

Patch by Charlie Turner <cturner@igalia.com> on 2017-07-11

  • platform/gtk/TestExpectations:
11:23 AM Changeset in webkit [219348] by jmarcell@apple.com
  • 1 copy in tags/Safari-604.1.30

Tag Safari-604.1.30.

11:20 AM Changeset in webkit [219347] by Yusuke Suzuki
  • 4 edits in trunk/Source/WTF

[WTF] Drop unnecessary AtomicString constructor since we have constexpr hash function
https://bugs.webkit.org/show_bug.cgi?id=174347

Reviewed by Alex Christensen.

Previously, we calculate hash value in perl script and generate source code with that value.
This AtomicString constructor takes this pre-calculated hash value to efficiently construct
itself. But now, we have constexpr hash function, then we do not need to specify hash value
directly in this way. Thus we drop this functionality.

  • wtf/text/AtomicString.h:
  • wtf/text/AtomicStringImpl.cpp:

(WTF::HashAndCharactersTranslator::hash): Deleted.
(WTF::HashAndCharactersTranslator::equal): Deleted.
(WTF::HashAndCharactersTranslator::translate): Deleted.

  • wtf/text/AtomicStringImpl.h:

(WTF::AtomicStringImpl::add):

11:13 AM Changeset in webkit [219346] by timothy@hatcher.name
  • 2 edits in trunk/Source/WebKit2

Fix broken build when !ENABLE(INDEXED_DATABASE)
https://bugs.webkit.org/show_bug.cgi?id=174370

Reviewed by Alex Christensen.

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::pageAddedToProcess):

11:10 AM Changeset in webkit [219345] by commit-queue@webkit.org
  • 3 edits in trunk/LayoutTests

[GTK][WPE] Some resource load statistics tests added in r212183 also fail.
https://bugs.webkit.org/show_bug.cgi?id=168171

Unreviewed test gardening.

Patch by Charlie Turner <cturner@igalia.com> on 2017-07-11

  • platform/gtk/TestExpectations:
11:08 AM Changeset in webkit [219344] by clopez@igalia.com
  • 2 edits in trunk/Source/WebKit2

Changing the web page muted state for playing audio should not disable other tabs capture
https://bugs.webkit.org/show_bug.cgi?id=174349

Unreviewed.

Patch by Youenn Fablet <youenn@apple.com> on 2017-07-11

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::activateMediaStreamCaptureInPage): Fixes non MEDIA_STREAM builds.

11:07 AM Changeset in webkit [219343] by timothy@hatcher.name
  • 8 edits in trunk/Source/WebCore

Fix broken build when ENABLE_VIDEO is disabled.
https://bugs.webkit.org/show_bug.cgi?id=174368

Reviewed by Alex Christensen.

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

(WebCore::WebGLRenderingContextBase::texSubImage2D):
(WebCore::WebGLRenderingContextBase::texImage2D):

  • html/canvas/WebGLRenderingContextBase.h:
  • html/canvas/WebGLRenderingContextBase.idl:
  • testing/Internals.cpp:

(WebCore::Internals::mediaResponseSources):
(WebCore::Internals::mediaResponseContentRanges):

  • testing/Internals.h:
  • testing/Internals.idl:
11:01 AM Changeset in webkit [219342] by commit-queue@webkit.org
  • 9 edits in trunk

elementFromPoint() should consider x and y to be in client (layout viewport) coordinates
https://bugs.webkit.org/show_bug.cgi?id=172019

Patch by Ali Juma <ajuma@chromium.org> on 2017-07-11
Reviewed by Simon Fraser.

Source/WebCore:

When visual viewports are enabled, this makes TreeScope::nodeFromPoint consider its
input to be in client coordinates, and clips this input to the layout viewport. This change
affects the behavior of document.elementFromPoint() and document.caretRangeFromPoint.

No new tests. Modified an existing test, and made a previously-failing test pass on ios.

  • dom/TreeScope.cpp:

(WebCore::TreeScope::nodeFromPoint):

  • page/FrameView.cpp:

(WebCore::FrameView::layoutViewportToAbsoluteRect):
(WebCore::FrameView::layoutViewportToAbsolutePoint):
(WebCore::FrameView::clientToLayoutViewportPoint):

  • page/FrameView.h:
  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::hitTest):

LayoutTests:

  • fast/dom/elementFromPoint-scaled-scrolled-expected.txt: Updated.
  • fast/dom/elementFromPoint-scaled-scrolled.html: Updated.
  • platform/ios/TestExpectations:
10:58 AM Changeset in webkit [219341] by timothy@hatcher.name
  • 2 edits in trunk/Source/WebCore

Broken build when !USE(REQUEST_ANIMATION_FRAME_DISPLAY_MONITOR)
https://bugs.webkit.org/show_bug.cgi?id=174369

Reviewed by Alex Christensen.

  • dom/ScriptedAnimationController.h: Include PlatformScreen.h.
10:55 AM Changeset in webkit [219340] by Wenson Hsieh
  • 17 edits in trunk/Source

Address post-review feedback after http://trac.webkit.org/r219310
https://bugs.webkit.org/show_bug.cgi?id=174300
<rdar://problem/33030639>

Reviewed by Simon Fraser.

Source/WebCore:

Removes pan-gesture-related plumbing introduced in r219310 that is no longer necessary.

  • page/scrolling/ScrollingTree.h:

(WebCore::ScrollingTree::scrollingTreeNodeWillStartPanGesture):
(WebCore::ScrollingTree::scrollingTreeNodeDidEndPanGesture): Deleted.

Source/WebKit2:

Removes plumbing introduced in r219310 for telling WKContentView when the user has finished panning or zooming.
This was previously used to reset allowing asynchronous touch event after preventing the web touch events
gesture recognizer from firing.

However, a far simpler (and much less fragile) solution is to just set _canSendTouchEventsAsynchronously to NO
at the beginning of the gesture, before the first touchstart event is dispatched. This way, we always ensure
that _canSendTouchEventsAsynchronously is NO when beginning to process a touch event. This approach is correct
because the only place where we query _canSendTouchEventsAsynchronously is in -_webTouchEventsRecognized:, where
(when we are beginning a new gesture) we are guaranteed that -gestureRecognizer:shouldIgnoreWebTouchWithEvent:
has already been called and _canSendTouchEventsAsynchronously is NO.

Confirmed that the LayoutTests added in r219310 still pass.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView scrollViewDidEndDragging:willDecelerate:]):
(-[WKWebView scrollViewDidEndZooming:withView:atScale:]):

  • UIProcess/PageClient.h:
  • UIProcess/Scrolling/RemoteScrollingCoordinatorProxy.h:
  • UIProcess/Scrolling/RemoteScrollingTree.cpp:

(WebKit::RemoteScrollingTree::scrollingTreeNodeDidEndPanGesture): Deleted.

  • UIProcess/Scrolling/RemoteScrollingTree.h:
  • UIProcess/Scrolling/ios/ScrollingTreeOverflowScrollingNodeIOS.h:
  • UIProcess/Scrolling/ios/ScrollingTreeOverflowScrollingNodeIOS.mm:

(-[WKOverflowScrollViewDelegate scrollViewDidEndDragging:willDecelerate:]):
(WebKit::ScrollingTreeOverflowScrollingNodeIOS::overflowScrollViewDidEndPanGesture): Deleted.

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

(WebKit::PageClientImpl::overflowScrollViewDidEndPanGesture): Deleted.

  • UIProcess/ios/RemoteScrollingCoordinatorProxyIOS.mm:

(WebKit::RemoteScrollingCoordinatorProxy::scrollingTreeNodeDidEndPanGesture): Deleted.

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

(-[WKContentView gestureRecognizer:shouldIgnoreWebTouchWithEvent:]):
(-[WKContentView scrollViewDidEndPanOrPinchGesture]): Deleted.

  • UIProcess/ios/WebPageProxyIOS.mm:

(WebKit::WebPageProxy::overflowScrollViewDidEndPanGesture): Deleted.

10:45 AM Changeset in webkit [219339] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

[GTK] compositing/video/poster.html passing since r218320
https://bugs.webkit.org/show_bug.cgi?id=169918

Unreviewed test gardening.

Patch by Charlie Turner <cturner@igalia.com> on 2017-07-11

  • platform/gtk/TestExpectations:
10:02 AM Changeset in webkit [219338] by commit-queue@webkit.org
  • 4 edits in trunk/Source/WebCore

Reduce URL size
https://bugs.webkit.org/show_bug.cgi?id=174319

Patch by Alex Christensen <achristensen@webkit.org> on 2017-07-11
Reviewed by Andreas Kling.

m_fragmentEnd is redundant information. If a URL is valid, then it is always m_string.length().
If a URL is not valid, then it is always 0. Rather than storing additional information,
deduce the fragment end from the validity of the URL and the String's length.

No change in behavior. This reduces sizeof(URL) from 56 to 48 and reduces operations when parsing.

  • platform/URL.cpp:

(WebCore::URL::invalidate):
(WebCore::URL::fragmentIdentifier):
(WebCore::URL::hasFragmentIdentifier):
(WebCore::URL::removeFragmentIdentifier):

  • platform/URL.h:

(WebCore::URL::encode):
(WebCore::URL::decode):
(WebCore::URL::hasFragment):

  • platform/URLParser.cpp:

(WebCore::URLParser::urlLengthUntilPart):
(WebCore::URLParser::copyURLPartsUntil):
(WebCore::URLParser::parse):
(WebCore::URLParser::allValuesEqual):
(WebCore::URLParser::internalValuesConsistent):

9:51 AM Changeset in webkit [219337] by Brent Fulgham
  • 2 edits in trunk/Source/WebKit2

Unreviewed clean-up after r219323

Simplify algorithm slightly based on a suggestion Chris Dumez made in the review.

  • UIProcess/WebResourceLoadStatisticsStore.cpp:

(WebKit::pruneResources): Don't create a second variable to track the pruning operation.

9:48 AM Changeset in webkit [219336] by commit-queue@webkit.org
  • 11 edits in trunk/Source

SharedBuffer::size should return a size_t
https://bugs.webkit.org/show_bug.cgi?id=174328

Patch by Alex Christensen <achristensen@webkit.org> on 2017-07-11
Reviewed by Andreas Kling.

Source/WebCore:

No change in behaviour.

  • html/FTPDirectoryDocument.cpp:

(WebCore::createTemplateDocumentData):

  • loader/ContentFilter.cpp:

(WebCore::ContentFilter::handleProvisionalLoadFailure):

  • loader/ResourceLoader.cpp:

(WebCore::ResourceLoader::loadDataURL):

  • loader/ResourceLoader.h:
  • loader/appcache/ApplicationCacheStorage.cpp:

(WebCore::ApplicationCacheStorage::store):

  • loader/cache/CachedScript.cpp:

(WebCore::CachedScript::script):

  • platform/SharedBuffer.cpp:

(WebCore::SharedBuffer::tryCreateArrayBuffer):

  • platform/SharedBuffer.h:

Source/WebKit2:

  • UIProcess/WebResourceLoadStatisticsStore.cpp:

(WebKit::WebResourceLoadStatisticsStore::writeEncoderToDisk):

9:43 AM Changeset in webkit [219335] by pvollan@apple.com
  • 4 edits in trunk/Source/WebCore

[Win] Build error when building WebCore from WebCore.proj project file.
https://bugs.webkit.org/show_bug.cgi?id=174330

Reviewed by Brent Fulgham.

Source/WebCore:

The CMake variable PAL_DIR should be set in the project file.

  • WebCore.vcxproj/WebCore.proj:

Source/WebCore/PAL:

CMAKE_BINARY_DIR is needed in the include list in order to find 'cmakeconfig.h'.

  • pal/CMakeLists.txt:
9:30 AM Changeset in webkit [219334] by svillar@igalia.com
  • 3 edits
    2 adds in trunk

[SVG] Leak in SVGAnimatedListPropertyTearOff
https://bugs.webkit.org/show_bug.cgi?id=172545

Source/WebCore:

Reviewed by Said Abou-Hallawa.

SVGAnimatedListPropertyTearOff maintains a vector m_wrappers with references to
SVGPropertyTraits<PropertyType>::ListItemTearOff. Apart from that SVGPropertyTearOff has a
reference to SVGAnimatedProperty.

When SVGListProperty::getItemValuesAndWrappers() is called, it creates a
SVGPropertyTraits<PropertyType>::ListItemTearOff pointing to the same SVGAnimatedProperty (a
SVGAnimatedListPropertyTearOff) which stores the m_wrappers vector where the ListItemTearOff
is going to be added to. This effectively creates a reference cycle between the
SVGAnimatedListPropertyTearOff and all the ListItemTearOff it stores in m_wrappers.

We should detach those wrappers in propertyWillBeDeleted() in order to break the cycle.

  • svg/properties/SVGAnimatedListPropertyTearOff.h:

LayoutTests:

Reviewed by Darin Adler.

  • svg/animations/animation-leak-list-property-instances-expected.txt: Added.
  • svg/animations/animation-leak-list-property-instances.html: Added.
9:15 AM Changeset in webkit [219333] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: Node Sidebar - Improve wording for Potential Custom Element lacking a Custom definition
https://bugs.webkit.org/show_bug.cgi?id=174346

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-07-11
Reviewed by Matt Baker.

  • Localizations/en.lproj/localizedStrings.js:
  • UserInterface/Views/DOMNodeDetailsSidebarPanel.js:

(WebInspector.DOMNodeDetailsSidebarPanel.prototype._customElementState):
The text "Waiting to be upgraded" is poor. Any non-standard element with dashes
in the name is considered custom, but does not need to be upgraded. Lets use
different wording to indicate that it is detected as custom, and lacks a
specific Custom Element definition.

9:03 AM WebKitGTK/2.16.x edited by Michael Catanzaro
Propose r219332 (diff)
8:34 AM Changeset in webkit [219332] by clopez@igalia.com
  • 6 edits
    3 adds in trunk

[GTK] Spin buttons on input type number appear over the value itself for small widths
https://bugs.webkit.org/show_bug.cgi?id=173572

Reviewed by Carlos Garcia Campos.

Source/WebCore:

When drawing the spin buttons, override the width of the input
element to increment it with the width of the spin button.
This ensures that we don't end up covering the input values with
the spin buttons.

Do this also for user controlled styles, because most web authors
won't test how their site renders on WebKitGTK+, and they will
assume spin buttons in the order of 13 pixels wide (that is what
most browsers use), but the GTK+ spin button is much wider (66 pixels).

Test: platform/gtk/fast/forms/number/number-size-spinbutton-nocover.html

  • rendering/RenderTheme.cpp:

(WebCore::RenderTheme::adjustStyle):

  • rendering/RenderThemeGtk.cpp:

(WebCore::RenderThemeGtk::adjustTextFieldStyle): Call the theme's adjustTextFieldStyle() also for user controlled styles.
(WebCore::RenderThemeGtk::adjustInnerSpinButtonStyle):

LayoutTests:

  • fast/forms/number/number-size-expected.txt:
  • fast/forms/number/number-size.html: Obtain the size of the spinbutton by inspecting the shadow dom (is more reliable) and make the test for user controlled style special for the case of GTK+.
  • platform/gtk/fast/forms/number/number-size-spinbutton-nocover-expected.png: Added.
  • platform/gtk/fast/forms/number/number-size-spinbutton-nocover-expected.txt: Added.
  • platform/gtk/fast/forms/number/number-size-spinbutton-nocover.html: Added.
8:32 AM Changeset in webkit [219331] by commit-queue@webkit.org
  • 15 edits
    12 adds in trunk

We should do ICE candidate filtering at the Document level
https://bugs.webkit.org/show_bug.cgi?id=173861
<rdar://problem/33122058>

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

Source/WebCore:

Tests: http/tests/webrtc/filtering-ice-candidate-cross-origin-frame.html

http/tests/webrtc/filtering-ice-candidate-same-origin-frame.html
http/tests/webrtc/filtering-ice-candidate-same-origin-frame2.html
webrtc/filtering-ice-candidate-after-reload.html

Making UserMediaRequest disable the ICE candidate filtering for the page RTCController.
All RTCPeerConnection of the page that are created on a document that are same-origin as the top document
are now registered to the RTCController.
This allows disabling filtering to only these RTCPeerConnection.

The page keeps the default ICE candidate filtering policy.
This policy allows disabling ICE candidate filtering for all RTCPeerConnection.

When the top document is changing, the RTCController filtering policy is reset
and its list of RTCPeerConnection is emptied.

Internals no longer disables ICE candidate filtering by default.
This allows finer grained testing.
ICE candidate filtering is disabled for tests including testharnessreport.js
to enable web-platform-tests to run without modifications.

  • Modules/mediastream/RTCController.cpp:

(WebCore::RTCController::reset):

  • Modules/mediastream/RTCController.h:
  • Modules/mediastream/UserMediaRequest.cpp:

(WebCore::UserMediaRequest::allow):

  • page/Frame.cpp:

(WebCore::Frame::setDocument):

  • page/Page.cpp:

(WebCore::Page::disableICECandidateFiltering):

  • page/Page.h:

(WebCore::Page::shouldEnableICECandidateFilteringByDefault):
(WebCore::Page::disableICECandidateFiltering): Deleted.
(WebCore::Page::enableICECandidateFiltering): Deleted.
(WebCore::Page::isICECandidateFilteringEnabled): Deleted.

  • testing/Internals.cpp:

(WebCore::Internals::Internals):
(WebCore::Internals::setICECandidateFiltering):
(WebCore::Internals::setEnumeratingAllNetworkInterfacesEnabled):
(WebCore::Internals::isICECandidateFilteringEnabled): Deleted.

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

Source/WebKit2:

Removing ICE candidate filtering handling at UIProcess level.
ICE candidate filtering is now disabled at UserMediaRequest level.
WebPage forwards the ICE candidate filtering option to the page so as to set
the default option correctly for every document of the page.

  • UIProcess/UserMediaProcessManager.cpp:

(WebKit::UserMediaProcessManager::willCreateMediaStream):
(WebKit::UserMediaProcessManager::endedCaptureSession):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::disableICECandidateFiltering):
(WebKit::WebPage::enableICECandidateFiltering):

LayoutTests:

  • http/tests/webrtc/filtering-ice-candidate-cross-origin-frame-expected.txt: Added.
  • http/tests/webrtc/filtering-ice-candidate-cross-origin-frame.html: Added.
  • http/tests/webrtc/filtering-ice-candidate-same-origin-frame-expected.txt: Added.
  • http/tests/webrtc/filtering-ice-candidate-same-origin-frame.html: Added.
  • http/tests/webrtc/filtering-ice-candidate-same-origin-frame2-expected.txt: Added.
  • http/tests/webrtc/filtering-ice-candidate-same-origin-frame2.html: Added.
  • http/tests/webrtc/resources/check-ice-candidate-filtering.html: Added.
  • http/tests/webrtc/resources/do-get-user-media.html: Added.
  • platform/mac-wk1/TestExpectations: Disable http/tests/webrtc tests.
  • resources/testharnessreport.js: Disabled ICE candidate filtering by default.
  • webrtc/filtering-ice-candidate-after-reload-expected.txt: Added.
  • webrtc/filtering-ice-candidate-after-reload.html: Added.
8:14 AM Changeset in webkit [219330] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebKit2

Changing the web page muted state for playing audio should not disable other tabs capture
https://bugs.webkit.org/show_bug.cgi?id=174349
rdar://problem/33223988

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

Make sure to mute capturing streams of any other tab if the current tab will start capturing or will unmute existing capturing streams.
Manually tested by having a tab doing capture and another tab playing a video.
Muting or unmuting the tab playing video should not change the capture tab.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::activateMediaStreamCaptureInPage):
(WebKit::WebPageProxy::setMuted):

  • UIProcess/WebPageProxy.h:

(WebKit::WebPageProxy::activateMediaStreamCaptureInPage):

7:59 AM Changeset in webkit [219329] by zandobersek@gmail.com
  • 2 edits
    5 adds
    4 deletes in trunk/Tools

[WPE] Bump GStreamer packages in jhbuild.modules to 1.10.5
https://bugs.webkit.org/show_bug.cgi?id=174350

Reviewed by Xabier Rodriguez-Calvar.

Bump the various GStreamer dependencies listed in WPE's Jhbuild modules file
to the 1.10.5 version. One gstreamer patch is added. The two gst-plugins-bad
patches are removed. The patches for gst-plugins-good are updated, removing
the stale ones and adding the additional changes to qtdemux, souphttpsrc and
rtpbin elements that will help with the EMEv3 development.

  • wpe/jhbuild.modules:
  • wpe/patches/gst-plugins-bad-0001-dtls-port-to-OpenSSL-1.1.0.patch: Removed.
  • wpe/patches/gst-plugins-bad-0002-dtlscertificate-Fix-error-checking-in-RSA_generate_k.patch: Removed.
  • wpe/patches/gst-plugins-good-0003-rtpbin-receive-bundle-support.patch: Added.
  • wpe/patches/gst-plugins-good-0005-souphttpsrc-cookie-jar-and-context-query-support.patch: Added.
  • wpe/patches/gst-plugins-good-0006-qtdemux-add-context-for-a-preferred-protection.patch: Added.
  • wpe/patches/gst-plugins-good-0008-qtdemux-also-push-buffers-without-encryption-info-in.patch: Added.
  • wpe/patches/gst-plugins-good-Revert-qtdemux-expose-streams-with-first-moof-for-fr.patch: Removed.
  • wpe/patches/gst-plugins-good-use-the-tfdt-decode-time.patch: Removed.
  • wpe/patches/gstreamer-0001-protection-added-function-to-filter-system-ids.patch: Added.
7:53 AM Changeset in webkit [219328] by commit-queue@webkit.org
  • 9 edits in trunk/Source/WebKit2

NetworkProcess should close listening WebRTC sockets when being suspended
https://bugs.webkit.org/show_bug.cgi?id=174270
rdar://problem/33139844

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

To prevent potential spinning of the NetworkProcess, NetworkProcess will now close listening sockets when being notified that it will be suspended.
When the network process is being suspended, it will stop creating listening sockets, until it resumes.
Future additional efforts might be to improve select/cancel so that we can stop listening sockets at resume time,
or to reimplement part of the stack using CFStream.

Tested through manual testing by going to a website doing WebRTC, homing out so that the network process is suspended and reopening Safari.

  • NetworkProcess/NetworkConnectionToWebProcess.cpp:

(WebKit::NetworkConnectionToWebProcess::cleanupForSuspension):
Proxying call to clean for suspension to rtc provider so that it will
close listening sockets.
(WebKit::NetworkConnectionToWebProcess::resumeFromSuspension): Authorizing back listening sockets.

  • NetworkProcess/NetworkConnectionToWebProcess.h:

(WebKit::NetworkConnectionToWebProcess::cleanupForSuspension):
Clean-up is done asynchronously as it can happen in background threads.
Hence why passing a callback as parameter.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::notifyProcessReadyToSuspend): Helper routine
to notify UI process that network process clean up is done.
(WebKit::TaskCounter::TaskCounter): Helper class to call notifyProcessReadyToSuspend when sded.
(WebKit::TaskCounter::~TaskCounter):
(WebKit::NetworkProcess::actualPrepareToSuspend): Doing the clean-up for each connection that needs it.
Making sure to notify UI process of clean-up being completed once all connections are cleaned.
(WebKit::NetworkProcess::processWillSuspendImminently):
(WebKit::NetworkProcess::prepareToSuspend):
(WebKit::NetworkProcess::processDidResume): Reenable listening sockets.

  • NetworkProcess/NetworkProcess.h:
  • NetworkProcess/webrtc/LibWebRTCSocketClient.cpp:

(WebKit::LibWebRTCSocketClient::LibWebRTCSocketClient):

  • NetworkProcess/webrtc/LibWebRTCSocketClient.h: Adding type getter and making close public.

Used by NetworkRTCProvider to identifiy listening sockets and close them.

  • NetworkProcess/webrtc/NetworkRTCProvider.cpp:

(WebKit::NetworkRTCProvider::closeListeningSockets): We close the webrtc socket
and we also notify the Web Process that the socket is closed so that it can take actions to recreate some if needed.
(WebKit::NetworkRTCProvider::finishClosingListeningSockets):

  • NetworkProcess/webrtc/NetworkRTCProvider.h:

(WebKit::NetworkRTCProvider::authorizeListeningSockets): Authorize creation of listening sockets.

6:29 AM Changeset in webkit [219327] by svillar@igalia.com
  • 3 edits
    2 deletes in trunk

Unreviewed, rolling out r219325.

The test is still flaky

Reverted changeset:

"[SVG] Leak in SVGAnimatedListPropertyTearOff"
https://bugs.webkit.org/show_bug.cgi?id=172545
http://trac.webkit.org/changeset/219325

6:15 AM Changeset in webkit [219326] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

[GTK] media/video-restricted-invisible-autoplay-not-allowed.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=174353

Unreviewed test gardening.

Patch by Charlie Turner <cturner@igalia.com> on 2017-07-11

  • platform/gtk/TestExpectations:
3:44 AM Changeset in webkit [219325] by svillar@igalia.com
  • 2 edits
    2 adds in trunk

[SVG] Leak in SVGAnimatedListPropertyTearOff
https://bugs.webkit.org/show_bug.cgi?id=172545

Reviewed by Said Abou-Hallawa.

SVGAnimatedListPropertyTearOff maintains a vector m_wrappers with references to
SVGPropertyTraits<PropertyType>::ListItemTearOff. Apart from that SVGPropertyTearOff has a
reference to SVGAnimatedProperty.

When SVGListProperty::getItemValuesAndWrappers() is called, it creates a
SVGPropertyTraits<PropertyType>::ListItemTearOff pointing to the same SVGAnimatedProperty (a
SVGAnimatedListPropertyTearOff) which stores the m_wrappers vector where the ListItemTearOff
is going to be added to. This effectively creates a reference cycle between the
SVGAnimatedListPropertyTearOff and all the ListItemTearOff it stores in m_wrappers.

We should detach those wrappers in propertyWillBeDeleted() in order to break the cycle.

  • svg/properties/SVGAnimatedListPropertyTearOff.h:
12:49 AM Changeset in webkit [219324] by zandobersek@gmail.com
  • 2 edits in trunk/LayoutTests

Unreviewed WPE gardening.

  • platform/wpe/TestExpectations:

Enable EMEv3 tests under media/encrypted-media/, all of them passing.

Jul 10, 2017:

9:08 PM Changeset in webkit [219323] by Brent Fulgham
  • 5 edits in trunk

Resource Load Statistics: Prune statistics in orders of importance
https://bugs.webkit.org/show_bug.cgi?id=174215
<rdar://problem/33164403>

Unreviewed test correction.

Source/WebKit2:

  • UIProcess/WebResourceLoadStatisticsStore.cpp:

(WebKit::pruneResources): The revised algorithm did not update the remaining
count to be pruned, causing a test failure.

LayoutTests:

Drive-by fix after recent refactoring to correct the new function names in TestRunner.

  • http/tests/loading/resourceLoadStatistics/partitioned-and-unpartitioned-cookie-deletion.html:
  • http/tests/loading/resourceLoadStatistics/partitioned-cookies-with-and-without-user-interaction.html:
8:46 PM Changeset in webkit [219322] by rniwa@webkit.org
  • 2 edits in trunk/Websites/perf.webkit.org

Address Antti's review comment.

  • public/v3/models/analysis-results.js:

(AnalysisResults.prototype.containsTest):

8:45 PM Changeset in webkit [219321] by rniwa@webkit.org
  • 4 edits in trunk/Websites/perf.webkit.org

A/B testing results page show results for the top-level tests instead of the one being analyzed
https://bugs.webkit.org/show_bug.cgi?id=174304

Reviewed by Antti Koivisto.

When a specific subtest is analyzed (e.g. Images subtest of MotionMark), then TestGroupResultsViewer
should expand and highlight that specific subtest instead of simply showing the top-level test's score.
This is especially misleading since AnalysisResultsViewer (stacking bars for each test group) uses
the score of the specific subtest being analyzed.

Fixed the bug by passing in the metric associated with the analysis task from AnalysisTaskPage to
TestGroupResultsViewer via AnalysisTaskTestGroupPane. Also made TestGroupResultsViewer.setAnalysisResults
auto-expand the tests that are ancestors of the specified metric. Without that, the test won't be shown
to the user until the ancestor tests are expanded by the user.

Also fixed the bug that we were always listing sub-tests regardless of whether they have results or not.
Since tests tend to change over time, we shouldn't show a test if it doesn't have any results associated.

  • public/v3/components/test-group-results-viewer.js:

(TestGroupResultsViewer.prototype.setAnalysisResults): Expand the ancestor tests of the metric.
(TestGroupResultsViewer.prototype._buildRowsForTest): Exit early if this test doesn't have any results.

  • public/v3/models/analysis-results.js:

(AnalysisResults.prototype.containsTest): Added.

  • public/v3/pages/analysis-task-page.js:

(AnalysisTaskTestGroupPane.prototype.setAnalysisResults): Takes a metric to pass it to the results viewer.
(AnalysisTaskPage.prototype._assignTestResultsIfPossible):

8:40 PM Changeset in webkit [219320] by Simon Fraser
  • 6 edits
    2 adds in trunk

[WK2 iOS] REGRESSION (r216803) During momentum scroll, getBoundingClientRect returns wrong coordinates (missing images on pinterest, elle.com and many other sites)
https://bugs.webkit.org/show_bug.cgi?id=174286
rdar://problem/32864180

Reviewed by Dean Jackson.

Source/WebCore:

r216803 made getBoundingClientRects relative to the layout viewport, but when scrolling we
only update that on stable viewport updates (at the end of the scroll). This meant that during
unstable updates, getBoundingClientRects() used a "frozen" viewport origin so things on-screen
would appear to be off-screen, causing sites to fail to dynamically load images etc. when
scrolling.

Fix by pushing an optional "unstable" layout viewport rect onto FrameView, which gets used by
FrameView::documentToClientOffset(). This is cleared when we do a stable update.

This is a short-term solution. Longer term, I would prefer to always call setLayoutViewportOverrideRect(),
but fix the scrolling tree logic to work correctly in this case.

Add a bit more scrolling logging.

Test: fast/visual-viewport/ios/get-bounding-client-rect-unstable.html

  • page/FrameView.cpp:

(WebCore::FrameView::setUnstableLayoutViewportRect):
(WebCore::FrameView::documentToClientOffset):

  • page/FrameView.h:
  • page/scrolling/AsyncScrollingCoordinator.cpp:

(WebCore::AsyncScrollingCoordinator::reconcileScrollingState):

  • page/scrolling/ScrollingStateFixedNode.cpp:

(WebCore::ScrollingStateFixedNode::updateConstraints):
(WebCore::ScrollingStateFixedNode::reconcileLayerPositionForViewportRect):

LayoutTests:

  • fast/visual-viewport/ios/get-bounding-client-rect-unstable-expected.txt: Added.
  • fast/visual-viewport/ios/get-bounding-client-rect-unstable.html: Added.
7:52 PM Changeset in webkit [219319] by Brent Fulgham
  • 20 edits
    2 adds in trunk

Resource Load Statistics: Prune statistics in orders of importance
https://bugs.webkit.org/show_bug.cgi?id=174215
<rdar://problem/33164403>

Patch by John Wilander <wilander@apple.com> on 2017-07-10
Reviewed by Chris Dumez.

Source/WebCore:

Test: http/tests/loading/resourceLoadStatistics/prune-statistics.html

  • loader/ResourceLoadObserver.cpp:

(WebCore::reduceTimeResolution):
(WebCore::ResourceLoadObserver::logFrameNavigation):
(WebCore::ResourceLoadObserver::logSubresourceLoading):
(WebCore::ResourceLoadObserver::logWebSocketLoading):
(WebCore::ResourceLoadObserver::logUserInteractionWithReducedTimeResolution):

Now all set the new statistics field lastSeen.

  • loader/ResourceLoadStatistics.cpp:

(WebCore::ResourceLoadStatistics::encode):
(WebCore::ResourceLoadStatistics::decode):
(WebCore::ResourceLoadStatistics::toString):
(WebCore::ResourceLoadStatistics::merge):

Handling of the new statistics field lastSeen.

  • loader/ResourceLoadStatistics.h:

Source/WebKit2:

New functionality. Prunes statistics in this order:

  1. Non-prevalent resources without user interaction.
  2. Prevalent resources without user interaction.
  3. Non-prevalent resources with user interaction.
  4. Prevalent resources with user interaction.
  • Shared/WebCoreArgumentCoders.cpp:

(IPC::ArgumentCoder<ResourceLoadStatistics>::encode):
(IPC::ArgumentCoder<ResourceLoadStatistics>::decode):

Added timestamp field lastSeen.

  • UIProcess/API/Cocoa/WKWebsiteDataStore.mm:

(-[WKWebsiteDataStore _resourceLoadStatisticsSetLastSeen:forHost:]):
(-[WKWebsiteDataStore _resourceLoadStatisticsSetMaxStatisticsEntries:]):
(-[WKWebsiteDataStore _resourceLoadStatisticsSetPruneEntriesDownTo:]):
(-[WKWebsiteDataStore _resourceLoadStatisticsResetToConsistentState]):

Test infrastructure.

  • UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
  • UIProcess/Storage/ResourceLoadStatisticsStore.cpp:

(WebKit::ResourceLoadStatisticsStore::setMaxStatisticsEntries):

Test infrastructure.

(WebKit::ResourceLoadStatisticsStore::setPruneEntriesDownTo):

Test infrastructure.

(WebKit::sortAndPrune):

Convenience function.

(WebKit::ResourceLoadStatisticsStore::pruneStatisticsIfNeeded):

The new pruning function.

  • UIProcess/Storage/ResourceLoadStatisticsStore.h:
  • UIProcess/WebResourceLoadStatisticsStore.cpp:

(WebKit::WebResourceLoadStatisticsStore::processStatisticsAndDataRecords):

Now calls ResourceLoadStatisticsStore::pruneStatisticsIfNeeded().

(WebKit::WebResourceLoadStatisticsStore::setLastSeen):

Test infrastructure.

(WebKit::WebResourceLoadStatisticsStore::setMaxStatisticsEntries):

Test infrastructure.

(WebKit::WebResourceLoadStatisticsStore::setPruneEntriesDownTo):

Test infrastructure.

  • UIProcess/WebResourceLoadStatisticsStore.h:

Tools:

Nest infrastructure. Adds these functions:

  1. testRunner.setStatisticsLastSeen()
  2. setStatisticsMaxStatisticsEntries()
  3. setStatisticsPruneEntriesDownTo()
  • WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
  • WebKitTestRunner/InjectedBundle/TestRunner.cpp:

(WTR::TestRunner::setStatisticsLastSeen):
(WTR::TestRunner::setStatisticsMaxStatisticsEntries):
(WTR::TestRunner::setStatisticsPruneEntriesDownTo):

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

(WTR::TestController::setStatisticsLastSeen):
(WTR::TestController::setMaxStatisticsEntries):
(WTR::TestController::setPruneEntriesDownTo):

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

(WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle):

  • WebKitTestRunner/cocoa/TestControllerCocoa.mm:

(WTR::TestController::setStatisticsLastSeen):
(WTR::TestController::setStatisticsMaxStatisticsEntries):
(WTR::TestController::setStatisticsPruneEntriesDownTo):

LayoutTests:

  • http/tests/loading/resourceLoadStatistics/prune-statistics-expected.txt: Added.
  • http/tests/loading/resourceLoadStatistics/prune-statistics.html: Added.
  • platform/wk2/TestExpectations:

Added http/tests/loading/resourceLoadStatistics/prune-statistics.html as
[ Pass ] since Resource Load Statistics is WK2-only.

7:39 PM Changeset in webkit [219318] by dino@apple.com
  • 2 edits in trunk/Source/WebKit2

const() experimental feature should always be on by default
https://bugs.webkit.org/show_bug.cgi?id=174341
<rdar://problem/33228603>

Reviewed by Simon Fraser.

Even though this is experimental, it should be enabled by default, and
not follow the value of DEFAULT_EXPERIMENTAL_FEATURES_ENABLED.

  • Shared/WebPreferencesDefinitions.h:
5:29 PM Changeset in webkit [219317] by sbarati@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Allocation sinking phase should consider a CheckStructure that would fail as an escape
https://bugs.webkit.org/show_bug.cgi?id=174321
<rdar://problem/32604963>

Reviewed by Filip Pizlo.

When the allocation sinking phase was generating stores to materialize
objects in a cycle with each other, it would assume that each materialized
object had a valid, non empty, set of structures. This is an OK assumption for
the phase to make because how do you materialize an object with no structure?

The abstract interpretation part of the phase will model what's in the heap.
However, it would sometimes model that a CheckStructure would fail. The phase
did nothing special for this; it just stored the empty set of structures for
its representation of a particular allocation. However, what the phase proved
in such a scenario is that, had the CheckStructure executed, it would have exited.

This patch treats such CheckStructures and MultiGetByOffsets as escape points.
This will cause the allocation in question to be materialized just before
the CheckStructure, and then at execution time, the CheckStructure will exit.

I wasn't able to write a test case for this. However, I was able to reproduce
this crash by manually editing the IR. I've opened a separate bug to help us
create a testing framework for writing tests for hard to reproduce bugs like this:
https://bugs.webkit.org/show_bug.cgi?id=174322

  • dfg/DFGObjectAllocationSinkingPhase.cpp:
5:01 PM Changeset in webkit [219316] by Devin Rousso
  • 9 edits
    2 adds in trunk

Web Inspector: Highlight matching CSS canvas clients when hovering contexts in the Resources tab
https://bugs.webkit.org/show_bug.cgi?id=174279

Reviewed by Matt Baker.

Source/JavaScriptCore:

  • inspector/protocol/DOM.json:

Add highlightNodeList command that will highlight each node in the given list.

Source/WebCore:

Test: inspector/dom/highlightNodeList.html

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

(WebCore::InspectorDOMAgent::highlightNodeList):

Source/WebInspectorUI:

  • UserInterface/Controllers/DOMTreeManager.js:

(WebInspector.DOMTreeManager.prototype.highlightDOMNodeList):
(WebInspector.DOMTreeManager.prototype.highlightSelector):

  • UserInterface/Views/CanvasTreeElement.js:

(WebInspector.CanvasTreeElement.prototype._handleMouseOver):

LayoutTests:

  • inspector/dom/highlightNodeList-expected.html: Added.
  • inspector/dom/highlightNodeList.html: Added.
4:56 PM Changeset in webkit [219315] by jfernandez@igalia.com
  • 31 edits in trunk

[css-align][css-flex][css-grid] 'auto' values of align-self and justify-self must not be resolved
https://bugs.webkit.org/show_bug.cgi?id=172707

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

This change makes all the cases of the test below to pass now, hence updated expectations accordingly.

  • web-platform-tests/css/css-align-3/self-alignment/place-self-shorthand-006-expected.txt:

Source/WebCore:

The CSS Box Alignment specification has been changed recently so that
now all the propeties have the specificed value as computed value. The
rationale of this change are at the associated W3C github issue [1].

This change implies that we don't need to execute the StyleAdjuter
logic we implemented specifically for supporting 'auto' values
resolution for computed style. We can live now with resolution at
layout time only.

[1] https://github.com/w3c/csswg-drafts/issues/440

No new tests, just updating the already defined tests.

  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::ComputedStyleExtractor::propertyValue):

  • css/StyleResolver.cpp:

(WebCore::StyleResolver::adjustRenderStyle): Removed

  • css/StyleResolver.h:
  • html/shadow/TextControlInnerElements.cpp:

(WebCore::TextControlInnerElement::resolveCustomStyle):

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::columnFlexItemHasStretchAlignment):
(WebCore::RenderBox::hasStretchedLogicalWidth):

  • rendering/RenderFlexibleBox.cpp:

(WebCore::RenderFlexibleBox::styleDidChange): Added
(WebCore::RenderFlexibleBox::alignmentForChild):

  • rendering/RenderFlexibleBox.h:

LayoutTests:

Updated layout tests so that resolved value is as specified, even for 'auto' values.

  • TestExpectations:
  • css3/flexbox/css-properties-expected.txt:
  • css3/flexbox/css-properties.html:
  • css3/flexbox/new-alignment-values-invalid-if-grid-not-enabled-expected.txt:
  • css3/flexbox/new-alignment-values-invalid-if-grid-not-enabled.html:
  • css3/parse-align-self.html:
  • css3/parse-alignment-of-root-elements-expected.txt:
  • css3/parse-alignment-of-root-elements.html:
  • css3/parse-place-items.html:
  • css3/parse-place-self.html:
  • fast/css/ensure-flexbox-compatibility-with-initial-values-expected.txt:
  • fast/css/parse-justify-self.html:
4:28 PM Changeset in webkit [219314] by Chris Dumez
  • 2 edits in trunk/Source/WebKit2

[iOS] _didCommitLayerTree should avoid calling [scrollView setZoomScale] unnecessarily
https://bugs.webkit.org/show_bug.cgi?id=174326
<rdar://problem/33150490>

Reviewed by Simon Fraser.

Only call [scrollView setZoomScale] if the new zoom scale is actually different to
avoid doing unnecessary work in UIKit.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _didCommitLayerTree:]):

4:25 PM Changeset in webkit [219313] by mmaxfield@apple.com
  • 2 edits in trunk/LayoutTests

fast/text/trak-optimizeLegibility.html is failing on macOS High Sierra
https://bugs.webkit.org/show_bug.cgi?id=174325
<rdar://problem/33190322>

Reviewed by Zalan Bujtas.

The name of the font changed.

  • fast/text/trak-optimizeLegibility.html:
4:00 PM Changeset in webkit [219312] by Chris Dumez
  • 9 edits
    2 deletes in trunk/Source/WebKit2

Merge ResourceLoadStatisticsStore into WebResourceLoadStatisticsStore
https://bugs.webkit.org/show_bug.cgi?id=174203

Reviewed by Brent Fulgham.

Merge ResourceLoadStatisticsStore into WebResourceLoadStatisticsStore. The 2 classes
have a similar purpose and there is no clean separation between the 2. It makes more
sense to have a single store class for resource load statistics.

If we want to simplify the WebResourceLoadStatisticsStore class, I think it'd make
more sense to split the file system I/O code out. This code adds quite a bit of
complexity.

  • CMakeLists.txt:
  • UIProcess/API/Cocoa/WKWebsiteDataStore.mm:

(-[WKWebsiteDataStore _resourceLoadStatisticsUpdateCookiePartitioning]):
(-[WKWebsiteDataStore _resourceLoadStatisticsSetShouldPartitionCookies:forHost:]):
(-[WKWebsiteDataStore _resourceLoadStatisticsClearInMemoryAndPersistentStore]):
(-[WKWebsiteDataStore _resourceLoadStatisticsClearInMemoryAndPersistentStoreModifiedSinceHours:]):
(-[WKWebsiteDataStore _resourceLoadStatisticsResetToConsistentState]):

  • UIProcess/Storage/ResourceLoadStatisticsStore.cpp: Removed.
  • UIProcess/Storage/ResourceLoadStatisticsStore.h: Removed.
  • UIProcess/WebResourceLoadStatisticsStore.cpp:

(WebKit::WebResourceLoadStatisticsStore::WebResourceLoadStatisticsStore):
(WebKit::WebResourceLoadStatisticsStore::removeDataRecords):
(WebKit::WebResourceLoadStatisticsStore::processStatisticsAndDataRecords):
(WebKit::WebResourceLoadStatisticsStore::resourceLoadStatisticsUpdated):
(WebKit::WebResourceLoadStatisticsStore::grandfatherExistingWebsiteData):
(WebKit::WebResourceLoadStatisticsStore::readDataFromDiskIfNeeded):
(WebKit::WebResourceLoadStatisticsStore::refreshFromDisk):
(WebKit::WebResourceLoadStatisticsStore::writeStoreToDisk):
(WebKit::WebResourceLoadStatisticsStore::startMonitoringStatisticsStorage):
(WebKit::WebResourceLoadStatisticsStore::performDailyTasks):
(WebKit::WebResourceLoadStatisticsStore::submitTelemetry):
(WebKit::WebResourceLoadStatisticsStore::logUserInteraction):
(WebKit::WebResourceLoadStatisticsStore::clearUserInteraction):
(WebKit::WebResourceLoadStatisticsStore::hasHadUserInteraction):
(WebKit::WebResourceLoadStatisticsStore::setPrevalentResource):
(WebKit::WebResourceLoadStatisticsStore::isPrevalentResource):
(WebKit::WebResourceLoadStatisticsStore::clearPrevalentResource):
(WebKit::WebResourceLoadStatisticsStore::setGrandfathered):
(WebKit::WebResourceLoadStatisticsStore::isGrandfathered):
(WebKit::WebResourceLoadStatisticsStore::setSubframeUnderTopFrameOrigin):
(WebKit::WebResourceLoadStatisticsStore::setSubresourceUnderTopFrameOrigin):
(WebKit::WebResourceLoadStatisticsStore::setSubresourceUniqueRedirectTo):
(WebKit::WebResourceLoadStatisticsStore::scheduleCookiePartitioningUpdate):
(WebKit::WebResourceLoadStatisticsStore::scheduleCookiePartitioningUpdateForDomains):
(WebKit::WebResourceLoadStatisticsStore::scheduleClearInMemory):
(WebKit::WebResourceLoadStatisticsStore::scheduleClearInMemoryAndPersistent):
(WebKit::WebResourceLoadStatisticsStore::setTimeToLiveUserInteraction):
(WebKit::WebResourceLoadStatisticsStore::setTimeToLiveCookiePartitionFree):
(WebKit::WebResourceLoadStatisticsStore::setGrandfatheringTime):
(WebKit::WebResourceLoadStatisticsStore::ensureResourceStatisticsForPrimaryDomain):
(WebKit::WebResourceLoadStatisticsStore::createEncoderFromData):
(WebKit::WebResourceLoadStatisticsStore::populateFromDecoder):
(WebKit::WebResourceLoadStatisticsStore::clearInMemory):
(WebKit::WebResourceLoadStatisticsStore::mergeStatistics):
(WebKit::WebResourceLoadStatisticsStore::shouldPartitionCookies):
(WebKit::WebResourceLoadStatisticsStore::updateCookiePartitioning):
(WebKit::WebResourceLoadStatisticsStore::updateCookiePartitioningForDomains):
(WebKit::WebResourceLoadStatisticsStore::processStatistics):
(WebKit::WebResourceLoadStatisticsStore::hasHadUnexpiredRecentUserInteraction):
(WebKit::WebResourceLoadStatisticsStore::topPrivatelyControlledDomainsToRemoveWebsiteDataFor):
(WebKit::WebResourceLoadStatisticsStore::includeTodayAsOperatingDateIfNecessary):
(WebKit::WebResourceLoadStatisticsStore::hasStatisticsExpired):

  • UIProcess/WebResourceLoadStatisticsStore.h:
  • UIProcess/WebResourceLoadStatisticsTelemetry.cpp:

(WebKit::sortedPrevalentResourceTelemetry):
(WebKit::WebResourceLoadStatisticsTelemetry::calculateAndSubmit):

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

(WebKit::WebsiteDataStore::removeData):

  • WebKit2.xcodeproj/project.pbxproj:
4:00 PM Changeset in webkit [219311] by commit-queue@webkit.org
  • 6 edits in trunk/LayoutTests

Update webrtc expectations
https://bugs.webkit.org/show_bug.cgi?id=174318

Unreviewed.

Updated expectation according flakiness dashboard information.

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

  • TestExpectations:
  • platform/ios-wk2/TestExpectations:
  • platform/mac-wk1/TestExpectations:
  • platform/mac-wk2/TestExpectations:
  • platform/wk2/TestExpectations:
3:08 PM Changeset in webkit [219310] by Wenson Hsieh
  • 19 edits
    6 adds in trunk

[WK2] Ignore touch events that interrupt platform-driven momentum scrolling
https://bugs.webkit.org/show_bug.cgi?id=174300
<rdar://problem/33030639>

Reviewed by Simon Fraser.

Source/WebCore:

See Source/WebKit2/ChangeLog for more detail.

Tests: fast/events/ios/no-touch-events-when-stopping-momentum-scroll-in-mainframe.html

fast/events/ios/no-touch-events-when-stopping-momentum-scroll-in-overflow.html
fast/events/ios/touch-events-during-scroll-deceleration-in-overflow.html

  • page/scrolling/ScrollingTree.h:

(WebCore::ScrollingTree::scrollingTreeNodeDidEndPanGesture):

Source/WebKit2:

Adds support for immediately failing WKContentView's UIWebTouchEventsGestureRecognizer if any touch interrupts
scroll view deceleration. Covered by 3 new LayoutTests (see Source/WebCore/ChangeLog).

  • Platform/spi/ios/UIKitSPI.h:
  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView scrollViewDidEndDragging:willDecelerate:]):
(-[WKWebView scrollViewDidEndZooming:withView:atScale:]):

  • UIProcess/PageClient.h:
  • UIProcess/Scrolling/RemoteScrollingCoordinatorProxy.h:
  • UIProcess/Scrolling/RemoteScrollingTree.cpp:

(WebKit::RemoteScrollingTree::scrollingTreeNodeDidEndPanGesture):

  • UIProcess/Scrolling/RemoteScrollingTree.h:
  • UIProcess/Scrolling/ios/ScrollingTreeOverflowScrollingNodeIOS.h:
  • UIProcess/Scrolling/ios/ScrollingTreeOverflowScrollingNodeIOS.mm:

(-[WKOverflowScrollViewDelegate scrollViewDidEndDragging:willDecelerate:]):
(WebKit::ScrollingTreeOverflowScrollingNodeIOS::overflowScrollViewDidEndPanGesture):

Adds plumbing in the UI process to alert the WKContentView when scroll view dragging has ended in an overflow
momentum scrolling region (tracked by an overflow scrolling tree node). This parallels UI process plumbing for
ScrollingTreeOverflowScrollingNodeIOS::overflowScrollViewWillStartPanGesture.

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

(WebKit::PageClientImpl::overflowScrollViewDidEndPanGesture):

  • UIProcess/ios/RemoteScrollingCoordinatorProxyIOS.mm:

(WebKit::RemoteScrollingCoordinatorProxy::scrollingTreeNodeDidEndPanGesture):

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

(-[WKContentView scrollViewDidEndPanOrPinchGesture]):

When the dragging phase of a scroll gesture ends, ensure that _canSendTouchEventsAsynchronously is reset to NO.
When touches are not being prevented, this flag is set to YES in -scrollViewWillStartPanOrPinchGesture: and
normally reset to NO in -_webTouchEventsRecognized: after all touch points have been released. However, in the
case where we've prematurely failed the web touch events gesture recognizer after -touchesBegan:,
-_webTouchEventsRecognized: will not be called again in a state where all touches have been released. Thus, we
also need to bookend the place where we begin allowing async touch event dispatch in
-scrollViewWillStartPanOrPinchGesture by disallowing async touch event dispatch in
-scrollViewDidEndPanOrPinchGesture.

This has no impact in the normal case where the user scrolls without momentum, since
-scrollViewDidEndPanOrPinchGesture will fire after async touch events have already been disallowed in
-_webTouchEventsRecognized:, and in the case where the page prevents default on touches, scrolling doesn't
happen anyways, so neither scrollViewWillStartPanOrPinchGesture nor scrollViewDidEndPanOrPinchGesture will be
invoked.

(-[WKContentView gestureRecognizer:shouldIgnoreWebTouchWithEvent:]):

Implements a new SPI hook in UIKit. This serves an identical purpose as -shouldIgnoreWebTouch, but additionally
passes the triggering UIEvent, as well as the gesture recognizer itself (following standard convention for
Objective C delegate methods). Here, we return YES in the case where one or more of the touches recognized by
the gesture is currently interrupting scroll deceleration.

  • UIProcess/ios/WebPageProxyIOS.mm:

(WebKit::WebPageProxy::overflowScrollViewDidEndPanGesture):

LayoutTests:

Adds 3 new LayoutTests covering cases of touch event handling during scroll deceleration in mainframe and
overflow scrolling containers. See Source/WebKit2/ChangeLog for more detail.

  • fast/events/ios/no-touch-events-when-stopping-momentum-scroll-in-mainframe-expected.txt: Added.
  • fast/events/ios/no-touch-events-when-stopping-momentum-scroll-in-mainframe.html: Added.
  • fast/events/ios/no-touch-events-when-stopping-momentum-scroll-in-overflow-expected.txt: Added.
  • fast/events/ios/no-touch-events-when-stopping-momentum-scroll-in-overflow.html: Added.
  • fast/events/ios/touch-events-during-scroll-deceleration-in-overflow-expected.txt: Added.
  • fast/events/ios/touch-events-during-scroll-deceleration-in-overflow.html: Added.
2:31 PM Changeset in webkit [219309] by Matt Lewis
  • 2 edits in trunk/LayoutTests

Marked animations/resume-after-page-cache.html as flaky.
https://bugs.webkit.org/show_bug.cgi?id=174183

Unreviewed test gardening.

  • platform/ios-simulator-wk2/TestExpectations:
2:16 PM Changeset in webkit [219308] by Brent Fulgham
  • 2 edits in trunk/Source/WebKit2

[WK2][macOS] Allow access to com.apple.cfnetwork.cfnetworkagent in the Network Process
https://bugs.webkit.org/show_bug.cgi?id=174320
<rdar://problem/33191856>

Reviewed by Geoffrey Garen.

  • NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in:
1:58 PM Changeset in webkit [219307] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Captions and subtitles not showing up in picture-in-picture for MSE content
https://bugs.webkit.org/show_bug.cgi?id=174317
rdar://problem/33188591

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

Reverts a regression created by r218403.

  • html/shadow/MediaControlElements.cpp:

(WebCore::MediaControlTextTrackContainerElement::updateTextTrackRepresentation):

1:09 PM Changeset in webkit [219306] by pvollan@apple.com
  • 6 edits in trunk/Source

[Win] Link error when building WTF from WTF.proj project file.
https://bugs.webkit.org/show_bug.cgi?id=174316
<rdar://problem/33178200>

Reviewed by Brent Fulgham.

WTF_CPU_X86 cmake variable needs to be set for link libraries directories to be correct.

Source/WebCore:

  • WebCore.vcxproj/WebCore.proj:

Source/WebKit:

  • WebKit.vcxproj/WebKit.proj:

Source/WTF:

  • WTF.vcxproj/WTF.proj:
12:49 PM Changeset in webkit [219305] by commit-queue@webkit.org
  • 3 edits
    1 add in trunk

media element handle adding source immediately before src.
https://bugs.webkit.org/show_bug.cgi?id=174284
rdar://problem/33115439

Patch by Jeremy Jones <jeremyj@apple.com> on 2017-07-10
Reviewed by David Kilzer.

Source/WebCore:

Test: media/video-source-before-src.html

Adding a source causes a selectMediaResource block to be enqueued.
If dataLoadingPermitted prevents creating the m_player but sets the srcAttr, then
the enqueued selectMediaResource will be in a bad state, with a srcAttr but no m_player.

This fix prevents selectMediaResource from being called, if data loading is not permitted
when adding a source element, to match how it prevents player creation when setting srcAttr.

This fix also adds a debug assert to catch the problem earlier and adds an early return to
prevent the crash in release builds.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::selectMediaResource):
(WebCore::HTMLMediaElement::sourceWasAdded):

LayoutTests:

  • media/video-source-before-src.html: Added.
12:46 PM Changeset in webkit [219304] by Megan Gardner
  • 13 edits in trunk/Source

Add location to NavigationActionData
https://bugs.webkit.org/show_bug.cgi?id=174233
<rdar://problem/29165518>

Reviewed by Simon Fraser.

Add the root view location of a tap to a NavigationAction to vend to Safari.

Source/WebCore:

Test: small enough change to not be tested alone.

  • dom/MouseRelatedEvent.cpp:

(WebCore::MouseRelatedEvent::absoluteLocationConvertedToRootView):

  • dom/MouseRelatedEvent.h:

Source/WebKit2:

  • Shared/NavigationActionData.cpp:

(WebKit::NavigationActionData::encode):
(WebKit::NavigationActionData::decode):

  • Shared/NavigationActionData.h:
  • UIProcess/API/APINavigationAction.h:
  • UIProcess/API/Cocoa/WKNavigationAction.mm:

(-[WKNavigationAction description]):
(-[WKNavigationAction _clickLocationInRootViewCoordinates]):

  • UIProcess/API/Cocoa/WKNavigationActionPrivate.h:
  • WebProcess/InjectedBundle/InjectedBundleNavigationAction.cpp:

(WebKit::clickLocationInRootViewCoordinatesForMouseEvent):
(WebKit::InjectedBundleNavigationAction::clickLocationInRootViewCoordinatesForNavigationAction):
(WebKit::InjectedBundleNavigationAction::InjectedBundleNavigationAction):

  • WebProcess/InjectedBundle/InjectedBundleNavigationAction.h:

(WebKit::InjectedBundleNavigationAction::clickLocationInRootViewCoordinates):

  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::createWindow):

  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:

(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNewWindowAction):
(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):

12:04 PM Changeset in webkit [219303] by Matt Lewis
  • 2 edits in trunk/LayoutTests

Fixed test expectations for http/tests/loading/resourceLoadStatistics/user-interaction-in-cross-origin-sub-frame.html.
https://bugs.webkit.org/show_bug.cgi?id=174120

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
11:27 AM Changeset in webkit [219302] by commit-queue@webkit.org
  • 20 edits
    1 copy
    2 adds
    3 deletes in trunk/Source/WebCore

[WebIDL] Move plugin object customization into the generator
https://bugs.webkit.org/show_bug.cgi?id=174238

Patch by Sam Weinig <sam@webkit.org> on 2017-07-10
Reviewed by Chris Dumez.

  • Added [Plugin] extended attribute to forward the necessary hooks for get/set/delete to the plugin code.
  • Removed [CustomNamedSetter] and replaced it's remaining uses [CustomPut] (formally called [CustomPutFunction]).
  • Renamed [CustomNamedGetterOnPrototype] to [CustomPutOnPrototype] because that is actually what it does.
  • Removed [CustomGetOwnPropertySlotByIndex] and made [CustomGetOwnPropertySlot] imply it, as the other custom hooks do.
  • Renamed [CustomEnumerateProperty] to [CustomGetOwnPropertyNames] to conform with other attribute names.
  • Renamed [CustomCall] to [CustomGetCallData] to conform with other attribute names.
  • CMakeLists.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/JSBindingsAllInOne.cpp:
  • bindings/js/JSHTMLAppletElementCustom.cpp: Removed.
  • bindings/js/JSHTMLEmbedElementCustom.cpp: Removed.
  • bindings/js/JSHTMLObjectElementCustom.cpp: Removed.

Remove custom bindings.

  • bindings/js/JSCSSStyleDeclarationCustom.cpp:

(WebCore::putCommon):
(WebCore::JSCSSStyleDeclaration::put):
(WebCore::JSCSSStyleDeclaration::putByIndex):
(WebCore::JSCSSStyleDeclaration::putDelegate): Deleted.
Use [CustomPut] rather than [CustomNamedSetter] to allow us
to get rid of [CustomNamedSetter]. Reuse put delegate as
common code to share between put and putByIndex.

  • bindings/js/JSLocationCustom.cpp:

(WebCore::getOwnPropertySlotCommon):
(WebCore::JSLocation::getOwnPropertySlot):
(WebCore::JSLocation::getOwnPropertySlotByIndex):
Replace [CustomGetOwnPropertySlotAndDescriptor] with [CustomGetOwnPropertySlot]
which is more clear and reduces the number of variants of this hook override
we need.

(WebCore::putCommon):
(WebCore::JSLocation::put):
(WebCore::JSLocation::putByIndex):
Use [CustomPut] rather than [CustomNamedSetter] to allow us
to get rid of [CustomNamedSetter]. Reuse put delegate as
common code to share between put and putByIndex.

(WebCore::JSLocationPrototype::put):
[CustomPutOnPrototype] (which weirdly used incorrectly be called
[CustomNamedGetterOnPrototype]) now works like [CustomPut] meaning
you need to call Base.

  • bindings/js/JSPluginElementFunctions.cpp:

(WebCore::pluginElementPropertyGetter):
(WebCore::pluginElementCustomGetOwnPropertySlot):
(WebCore::pluginElementCustomPut):

  • bindings/js/JSPluginElementFunctions.h:

(WebCore::pluginElementCustomGetOwnPropertySlot): Deleted.
Remove templatized pluginElementCustomGetOwnPropertySlot, which was
completely unnecessary and merge its functionality into the out of
line overload. Remove pluginElementPropertyGetter from the header,
since it is only used in implementation, and unify the naming and
argument position (JSHTMLElement* comes first) of the hooks.

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateIndexedGetter):
(GenerateNamedGetter):
(GenerateGetOwnPropertySlot):
(GenerateGetOwnPropertySlotByIndex):
(GenerateGetOwnPropertyNames):
(GeneratePut):
(GeneratePutByIndex):
(GenerateDeleteProperty):
(GenerateDeletePropertyByIndex):
(GenerateNamedDeleterDefinition):
(InstanceOverridesGetOwnPropertySlot):
(InstanceOverridesGetOwnPropertyNames):
(InstanceOverridesPut):
(InstanceOverridesDeleteProperty):
(GenerateHeader):
(GenerateImplementation):
(GenerateGetCallData):
(GeneratePluginCall):
(GenerateLegacyCallerDefinitions):
(GenerateLegacyCallerDefinition):
(GeneratePrototypeDeclaration):
(InstanceOverridesGetCallData):
(HeaderNeedsPrototypeDeclaration):

  • Add support for [Plugin]
  • Remove support for [CustomNamedSetter]
  • Replace [CustomGetOwnPropertySlotByIndex] with [CustomGetOwnPropertySlot]
  • Replace [CustomEnumerateProperty] with [CustomGetOwnPropertyNames]
  • Replace [CustomPutFunction] with [CustomPut].
  • Make subroutine names more consistent (remove a few Definition suffixes)
  • bindings/scripts/IDLAttributes.json:

Update for new / removed attributes.

  • bindings/scripts/test/JS/JSTestInterface.cpp:
  • bindings/scripts/test/JS/JSTestInterface.h:
  • bindings/scripts/test/JS/JSTestPluginInterface.cpp: Added.
  • bindings/scripts/test/JS/JSTestPluginInterface.h: Added.
  • bindings/scripts/test/TestInterface.idl:
  • bindings/scripts/test/TestPluginInterface.idl: Added.

Update / add tests.

  • css/CSSStyleDeclaration.idl:
  • html/HTMLAppletElement.idl:
  • html/HTMLEmbedElement.idl:
  • html/HTMLObjectElement.idl:
  • page/DOMWindow.idl:
  • page/Location.idl:
  • storage/Storage.idl:

Update for new / renamed attributes.

11:24 AM Changeset in webkit [219301] by BJ Burg
  • 55 edits
    52 deletes in trunk

Web Replay: remove some unused code
https://bugs.webkit.org/show_bug.cgi?id=173903

Rubber-stamped by Joseph Pecoraro.

.:

  • ManualTests/inspector/replay-keyboard-events.html: Removed.
  • ManualTests/inspector/replay-mouse-events.html: Removed.
  • ManualTests/inspector/replay-wheel-events.html: Removed.
  • ManualTests/inspector/replay-window-navigator-basic.html: Removed.
  • ManualTests/inspector/replay-window-screen.html: Removed.
  • Source/cmake/OptionsMac.cmake:
  • Source/cmake/WebKitFeatures.cmake:

Source/JavaScriptCore:

  • CMakeLists.txt:
  • Configurations/FeatureDefines.xcconfig:
  • DerivedSources.make:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • inspector/protocol/Replay.json: Removed.
  • replay/EmptyInputCursor.h: Removed.
  • replay/EncodedValue.cpp: Removed.
  • replay/EncodedValue.h: Removed.
  • replay/InputCursor.h: Removed.
  • replay/JSInputs.json: Removed.
  • replay/NondeterministicInput.h: Removed.
  • replay/scripts/CodeGeneratorReplayInputs.py: Removed.
  • replay/scripts/CodeGeneratorReplayInputsTemplates.py: Removed.
  • replay/scripts/tests/expected/fail-on-c-style-enum-no-storage.json-error: Removed.
  • replay/scripts/tests/expected/fail-on-duplicate-enum-type.json-error: Removed.
  • replay/scripts/tests/expected/fail-on-duplicate-input-names.json-error: Removed.
  • replay/scripts/tests/expected/fail-on-duplicate-type-names.json-error: Removed.
  • replay/scripts/tests/expected/fail-on-enum-type-missing-values.json-error: Removed.
  • replay/scripts/tests/expected/fail-on-missing-input-member-name.json-error: Removed.
  • replay/scripts/tests/expected/fail-on-missing-input-name.json-error: Removed.
  • replay/scripts/tests/expected/fail-on-missing-input-queue.json-error: Removed.
  • replay/scripts/tests/expected/fail-on-missing-type-mode.json-error: Removed.
  • replay/scripts/tests/expected/fail-on-missing-type-name.json-error: Removed.
  • replay/scripts/tests/expected/fail-on-unknown-input-queue.json-error: Removed.
  • replay/scripts/tests/expected/fail-on-unknown-member-type.json-error: Removed.
  • replay/scripts/tests/expected/fail-on-unknown-type-mode.json-error: Removed.
  • replay/scripts/tests/expected/generate-enum-encoding-helpers-with-guarded-values.json-TestReplayInputs.cpp: Removed.
  • replay/scripts/tests/expected/generate-enum-encoding-helpers-with-guarded-values.json-TestReplayInputs.h: Removed.
  • replay/scripts/tests/expected/generate-enum-encoding-helpers.json-TestReplayInputs.cpp: Removed.
  • replay/scripts/tests/expected/generate-enum-encoding-helpers.json-TestReplayInputs.h: Removed.
  • replay/scripts/tests/expected/generate-enum-with-guard.json-TestReplayInputs.cpp: Removed.
  • replay/scripts/tests/expected/generate-enum-with-guard.json-TestReplayInputs.h: Removed.
  • replay/scripts/tests/expected/generate-enums-with-same-base-name.json-TestReplayInputs.cpp: Removed.
  • replay/scripts/tests/expected/generate-enums-with-same-base-name.json-TestReplayInputs.h: Removed.
  • replay/scripts/tests/expected/generate-event-loop-shape-types.json-error: Removed.
  • replay/scripts/tests/expected/generate-input-with-guard.json-TestReplayInputs.cpp: Removed.
  • replay/scripts/tests/expected/generate-input-with-guard.json-TestReplayInputs.h: Removed.
  • replay/scripts/tests/expected/generate-input-with-vector-members.json-TestReplayInputs.cpp: Removed.
  • replay/scripts/tests/expected/generate-input-with-vector-members.json-TestReplayInputs.h: Removed.
  • replay/scripts/tests/expected/generate-inputs-with-flags.json-TestReplayInputs.cpp: Removed.
  • replay/scripts/tests/expected/generate-inputs-with-flags.json-TestReplayInputs.h: Removed.
  • replay/scripts/tests/expected/generate-memoized-type-modes.json-TestReplayInputs.cpp: Removed.
  • replay/scripts/tests/expected/generate-memoized-type-modes.json-TestReplayInputs.h: Removed.
  • replay/scripts/tests/fail-on-c-style-enum-no-storage.json: Removed.
  • replay/scripts/tests/fail-on-duplicate-enum-type.json: Removed.
  • replay/scripts/tests/fail-on-duplicate-input-names.json: Removed.
  • replay/scripts/tests/fail-on-duplicate-type-names.json: Removed.
  • replay/scripts/tests/fail-on-enum-type-missing-values.json: Removed.
  • replay/scripts/tests/fail-on-missing-input-member-name.json: Removed.
  • replay/scripts/tests/fail-on-missing-input-name.json: Removed.
  • replay/scripts/tests/fail-on-missing-input-queue.json: Removed.
  • replay/scripts/tests/fail-on-missing-type-mode.json: Removed.
  • replay/scripts/tests/fail-on-missing-type-name.json: Removed.
  • replay/scripts/tests/fail-on-unknown-input-queue.json: Removed.
  • replay/scripts/tests/fail-on-unknown-member-type.json: Removed.
  • replay/scripts/tests/fail-on-unknown-type-mode.json: Removed.
  • replay/scripts/tests/generate-enum-encoding-helpers-with-guarded-values.json: Removed.
  • replay/scripts/tests/generate-enum-encoding-helpers.json: Removed.
  • replay/scripts/tests/generate-enum-with-guard.json: Removed.
  • replay/scripts/tests/generate-enums-with-same-base-name.json: Removed.
  • replay/scripts/tests/generate-event-loop-shape-types.json: Removed.
  • replay/scripts/tests/generate-input-with-guard.json: Removed.
  • replay/scripts/tests/generate-input-with-vector-members.json: Removed.
  • replay/scripts/tests/generate-inputs-with-flags.json: Removed.
  • replay/scripts/tests/generate-memoized-type-modes.json: Removed.
  • runtime/DateConstructor.cpp:

(JSC::constructDate):
(JSC::dateNow):
(JSC::deterministicCurrentTime): Deleted.

  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::JSGlobalObject):
(JSC::JSGlobalObject::setInputCursor): Deleted.

  • runtime/JSGlobalObject.h:

(JSC::JSGlobalObject::inputCursor): Deleted.

Source/WebCore:

  • CMakeLists.txt:
  • Configurations/FeatureDefines.xcconfig:
  • DerivedSources.make:
  • PlatformMac.cmake:
  • WebCore.xcodeproj/project.pbxproj:
  • dom/Document.cpp:

(WebCore::Document::Document):
(WebCore::Document::lastModified):
(WebCore::Document::inputCursor): Deleted.
(WebCore::Document::setInputCursor): Deleted.

  • dom/Document.h:
  • inspector/InspectorController.cpp:

(WebCore::InspectorController::InspectorController):

  • inspector/InspectorInstrumentation.cpp:

(WebCore::InspectorInstrumentation::willDispatchEventImpl):
(WebCore::InspectorInstrumentation::willDispatchEventOnWindowImpl):
(WebCore::InspectorInstrumentation::frameDetachedFromParentImpl):
(WebCore::InspectorInstrumentation::didCommitLoadImpl):
(WebCore::InspectorInstrumentation::sessionCreatedImpl): Deleted.
(WebCore::InspectorInstrumentation::sessionLoadedImpl): Deleted.
(WebCore::InspectorInstrumentation::sessionModifiedImpl): Deleted.
(WebCore::InspectorInstrumentation::segmentCreatedImpl): Deleted.
(WebCore::InspectorInstrumentation::segmentCompletedImpl): Deleted.
(WebCore::InspectorInstrumentation::segmentLoadedImpl): Deleted.
(WebCore::InspectorInstrumentation::segmentUnloadedImpl): Deleted.
(WebCore::InspectorInstrumentation::captureStartedImpl): Deleted.
(WebCore::InspectorInstrumentation::captureStoppedImpl): Deleted.
(WebCore::InspectorInstrumentation::playbackStartedImpl): Deleted.
(WebCore::InspectorInstrumentation::playbackPausedImpl): Deleted.
(WebCore::InspectorInstrumentation::playbackHitPositionImpl): Deleted.
(WebCore::InspectorInstrumentation::playbackFinishedImpl): Deleted.
(WebCore::InspectorInstrumentation::replayAgentEnabled): Deleted.

  • inspector/InspectorInstrumentation.h:

(WebCore::InspectorInstrumentation::sessionCreated): Deleted.
(WebCore::InspectorInstrumentation::sessionLoaded): Deleted.
(WebCore::InspectorInstrumentation::sessionModified): Deleted.
(WebCore::InspectorInstrumentation::segmentCreated): Deleted.
(WebCore::InspectorInstrumentation::segmentCompleted): Deleted.
(WebCore::InspectorInstrumentation::segmentLoaded): Deleted.
(WebCore::InspectorInstrumentation::segmentUnloaded): Deleted.
(WebCore::InspectorInstrumentation::captureStarted): Deleted.
(WebCore::InspectorInstrumentation::captureStopped): Deleted.
(WebCore::InspectorInstrumentation::playbackStarted): Deleted.
(WebCore::InspectorInstrumentation::playbackPaused): Deleted.
(WebCore::InspectorInstrumentation::playbackFinished): Deleted.
(WebCore::InspectorInstrumentation::playbackHitPosition): Deleted.

  • inspector/InspectorReplayAgent.cpp: Removed.
  • inspector/InspectorReplayAgent.h: Removed.
  • inspector/InstrumentingAgents.cpp:

(WebCore::InstrumentingAgents::reset):

  • inspector/InstrumentingAgents.h:

(WebCore::InstrumentingAgents::inspectorReplayAgent): Deleted.
(WebCore::InstrumentingAgents::setInspectorReplayAgent): Deleted.

  • page/EventHandler.h:
  • page/Page.cpp:

(WebCore::Page::Page):

  • page/Page.h:

(WebCore::Page::replayController): Deleted.

  • page/scrolling/ScrollingCoordinator.cpp:

(WebCore::ScrollingCoordinator::synchronousScrollingReasons):
(WebCore::ScrollingCoordinator::replaySessionStateDidChange): Deleted.

  • page/scrolling/ScrollingCoordinator.h:
  • platform/Logging.h:
  • plugins/DOMMimeTypeArray.cpp:

(WebCore::DOMMimeTypeArray::getPluginData):

  • plugins/DOMPluginArray.cpp:

(WebCore::DOMPluginArray::pluginData):

  • replay/AllReplayInputs.h: Removed.
  • replay/CapturingInputCursor.cpp: Removed.
  • replay/CapturingInputCursor.h: Removed.
  • replay/EventLoopInput.cpp: Removed.
  • replay/EventLoopInput.h: Removed.
  • replay/EventLoopInputDispatcher.cpp: Removed.
  • replay/EventLoopInputDispatcher.h: Removed.
  • replay/FunctorInputCursor.h: Removed.
  • replay/MemoizedDOMResult.cpp: Removed.
  • replay/MemoizedDOMResult.h: Removed.
  • replay/ReplayController.cpp: Removed.
  • replay/ReplayController.h: Removed.
  • replay/ReplayInputCreationMethods.cpp: Removed.
  • replay/ReplayInputDispatchMethods.cpp: Removed.
  • replay/ReplaySession.cpp: Removed.
  • replay/ReplaySession.h: Removed.
  • replay/ReplaySessionSegment.cpp: Removed.
  • replay/ReplaySessionSegment.h: Removed.
  • replay/ReplayingInputCursor.cpp: Removed.
  • replay/ReplayingInputCursor.h: Removed.
  • replay/SegmentedInputStorage.cpp: Removed.
  • replay/SegmentedInputStorage.h: Removed.
  • replay/SerializationMethods.cpp: Removed.
  • replay/SerializationMethods.h: Removed.
  • replay/WebInputs.json: Removed.

Source/WebCore/PAL:

  • Configurations/FeatureDefines.xcconfig:

Source/WebInspectorUI:

  • .eslintrc:
  • UserInterface/Base/Main.js:

(WebInspector.loaded):

  • UserInterface/Controllers/DashboardManager.js:

(WebInspector.DashboardManager):

  • UserInterface/Controllers/ReplayManager.js: Removed.
  • UserInterface/Images/ReplayPauseButton.svg: Removed.
  • UserInterface/Images/ReplayPlayButton.svg: Removed.
  • UserInterface/Images/ReplayRecordingButton.svg: Removed.
  • UserInterface/Images/gtk/ReplayPauseButton.svg: Removed.
  • UserInterface/Images/gtk/ReplayPlayButton.svg: Removed.
  • UserInterface/Images/gtk/ReplayRecordingButton.svg: Removed.
  • UserInterface/Main.html:
  • UserInterface/Models/ReplayDashboard.js: Removed.
  • UserInterface/Models/ReplaySession.js: Removed.
  • UserInterface/Models/ReplaySessionSegment.js: Removed.
  • UserInterface/Protocol/ReplayObserver.js: Removed.
  • UserInterface/Test.html:
  • UserInterface/Test/Test.js:

(WebInspector.loaded):

  • UserInterface/Views/DashboardView.js:

(WebInspector.DashboardView.create):

  • UserInterface/Views/ReplayDashboardView.css: Removed.
  • UserInterface/Views/ReplayDashboardView.js: Removed.
  • UserInterface/Views/TimelineRecordingContentView.js:

(WebInspector.TimelineRecordingContentView.prototype._debuggerPaused):
(WebInspector.TimelineRecordingContentView.prototype._debuggerResumed):

Source/WebKit/mac:

  • Configurations/FeatureDefines.xcconfig:

Source/WebKit2:

  • Configurations/FeatureDefines.xcconfig:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::tryClose):
(WebKit::WebPage::loadRequest):
(WebKit::WebPage::stopLoadingFrame):
(WebKit::WebPage::stopLoading):
(WebKit::WebPage::reload):
(WebKit::WebPage::contextMenuAtPointInWindow):
(WebKit::handleContextMenuEvent):
(WebKit::handleMouseEvent):
(WebKit::handleWheelEvent):
(WebKit::handleKeyEvent):
(WebKit::WebPage::scroll):
(WebKit::WebPage::logicalScroll):

Source/WTF:

  • wtf/FeatureDefines.h:

Tools:

  • Scripts/run-input-generator-tests: Removed.
  • Scripts/webkitpy/replay/init.py: Removed.
  • Scripts/webkitpy/replay/main.py: Removed.

LayoutTests:

  • inspector/replay/javascript-date-now-expected.txt: Removed.
  • inspector/replay/javascript-date-now.html: Removed.
  • inspector/replay/javascript-random-seed-expected.txt: Removed.
  • inspector/replay/javascript-random-seed.html: Removed.
  • inspector/replay/window-navigator-plugins-memoized-expected.txt: Removed.
  • inspector/replay/window-navigator-plugins-memoized.html: Removed.
11:07 AM Changeset in webkit [219300] by zandobersek@gmail.com
  • 3 edits in trunk/Tools

[WPE] Fix layout test baseline and TestExpectations hierarchy
https://bugs.webkit.org/show_bug.cgi?id=174092

Reviewed by Michael Catanzaro.

Like for the GTK+ port, override the default_baseline_search_path() and
_port_specific_expectations_files() methods in the webkitpy.port.WPEPort class.
Both methods operate on a short list of search paths that defaults to 'wpe' and
'wk2', along with any other user-specified platform directory.

The test_expectations_file_position() method is overridden for testing purposes,
and relevant unit tests are added.

  • Scripts/webkitpy/port/wpe.py:

(WPEPort._search_paths):
(WPEPort):
(WPEPort.default_baseline_search_path):
(WPEPort._port_specific_expectations_files):
(WPEPort.test_expectations_file_position):

  • Scripts/webkitpy/port/wpe_unittest.py:

(WPEPortTest.test_default_baseline_search_path):
(WPEPortTest):
(WPEPortTest.test_port_specific_expectations_files):

10:52 AM Changeset in webkit [219299] by Matt Lewis
  • 2 edits in trunk/LayoutTests

Skipped http/tests/loading/resourceLoadStatistics/user-interaction-in-cross-origin-sub-frame.html.
https://bugs.webkit.org/show_bug.cgi?id=174120

Unreviewed test gardening.

  • platform/ios/TestExpectations:
10:43 AM Changeset in webkit [219298] by beidson@apple.com
  • 8 edits in trunk/Source

Cleanup lifetime issues of UniqueIDBDatabase and IDBBackingStore.
<rdar://problem/32908525> and https://bugs.webkit.org/show_bug.cgi?id=174244

Reviewed by David Kilzer and Alex Christensen.

Source/WebCore:

No targeted test possible, implicitly covered by all IDB tests.

The original idea behind UniqueIDBDatabase lifetime was that they are ThreadSafeRefCounted and
we take protector Refs when any operation that needs it alive is in flight.

This added variability to their lifetime which made it difficult to enforce a few different
design invariants, namely:

  • UniqueIBDDatabase objects are always created and destroyed only on the main thread.
  • IDBBackingStore objects are always created and destroyed only on the database thread.

This patch removes the ref counting and instead ties UniqueIDBDatabase lifetime to a
std::unique_ptr that is owned by the IDBServer.

Whenever any operations on the UniqueIDBDatabase are in flight it is kept alive by virtue
of that unique_ptr in the IDBServer. Once a UniqueIDBDatabase is completely done with all of
its work, the following happens:

  • On the main thread the IDBServer removes the unique_ptr owning the UniqueIDBDatabase from its map.
  • It hands the unique_ptr to the UniqueIDBDatabase itself, which schedules one final database thread task.
  • That database thread task is to destroy the IDBBackingStore, kill its message queues, and then message back to the main thread for one final task.
  • That main thread task is to release the unique_ptr, resulting in destruction of the UniqueIDBDatabase object.

This is safe, predictable, solves the lifetime issues that r218516 originally tried to solve,
and solves the lifetime issues that r218516 introduced.

(This patch also adds many more assertions to cover various design invariants throughout the
lifecycle of a particular UniqueIDBDatabase)

ASSERT that IDBBackingStores are only ever created and destroyed on the background thread:

  • Modules/indexeddb/server/IDBBackingStore.h:

(WebCore::IDBServer::IDBBackingStore::~IDBBackingStore):
(WebCore::IDBServer::IDBBackingStore::IDBBackingStore):

Transition UniqueIDBDatabase ownership from a RefPtr to a std::unique_ptr:

  • Modules/indexeddb/server/IDBServer.cpp:

(WebCore::IDBServer::IDBServer::getOrCreateUniqueIDBDatabase):
(WebCore::IDBServer::IDBServer::closeAndTakeUniqueIDBDatabase):
(WebCore::IDBServer::IDBServer::closeAndDeleteDatabasesModifiedSince):
(WebCore::IDBServer::IDBServer::closeAndDeleteDatabasesForOrigins):
(WebCore::IDBServer::IDBServer::closeUniqueIDBDatabase): Deleted.

  • Modules/indexeddb/server/IDBServer.h:

Make all the other changes mentioned above:

  • Modules/indexeddb/server/UniqueIDBDatabase.cpp:

(WebCore::IDBServer::UniqueIDBDatabase::~UniqueIDBDatabase): Bulk up on ASSERTs
(WebCore::IDBServer::UniqueIDBDatabase::openDatabaseConnection):
(WebCore::IDBServer::UniqueIDBDatabase::performUnconditionalDeleteBackingStore):
(WebCore::IDBServer::UniqueIDBDatabase::scheduleShutdownForClose):
(WebCore::IDBServer::UniqueIDBDatabase::shutdownForClose):
(WebCore::IDBServer::UniqueIDBDatabase::didShutdownForClose):
(WebCore::IDBServer::UniqueIDBDatabase::didDeleteBackingStore):
(WebCore::IDBServer::UniqueIDBDatabase::handleCurrentOperation):
(WebCore::IDBServer::UniqueIDBDatabase::performIterateCursor):
(WebCore::IDBServer::UniqueIDBDatabase::performPrefetchCursor):
(WebCore::IDBServer::UniqueIDBDatabase::operationAndTransactionTimerFired):
(WebCore::IDBServer::UniqueIDBDatabase::activateTransactionInBackingStore):
(WebCore::IDBServer::UniqueIDBDatabase::transactionCompleted):
(WebCore::IDBServer::UniqueIDBDatabase::postDatabaseTask):
(WebCore::IDBServer::UniqueIDBDatabase::postDatabaseTaskReply):
(WebCore::IDBServer::UniqueIDBDatabase::executeNextDatabaseTask):
(WebCore::IDBServer::UniqueIDBDatabase::executeNextDatabaseTaskReply):
(WebCore::IDBServer::UniqueIDBDatabase::maybeFinishHardClose):
(WebCore::IDBServer::UniqueIDBDatabase::isDoneWithHardClose):
(WebCore::IDBServer::UniqueIDBDatabase::immediateCloseForUserDelete):
(WebCore::IDBServer::UniqueIDBDatabase::didPerformUnconditionalDeleteBackingStore): Deleted.

  • Modules/indexeddb/server/UniqueIDBDatabase.h:

(WebCore::IDBServer::UniqueIDBDatabase::create): Deleted.

Source/WTF:

Add proper "kill" support to CrossThreadQueue, as well as isEmpty() support.

  • wtf/CrossThreadQueue.h:

(WTF::CrossThreadQueue<DataType>::append):
(WTF::CrossThreadQueue<DataType>::kill):
(WTF::CrossThreadQueue<DataType>::isKilled):
(WTF::CrossThreadQueue<DataType>::isEmpty):
(WTF::CrossThreadQueue::isKilled): Deleted.

10:09 AM Changeset in webkit [219297] by Chris Dumez
  • 26 edits in trunk

Further WebResourceLoadStatisticsStore / ResourceLoadStatisticsStore clean up
https://bugs.webkit.org/show_bug.cgi?id=174301

Reviewed by Brent Fulgham.

Source/WebCore:

Moved some generic file system utility functions down to platform's FileSystem.h.

  • platform/FileSystem.cpp:

(WebCore::openAndLockFile):
(WebCore::unlockAndCloseFile):

  • platform/FileSystem.h:

Source/WebKit2:

General clean up and various simplifications / optimizations to WebResourceLoadStatisticsStore
and ResourceLoadStatisticsStore classes.

  • UIProcess/API/Cocoa/WKWebsiteDataStore.mm:

(-[WKWebsiteDataStore _resourceLoadStatisticsUpdateCookiePartitioning]):
(-[WKWebsiteDataStore _resourceLoadStatisticsSetShouldPartitionCookies:forHost:]):

  • UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
  • UIProcess/Storage/ResourceLoadStatisticsStore.cpp:

(WebKit::ResourceLoadStatisticsStore::create):
(WebKit::ResourceLoadStatisticsStore::ResourceLoadStatisticsStore):
(WebKit::ResourceLoadStatisticsStore::hasHadRecentUserInteraction):
(WebKit::ResourceLoadStatisticsStore::createEncoderFromData):
(WebKit::ResourceLoadStatisticsStore::populateFromDecoder):
(WebKit::ResourceLoadStatisticsStore::clearInMemory):
(WebKit::ResourceLoadStatisticsStore::mergeStatistics):
(WebKit::ResourceLoadStatisticsStore::updateCookiePartitioning):
(WebKit::ResourceLoadStatisticsStore::updateCookiePartitioningForDomains):
(WebKit::ResourceLoadStatisticsStore::processStatistics):
(WebKit::ResourceLoadStatisticsStore::hasHadUnexpiredRecentUserInteraction):
(WebKit::ResourceLoadStatisticsStore::topPrivatelyControlledDomainsToRemoveWebsiteDataFor):

  • UIProcess/Storage/ResourceLoadStatisticsStore.h:
  • UIProcess/WebResourceLoadStatisticsStore.cpp:

(WebKit::WebResourceLoadStatisticsStore::WebResourceLoadStatisticsStore):
(WebKit::WebResourceLoadStatisticsStore::~WebResourceLoadStatisticsStore):
(WebKit::WebResourceLoadStatisticsStore::removeDataRecords):
(WebKit::WebResourceLoadStatisticsStore::processStatisticsAndDataRecords):
(WebKit::WebResourceLoadStatisticsStore::resourceLoadStatisticsUpdated):
(WebKit::WebResourceLoadStatisticsStore::grandfatherExistingWebsiteData):
(WebKit::WebResourceLoadStatisticsStore::readDataFromDiskIfNeeded):
(WebKit::WebResourceLoadStatisticsStore::refreshFromDisk):
(WebKit::WebResourceLoadStatisticsStore::applicationWillTerminate):
(WebKit::WebResourceLoadStatisticsStore::resourceLogFilePath):
(WebKit::WebResourceLoadStatisticsStore::writeStoreToDisk):
(WebKit::WebResourceLoadStatisticsStore::scheduleOrWriteStoreToDisk):
(WebKit::WebResourceLoadStatisticsStore::writeEncoderToDisk):
(WebKit::WebResourceLoadStatisticsStore::startMonitoringStatisticsStorage):
(WebKit::WebResourceLoadStatisticsStore::platformExcludeFromBackup):
(WebKit::WebResourceLoadStatisticsStore::createDecoderFromDisk):
(WebKit::WebResourceLoadStatisticsStore::performDailyTasks):
(WebKit::WebResourceLoadStatisticsStore::logUserInteraction):
(WebKit::WebResourceLoadStatisticsStore::hasHadUserInteraction):
(WebKit::WebResourceLoadStatisticsStore::updateCookiePartitioning):
(WebKit::WebResourceLoadStatisticsStore::updateCookiePartitioningForDomains):
(WebKit::WebResourceLoadStatisticsStore::clearInMemory):
(WebKit::WebResourceLoadStatisticsStore::clearInMemoryAndPersistent):
(WebKit::WebResourceLoadStatisticsStore::shouldRemoveDataRecords):
(WebKit::WebResourceLoadStatisticsStore::setDataRecordsBeingRemoved):

  • UIProcess/WebResourceLoadStatisticsStore.h:
  • UIProcess/WebResourceLoadStatisticsTelemetry.cpp:

(WebKit::sortedPrevalentResourceTelemetry):
(WebKit::WebResourceLoadStatisticsTelemetry::calculateAndSubmit):

  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::updateCookiePartitioningForTopPrivatelyOwnedDomains):
(WebKit::WebsiteDataStore::setResourceLoadStatisticsEnabled):

  • UIProcess/WebsiteData/WebsiteDataStore.h:

Tools:

Rename some of the testRunner API for clarity and to better match what it calls
internally.

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

(WTR::TestRunner::statisticsUpdateCookiePartitioning):
(WTR::TestRunner::statisticsSetShouldPartitionCookiesForHost):

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

(WTR::TestController::statisticsUpdateCookiePartitioning):
(WTR::TestController::statisticsSetShouldPartitionCookiesForHost):

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

(WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle):

  • WebKitTestRunner/cocoa/TestControllerCocoa.mm:

(WTR::TestController::statisticsUpdateCookiePartitioning):
(WTR::TestController::statisticsSetShouldPartitionCookiesForHost):

LayoutTests:

Update existing layout tests to reflect testRunner API changes.

  • http/tests/loading/resourceLoadStatistics/partitioned-and-unpartitioned-cookie-deletion.html:
  • http/tests/loading/resourceLoadStatistics/partitioned-and-unpartitioned-cookie-with-partitioning-timeout.html:
  • http/tests/loading/resourceLoadStatistics/partitioned-cookies-with-and-without-user-interaction.html:
10:03 AM Changeset in webkit [219296] by akling@apple.com
  • 3 edits
    2 adds in trunk

REGRESSION(r210226): Keyboard-focused element not preserved when navigating back through page cache, causing multiple elements to have focus
https://bugs.webkit.org/show_bug.cgi?id=174302
<rdar://problem/33204273>

Reviewed by Antti Koivisto.

Source/WebCore:

Don't clear the active/hovered/focused elements when destroying the render tree,
since we might need to reconstruct it later, and would like to remember which
elements those were.

Only the focused state actually stuck when going in and out of the page cache,
but this patch removes all the element pointer clearing for consistency.

Test: fast/history/page-cache-element-state-focused.html

  • dom/Document.cpp:

(WebCore::Document::destroyRenderTree):

LayoutTests:

  • fast/history/page-cache-element-state-focused-expected.html: Added.
  • fast/history/page-cache-element-state-focused.html: Added.
9:37 AM WebKitGTK/Gardening/Calendar edited by Michael Catanzaro
Yoon -> Charlie (diff)
9:23 AM Changeset in webkit [219295] by Michael Catanzaro
  • 4 edits
    2 deletes in trunk/Source/WebKit2

[SOUP] Remove WebKitSoupCookieJarSqlite
https://bugs.webkit.org/show_bug.cgi?id=174310

Reviewed by Carlos Garcia Campos.

It seems WebKitSoupCookieJarSqlite uses exactly the same database format as the upstream
SoupCookieJarDb class. WebKitSoupCookieJarSqlite is a copy of SoupCookieJarSqlite that uses
WebCore's SQLite wrapper and WTF stuff. WebKitSoupCookieJarSqlite exists only because
SoupCookieJarDb is relatively new, and the older SoupCookieJarSqlite class existed only in
libsoup-gnome rather than libsoup proper. The advantage of continuing to use our
WebKitSoupCookieJarSqlite class, besides that we already know it works, is that it utilizes
the same SQLiteDatabase class that is used elsewhere in WebKit. But that's not really any
reason to keep the class around, when SoupCookieJarDb does exactly the same thing. It was
introduced in libsoup 2.42 and that is already our minimum required version, so we can
switch now.

This passes a quick sanity-check of Epiphany's cookies dialog and also TestCookieManager.

  • PlatformGTK.cmake:
  • PlatformWPE.cmake:
  • WebProcess/Cookies/soup/WebCookieManagerSoup.cpp:

(WebKit::WebCookieManager::setCookiePersistentStorage):

  • WebProcess/Cookies/soup/WebKitSoupCookieJarSqlite.cpp: Removed.
  • WebProcess/Cookies/soup/WebKitSoupCookieJarSqlite.h: Removed.
9:21 AM Changeset in webkit [219294] by dbates@webkit.org
  • 3 edits in trunk/Source/WebCore

REGRESSION (r218616): Cannot build WebCore for macOS 10.12 with macOS 10.13 SDK
https://bugs.webkit.org/show_bug.cgi?id=173939

Reviewed by Dan Bernstein.

(The code in this change was either suggested or written by Dan Bernstein with a very
minor adjustment to get it to build).

Allow WebCore to link even though CTFontCreatePhysicalFontForCharactersWithLanguage() is
undefined when building against the macOS 10.13 SDK targeting macOS 10.12. Let the dynamic
linker resolve the undefined symbol.

For completeness the SPI CTFontCreatePhysicalFontForCharactersWithLanguage() was removed
from the macOS 10.13 SDK.

  • Configurations/WebCore.xcconfig: Tell the linker that CTFontCreatePhysicalFontForCharactersWithLanguage()

can be undefined when building against macOS 10.13 or later SDK.

  • platform/spi/cocoa/CoreTextSPI.h: Annotate CTFontCreatePhysicalFontForCharactersWithLanguage()

with its availability information.

9:17 AM Changeset in webkit [219293] by mmaxfield@apple.com
  • 2 edits in trunk/Source/WebKit2

REGRESSION(r213590): UI process updates the visible content rects more often than it did in iOS 10
https://bugs.webkit.org/show_bug.cgi?id=174282
<rdar://problem/33144344>

Reviewed by Simon Fraser.

In r213590, we accidentally refactored -[WKWebView _didCommitLayerTree:] to call _scheduleVisibleContentRectUpdate
more often. Instead, this should be triggered from inside the "if" statements.

No tests because there is no behavior change. Performance change is tested in MotionMark.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _isShowingVideoPictureInPicture]):
(-[WKWebView _initializeWithConfiguration:]):
(-[WKWebView goBack]):
(-[WKWebView _didCommitLayerTree:]):
(-[WKWebView _restorePageStateToUnobscuredCenter:scale:]):
(-[WKWebView _zoomToRect:withOrigin:fitEntireRect:minimumScale:maximumScale:minimumScrollDistance:]):
(-[WKWebView scrollViewWillEndDragging:withVelocity:targetContentOffset:]):
(-[WKWebView scrollViewDidScroll:]):
(-[WKWebView _visibleContentRect]):
(-[WKWebView _frameOrBoundsChanged]):
(-[WKWebView _scheduleVisibleContentRectUpdateAfterScrollInView:]):
(-[WKWebView _updateVisibleContentRects]):
(-[WKWebView _navigationGestureDidBegin]):
(-[WKWebView _reloadWithoutContentBlockers]):
(-[WKWebView _reloadExpiredOnly]):
(-[WKWebView _setObscuredInsets:]):
(-[WKWebView _setUnobscuredSafeAreaInsets:]):
(-[WKWebView _endAnimatedResize]):
(-[WKWebView _snapshotRect:intoImageOfWidth:completionHandler:]):
(-[WKWebView _clearOverrideLayoutParameters]):
(-[WKWebView _requestActivatedElementAtPosition:completionBlock:]):
(-[WKWebView _propertiesOfLayerWithID:]):

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

[GStreamer] Live twitch.tv videos do not play
https://bugs.webkit.org/show_bug.cgi?id=174222

Patch by Charlie Turner <cturner@igalia.com> on 2017-07-10
Reviewed by Michael Catanzaro.

Upgrade GStreamer to 1.10.5. It contains a change to typefind that
fixes videos not playing on twitch.tv.

  • gtk/jhbuild.modules:
9:03 AM Changeset in webkit [219291] by Alan Bujtas
  • 3 edits
    2 adds in trunk

Block of text is missing in iBooks sample books.
https://bugs.webkit.org/show_bug.cgi?id=174295
<rdar://problem/32955620>

Reviewed by Antti Koivisto.

Source/WebCore:

In the simple line layout context, translating y coordinate to a line index is
normally just a (y / line height) operation. However in case of strut offsets (pagination)
we need to take these extra paddings into account while resolving the line index.
This patch fixes the boundary checking for a given line by using the font size only
when the font is taller than the line.

  • rendering/SimpleLineLayoutResolver.cpp:

(WebCore::SimpleLineLayout::RunResolver::adjustLineIndexForStruts):

LayoutTests:

  • fast/multicol/simple-line-layout-line-index-after-strut-2-expected.html: Added.
  • fast/multicol/simple-line-layout-line-index-after-strut-2.html: Added.
6:21 AM Changeset in webkit [219290] by Carlos Garcia Campos
  • 5 edits in trunk/Source

[SOUP] SoupCookieJar is never released (resulting in sqlite temp files lying around)
https://bugs.webkit.org/show_bug.cgi?id=166029

Reviewed by Michael Catanzaro.

Source/WebCore:

Add clearSoupNetworkSessionAndCookieStorage() to clear the SoupNetworkSession and cookie storage of the main
network session, ensuring the cookies database is properly closed.

  • platform/network/NetworkStorageSession.h:
  • platform/network/soup/NetworkStorageSessionSoup.cpp:

(WebCore::NetworkStorageSession::clearSoupNetworkSessionAndCookieStorage):

Source/WebKit2:

Clear the SoupNetworkSession and cookie storage after the main loop quits.

  • NetworkProcess/soup/NetworkProcessMainSoup.cpp:

(WebKit::NetworkProcessMainUnix):

6:19 AM Changeset in webkit [219289] by Carlos Garcia Campos
  • 7 edits
    1 move in trunk

Move make-js-file-arrays.py from WebCore to JavaScriptCore
https://bugs.webkit.org/show_bug.cgi?id=174024

Reviewed by Michael Catanzaro.

.:

Make MAKE_JS_FILE_ARRAYS independent of WebCore and update it to use make-js-file-arrays.py from
JavaScriptCore. It's no longer needed to set PYTHON_PATH to find jsmin.py.

  • Source/cmake/WebKitMacros.cmake:

Source/JavaScriptCore:

It's currently used only by WebCore, but it depends on other JavaScriptCore scripts and it's not WebCore
specific at all. I plan to use it to compile the JavaScript atoms used by the WebDriver implementation.
Added command line option to pass the namespace to use instead of using WebCore.

  • JavaScriptCore.xcodeproj/project.pbxproj:
  • Scripts/make-js-file-arrays.py: Renamed from Source/WebCore/Scripts/make-js-file-arrays.py.

(main):

Source/WebCore:

  • CMakeLists.txt: Explicitly add files generated by MAKE_JS_FILE_ARRAYS to the build, since the macro no longer

does it.

  • DerivedSources.make: Updated to use make-js-file-arrays.py from JavaScriptCore. It's no longer needed to set

PYTHON_PATH to find jsmin.py.

5:28 AM WebKitGTK/TrackingMemoryErrors edited by cturner@igalia.com
Comment that you need to be in the jhbuild shell (diff)
3:13 AM Changeset in webkit [219288] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

[GTK] http/tests/media/video-redirect.html is failing
https://bugs.webkit.org/show_bug.cgi?id=174260

Patch by Charlie Turner <cturner@igalia.com> on 2017-07-10
Reviewed by Carlos Garcia Campos.

Make sure we're testing new URLs within the same security origin.

Covered by existing tests.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::convertToInternalProtocol): Factor out setting our
internal URL schema.
(WebCore::MediaPlayerPrivateGStreamer::setPlaybinURL): Use the
refactored helper.
(WebCore::MediaPlayerPrivateGStreamer::loadNextLocation): Use
refactored helper to ensure both URLs have the same origin.

3:04 AM Changeset in webkit [219287] by Wenson Hsieh
  • 2 edits in trunk/Source/WebKit2

[WK2] Action sheets for links fail to present in WebKit2 PDF view
https://bugs.webkit.org/show_bug.cgi?id=174307
<rdar://problem/31412128>

Reviewed by Tim Horton.

Currently, presenting an action sheet for a link always uses the WKActionSheetPresentAtClosestIndicatorRect
codepath, which requires text indicator data for the link. However, when showing an action sheet for a link via
WKPDFView, a text indicator for the link is not included, so the popover rect ends up being an empty rect at the
origin, which causes us to bail from presenting the popover.

To address this, we tweak our heuristic for determining which action sheet presentation style to use, so that we
only use the closest indicator rect for a link if the text indicator data is also present (otherwise, we fall
back to using the element rect). All other behavior is the same.

  • UIProcess/ios/WKActionSheetAssistant.mm:

(-[WKActionSheetAssistant showImageSheet]):
(presentationStyleForView):

Refactor _shouldPresentAtTouchLocationForElementRect into presentationStyleForView, a static function that
returns a WKActionSheetPresentationStyle.

(-[WKActionSheetAssistant showLinkSheet]):
(-[WKActionSheetAssistant _shouldPresentAtTouchLocationForElementRect:]): Deleted.

Jul 9, 2017:

10:58 PM Changeset in webkit [219286] by zandobersek@gmail.com
  • 2 edits in trunk/Tools

Add WebGL2 configuration option to build-webkit
https://bugs.webkit.org/show_bug.cgi?id=174251

Reviewed by Michael Catanzaro.

  • Scripts/webkitperl/FeatureList.pm: Add the 'webgl2' option, making it possible

to enable the ENABLE_WEBGL2 flag through the build-webkit script. The feature
is marked as enabled for the Apple Cocoa ports.

7:34 PM Changeset in webkit [219285] by Yusuke Suzuki
  • 2 edits in trunk/Source/JavaScriptCore

[JSC] Drop LineNumberAdder since we no longer treat <LF><CR> (not <CR><LF>) as one line terminator
https://bugs.webkit.org/show_bug.cgi?id=174296

Reviewed by Mark Lam.

Previously, we treat <LF><CR> as one line terminator. So we increase line number by one.
It caused a problem in scanning template literals. While template literals normalize
<LF><CR> to <LF><LF>, we still needed to increase line number by only one.
To handle it correctly, LineNumberAdder is introduced.

As of r219263, <LF><CR> is counted as two line terminators. So we do not need to have
LineNumberAdder. Let's just use shiftLineTerminator() instead.

  • parser/Lexer.cpp:

(JSC::Lexer<T>::parseTemplateLiteral):
(JSC::LineNumberAdder::LineNumberAdder): Deleted.
(JSC::LineNumberAdder::clear): Deleted.
(JSC::LineNumberAdder::add): Deleted.

7:18 PM Changeset in webkit [219284] by Brent Fulgham
  • 10 edits
    3 adds in trunk

Resource Load Statistics: User interaction should always go to top document
https://bugs.webkit.org/show_bug.cgi?id=174120
<rdar://problem/33117899>

Patch by John Wilander <wilander@apple.com> on 2017-07-08
Reviewed by Chris Dumez.

Source/WebCore:

Test: http/tests/loading/resourceLoadStatistics/user-interaction-in-cross-origin-sub-frame.html

  • dom/UserGestureIndicator.cpp:

(WebCore::UserGestureIndicator::UserGestureIndicator):

Now logs user interaction for the top document.

  • loader/ResourceLoadObserver.cpp:

(WebCore::ResourceLoadObserver::setThrottledObserverNotifications):

Test infrastructure.

(WebCore::ResourceLoadObserver::setNotificationCallback):

Callback now takes a ResourceLoadObserver::NotificationType.

(WebCore::ResourceLoadObserver::logFrameNavigation):

Submits the configured ResourceLoadObserver::NotificationType.

(WebCore::ResourceLoadObserver::logSubresourceLoading):

Submits the configured ResourceLoadObserver::NotificationType.

(WebCore::ResourceLoadObserver::logWebSocketLoading):

Submits the configured ResourceLoadObserver::NotificationType.

(WebCore::ResourceLoadObserver::logUserInteractionWithReducedTimeResolution):

Submits the configured ResourceLoadObserver::NotificationType.

  • loader/ResourceLoadObserver.h:
  • testing/Internals.cpp:

(WebCore::Internals::resetToConsistentState):

Resets to throttled notifications.

(WebCore::Internals::setResourceLoadStatisticsThrottledObserverNotifications):

Test infrastructure.

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

Added internals.setResourceLoadStatisticsThrottledObserverNotifications().

LayoutTests:

  • http/tests/loading/resourceLoadStatistics/resources/dummy.html: Added.
  • http/tests/loading/resourceLoadStatistics/user-interaction-in-cross-origin-sub-frame-expected.txt: Added.
  • http/tests/loading/resourceLoadStatistics/user-interaction-in-cross-origin-sub-frame.html: Added.
  • platform/mac-wk2/TestExpectations:

Added as [ Pass ].

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

Remove some obsolete WebKitVersionChecks.
https://bugs.webkit.org/show_bug.cgi?id=174294

Reviewed by Dan Bernstein.

Source/WebCore:

No new tests (No change to testable behavior)

  • dom/ScriptExecutionContext.cpp:

(WebCore::ScriptExecutionContext::dispatchErrorEvent):

  • page/Settings.in:
  • platform/RuntimeApplicationChecks.h:
  • platform/cocoa/RuntimeApplicationChecksCocoa.mm:

(WebCore::IOSApplication::isOkCupid): Deleted.
(WebCore::IOSApplication::isFacebook): Deleted.

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::layoutOverflowRectForPropagation):

Source/WebKit/ios:

  • WebView/WebPDFViewIOS.mm:

(-[WebPDFView drawPage:]):

Source/WebKit/mac:

  • Misc/WebKitVersionChecks.h:
  • WebView/WebHTMLView.mm:

(-[WebHTMLView hitTest:]):

  • WebView/WebView.mm:

(shouldRespectPriorityInCSSAttributeSetters):
(-[WebView _commonInitializationWithFrameName:groupName:]):
(-[WebView _preferencesChanged:]):
(shouldTransformsAffectOverflow): Deleted.
(shouldDispatchJavaScriptWindowOnErrorEvents): Deleted.

Source/WebKit2:

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::updatePreferences):

1:19 PM Changeset in webkit [219282] by mitz@apple.com
  • 6 edits in trunk/Source/JavaScriptCore

[Xcode] ICU headers aren’t treated as system headers after r219155
https://bugs.webkit.org/show_bug.cgi?id=174299

Reviewed by Sam Weinig.

  • Configurations/JavaScriptCore.xcconfig: Pass --system-header-prefix=unicode/ to the C and C++ compilers.
5:22 AM Changeset in webkit [219281] by Yusuke Suzuki
  • 8 edits in trunk/Source

[JSC] Use fastMalloc / fastFree for STL containers
https://bugs.webkit.org/show_bug.cgi?id=174297

Reviewed by Sam Weinig.

Source/JavaScriptCore:

In some places, we intentionally use STL containers over WTF containers.
For example, we sometimes use std::unordered_{set,map} instead of WTF::Hash{Set,Map}
because we do not have effective empty / deleted representations in the space of key's value.
But just using STL container means using libc's malloc instead of our fast malloc (bmalloc if it is enabled).

We introduce WTF::FastAllocator. This is C++ allocator implementation using fastMalloc and fastFree.
We specify this allocator to STL containers' template parameter to allocate memory from fastMalloc.

This WTF::FastAllocator gives us a chance to use STL containers if it is necessary
without compromising memory allocation throughput.

  • dfg/DFGGraph.h:
  • dfg/DFGIntegerCheckCombiningPhase.cpp:
  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::switchStringSlow):

  • runtime/FunctionHasExecutedCache.h:
  • runtime/TypeLocationCache.h:

Source/WTF:

  • wtf/FastMalloc.h:

(WTF::FastAllocator::FastAllocator):
(WTF::FastAllocator::allocate):
(WTF::FastAllocator::deallocate):
(WTF::FastAllocator::operator==):
(WTF::FastAllocator::operator!=):

Jul 8, 2017:

10:05 PM Changeset in webkit [219280] by beidson@apple.com
  • 9 edits in trunk/Source

Remove some obsolete RuntimeApplicationChecks.
https://bugs.webkit.org/show_bug.cgi?id=174293

Reviewed by Dan Bernstein.

Source/WebCore:

No new tests (No change to testable behavior)

  • html/HTMLObjectElement.cpp:

(WebCore::HTMLObjectElement::parametersForPlugin):
(WebCore::shouldNotPerformURLAdjustment): Deleted.

  • platform/RuntimeApplicationChecks.h:
  • platform/cocoa/RuntimeApplicationChecksCocoa.mm:

(WebCore::IOSApplication::isDaijisenDictionary): Deleted.
(WebCore::IOSApplication::isNASAHD): Deleted.
(WebCore::IOSApplication::isTheEconomistOnIphone): Deleted.

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

(StartWebThread):
(WebThreadSetDelegateSourceRunLoopMode): Deleted.

Source/WebKit/mac:

  • Misc/WebKitVersionChecks.h:
  • WebView/WebView.mm:

(+[WebView enableWebThread]):
(-[WebView _needsPreHTML5ParserQuirks]):

7:58 PM Changeset in webkit [219279] by commit-queue@webkit.org
  • 14 edits in trunk/Source/WebCore

[Curl] Safe access and life cycle management of bare Curl handle
by wrapping with C++ class
https://bugs.webkit.org/show_bug.cgi?id=174002

Patch by Basuke Suzuki <Basuke Suzuki> on 2017-07-08
Reviewed by Alex Christensen.

  • platform/network/ResourceHandle.h:
  • platform/network/ResourceHandleInternal.h:
  • platform/network/curl/CookieJarCurl.cpp:

(WebCore::setCookiesFromDOM):
(WebCore::cookiesForSession):

  • platform/network/curl/CurlContext.cpp:

(WebCore::CurlContext::CurlContext):
(WebCore::CurlContext::~CurlContext):
(WebCore::CurlContext::initCookieSession):
(WebCore::CurlShareHandle::CurlShareHandle):
(WebCore::CurlShareHandle::~CurlShareHandle):
(WebCore::CurlShareHandle::lockCallback):
(WebCore::CurlShareHandle::unlockCallback):
(WebCore::CurlShareHandle::mutexFor):
(WebCore::CurlMultiHandle::CurlMultiHandle):
(WebCore::CurlMultiHandle::~CurlMultiHandle):
(WebCore::CurlMultiHandle::addHandle):
(WebCore::CurlMultiHandle::removeHandle):
(WebCore::CurlMultiHandle::getFdSet):
(WebCore::CurlMultiHandle::perform):
(WebCore::CurlMultiHandle::readInfo):
(WebCore::CurlHandle::CurlHandle):
(WebCore::CurlHandle::~CurlHandle):
(WebCore::CurlHandle::perform):
(WebCore::CurlHandle::pause):
(WebCore::CurlHandle::enableShareHandle):
(WebCore::CurlHandle::setPrivateData):
(WebCore::CurlHandle::setUrl):
(WebCore::CurlHandle::clearUrl):
(WebCore::CurlHandle::clearRequestHeaders):
(WebCore::CurlHandle::appendRequestHeader):
(WebCore::CurlHandle::enableRequestHeaders):
(WebCore::CurlHandle::enableHttpGetRequest):
(WebCore::CurlHandle::enableHttpHeadRequest):
(WebCore::CurlHandle::enableHttpPostRequest):
(WebCore::CurlHandle::setPostFields):
(WebCore::CurlHandle::setPostFieldLarge):
(WebCore::CurlHandle::enableHttpPutRequest):
(WebCore::CurlHandle::setInFileSizeLarge):
(WebCore::CurlHandle::setHttpCustomRequest):
(WebCore::CurlHandle::enableAcceptEncoding):
(WebCore::CurlHandle::enableAllowedProtocols):
(WebCore::CurlHandle::enableFollowLocation):
(WebCore::CurlHandle::enableAutoReferer):
(WebCore::CurlHandle::enableHttpAuthentication):
(WebCore::CurlHandle::setHttpAuthUserPass):
(WebCore::CurlHandle::enableCAInfoIfExists):
(WebCore::CurlHandle::setSslVerifyPeer):
(WebCore::CurlHandle::setSslVerifyHost):
(WebCore::CurlHandle::setSslCert):
(WebCore::CurlHandle::setSslCertType):
(WebCore::CurlHandle::setSslKeyPassword):
(WebCore::CurlHandle::enableCookieJarIfExists):
(WebCore::CurlHandle::setCookieList):
(WebCore::CurlHandle::getCookieList):
(WebCore::CurlHandle::clearCookieList):
(WebCore::CurlHandle::enableProxyIfExists):
(WebCore::CurlHandle::enableTimeout):
(WebCore::CurlHandle::setHeaderCallbackFunction):
(WebCore::CurlHandle::setWriteCallbackFunction):
(WebCore::CurlHandle::setReadCallbackFunction):
(WebCore::CurlHandle::setSslCtxCallbackFunction):
(WebCore::CurlHandle::getEffectiveURL):
(WebCore::CurlHandle::getPrimaryPort):
(WebCore::CurlHandle::getResponseCode):
(WebCore::CurlHandle::getContentLenghtDownload):
(WebCore::CurlHandle::getHttpAuthAvail):
(WebCore::CurlHandle::getTimes):
(WebCore::CurlHandle::maxCurlOffT):
(WebCore::CurlHandle::expectedSizeOfCurlOffT):
(WebCore::CurlHandle::enableVerboseIfUsed):
(WebCore::CurlHandle::enableStdErrIfUsed):
(WebCore::CurlContext::getEffectiveURL): Deleted.
(WebCore::CurlContext::createMultiHandle): Deleted.
(WebCore::CurlContext::mutexFor): Deleted.
(WebCore::CurlContext::lock): Deleted.
(WebCore::CurlContext::unlock): Deleted.

  • platform/network/curl/CurlContext.h:

(WebCore::CurlGlobal::CurlGlobal):
(WebCore::CurlGlobal::~CurlGlobal):
(WebCore::CurlShareHandle::handle):
(WebCore::CurlContext::shareHandle):
(WebCore::CurlHandle::handle):
(WebCore::CurlHandle::url):
(WebCore::CurlContext::curlShareHandle): Deleted.

  • platform/network/curl/CurlDownload.cpp:

(WebCore::CurlDownload::~CurlDownload):
(WebCore::CurlDownload::init):
(WebCore::CurlDownload::start):
(WebCore::CurlDownload::cancel):
(WebCore::CurlDownload::getUrl):
(WebCore::CurlDownload::addHeaders):
(WebCore::CurlDownload::didReceiveHeader):
(WebCore::CurlDownload::writeCallback):

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

(WebCore::CurlJobManager::CurlJobManager):
(WebCore::CurlJobManager::~CurlJobManager):
(WebCore::CurlJobManager::addToCurl):
(WebCore::CurlJobManager::removeFromCurl):
(WebCore::CurlJobManager::workerThread):

  • platform/network/curl/CurlJobManager.h:

(WebCore::CurlJobManager::getMultiHandle): Deleted.

  • platform/network/curl/ResourceHandleCurl.cpp:

(WebCore::ResourceHandleInternal::~ResourceHandleInternal):
(WebCore::ResourceHandle::platformSetDefersLoading):
(WebCore::ResourceHandle::didReceiveAuthenticationChallenge):
(WebCore::ResourceHandle::receivedCredential):
(WebCore::ResourceHandle::receivedRequestToContinueWithoutCredential):
(WebCore::calculateWebTimingInformations):
(WebCore::handleLocalReceiveResponse):
(WebCore::writeCallback):
(WebCore::getProtectionSpace):
(WebCore::headerCallback):
(WebCore::readCallback):
(WebCore::setupFormData):
(WebCore::ResourceHandle::setupPUT):
(WebCore::ResourceHandle::setupPOST):
(WebCore::ResourceHandle::dispatchSynchronousJob):
(WebCore::ResourceHandle::applyAuthentication):
(WebCore::ResourceHandle::initialize):
(WebCore::ResourceHandle::handleCurlMsg):

  • platform/network/curl/ResourceHandleManager.cpp:

(WebCore::ResourceHandleManager::ResourceHandleManager):
(WebCore::ResourceHandleManager::~ResourceHandleManager):
(WebCore::ResourceHandleManager::downloadTimerCallback):
(WebCore::ResourceHandleManager::removeFromCurl):
(WebCore::ResourceHandleManager::startJob):

  • platform/network/curl/ResourceHandleManager.h:
  • platform/network/curl/SSLHandle.cpp:

(WebCore::setSSLClientCertificate):
(WebCore::certVerifyCallback):
(WebCore::setSSLVerifyOptions):

4:59 PM Changeset in webkit [219278] by commit-queue@webkit.org
  • 5 edits
    2 adds in trunk

REGRESSION: "visibility:hidden" does not hide play button for video elements
https://bugs.webkit.org/show_bug.cgi?id=174258
<rdar://problem/33181452>

Patch by Antoine Quint <Antoine Quint> on 2017-07-08
Reviewed by Dean Jackson.

Source/WebCore:

In order to not have most styles from the page affect the shadow root, we set "all: initial" on the
media controls container. However, we need to still make the "visibility" property inherit from its
host such that "visibility: hidden" on the host won't be overridden by setting the property back to
its initial value, which is "visible".

Test: media/modern-media-controls/css/visibility-hidden.html

  • Modules/modern-media-controls/controls/media-controls.css:

(.media-controls-container):

LayoutTests:

Add a test that checks that <video controls style="visibility:hidden"> does not render anything.

  • media/modern-media-controls/css/visibility-hidden-expected.html: Added.
  • media/modern-media-controls/css/visibility-hidden.html: Added.
  • platform/ios-simulator/TestExpectations:
  • platform/mac/TestExpectations:
4:11 PM Changeset in webkit [219277] by Chris Dumez
  • 37 edits in trunk

Simplify WebResourceLoadStatisticsStore / ResourceLoadStatisticsStore
https://bugs.webkit.org/show_bug.cgi?id=174290

Reviewed by Brent Fulgham.

Source/WebKit2:

  • UIProcess/API/Cocoa/WKWebsiteDataStore.mm:

(-[WKWebsiteDataStore _resourceLoadStatisticsProcessStatisticsAndDataRecords]):
(-[WKWebsiteDataStore _resourceLoadStatisticsSubmitTelemetry]):

  • UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:

Rename a couple of functions in the Cocoa SPI for clarity and to match the name
of their internal implementation.

  • UIProcess/Storage/ResourceLoadStatisticsStore.cpp:

(WebKit::ResourceLoadStatisticsStore::create):
(WebKit::ResourceLoadStatisticsStore::ensureResourceStatisticsForPrimaryDomain):
Stylistic changes.

(WebKit::ResourceLoadStatisticsStore::createEncoderFromData):
Make const.

(WebKit::ResourceLoadStatisticsStore::readDataFromDecoder):
Use HashMap::add() instead of HashMap::set(). There is not supposed to have any duplicate
keys so add() is sufficient and more efficient.

(WebKit::ResourceLoadStatisticsStore::clearInMemoryAndPersistent): Removed.
clearInMemoryAndPersistent() was only called from WebResourceLoadStatisticsStore and
the m_deletePersistentStoreHandler / m_grandfatherExistingWebsiteDataHandler were both
set by the WebResourceLoadStatisticsStore as well. Therefore, we don't really need this
function, WebResourceLoadStatisticsStore now calls ResourceLoadStatisticsStore::clearInMemory()
instead and takes care of doing what the m_deletePersistentStoreHandler /
m_grandfatherExistingWebsiteDataHandler handlers were doing on its side.

(WebKit::ResourceLoadStatisticsStore::mergeStatistics):
Pass Vector as rvalue reference, as a preparation for a future optimization. Added FIXME
comment about the optimization.

(WebKit::ResourceLoadStatisticsStore::setNotificationCallback): Removed.
(WebKit::ResourceLoadStatisticsStore::setGrandfatherExistingWebsiteDataCallback): Removed.
(WebKit::ResourceLoadStatisticsStore::setDeletePersistentStoreCallback): Removed.
(WebKit::ResourceLoadStatisticsStore::setFireTelemetryCallback): Removed.
Drop those callback setters. WebResourceLoadStatisticsStore is the only client of
ResourceLoadStatisticsStore and those callbacks were always called as a result of
an operation requested by the WebResourceLoadStatisticsStore. Therefore, those are
not needed. WebResourceLoadStatisticsStore can take care of doing what those
callbacks were doing on its side.

(WebKit::ResourceLoadStatisticsStore::processStatistics):
Pass parameter by const reference since we clearly do not intend to transfer ownership of it.

(WebKit::ResourceLoadStatisticsStore::topPrivatelyControlledDomainsToRemoveWebsiteDataFor):
(WebKit::ResourceLoadStatisticsStore::updateStatisticsForRemovedDataRecords):
(WebKit::ResourceLoadStatisticsStore::handleFreshStartWithEmptyOrNoStore):
Stylistic changes.

(WebKit::ResourceLoadStatisticsStore::shouldRemoveDataRecords): Removed.
(WebKit::ResourceLoadStatisticsStore::dataRecordsBeingRemoved): Removed.
(WebKit::ResourceLoadStatisticsStore::dataRecordsWereRemoved): Removed.
Those were moved to WebResourceLoadStatisticsStore since they do not require
any access to the statistics, and are only used by WebResourceLoadStatisticsStore.

  • UIProcess/Storage/ResourceLoadStatisticsStore.h:
  • UIProcess/WebResourceLoadStatisticsStore.cpp:

(WebKit::WebResourceLoadStatisticsStore::WebResourceLoadStatisticsStore):
Store registering most callbacks on the coreStore. Instead, the logic of those
callbacks is now inlined in the few methods in WebResourceLoadStatisticsStore
that were causing these callbacks to be called.

(WebKit::WebResourceLoadStatisticsStore::removeDataRecords):
Access some methods on WebResourceLoadStatisticsStore instead of the coreStore
since those were moved.

(WebKit::WebResourceLoadStatisticsStore::processStatisticsAndDataRecords):
Drop unnecessary mutable for lambda.

(WebKit::WebResourceLoadStatisticsStore::resourceLoadStatisticsUpdated):
Pass parameter as rvalue reference as a preparation for a future optimization.

(WebKit::WebResourceLoadStatisticsStore::hasStatisticsFileChangedSinceLastSync):
Make const.

(WebKit::WebResourceLoadStatisticsStore::submitTelemetry):
Add assertion to make sure this is called on the main thread.

(WebKit::WebResourceLoadStatisticsStore::fireDataModificationHandler): Removed.
This was dispatching to a background queue to call fireDataModificationHandler()
on the ResourceLoadStatisticsStore. The coreStore would then dispatch back on the
main thread to call the WebResourceLoadStatisticsStore's modification handler.
This modification handler was merely calling processStatisticsAndDataRecords().
Therefore, callers of WebResourceLoadStatisticsStore::fireDataModificationHandler()
can call WebResourceLoadStatisticsStore::processStatisticsAndDataRecords() directly
instead.

(WebKit::WebResourceLoadStatisticsStore::fireTelemetryHandler): Removed.
This was calling ResourceLoadStatisticsStore::fireTelemetryHandler(), which was
calling back WebResourceLoadStatisticsStore's fireTelemetryHandler. The handler
in question was merely calling submitTelemetry(). Therefore, callers of
WebResourceLoadStatisticsStore::fireTelemetryHandler() can call
WebResourceLoadStatisticsStore::submitTelemetry() directly instead.

(WebKit::WebResourceLoadStatisticsStore::clearInMemoryAndPersistent):
Call ResourceLoadStatisticsStore::clearInMemory() instead of clearInMemoryAndPersistent(),
which was removed. ResourceLoadStatisticsStore::clearInMemoryAndPersistent() was calling
clearInMemory() and then 2 of WebResourceLoadStatisticsStore's handlers. Instead, we now
call the functions that those handlers were calling directly, thus eliminating the need
for those handlers.

(WebKit::WebResourceLoadStatisticsStore::setMinimumTimeBetweenDataRecordsRemoval):
Set m_minimumTimeBetweenDataRecordsRemoval directly as it is now store on this class
instead of the coreStore.

(WebKit::WebResourceLoadStatisticsStore::shouldRemoveDataRecords):
(WebKit::WebResourceLoadStatisticsStore::dataRecordsBeingRemoved):
(WebKit::WebResourceLoadStatisticsStore::dataRecordsWereRemoved):
Those were merely moved from the ResourceLoadStatisticsStore.

  • UIProcess/WebResourceLoadStatisticsStore.h:
  • UIProcess/WebResourceLoadStatisticsTelemetry.cpp:

(WebKit::WebResourceLoadStatisticsTelemetry::calculateAndSubmit):
Check for sortedPrevalentResources.isEmpty() instead of checking if the size
if less than minimumPrevalentResourcesForTelemetry.
ResourceLoadStatisticsStore::sortedPrevalentResourceTelemetry() either returns
an empty vector or a vector with more than minimumPrevalentResourcesForTelemetry
items. Therefore, there is no need to expose minimumPrevalentResourcesForTelemetry.

Tools:

Rename testRunner API to match the new internal API names.

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

(WTR::TestRunner::statisticsProcessStatisticsAndDataRecords):
(WTR::TestRunner::statisticsSubmitTelemetry):

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

(WTR::TestController::statisticsProcessStatisticsAndDataRecords):
(WTR::TestController::statisticsSubmitTelemetry):

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

(WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle):

  • WebKitTestRunner/cocoa/TestControllerCocoa.mm:

(WTR::TestController::statisticsProcessStatisticsAndDataRecords):
(WTR::TestController::statisticsSubmitTelemetry):

LayoutTests:

Update layout tests to reflect changes to the testRunner API naming.

  • http/tests/loading/resourceLoadStatistics/classify-as-non-prevalent-based-on-mixed-statistics.html:
  • http/tests/loading/resourceLoadStatistics/classify-as-non-prevalent-based-on-sub-frame-under-top-frame-origins.html:
  • http/tests/loading/resourceLoadStatistics/classify-as-non-prevalent-based-on-subresource-under-top-frame-origins.html:
  • http/tests/loading/resourceLoadStatistics/classify-as-non-prevalent-based-on-subresource-unique-redirects-to.html:
  • http/tests/loading/resourceLoadStatistics/classify-as-prevalent-based-on-mixed-statistics.html:
  • http/tests/loading/resourceLoadStatistics/classify-as-prevalent-based-on-sub-frame-under-top-frame-origins.html:
  • http/tests/loading/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-under-top-frame-origins.html:
  • http/tests/loading/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-unique-redirects-to.html:
  • http/tests/loading/resourceLoadStatistics/clear-in-memory-and-persistent-store-one-hour.html:
  • http/tests/loading/resourceLoadStatistics/clear-in-memory-and-persistent-store.html:
  • http/tests/loading/resourceLoadStatistics/grandfathering.html:
  • http/tests/loading/resourceLoadStatistics/non-prevalent-resource-with-user-interaction.html:
  • http/tests/loading/resourceLoadStatistics/non-prevalent-resource-without-user-interaction.html:
  • http/tests/loading/resourceLoadStatistics/partitioned-and-unpartitioned-cookie-deletion.html:
  • http/tests/loading/resourceLoadStatistics/partitioned-and-unpartitioned-cookie-with-partitioning-timeout.html:
  • http/tests/loading/resourceLoadStatistics/partitioned-cookies-with-and-without-user-interaction.html:
  • http/tests/loading/resourceLoadStatistics/prevalent-resource-with-user-interaction-timeout.html:
  • http/tests/loading/resourceLoadStatistics/prevalent-resource-with-user-interaction.html:
  • http/tests/loading/resourceLoadStatistics/prevalent-resource-without-user-interaction.html:
  • http/tests/loading/resourceLoadStatistics/telemetry-generation.html:
8:58 AM Changeset in webkit [219276] by Yusuke Suzuki
  • 24 edits in trunk

Drop NOSNIFF compile flag
https://bugs.webkit.org/show_bug.cgi?id=174289

Reviewed by Michael Catanzaro.

.:

  • Source/cmake/WebKitFeatures.cmake:

Source/JavaScriptCore:

  • Configurations/FeatureDefines.xcconfig:

Source/WebCore:

  • Configurations/FeatureDefines.xcconfig:
  • css/StyleSheetContents.cpp:

(WebCore::StyleSheetContents::parseAuthorStyleSheet):
(WebCore::StyleSheetContents::notifyLoadedSheet):

  • dom/LoadableClassicScript.cpp:

(WebCore::LoadableClassicScript::notifyFinished):

  • loader/cache/CachedCSSStyleSheet.cpp:

(WebCore::CachedCSSStyleSheet::mimeTypeAllowedByNosniff):
(WebCore::CachedCSSStyleSheet::canUseSheet):

  • loader/cache/CachedCSSStyleSheet.h:
  • platform/network/HTTPParsers.cpp:

(WebCore::parseContentTypeOptionsHeader):

  • platform/network/HTTPParsers.h:
  • platform/network/ResourceResponseBase.cpp:

(WebCore::isScriptAllowedByNosniff):

  • platform/network/ResourceResponseBase.h:
  • workers/WorkerScriptLoader.cpp:

(WebCore::WorkerScriptLoader::didReceiveResponse):

Source/WebCore/PAL:

  • Configurations/FeatureDefines.xcconfig:

Source/WebKit/mac:

  • Configurations/FeatureDefines.xcconfig:

Source/WebKit2:

  • Configurations/FeatureDefines.xcconfig:

Tools:

  • Scripts/webkitperl/FeatureList.pm:
  • TestWebKitAPI/Configurations/FeatureDefines.xcconfig:
Note: See TracTimeline for information about the timeline view.