WebKit.git
3 years ago[GLIB] Make remote inspector DBus protocol common to all glib based ports
carlosgc@webkit.org [Tue, 6 Jun 2017 15:16:50 +0000 (15:16 +0000)]
[GLIB] Make remote inspector DBus protocol common to all glib based ports
https://bugs.webkit.org/show_bug.cgi?id=172970

Reviewed by Žan Doberšek.

Source/JavaScriptCore:

We are currently using "webkitgtk" in the names of DBus interfaces and object paths inside an ifdef with the
idea that other ports could use their own names. However, the protocol is the same, so we could use the same
names and make all glib based ports compatible to each other. This way we could use the GTK+ MiniBrowser to
debug WPE, without having to implement the frontend part in WPE yet.

* inspector/remote/glib/RemoteInspectorGlib.cpp: Use webkit instead of webkitgtk and reomve platform idfeds.
* inspector/remote/glib/RemoteInspectorServer.cpp: Ditto.

Source/WebKit2:

Use webkit instead of webkitgtk and reomve platform idfeds.

* UIProcess/glib/RemoteInspectorClient.cpp:

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

3 years ago[GTK] Web Process deadlock when closing the remote inspector frontend
carlosgc@webkit.org [Tue, 6 Jun 2017 15:15:10 +0000 (15:15 +0000)]
[GTK] Web Process deadlock when closing the remote inspector frontend
https://bugs.webkit.org/show_bug.cgi?id=172973

Reviewed by Žan Doberšek.

We are taking the remote inspector mutex twice. First close message is received, and receivedCloseMessage()
takes the mutex. Then RemoteConnectionToTarget::close() is called that, when connected, calls
PageDebuggable::disconnect() that ends up calling RemoteInspector::updateTarget() that also takes the remote
inspector mutex. We should release the mutex before calling RemoteConnectionToTarget::close().

* inspector/remote/glib/RemoteInspectorGlib.cpp:
(Inspector::RemoteInspector::receivedCloseMessage):

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

3 years agostruct does not accept initializer-form if member has initializers in GCC 4.9
utatane.tea@gmail.com [Tue, 6 Jun 2017 14:53:57 +0000 (14:53 +0000)]
struct does not accept initializer-form if member has initializers in GCC 4.9
https://bugs.webkit.org/show_bug.cgi?id=172974

Reviewed by Carlos Garcia Campos.

struct cannot accept initializer-form constructor (like, `ListNode<T> t { ... }`) if
the member of the struct has a default initializer.
Here is a simple snippet.

template<typename T>
struct Pair {
    T* prev { nullptr };
    T* next { nullptr };
};

Pair<int> pair { nullptr, nullptr };  // compile erorr in GCC 4.9.

Instead, we define a default constructor (to invoke default initializers) and a constructor
to accept the above initialization.

* bmalloc/List.h:
(bmalloc::ListNode::ListNode):
(bmalloc::List::iterator::iterator):

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

3 years ago[WPE] Don't disable Web security preference by default
zandobersek@gmail.com [Tue, 6 Jun 2017 14:46:45 +0000 (14:46 +0000)]
[WPE] Don't disable Web security preference by default
https://bugs.webkit.org/show_bug.cgi?id=172964

Reviewed by Carlos Garcia Campos.

* UIProcess/API/wpe/WPEView.cpp:
(WKWPE::View::View): Don't disable Web security by default.

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

3 years agoTry to fix the GTK build.
ggaren@apple.com [Tue, 6 Jun 2017 14:39:51 +0000 (14:39 +0000)]
Try to fix the GTK build.

Unreviewed.

* bmalloc/List.h:
(bmalloc::List::List):

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

3 years agoUpdate modern media controls testing utilities
graouts@webkit.org [Tue, 6 Jun 2017 14:30:47 +0000 (14:30 +0000)]
Update modern media controls testing utilities
https://bugs.webkit.org/show_bug.cgi?id=172976
<rdar://problem/32588432>

Reviewed by Eric Carlson.

Source/WebCore:

Stop logging an error when we're not able to load UI Strings since UI strings
are not defined in the majority of modern-media-controls tests as we load the
code directly from the modern-media-controls module and can't reach into the
English.lproj directory, nor is it necessary.

* Modules/modern-media-controls/main.js:
(UIString):

LayoutTests:

Update the list of CSS files to load to match the current list of
existing CSS files in the modern-media-controls module.

* media/modern-media-controls/resources/media-controls-loader.js:

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

3 years ago[WPE] Add an install-dependencies script
clopez@igalia.com [Tue, 6 Jun 2017 11:46:31 +0000 (11:46 +0000)]
[WPE] Add an install-dependencies script
https://bugs.webkit.org/show_bug.cgi?id=172948

Reviewed by Žan Doberšek.

It is based on the gtk/install-dependencies script.
Includes support for Debian based distrubutions, Fedora and Arch.
It has been tested on a minimal Debian 9 chroot.

* wpe/install-dependencies: Added.

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

3 years ago[GStreamer] Use the same draw timer and mutex when AC disabled or building without...
carlosgc@webkit.org [Tue, 6 Jun 2017 09:01:12 +0000 (09:01 +0000)]
[GStreamer] Use the same draw timer and mutex when AC disabled or building without OpenGL
https://bugs.webkit.org/show_bug.cgi?id=172923

Reviewed by Michael Catanzaro.

We have two different paths to do the same. When building without OpenGL, the VideoRenderRequestScheduler has
its own timer and we need to add ifdefs to handle that. But when building with OpenGL we still support
non-accelerated rendering that does the same than the VideoRenderRequestScheduler timer, but using the media
player timer instead. We can simplify the code and remove more ifdefs by using the media player timer and mutex
in all cases for non-accelerated rendering.

* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
(WebCore::MediaPlayerPrivateGStreamerBase::MediaPlayerPrivateGStreamerBase):
(WebCore::MediaPlayerPrivateGStreamerBase::repaint):
(WebCore::MediaPlayerPrivateGStreamerBase::triggerRepaint):
(WebCore::MediaPlayerPrivateGStreamerBase::cancelRepaint):
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:
* platform/graphics/gstreamer/VideoSinkGStreamer.cpp:
(VideoRenderRequestScheduler::start):
(VideoRenderRequestScheduler::stop):
(VideoRenderRequestScheduler::requestRender):
(VideoRenderRequestScheduler::VideoRenderRequestScheduler): Deleted.
(VideoRenderRequestScheduler::render): Deleted.

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

3 years agoUpdate media controls to match latest design specs
graouts@webkit.org [Tue, 6 Jun 2017 08:10:39 +0000 (08:10 +0000)]
Update media controls to match latest design specs
https://bugs.webkit.org/show_bug.cgi?id=172932

Reviewed by Dean Jackson.

Source/WebCore:

The media controls specs have changed and we now implement them. The main controls bar now
appears to be floating, with a rounded corners and a margin around it. Some of the controls
it used to contain now may appear outside of it. Specifically, the fullscreen and
picture-in-picture buttons now are displayed in a dedicated controls bar in the top-left
corner and the mute button, on iOS (where we don't support changing the volume when inline),
is displayed in the top right corner.

Another small UI improvement is that we display an activity indicator when we are waiting
for data to initiate or resume playback instead of showing the elapsed time label. We also
make displaying the scrubber more important than displaying other controls, except for the
play/pause button, when width becomes scarce. Finally, we no longer use a speci layer type
for the controls bar backgrounds, we now use the same "backdrop-filter" and tint overlay
on both macOS and iOS.

Since this work had previously been done through WebKitAdditions, we remove the specific
build phase code that we added for this purpose and are now only ever looking for media
controls code in the WebCore source tree.

* Modules/modern-media-controls/controls/activity-indicator.css: Added.
(.activity-indicator):
(.activity-indicator > div):
(.activity-indicator > .ne):
(.activity-indicator > .e):
(.activity-indicator > .se):
(.activity-indicator > .s):
(.activity-indicator > .sw):
(.activity-indicator > .w):
(.activity-indicator > .nw):
(@keyframes activity-indicator-pulse):
(to):
* Modules/modern-media-controls/controls/airplay-button.js:
* Modules/modern-media-controls/controls/auto-hide-controller.js: Added.
(AutoHideController):
(AutoHideController.prototype.get fadesWhileIdle):
(AutoHideController.prototype.set fadesWhileIdle):
(AutoHideController.prototype.handleEvent):
(AutoHideController.prototype.gestureRecognizerStateDidChange):
(AutoHideController.prototype.mediaControlsFadedStateDidChange):
(AutoHideController.prototype.mediaControlsBecameInvisible):
(AutoHideController.prototype._cancelNonEnforcedAutoHideTimer):
(AutoHideController.prototype._cancelAutoHideTimer):
(AutoHideController.prototype._resetAutoHideTimer):
(AutoHideController.prototype._autoHideTimerFired):
* Modules/modern-media-controls/controls/background-click-delegate-notifier.js: Added.
(BackgroundClickDelegateNotifier):
(BackgroundClickDelegateNotifier.prototype.handleEvent):
* Modules/modern-media-controls/controls/background-tint.css:
(.background-tint,):
(.background-tint > .blur):
(.background-tint > .tint):
* Modules/modern-media-controls/controls/button.css:
(button):
(button > picture):
(button.skip-back > picture,):
(button.on > picture):
(button:active > picture):
(button.corner):
(button.center,):
(button.center):
(button.small-center):
(button.center > .background-tint,):
(button.center > picture,):
(button.center:active > picture,):
* Modules/modern-media-controls/controls/button.js:
(Button.prototype.get iconName):
(Button.prototype.set iconName):
(Button.prototype.get on):
(Button.prototype.set on):
(Button.prototype.get style):
(Button.prototype.set style):
(Button.prototype.get scaleFactor):
(Button.prototype.set scaleFactor):
(Button.prototype.handleEvent):
(Button.prototype.commit):
(Button.prototype._loadImage):
(Button.prototype._imageSourceDidLoad):
(Button.prototype._updateImage):
(Button.prototype._updateImageMetrics):
(Button):
* Modules/modern-media-controls/controls/buttons-container.css:
(.buttons-container):
(.ios .buttons-container button):
* Modules/modern-media-controls/controls/buttons-container.js:
* Modules/modern-media-controls/controls/controls-bar.css:
(.controls-bar):
(.controls-bar.faded): Deleted.
* Modules/modern-media-controls/controls/controls-bar.js:
(ControlsBar.prototype.get children):
(ControlsBar.prototype.set children):
(ControlsBar.prototype.commitProperty):
(ControlsBar.prototype.get userInteractionEnabled): Deleted.
(ControlsBar.prototype.set userInteractionEnabled): Deleted.
(ControlsBar.prototype.get fadesWhileIdle): Deleted.
(ControlsBar.prototype.set fadesWhileIdle): Deleted.
(ControlsBar.prototype.get visible): Deleted.
(ControlsBar.prototype.set visible): Deleted.
(ControlsBar.prototype.get faded): Deleted.
(ControlsBar.prototype.set faded): Deleted.
(ControlsBar.prototype.handleEvent): Deleted.
(ControlsBar.prototype.gestureRecognizerStateDidChange): Deleted.
(ControlsBar.prototype._cancelNonEnforcedAutoHideTimer): Deleted.
(ControlsBar.prototype._cancelAutoHideTimer): Deleted.
(ControlsBar.prototype._resetAutoHideTimer): Deleted.
(ControlsBar.prototype._autoHideTimerFired): Deleted.
* Modules/modern-media-controls/controls/fullscreen-button.js:
* Modules/modern-media-controls/controls/icon-button.css: Removed.
* Modules/modern-media-controls/controls/icon-button.js: Removed.
* Modules/modern-media-controls/controls/icon-service.js:
(const.iconService.new.IconService.prototype.imageForIconAndLayoutTraits):
(const.iconService.new.IconService.prototype._fileNameAndPlatformForIconAndLayoutTraits):
(const.iconService.new.IconService):
(const.iconService.new.IconService.prototype.imageForIconNameAndLayoutTraits): Deleted.
(const.iconService.new.IconService.prototype._fileNameAndPlatformForIconNameAndLayoutTraits): Deleted.
* Modules/modern-media-controls/controls/inline-layout-support.js: Removed.
* Modules/modern-media-controls/controls/inline-media-controls.css: Added.
(.media-controls.inline > .controls-bar):
(.media-controls.inline > .controls-bar.top-left):
(.media-controls.inline.audio > .controls-bar):
(.media-controls.inline > .controls-bar > *):
(.media-controls.inline > button.mute):
(.media-controls.inline > button.play-pause.corner):
(.media-controls.inline.audio > button.play-pause.corner):
(.media-controls.inline > .controls-bar button):
(.media-controls.inline button.start.center > picture,):
(.media-controls.inline button.start.small-center > picture,):
(.media-controls.inline .time-control,):
* Modules/modern-media-controls/controls/inline-media-controls.js: Added.
(InlineMediaControls):
(InlineMediaControls.prototype.set shouldUseAudioLayout):
(InlineMediaControls.prototype.set shouldUseSingleBarLayout):
(InlineMediaControls.prototype.get showsStartButton):
(InlineMediaControls.prototype.set showsStartButton):
(InlineMediaControls.prototype.showPlacard):
(InlineMediaControls.prototype.hidePlacard):
(InlineMediaControls.prototype.layout):
(InlineMediaControls.prototype.commitProperty):
(InlineMediaControls.prototype.get preferredMuteButtonStyle):
(InlineMediaControls.prototype._topLeftContainerButtons):
(InlineMediaControls.prototype._leftContainerButtons):
(InlineMediaControls.prototype._rightContainerButtons):
(InlineMediaControls.prototype._droppableButtons):
* Modules/modern-media-controls/controls/ios-inline-media-controls.css: Removed.
* Modules/modern-media-controls/controls/ios-inline-media-controls.js:
(IOSInlineMediaControls.prototype.get showsStartButton):
(IOSInlineMediaControls.prototype.set showsStartButton):
(IOSInlineMediaControls.prototype.gestureRecognizerStateDidChange):
(IOSInlineMediaControls.prototype._pinchGestureRecognizerStateDidChange):
(IOSInlineMediaControls.prototype._tapGestureRecognizerStateDidChange):
(IOSInlineMediaControls):
(IOSInlineMediaControls.prototype.layout): Deleted.
(IOSInlineMediaControls.prototype.layoutTraitsDidChange): Deleted.
* Modules/modern-media-controls/controls/layout-item.js:
* Modules/modern-media-controls/controls/layout-node.js:
(LayoutNode.prototype.commitProperty):
* Modules/modern-media-controls/controls/macos-compact-inline-media-controls.css: Removed.
* Modules/modern-media-controls/controls/macos-fullscreen-media-controls.css:
(.media-controls.mac.fullscreen .buttons-container.left):
(.media-controls.mac.fullscreen .buttons-container.center):
(.media-controls.mac.fullscreen .time-control):
(.media-controls.mac.fullscreen > .controls-bar .status-label):
(.media-controls.mac.fullscreen > .controls-bar > .background-tint > div): Deleted.
(.media-controls.mac.fullscreen .volume.slider): Deleted.
(.media-controls.mac.fullscreen button.volume-down): Deleted.
(.media-controls.mac.fullscreen button.volume-up): Deleted.
(.media-controls.mac.fullscreen button.rewind): Deleted.
(.media-controls.mac.fullscreen button.play-pause): Deleted.
(.media-controls.mac.fullscreen button.forward): Deleted.
(.media-controls.mac.fullscreen .time-label): Deleted.
(.media-controls.mac.fullscreen .scrubber): Deleted.
* Modules/modern-media-controls/controls/macos-fullscreen-media-controls.js:
(MacOSFullscreenMediaControls.prototype.handleEvent):
(MacOSFullscreenMediaControls.prototype.layout):
(MacOSFullscreenMediaControls.prototype._handleMousedown):
(MacOSFullscreenMediaControls.prototype._handleMousemove):
* Modules/modern-media-controls/controls/macos-inline-media-controls.css:
(.media-controls.mac.inline .volume-slider-container):
(.media-controls.mac.inline.audio .volume-slider-container):
(.media-controls.mac.inline .volume-slider-container > .background-tint):
(.media-controls.mac.inline .volume-slider-container > .background-tint > div):
(.media-controls.mac.inline .volume-slider-container > .slider):
(.media-controls.mac.inline > .controls-bar): Deleted.
(.media-controls.mac.inline > .controls-bar > *): Deleted.
(.media-controls.mac.inline > button.start > div): Deleted.
(.media-controls.mac.inline > .controls-bar button): Deleted.
(.media-controls.mac.inline button.play-pause): Deleted.
(.media-controls.mac.inline button.skip-back): Deleted.
(.media-controls.mac.inline .scrubber.slider): Deleted.
(.media-controls.mac.inline button.mute): Deleted.
(.media-controls.mac.inline button.airplay): Deleted.
(.media-controls.mac.inline button.pip): Deleted.
(.media-controls.mac.inline button.tracks): Deleted.
(.media-controls.mac.inline button.fullscreen): Deleted.
(.media-controls.mac.inline .time-label,): Deleted.
(.media-controls.mac.inline .volume.slider): Deleted.
* Modules/modern-media-controls/controls/macos-inline-media-controls.js:
(MacOSInlineMediaControls.prototype.layout):
(MacOSInlineMediaControls.prototype.get preferredMuteButtonStyle):
(MacOSInlineMediaControls.prototype.handleEvent):
(MacOSInlineMediaControls.prototype.layoutTraitsDidChange): Deleted.
* Modules/modern-media-controls/controls/macos-media-controls.js: Removed.
* Modules/modern-media-controls/controls/media-controls.css:
(:host(audio)):
(*):
(:host(audio), *):
(.media-controls-container):
(.media-controls):
(.media-controls > *):
(.media-controls.shows-tracks-panel > .controls-bar,):
(.media-controls.faded > *:not(.placard)):
(.media-controls .time-label,):
* Modules/modern-media-controls/controls/media-controls.js:
(MediaControls.prototype.get visible):
(MediaControls.prototype.set visible):
(MediaControls.prototype.get faded):
(MediaControls.prototype.set faded):
(MediaControls.prototype.showTracksPanel):
(MediaControls.prototype.hideTracksPanel):
(MediaControls.prototype.isPointInControls):
(MediaControls.prototype.handleEvent):
(MediaControls.prototype.commitProperty):
(MediaControls.prototype.get layoutTraits): Deleted.
(MediaControls.prototype.set layoutTraits): Deleted.
(MediaControls.prototype.get showsStartButton): Deleted.
(MediaControls.prototype.set showsStartButton): Deleted.
(MediaControls.prototype.get placard): Deleted.
(MediaControls.prototype.get showsPlacard): Deleted.
(MediaControls.prototype.showPlacard): Deleted.
(MediaControls.prototype.hidePlacard): Deleted.
(MediaControls.prototype.controlsBarVisibilityDidChange): Deleted.
(MediaControls.prototype.controlsBarFadedStateDidChange): Deleted.
(MediaControls.prototype.layoutTraitsDidChange): Deleted.
(MediaControls.prototype.layout): Deleted.
(MediaControls.prototype._invalidateChildren): Deleted.
* Modules/modern-media-controls/controls/media-document.css:
(:host(.media-document)):
(:host(.media-document.audio.mac)):
* Modules/modern-media-controls/controls/mute-button.js:
* Modules/modern-media-controls/controls/pip-button.js:
* Modules/modern-media-controls/controls/placard.css:
(.placard):
(.placard .container):
(.placard button):
(.placard button > picture):
(.placard .icon): Deleted.
* Modules/modern-media-controls/controls/placard.js:
(Placard.):
(Placard.prototype.layout):
* Modules/modern-media-controls/controls/play-pause-button.js:
(PlayPauseButton):
(PlayPauseButton.prototype.commit):
* Modules/modern-media-controls/controls/scheduler.js:
(const.scheduler.new.prototype.scheduleLayout):
(const.scheduler.new.prototype.unscheduleLayout):
(const.scheduler.new.prototype._requestFrameIfNeeded):
(const.scheduler.new.prototype._frameDidFire):
(const.scheduler.new.prototype._layout):
* Modules/modern-media-controls/controls/scrubber.js: Removed.
* Modules/modern-media-controls/controls/seek-button.js:
* Modules/modern-media-controls/controls/skip-back-button.js:
* Modules/modern-media-controls/controls/skip-forward-button.js: Added.
(SkipForwardButton):
* Modules/modern-media-controls/controls/slider.css:
(.slider):
(.slider > .custom-slider,):
(.slider > .custom-slider):
(.slider > .custom-slider > *):
(.slider > .custom-slider > .fill):
(.slider > .custom-slider > .track):
(.slider > .custom-slider > .primary):
(.slider > .custom-slider > .secondary):
(.slider > .custom-slider > .knob):
(.slider > input):
(.slider > input::-webkit-slider-thumb):
(.slider.disabled > input,):
(.ios .slider > input):
(.ios .slider > input::-webkit-slider-runnable-track):
(.ios .slider > input::-webkit-slider-thumb):
(.slider > canvas,): Deleted.
(.slider > canvas): Deleted.
* Modules/modern-media-controls/controls/slider.js:
(Slider.prototype.set inputAccessibleLabel):
(Slider.prototype.get disabled):
(Slider.prototype.set disabled):
(Slider.prototype.get secondaryValue):
(Slider.prototype.set secondaryValue):
(Slider.prototype._formatTime):
(Slider.prototype.commitProperty):
(Slider.prototype.commit):
(Slider.prototype.draw): Deleted.
(addRoundedRect): Deleted.
* Modules/modern-media-controls/controls/start-button.css: Removed.
* Modules/modern-media-controls/controls/start-button.js: Removed.
* Modules/modern-media-controls/controls/status-label.css:
(.status-label):
* Modules/modern-media-controls/controls/status-label.js:
(StatusLabel.prototype.get enabled):
(StatusLabel.prototype.set enabled): Deleted.
* Modules/modern-media-controls/controls/text-tracks.css:
(video::-webkit-media-text-track-container):
(video::-webkit-media-text-track-container.visible-controls-bar):
(video::-webkit-media-text-track-container.visible-controls-bar.compact-controls-bar): Deleted.
* Modules/modern-media-controls/controls/time-control.js:
(TimeControl.prototype.set duration):
(TimeControl.prototype.set currentTime):
(TimeControl.prototype.get loading):
(TimeControl.prototype.set loading):
(TimeControl.prototype.get minimumWidth):
(TimeControl.prototype.get idealMinimumWidth):
(TimeControl.prototype.layout):
(TimeControl.prototype._performIdealLayout):
(TimeControl.prototype.get useSixDigitsForTimeLabels): Deleted.
(TimeControl.prototype.set useSixDigitsForTimeLabels): Deleted.
(TimeControl.prototype.get isSufficientlyWide): Deleted.
* Modules/modern-media-controls/controls/time-label.css:
(.time-label):
* Modules/modern-media-controls/controls/time-label.js:
(TimeLabel.prototype.setValueWithNumberOfDigits):
(TimeLabel.prototype.commitProperty):
(TimeLabel.prototype._formattedTime):
(doubleDigits):
(TimeLabel.prototype.set value): Deleted.
* Modules/modern-media-controls/controls/tracks-button.js:
* Modules/modern-media-controls/controls/tracks-panel.css:
(.tracks-panel > .scrollable-container):
(.tracks-panel section):
(.tracks-panel section > h3):
(.tracks-panel > .background-tint > div,): Deleted.
* Modules/modern-media-controls/controls/volume-down-button.js:
* Modules/modern-media-controls/controls/volume-slider.css: Removed.
* Modules/modern-media-controls/controls/volume-slider.js: Removed.
* Modules/modern-media-controls/controls/volume-up-button.js:
* Modules/modern-media-controls/gesture-recognizers/gesture-recognizer.js:
(GestureRecognizer.prototype.gestureBegan):
(GestureRecognizer.prototype._removeTrackingListeners):
* Modules/modern-media-controls/gesture-recognizers/tap.js:
(TapGestureRecognizer.prototype.touchesMoved):
* Modules/modern-media-controls/images/iOS/Airplay.svg: Added.
* Modules/modern-media-controls/images/iOS/EnterFullscreen.svg: Added.
* Modules/modern-media-controls/images/iOS/MediaSelector.svg: Added.
* Modules/modern-media-controls/images/iOS/MiniPipIn.svg: Added.
* Modules/modern-media-controls/images/iOS/Mute.svg: Added.
* Modules/modern-media-controls/images/iOS/Pause.svg: Added.
* Modules/modern-media-controls/images/iOS/PipIn.svg: Added.
* Modules/modern-media-controls/images/iOS/Play.svg: Added.
* Modules/modern-media-controls/images/iOS/SkipBack15.svg: Added.
* Modules/modern-media-controls/images/iOS/SkipForward15.svg: Added.
* Modules/modern-media-controls/images/iOS/VolumeHi.svg: Added.
* Modules/modern-media-controls/images/iOS/airplay@1x.png: Removed.
* Modules/modern-media-controls/images/iOS/airplay@2x.png: Removed.
* Modules/modern-media-controls/images/iOS/enter-fullscreen@1x.png: Removed.
* Modules/modern-media-controls/images/iOS/enter-fullscreen@2x.png: Removed.
* Modules/modern-media-controls/images/iOS/enter-fullscreen@3x.png: Removed.
* Modules/modern-media-controls/images/iOS/interval-skip-back@1x.png: Removed.
* Modules/modern-media-controls/images/iOS/interval-skip-back@2x.png: Removed.
* Modules/modern-media-controls/images/iOS/interval-skip-back@3x.png: Removed.
* Modules/modern-media-controls/images/iOS/pause@1x.png: Removed.
* Modules/modern-media-controls/images/iOS/pause@2x.png: Removed.
* Modules/modern-media-controls/images/iOS/pause@3x.png: Removed.
* Modules/modern-media-controls/images/iOS/pip-in@1x.png: Removed.
* Modules/modern-media-controls/images/iOS/pip-in@2x.png: Removed.
* Modules/modern-media-controls/images/iOS/pip-in@3x.png: Removed.
* Modules/modern-media-controls/images/iOS/play@1x.png: Removed.
* Modules/modern-media-controls/images/iOS/play@2x.png: Removed.
* Modules/modern-media-controls/images/iOS/play@3x.png: Removed.
* Modules/modern-media-controls/images/iOS/slider-thumb@2x.png: Removed.
* Modules/modern-media-controls/images/iOS/start@1x.png: Removed.
* Modules/modern-media-controls/images/iOS/start@2x.png: Removed.
* Modules/modern-media-controls/images/iOS/start@3x.png: Removed.
* Modules/modern-media-controls/images/macOS/Airplay-fullscreen.svg: Added.
* Modules/modern-media-controls/images/macOS/Airplay.svg: Added.
* Modules/modern-media-controls/images/macOS/EnterFullscreen.svg: Added.
* Modules/modern-media-controls/images/macOS/ExitFullscreen.svg: Added.
* Modules/modern-media-controls/images/macOS/Forward.svg: Added.
* Modules/modern-media-controls/images/macOS/MediaSelector-fullscreen.svg: Added.
* Modules/modern-media-controls/images/macOS/MediaSelector.svg: Added.
* Modules/modern-media-controls/images/macOS/Mute.svg: Added.
* Modules/modern-media-controls/images/macOS/Pause.svg: Added.
* Modules/modern-media-controls/images/macOS/PipIn-fullscreen.svg: Added.
* Modules/modern-media-controls/images/macOS/PipIn.svg: Added.
* Modules/modern-media-controls/images/macOS/Play.svg: Added.
* Modules/modern-media-controls/images/macOS/Rewind.svg: Added.
* Modules/modern-media-controls/images/macOS/SkipBack15.svg: Added.
* Modules/modern-media-controls/images/macOS/SkipForward15.svg: Added.
* Modules/modern-media-controls/images/macOS/VolumeHi.svg: Added.
* Modules/modern-media-controls/images/macOS/VolumeLo.svg: Added.
* Modules/modern-media-controls/images/macOS/airplay-compact@1x.png: Removed.
* Modules/modern-media-controls/images/macOS/airplay-compact@2x.png: Removed.
* Modules/modern-media-controls/images/macOS/airplay-fullscreen@1x.png: Removed.
* Modules/modern-media-controls/images/macOS/airplay-fullscreen@2x.png: Removed.
* Modules/modern-media-controls/images/macOS/airplay@1x.png: Removed.
* Modules/modern-media-controls/images/macOS/airplay@2x.png: Removed.
* Modules/modern-media-controls/images/macOS/enter-fullscreen-compact@1x.png: Removed.
* Modules/modern-media-controls/images/macOS/enter-fullscreen-compact@2x.png: Removed.
* Modules/modern-media-controls/images/macOS/enter-fullscreen@1x.png: Removed.
* Modules/modern-media-controls/images/macOS/enter-fullscreen@2x.png: Removed.
* Modules/modern-media-controls/images/macOS/exit-fullscreen@1x.png: Removed.
* Modules/modern-media-controls/images/macOS/exit-fullscreen@2x.png: Removed.
* Modules/modern-media-controls/images/macOS/forward@1x.png: Removed.
* Modules/modern-media-controls/images/macOS/forward@2x.png: Removed.
* Modules/modern-media-controls/images/macOS/interval-skip-back-compact@1x.png: Removed.
* Modules/modern-media-controls/images/macOS/interval-skip-back-compact@2x.png: Removed.
* Modules/modern-media-controls/images/macOS/interval-skip-back@1x.png: Removed.
* Modules/modern-media-controls/images/macOS/interval-skip-back@2x.png: Removed.
* Modules/modern-media-controls/images/macOS/media-selection-compact@1x.png: Removed.
* Modules/modern-media-controls/images/macOS/media-selection-compact@2x.png: Removed.
* Modules/modern-media-controls/images/macOS/media-selection-fullscreen@1x.png: Removed.
* Modules/modern-media-controls/images/macOS/media-selection-fullscreen@2x.png: Removed.
* Modules/modern-media-controls/images/macOS/media-selection@1x.png: Removed.
* Modules/modern-media-controls/images/macOS/media-selection@2x.png: Removed.
* Modules/modern-media-controls/images/macOS/pause-compact@1x.png: Removed.
* Modules/modern-media-controls/images/macOS/pause-compact@2x.png: Removed.
* Modules/modern-media-controls/images/macOS/pause-fullscreen@1x.png: Removed.
* Modules/modern-media-controls/images/macOS/pause-fullscreen@2x.png: Removed.
* Modules/modern-media-controls/images/macOS/pause@1x.png: Removed.
* Modules/modern-media-controls/images/macOS/pause@2x.png: Removed.
* Modules/modern-media-controls/images/macOS/pip-in-compact@1x.png: Removed.
* Modules/modern-media-controls/images/macOS/pip-in-compact@2x.png: Removed.
* Modules/modern-media-controls/images/macOS/pip-in-fullscreen@1x.png: Removed.
* Modules/modern-media-controls/images/macOS/pip-in-fullscreen@2x.png: Removed.
* Modules/modern-media-controls/images/macOS/pip-in@1x.png: Removed.
* Modules/modern-media-controls/images/macOS/pip-in@2x.png: Removed.
* Modules/modern-media-controls/images/macOS/play-compact@1x.png: Removed.
* Modules/modern-media-controls/images/macOS/play-compact@2x.png: Removed.
* Modules/modern-media-controls/images/macOS/play-fullscreen@1x.png: Removed.
* Modules/modern-media-controls/images/macOS/play-fullscreen@2x.png: Removed.
* Modules/modern-media-controls/images/macOS/play@1x.png: Removed.
* Modules/modern-media-controls/images/macOS/play@2x.png: Removed.
* Modules/modern-media-controls/images/macOS/rewind@1x.png: Removed.
* Modules/modern-media-controls/images/macOS/rewind@2x.png: Removed.
* Modules/modern-media-controls/images/macOS/scale-to-fill@1x.png: Removed.
* Modules/modern-media-controls/images/macOS/scale-to-fill@2x.png: Removed.
* Modules/modern-media-controls/images/macOS/scale-to-fit@1x.png: Removed.
* Modules/modern-media-controls/images/macOS/scale-to-fit@2x.png: Removed.
* Modules/modern-media-controls/images/macOS/start@1x.png: Removed.
* Modules/modern-media-controls/images/macOS/start@2x.png: Removed.
* Modules/modern-media-controls/images/macOS/volume-compact@1x.png: Removed.
* Modules/modern-media-controls/images/macOS/volume-compact@2x.png: Removed.
* Modules/modern-media-controls/images/macOS/volume-down-fullscreen@1x.png: Removed.
* Modules/modern-media-controls/images/macOS/volume-down-fullscreen@2x.png: Removed.
* Modules/modern-media-controls/images/macOS/volume-mute-compact@1x.png: Removed.
* Modules/modern-media-controls/images/macOS/volume-mute-compact@2x.png: Removed.
* Modules/modern-media-controls/images/macOS/volume-mute@1x.png: Removed.
* Modules/modern-media-controls/images/macOS/volume-mute@2x.png: Removed.
* Modules/modern-media-controls/images/macOS/volume-up-fullscreen@1x.png: Removed.
* Modules/modern-media-controls/images/macOS/volume-up-fullscreen@2x.png: Removed.
* Modules/modern-media-controls/images/macOS/volume@1x.png: Removed.
* Modules/modern-media-controls/images/macOS/volume@2x.png: Removed.
* Modules/modern-media-controls/js-files:
* Modules/modern-media-controls/main.js:
(UIString):
(formatTimeByUnit):
* Modules/modern-media-controls/media/audio-support.js: Added.
(AudioSupport.prototype.get control):
(AudioSupport.prototype.get mediaEvents):
(AudioSupport.prototype.get tracksToMonitor):
(AudioSupport.prototype.syncControl):
(AudioSupport):
* Modules/modern-media-controls/media/controls-visibility-support.js:
(ControlsVisibilitySupport.prototype._updateControls):
(ControlsVisibilitySupport):
* Modules/modern-media-controls/media/fullscreen-support.js:
(FullscreenSupport.prototype.buttonWasPressed):
(FullscreenSupport.prototype.syncControl):
(FullscreenSupport):
(FullscreenSupport.prototype.iOSInlineMediaControlsRecognizedPinchInGesture): Deleted.
* Modules/modern-media-controls/media/media-controller.js:
(MediaController):
(MediaController.prototype.get isAudio):
(MediaController.prototype.get isYouTubeEmbedWithTitle):
(MediaController.prototype.get isFullscreen):
(MediaController.prototype.get layoutTraits):
(MediaController.prototype.iOSInlineMediaControlsRecognizedTapGesture):
(MediaController.prototype.iOSInlineMediaControlsRecognizedPinchInGesture):
(MediaController.prototype._updateControlsIfNeeded):
(MediaController.prototype._updateTextTracksClassList):
(MediaController.prototype.controlsBarFadedStateDidChange): Deleted.
* Modules/modern-media-controls/media/media-document-controller.js:
(MediaDocumentController.prototype._mediaDocumentHasMetadata):
* Modules/modern-media-controls/media/placard-support.js:
(PlacardSupport.prototype._updatePlacard):
(PlacardSupport):
* Modules/modern-media-controls/media/scrubbing-support.js:
(ScrubbingSupport.prototype.get mediaEvents):
(ScrubbingSupport.prototype.syncControl):
(ScrubbingSupport):
* Modules/modern-media-controls/media/skip-back-support.js:
* Modules/modern-media-controls/media/skip-forward-support.js: Added.
(SkipForwardSupport.prototype.get control):
(SkipForwardSupport.prototype.get mediaEvents):
(SkipForwardSupport.prototype.buttonWasPressed):
(SkipForwardSupport.prototype.syncControl):
(SkipForwardSupport):
* Modules/modern-media-controls/media/start-support.js:
(StartSupport):
(StartSupport.prototype.handleEvent):
(StartSupport.prototype._shouldShowStartButton):
(StartSupport.prototype.get control): Deleted.
(StartSupport.prototype.syncControl): Deleted.
* Modules/modern-media-controls/media/status-support.js:
(StatusSupport.prototype.get mediaEvents):
(StatusSupport.prototype.syncControl):
(StatusSupport):
* Modules/modern-media-controls/media/time-control-support.js: Renamed from Source/WebCore/Modules/modern-media-controls/media/time-labels-support.js.
(TimeControlSupport.prototype.syncControl):
(TimeControlSupport):
* Modules/modern-media-controls/media/tracks-support.js:
(TracksSupport.prototype.syncControl):
* WebCore.xcodeproj/project.pbxproj:

LayoutTests:

Update test expectations to make a few of the tests we had already rebaselined pass.

* TestExpectations:
* platform/ios-simulator/TestExpectations:
* platform/mac/TestExpectations:

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

3 years agoAdd a version number to ARES-6
sbarati@apple.com [Tue, 6 Jun 2017 07:57:45 +0000 (07:57 +0000)]
Add a version number to ARES-6
https://bugs.webkit.org/show_bug.cgi?id=172962

Reviewed by Yusuke Suzuki.

* ARES-6/glue.js:
(driver.reportResult):

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

3 years agoRebaseline fast/mediacapturefromelement/CanvasCaptureMediaStream-2d-events.html and...
ryanhaddad@apple.com [Tue, 6 Jun 2017 06:30:49 +0000 (06:30 +0000)]
Rebaseline fast/mediacapturefromelement/CanvasCaptureMediaStream-2d-events.html and update TestExpectations.

Unreviewed test gardening.

* fast/mediacapturefromelement/CanvasCaptureMediaStream-2d-events-expected.txt:

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

3 years agoSkip storage/domstorage/sessionstorage/set-item-synchronous-keydown.html on iOS.
ryanhaddad@apple.com [Tue, 6 Jun 2017 05:44:03 +0000 (05:44 +0000)]
Skip storage/domstorage/sessionstorage/set-item-synchronous-keydown.html on iOS.
https://bugs.webkit.org/show_bug.cgi?id=172943

Unreviewed test gardening.

* platform/ios/TestExpectations:

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

3 years agoTry to fix features.json by adding an ESNext section.
sbarati@apple.com [Tue, 6 Jun 2017 04:53:35 +0000 (04:53 +0000)]
Try to fix features.json by adding an ESNext section.

Unreviewed.

* features.json:

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

3 years agoRefactor -[WebItemProviderPasteboard valuesForPasteboardType:inItemSet:] to check...
wenson_hsieh@apple.com [Tue, 6 Jun 2017 04:47:39 +0000 (04:47 +0000)]
Refactor -[WebItemProviderPasteboard valuesForPasteboardType:inItemSet:] to check readable types
https://bugs.webkit.org/show_bug.cgi?id=172891
<rdar://problem/32204540>

Reviewed by Darin Adler.

Source/WebCore:

Tweaks some logic in PlatformPasteboardIOS and WebItemProviderPasteboard to correctly construct objects in
-valuesForPasteboardType:inItemSet:. Previously, we have a hard-coded map of UTI type to Class in the form of
static helpers titled is{RichText, String, URL, Image, Color}Type in WebItemProviderPasteboard. We would use
these functions to determine whether an NSAttributedString, NSString, NSURL, UIImage or UIColor should be
constructed using the loaded item provider data. This is incorrect for some UTIs, such as public.html, which
cannot actually be used to construct an NSAttributedString -- this caused -valuesForPasteboardType:inItemSet: to
always return nil when attempting to create an object corresponding to public.html.

To fix this, we refactor -valuesForPasteboardType:inItemSet: to instead iterate through UIItemProviderReading-
conformant classes in search for a class that can be created for the given UTI type. If no such class exists, we
then fall back to custom WebKit handling of the dropped UTI type, which so far only includes reading an NSString
with public.plain-text if the UTI is public.html (i.e. reading the HTML source from loaded item provider data).

Covered by 2 new API tests:
DataInteractionTests.ExternalSourceHTMLToContentEditable
DataInteractionTests.ExternalSourceAttributedStringToContentEditable

* platform/ios/PlatformPasteboardIOS.mm:
(WebCore::PlatformPasteboard::stringForType):
(WebCore::PlatformPasteboard::readString):

In some cases, -[WebItemProviderPasteboard valuesForPasteboardType:inItemSet:] may now return an
NSAttributedString when an NSString was previously created. This adjusts for that possibility by returning just
the plain text, -[NSAttributedString string], if the read object was an NSAttributedString.

* platform/ios/WebItemProviderPasteboard.mm:
(allLoadableClasses):
(classForTypeIdentifier):
(-[WebItemProviderPasteboard valuesForPasteboardType:inItemSet:]):

See description above for more details.

(isRichTextType): Deleted.
(isStringType): Deleted.
(isURLType): Deleted.
(isColorType): Deleted.
(isImageType): Deleted.

Removes these heuristics that attempt to "guess" the best UIItemProviderReading class to try and load for a
given UTI type.

* rendering/RenderText.cpp:
(WebCore::RenderText::draggedContentRangesBetweenOffsets):

Adds a nil check to fix a debug assertion hit when running DataInteractionTests.

Tools:

Adds 2 new API tests to exercise data interaction of HTML data and an attributed string into a rich
contenteditable. See WebCore ChangeLog for more details.

* TestWebKitAPI/Tests/ios/DataInteractionTests.mm:
(TestWebKitAPI::TEST):

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

3 years agoUnreviewed GTK expectations gardening
mcatanzaro@igalia.com [Tue, 6 Jun 2017 04:00:37 +0000 (04:00 +0000)]
Unreviewed GTK expectations gardening

Mark a few tests as crashing.

* platform/gtk/TestExpectations:

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

3 years agoFollow-up: Update JSC's features.json
ddkilzer@apple.com [Tue, 6 Jun 2017 03:51:15 +0000 (03:51 +0000)]
Follow-up: Update JSC's features.json
https://bugs.webkit.org/show_bug.cgi?id=172942

Rubber-stamped by Jon Davis.

* features.json: Change "Supported in preview" to
"Supported" to try to fix <https://webkit.org/status/>.

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

3 years agoTry to fix the GTK build.
ggaren@apple.com [Tue, 6 Jun 2017 03:22:19 +0000 (03:22 +0000)]
Try to fix the GTK build.

Unreviewed.

* bmalloc/List.h:

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

3 years agoWe don't properly parse init_expr when the opcode is an unexpected opcode
sbarati@apple.com [Tue, 6 Jun 2017 02:59:54 +0000 (02:59 +0000)]
We don't properly parse init_expr when the opcode is an unexpected opcode
https://bugs.webkit.org/show_bug.cgi?id=172945

Reviewed by JF Bastien.

The bug is a simple typo. It should use the constant
`true` instead of `false` when invoking the WASM_PARSER_FAIL_IF
macro. This failure is already caught by spec tests that fail
on arm64 devices.

* wasm/WasmModuleParser.cpp:

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

3 years agoASSERTION FAILED: RunLoop::isMain() in com.apple.WebKit: IPC::Connection::sendSyncMes...
cdumez@apple.com [Tue, 6 Jun 2017 02:59:05 +0000 (02:59 +0000)]
ASSERTION FAILED: RunLoop::isMain() in com.apple.WebKit: IPC::Connection::sendSyncMessage + 128
https://bugs.webkit.org/show_bug.cgi?id=172943
<rdar://problem/31288058>

Reviewed by Alexey Proskuryakov.

Make test clean a little bit more robust.

* storage/domstorage/sessionstorage/set-item-synchronous-keydown.html:

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

3 years agoOMG tier up checks should be a patchpoint
keith_miller@apple.com [Tue, 6 Jun 2017 02:34:52 +0000 (02:34 +0000)]
OMG tier up checks should be a patchpoint
https://bugs.webkit.org/show_bug.cgi?id=172944

Reviewed by Saam Barati.

Tier up checks in BBQ should be done as a patchpoint rather than individual B3 opcodes.
In order to reduce code generated out of line in each function. We generate a single stub
that pushes all the callee-saves. This looks like a 5-10% compile time speedup.

* wasm/WasmB3IRGenerator.cpp:
(JSC::Wasm::B3IRGenerator::B3IRGenerator):
(JSC::Wasm::B3IRGenerator::emitTierUpCheck):
(JSC::Wasm::B3IRGenerator::addLoop):
* wasm/WasmThunks.cpp:
(JSC::Wasm::triggerOMGTierUpThunkGenerator):
* wasm/WasmThunks.h:

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

3 years agobmalloc: Small and large objects should share memory
ggaren@apple.com [Tue, 6 Jun 2017 02:21:11 +0000 (02:21 +0000)]
bmalloc: Small and large objects should share memory
https://bugs.webkit.org/show_bug.cgi?id=172880
<rdar://problem/31494732>

Reviewed by Sam Weinig.

This reduces our high water mark memory usage on JetStream on macOS
by 10%-20%. It also has the nice side effect that we can free small
object metadata after returning from a high water mark.

No change in throughput.

Our old algorithm allocated small object chunks and large objects in
segregated virtual memory and never recycled addresses between them.
This provided a slight security benefit because we could apply guard
pages between the segregated ranges and we would never reuse the same
virtual address for object and metadata memory.

Our new algorithm allocates small object chunks from the large object
allocator. This naturally recycles memory between small chunks and large
objects, and between small chunks of different page classes. This allows
us to shift memory between allocation types as a program moves between
different phases of allocation, and to delete small object chunk metadata
when a program shrinks back from a high water mark.

Two intuitions I had about memory use turned out to be backwards in
this context:

(1) I thought that this optimization would work because it allowed you to
allocate and free a 4MB object and then reuse that large allocation to
service small allocations. In practice, the common benefit seems to be
the opposite: After you allocate and free many small objects, you can
stitch them together to allocate a large object without growing the heap.

(2) I thought that it would be more memory-efficient to allocate
fine-grained pages from the large object allocator. In practice, giving
the large object allocator too many arbitrarily-sized ranges to manage
leads to fragmentation. Meanwhile, segregated fit is a powerful memory
optimization. So, it's best to return small object memory to the large
allocator only when a whole small object chunk is free.

* bmalloc/Chunk.h:
(bmalloc::Chunk::ref):
(bmalloc::Chunk::deref):
(bmalloc::Chunk::refCount):
(bmalloc::Chunk::freePages): We keep a free list per chunk and refcount
each chunk so we can notice when a chunk becomes empty, and return it
to the large allocator.

(bmalloc::forEachPage): A new helper function for iterating the pages
in a Chunk.

(bmalloc::Chunk::Chunk): Use forEachPage instead of manual iteration.
Use { } initialization because we don't get zero-initialized by the OS
anymore.

* bmalloc/Heap.cpp:
(bmalloc::Heap::Heap):
(bmalloc::Heap::concurrentScavenge):
(bmalloc::Heap::scavenge): Don't bother unlocking while scavenging. I
wasn't able to show it to be a consistent speedup. A more promising
approach, if we find a motivating example, is for the scavenger to give
up and return early if any other client is waiting on the lock.

(bmalloc::Heap::allocateSmallChunk): New helper function for allocating
a small chunk. It allocates through the large allocator to facilitate
sharing. We still allocate a chunk at a time instead of a page at a time.
Surprisingly, more precise page-at-a-time allocation is worse for memory
use because of fragmentation. Segregated fit is a powerful optimization.

(bmalloc::Heap::deallocateSmallChunk): New helper function for deallocating
a small chunk.

(bmalloc::Heap::allocateSmallPage): Updated for new APIs.

(bmalloc::Heap::deallocateSmallLine):  Updated for new APIs. Note that
we cache one free chunk per page class. This avoids churn in the large
allocator when you free(malloc(X)).

(bmalloc::Heap::allocateSmallBumpRangesByMetadata):
(bmalloc::Heap::allocateSmallBumpRangesByObject):
(bmalloc::Heap::tryAllocateLarge):
(bmalloc::Heap::scavengeSmallPages): Deleted.
(bmalloc::Heap::scavengeLargeObjects): Deleted.
* bmalloc/Heap.h:

* bmalloc/LargeMap.h:
(bmalloc::LargeMap::begin):
(bmalloc::LargeMap::end): Added iteration helpers for scavenging.

* bmalloc/LargeRange.h:
(bmalloc::LargeRange::physicalSize): Added a comment about something
that I confused myself about in this patch.

* bmalloc/List.h:
(bmalloc::List::iterator::operator*):
(bmalloc::List::iterator::operator->):
(bmalloc::List::iterator::operator!=):
(bmalloc::List::iterator::operator++):
(bmalloc::List::begin):
(bmalloc::List::end):
(bmalloc::List::pushFront):
(bmalloc::List::remove):
(bmalloc::ListNode::ListNode): Deleted. Added iteration helpers for
scavenging. Changed the default state of a Node to null pointers instead
of self pointers to distinguish the null node from the empty node for
easier debugging.

* bmalloc/Sizes.h: Changed the chunk size to 1MB to increase the chances
of a chunk becoming free and recyclable.

* bmalloc/SmallPage.h:
(bmalloc::SmallPage::hasPhysicalPages):
(bmalloc::SmallPage::setHasPhysicalPages): Track physical state by page
instead of implicitly by which list a page is in. It's simpler not
to have to move chunks and pages between physical vs virtual lists.

(bmalloc::SmallPage::SmallPage): Deleted.

* bmalloc/VMHeap.cpp:
(bmalloc::VMHeap::tryAllocateLargeChunk):
(bmalloc::VMHeap::allocateSmallChunk): Deleted.
* bmalloc/VMHeap.h:
(bmalloc::VMHeap::allocateSmallPage): Deleted.
(bmalloc::VMHeap::deallocateSmallPage): Deleted. Small chunk allocation
just forwards to the large allocator now.

* bmalloc/bmalloc.h:
(bmalloc::api::scavenge):

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

3 years agoASSERTION FAILED: RunLoop::isMain() in com.apple.WebKit: IPC::Connection::sendSyncMes...
cdumez@apple.com [Tue, 6 Jun 2017 02:03:29 +0000 (02:03 +0000)]
ASSERTION FAILED: RunLoop::isMain() in com.apple.WebKit: IPC::Connection::sendSyncMessage + 128
https://bugs.webkit.org/show_bug.cgi?id=172943
<rdar://problem/31288058>

Reviewed by Alexey Proskuryakov.

Source/WebKit2:

In Connection::sendMessage(), make sure we only ever transform asynchronous messages into synchronous
ones if sendMessage() is called on the main thread. This is necessary because we no longer support
sending synchronous messages from a background thread since r205125.

* Platform/IPC/Connection.cpp:
(IPC::Connection::sendMessage):
(IPC::Connection::sendSyncMessage):

LayoutTests:

Add better test coverage.

* storage/domstorage/sessionstorage/set-item-synchronous-keydown-expected.txt: Added.
* storage/domstorage/sessionstorage/set-item-synchronous-keydown.html: Added.

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

3 years agoRevert r217405, this headerpad increase is no longer needed.
joepeck@webkit.org [Tue, 6 Jun 2017 00:03:55 +0000 (00:03 +0000)]
Revert r217405, this headerpad increase is no longer needed.

Rubber-stamped by Dan Bernstein.

* Configurations/BaseXPCService.xcconfig:

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

3 years agoRemove unused VM members
joepeck@webkit.org [Tue, 6 Jun 2017 00:03:53 +0000 (00:03 +0000)]
Remove unused VM members
https://bugs.webkit.org/show_bug.cgi?id=172941

Reviewed by Mark Lam.

* runtime/HashMapImpl.h:
(JSC::HashMapImpl::selectStructure): Deleted.
* runtime/VM.cpp:
(JSC::VM::VM):
* runtime/VM.h:

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

3 years agoWeb Inspector: Improve ES6 Class instances in Heap Snapshot instances view
commit-queue@webkit.org [Mon, 5 Jun 2017 23:52:25 +0000 (23:52 +0000)]
Web Inspector: Improve ES6 Class instances in Heap Snapshot instances view
https://bugs.webkit.org/show_bug.cgi?id=172848
<rdar://problem/25709212>

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2017-06-05
Reviewed by Saam Barati.

JSTests:

* typeProfiler/inheritance.js:
Rewrite the test slightly for clarity. The hoisting was confusing.

* heapProfiler/class-names.js: Added.
(MyES5Class):
(MyES6Class):
(MyES6Subclass):
Test object types and improved class names.

* heapProfiler/driver/driver.js:
(CheapHeapSnapshotNode):
(CheapHeapSnapshot):
(createCheapHeapSnapshot):
(HeapSnapshot):
(createHeapSnapshot):
Update snapshot parsing from version 1 to version 2.

Source/JavaScriptCore:

* heap/HeapSnapshotBuilder.h:
* heap/HeapSnapshotBuilder.cpp:
Update the snapshot version. Change the node's 0 | 1 internal value
to be a 32bit bit flag. This is nice in that it is both compatible
with the previous snapshot version and the same size. We can use more
flags in the future.

(JSC::HeapSnapshotBuilder::json):
In cases where the classInfo gives us "Object" check for a better
class name by checking (o).__proto__.constructor.name. We avoid this
check in cases where (o).hasOwnProperty("constructor") which is the
case for most Foo.prototype objects. Otherwise this would get the
name of the Foo superclass for the Foo.prototype object.

* runtime/JSObject.cpp:
(JSC::JSObject::calculatedClassName):
Handle some possible edge cases that were not handled before. Such
as a JSObject without a GlobalObject, and an object which doesn't
have a default getPrototype. Try to make the code a little clearer.

Source/WebInspectorUI:

* UserInterface/Workers/HeapSnapshot/HeapSnapshot.js:
(HeapSnapshot):
Support the new snapshot version. The only thing that changes are the
node flags, and its actually completely compatible with version 1.

(HeapSnapshot.updateCategoriesAndMetadata):
List the count of object type instances in each class category.

(HeapSnapshot.prototype.serializeNode):
Include whether or not the node is an object type.

* UserInterface/Proxies/HeapSnapshotNodeProxy.js:
(WebInspector.HeapSnapshotNodeProxy):
(WebInspector.HeapSnapshotNodeProxy.deserialize):
Add a new Node isObjectType property based on the new data.

* UserInterface/Views/HeapSnapshotClassDataGridNode.js:
(WebInspector.HeapSnapshotClassDataGridNode.prototype.createCellContent):
* UserInterface/Views/HeapSnapshotClusterContentView.js:
(WebInspector.HeapSnapshotClusterContentView.iconStyleClassNameForClassName):
If a class contains 50% or more object type instances then it as such
instead of defaulting to native.

* UserInterface/Views/HeapSnapshotDataGridTree.js:
(WebInspector.HeapSnapshotInstancesDataGridTree.prototype.populateTopLevel):
* UserInterface/Views/HeapSnapshotInstanceDataGridNode.js:
(WebInspector.HeapSnapshotInstanceDataGridNode.prototype.createCellContent):
We can be more specific than the default if the individual instance is
known to be an object type.

LayoutTests:

* inspector/unit-tests/heap-snapshot-expected.txt:
* inspector/unit-tests/heap-snapshot.html:
Update for the new node flag.

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

3 years agoBuild fix for macOS 10.12
mitz@apple.com [Mon, 5 Jun 2017 23:51:12 +0000 (23:51 +0000)]
Build fix for macOS 10.12

* platform/spi/cocoa/AVKitSPI.h:

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

3 years agoUpdate JSC's features.json
sbarati@apple.com [Mon, 5 Jun 2017 23:32:27 +0000 (23:32 +0000)]
Update JSC's features.json
https://bugs.webkit.org/show_bug.cgi?id=172942

Rubber stamped by Mark Lam.

* features.json:

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

3 years agoTried to fix the build when targrting macOS 10.12 using the macOS 10.13 developer...
mitz@apple.com [Mon, 5 Jun 2017 23:15:43 +0000 (23:15 +0000)]
Tried to fix the build when targrting macOS 10.12 using the macOS 10.13 developer beta SDK.

Source/WebCore:

* platform/mac/WebPlaybackControlsManager.h:
* platform/mac/WebPlaybackControlsManager.mm:
(-[WebPlaybackControlsManager togglePictureInPicture]):

Source/WebKit2:

* UIProcess/Cocoa/WebViewImpl.h:
* UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::mediaPlaybackControlsView):

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

3 years agoTried to fix the build when targrting macOS 10.12 using the macOS 10.13 developer...
mitz@apple.com [Mon, 5 Jun 2017 23:04:12 +0000 (23:04 +0000)]
Tried to fix the build when targrting macOS 10.12 using the macOS 10.13 developer beta SDK.

Source/WebCore:

* platform/spi/cocoa/AVKitSPI.h:

Source/WebKit/mac:

* WebView/WebView.mm:
(-[WebView updateMediaTouchBar]):
* WebView/WebViewData.h:

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

3 years agowebkitpy: Abstract Executive class
dbates@webkit.org [Mon, 5 Jun 2017 23:01:21 +0000 (23:01 +0000)]
webkitpy: Abstract Executive class
https://bugs.webkit.org/show_bug.cgi?id=172928
<rdar://problem/32569531>

Reviewed by Ryosuke Niwa.

Adds an AbstractExecutive class and makes Executive extend AbstractExecutive.
This will make it straightforward to create additional derived classes that
adhere to the same interface, say for iOS on-device testing.

* Scripts/webkitpy/common/system/abstractexecutive.py: Added.
(AbstractExecutive):
(AbstractExecutive.run_and_throw_if_fail):
(AbstractExecutive.cpu_count):
(AbstractExecutive.interpreter_for_script):
(AbstractExecutive.shell_command_for_script):
(AbstractExecutive.kill_process):
(AbstractExecutive.check_running_pid):
(AbstractExecutive.running_pids):
(AbstractExecutive.wait_newest):
(AbstractExecutive.wait_limited):
(AbstractExecutive.interrupt):
(AbstractExecutive.default_error_handler):
(AbstractExecutive.ignore_error):
(AbstractExecutive._stringify_args):
(AbstractExecutive.command_for_printing):
(AbstractExecutive.run_command):
(AbstractExecutive.popen):
(AbstractExecutive.run_in_parallel):
* Scripts/webkitpy/common/system/executive.py:
(Executive):
(Executive.cpu_count):
(Executive.running_pids):
(Executive.kill_all):
(Executive._compute_stdin):
(Executive.interpreter_for_script): Deleted.
(Executive.shell_command_for_script): Deleted.
(Executive.wait_newest): Deleted.
(Executive.wait_limited): Deleted.
(Executive.default_error_handler): Deleted.
(Executive.ignore_error): Deleted.
(Executive.command_for_printing): Deleted.

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

3 years agoUnreviewed, fix missing semicolon in r217795
annulen@yandex.ru [Mon, 5 Jun 2017 22:41:42 +0000 (22:41 +0000)]
Unreviewed, fix missing semicolon in r217795

* platform/graphics/win/MediaPlayerPrivateMediaFoundation.cpp:
(WebCore::calculateNaturalSize):

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

3 years agoAllow clients to specify a list of codecs which should require hardware decode support.
jer.noble@apple.com [Mon, 5 Jun 2017 22:40:30 +0000 (22:40 +0000)]
Allow clients to specify a list of codecs which should require hardware decode support.
https://bugs.webkit.org/show_bug.cgi?id=172787

Reviewed by Alex Christensen.

Source/WebCore:

Add a new setting, checked by HTMLMediaElement, which allows MediaPlayerPrivate implementation
to require that the specified codecs have hardware support. This requirement will be supported
in the normal media loading path and the MSE path on Cocoa ports.

* WebCore.xcodeproj/project.pbxproj:
* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::mediaCodecsRequiringHardwareSupport):
* html/HTMLMediaElement.h:
* page/Settings.cpp:
(WebCore::Settings::setMediaCodecsRequiringHardwareSupport):
* page/Settings.h:
(WebCore::Settings::mediaCodecsRequiringHardwareSupport):
* platform/cocoa/VideoToolboxSoftLink.cpp:
* platform/cocoa/VideoToolboxSoftLink.h:
* platform/graphics/MediaPlayer.h:
(WebCore::MediaPlayerClient::mediaCodecsRequiringHardwareSupport):
* platform/graphics/avfoundation/objc/AVAssetTrackUtilities.h: Added.
* platform/graphics/avfoundation/objc/AVAssetTrackUtilities.mm: Added.
(WebCore::assetTrackMeetsHardwareDecodeRequirements):
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
(WebCore::MediaPlayerPrivateAVFoundationObjC::checkPlayability):
(WebCore::MediaPlayerPrivateAVFoundationObjC::assetStatus):
* platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:
(WebCore::SourceBufferPrivateAVFObjC::didParseStreamDataAsAsset):

Source/WebKit2:

Add a WKWebPageConfiguration (and associated WebPreferences and WKPreferencesRef) properties
allowing clients to require specified codecs have hardware decode support. Also open up the
sandbox on Cocoa ports to services required to check for hardware decode availability.

* Shared/WebPreferencesDefinitions.h:
* UIProcess/API/C/WKPreferences.cpp:
(WKPreferencesSetMediaCodecsRequiringHardwareSupport):
(WKPreferencesCopyMediaCodecsRequiringHardwareSupport):
* UIProcess/API/C/WKPreferencesRefPrivate.h:
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _initializeWithConfiguration:]):
* UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
(-[WKWebViewConfiguration copyWithZone:]):
(-[WKWebViewConfiguration _mediaCodecsRequiringHardwareSupport]):
(-[WKWebViewConfiguration _setMediaCodecsRequiringHardwareSupport:]):
* UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
* WebProcess/com.apple.WebProcess.sb.in:

Source/WTF:

Add a couple of convenience methods:
- a String::split() that returns a vector (rather than taking an out-reference to a vector).
- A Vector::map() template which takes a Callable and returns a Vector of a different type.

* wtf/Vector.h:
(WTF::Vector::map):
* wtf/text/WTFString.h:
(WTF::String::split):

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

3 years agoTried to fix the build when targrting macOS 10.12 using the macOS 10.13 developer...
mitz@apple.com [Mon, 5 Jun 2017 22:28:03 +0000 (22:28 +0000)]
Tried to fix the build when targrting macOS 10.12 using the macOS 10.13 developer beta SDK.

* platform/mac/WebPlaybackControlsManager.mm:
(-[WebPlaybackControlsManager togglePictureInPicture]):

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

3 years agoTried to fix the build when targrting macOS 10.12 using the macOS 10.13 developer...
mitz@apple.com [Mon, 5 Jun 2017 22:12:57 +0000 (22:12 +0000)]
Tried to fix the build when targrting macOS 10.12 using the macOS 10.13 developer beta SDK.

* platform/spi/mac/AVFoundationSPI.h:

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

3 years agoTried to fix the build when targrting macOS 10.12 using the macOS 10.13 developer...
mitz@apple.com [Mon, 5 Jun 2017 21:54:06 +0000 (21:54 +0000)]
Tried to fix the build when targrting macOS 10.12 using the macOS 10.13 developer beta SDK.

* platform/spi/cocoa/IOSurfaceSPI.h:

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

3 years agoFix MediaPlayerPrivateMediaFoundation::naturalSize
annulen@yandex.ru [Mon, 5 Jun 2017 21:45:28 +0000 (21:45 +0000)]
Fix MediaPlayerPrivateMediaFoundation::naturalSize
https://bugs.webkit.org/show_bug.cgi?id=172908

Reviewed by Alex Christensen.

MediaPlayerPrivateMediaFoundation::naturalSize should return size of
video frame corrected by PAR, not size of video element.

No new tests needed.

* platform/graphics/win/MediaPlayerPrivateMediaFoundation.cpp:
(WebCore::MediaPlayerPrivateMediaFoundation::load):
(WebCore::MediaPlayerPrivateMediaFoundation::naturalSize):
(WebCore::MediaPlayerPrivateMediaFoundation::setNaturalSize):
(WebCore::calculateNaturalSize):
(WebCore::MediaPlayerPrivateMediaFoundation::CustomVideoPresenter::setMediaType):
* platform/graphics/win/MediaPlayerPrivateMediaFoundation.h:

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

3 years agoDestroy the associated renderer subtree when display: contents node is deleted.
zalan@apple.com [Mon, 5 Jun 2017 21:04:30 +0000 (21:04 +0000)]
Destroy the associated renderer subtree when display: contents node is deleted.
https://bugs.webkit.org/show_bug.cgi?id=172920
<rdar://problem/32446045>

Reviewed by Antti Koivisto.

Since display: contents node does not create a renderer, we need to explicitly check
and distinguish it from the display: none case.

Covered by existing tests.

* dom/ContainerNode.cpp:
(WebCore::destroyRenderTreeIfNeeded):
* dom/Node.cpp:
(WebCore::Node::~Node): Promote ASSERT(!renderer()) to ASSERT_WITH_SECURITY_IMPLICATION.
* dom/Text.cpp:
(WebCore::Text::~Text): Redundant assert. Text is a Node.

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

3 years agowebkitpy: Add iOS to platform
jbedard@apple.com [Mon, 5 Jun 2017 21:00:51 +0000 (21:00 +0000)]
webkitpy: Add iOS to platform
https://bugs.webkit.org/show_bug.cgi?id=172931

Reviewed by Daniel Bates.

* Scripts/webkitpy/common/system/platforminfo.py:
PlatformInfo.__init__): Use platform_module.release() as the os_version for iOS device.
(PlatformInfo.is_ios): Added.
(PlatformInfo._determine_os_name): A platform name of 'ios' means that the os name is 'ios'.
* Scripts/webkitpy/common/system/platforminfo_mock.py:
(MockPlatformInfo.is_ios): Added.

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

3 years ago[WPE][JHBuild] Switch github repository from git:// to https://
clopez@igalia.com [Mon, 5 Jun 2017 20:54:08 +0000 (20:54 +0000)]
[WPE][JHBuild] Switch github repository from git:// to https://
https://bugs.webkit.org/show_bug.cgi?id=172921

Reviewed by Alex Christensen.

* wpe/jhbuild.modules:

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

3 years agoModify Netflix controlsManager quirk to prevent only scrubbing
bdakin@apple.com [Mon, 5 Jun 2017 20:29:24 +0000 (20:29 +0000)]
Modify Netflix controlsManager quirk to prevent only scrubbing
https://bugs.webkit.org/show_bug.cgi?id=172881
-and corresponding-
rdar://problem/32228660

Reviewed by Andy Estes.

Source/WebCore:

Instead of preventing Netflix from getting a controlsManager at all, this patch
ONLY prevents touch bar scrubbing from working. This means that Netflix will now
get controls in the TouchBar, it means that the play/pause and PiP buttons will be
functional, and it means that the timeline will accurately represent the current
time, BUT users will not be able to use the timeline to scrub the video. This also
allows Netflix to work with other MediaRemote clients such as AirPods.

Remove the quirk code from here, since this is no longer the right place to test
if the MediaElement is hosted at Netflix.
* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::bestMediaElementForShowingPlaybackControlsManager):
(WebCore::needsPlaybackControlsManagerQuirk): Deleted.

Pass around a new bool allowsTouchBarScrubbing.
* platform/cocoa/WebPlaybackSessionModel.h:
(WebCore::WebPlaybackSessionModelClient::allowsTouchBarScrubbingChanged):
* platform/cocoa/WebPlaybackSessionModelMediaElement.h:

Here’s where we check if we need quirky behavior.
* platform/cocoa/WebPlaybackSessionModelMediaElement.mm:
(WebCore::WebPlaybackSessionModelMediaElement::updateForEventName):
(WebCore::WebPlaybackSessionModelMediaElement::allowsTouchBarScrubbing):

Return the bool we have plumbed through tracking whether the current site
allowsTouchBarScrubbing from the existing delegate method
canBeginTouchBarScrubbing. We will always return NO for video elements on Netflix,
and this will prevent users from be able to scrub with the TouchBar on Netflix.
* platform/mac/WebPlaybackControlsManager.h:
* platform/mac/WebPlaybackControlsManager.mm:
(-[WebPlaybackControlsManager canBeginTouchBarScrubbing]):

More plumbing.
* platform/mac/WebPlaybackSessionInterfaceMac.h:
* platform/mac/WebPlaybackSessionInterfaceMac.mm:
(WebCore::WebPlaybackSessionInterfaceMac::allowsTouchBarScrubbingChanged):
(WebCore::WebPlaybackSessionInterfaceMac::setPlayBackControlsManager):

Source/WebKit2:

Plumbing for allowsTouchBarScrubbing. See WebCore ChangeLog for more details.

* UIProcess/Cocoa/WebPlaybackSessionManagerProxy.h:
* UIProcess/Cocoa/WebPlaybackSessionManagerProxy.messages.in:
* UIProcess/Cocoa/WebPlaybackSessionManagerProxy.mm:
(WebKit::WebPlaybackSessionModelContext::setAllowsTouchBarScrubbing):
(WebKit::WebPlaybackSessionManagerProxy::setAllowsTouchBarScrubbing):
* WebProcess/cocoa/WebPlaybackSessionManager.h:
* WebProcess/cocoa/WebPlaybackSessionManager.mm:
(WebKit::WebPlaybackSessionInterfaceContext::allowsTouchBarScrubbingChanged):
(WebKit::WebPlaybackSessionManager::allowsTouchBarScrubbingChanged):

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

3 years agoUpdate index.html to include ARES-6.
sbarati@apple.com [Mon, 5 Jun 2017 17:49:25 +0000 (17:49 +0000)]
Update index.html to include ARES-6.

Rubber stamped by Ryosuke Niwa.

* index.html:

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

3 years agoRebaseline tests for Windows after r217772.
ryanhaddad@apple.com [Mon, 5 Jun 2017 16:35:20 +0000 (16:35 +0000)]
Rebaseline tests for Windows after r217772.
https://bugs.webkit.org/show_bug.cgi?id=172866

Unreviewed test gardening.

* platform/win/svg/W3C-SVG-1.1-SE/paths-dom-02-f-expected.txt:
* platform/win/svg/W3C-SVG-1.1/animate-elem-06-t-expected.txt:
* platform/win/svg/W3C-SVG-1.1/animate-elem-07-t-expected.txt:
* platform/win/svg/W3C-SVG-1.1/animate-elem-08-t-expected.txt:
* platform/win/svg/W3C-SVG-1.1/animate-elem-83-t-expected.txt:
* platform/win/svg/W3C-SVG-1.1/filters-example-01-b-expected.txt:
* platform/win/svg/W3C-SVG-1.1/paths-data-01-t-expected.txt:
* platform/win/svg/W3C-SVG-1.1/paths-data-02-t-expected.txt:
* platform/win/svg/W3C-SVG-1.1/paths-data-12-t-expected.txt:
* platform/win/svg/W3C-SVG-1.1/text-path-01-b-expected.txt:
* platform/win/svg/batik/filters/feTile-expected.txt:
* platform/win/svg/batik/filters/filterRegions-expected.txt:
* platform/win/svg/batik/masking/maskRegions-expected.txt:
* platform/win/svg/batik/paints/gradientLimit-expected.txt:
* platform/win/svg/batik/paints/patternPreserveAspectRatioA-expected.txt:
* platform/win/svg/batik/paints/patternRegionA-expected.txt:
* platform/win/svg/batik/paints/patternRegions-expected.txt:
* platform/win/svg/batik/paints/patternRegions-positioned-objects-expected.txt: Added.
* platform/win/svg/batik/text/longTextOnPath-expected.txt: Added.
* platform/win/svg/batik/text/smallFonts-expected.txt:
* platform/win/svg/batik/text/textAnchor-expected.txt:
* platform/win/svg/batik/text/textDecoration-expected.txt:
* platform/win/svg/batik/text/textEffect-expected.txt:
* platform/win/svg/batik/text/textEffect2-expected.txt:
* platform/win/svg/batik/text/textEffect3-expected.txt:
* platform/win/svg/batik/text/textFeatures-expected.txt:
* platform/win/svg/batik/text/textGlyphOrientationHorizontal-expected.txt:
* platform/win/svg/batik/text/textLayout-expected.txt:
* platform/win/svg/batik/text/textLayout2-expected.txt:
* platform/win/svg/batik/text/textLength-expected.txt:
* platform/win/svg/batik/text/textOnPathSpaces-expected.txt:
* platform/win/svg/batik/text/textPosition-expected.txt:
* platform/win/svg/batik/text/textProperties-expected.txt:
* platform/win/svg/batik/text/textProperties2-expected.txt:
* platform/win/svg/batik/text/textStyles-expected.txt:
* platform/win/svg/custom/broken-internal-references-expected.txt:
* platform/win/svg/custom/path-textPath-simulation-expected.txt:
* platform/win/svg/dom/SVGPathSegList-segment-modification-expected.txt:
* platform/win/svg/hixie/perf/001-expected.txt:
* platform/win/svg/hixie/perf/002-expected.txt:
* platform/win/svg/text/text-path-01-b-expected.txt:
* platform/win/svg/zoom/page/zoom-svg-through-object-with-override-size-expected.txt:

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

3 years ago[GStreamer] Deadlock in MediaPlayerPrivateGStreamer::changePipelineState, web process...
carlosgc@webkit.org [Mon, 5 Jun 2017 16:27:19 +0000 (16:27 +0000)]
[GStreamer] Deadlock in MediaPlayerPrivateGStreamer::changePipelineState, web process often locks up on seeking in a youtube video that has already fully buffered
https://bugs.webkit.org/show_bug.cgi?id=170003

Reviewed by Michael Catanzaro.

When video sink is requested to render a frame, the GstBaseSink preroll mutex is taken. Then WebKit media player
schedules a repaint in the main thread, taking the draw mutex and waiting on draw condition. It can happen that
before the repaint is done in the main thread, a pause is requested in the main thread, causing a change state
from PLAYING to PAUSE. When the change state reaches the video sink gst_base_sink_change_state() tries to get
the preroll mutex. This causes a deadlock because the main thread is waiting to get the preroll mutex, but the
other thread is waiting for the main thread to do the repaint. GStreamer handles this case by calling unlock()
on the video sink before trying to get the preroll mutex, but the media player doesn't cancel the pending
repaint when using coordinated graphics. This patch adds a new signal to WebKitVideoSink "repaint-cancelled" to
notify the media player to cancel the pending prepaint.

* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
(WebCore::MediaPlayerPrivateGStreamerBase::cancelRepaint): Release the draw mutex and notify the condition.
(WebCore::MediaPlayerPrivateGStreamerBase::repaintCancelledCallback): Call cancelRepaint().
(WebCore::MediaPlayerPrivateGStreamerBase::createVideoSink): Connect to WebKitVideoSink::repaint-cancelled.
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:
* platform/graphics/gstreamer/VideoSinkGStreamer.cpp:
(webkitVideoSinkRepaintCancelled): Emit WebKitVideoSink::repaint-cancelled.
(webkitVideoSinkUnlock): Call webkitVideoSinkRepaintCancelled().
(webkitVideoSinkStop): Ditto.
(webkit_video_sink_class_init): Add WebKitVideoSink::repaint-cancelled signal.

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

3 years ago[GStreamer] Cleanup ifdefs in MediaPlayerPrivateGStreamerBase
carlosgc@webkit.org [Mon, 5 Jun 2017 16:25:55 +0000 (16:25 +0000)]
[GStreamer] Cleanup ifdefs in MediaPlayerPrivateGStreamerBase
https://bugs.webkit.org/show_bug.cgi?id=172918

Reviewed by Michael Catanzaro.

The code in MediaPlayerPrivateGStreamerBase is quite difficult to follow with all the ifdefs for the
possibilities when rendering. Some of them are even dead code now that all ports using GStreamer are using also
coordinated graphics.

* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
(WebCore::MediaPlayerPrivateGStreamerBase::MediaPlayerPrivateGStreamerBase):
(WebCore::MediaPlayerPrivateGStreamerBase::~MediaPlayerPrivateGStreamerBase):
(WebCore::MediaPlayerPrivateGStreamerBase::pushTextureToCompositor):
(WebCore::MediaPlayerPrivateGStreamerBase::repaint):
(WebCore::MediaPlayerPrivateGStreamerBase::triggerRepaint):
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:
* platform/graphics/gstreamer/VideoSinkGStreamer.cpp:
(VideoRenderRequestScheduler::VideoRenderRequestScheduler):
(VideoRenderRequestScheduler::stop):
(VideoRenderRequestScheduler::requestRender):
(webkitVideoSinkRequestRender):

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

3 years agoUnreviewed. Fix compile warning when building GTK+ port without OpenGL.
carlosgc@webkit.org [Mon, 5 Jun 2017 16:05:04 +0000 (16:05 +0000)]
Unreviewed. Fix compile warning when building GTK+ port without OpenGL.

* platform/graphics/texmap/BitmapTexturePool.cpp:
(WebCore::BitmapTexturePool::createTexture):

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

3 years agoUnreviewed. Fix GTK+ build with OpenGL disabled after r217779.
carlosgc@webkit.org [Mon, 5 Jun 2017 16:03:10 +0000 (16:03 +0000)]
Unreviewed. Fix GTK+ build with OpenGL disabled after r217779.

* WebProcess/WebPage/AcceleratedDrawingArea.cpp:
(WebKit::AcceleratedDrawingArea::mainFrameContentSizeChanged):

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

3 years agoRemove debug-only flag for flaky test http/tests/navigation/statistics.html.
ryanhaddad@apple.com [Mon, 5 Jun 2017 15:59:35 +0000 (15:59 +0000)]
Remove debug-only flag for flaky test http/tests/navigation/statistics.html.
https://bugs.webkit.org/show_bug.cgi?id=172454

Unreviewed test gardening.

* platform/ios-wk2/TestExpectations:
* platform/mac-wk2/TestExpectations:

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

3 years agoASSERTION FAILED: m_currentScriptCallbackID in UIScriptContext::requestUIScriptComple...
timothy_horton@apple.com [Mon, 5 Jun 2017 15:42:13 +0000 (15:42 +0000)]
ASSERTION FAILED: m_currentScriptCallbackID in UIScriptContext::requestUIScriptCompletion(JSStringRef) running fast/events/ios/autocorrect-with-range-selection.html
https://bugs.webkit.org/show_bug.cgi?id=172887
<rdar://problem/32546061>

Reviewed by Sam Weinig.

* WebKitTestRunner/ios/UIScriptControllerIOS.mm:
(WTR::UIScriptController::applyAutocorrection):
applyAutocorrection can call its completion handler synchronously,
which makes UIScriptController unhappy (see bug 172884).

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

3 years ago[GTK][WPE] Do not force video sample's buffer release when the platformLayerProxy...
magomez@igalia.com [Mon, 5 Jun 2017 12:33:31 +0000 (12:33 +0000)]
[GTK][WPE] Do not force video sample's buffer release when the platformLayerProxy is inactive
https://bugs.webkit.org/show_bug.cgi?id=172916

Reviewed by Carlos Garcia Campos.

When MediaPlayerPrivateGStreamerBase's plarformLayerProxy was inactive, a copy of the video sample
was being done (without the buffer) and set, causing the sample's buffer to get freed. This was done
to avoid stalling the gstreamer pipeline in situations where the video was set to display:none, as the
platformLayerProxy would keep all the available buffers. But this can't happen nowadays as setting
the video to display:none invalidates the proxy, causing it to release the references to the
gstreamer buffers it's using. Also, the current code is causing a crash when using gstreamer-gl and
the video is hidden but its contents are being painted through webgl or an accelerated canvas. So,
remove this sample copy as it's not necessary anymore.

Covered by existent tests.

* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
(WebCore::MediaPlayerPrivateGStreamerBase::pushTextureToCompositor):

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

3 years ago[WPE] Use AcceleratedDrawingArea instead of its fork
carlosgc@webkit.org [Mon, 5 Jun 2017 12:01:53 +0000 (12:01 +0000)]
[WPE] Use AcceleratedDrawingArea instead of its fork
https://bugs.webkit.org/show_bug.cgi?id=172496

Reviewed by Žan Doberšek.

WPE uses its own drawing area implementation, which is actually a fork of AcceleratedDrawingArea, but simplified
for the case of compositing being always forced. AcceleratedDrawingArea already handles the case of compositing
being forced, so now that WPE is upstream we could simply use AcceleratedDrawingArea instead.

* PlatformWPE.cmake:
* Shared/DrawingAreaInfo.h: Remove DrawingAreaTypeWPE type.
* UIProcess/API/wpe/DrawingAreaProxyWPE.cpp: Removed.
* UIProcess/API/wpe/DrawingAreaProxyWPE.h: Removed.
* UIProcess/API/wpe/PageClientImpl.cpp:
(WebKit::PageClientImpl::createDrawingAreaProxy): Create an AcceleratedDrawingAreaProxy.
* WebProcess/WebPage/AcceleratedDrawingArea.cpp:
(WebKit::AcceleratedDrawingArea::mainFrameContentSizeChanged): Moved from DrawingAreaImpl since it actually
belongs here.
* WebProcess/WebPage/DrawingArea.cpp:
(WebKit::DrawingArea::create): Create an AcceleratedDrawingArea for WPE port.
* WebProcess/WebPage/DrawingAreaImpl.cpp: Remove mainFrameContentSizeChanged() that doesn't belong here.
* WebProcess/WebPage/DrawingAreaImpl.h:
* WebProcess/WebPage/wpe/DrawingAreaWPE.cpp: Removed.
* WebProcess/WebPage/wpe/DrawingAreaWPE.h: Removed.

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

3 years agoRebaseline media/modern-media-controls/audio/audio-controls-metrics.html
commit-queue@webkit.org [Mon, 5 Jun 2017 09:11:34 +0000 (09:11 +0000)]
Rebaseline media/modern-media-controls/audio/audio-controls-metrics.html
https://bugs.webkit.org/show_bug.cgi?id=172915

Patch by Antoine Quint <graouts@apple.com> on 2017-06-05
Reviewed by Antoine Quint.

The default height of <audio> elements is now 31pt.

* media/modern-media-controls/audio/audio-controls-metrics-expected.txt:
* media/modern-media-controls/audio/audio-controls-metrics.html:

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

3 years ago[GTK][WPE] Fix the condition to decide whether the MediaPlayer can be rendered accele...
magomez@igalia.com [Mon, 5 Jun 2017 07:45:12 +0000 (07:45 +0000)]
[GTK][WPE] Fix the condition to decide whether the MediaPlayer can be rendered accelerated
https://bugs.webkit.org/show_bug.cgi?id=172852

Reviewed by Michael Catanzaro.

Before this change, in order to determine whether the MediaPlayer rendering could be accelerated we
needed the player to have a renderer or it would return false. The renderer was needed in order to
access the RenderLayerCompositor and check whether the chrome would be overwriting the accelerated
compositing setting. But we don't have that option in WebKitGTK+ or WPE, so we can just check the
accelerated compositing setting directly.

Another problems with the approach before this change is that accelerated rendering was being disabled
when the video element was not visible, as there's no video renderer. Due to this, cases where the video
is painted through an accelerated canvas or webgl would not be using hardware accelerated copies.

Covered by existent tests.

* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
(WebCore::MediaPlayerPrivateGStreamerBase::acceleratedRenderingStateChanged):

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

3 years agoPercentages are calculated wrong in SVG transform CSS property
simon.fraser@apple.com [Mon, 5 Jun 2017 06:09:01 +0000 (06:09 +0000)]
Percentages are calculated wrong in SVG transform CSS property
https://bugs.webkit.org/show_bug.cgi?id=172901

Reviewed by Zalan Bujtas.
Source/WebCore:

The code added in r217236 was just fetching viewBox(), but that can be empty.
SVGLengthContext::determineViewport() does the correct thing to get
the appropriate viewport.

Test: svg/transforms/percent-transform-values-viewbox.html

* svg/SVGGraphicsElement.cpp:
(WebCore::SVGGraphicsElement::animatedLocalTransform):

LayoutTests:

* svg/transforms/percent-transform-values-viewbox-expected.html: Added.
* svg/transforms/percent-transform-values-viewbox.html: Added.
* svg/transforms/transform-origin-css-property-expected.xhtml:
* svg/transforms/transform-origin-css-property.xhtml: Make this test a bit less
annoying to maintain by applying the transforms relative to the fill-box, which means all
the transform origins are no longer offset by the box position. Other tests exercise
view-box relative transform origins.

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

3 years ago[MediaStream] Page capture state not reported correctly
eric.carlson@apple.com [Sun, 4 Jun 2017 20:56:58 +0000 (20:56 +0000)]
[MediaStream] Page capture state not reported correctly
https://bugs.webkit.org/show_bug.cgi?id=172897
<rdar://problem/32493318>

Reviewed by Youenn Fablet.

Source/WebCore:

Test: fast/mediastream/media-stream-track-muted.html

* Modules/mediastream/MediaStream.cpp:
(WebCore::MediaStream::mediaState): Test for audio and video mute on the tracks.
(WebCore::MediaStream::characteristicsChanged): Call statusDidChange when m_mediaState
changes instead of m_muted, so the page is informed when just audio or video mute state
changes.
* Modules/mediastream/MediaStream.h:

* testing/Internals.cpp:
(WebCore::Internals::setMediaStreamTrackMuted): New.
* testing/Internals.h:
* testing/Internals.idl:

LayoutTests:

* fast/mediastream/media-stream-track-muted-expected.txt: Added.
* fast/mediastream/media-stream-track-muted.html: Added.

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

3 years agoStreamline handling of attributes, using references as much as possible
darin@apple.com [Sun, 4 Jun 2017 18:19:16 +0000 (18:19 +0000)]
Streamline handling of attributes, using references as much as possible
https://bugs.webkit.org/show_bug.cgi?id=172899

Reviewed by Chris Dumez.

Source/WebCore:

* accessibility/AccessibilityNodeObject.cpp:
(WebCore::AccessibilityNodeObject::valueForRange): Use reference to value of
attribute instead of copy to avoid reference count churn.
(WebCore::AccessibilityNodeObject::maxValueForRange): Ditto.
(WebCore::AccessibilityNodeObject::minValueForRange): Ditto.
* accessibility/AccessibilitySVGElement.cpp:
(WebCore::AccessibilitySVGElement::childElementWithMatchingLanguage): Ditto.
(WebCore::AccessibilitySVGElement::accessibilityDescription): Ditto.
* css/PropertySetCSSStyleDeclaration.cpp:
(WebCore::StyleAttributeMutationScope::StyleAttributeMutationScope): Ditto.

* editing/cocoa/DataDetection.mm:
(WebCore::DataDetection::shouldCancelDefaultAction): Use the
equalLettersIgnoringASCIICase function instead of using
both equalIgnoringASCIICase and convertToASCIILowercase.

* html/HTMLAudioElement.cpp:
(WebCore::HTMLAudioElement::HTMLAudioElement): Marked this inline since we
want it inlined the one place it's used.
(WebCore::HTMLAudioElement::create): Use auto and named the local variable
just element.
(WebCore::HTMLAudioElement::createForJSConstructor): Call create rather than
repeating the code from create. Use setAttributeWithoutSynchronization directly
rather than calling helper functions. Removed unneeded null check;
setAttributeWithoutSynchronization handles null by removing the attribute.
* html/HTMLAudioElement.h: Changed src argument of createForJSConstructor to
take AtomicString since that is what we need for an attribute value.
* html/HTMLAudioElement.idl: Use [AtomicString] for src argument.

* html/HTMLElement.cpp:
(WebCore::HTMLElement::directionality): Use reference to value of
attribute instead of copy to avoid reference count churn.
(WebCore::HTMLElement::shouldAutocorrect): Ditto.

* html/HTMLImageElement.cpp:
(WebCore::HTMLImageElement::bestFitSourceFromPictureElement): Call the new
parsedMediaAttribute instead of the old mediaQuerySet function. Other than the
name, the only change is that the result is now a const pointer.

* html/HTMLInputElement.cpp:
(WebCore::HTMLInputElement::updateType): Removed unnecessary local variable,
resulting in code that is slightly cleaner and possibly eliminating reference
count chrun.

* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::setSrc): Deleted.
(WebCore::HTMLMediaElement::selectNextSourceChild): Use parsedMediaAttribute and
removed rendudant direct check of whether mediaAttr is present. Changed logging to
get the media attribute directly rather than with a helper function. Changed type
to get the type attribute directly rather than with a helper function.
(WebCore::HTMLMediaElement::sourceWasAdded): Take a reference rather than a pointer.
(WebCore::HTMLMediaElement::sourceWasRemoved): Ditto.
(WebCore::HTMLMediaElement::doesHaveAttribute): Use reference to value of
attribute instead of copy to avoid reference count churn.
* html/HTMLMediaElement.h: Updated for the above.

* html/HTMLSourceElement.cpp:
(WebCore::HTMLSourceElement::insertedInto): Pass reference instead of pointer.
(WebCore::HTMLSourceElement::removedFrom): Ditto.
(WebCore::HTMLSourceElement::setSrc): Deleted.
(WebCore::HTMLSourceElement::media): Deleted.
(WebCore::HTMLSourceElement::setMedia): Deleted.
(WebCore::HTMLSourceElement::type): Deleted.
(WebCore::HTMLSourceElement::setType): Deleted.
(WebCore::HTMLSourceElement::parseAttribute): Clear out m_cachedParsedMediaAttribute.
This makes the parsing be lazy. The old code would parse the attribute value to make
a MediaQuerySet here, but we do it in parsedMediaAttribute now.
(WebCore::HTMLSourceElement::parsedMediaAttribute): Added. Creates a MediaQuerySet
if needed, and returns it or null.
* html/HTMLSourceElement.h: Removed include of MediaList.h. Removed unneeded media,
type, setSrc, setMedia, and setType functions. Replaced the mediaQuerySet function
with the parsedMediaAttribute, which returns a const pointer rather than non-const,
and is also non-inline because it lazily creates the MediaQuerySet as needed. Replaced
m_mediaQuerySet with m_cachedParsedMediaAttribute.
* html/HTMLSourceElement.idl: Use [Reflect] for both type and media.

* html/MediaDocument.cpp: Modernize the MediaDocumentParser constructor.
(WebCore::MediaDocumentParser::createDocumentStructure): Instead of setSrc, use
setAttributeWithoutSynchronization for the src attribute just as we do for all the
other attributes of the newly created video element.

* html/MediaElementSession.cpp:
(WebCore::MediaElementSession::wirelessVideoPlaybackDisabled): Use reference to
value of attribute instead of copy to avoid reference count churn.
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::defaultSubstituteDataForURL): Ditto.
* rendering/RenderThemeIOS.mm:
(WebCore::getAttachmentProgress): Ditto.
* rendering/RenderThemeMac.mm:
(WebCore::AttachmentLayout::layOutSubtitle): Ditto.
(WebCore::RenderThemeMac::paintAttachment): Ditto.
* svg/SVGHKernElement.cpp:
(WebCore::SVGHKernElement::buildHorizontalKerningPair): Ditto.
* svg/SVGVKernElement.cpp:
(WebCore::SVGVKernElement::buildVerticalKerningPair): Ditto.
* svg/animation/SVGSMILElement.cpp:
(WebCore::SVGSMILElement::buildPendingResource): Ditto. Also use parentElement
instead of writing out code that does exactly what it does.

Source/WebKit/mac:

* WebView/WebHTMLRepresentation.mm:
(matchLabelsAgainstElement): Added handling of nullptr since nothing guarantees the
passed in element can't be null. Removed unnecessary conversion from NSString to String
and then back to NSString.

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

3 years agoCan't use Object.defineProperty() to add an item to a DOMStringMap or Storage
weinig@apple.com [Sun, 4 Jun 2017 18:00:01 +0000 (18:00 +0000)]
Can't use Object.defineProperty() to add an item to a DOMStringMap or Storage
https://bugs.webkit.org/show_bug.cgi?id=172687

Reviewed by Darin Adler.

Source/WebCore:

- Adds support for generating the defineOwnProperty ClassInfo method table hook
  to add support for Object.defineProperty(). The implementation follows WebIDL
  section 3.9.3 [[DefineOwnProperty]].
  (https://heycam.github.io/webidl/#legacy-platform-object-defineownproperty)
- Adds support for generating named setters in addition to the already supported
  indexed setters as much of the required work was needed to make defineOwnProperty
  work for those properties. This patch does not aim to follow WebIDL faithfully,
  but rather to generate as close to the custom code as possible. A follow up
  change will attempt to match WebIDL more closely (which will also require changes
  to [[GetOwnPropertySlot]]).
- Removes the need for custom bindings in DOMStringMap, HTMLOptionsCollection and
  HTMLSelectElement. Gets us one function away from supporting Storage.
- Tidies up generated headers a bit by grouping all the ClassInfo method table hooks
  together.
- Removes support for CustomIndexedSetter, which is no longer used.

Test: js/dom/legacy-platform-object-defineOwnProperty.html

* CMakeLists.txt:
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/JSBindingsAllInOne.cpp:
Removed now unneeded custom bindings.

* bindings/js/JSDOMStringMapCustom.cpp: Removed.
* bindings/js/JSHTMLOptionsCollectionCustom.cpp: Removed.
* bindings/js/JSHTMLSelectElementCustom.cpp: Removed.
* bindings/js/JSHTMLSelectElementCustom.h: Removed.
* bindings/js/JSStorageCustom.cpp:
(WebCore::JSStorage::putDelegate): Deleted.
Remove more code that is now generated.

* bindings/scripts/CodeGeneratorJS.pm:
(GenerateIndexedGetter):
- Add missing check for indexed setter operation when determining if the property should be ReadOnly.
- Add support for custom implementation name, matching GenerateNamedGetter.
- Convert to taking an outputArray and indent to allow more flexibility going forward.

(GenerateNamedGetter):
- Add missing check for named setter operation when determining if the property should be ReadOnly.
- Convert to taking an outputArray and indent to allow more flexibility going forward.

(GenerateGetOwnPropertySlotBody):
- Convert to taking an outputArray and indent to allow more flexibility going forward.
- Take over responsibility for checking and bailing if CustomGetOwnPropertySlot is set.

(GenerateGetOwnPropertySlotBodyByIndex):
- Convert to taking an outputArray and indent to allow more flexibility going forward.
- Take over responsibility for checking and bailing if CustomGetOwnPropertySlotByIndex is set.

(GenerateGetOwnPropertyNames):
- Convert to taking an outputArray and indent to allow more flexibility going forward.
- Take over responsibility for checking and bailing if CustomEnumerateProperty is set.

(GenerateInvokeIndexedPropertySetter):
Added. Implements the 'invoke an indexed property setter' algorithm (https://heycam.github.io/webidl/#invoke-indexed-setter)

(GenerateInvokeNamedPropertySetter):
Added. Implements the 'invoke a named property setter' algorithm (https://heycam.github.io/webidl/#invoke-named-setter)

(GeneratePut):
(GeneratePutByIndex):
- Convert to taking an outputArray and indent to allow more flexibility going forward.
- Take over responsibility for checking and bailing if CustomPut is set.
- Adds support for CEReactions.
- Adopts GenerateInvokeIndexedPropertySetter and GenerateInvokeNamedPropertySetter to
  simplify code.
- Removes support for CustomIndexedSetter, which is no longer used.
- Replaces use direct checking of OverrideBuiltins with check if any interface it inherits
  has it, which is how it is specified to work.

(GenerateIsUnforgeablePropertyName):
Added. Helper subroutine to generate a function that compares a property name
agains all the property names defined as Unforgeable on the interface. Used by
GenerateDefineOwnProperty.

(GenerateDefineOwnProperty):
Added. Implements section 3.9.3 [[DefineOwnProperty]] (https://heycam.github.io/webidl/#legacy-platform-object-defineownproperty)
Adds support for CEReactions.

(GenerateDeletePropertyCommon):
Switch from getting OverrideBuiltins directly off the interface to using InheritsExtendedAttribute.

(GenerateNamedDeleterDefinition):
Switch signature to match peer generators.

(InstanceOverridesGetOwnPropertySlot):
Update for rename of JSCustomGetOwnPropertySlotAndDescriptor to CustomGetOwnPropertySlotAndDescriptor.

(InstanceOverridesGetOwnPropertySlotByIndex):
Added. Like InstanceOverridesGetOwnPropertySlot, but checks for the new CustomGetOwnPropertySlotByIndex
rather than CustomGetOwnPropertySlot.

(InstanceOverridesGetOwnPropertyNames):
Added. Moves complex predicate out of line.

(InstanceOverridesPut):
Removes now unused CustomIndexedSetter, and adds CustomPutFunction, which used to be checked separately.

(InstanceOverridesDefineOwnProperty):
Added.

(GenerateHeader):
- Moves more structure flags together.
- Simplifies predicates and moves the ClassInfo method table hooks together.

(GenerateImplementation):
- Moves the ClassInfo method table hooks together
- Adds call to GenerateDefineOwnProperty.

(GenerateLegacyCallerDefinitions):
Simplify bail condition to match other generators.

(GeneratePrototypeDeclaration):
Update for new extended attribute names.

(InstanceOverridesCall):
Renamed from IsCallable for consistency.

(HasComplexGetOwnProperty):
Deleted. Unused.

(InstanceOverridesPutImplementation):
Deleted. Unused.

(InstanceOverridesPutDeclaration):
Deleted. Unused.

(IsCallable):
Renamed, for consistency, to InstanceOverridesCall .

* bindings/scripts/IDLAttributes.json:
Renames a few of the extended attributes to remove the JS prefix. This time
around I only did the ones in the area I was working, but we should probably
remove most of the rest.

* css/CSSStyleDeclaration.idl:
Update for JSCustomGetOwnPropertySlotAndDescriptor -> CustomGetOwnPropertySlotAndDescriptor rename.

* dom/DOMStringMap.idl:
Remove CustomNamedSetter and add uncomment out the setter.

* dom/DatasetDOMStringMap.cpp:
(WebCore::DatasetDOMStringMap::setNamedItem):
(WebCore::DatasetDOMStringMap::setItem): Deleted.
* dom/DatasetDOMStringMap.h:
Rename setItem to setNamedItem, which is what the generator expects.

* dom/Node.idl:
Update for JSCustomPushEventHandlerScope -> CustomPushEventHandlerScope rename.

* html/HTMLAppletElement.idl:
* html/HTMLEmbedElement.idl:
* html/HTMLObjectElement.idl:
Update for JSCustomGetOwnPropertySlotAndDescriptor -> CustomGetOwnPropertySlotAndDescriptor rename.

* html/HTMLCollection.cpp:
(WebCore::HTMLCollection::isSupportedPropertyName):
* html/HTMLCollection.h:
Add isSupportedPropertyName function which is used by the bindings and is now needed.

* html/HTMLElement.idl:
Update for JSCustomPushEventHandlerScope -> CustomPushEventHandlerScope rename.

* html/HTMLOptionsCollection.h:
(WebCore::HTMLOptionsCollection::setItem):
Add setItem() implementation which just forwards to the select element. Also, add
a type alias to make the implementations of item and namedItem less verbose.

* html/HTMLOptionsCollection.idl:
Remove CustomIndexedSetter and uncomment the setter.

* html/HTMLSelectElement.idl:
Remove CustomIndexedSetter and uncomment the setter. Also, reformat
to match the WHATWG spec.

* page/DOMWindow.idl:
Update for JSCustomDefineOwnProperty -> CustomDefineOwnProperty rename. Add
CustomGetOwnPropertySlotByIndex which is now needed to remove some unsound
assumptions the generator was making.

* page/Location.idl:
Update for removal of JS prefix from a bunch of extended attributes.

* page/UserMessageHandlersNamespace.idl:
Update for JSCustomGetOwnPropertySlotAndDescriptor -> CustomGetOwnPropertySlotAndDescriptor rename.

* storage/Storage.idl:
Remove CustomNamedSetter and uncomment the setter.

* bindings/scripts/test/JS/JSInterfaceName.h:
* bindings/scripts/test/JS/JSTestEventTarget.h:
* bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.cpp: Added.
* bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.h: Added.
* bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.cpp: Added.
* bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.h: Added.
* bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.cpp: Added.
* bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.h: Added.
* bindings/scripts/test/JS/JSTestInterface.cpp:
* bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.cpp: Added.
* bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.h: Added.
* bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.cpp: Added.
* bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.h: Added.
* bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.cpp: Added.
* bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.h: Added.
* bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.h:
* bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.h:
* bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.cpp:
* bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.h:
* bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.h:
* bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.cpp: Added.
* bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.h: Added.
* bindings/scripts/test/JS/JSTestNamedSetterThrowingException.cpp: Added.
* bindings/scripts/test/JS/JSTestNamedSetterThrowingException.h: Added.
* bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.cpp: Added.
* bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.h: Added.
* bindings/scripts/test/JS/JSTestNamedSetterWithOverrideBuiltins.cpp: Added.
* bindings/scripts/test/JS/JSTestNamedSetterWithOverrideBuiltins.h: Added.
* bindings/scripts/test/JS/JSTestNamedSetterWithUnforgableProperties.cpp: Added.
* bindings/scripts/test/JS/JSTestNamedSetterWithUnforgableProperties.h: Added.
* bindings/scripts/test/JS/JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins.cpp: Added.
* bindings/scripts/test/JS/JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins.h: Added.
* bindings/scripts/test/JS/JSTestObj.cpp:
* bindings/scripts/test/JS/JSTestObj.h:
* bindings/scripts/test/JS/JSTestOverrideBuiltins.h:
* bindings/scripts/test/TestIndexedSetterNoIdentifier.idl: Added.
* bindings/scripts/test/TestIndexedSetterThrowingException.idl: Added.
* bindings/scripts/test/TestIndexedSetterWithIdentifier.idl: Added.
* bindings/scripts/test/TestNamedAndIndexedSetterNoIdentifier.idl: Added.
* bindings/scripts/test/TestNamedAndIndexedSetterThrowingException.idl: Added.
* bindings/scripts/test/TestNamedAndIndexedSetterWithIdentifier.idl: Added.
* bindings/scripts/test/TestNamedDeleterWithIdentifier.idl:
* bindings/scripts/test/TestNamedSetterNoIdentifier.idl: Added.
* bindings/scripts/test/TestNamedSetterThrowingException.idl: Added.
* bindings/scripts/test/TestNamedSetterWithIdentifier.idl: Added.
* bindings/scripts/test/TestNamedSetterWithOverrideBuiltins.idl: Added.
* bindings/scripts/test/TestNamedSetterWithUnforgableProperties.idl: Added.
* bindings/scripts/test/TestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins.idl: Added.
Added new tests and updated some results.

LayoutTests:

* js/dom/legacy-platform-object-defineOwnProperty-expected.txt: Added.
* js/dom/legacy-platform-object-defineOwnProperty.html: Added.
New tests for Object.defineProperty on Storage and DOMStringMap.

* js/dom/named-property-deleter.html:
Fix test which was deleting the wrong property. This doesn't change the result,
but is now actually testing the thing it meant to.

* storage/domstorage/localstorage/delete-defineproperty-removal-expected.txt:
* storage/domstorage/localstorage/delete-defineproperty-removal.html:
Convert to testharness.js and show that the results are now correct.

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

3 years agoObject bounding box wrong for some paths
simon.fraser@apple.com [Sun, 4 Jun 2017 17:57:03 +0000 (17:57 +0000)]
Object bounding box wrong for some paths
https://bugs.webkit.org/show_bug.cgi?id=172866

Reviewed by Tim Horton.
Source/WebCore:

RenderSVGShape::calculateObjectBoundingBox() should use boundingRect()
rather than fastBoundingRect(), because the latter includes control points.

Covered by existing tests.

* rendering/svg/RenderSVGShape.cpp:
(WebCore::RenderSVGShape::calculateObjectBoundingBox):

LayoutTests:

So many new baselines.

* platform/ios/svg/W3C-SVG-1.1-SE/paths-dom-02-f-expected.txt:
* platform/ios/svg/W3C-SVG-1.1/animate-elem-06-t-expected.txt:
* platform/ios/svg/W3C-SVG-1.1/animate-elem-08-t-expected.txt:
* platform/ios/svg/W3C-SVG-1.1/animate-elem-83-t-expected.txt:
* platform/ios/svg/W3C-SVG-1.1/filters-example-01-b-expected.txt:
* platform/ios/svg/W3C-SVG-1.1/metadata-example-01-b-expected.txt:
* platform/ios/svg/W3C-SVG-1.1/paths-data-01-t-expected.txt:
* platform/ios/svg/W3C-SVG-1.1/paths-data-02-t-expected.txt:
* platform/ios/svg/W3C-SVG-1.1/paths-data-03-f-expected.txt:
* platform/ios/svg/W3C-SVG-1.1/paths-data-12-t-expected.txt:
* platform/ios/svg/W3C-SVG-1.1/text-path-01-b-expected.txt:
* platform/ios/svg/batik/text/longTextOnPath-expected.txt:
* platform/ios/svg/batik/text/smallFonts-expected.txt:
* platform/ios/svg/batik/text/textAnchor-expected.txt:
* platform/ios/svg/batik/text/textDecoration-expected.txt:
* platform/ios/svg/batik/text/textEffect-expected.txt:
* platform/ios/svg/batik/text/textEffect2-expected.txt:
* platform/ios/svg/batik/text/textEffect3-expected.txt:
* platform/ios/svg/batik/text/textFeatures-expected.txt:
* platform/ios/svg/batik/text/textGlyphOrientationHorizontal-expected.txt:
* platform/ios/svg/batik/text/textLayout-expected.txt:
* platform/ios/svg/batik/text/textLayout2-expected.txt:
* platform/ios/svg/batik/text/textLength-expected.txt:
* platform/ios/svg/batik/text/textOnPath-expected.txt:
* platform/ios/svg/batik/text/textOnPathSpaces-expected.txt:
* platform/ios/svg/batik/text/textPosition-expected.txt:
* platform/ios/svg/batik/text/textPosition2-expected.txt:
* platform/ios/svg/batik/text/textProperties-expected.txt:
* platform/ios/svg/batik/text/textProperties2-expected.txt:
* platform/ios/svg/batik/text/textStyles-expected.txt:
* platform/ios/svg/batik/text/verticalText-expected.txt:
* platform/ios/svg/batik/text/verticalTextOnPath-expected.txt:
* platform/ios/svg/custom/broken-internal-references-expected.txt:
* platform/ios/svg/custom/path-textPath-simulation-expected.txt:
* platform/ios/svg/custom/relative-sized-use-on-symbol-expected.txt:
* platform/ios/svg/custom/relative-sized-use-without-attributes-on-symbol-expected.txt:
* platform/ios/svg/custom/second-inline-text-expected.txt:
* platform/ios/svg/text/text-path-01-b-expected.txt:
* platform/mac/svg/W3C-SVG-1.1-SE/paths-dom-02-f-expected.txt:
* platform/mac/svg/W3C-SVG-1.1/animate-elem-06-t-expected.txt:
* platform/mac/svg/W3C-SVG-1.1/animate-elem-07-t-expected.txt:
* platform/mac/svg/W3C-SVG-1.1/animate-elem-08-t-expected.txt:
* platform/mac/svg/W3C-SVG-1.1/animate-elem-83-t-expected.txt:
* platform/mac/svg/W3C-SVG-1.1/filters-example-01-b-expected.txt:
* platform/mac/svg/W3C-SVG-1.1/metadata-example-01-b-expected.txt:
* platform/mac/svg/W3C-SVG-1.1/paths-data-01-t-expected.txt:
* platform/mac/svg/W3C-SVG-1.1/paths-data-02-t-expected.txt:
* platform/mac/svg/W3C-SVG-1.1/paths-data-03-f-expected.txt:
* platform/mac/svg/W3C-SVG-1.1/paths-data-12-t-expected.txt:
* platform/mac/svg/W3C-SVG-1.1/text-path-01-b-expected.txt:
* platform/mac/svg/batik/filters/filterRegions-expected.txt:
* platform/mac/svg/batik/paints/patternPreserveAspectRatioA-expected.txt:
* platform/mac/svg/batik/paints/patternRegionA-expected.txt:
* platform/mac/svg/batik/paints/patternRegions-expected.txt:
* platform/mac/svg/batik/text/smallFonts-expected.txt:
* platform/mac/svg/batik/text/textAnchor-expected.txt:
* platform/mac/svg/batik/text/textEffect2-expected.txt:
* platform/mac/svg/batik/text/textEffect3-expected.txt:
* platform/mac/svg/batik/text/textFeatures-expected.txt:
* platform/mac/svg/batik/text/textGlyphOrientationHorizontal-expected.txt:
* platform/mac/svg/batik/text/textLayout-expected.txt:
* platform/mac/svg/batik/text/textLayout2-expected.txt:
* platform/mac/svg/batik/text/textOnPathSpaces-expected.txt:
* platform/mac/svg/batik/text/textPosition2-expected.txt:
* platform/mac/svg/batik/text/textProperties-expected.txt:
* platform/mac/svg/batik/text/textProperties2-expected.txt:
* platform/mac/svg/batik/text/textStyles-expected.txt:
* platform/mac/svg/custom/animate-path-morphing-expected.txt:
* platform/mac/svg/custom/broken-internal-references-expected.txt:
* platform/mac/svg/custom/path-textPath-simulation-expected.txt:
* platform/mac/svg/custom/relative-sized-use-on-symbol-expected.txt:
* platform/mac/svg/custom/relative-sized-use-without-attributes-on-symbol-expected.txt:
* platform/mac/svg/custom/second-inline-text-expected.txt:
* platform/mac/svg/dom/SVGPathSegList-segment-modification-expected.txt:
* platform/mac/svg/hixie/perf/001-expected.txt:
* platform/mac/svg/hixie/perf/002-expected.txt:
* platform/mac/svg/text/text-path-01-b-expected.txt:
* platform/mac/svg/zoom/page/zoom-svg-through-object-with-override-size-expected.txt:
* svg/custom/control-points-for-S-and-T-expected.txt:
* svg/custom/use-nested-transform-expected.txt:

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

3 years agoFix build of Windows-specific code with ICU 59.1
annulen@yandex.ru [Sun, 4 Jun 2017 16:38:39 +0000 (16:38 +0000)]
Fix build of Windows-specific code with ICU 59.1
https://bugs.webkit.org/show_bug.cgi?id=172729

Reviewed by Darin Adler.

Source/JavaScriptCore:

Fix conversions from WTF::String to wchar_t* and vice versa.

* jsc.cpp:
(currentWorkingDirectory):
(fetchModuleFromLocalFileSystem):
* runtime/DateConversion.cpp:
(JSC::formatDateTime):

Source/WebCore:

Fix conversions from WTF::String to wchar_t* and vice versa.
No new tests needed.

* platform/graphics/win/MediaPlayerPrivateMediaFoundation.cpp:
(WebCore::mimeTypeCache):
(WebCore::MediaPlayerPrivateMediaFoundation::startCreateMediaSource):

Source/WebKit/win:

Fix conversions from WTF::String to wchar_t* and vice versa.

* Plugins/PluginDatabaseWin.cpp:
(WebCore::addPluginPathsFromRegistry):
(WebCore::PluginDatabase::getPluginPathsInDirectories):
(WebCore::addMozillaPluginDirectories):
(WebCore::addWindowsMediaPlayerPluginDirectory):
(WebCore::addAdobeAcrobatPluginDirectory):
(WebCore::addJavaPluginDirectory):
(WebCore::safariPluginsDirectory):
(WebCore::addMacromediaPluginDirectories):
* Plugins/PluginPackageWin.cpp:
(WebCore::getVersionInfo):
(WebCore::PluginPackage::fetchInfo):
(WebCore::PluginPackage::load):
* Plugins/PluginViewWin.cpp:
(WebCore::PluginView::handlePostReadFile):

Source/WTF:

* wtf/text/win/WCharStringExtras.h: Added new header file wuth helper
functions for conversion between WTF::String and wchart_t*.
(WTF::stringToNullTerminatedWChar):
(WTF::wcharToString):
(WTF::nullTerminatedWCharToString):

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

3 years ago[JSC] Drop unnecessary USE(CF) guard for getenv
utatane.tea@gmail.com [Sun, 4 Jun 2017 16:26:59 +0000 (16:26 +0000)]
[JSC] Drop unnecessary USE(CF) guard for getenv
https://bugs.webkit.org/show_bug.cgi?id=172903

Reviewed by Sam Weinig.

getenv is not related to USE(CF) and OS(UNIX). It seems that this
ifdef only hits in WinCairo, but WinCairo can use getenv.
Moreover, in VM::VM, we already use getenv without any ifdef guard.

This patch just drops it.

* runtime/VM.cpp:
(JSC::enableAssembler):

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

3 years ago[JSC] Drop OS(DARWIN) for uintptr_t type conflict
utatane.tea@gmail.com [Sun, 4 Jun 2017 16:21:52 +0000 (16:21 +0000)]
[JSC] Drop OS(DARWIN) for uintptr_t type conflict
https://bugs.webkit.org/show_bug.cgi?id=172904

Reviewed by Sam Weinig.

In non-Darwin environment, uintptr_t may have the same type
to uint64_t. We avoided the compile error by using OS(DARWIN).
But, since it depends on cstdint implementaion rather than OS, it is flaky.
Instead, we just use template parameter IntegralType.
And we describe the type constraint in a SFINAE manner.

* dfg/DFGOpInfo.h:
(JSC::DFG::OpInfo::OpInfo):

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

3 years agoUnreviewed test gardening
jbedard@apple.com [Sun, 4 Jun 2017 15:51:12 +0000 (15:51 +0000)]
Unreviewed test gardening

Gardening test expectations for layout tests on iOS device. Moving
expectations for tests which fail on Simulator but pass on device.

* platform/ios-simulator-wk1/TestExpectations:
* platform/ios-simulator-wk2/TestExpectations:
* platform/ios-simulator/TestExpectations:
* platform/ios-wk1/TestExpectations:
* platform/ios-wk2/TestExpectations:
* platform/ios/TestExpectations:

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

3 years agoImplement DOMMatrixReadOnly.transformPoint()
cdumez@apple.com [Sun, 4 Jun 2017 15:21:52 +0000 (15:21 +0000)]
Implement DOMMatrixReadOnly.transformPoint()
https://bugs.webkit.org/show_bug.cgi?id=172900

Reviewed by Simon Fraser.

LayoutTests/imported/w3c:

Rebaseline W3C test now that more checks are passing.

* web-platform-tests/css/geometry-1/DOMMatrix-newobject-expected.txt:

Source/WebCore:

Implement DOMMatrixReadOnly.transformPoint():
- https://drafts.fxtf.org/geometry/#dommatrixreadonly
- https://drafts.fxtf.org/geometry/#dom-dommatrixreadonly-transformpoint

Test: imported/blink/fast/dom/geometry-interfaces-dom-matrix-transformPoint.html

* css/DOMMatrixReadOnly.cpp:
(WebCore::DOMMatrixReadOnly::transformPoint):
* css/DOMMatrixReadOnly.h:
* css/DOMMatrixReadOnly.idl:

LayoutTests:

* imported/blink/fast/dom/geometry-interfaces-dom-matrix-transformPoint-expected.txt: Added.
* imported/blink/fast/dom/geometry-interfaces-dom-matrix-transformPoint.html: Added.
* imported/blink/fast/dom/resources/geometry-interfaces-test-helpers.js: Added.
Import test coverage from Blink.

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

3 years agoUnreviewed GTK+ gardening. Add a few test failure expectations, linking them to
zandobersek@gmail.com [Sun, 4 Jun 2017 11:26:50 +0000 (11:26 +0000)]
Unreviewed GTK+ gardening. Add a few test failure expectations, linking them to
existing bugs. Update or add GTK+-specific baselines for three tests.

* platform/gtk/TestExpectations:
* platform/gtk/accessibility/disabled-controls-not-focusable-expected.txt: Added.
* platform/gtk/compositing/backing-store-attachment-1-expected.txt: Added.
* platform/gtk/css1/box_properties/acid_test-expected.txt:

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

3 years ago[GCrypt] Improve comments in AES, PBKDF2, RSA-SSA algorithm implementations
zandobersek@gmail.com [Sun, 4 Jun 2017 10:24:44 +0000 (10:24 +0000)]
[GCrypt] Improve comments in AES, PBKDF2, RSA-SSA algorithm implementations
https://bugs.webkit.org/show_bug.cgi?id=172894

Reviewed by Michael Catanzaro.

Add or improve code comments in libgcrypt implementations for the AES_CBC,
AES_GCM, AES_KW, PBKDF2 and RSA-SSA algorithms.

* crypto/gcrypt/CryptoAlgorithmAES_CBCGCrypt.cpp: Add generic comments that
describe each operation that's performed.
(WebCore::gcryptEncrypt):
(WebCore::gcryptDecrypt):
* crypto/gcrypt/CryptoAlgorithmAES_GCMGCrypt.cpp: Ditto.
(WebCore::gcryptEncrypt):
(WebCore::gcryptDecrypt):
* crypto/gcrypt/CryptoAlgorithmAES_KWGCrypt.cpp: Ditto.
(WebCore::gcryptWrapKey):
(WebCore::gcryptUnwrapKey):
* crypto/gcrypt/CryptoAlgorithmPBKDF2GCrypt.cpp: Ditto.
(WebCore::gcryptDeriveBits):
* crypto/gcrypt/CryptoAlgorithmRSASSA_PKCS1_v1_5GCrypt.cpp:
(WebCore::gcryptVerify): Align the verification results comment with the
one that's used in the ECDSA implementation.

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

3 years agoImplement DOMMatrix's fromFloat32Array / fromFloat64Array & toFloat32Array / toFloat6...
cdumez@apple.com [Sun, 4 Jun 2017 01:54:14 +0000 (01:54 +0000)]
Implement DOMMatrix's fromFloat32Array / fromFloat64Array & toFloat32Array / toFloat64Array
https://bugs.webkit.org/show_bug.cgi?id=172898

Reviewed by Sam Weinig.

LayoutTests/imported/w3c:

Rebaseline web-platform-test now that more checks are passing.

* web-platform-tests/css/geometry-1/DOMMatrix-newobject-expected.txt:

Source/WebCore:

Implement DOMMatrix's fromFloat32Array / fromFloat64Array & toFloat32Array / toFloat64Array
as per:
- https://drafts.fxtf.org/geometry/#dommatrixreadonly

Test: http/wpt/geometry/DOMMatrix-from-to-typed-arrays.html

* css/DOMMatrix.cpp:
(WebCore::DOMMatrix::fromFloat32Array):
(WebCore::DOMMatrix::fromFloat64Array):
* css/DOMMatrix.h:
* css/DOMMatrix.idl:
* css/DOMMatrixReadOnly.cpp:
(WebCore::DOMMatrixReadOnly::fromFloat32Array):
(WebCore::DOMMatrixReadOnly::fromFloat64Array):
(WebCore::DOMMatrixReadOnly::toFloat32Array):
(WebCore::DOMMatrixReadOnly::toFloat64Array):
* css/DOMMatrixReadOnly.h:
* css/DOMMatrixReadOnly.idl:

LayoutTests:

Add layout test coverage.

* http/wpt/geometry/DOMMatrix-from-to-typed-arrays-expected.txt: Added.
* http/wpt/geometry/DOMMatrix-from-to-typed-arrays.html: Added.

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

3 years agoImplement DOMPointReadOnly.matrixTransform()
simon.fraser@apple.com [Sat, 3 Jun 2017 21:09:00 +0000 (21:09 +0000)]
Implement DOMPointReadOnly.matrixTransform()
https://bugs.webkit.org/show_bug.cgi?id=172896

Reviewed by Chris Dumez.

LayoutTests/imported/w3c:

New baselines.

* web-platform-tests/css/geometry-1/DOMPoint-002-expected.txt:
* web-platform-tests/css/geometry-1/historical-expected.txt:

Source/WebCore:

DOMPointReadOnly.matrixTransform() creates the matrix or throws, then uses
a new function in TransformationMatrix to map x,y,z,w through the matrix.

Test: http/wpt/geometry/DOMPoint-003.html

* CMakeLists.txt:
* WebCore.xcodeproj/project.pbxproj:
* css/DOMMatrixReadOnly.h:
(WebCore::DOMMatrixReadOnly::transformationMatrix):
* dom/DOMPointReadOnly.cpp: Copied from Source/WebCore/dom/DOMPointReadOnly.idl.
(WebCore::DOMPointReadOnly::matrixTransform):
* dom/DOMPointReadOnly.h:
* dom/DOMPointReadOnly.idl:
* platform/graphics/transforms/TransformationMatrix.cpp:
(WebCore::TransformationMatrix::map4ComponentPoint):
* platform/graphics/transforms/TransformationMatrix.h:

LayoutTests:

DOMPoint-003.html should be upstreamed at some point.

* http/wpt/geometry/DOMPoint-003-expected.txt: Added.
* http/wpt/geometry/DOMPoint-003.html: Added.

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

3 years agoCleanup arguments to preparePlatformFont() and fontWithFamily() in FontCacheCoreText.cpp
mmaxfield@apple.com [Sat, 3 Jun 2017 18:07:17 +0000 (18:07 +0000)]
Cleanup arguments to preparePlatformFont() and fontWithFamily() in FontCacheCoreText.cpp
https://bugs.webkit.org/show_bug.cgi?id=172886

Reviewed by Simon Fraser.

The number of arguments is getting out of control.

No new tests because there is no behavior change.

* platform/graphics/FontCache.h:
* platform/graphics/cocoa/FontCacheCoreText.cpp:
(WebCore::preparePlatformFont):
(WebCore::fontWithFamily):
(WebCore::FontCache::createFontPlatformData):
(WebCore::FontCache::systemFallbackForCharacters):
* platform/graphics/mac/FontCacheMac.mm:
(WebCore::platformFontWithFamilySpecialCase):
* platform/graphics/mac/FontCustomPlatformData.cpp:
(WebCore::FontCustomPlatformData::fontPlatformData):
* platform/spi/cocoa/CoreTextSPI.h:

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

3 years agoUnreviewed test gardening
jbedard@apple.com [Sat, 3 Jun 2017 17:58:06 +0000 (17:58 +0000)]
Unreviewed test gardening

* platform/ios/TestExpectations: Update expectation for tests passing
after https://bugs.webkit.org/show_bug.cgi?id=139968.

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

3 years agoScript modules should be able to import data urls
utatane.tea@gmail.com [Sat, 3 Jun 2017 16:31:13 +0000 (16:31 +0000)]
Script modules should be able to import data urls
https://bugs.webkit.org/show_bug.cgi?id=171594

Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

* web-platform-tests/html/semantics/scripting-1/the-script-element/data-url-expected.txt:
* web-platform-tests/html/webappapis/scripting/processing-model-2/compile-error-data-url-expected.txt:
* web-platform-tests/html/webappapis/scripting/processing-model-2/runtime-error-data-url-expected.txt:

Source/WebCore:

Tests: js/dom/classic-script-with-data-url.html
       js/dom/modules/module-script-with-data-url.html

Script tag resources should have SameOriginDataURLFlag::Set to load data URLs
since script tags should treat data URLs as same origin.

* bindings/js/CachedScriptFetcher.cpp:
(WebCore::CachedScriptFetcher::requestScriptWithCache):

LayoutTests:

* http/tests/security/script-with-dataurl-expected.txt:
* http/tests/security/script-with-dataurl.html:
Now, the spec is changed and errors from data: scripts should not be muted.
https://github.com/whatwg/html/issues/1778

* js/dom/classic-script-with-data-url-expected.txt: Added.
* js/dom/classic-script-with-data-url.html: Added.
* js/dom/modules/module-script-with-data-url-expected.txt: Added.
* js/dom/modules/module-script-with-data-url.html: Added.

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

3 years agoSort the project file.
simon.fraser@apple.com [Sat, 3 Jun 2017 16:21:38 +0000 (16:21 +0000)]
Sort the project file.

Source/WebCore:

* WebCore.xcodeproj/project.pbxproj:

Source/WebKit2:

* WebKit2.xcodeproj/project.pbxproj:

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

3 years agowebkitpy: Add contextmanager to disable logging for a block
jbedard@apple.com [Sat, 3 Jun 2017 16:11:31 +0000 (16:11 +0000)]
webkitpy: Add contextmanager to disable logging for a block
https://bugs.webkit.org/show_bug.cgi?id=172876

Reviewed by Daniel Bates.

Add a context manager which will use an OutputCapture object to capture logging
in a block and hold it in a variable.

* Scripts/webkitpy/common/system/outputcapture.py:
(OutputCaptureScope):
(OutputCaptureScope.__init__): Construct with OutputCapture object.
(OutputCaptureScope.__enter__): Begin capturing output.
(OutputCaptureScope.__exit__): Restore output and save captured output to a variable.
output and retain the resulting log.
* Scripts/webkitpy/common/system/outputcapture_unittest.py:
(OutputCaptureTest.test_output_capture_scope): Added.

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

3 years agoMove css3/flexbox/image-percent-max-height.html failure expectation.
jbedard@apple.com [Sat, 3 Jun 2017 15:26:03 +0000 (15:26 +0000)]
Move css3/flexbox/image-percent-max-height.html failure expectation.
https://bugs.webkit.org/show_bug.cgi?id=126898

Unreviewed test gardening

css3/flexbox/image-percent-max-height.html fails on iOS-simulator,
but passes on device.

* platform/ios-simulator/TestExpectations:
* platform/ios/TestExpectations:

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

3 years ago[ARM] Unreviewed buildfix after r217711.
ossy@webkit.org [Sat, 3 Jun 2017 13:36:31 +0000 (13:36 +0000)]
[ARM] Unreviewed buildfix after r217711.

* assembler/MacroAssemblerARM.h:
(JSC::MacroAssemblerARM::xor32):

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

3 years agoASSERTION FAILED: "We should only declare a function as a lexically scoped variable...
utatane.tea@gmail.com [Sat, 3 Jun 2017 11:24:45 +0000 (11:24 +0000)]
ASSERTION FAILED: "We should only declare a function as a lexically scoped variable in scopes where var declarations aren't allowed. ..." for function redeclaration with async function module export
https://bugs.webkit.org/show_bug.cgi?id=168844

Reviewed by Saam Barati.

JSTests:

* modules/async-function-export.js: Added.
(f):
(export.async.f):

Source/JavaScriptCore:

As the same to the exported function declaration, we should set statementDepth = 1 for exported async function declaration.

* parser/Parser.cpp:
(JSC::DepthManager::DepthManager):
(JSC::Parser<LexerType>::parseExportDeclaration):
* parser/Parser.h:
(JSC::Parser::DepthManager::DepthManager): Deleted.
(JSC::Parser::DepthManager::~DepthManager): Deleted.

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

3 years ago[GCrypt] Gather SUBTLE_CRYPTO utility functions in a single header
zandobersek@gmail.com [Sat, 3 Jun 2017 10:29:32 +0000 (10:29 +0000)]
[GCrypt] Gather SUBTLE_CRYPTO utility functions in a single header
https://bugs.webkit.org/show_bug.cgi?id=172870

Reviewed by Jiewen Tan.

Gather the helper functions used across different source files
for libgcrypt-backed SUBTLE_CRYPTO implementations in a single
header file.

* crypto/gcrypt/CryptoAlgorithmECDSAGCrypt.cpp:
(WebCore::hashCryptoDigestAlgorithm): Deleted.
(WebCore::hashAlgorithmName): Deleted.
(WebCore::mpiData): Deleted.
* crypto/gcrypt/CryptoAlgorithmHKDFGCrypt.cpp:
(WebCore::gcryptDeriveBits):
(WebCore::macAlgorithmForHashFunction): Deleted.
* crypto/gcrypt/CryptoAlgorithmPBKDF2GCrypt.cpp:
(WebCore::gcryptDeriveBits):
* crypto/gcrypt/CryptoAlgorithmRSAES_PKCS1_v1_5GCrypt.cpp:
(WebCore::mpiData): Deleted.
* crypto/gcrypt/CryptoAlgorithmRSASSA_PKCS1_v1_5GCrypt.cpp:
(WebCore::hashCryptoDigestAlgorithm): Deleted.
(WebCore::hashAlgorithmName): Deleted.
(WebCore::mpiData): Deleted.
* crypto/gcrypt/CryptoAlgorithmRSA_OAEPGCrypt.cpp:
(WebCore::hashAlgorithmName): Deleted.
(WebCore::mpiData): Deleted.
* crypto/gcrypt/GCryptUtilities.h: Added.
(WebCore::hashAlgorithmName):
(WebCore::hmacAlgorithm):
(WebCore::digestAlgorithm):
(WebCore::hashCryptoDigestAlgorithm):
(WebCore::mpiData):

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

3 years ago[GCrypt] Fix PK verification for ECDSA
zandobersek@gmail.com [Sat, 3 Jun 2017 10:27:13 +0000 (10:27 +0000)]
[GCrypt] Fix PK verification for ECDSA
https://bugs.webkit.org/show_bug.cgi?id=172857

Reviewed by Michael Catanzaro.

No new tests -- covered by existing tests.

* crypto/gcrypt/CryptoAlgorithmECDSAGCrypt.cpp:
(WebCore::gcryptVerify): Return `true` if the verification succeeded or `false`
in any other case, avoiding spilling information about the exact cause of
verification failure.

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

3 years agohttp/tests/cache/disk-cache/shattered-deduplication.html is flaky
cdumez@apple.com [Sat, 3 Jun 2017 08:07:39 +0000 (08:07 +0000)]
http/tests/cache/disk-cache/shattered-deduplication.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=172868
<rdar://problem/31249379>

Reviewed by Antti Koivisto.

http/tests/cache/disk-cache/shattered-deduplication.html was flaky due to PDF banner
fade-in / fade-out animation.

<rdar://problem/31249379> is fixed for me with the proposed changes.

* http/tests/cache/disk-cache/shattered-deduplication-expected.html:
- Wait 1 second before calling notifyDone() to give the PDF as much time to render as
the test page.
- Reduce frame height to 30 to not have to worry about the PDF tool banner being visible
  or not (as it fades in and out). 30 is still enough to see the color and confirm the
  test is passing.

* http/tests/cache/disk-cache/shattered-deduplication.html:
- Reduce frame height to 30 to not have to worry about the PDF tool banner being visible
  or not (as it fades in and out). 30 is still enough to see the color and confirm the
  test is passing.

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

3 years agoCleanup FrameView::autoSizeIfEnabled.
zalan@apple.com [Sat, 3 Jun 2017 04:40:38 +0000 (04:40 +0000)]
Cleanup FrameView::autoSizeIfEnabled.
https://bugs.webkit.org/show_bug.cgi?id=172889
<rdar://problem/32550783>

Reviewed by Tim Horton.

Source/WebCore:

This patch ensures that we always have a clean tree (and a valid and current document size) when
setting m_autoSizeContentSize.

* page/FrameView.cpp:
(WebCore::FrameView::autoSizeIfEnabled):

Tools:

* TestWebKitAPI/Tests/WebKit2Cocoa/AutoLayoutIntegration.mm:
(-[AutoLayoutWKWebView load:withWidth:expectingContentSize:resettingWidth:]): progression.
(TEST):

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

3 years agoWeb Inspector: Don't create NavigationSidebarPanel classes until they are needed...
drousso@apple.com [Sat, 3 Jun 2017 03:44:51 +0000 (03:44 +0000)]
Web Inspector: Don't create NavigationSidebarPanel classes until they are needed by a Tab
https://bugs.webkit.org/show_bug.cgi?id=172621

Reviewed by Timothy Hatcher.

* UserInterface/Views/ContentBrowserTabContentView.js:
(WebInspector.ContentBrowserTabContentView):
(WebInspector.ContentBrowserTabContentView.prototype.shown):
* UserInterface/Views/TabContentView.js:
(WebInspector.TabContentView):
(WebInspector.TabContentView.prototype.get navigationSidebarPanel):

* UserInterface/Views/NetworkTabContentView.js:
(WebInspector.NetworkTabContentView.prototype.canShowRepresentedObject):
* UserInterface/Views/SearchTabContentView.js:
(WebInspector.SearchTabContentView.prototype.canShowRepresentedObject):
Use public getter for navigationSidebarPanel.

* UserInterface/Views/ResourceSidebarPanel.js:
(WebInspector.ResourceSidebarPanel):
(WebInspector.ResourceSidebarPanel.prototype.initialLayout): Added.
Load information about the current frame once the sidebar panel is displayed.

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

3 years agoWeb Inspector: Use initialLayout for DetailsSidebarPanel classes
drousso@apple.com [Sat, 3 Jun 2017 03:37:53 +0000 (03:37 +0000)]
Web Inspector: Use initialLayout for DetailsSidebarPanel classes
https://bugs.webkit.org/show_bug.cgi?id=172381

Reviewed by Timothy Hatcher.

* UserInterface/Views/ApplicationCacheDetailsSidebarPanel.js:
(WebInspector.ApplicationCacheDetailsSidebarPanel):
(WebInspector.ApplicationCacheDetailsSidebarPanel.prototype.initialLayout): Added.
(WebInspector.ApplicationCacheDetailsSidebarPanel.prototype.layout):
* UserInterface/Views/DOMNodeDetailsSidebarPanel.js:
(WebInspector.DOMNodeDetailsSidebarPanel):
(WebInspector.DOMNodeDetailsSidebarPanel.prototype.initialLayout): Added.
(WebInspector.DOMNodeDetailsSidebarPanel.prototype.layout):
* UserInterface/Views/IndexedDatabaseDetailsSidebarPanel.js:
(WebInspector.IndexedDatabaseDetailsSidebarPanel):
(WebInspector.IndexedDatabaseDetailsSidebarPanel.prototype.initialLayout): Added.
(WebInspector.IndexedDatabaseDetailsSidebarPanel.prototype.layout):
* UserInterface/Views/LayerTreeDetailsSidebarPanel.js:
(WebInspector.LayerTreeDetailsSidebarPanel):
(WebInspector.LayerTreeDetailsSidebarPanel.prototype.initialLayout): Added.
(WebInspector.LayerTreeDetailsSidebarPanel.prototype.layout):
* UserInterface/Views/ProbeDetailsSidebarPanel.js:
(WebInspector.ProbeDetailsSidebarPanel):
(WebInspector.ProbeDetailsSidebarPanel.prototype.initialLayout): Added.
* UserInterface/Views/ResourceDetailsSidebarPanel.js:
(WebInspector.ResourceDetailsSidebarPanel):
(WebInspector.ResourceDetailsSidebarPanel.prototype.set resource):
(WebInspector.ResourceDetailsSidebarPanel.prototype.initialLayout): Added.
(WebInspector.ResourceDetailsSidebarPanel.prototype.layout):
(WebInspector.ResourceDetailsSidebarPanel.prototype._applyResourceEventListeners):

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

3 years agoREGRESSION(r216212): RenderReplaced::paint() should not save and restore the context...
wenson_hsieh@apple.com [Sat, 3 Jun 2017 02:27:27 +0000 (02:27 +0000)]
REGRESSION(r216212): RenderReplaced::paint() should not save and restore the context unless it has to
https://bugs.webkit.org/show_bug.cgi?id=172883
<rdar://problem/32548614>

Reviewed by Tim Horton.

After implementing dragged content fading, RenderReplace::paint is now always guarded by unnecessary calls to
GraphicsContext::save and GraphicsContext::restore, even when there is no dragged content being rendered. To
address this, we initialize our GraphicsContextStateSaver with saveAndRestore = false, indicating that we don't
want to immediately try and save the context.

If we are in a dragged content range, we will then call GraphicsContextStateSaver::save, which saves the
graphics context and also causes the GraphicsContextStateSaver to eventually try and restore() when it is
destroyed. Otherwise, in the common codepath where the renderer is not in a dragged content range, the
constructor and destructor of GraphicsContextStateSaver will be no-ops with respect to saving and restoring the
graphics context.

* rendering/RenderReplaced.cpp:
(WebCore::RenderReplaced::paint):

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

3 years agoES2015 modules - Export default function hoisting
utatane.tea@gmail.com [Sat, 3 Jun 2017 01:35:00 +0000 (01:35 +0000)]
ES2015 modules - Export default function hoisting
https://bugs.webkit.org/show_bug.cgi?id=170174

Reviewed by Saam Barati.

This issue itself is solved by fixing function declaration hoisting rules.
This patch just adds the specific test to modules tests to ensure the bug
is fixed.

* modules/export-default-function-hoisting.js: Added.
* modules/export-default-function-hoisting/cappuccino.js: Added.
(import.drinkCocoa.from.string_appeared_here.export.default.drinkCappuccino):
* modules/export-default-function-hoisting/cocoa.js: Added.
(export.default.drinkCocoa):

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

3 years agoWeb Inspector: The CodeMirror instance in the ConsolePrompt does't need to be refresh...
drousso@apple.com [Sat, 3 Jun 2017 01:18:51 +0000 (01:18 +0000)]
Web Inspector: The CodeMirror instance in the ConsolePrompt does't need to be refreshed each time it is shown
https://bugs.webkit.org/show_bug.cgi?id=172608

Reviewed by Timothy Hatcher.

* UserInterface/Views/ConsolePrompt.js:
(WebInspector.ConsolePrompt.prototype.shown): Deleted.
* UserInterface/Views/DatabaseContentView.js:
(WebInspector.DatabaseContentView.prototype.shown): Deleted.
* UserInterface/Views/QuickConsole.js:
(WebInspector.QuickConsole):

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

3 years agoDefer installing mach breakpoint handler until watchdog is actually called
keith_miller@apple.com [Sat, 3 Jun 2017 01:09:50 +0000 (01:09 +0000)]
Defer installing mach breakpoint handler until watchdog is actually called
https://bugs.webkit.org/show_bug.cgi?id=172885

Reviewed by Saam Barati.

Eagerly installing the mach breakpoint handler causes issues with Xcode GUI debugging.
This hides the issue, so it won't occur as often.

* runtime/VMTraps.cpp:
(JSC::VMTraps::SignalSender::send):
(JSC::VMTraps::VMTraps): Deleted.
* runtime/VMTraps.h:

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

3 years agoWeb Inspector: Attributes table in Node Details Sidebar should have editable keys...
drousso@apple.com [Fri, 2 Jun 2017 23:58:39 +0000 (23:58 +0000)]
Web Inspector: Attributes table in Node Details Sidebar should have editable keys and values
https://bugs.webkit.org/show_bug.cgi?id=167076
<rdar://problem/30033629>

Reviewed by Timothy Hatcher.

* UserInterface/Views/DOMNodeDetailsSidebarPanel.js:
(WebInspector.DOMNodeDetailsSidebarPanel.prototype._refreshAttributes):
(WebInspector.DOMNodeDetailsSidebarPanel.prototype._attributeNodeValueChanged):
(WebInspector.DOMNodeDetailsSidebarPanel.prototype._createAttributesDataGrid): Deleted.
Rework creation of the attributes DataGrid so that it is only created once and cleared for
new content. Nodes in the DataGrid are now EditableDataGridNode instances so that attribute
names and values can be changed from within the sidebar. The DataGrid is also sorted based
on attribute name, to make finding attributes easier.

* UserInterface/Views/DataGrid.css:
(.data-grid tr.editable .cell-content > input):
(body:not(.window-inactive, .window-docked-inactive) .data-grid:matches(:focus, .force-focus) tr.editable.selected .cell-content > input):

* UserInterface/Views/DetailsSection.css:
(.details-section > .content .data-grid tr:not(.editable) td.value-column):
(.details-section > .content .data-grid tr:not(.editable) td.value-column > div):
(.details-section > .content .data-grid td.value-column): Deleted.
(.details-section > .content .data-grid td.value-column > div): Deleted.

* UserInterface/Main.html:
* UserInterface/Views/EditableDataGridNode.js: Added.
(WebInspector.EditableDataGridNode):
(WebInspector.EditableDataGridNode.prototype.get element):
(WebInspector.EditableDataGridNode.prototype.createCellContent):
(WebInspector.EditableDataGridNode.prototype._handleKeyPress):
(WebInspector.EditableDataGridNode.prototype._handleBlur):
(WebInspector.EditableDataGridNode.prototype._notifyInputElementValueChanged):
Special type of DataGridNode that wraps the content of each cell in an <input>.

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

3 years agoResourceLoadStatistics are not using unique paths during test runs
cdumez@apple.com [Fri, 2 Jun 2017 23:48:50 +0000 (23:48 +0000)]
ResourceLoadStatistics are not using unique paths during test runs
https://bugs.webkit.org/show_bug.cgi?id=172861
<rdar://problem/32442251>

Reviewed by Darin Adler.

Source/WebKit2:

Add WKContextConfigurationSetResourceLoadStatisticsDirectory() C API to allow
WKTR to use a custom directory.

* UIProcess/API/APIProcessPoolConfiguration.cpp:
(API::ProcessPoolConfiguration::createWithWebsiteDataStoreConfiguration):
(API::ProcessPoolConfiguration::ProcessPoolConfiguration):
(API::ProcessPoolConfiguration::copy):
* UIProcess/API/APIProcessPoolConfiguration.h:
* UIProcess/API/C/WKContextConfigurationRef.cpp:
(WKContextConfigurationCopyResourceLoadStatisticsDirectory):
(WKContextConfigurationSetResourceLoadStatisticsDirectory):
* UIProcess/API/C/WKContextConfigurationRef.h:
* UIProcess/WebProcessPool.cpp:
(WebKit::legacyWebsiteDataStoreConfiguration):

Tools:

Make sure WebKitTestRunner sets a temporary path for saving resource
load statistics.

* WebKitTestRunner/TestController.cpp:
(WTR::TestController::generateContextConfiguration):

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

3 years agoREGRESSION(r213464): [iOS] Fonts get too bold when the "Bold Text" accessibility...
mmaxfield@apple.com [Fri, 2 Jun 2017 23:40:07 +0000 (23:40 +0000)]
REGRESSION(r213464): [iOS] Fonts get too bold when the "Bold Text" accessibility setting is enabled
https://bugs.webkit.org/show_bug.cgi?id=172737
Source/WebCore:

Reviewed by Simon Fraser.

Revert the part of r213464 which changed how we calculate the weights of system fonts.

Add an InternalSetting to trigger our mock of the accessbility "Bold Text" setting. We can't
use the real setting, so instead we just ask for bold fonts instead of regular fonts when this
setting is true.

Tests: fast/text/accessibility-bold-system-font.html
       fast/text/accessibility-bold-system-font-2.html

* platform/graphics/FontCache.h:
(WebCore::FontCache::shouldMockBoldSystemFontForAccessibility):
(WebCore::FontCache::setShouldMockBoldSystemFontForAccessibility):
* platform/graphics/ios/FontCacheIOS.mm:
(WebCore::platformFontWithFamilySpecialCase):
* rendering/RenderTheme.h:
(WebCore::RenderTheme::shouldMockBoldSystemFontForAccessibility):
(WebCore::RenderTheme::setShouldMockBoldSystemFontForAccessibility):
* rendering/RenderThemeIOS.h:
* rendering/RenderThemeIOS.mm:
(WebCore::cssWeightOfSystemFont):
(WebCore::RenderThemeIOS::updateCachedSystemFontDescription):
* testing/InternalSettings.cpp:
(WebCore::InternalSettings::Backup::Backup):
(WebCore::InternalSettings::Backup::restoreTo):
(WebCore::InternalSettings::setShouldMockBoldSystemFontForAccessibility):
* testing/InternalSettings.h:
* testing/InternalSettings.idl:

LayoutTests:

<rdar://problem/31608236>

Reviewed by Simon Fraser.

* fast/text/accessibility-bold-system-font-2-expected.html: Added.
* fast/text/accessibility-bold-system-font-2.html: Added.
* fast/text/accessibility-bold-system-font-expected.txt: Added.
* fast/text/accessibility-bold-system-font.html: Added.
* platform/mac/TestExpectations:

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

3 years agoMark webrtc/captureCanvas-webrtc.html as flaky on iOS.
ryanhaddad@apple.com [Fri, 2 Jun 2017 23:11:44 +0000 (23:11 +0000)]
Mark webrtc/captureCanvas-webrtc.html as flaky on iOS.
https://bugs.webkit.org/show_bug.cgi?id=170870

Unreviewed test gardening.

* platform/ios-wk2/TestExpectations:

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

3 years agoMove compositing/overflow/dynamic-composited-scrolling-status.html failure expectation.
jbedard@apple.com [Fri, 2 Jun 2017 23:10:53 +0000 (23:10 +0000)]
Move compositing/overflow/dynamic-composited-scrolling-status.html failure expectation.
https://bugs.webkit.org/show_bug.cgi?id=152439

Unreviewed test gardening

compositing/overflow/dynamic-composited-scrolling-status.html fails on iOS-simulator WK2,
but passes on device.

* platform/ios-simulator-wk2/TestExpectations:
* platform/ios-wk2/TestExpectations:

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

3 years agoMark webrtc/audio-replace-track.html as flaky on iOS and remove Timeout expectation...
ryanhaddad@apple.com [Fri, 2 Jun 2017 23:07:47 +0000 (23:07 +0000)]
Mark webrtc/audio-replace-track.html as flaky on iOS and remove Timeout expectation for macOS.
https://bugs.webkit.org/show_bug.cgi?id=171895

Unreviewed test gardening.

* platform/ios-wk2/TestExpectations:
* platform/mac-wk2/TestExpectations:

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

3 years agoPrevent scheme handlers from handling all built-in URL schemes.
beidson@apple.com [Fri, 2 Jun 2017 23:07:08 +0000 (23:07 +0000)]
Prevent scheme handlers from handling all built-in URL schemes.
<rdar://problem/32404790> and https://bugs.webkit.org/show_bug.cgi?id=172869

Reviewed by Andy Estes.

Source/WebCore:

Covered by API test.

This patch refactors SchemeRegistry to keep a base, constant set of each of the special
URL schemes that WebKit knows about by default.

It then exposes that list through a new method to support WK2 API.

* platform/SchemeRegistry.cpp:
(WebCore::allBuiltinSchemes):
(WebCore::builtinLocalURLSchemes):
(WebCore::localURLSchemes):
(WebCore::builtinSecureSchemes):
(WebCore::secureSchemes):
(WebCore::builtinSchemesWithUniqueOrigins):
(WebCore::schemesWithUniqueOrigins):
(WebCore::builtinEmptyDocumentSchemes):
(WebCore::emptyDocumentSchemes):
(WebCore::builtinCanDisplayOnlyIfCanRequestSchemes):
(WebCore::canDisplayOnlyIfCanRequestSchemes):
(WebCore::SchemeRegistry::removeURLSchemeRegisteredAsLocal):
(WebCore::builtinCORSEnabledSchemes):
(WebCore::CORSEnabledSchemes):
(WebCore::SchemeRegistry::isBuiltinScheme):
* platform/SchemeRegistry.h:

Source/WebKit2:

* UIProcess/API/Cocoa/WKWebView.mm:
(+[WKWebView handlesURLScheme:]): Check against WebCore's new master list of URL schemes.

Tools:

* TestWebKitAPI/Tests/WebKit2Cocoa/WKURLSchemeHandler-1.mm:

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

3 years agoAll scroll peformance logging should happen in the UI process
simon.fraser@apple.com [Fri, 2 Jun 2017 23:06:13 +0000 (23:06 +0000)]
All scroll peformance logging should happen in the UI process
https://bugs.webkit.org/show_bug.cgi?id=172874
rdar://problem/24474830

Reviewed by Tim Horton.

Printing to stdout from the WebProcess doesn't show up anywhere in non-development builds,
so we have to log from the UI process.

Achieve this by adding a PerformanceLoggingClient to Page which forwards messages to
WebPageProxy, which prints them with the same format they had before. Some plumbing through
PlatformCALayerClient and GraphicsLayerClient is required to get messages from TileControllers
through to something that can get to Page.

Source/WebCore:

* WebCore.xcodeproj/project.pbxproj:
* page/Page.cpp:
(WebCore::Page::Page):
(WebCore::Page::~Page):
* page/Page.h:
(WebCore::Page::performanceLoggingClient):
* page/PageConfiguration.cpp:
* page/PageConfiguration.h:
* page/PerformanceLoggingClient.cpp: Added.
(WebCore::PerformanceLoggingClient::synchronousScrollingReasonsAsString):
* page/PerformanceLoggingClient.h: Added.
(WebCore::PerformanceLoggingClient::~PerformanceLoggingClient):
* page/scrolling/AsyncScrollingCoordinator.cpp:
(WebCore::AsyncScrollingCoordinator::reportExposedUnfilledArea):
(WebCore::AsyncScrollingCoordinator::reportSynchronousScrollingReasonsChanged):
* page/scrolling/AsyncScrollingCoordinator.h:
* page/scrolling/ScrollingTree.h:
(WebCore::ScrollingTree::reportSynchronousScrollingReasonsChanged):
(WebCore::ScrollingTree::reportExposedUnfilledArea):
* page/scrolling/ThreadedScrollingTree.cpp:
(WebCore::ThreadedScrollingTree::reportSynchronousScrollingReasonsChanged):
(WebCore::ThreadedScrollingTree::reportExposedUnfilledArea):
* page/scrolling/ThreadedScrollingTree.h:
* page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.h:
* page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm:
(WebCore::ScrollingTreeFrameScrollingNodeMac::commitStateBeforeChildren):
(WebCore::ScrollingTreeFrameScrollingNodeMac::setScrollPosition):
(WebCore::ScrollingTreeFrameScrollingNodeMac::exposedUnfilledArea):
(WebCore::ScrollingTreeFrameScrollingNodeMac::logExposedUnfilledArea): Deleted.
(WebCore::logThreadedScrollingMode): Deleted.
* platform/graphics/GraphicsLayerClient.h:
(WebCore::GraphicsLayerClient::logFilledVisibleFreshTile):
* platform/graphics/ca/GraphicsLayerCA.cpp:
(WebCore::GraphicsLayerCA::platformCALayerLogFilledVisibleFreshTile):
* platform/graphics/ca/GraphicsLayerCA.h:
* platform/graphics/ca/PlatformCALayerClient.h:
(WebCore::PlatformCALayerClient::platformCALayerLogFilledVisibleFreshTile):
* platform/graphics/ca/TileController.cpp:
(WebCore::TileController::logFilledVisibleFreshTile):
* platform/graphics/ca/TileController.h:
* platform/graphics/ca/TileGrid.cpp:
(WebCore::TileGrid::platformCALayerPaintContents):
* platform/graphics/ca/TileGrid.h:
* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::logFilledVisibleFreshTile):
* rendering/RenderLayerBacking.h:

Source/WebKit2:

* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::logScrollingEvent):
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* WebKit2.xcodeproj/project.pbxproj:
* WebProcess/WebCoreSupport/WebPerformanceLoggingClient.cpp: Added.
(WebKit::WebPerformanceLoggingClient::WebPerformanceLoggingClient):
(WebKit::WebPerformanceLoggingClient::logScrollingEvent):
* WebProcess/WebCoreSupport/WebPerformanceLoggingClient.h: Added.
* WebProcess/WebPage/WebPage.cpp:
(WebKit::m_cpuLimit):

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

3 years ago[JSCOnly] Build static jsc.exe on Windows
commit-queue@webkit.org [Fri, 2 Jun 2017 22:20:15 +0000 (22:20 +0000)]
[JSCOnly] Build static jsc.exe on Windows
https://bugs.webkit.org/show_bug.cgi?id=172833

Patch by Stephan Szabo <stephan.szabo@am.sony.com> on 2017-06-02
Reviewed by Konstantin Tokarev.

.:

* Source/cmake/OptionsJSCOnly.cmake:

Source/WTF:

* wtf/PlatformJSCOnly.cmake:

Tools:

* CMakeLists.txt:
* Scripts/build-jsc:

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

3 years agoDisable ViewportSizeForViewportUnits tests on iOS.
zalan@apple.com [Fri, 2 Jun 2017 22:12:26 +0000 (22:12 +0000)]
Disable ViewportSizeForViewportUnits tests on iOS.
https://bugs.webkit.org/show_bug.cgi?id=172872

Reviewed by Tim Horton.

* TestWebKitAPI/Tests/WebKit2/ViewportSizeForViewportUnits.mm:

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

3 years ago[MediaStream iOS] Cleanup video muting/unmuting when tab visibility changes
eric.carlson@apple.com [Fri, 2 Jun 2017 21:16:53 +0000 (21:16 +0000)]
[MediaStream iOS] Cleanup video muting/unmuting when tab visibility changes
https://bugs.webkit.org/show_bug.cgi?id=172858

Reviewed by Youenn Fablet.

Source/WebCore:

Test: platform/ios/mediastream/video-muted-in-background-tab.html

* dom/Document.cpp:
(WebCore::Document::visibilityStateChanged): Call notifyMediaCaptureOfVisibilityChanged.
(WebCore::Document::notifyMediaCaptureOfVisibilityChanged): Renamed from notifyVisibilityChangedToMediaCapture.
Set m_videoCaptureMutedForVisibilityChange when capture is muted because the document is hidden,
and clear it when visibility changes when capture is disabled. Don't unmute when the document
becomes visible unless this m_videoCaptureMutedForVisibilityChange is still true.
(WebCore::Document::notifyVisibilityChangedToMediaCapture): Deleted.
* dom/Document.h:

* platform/mediastream/RealtimeMediaSource.h:
* platform/mediastream/RealtimeMediaSourceCenter.cpp:
(WebCore::RealtimeMediaSourceCenter::setVideoCaptureMutedForPageVisibility): Renamed from
setVisibility.
(WebCore::RealtimeMediaSourceCenter::setVisibility): Deleted.
* platform/mediastream/RealtimeMediaSourceCenter.h:

* platform/mediastream/mac/AVVideoCaptureSource.mm:
(WebCore::AVVideoCaptureSourceFactory::setVideoCaptureMutedForPageVisibility): Ditto.
(WebCore::AVVideoCaptureSourceFactory::setVisibility): Deleted.

* platform/mock/MockRealtimeVideoSource.cpp:
(WebCore::MockRealtimeVideoSourceFactory::setVideoCaptureMutedForPageVisibility): Ditto.
(WebCore::MockRealtimeVideoSourceFactory::setVisibility): Deleted.

LayoutTests:

* platform/ios/mediastream/video-muted-in-background-tab-expected.txt: Added.
* platform/ios/mediastream/video-muted-in-background-tab.html: Added.

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

3 years agoWeb Inspector: Existing query in Search tab doesn't perform search on reload
drousso@apple.com [Fri, 2 Jun 2017 20:57:17 +0000 (20:57 +0000)]
Web Inspector: Existing query in Search tab doesn't perform search on reload
https://bugs.webkit.org/show_bug.cgi?id=172663

Reviewed by Timothy Hatcher.

* Localizations/en.lproj/localizedStrings.js:

* UserInterface/Views/SearchSidebarPanel.css:
(.sidebar > .panel.navigation.search.changed > .banner):
(.sidebar > .panel.navigation.search.changed > .banner > a):
(.sidebar > .panel.navigation.search.changed > :matches(.content, .empty-content-placeholder)):

* UserInterface/Views/SearchSidebarPanel.js:
(WebInspector.SearchSidebarPanel.prototype.performSearch.resourcesCallback):
(WebInspector.SearchSidebarPanel.prototype._mainResourceDidChange):
(WebInspector.SearchSidebarPanel.prototype._contentChanged):
Listen for any "resource added" event, and show the content changed banner when one occurs.

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

3 years agoMoved test expectation for http/tests/preload/viewport/meta-viewport-link-headers...
jlewis3@apple.com [Fri, 2 Jun 2017 20:48:32 +0000 (20:48 +0000)]
Moved test expectation for http/tests/preload/viewport/meta-viewport-link-headers.php to correct file.
https://bugs.webkit.org/show_bug.cgi?id=172518

Unreviewed test gardening

* platform/ios-simulator/TestExpectations:
* platform/ios/TestExpectations:

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

3 years agoREGRESSION: LayoutTest fast/scrolling/arrow-key-scroll-in-rtl-document.html is a...
cdumez@apple.com [Fri, 2 Jun 2017 19:57:14 +0000 (19:57 +0000)]
REGRESSION: LayoutTest fast/scrolling/arrow-key-scroll-in-rtl-document.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=161549
<rdar://problem/28213429>

Reviewed by Simon Fraser.

* fast/scrolling/arrow-key-scroll-in-rtl-document.html:
Call eventSender.callAfterScrollingCompletes() in the next event loop iteration to
address the flakiness.

* platform/mac-wk2/TestExpectations:
Unskip test.

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

3 years ago[Mac] Include frames in the scrolling tree when ScrollingTreeIncludesFrames=true
fred.wang@free.fr [Fri, 2 Jun 2017 19:40:04 +0000 (19:40 +0000)]
[Mac] Include frames in the scrolling tree when ScrollingTreeIncludesFrames=true
https://bugs.webkit.org/show_bug.cgi?id=172825

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

Source/WebCore:

This commit generalizes RenderLayerCompositor/ScrollingCoordinator so that it handles the
case of non-main frames. When ScrollingTreeIncludesFrames=true, all the frames will appear
in the scrolling tree on Mac WK2.

Test: fast/scrolling/scrolling-tree-includes-frame.html

* page/scrolling/ScrollingCoordinator.cpp:
(WebCore::ScrollingCoordinator::coordinatesScrollingForFrameView): Do not to restrict to the
main frame.
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::updateBacking): Do not to restrict to the main frame.
(WebCore::RenderLayerCompositor::useCoordinatedScrollingForLayer): Make this function a class
member so it can call hasCoordinatedScrolling and no longer needs a RenderView parameter.
(WebCore::RenderLayerCompositor::updateScrollCoordinatedStatus): Do not to restrict to the
main frame.
* rendering/RenderLayerCompositor.h: Introduce useCoordinatedScrollingForLayer.

LayoutTests:

Add a new test to check whether a non-main frame appears in the scrolling tree when
ScrollingTreeIncludesFrames=true. For now this is only happens for Mac WK2. Also update
the iOS WK2 reference for scrolling-iframe-expected.html

* fast/scrolling/scrolling-tree-includes-frame-expected.txt: Added.
* fast/scrolling/scrolling-tree-includes-frame.html: Added.
* platform/ios-simulator/fast/scrolling/scrolling-tree-includes-frame-expected.txt: Added.
* platform/ios-wk2/compositing/iframes/scrolling-iframe-expected.txt: Update reference.
* platform/mac-wk1/fast/scrolling/scrolling-tree-includes-frame-expected.txt: Added.

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

3 years agoREGRESSION (r206386): Xactimate Website Crashes @ com.apple.WebKit: WebKit::NPRuntime...
cdumez@apple.com [Fri, 2 Jun 2017 19:15:54 +0000 (19:15 +0000)]
REGRESSION (r206386): Xactimate Website Crashes @ com.apple.WebKit: WebKit::NPRuntimeObjectMap::convertJSValueToNPVariant + 255
https://bugs.webkit.org/show_bug.cgi?id=172846
<rdar://problem/31093005>

Reviewed by Mark Lam.

Follow-up to r217695 to deal with exceptions potentially thrown by
NPRuntimeObjectMap::convertJSValueToNPVariant() as well.

* WebProcess/Plugins/Netscape/NPJSObject.cpp:
(WebKit::NPJSObject::invoke):

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