WebKit-https.git
2 years agoCrash child processes if they receive an invalid message
andersca@apple.com [Mon, 6 Feb 2017 21:49:54 +0000 (21:49 +0000)]
Crash child processes if they receive an invalid message
https://bugs.webkit.org/show_bug.cgi?id=167900

Reviewed by Dan Bernstein.

Previously, some processes would try to gracefully exit, others would just drop messages leading to weird bugs.
Instead, set app-specific crash information to the message that failed to be decoded, and then crash.

* DatabaseProcess/DatabaseProcess.cpp:
(WebKit::DatabaseProcess::didReceiveInvalidMessage): Deleted.
* DatabaseProcess/DatabaseProcess.h:
* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::didReceiveInvalidMessage): Deleted.
* NetworkProcess/NetworkProcess.h:
* PluginProcess/PluginProcess.cpp:
(WebKit::PluginProcess::didReceiveInvalidMessage): Deleted.
* PluginProcess/PluginProcess.h:
* Shared/ChildProcess.h:
* Shared/Cocoa/ChildProcessCocoa.mm: Added.
(WebKit::ChildProcess::didReceiveInvalidMessage):
* WebKit2.xcodeproj/project.pbxproj:
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::didReceiveInvalidMessage): Deleted.
* WebProcess/WebProcess.h:

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

2 years agoPlayback stalls when a SourceBuffer append causes frame eviction
jer.noble@apple.com [Mon, 6 Feb 2017 21:49:24 +0000 (21:49 +0000)]
Playback stalls when a SourceBuffer append causes frame eviction
https://bugs.webkit.org/show_bug.cgi?id=167834

Reviewed by Eric Carlson.

PerformanceTests:

Add an in-page performance test measuring the amount of time required
to append a large amount of media data to a SourceBuffer, and then to
completely remove that data 30s at a time.

Add a microbenchmark for MediaTime which measures the amount of time
required to create a 1M entry std::map and traverse the map 1M times.

* Media/MSERemoveCodedFrames.html: Added.
* Media/media-source-loader.js:
(MediaSourceLoader.prototype.get duration):
* MediaTime/Configurations/Base.xcconfig: Added.
* MediaTime/Configurations/DebugRelease.xcconfig: Added.
* MediaTime/Makefile: Added.
* MediaTime/MediaTime.xcodeproj/project.pbxproj: Added.
* MediaTime/main.cpp: Added.
(performTest):
(test):
(main):
* Skipped:

Source/WebCore:

Test: PerformanceTests/Media/MSERemoveCodedFrames.html

Optimize searching through SampleMap by presentationTime.

Many of the methods exposed by PresentationOrderSampleMap used the bare  std::equal_range,
lower_bound, or upper_bound methods. Unlike those methods exposed on std::map, the bare
search methods perform a linear O(n) search, rather than a the binary O(log(n)) search used
by std::map. Rewrite those methods using the bare methods in terms of the std::map search
methods.

Drive-by fix: rename findSampleOnOrAfterPresentationTime to
findSampleStartingOnOrAfterPresentationTime to make the behavior of the method more
explicit.

* Modules/mediasource/SampleMap.cpp:
(WebCore::PresentationOrderSampleMap::findSampleContainingPresentationTime):
(WebCore::PresentationOrderSampleMap::findSampleStartingOnOrAfterPresentationTime):
(WebCore::PresentationOrderSampleMap::reverseFindSampleBeforePresentationTime):
(WebCore::DecodeOrderSampleMap::findSyncSampleAfterPresentationTime):
(WebCore::PresentationOrderSampleMap::findSamplesBetweenPresentationTimes):
(WebCore::PresentationOrderSampleMap::findSamplesWithinPresentationRange):
(WebCore::PresentationOrderSampleMap::findSampleOnOrAfterPresentationTime): Deleted.
* Modules/mediasource/SampleMap.h:
(WebCore::PresentationOrderSampleMap::begin):
(WebCore::PresentationOrderSampleMap::end):
(WebCore::PresentationOrderSampleMap::rbegin):
(WebCore::PresentationOrderSampleMap::rend):
(WebCore::DecodeOrderSampleMap::begin):
(WebCore::DecodeOrderSampleMap::end):
(WebCore::DecodeOrderSampleMap::rbegin):
(WebCore::DecodeOrderSampleMap::rend):
(WebCore::SampleMap::SampleMap):
(WebCore::SampleMap::sizeInBytes):
(WebCore::SampleMap::decodeOrder):
(WebCore::SampleMap::presentationOrder):
* Modules/mediasource/SourceBuffer.cpp:
(WebCore::removeSamplesFromTrackBuffer):
(WebCore::SourceBuffer::removeCodedFrames):
(WebCore::SourceBuffer::reenqueueMediaForTime):
* WebCore.xcodeproj/project.pbxproj:

Source/WTF:

Optimize the MediaTime class; specifically the compare() method. The class only
needs 6 bits to store the TimeFlags, so make that a uint8_t rather than uint32_t.
The implementation is slightly simpler if the TimeScale is unsigned, so make that
a uint32_t rather than int32_t. Inline the comparison operators. Optimize the equality
comparison by bitwise-and'ing the flags together and masking the result. Optimize for
common comparison scenarios (equal timeScales, equal timeValues(), etc.). Attempt the
mathematically simpler simpler method for comparing ratios, and only fall back to the
complex method if the results of multiplying the timeScale by the timeValue overflows.

* wtf/MediaTime.cpp:
(WTF::greatestCommonDivisor):
(WTF::leastCommonMultiple):
(WTF::signum):
(WTF::MediaTime::MediaTime):
(WTF::MediaTime::createWithFloat):
(WTF::MediaTime::createWithDouble):
(WTF::MediaTime::operator+):
(WTF::MediaTime::operator-):
(WTF::MediaTime::operator!):
(WTF::MediaTime::operator bool):
(WTF::MediaTime::compare):
(WTF::MediaTime::setTimeScale):
(WTF::abs):
(WTF::MediaTime::operator<): Deleted.
(WTF::MediaTime::operator>): Deleted.
(WTF::MediaTime::operator!=): Deleted.
(WTF::MediaTime::operator==): Deleted.
(WTF::MediaTime::operator>=): Deleted.
(WTF::MediaTime::operator<=): Deleted.
* wtf/MediaTime.h:

Tools:

Add new correctness tests for the Webcore::SampleMap class. Add additional subtests
for the WTF::MediaTime class.

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WTF/MediaTime.cpp:
(TestWebKitAPI::TEST):
* TestWebKitAPI/Tests/WebCore/SampleMap.cpp: Added.
(WTF::operator<<):
(TestWebKitAPI::TestSample::create):
(TestWebKitAPI::TestSample::TestSample):
(TestWebKitAPI::TEST_F):

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

2 years agoSkip media/audio-dealloc-crash.html on ios-simulator.
ryanhaddad@apple.com [Mon, 6 Feb 2017 20:49:25 +0000 (20:49 +0000)]
Skip media/audio-dealloc-crash.html on ios-simulator.

Unreviewed test gardening.

* platform/ios-simulator/TestExpectations:

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

2 years ago[WK2] Drop legacy WKBundlePageDiagnosticLoggingClient API
cdumez@apple.com [Mon, 6 Feb 2017 20:18:36 +0000 (20:18 +0000)]
[WK2] Drop legacy WKBundlePageDiagnosticLoggingClient API
https://bugs.webkit.org/show_bug.cgi?id=167883
<rdar://problem/30376695>

Reviewed by Sam Weinig.

Drop legacy WKBundlePageDiagnosticLoggingClient API as I am not aware of any remaining client.
All clients have now switched to the equivalent UIProcess-side API.

* WebKit2.xcodeproj/project.pbxproj:
* WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
(WKBundlePageSetDiagnosticLoggingClient): Deleted.
* WebProcess/InjectedBundle/API/c/WKBundlePage.h:
* WebProcess/InjectedBundle/API/c/WKBundlePageDiagnosticLoggingClient.h: Removed.
* WebProcess/InjectedBundle/InjectedBundlePageDiagnosticLoggingClient.cpp: Removed.
* WebProcess/InjectedBundle/InjectedBundlePageDiagnosticLoggingClient.h: Removed.
* WebProcess/WebCoreSupport/WebDiagnosticLoggingClient.cpp:
(WebKit::WebDiagnosticLoggingClient::logDiagnosticMessage):
(WebKit::WebDiagnosticLoggingClient::logDiagnosticMessageWithResult):
(WebKit::WebDiagnosticLoggingClient::logDiagnosticMessageWithValue):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::close):
(WebKit::WebPage::initializeInjectedBundleDiagnosticLoggingClient): Deleted.
* WebProcess/WebPage/WebPage.h:
(WebKit::WebPage::injectedBundleUIClient):
(WebKit::WebPage::injectedBundleDiagnosticLoggingClient): Deleted.

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

2 years agoMake ARES-6 work from the CLI again
sbarati@apple.com [Mon, 6 Feb 2017 20:06:52 +0000 (20:06 +0000)]
Make ARES-6 work from the CLI again
https://bugs.webkit.org/show_bug.cgi?id=167895

Reviewed by Michael Saboff.

* ARES-6/driver.js:
(Driver.prototype.readyTrigger):
(Driver.prototype.disableTrigger):
* ARES-6/stats.js:
(Stats.prototype.toString.span.span):
(Stats.prototype.toString.return.span):
(Stats.prototype.toString):

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

2 years agoChange capitalization in platform name after r211735.
ryanhaddad@apple.com [Mon, 6 Feb 2017 19:46:32 +0000 (19:46 +0000)]
Change capitalization in platform name after r211735.

Unreviewed dashboard fix.

* BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/WebKitBuildbot.js:
(WebKitBuildbot):

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

2 years agoRename AnimationController to CSSAnimationController
commit-queue@webkit.org [Mon, 6 Feb 2017 19:21:45 +0000 (19:21 +0000)]
Rename AnimationController to CSSAnimationController
https://bugs.webkit.org/show_bug.cgi?id=167829

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

Source/WebCore:

AnimationController is a very generic name. The current function of this
class is CSS animation.

* CMakeLists.txt:
* WebCore.xcodeproj/project.pbxproj:
* css/CSSComputedStyleDeclaration.cpp:
(WebCore::computeRenderStyleForProperty):
* dom/Document.cpp:
* history/CachedFrame.cpp:
* page/Frame.cpp:
(WebCore::Frame::Frame):
* page/Frame.h:
(WebCore::Frame::animation):
* page/FrameView.cpp:
* page/Page.cpp:
* page/animation/AnimationBase.cpp:
* page/animation/CSSAnimationController.cpp: Renamed from Source/WebCore/page/animation/AnimationController.cpp.
(WebCore::AnimationPrivateUpdateBlock::AnimationPrivateUpdateBlock):
(WebCore::AnimationPrivateUpdateBlock::~AnimationPrivateUpdateBlock):
(WebCore::CSSAnimationControllerPrivate::CSSAnimationControllerPrivate):
(WebCore::CSSAnimationControllerPrivate::~CSSAnimationControllerPrivate):
(WebCore::CSSAnimationControllerPrivate::ensureCompositeAnimation):
(WebCore::CSSAnimationControllerPrivate::clear):
(WebCore::CSSAnimationControllerPrivate::updateAnimations):
(WebCore::CSSAnimationControllerPrivate::updateAnimationTimerForRenderer):
(WebCore::CSSAnimationControllerPrivate::updateAnimationTimer):
(WebCore::CSSAnimationControllerPrivate::updateStyleIfNeededDispatcherFired):
(WebCore::CSSAnimationControllerPrivate::fireEventsAndUpdateStyle):
(WebCore::CSSAnimationControllerPrivate::startUpdateStyleIfNeededDispatcher):
(WebCore::CSSAnimationControllerPrivate::addEventToDispatch):
(WebCore::CSSAnimationControllerPrivate::addElementChangeToDispatch):
(WebCore::CSSAnimationControllerPrivate::animationFrameCallbackFired):
(WebCore::CSSAnimationControllerPrivate::animationTimerFired):
(WebCore::CSSAnimationControllerPrivate::isRunningAnimationOnRenderer):
(WebCore::CSSAnimationControllerPrivate::isRunningAcceleratedAnimationOnRenderer):
(WebCore::CSSAnimationControllerPrivate::suspendAnimations):
(WebCore::CSSAnimationControllerPrivate::resumeAnimations):
(WebCore::CSSAnimationControllerPrivate::animationsAreSuspendedForDocument):
(WebCore::CSSAnimationControllerPrivate::detachFromDocument):
(WebCore::CSSAnimationControllerPrivate::suspendAnimationsForDocument):
(WebCore::CSSAnimationControllerPrivate::resumeAnimationsForDocument):
(WebCore::CSSAnimationControllerPrivate::startAnimationsIfNotSuspended):
(WebCore::CSSAnimationControllerPrivate::setAllowsNewAnimationsWhileSuspended):
(WebCore::CSSAnimationControllerPrivate::pauseAnimationAtTime):
(WebCore::CSSAnimationControllerPrivate::pauseTransitionAtTime):
(WebCore::CSSAnimationControllerPrivate::beginAnimationUpdateTime):
(WebCore::CSSAnimationControllerPrivate::beginAnimationUpdate):
(WebCore::CSSAnimationControllerPrivate::endAnimationUpdate):
(WebCore::CSSAnimationControllerPrivate::receivedStartTimeResponse):
(WebCore::CSSAnimationControllerPrivate::getAnimatedStyleForRenderer):
(WebCore::CSSAnimationControllerPrivate::computeExtentOfAnimation):
(WebCore::CSSAnimationControllerPrivate::numberOfActiveAnimations):
(WebCore::CSSAnimationControllerPrivate::addToAnimationsWaitingForStyle):
(WebCore::CSSAnimationControllerPrivate::removeFromAnimationsWaitingForStyle):
(WebCore::CSSAnimationControllerPrivate::styleAvailable):
(WebCore::CSSAnimationControllerPrivate::addToAnimationsWaitingForStartTimeResponse):
(WebCore::CSSAnimationControllerPrivate::removeFromAnimationsWaitingForStartTimeResponse):
(WebCore::CSSAnimationControllerPrivate::startTimeResponse):
(WebCore::CSSAnimationControllerPrivate::animationWillBeRemoved):
(WebCore::CSSAnimationControllerPrivate::addToAnimationsDependentOnScroll):
(WebCore::CSSAnimationControllerPrivate::removeFromAnimationsDependentOnScroll):
(WebCore::CSSAnimationControllerPrivate::scrollWasUpdated):
(WebCore::CSSAnimationController::CSSAnimationController):
(WebCore::CSSAnimationController::~CSSAnimationController):
(WebCore::CSSAnimationController::cancelAnimations):
(WebCore::CSSAnimationController::updateAnimations):
(WebCore::CSSAnimationController::getAnimatedStyleForRenderer):
(WebCore::CSSAnimationController::computeExtentOfAnimation):
(WebCore::CSSAnimationController::notifyAnimationStarted):
(WebCore::CSSAnimationController::pauseAnimationAtTime):
(WebCore::CSSAnimationController::numberOfActiveAnimations):
(WebCore::CSSAnimationController::pauseTransitionAtTime):
(WebCore::CSSAnimationController::isRunningAnimationOnRenderer):
(WebCore::CSSAnimationController::isRunningAcceleratedAnimationOnRenderer):
(WebCore::CSSAnimationController::isSuspended):
(WebCore::CSSAnimationController::suspendAnimations):
(WebCore::CSSAnimationController::resumeAnimations):
(WebCore::CSSAnimationController::allowsNewAnimationsWhileSuspended):
(WebCore::CSSAnimationController::setAllowsNewAnimationsWhileSuspended):
(WebCore::CSSAnimationController::serviceAnimations):
(WebCore::CSSAnimationController::animationsAreSuspendedForDocument):
(WebCore::CSSAnimationController::detachFromDocument):
(WebCore::CSSAnimationController::suspendAnimationsForDocument):
(WebCore::CSSAnimationController::resumeAnimationsForDocument):
(WebCore::CSSAnimationController::startAnimationsIfNotSuspended):
(WebCore::CSSAnimationController::beginAnimationUpdate):
(WebCore::CSSAnimationController::endAnimationUpdate):
(WebCore::CSSAnimationController::supportsAcceleratedAnimationOfProperty):
(WebCore::CSSAnimationController::wantsScrollUpdates):
(WebCore::CSSAnimationController::scrollWasUpdated):
(WebCore::CSSAnimationController::hasAnimations):
* page/animation/CSSAnimationController.h: Renamed from Source/WebCore/page/animation/AnimationController.h.
(WebCore::AnimationUpdateBlock::AnimationUpdateBlock):
(WebCore::AnimationUpdateBlock::~AnimationUpdateBlock):
* page/animation/CSSAnimationControllerPrivate.h: Renamed from Source/WebCore/page/animation/AnimationControllerPrivate.h.
(WebCore::CSSAnimationControllerPrivate::hasAnimations):
(WebCore::CSSAnimationControllerPrivate::isSuspended):
(WebCore::CSSAnimationControllerPrivate::setBeginAnimationUpdateTime):
(WebCore::CSSAnimationControllerPrivate::allowsNewAnimationsWhileSuspended):
(WebCore::CSSAnimationControllerPrivate::wantsScrollUpdates):
(WebCore::CSSAnimationControllerPrivate::scrollPosition):
* page/animation/CSSPropertyAnimation.cpp:
(WebCore::CSSPropertyAnimationWrapperMap::singleton):
* page/animation/CompositeAnimation.cpp:
(WebCore::CompositeAnimation::CompositeAnimation):
* page/animation/CompositeAnimation.h:
(WebCore::CompositeAnimation::create):
(WebCore::CompositeAnimation::animationController):
* page/animation/ImplicitAnimation.cpp:
* page/animation/KeyframeAnimation.cpp:
* page/ios/FrameIOS.mm:
* platform/graphics/GraphicsLayer.h:
* rendering/RenderElement.h:
* rendering/RenderLayer.cpp:
* rendering/RenderLayerBacking.cpp:
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::requiresCompositingForAnimation):
* rendering/RenderObject.cpp:
* rendering/RenderObject.h:
(WebCore::RenderObject::animation):
* testing/Internals.cpp:

Source/WebKit/mac:

* WebView/WebFrame.mm:
* WebView/WebView.mm:

Source/WebKit/win:

* WebFrame.cpp:

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

2 years agoStatic Analyzer: JSContext.mm: Incorrect decrement of the reference count of an object
commit-queue@webkit.org [Mon, 6 Feb 2017 19:16:07 +0000 (19:16 +0000)]
Static Analyzer: JSContext.mm: Incorrect decrement of the reference count of an object
https://bugs.webkit.org/show_bug.cgi?id=167848

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

Source/JavaScriptCore/API/JSContext.mm:87:5: warning: Incorrect decrement of the reference count of an object that is not owned at this point by the caller
    [self.exceptionHandler release];
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 warning generated.

* API/JSContext.mm:
(-[JSContext dealloc]):
Use the ivar in dealloc instead of going through the getter.

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

2 years agoAdd a survey to learn how people use WebKit Nightly builds
jond@apple.com [Mon, 6 Feb 2017 19:13:40 +0000 (19:13 +0000)]
Add a survey to learn how people use WebKit Nightly builds
https://bugs.webkit.org/show_bug.cgi?id=167748

Reviewed by Joseph Pecoraro.

* wp-content/themes/webkit/functions.php:
* wp-content/themes/webkit/nightly-start.php:
* wp-content/themes/webkit/nightly-survey.php: Added.
* wp-content/themes/webkit/survey.json: Added.

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

2 years agoSimple line layout: Use simplified text measuring when possible.
zalan@apple.com [Mon, 6 Feb 2017 19:06:39 +0000 (19:06 +0000)]
Simple line layout: Use simplified text measuring when possible.
https://bugs.webkit.org/show_bug.cgi?id=167843
<rdar://problem/30364907>

Reviewed by Antti Koivisto.

This patch adds a simplified version of text width measuring.
Certain type of text runs (no spacing etc) only require a subset of what we
currently do in FontCascade::width().

* platform/graphics/FontCascade.cpp:
(WebCore::FontCascade::widthForSimpleText):
* platform/graphics/FontCascade.h:
* platform/graphics/WidthCache.h:
(WebCore::WidthCache::add):
(WebCore::WidthCache::addSlowCase):
* platform/graphics/WidthIterator.cpp:
(WebCore::WidthIterator::advanceInternal):
* rendering/RenderText.cpp:
(WebCore::RenderText::styleDidChange):
(WebCore::RenderText::setRenderedText):
(WebCore::RenderText::computeCanUseSimplifiedTextMeasuring):
* rendering/RenderText.h:
(WebCore::RenderText::canUseSimplifiedTextMeasuring):
* rendering/SimpleLineLayoutFlowContents.cpp:
(WebCore::SimpleLineLayout::initializeSegments):
* rendering/SimpleLineLayoutFlowContents.h:
* rendering/SimpleLineLayoutTextFragmentIterator.cpp:
(WebCore::SimpleLineLayout::TextFragmentIterator::Style::Style):
(WebCore::SimpleLineLayout::TextFragmentIterator::TextFragmentIterator):
(WebCore::SimpleLineLayout::TextFragmentIterator::textWidth):
* rendering/SimpleLineLayoutTextFragmentIterator.h:

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

2 years agoNull check the WebKit::RemoteObjectProxy object before calling it
andersca@apple.com [Mon, 6 Feb 2017 18:55:56 +0000 (18:55 +0000)]
Null check the WebKit::RemoteObjectProxy object before calling it
https://bugs.webkit.org/show_bug.cgi?id=167891
rdar://problem/30229358

Reviewed by Tim Horton.

If a _WKRemoteObjectRegistry invocation reply block outlives its underlying WebKit::RemoteObjectProxy object,
we'll crash trying to send an unused reply to it. Work around this crash by adding a null check before calling
sendUnusedReply.

While this fixes the crash it will lead to leaks in the process that holds on to the reply block. A more long term fix
would be to manage the reply block checkers and call sendUnusedReply when invalidating the _WKRemoteObjectRegistry.

* Shared/API/Cocoa/_WKRemoteObjectRegistry.mm:
(-[_WKRemoteObjectRegistry _invokeMethod:]):

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

2 years agoMove the Leaks bot to Sierra
ap@apple.com [Mon, 6 Feb 2017 18:38:14 +0000 (18:38 +0000)]
Move the Leaks bot to Sierra
https://bugs.webkit.org/show_bug.cgi?id=167886

Reviewed by Daniel Bates.

* BuildSlaveSupport/build.webkit.org-config/config.json:
* BuildSlaveSupport/build.webkit.org-config/mastercfg_unittest.py:
* BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/LeaksViewer.js:
(LeaksViewer._displayURLPrompt):
* BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/WebKitBuildbot.js:
(WebKitBuildbot):

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

2 years ago[Soup] Deadlock in NetworkProcess
carlosgc@webkit.org [Mon, 6 Feb 2017 18:00:52 +0000 (18:00 +0000)]
[Soup] Deadlock in NetworkProcess
https://bugs.webkit.org/show_bug.cgi?id=167876

Reviewed by Michael Catanzaro.

WebKitSoupRequestInputStream uses a read lock. What is happening is that webkitSoupRequestInputStreamAddData
takes the lock, and it calls webkitSoupRequestInputStreamPendingReadAsyncComplete with the lock help. That
causes webkitSoupRequestInputStreamReadAsync to be called again to read the next chunk, but in the same run loop
operation. We don't really need the read lock because both webkitSoupRequestInputStreamAddData and
webkitSoupRequestInputStreamReadAsync shoudl always be called from the main thread.

* WebProcess/soup/WebKitSoupRequestInputStream.cpp:
(webkitSoupRequestInputStreamReadAsync): Remove the read lock and assert if called from a secondary thread.
(webkitSoupRequestInputStreamAddData): Ditto.

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

2 years agoResource usage overlay should ignore mouse events outside bounds by default
carlosgc@webkit.org [Mon, 6 Feb 2017 17:49:18 +0000 (17:49 +0000)]
Resource usage overlay should ignore mouse events outside bounds by default
https://bugs.webkit.org/show_bug.cgi?id=167874

Reviewed by Andreas Kling.

It's overriding the default causing that the first click after the overlay is shown is always handled by the
overlay even when clicked outside bounds. It should only be set false while dragging.

* page/ResourceUsageOverlay.cpp:
(WebCore::ResourceUsageOverlay::initialize):

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

2 years agoRe-sync html/browsers/origin/cross-origin-objects tests
cdumez@apple.com [Mon, 6 Feb 2017 17:47:02 +0000 (17:47 +0000)]
Re-sync html/browsers/origin/cross-origin-objects tests
https://bugs.webkit.org/show_bug.cgi?id=167881

Reviewed by Youenn Fablet.

Re-sync html/browsers/origin/cross-origin-objects tests from upstream a052787d.

* web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects-exceptions-expected.txt: Removed.
* web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects-exceptions.html: Removed.
* web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects-expected.txt:
* web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects.html:
* web-platform-tests/html/browsers/origin/cross-origin-objects/frame.html:
* web-platform-tests/html/browsers/origin/cross-origin-objects/w3c-import.log:

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

2 years agoSkip ARES-6 on performance bots
ryanhaddad@apple.com [Mon, 6 Feb 2017 17:36:15 +0000 (17:36 +0000)]
Skip ARES-6 on performance bots
https://bugs.webkit.org/show_bug.cgi?id=167863

Unreviewed test gardening.

ES6SampleBench was renamed to ARES-6, so this should be updated in PerformanceTests/Skipped as well.

* Skipped:

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

2 years agoCrashTracer: com.apple.WebKit.WebContent at WebCore: WebCore::Node::invalidateStyle
antti@apple.com [Mon, 6 Feb 2017 17:35:12 +0000 (17:35 +0000)]
CrashTracer: com.apple.WebKit.WebContent at WebCore: WebCore::Node::invalidateStyle
https://bugs.webkit.org/show_bug.cgi?id=167878
rdar://problem/30251840

Reviewed by Andreas Kling.

Speculative fix.

We are trying to invalidate a null node from ~PostResolutionCallbackDisabler. Looks like the only way
this could happen is if HTMLFrameOwnerElement::scheduleinvalidateStyleAndLayerComposition is called
with null 'this'. There is one place where this might happen.

* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::attachRootLayer): Add null check.

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

2 years agoUnreviewed, rolling out r211722.
ryanhaddad@apple.com [Mon, 6 Feb 2017 17:28:04 +0000 (17:28 +0000)]
Unreviewed, rolling out r211722.

This change introduced a LayoutTest failure on mac-wk2.

Reverted changeset:

"[Modern Media Controls] Improve handling of <video> with only
audio tracks"
https://bugs.webkit.org/show_bug.cgi?id=167836
http://trac.webkit.org/changeset/211722

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

2 years ago[MediaStream Mac] Stop using AVSampleBufferAudioRenderer
eric.carlson@apple.com [Mon, 6 Feb 2017 17:22:27 +0000 (17:22 +0000)]
[MediaStream Mac] Stop using AVSampleBufferAudioRenderer
https://bugs.webkit.org/show_bug.cgi?id=167821

Reviewed by Jer Noble.

* WebCore.xcodeproj/project.pbxproj: Add new files.

* platform/audio/mac/AudioSampleDataSource.cpp:
(WebCore::AudioSampleDataSource::pullSamplesInternal): Don't assume the first timestamp from the
render proc after a pause is zero.

Stop using an audio renderer for each audio track. No audio renderers means we don't need to use
an AVSampleBufferRenderSynchronizer.
* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.h:
* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:
(-[WebAVSampleBufferStatusChangeListener invalidate]): No more audio renderers.
(-[WebAVSampleBufferStatusChangeListener observeValueForKeyPath:ofObject:change:context:]): Ditto.
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::MediaPlayerPrivateMediaStreamAVFObjC): Ditto.
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::~MediaPlayerPrivateMediaStreamAVFObjC): Pause
  audio tracks explicitly.
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::audioSourceProvider): Remove the existing code,
  it was incorrect and not thread safe.
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::flushRenderers): No more audio renderers.
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::ensureLayer): No more render synchronizer.
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::destroyLayer): Ditto.
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::play): Start each audio track.
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::pause): Pause each audio track.
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::setVolume): Pass the command to each audio track.
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::setMuted): Ditto.
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::streamTime): No more render synchronizer.
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::sampleBufferUpdated): Don't handle audio samples.
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::updateTracks): Update for audio track class change. No
more render synchronizer.
(-[WebAVSampleBufferStatusChangeListener beginObservingRenderer:]): Deleted.
(-[WebAVSampleBufferStatusChangeListener stopObservingRenderer:]): Deleted.
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::enqueueAudioSample): Deleted.
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::requestNotificationWhenReadyForAudioData): Deleted.
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::createAudioRenderer): Deleted.
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::destroyAudioRenderer): Deleted.
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::destroyAudioRenderers): Deleted.
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::rendererStatusDidChange): Deleted.

* platform/mediastream/AudioTrackPrivateMediaStream.h:

* platform/mediastream/MediaStreamTrackPrivate.cpp:
(WebCore::MediaStreamTrackPrivate::MediaStreamTrackPrivate): add/removeObserver takes a reference,
not a pointer.
(WebCore::MediaStreamTrackPrivate::~MediaStreamTrackPrivate): Ditto.
(WebCore::MediaStreamTrackPrivate::videoSampleAvailable): Renamed from sourceHasMoreMediaData.
(WebCore::MediaStreamTrackPrivate::sourceHasMoreMediaData): Deleted.
* platform/mediastream/MediaStreamTrackPrivate.h:

* platform/mediastream/RealtimeMediaSource.cpp:
(WebCore::RealtimeMediaSource::addObserver): Take a reference, not a pointer.
(WebCore::RealtimeMediaSource::removeObserver): Ditto.
(WebCore::RealtimeMediaSource::videoSampleAvailable): Renamed from mediaDataUpdated.
(WebCore::RealtimeMediaSource::audioSamplesAvailable): New.
(WebCore::RealtimeMediaSource::stop): Drive-by cleanup.
(WebCore::RealtimeMediaSource::requestStop): Ditto.
(WebCore::RealtimeMediaSource::mediaDataUpdated): Deleted.
* platform/mediastream/RealtimeMediaSource.h:

* platform/mediastream/mac/AVAudioCaptureSource.h:
* platform/mediastream/mac/AVAudioCaptureSource.mm:
(WebCore::AVAudioCaptureSource::AVAudioCaptureSource):
(WebCore::AVAudioCaptureSource::addObserver):
(WebCore::AVAudioCaptureSource::shutdownCaptureSession):
(WebCore::AVAudioCaptureSource::captureOutputDidOutputSampleBufferFromConnection):
(WebCore::operator==): Deleted.
(WebCore::operator!=): Deleted.

* platform/mediastream/mac/AVVideoCaptureSource.mm:
(WebCore::AVVideoCaptureSource::processNewFrame): Call videoSampleAvailable, not mediaDataUpdated.

Render audio with a CoreAudio output unit.
* platform/mediastream/mac/AudioTrackPrivateMediaStreamCocoa.cpp: Added.
(WebCore::AudioTrackPrivateMediaStreamCocoa::AudioTrackPrivateMediaStreamCocoa):
(WebCore::AudioTrackPrivateMediaStreamCocoa::~AudioTrackPrivateMediaStreamCocoa):
(WebCore::AudioTrackPrivateMediaStreamCocoa::playInternal):
(WebCore::AudioTrackPrivateMediaStreamCocoa::play):
(WebCore::AudioTrackPrivateMediaStreamCocoa::pause):
(WebCore::AudioTrackPrivateMediaStreamCocoa::setVolume):
(WebCore::AudioTrackPrivateMediaStreamCocoa::setupAudioUnit):
(WebCore::AudioTrackPrivateMediaStreamCocoa::audioSamplesAvailable):
(WebCore::AudioTrackPrivateMediaStreamCocoa::sourceStopped):
(WebCore::AudioTrackPrivateMediaStreamCocoa::render):
(WebCore::AudioTrackPrivateMediaStreamCocoa::inputProc):
* platform/mediastream/mac/AudioTrackPrivateMediaStreamCocoa.h: Added.

* platform/mediastream/mac/MockRealtimeAudioSourceMac.h:
* platform/mediastream/mac/MockRealtimeAudioSourceMac.mm:
(WebCore::alignTo16Bytes):
(WebCore::MockRealtimeAudioSourceMac::emitSampleBuffers):
(WebCore::MockRealtimeAudioSourceMac::reconfigure): Minor cleanup.
(WebCore::MockRealtimeAudioSourceMac::render): Ditto.

* platform/mediastream/mac/MockRealtimeVideoSourceMac.mm:
(WebCore::MockRealtimeVideoSourceMac::updateSampleBuffer): Call videoSampleAvailable, not mediaDataUpdated.

* platform/mediastream/mac/WebAudioSourceProviderAVFObjC.h:
* platform/mediastream/mac/WebAudioSourceProviderAVFObjC.mm:
(WebCore::WebAudioSourceProviderAVFObjC::~WebAudioSourceProviderAVFObjC):
(WebCore::WebAudioSourceProviderAVFObjC::provideInput): Use a mutex. Get rid of m_writeAheadCount,
it is always 0.
(WebCore::WebAudioSourceProviderAVFObjC::prepare): Use a lock.
(WebCore::WebAudioSourceProviderAVFObjC::unprepare): Ditto.
(WebCore::WebAudioSourceProviderAVFObjC::process): Ditto.
* platform/mock/MockRealtimeAudioSource.h:
(WebCore::MockRealtimeAudioSource::renderInterval): Decrease the render interval.

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

2 years agoGuard and unguard ports in a much less intrusive way
andersca@apple.com [Mon, 6 Feb 2017 16:54:31 +0000 (16:54 +0000)]
Guard and unguard ports in a much less intrusive way
https://bugs.webkit.org/show_bug.cgi?id=167813

Reviewed by Sam Weinig.

Instead of adopting mach_port_construct/mach_port_destruct, just guard and unguard the ports where appropriate.

* Platform/IPC/mac/ConnectionMac.mm:
(IPC::Connection::platformInitialize):
(IPC::Connection::open):

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

2 years agoPrevent app crash on launch during simctl install workaround
jbedard@apple.com [Mon, 6 Feb 2017 16:21:07 +0000 (16:21 +0000)]
Prevent app crash on launch during simctl install workaround
https://bugs.webkit.org/show_bug.cgi?id=167685

Reviewed by Daniel Bates.

* Scripts/webkitpy/port/simulator_process.py:
(SimulatorProcess.__init__): Pass environment to install.
* Scripts/webkitpy/xcode/simulator.py:
(Device.install_app): Accept environment, pass environment to launch.

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

2 years ago[Modern Media Controls] Add a backdrop filter to the start button on macOS
commit-queue@webkit.org [Mon, 6 Feb 2017 16:19:43 +0000 (16:19 +0000)]
[Modern Media Controls] Add a backdrop filter to the start button on macOS
https://bugs.webkit.org/show_bug.cgi?id=167879
<rdar://problem/30375174>

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

Source/WebCore:

Add a backdrop filter to the start button on macOS.

Test: media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-start-button-style.html

* Modules/modern-media-controls/controls/macos-inline-media-controls.css:
(.media-controls.mac.inline > button.start > div):

LayoutTests:

Add a new test that checks that the expected backdrop filter is applied to the start button on macOS.

* media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-start-button-style-expected.txt: Added.
* media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-start-button-style.html: Added.

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

2 years ago[Modern Media Controls] Bring fullscreen controls up to spec
commit-queue@webkit.org [Mon, 6 Feb 2017 16:16:53 +0000 (16:16 +0000)]
[Modern Media Controls] Bring fullscreen controls up to spec
https://bugs.webkit.org/show_bug.cgi?id=167875
<rdar://problem/29611222>

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

Source/WebCore:

We update the fullscreen PiP icon to have the correct size and add two new buttons
around the volume slider, "volume-down" to bring the volume to 0 and "volume-up"
to bring the volume to 1.

To accomodate the new volume buttons, we move the volume slider inside an additional
ButtonsContainer object, along with the two new buttons.

Tests: media/modern-media-controls/volume-down-support/volume-down-support.html
       media/modern-media-controls/volume-up-support/volume-up-support.html

* Modules/modern-media-controls/controls/icon-service.js:
* Modules/modern-media-controls/controls/macos-fullscreen-media-controls.css:
(.media-controls.mac.fullscreen button.volume-down):
(.media-controls.mac.fullscreen button.volume-up):
* Modules/modern-media-controls/controls/macos-fullscreen-media-controls.js:
* Modules/modern-media-controls/controls/volume-down-button.js: Added.
(VolumeDownButton):
* Modules/modern-media-controls/controls/volume-slider.js:
(VolumeSlider):
* Modules/modern-media-controls/controls/volume-up-button.js: Added.
(VolumeUpButton):
* Modules/modern-media-controls/images/macOS/pip-in-fullscreen@1x.png:
* Modules/modern-media-controls/images/macOS/pip-in-fullscreen@2x.png:
* Modules/modern-media-controls/images/macOS/volume-down-fullscreen@1x.png: Added.
* Modules/modern-media-controls/images/macOS/volume-down-fullscreen@2x.png: Added.
* Modules/modern-media-controls/images/macOS/volume-up-fullscreen@1x.png: Added.
* Modules/modern-media-controls/images/macOS/volume-up-fullscreen@2x.png: Added.
* Modules/modern-media-controls/js-files:
* Modules/modern-media-controls/media/media-controller.js:
(MediaController.prototype._updateControlsIfNeeded):
* Modules/modern-media-controls/media/volume-down-support.js: Added.
(VolumeDownSupport.prototype.get control):
(VolumeDownSupport.prototype.buttonWasPressed):
(VolumeDownSupport):
* Modules/modern-media-controls/media/volume-up-support.js: Added.
(VolumeUpSupport.prototype.get control):
(VolumeUpSupport.prototype.buttonWasPressed):
(VolumeUpSupport):
* WebCore.xcodeproj/project.pbxproj:

LayoutTests:

Rebaseline some existing tests due to the addition of the volume-down and volume-up
buttons as well as the width change of the PiP icon and add a couple of new tests to
check the behavior of the volume-down and volume-up buttons.

* media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-buttons-containers-styles-expected.txt:
* media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-buttons-containers-styles.html:
* media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-buttons-styles-expected.txt:
* media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-buttons-styles.html:
* media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-constructor-expected.txt:
* media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-constructor.html:
* media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-drag.html:
* media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-volume-styles-expected.txt:
* media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-volume-styles.html:
* media/modern-media-controls/media-controller/media-controller-fullscreen-ltr.html:
* media/modern-media-controls/volume-down-support/volume-down-support-expected.txt: Added.
* media/modern-media-controls/volume-down-support/volume-down-support.html: Added.
* media/modern-media-controls/volume-up-support/volume-up-support-expected.txt: Added.
* media/modern-media-controls/volume-up-support/volume-up-support.html: Added.
* platform/ios-simulator/TestExpectations:

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

2 years ago[Modern Media Controls] Improve handling of <video> with only audio tracks
commit-queue@webkit.org [Mon, 6 Feb 2017 13:48:10 +0000 (13:48 +0000)]
[Modern Media Controls] Improve handling of <video> with only audio tracks
https://bugs.webkit.org/show_bug.cgi?id=167836
<rdar://problem/30255812>

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

Source/WebCore:

We now check for the availability of video tracks before considering a <video>
element is displaying an actual video file and turning auto-hide on. We also
check that we have video tracks before enabling the fullscreen button. This
brings the behavior of a <video> pointing to a resource with no video tracks
to be the same as an <audio> element.

Test: media/modern-media-controls/media-controller/media-controller-video-with-only-audio.html

* Modules/modern-media-controls/media/controls-visibility-support.js:
(ControlsVisibilitySupport.prototype.get tracksToMonitor):
(ControlsVisibilitySupport.prototype._updateControls):
(ControlsVisibilitySupport):
* Modules/modern-media-controls/media/fullscreen-support.js:
(FullscreenSupport.prototype.syncControl):
(FullscreenSupport):

LayoutTests:

Add a new test to check that a <video> with a resource that only has audio tracks
does not auto-hide nor show the fullscreen button. We also rebaseline a few existing
tests for this change of behavior.

* fast/regions/inline-block-inside-anonymous-overflow-with-covered-controls-expected.html:
* fast/regions/inline-block-inside-anonymous-overflow-with-covered-controls.html:
* media/modern-media-controls/controls-visibility-support/controls-visibility-support-controls-on-expected.txt:
* media/modern-media-controls/controls-visibility-support/controls-visibility-support-controls-on.html:
* media/modern-media-controls/controls-visibility-support/controls-visibility-support-controls-toggle-expected.txt:
* media/modern-media-controls/controls-visibility-support/controls-visibility-support-controls-toggle.html:
* media/modern-media-controls/media-controller/media-controller-video-with-only-audio-expected.txt: Added.
* media/modern-media-controls/media-controller/media-controller-video-with-only-audio.html: Added.
* media/modern-media-controls/time-label/time-label-white-space-nowrap.html:

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

2 years ago[GTK][EFL] Release unused UpdateAtlas when in memory pressure situation
magomez@igalia.com [Mon, 6 Feb 2017 12:22:04 +0000 (12:22 +0000)]
[GTK][EFL] Release unused UpdateAtlas when in memory pressure situation
https://bugs.webkit.org/show_bug.cgi?id=167872

Reviewed by Carlos Garcia Campos.

In a memory pressure situation, release all the unused UpdateAtlas as soon as possible, instead
of waiting 3 seconds before releasing them.

* WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp:
(WebKit::CompositingCoordinator::releaseInactiveAtlasesTimerFired):
(WebKit::CompositingCoordinator::releaseAtlases):
* WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.h:

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

2 years agoWeb Inspector: sibling elements's disclosure triangles aren't vertically aligned...
commit-queue@webkit.org [Mon, 6 Feb 2017 11:15:36 +0000 (11:15 +0000)]
Web Inspector: sibling elements's disclosure triangles aren't vertically aligned in DOM tree outline in certain ports
https://bugs.webkit.org/show_bug.cgi?id=167568

Patch by Fujii Hironori <Hironori.Fujii@sony.com> on 2017-02-06
Reviewed by Brian Burg.

The triangle has 13px height and has float:left. If the line-height
is smaller than 13px, the sibling element's triangles aren't
vertically aligned.

* UserInterface/Views/DOMTreeOutline.css:
(.tree-outline.dom li.parent): Set line-height 13px explicitly.

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

2 years agoRebase API tests after r211638
achristensen@apple.com [Mon, 6 Feb 2017 09:28:21 +0000 (09:28 +0000)]
Rebase API tests after r211638
https://bugs.webkit.org/show_bug.cgi?id=167779

* TestWebKitAPI/Tests/WebCore/URLParser.cpp:
(TestWebKitAPI::TEST_F):
URLs with non-special schemes and characters like % in the host now fail to parse,
more like their special counterparts and according to spec.

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

2 years agoFix WinCairo build after r211681
achristensen@apple.com [Mon, 6 Feb 2017 08:51:48 +0000 (08:51 +0000)]
Fix WinCairo build after r211681
https://bugs.webkit.org/show_bug.cgi?id=167096

* platform/graphics/texmap/TextureMapperGC3DPlatformLayer.cpp:
Include some necessary GLES headers.

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

2 years agoUnreviewed trivial fix after r211697.
ossy@webkit.org [Mon, 6 Feb 2017 08:35:26 +0000 (08:35 +0000)]
Unreviewed trivial fix after r211697.
https://bugs.webkit.org/show_bug.cgi?id=167863

* Scripts/run-javascriptcore-tests:
(runJSCStressTests): Renamed ES6SampleBench to ARES-6.

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

2 years agoData interaction fails in Safari splitscreen mode when dropping into a contenteditable
wenson_hsieh@apple.com [Mon, 6 Feb 2017 06:23:50 +0000 (06:23 +0000)]
Data interaction fails in Safari splitscreen mode when dropping into a contenteditable
https://bugs.webkit.org/show_bug.cgi?id=167862
<rdar://problem/30368405>

Reviewed by Tim Horton.

Adds a counter to WebItemProviderPasteboard that can incremented, decremented, and queried by clients.

* platform/ios/WebItemProviderPasteboard.h:
* platform/ios/WebItemProviderPasteboard.mm:
(-[WebItemProviderPasteboard init]):
(-[WebItemProviderPasteboard hasPendingOperation]):
(-[WebItemProviderPasteboard incrementPendingOperationCount]):
(-[WebItemProviderPasteboard decrementPendingOperationCount]):

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

2 years agoChange ES6SampleBench into ARES-6
fpizlo@apple.com [Mon, 6 Feb 2017 04:56:09 +0000 (04:56 +0000)]
Change ES6SampleBench into ARES-6
https://bugs.webkit.org/show_bug.cgi?id=167863

Rubber stamped by Saam Barati.

This imports changes that Jonathan Davis (jond@apple.com) made to ES6SampleBench to make it look
super awesome. Its now called ARES-6.

* ARES-6: Copied from PerformanceTests/ES6SampleBench.
* ARES-6/ARES-6.svg: Added.
* ARES-6/driver.js:
(Driver):
(Driver.prototype.readyTrigger):
(Driver.prototype.disableTrigger):
(Driver.prototype.start):
(Driver.prototype._updateIterations):
* ARES-6/glue.js:
* ARES-6/index.html:
* ARES-6/results.js:
(Results.prototype.reportRunning):
(Results.prototype.reportDone):
* ARES-6/stats.js:
(Stats.prototype.toString.return.span):
(Stats.prototype.toString.span.span):
(Stats.prototype.toString): Deleted.
* ARES-6/style.css: Removed.
* ARES-6/styles.css: Added.
(html):
(body):
(header,):
(p a):
(p a:hover):
(.flip):
(header):
(h2,):
(p):
(.about h2):
(.logo):
(.start):
(.start.ready):
(.start.ready:hover):
(.start:after):
(.start.ready .testrun):
(.tests):
(.test):
(.overall h2,):
(.test .indicator):
(.test .indicator.running):
(@keyframes test-running):
(100%):
(.score):
(.score label):
(.score .value):
(.score .units):
(.score .margin):
(.overall):
(.overall .score):
(.overall .margin):
(.testing, .about):
(.testing):
(.about):
(#about:target):
(@media only screen and (max-width: 784px)):
* ARES-6/swoop.svg: Added.
* ES6SampleBench: Removed.
* ES6SampleBench/Air: Removed.
* ES6SampleBench/Air/README.md: Removed.
* ES6SampleBench/Air/airjs-tests.yaml: Removed.
* ES6SampleBench/Air/all.js: Removed.
* ES6SampleBench/Air/allocate_stack.js: Removed.
* ES6SampleBench/Air/arg.js: Removed.
* ES6SampleBench/Air/basic_block.js: Removed.
* ES6SampleBench/Air/benchmark.js: Removed.
* ES6SampleBench/Air/code.js: Removed.
* ES6SampleBench/Air/custom.js: Removed.
* ES6SampleBench/Air/frequented_block.js: Removed.
* ES6SampleBench/Air/insertion_set.js: Removed.
* ES6SampleBench/Air/inst.js: Removed.
* ES6SampleBench/Air/liveness.js: Removed.
* ES6SampleBench/Air/make_dist.sh: Removed.
* ES6SampleBench/Air/opcode.js: Removed.
* ES6SampleBench/Air/payload-airjs-ACLj8C.js: Removed.
* ES6SampleBench/Air/payload-gbemu-executeIteration.js: Removed.
* ES6SampleBench/Air/payload-imaging-gaussian-blur-gaussianBlur.js: Removed.
* ES6SampleBench/Air/payload-typescript-scanIdentifier.js: Removed.
* ES6SampleBench/Air/reg.js: Removed.
* ES6SampleBench/Air/stack_slot.js: Removed.
* ES6SampleBench/Air/stress-test.js: Removed.
* ES6SampleBench/Air/strip-hash.rb: Removed.
* ES6SampleBench/Air/symbols.js: Removed.
* ES6SampleBench/Air/test.html: Removed.
* ES6SampleBench/Air/test.js: Removed.
* ES6SampleBench/Air/tmp.js: Removed.
* ES6SampleBench/Air/tmp_base.js: Removed.
* ES6SampleBench/Air/util.js: Removed.
* ES6SampleBench/Basic: Removed.
* ES6SampleBench/Basic/ast.js: Removed.
* ES6SampleBench/Basic/basic-tests.yaml: Removed.
* ES6SampleBench/Basic/basic.js: Removed.
* ES6SampleBench/Basic/benchmark.js: Removed.
* ES6SampleBench/Basic/caseless_map.js: Removed.
* ES6SampleBench/Basic/lexer.js: Removed.
* ES6SampleBench/Basic/number.js: Removed.
* ES6SampleBench/Basic/parser.js: Removed.
* ES6SampleBench/Basic/random.js: Removed.
* ES6SampleBench/Basic/state.js: Removed.
* ES6SampleBench/Basic/stress-test.js: Removed.
* ES6SampleBench/Basic/test.html: Removed.
* ES6SampleBench/Basic/test.js: Removed.
* ES6SampleBench/Basic/util.js: Removed.
* ES6SampleBench/air_benchmark.js: Removed.
* ES6SampleBench/basic_benchmark.js: Removed.
* ES6SampleBench/cli.js: Removed.
* ES6SampleBench/driver.js: Removed.
* ES6SampleBench/glue.js: Removed.
* ES6SampleBench/index.html: Removed.
* ES6SampleBench/results.js: Removed.
* ES6SampleBench/stats.js: Removed.
* ES6SampleBench/style.css: Removed.

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

2 years agoRemove unparentsOffscreenTiles logic in TileController
simon.fraser@apple.com [Sun, 5 Feb 2017 23:04:48 +0000 (23:04 +0000)]
Remove unparentsOffscreenTiles logic in TileController
https://bugs.webkit.org/show_bug.cgi?id=167823

Reviewed by Tim Horton.
Source/WebCore:

Give all TileGrids the "unparents offscreen tiles" behavior. This was enabled for
only the page tiles in WK2 on Mac and iOS, but there's no reason to not use it for
tiled composited layers also.

Also use more modern C++ idioms in a few places.

* platform/graphics/TiledBacking.h:
* platform/graphics/ca/TileController.h:
* platform/graphics/ca/TileGrid.cpp:
(WebCore::TileGrid::revalidateTiles):
(WebCore::TileGrid::ensureTilesForRect):
* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::RenderLayerBacking):

Source/WebKit2:

Drive-by fix: make sure we put the tiled scrolling indicator's layer back when switching tabs.

* WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
(WebKit::TiledCoreAnimationDrawingArea::updateRootLayers):

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

2 years ago[Modern Media Controls] PiP button is not visible with a live broadcast video
commit-queue@webkit.org [Sun, 5 Feb 2017 20:55:21 +0000 (20:55 +0000)]
[Modern Media Controls] PiP button is not visible with a live broadcast video
https://bugs.webkit.org/show_bug.cgi?id=167794
<rdar://problem/30348790>

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

Source/WebCore:

We were only listening to the "loadedmetadata", "error", "webkitpresentationmodechanged"
and "webkitcurrentplaybacktargetiswirelesschanged" events to invalidate the enabled state
for the PiP button. We also need to check availability of video tracks, which we already
did for fullscreen, which is quite similar.

So we now listen to "addtrack", "removetrack" and "change" events on the media.videoTracks
property, which correctly invalidates the PiP button when the first video track becomes
available or the last video track is removed.

Since a couple of other MediaControllerSupport subclasses (FullscreenSupport and TracksSupport)
would also listen to those events on various track types, we add a new "tracksToMonitor"
property on MediaControllerSupport which subclasses can override to provide a list of tracks
that should listen to those events. This removes the need for dedicated construction and
destruction time in MediaControllerSupport subclasses that need to listen to events on
tracks rather than the media itself.

Test: http/tests/media/modern-media-controls/pip-support/pip-support-live-broadcast.html

* Modules/modern-media-controls/media/fullscreen-support.js:
(FullscreenSupport):
(FullscreenSupport.prototype.get tracksToMonitor):
(FullscreenSupport.prototype.destroy): Deleted.
* Modules/modern-media-controls/media/media-controller-support.js:
(MediaControllerSupport):
(MediaControllerSupport.prototype.destroy):
(MediaControllerSupport.prototype.get tracksToMonitor):
* Modules/modern-media-controls/media/pip-support.js:
(PiPSupport.prototype.get tracksToMonitor):
* Modules/modern-media-controls/media/tracks-support.js:
(TracksSupport):
(TracksSupport.prototype.get tracksToMonitor):
(TracksSupport.prototype.destroy): Deleted.

LayoutTests:

Add a new test to check that a live broadcast video shows the picture-in-picture button.

* http/tests/media/modern-media-controls/pip-support/pip-support-live-broadcast-expected.txt: Added.
* http/tests/media/modern-media-controls/pip-support/pip-support-live-broadcast.html: Added.
* platform/mac/TestExpectations:

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

2 years agoSimple line layout: Add performance test with varying string and font-size to minimiz...
zalan@apple.com [Sun, 5 Feb 2017 20:41:56 +0000 (20:41 +0000)]
Simple line layout: Add performance test with varying string and font-size to minimize width-cache hit.
https://bugs.webkit.org/show_bug.cgi?id=167859
<rdar://problem/30368070>

Reviewed by Antti Koivisto.

This is in preparation for webkit.org/b/167843.

* Layout/simple-line-layout-with-varying-content.html: Added.

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

2 years ago[Modern Media Controls] Time labels may wrap instead of displaying on a single line
commit-queue@webkit.org [Sun, 5 Feb 2017 20:40:31 +0000 (20:40 +0000)]
[Modern Media Controls] Time labels may wrap instead of displaying on a single line
https://bugs.webkit.org/show_bug.cgi?id=167835
<rdar://problem/30340534>

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

Source/WebCore:

No text in modern media controls is expected to wrap, so let's prevent any wrapping.

Test: media/modern-media-controls/time-label/time-label-white-space-nowrap.html

* Modules/modern-media-controls/controls/media-controls.css:
(.media-controls):

LayoutTests:

New test that checks that time labels have "white-space: nowrap" applied.

* media/modern-media-controls/time-label/time-label-white-space-nowrap-expected.txt: Added.
* media/modern-media-controls/time-label/time-label-white-space-nowrap.html: Added.

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

2 years agoThe VMInspector should use an RAII Locker.
mark.lam@apple.com [Sun, 5 Feb 2017 19:26:50 +0000 (19:26 +0000)]
The VMInspector should use an RAII Locker.
https://bugs.webkit.org/show_bug.cgi?id=167854

Reviewed by Saam Barati.

Previously, VMInspector::lock() was returning an expected LockToken, and there's
no way to unlock it when we're done with it.  This was not a problem before
because the VMInspector had only one client, the SigillCrashAnalyzer, that
expected the process to crash due to a SIGILL shortly thereafter.

However, the VMInspector is useful as a debugging tool that we can apply in other
debugging tasks.  Fixing VMInspector::lock() to return an RAII locker will enable
other use cases.  Plus it's just bad form to be able to lock something and never
be able to unlock it.

* tools/SigillCrashAnalyzer.cpp:
(JSC::SigillCrashAnalyzer::analyze):
* tools/VMInspector.cpp:
* tools/VMInspector.h:

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

2 years agoClean up how GraphicsLayer's "inWindow" state is set, and fix some issues with Page...
simon.fraser@apple.com [Sun, 5 Feb 2017 19:18:16 +0000 (19:18 +0000)]
Clean up how GraphicsLayer's "inWindow" state is set, and fix some issues with Page Overlays
https://bugs.webkit.org/show_bug.cgi?id=167850

Reviewed by Tim Horton.
Source/WebCore:

RenderLayerCompositor::setIsInWindowForLayerIncludingDescendants() walked the RenderLayer
tree to set the GraphicsLayer's "inWindow" state. This had the problem of skipping non-primary
GraphicsLayers. We also never did this work for page overlay layers.

Fix by giving GraphicsLayers a recursive function that sets the inWindow state, and call that
from RenderLayerCompositor::setIsInWindow() and PageOverlayController.

PageOverlayController also needs to implement tiledBackingUsageChanged so that tiled backings
created dynamically get the correct in-window state.

Page overlays also had some serious issues in MiniBrowser, in that they disappeared on reload,
and on hide/show web view. This was because the overlay root layers were re-parented, but
addChild() for each overlay's layer wasn't called. Clean up by replacing willAttachRootLayer() followed
by viewOverlayRootLayer()/documentOverlayRootLayer() with single calls that set up the layers,
update the inWindow state, and return the layer.

Make it possible to dump tile caches in page overlay tests.

Make showGraphicsLayers() always dump page overlay layers (source of much confusion).

Test: pageoverlay/overlay-remove-reinsert-view.html

* page/PageOverlayController.cpp:
(WebCore::PageOverlayController::documentOverlayRootLayer):
(WebCore::PageOverlayController::viewOverlayRootLayer):
(WebCore::PageOverlayController::layerWithDocumentOverlays):
(WebCore::PageOverlayController::layerWithViewOverlays):
(WebCore::PageOverlayController::tiledBackingUsageChanged):
(WebCore::PageOverlayController::willAttachRootLayer): Deleted.
* page/PageOverlayController.h:
* platform/graphics/GraphicsLayer.cpp:
(WebCore::GraphicsLayer::setIsInWindowIncludingDescendants):
(WebCore::dumpChildren):
* platform/graphics/GraphicsLayer.h:
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::appendDocumentOverlayLayers):
(WebCore::RenderLayerCompositor::setIsInWindow):
(WebCore::RenderLayerCompositor::attachRootLayer):
(WebCore::RenderLayerCompositor::rootLayerAttachmentChanged):
(WebCore::RenderLayerCompositor::setIsInWindowForLayerIncludingDescendants): Deleted.
* rendering/RenderLayerCompositor.h:
* testing/Internals.cpp:
(WebCore::toLayerTreeFlags):
(WebCore::Internals::layerTreeAsText):
(WebCore::Internals::pageOverlayLayerTreeAsText):
* testing/Internals.h:
* testing/Internals.idl:
* testing/MockPageOverlayClient.cpp:
(WebCore::MockPageOverlayClient::layerTreeAsText):
* testing/MockPageOverlayClient.h:

Tools:

* DumpRenderTree/TestRunner.cpp:
(TestRunner::uiScriptDidComplete): Fix an assertion that fires for non-16-bit strings.

LayoutTests:

* pageoverlay/overlay-large-document-expected.txt:
* pageoverlay/overlay-large-document-scrolled-expected.txt:
* pageoverlay/overlay-remove-reinsert-view-expected.txt: Added.
* pageoverlay/overlay-remove-reinsert-view.html: Added.
* platform/ios-simulator-wk2/pageoverlay/overlay-remove-reinsert-view-expected.txt: Added.
* platform/mac-wk1/pageoverlay/overlay-remove-reinsert-view-expected.txt: Added.
* tiled-drawing/tiled-backing-in-window-expected.txt:

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

2 years agoSimple line layout: Use RenderText::canUseSimpleFontCodePath() only as a hint.
zalan@apple.com [Sun, 5 Feb 2017 18:01:04 +0000 (18:01 +0000)]
Simple line layout: Use RenderText::canUseSimpleFontCodePath() only as a hint.
https://bugs.webkit.org/show_bug.cgi?id=167853
<rdar://problem/30367302>

Reviewed by Simon Fraser.

Source/WebCore:

Apparently RenderText::canUseSimpleFontCodePath() only checks if the string is qualified for
the simple font code path. However certain css properties could still force us to use the complex
path.
In most cases, we still do only one string traversal thanks to TextRun::setCharacterScanForCodePath().

Test: fast/text/simple-line-layout-simple-text-but-complex-font-path.html

* rendering/SimpleLineLayout.cpp:
(WebCore::SimpleLineLayout::canUseForFontAndText):

LayoutTests:

* fast/text/simple-line-layout-simple-text-but-complex-font-path-expected.html: Added.
* fast/text/simple-line-layout-simple-text-but-complex-font-path.html: Added.

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

2 years agoMove TextureMapper-specific logic out of GraphicsContext3DPrivate
zandobersek@gmail.com [Sun, 5 Feb 2017 17:22:45 +0000 (17:22 +0000)]
Move TextureMapper-specific logic out of GraphicsContext3DPrivate
https://bugs.webkit.org/show_bug.cgi?id=167096

Reviewed by Alex Christensen.

Move the TextureMapper-specific functionality in GraphicsContext3DPrivate into a
separate class. The new TextureMapperGC3DPlatformLayer class inherits from the
class that's aliased to the PlatformLayer type, like GraphicsContext3DPrivate did
before.

In GraphicsContext3D, the new m_texmapLayer member variable of the
std::unique_ptr<TextureMapperGC3DPlatformLayer> type is used for configurations
that enable TextureMapper, largely the same way the GraphicsContext3DPrivate
object was used before. The remaining code in GraphicsContext3DPrivate is left
unchanged to keep it working for other ports.

No new tests -- no change in behavior.

* platform/TextureMapper.cmake:
* platform/graphics/GraphicsContext3D.h:
* platform/graphics/GraphicsContext3DPrivate.cpp:
(WebCore::GraphicsContext3DPrivate::GraphicsContext3DPrivate):
(WebCore::GraphicsContext3DPrivate::~GraphicsContext3DPrivate): Deleted.
(WebCore::GraphicsContext3DPrivate::proxy): Deleted.
(WebCore::GraphicsContext3DPrivate::swapBuffersIfNeeded): Deleted.
(WebCore::GraphicsContext3DPrivate::paintToTextureMapper): Deleted.
* platform/graphics/GraphicsContext3DPrivate.h:
* platform/graphics/cairo/GraphicsContext3DCairo.cpp:
(WebCore::GraphicsContext3D::GraphicsContext3D):
(WebCore::GraphicsContext3D::~GraphicsContext3D):
(WebCore::GraphicsContext3D::makeContextCurrent):
(WebCore::GraphicsContext3D::platformGraphicsContext3D):
(WebCore::GraphicsContext3D::platformLayer):
* platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:
(WebCore::GraphicsContext3D::createForCurrentGLContext):
* platform/graphics/texmap/TextureMapperGC3DPlatformLayer.cpp: Copied from Source/WebCore/platform/graphics/GraphicsContext3DPrivate.cpp.
(WebCore::TextureMapperGC3DPlatformLayer::TextureMapperGC3DPlatformLayer):
(WebCore::TextureMapperGC3DPlatformLayer::~TextureMapperGC3DPlatformLayer):
(WebCore::TextureMapperGC3DPlatformLayer::makeContextCurrent):
(WebCore::TextureMapperGC3DPlatformLayer::platformContext):
(WebCore::TextureMapperGC3DPlatformLayer::proxy):
(WebCore::TextureMapperGC3DPlatformLayer::swapBuffersIfNeeded):
(WebCore::TextureMapperGC3DPlatformLayer::paintToTextureMapper):
* platform/graphics/texmap/TextureMapperGC3DPlatformLayer.h: Copied from Source/WebCore/platform/graphics/GraphicsContext3DPrivate.h.
(WebCore::TextureMapperGC3DPlatformLayer::renderStyle):

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

2 years agoSimple line layout: Bail out from Simple Line Layout on surrogate pairs.
zalan@apple.com [Sun, 5 Feb 2017 14:41:10 +0000 (14:41 +0000)]
Simple line layout: Bail out from Simple Line Layout on surrogate pairs.
https://bugs.webkit.org/show_bug.cgi?id=167840
<rdar://problem/30364784>

Reviewed by Myles C. Maxfield.

Source/WebCore:

Surrogate pairs require special line breaking logic.

Test: fast/text/simple-line-layout-no-surrogate-pairs.html

* rendering/SimpleLineLayout.cpp:
(WebCore::SimpleLineLayout::canUseForCharacter):
(WebCore::SimpleLineLayout::canUseForText): Checking against special characters is faster than
checking against glyphs. Reverse their order.
(WebCore::SimpleLineLayout::printReason):

LayoutTests:

* fast/text/simple-line-layout-no-surrogate-pairs-expected.html: Added.
* fast/text/simple-line-layout-no-surrogate-pairs.html: Added.

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

2 years agoData interaction on an image should make it stand out when presenting the action...
wenson_hsieh@apple.com [Sun, 5 Feb 2017 07:19:53 +0000 (07:19 +0000)]
Data interaction on an image should make it stand out when presenting the action sheet
https://bugs.webkit.org/show_bug.cgi?id=167846
<rdar://problem/30363014>

Reviewed by Tim Horton.

Adds infrastructure to improve the behavior of data interaction for images. We make two changes to accomplish
this: first, add some plumbing to WebKit so the web process can tell the UI process when it is done handling a
request to start data interaction, so that the UI process is able to clean up UI-side state in the event that
the page prevented the default behavior.

Secondly, this patch tweaks the heuristic used to present action sheets as popovers. For image elements, if
there is sufficient space around the element, we will use the element rect as the target rect; otherwise, we
fall back to presenting the popover at the touch location.

* UIProcess/PageClient.h:
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* UIProcess/ios/PageClientImplIOS.h:
* UIProcess/ios/PageClientImplIOS.mm:
(WebKit::PageClientImpl::didHandleStartDataInteractionRequest):
* UIProcess/ios/WKActionSheet.h:
* UIProcess/ios/WKActionSheet.mm:
(-[WKActionSheet presentSheet:]):

Added a presentation style parameter, used to specify whether or not WKActionSheet should present the popover
using the element rect as the target rect, or the touch location.

(-[WKActionSheet doneWithSheet]):
(-[WKActionSheet updateSheetPosition]):
(-[WKActionSheet presentSheet]): Deleted.
* UIProcess/ios/WKActionSheetAssistant.mm:
(-[WKActionSheetAssistant presentationRectForIndicatedElement]):

Returns the (inflated) bounds of the element that is currently being indicated.

(-[WKActionSheetAssistant showImageSheet]):
(-[WKActionSheetAssistant _presentationStyleForImageAtElementRect:]):
(-[WKActionSheetAssistant showLinkSheet]):
(-[WKActionSheetAssistant showDataDetectorsSheet]):
* UIProcess/ios/WKContentViewInteraction.h:
* UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::didHandleStartDataInteractionRequest):
* UIProcess/mac/PageClientImpl.h:
* UIProcess/mac/PageClientImpl.mm:

Remove unnecessary function declarations and implementations.

(WebKit::PageClientImpl::didPerformDataInteractionControllerOperation): Deleted.
(WebKit::PageClientImpl::startDataInteractionWithImage): Deleted.
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::requestStartDataInteraction):

Notify the UI process that the web process is done handling a data interaction request, specifying whether or
not the request was granted.

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

2 years agoStatic Analyzer: Value stored to 'recordedMachineThreads' during its initialization...
commit-queue@webkit.org [Sun, 5 Feb 2017 07:02:30 +0000 (07:02 +0000)]
Static Analyzer: Value stored to 'recordedMachineThreads' during its initialization is never read
https://bugs.webkit.org/show_bug.cgi?id=167845

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

Source/JavaScriptCore/heap/MachineStackMarker.cpp:151:14: warning: Value stored to 'recordedMachineThreads' during its initialization is never read
        auto recordedMachineThreads = m_set.take(machineThreads);
             ^~~~~~~~~~~~~~~~~~~~~~   ~~~~~~~~~~~~~~~~~~~~~~~~~~

* heap/MachineStackMarker.cpp:
(JSC::ActiveMachineThreadsManager::remove):

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

2 years agoStatic Analyzer: WebCoreNSURLExtras.mm: Potential leak of memory pointed to by 'allBy...
commit-queue@webkit.org [Sun, 5 Feb 2017 06:23:41 +0000 (06:23 +0000)]
Static Analyzer: WebCoreNSURLExtras.mm: Potential leak of memory pointed to by 'allBytesBuffer'
https://bugs.webkit.org/show_bug.cgi?id=167849

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2017-02-04
Reviewed by Sam Weinig.

Source/WebCore/platform/mac/WebCoreNSURLExtras.mm:883:20: warning: Potential leak of memory pointed to by 'allBytesBuffer'
            return nil;
                   ^~~

* platform/mac/WebCoreNSURLExtras.mm:
(WebCore::dataForURLComponentType):
Free the potentially malloc'd buffer before the early return.

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

2 years agoUnreviewed, fix mistake in comment added in r211569.
cdumez@apple.com [Sun, 5 Feb 2017 02:20:33 +0000 (02:20 +0000)]
Unreviewed, fix mistake in comment added in r211569.

* history/PageCache.cpp:
(WebCore::PageCache::removeAllItemsForPage):

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

2 years agoStatic Analyzer: Value stored to 'prev' is never read
commit-queue@webkit.org [Sun, 5 Feb 2017 01:26:25 +0000 (01:26 +0000)]
Static Analyzer: Value stored to 'prev' is never read
https://bugs.webkit.org/show_bug.cgi?id=167844

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

Source/JavaScriptCore/runtime/JSMapIterator.h:60:13: warning: Value stored to 'prev' is never read
            prev = bucket;
            ^      ~~~~~~
Source/JavaScriptCore/runtime/JSSetIterator.h:60:13: warning: Value stored to 'prev' is never read
            prev = bucket;
            ^      ~~~~~~

* runtime/JSMapIterator.h:
(JSC::JSMapIterator::advanceIter):
* runtime/JSSetIterator.h:
(JSC::JSSetIterator::advanceIter):

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

2 years agoPlug some leaks in TestController and UIScriptContext.
akling@apple.com [Sat, 4 Feb 2017 21:46:21 +0000 (21:46 +0000)]
Plug some leaks in TestController and UIScriptContext.
<https://webkit.org/b/167839>

Reviewed by Alexey Proskuryakov.

Fix a couple of the leaks seen on the leaks bot.

* TestRunnerShared/UIScriptContext/UIScriptContext.cpp:
(UIScriptContext::runUIScript):
* WebKitTestRunner/TestController.cpp:
(WTR::TestController::handleCheckOfUserMediaPermissionForOrigin):
(WTR::TestController::decidePolicyForUserMediaPermissionRequestIfPossible):

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

2 years agoFix memory issues related to preload eviction.
yoav@yoav.ws [Sat, 4 Feb 2017 21:40:33 +0000 (21:40 +0000)]
Fix memory issues related to preload eviction.
https://bugs.webkit.org/show_bug.cgi?id=167838

Reviewed by Andreas Kling.

This avoids removing resources from m_preloads during the iteration
by creating a second HashSetList containing the remaining link preloads.

No new tests but this will fix crashes on the leak bots.

* loader/cache/CachedResourceLoader.cpp:
(WebCore::CachedResourceLoader::clearPreloads):

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

2 years ago[GTK] Fix huge ENABLE_RESOURCE_USAGE warning spam
mcatanzaro@igalia.com [Sat, 4 Feb 2017 19:34:14 +0000 (19:34 +0000)]
[GTK] Fix huge ENABLE_RESOURCE_USAGE warning spam

Unreviewed. We shouldn't redefine ENABLE_RESOURCE_USAGE in Platform.h as
it's already defined in cmakeconfig.h.

* wtf/Platform.h:

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

2 years agoSimple line layout: Skip 16bit specific checks on 8bit content.
zalan@apple.com [Sat, 4 Feb 2017 16:34:57 +0000 (16:34 +0000)]
Simple line layout: Skip 16bit specific checks on 8bit content.
https://bugs.webkit.org/show_bug.cgi?id=167831
<rdar://problem/30361948>

Reviewed by Antti Koivisto and Myles C. Maxfield.

Skip various checks on 8bit content.

Covered by existing tests.

* rendering/SimpleLineLayout.cpp:
(WebCore::SimpleLineLayout::canUseForCharacter):
(WebCore::SimpleLineLayout::canUseForText):
(WebCore::SimpleLineLayout::canUseForFontAndText):

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

2 years ago[JSC] Add operationToInt32SensibleSlow to optimize kraken pbkdf2 and sha256
utatane.tea@gmail.com [Sat, 4 Feb 2017 13:46:19 +0000 (13:46 +0000)]
[JSC] Add operationToInt32SensibleSlow to optimize kraken pbkdf2 and sha256
https://bugs.webkit.org/show_bug.cgi?id=167736

Reviewed by Saam Barati.

JSTests:

* stress/to-int32-sensible.js: Added.
(shouldBe):
(toInt32):
(test):

Source/JavaScriptCore:

Add a new function operationToInt32SensibleSlow. This function is only
called after x86 cvttss2si_rr is failed. This means that the
given double number never in range of int32 truncatable numbers.

As a result, exp in operationToInt32 always becomes >= 31. So
we can change the condition from `exp < 32` to `exp == 31`.
This makes missingOne constant. And it leads significantly good
code generation.

The original operationToInt32 code.

    170:   66 48 0f 7e c1          movq   %xmm0,%rcx
    175:   31 c0                   xor    %eax,%eax
    177:   66 48 0f 7e c6          movq   %xmm0,%rsi
    17c:   48 c1 f9 34             sar    $0x34,%rcx
    180:   81 e1 ff 07 00 00       and    $0x7ff,%ecx
    186:   8d 91 01 fc ff ff       lea    -0x3ff(%rcx),%edx
    18c:   83 fa 53                cmp    $0x53,%edx
    18f:   77 37                   ja     1c8 <_ZN3JSC16operationToInt32Ed+0x58>
    191:   83 fa 34                cmp    $0x34,%edx
    194:   7f 3a                   jg     1d0 <_ZN3JSC16operationToInt32Ed+0x60>
    196:   b9 34 00 00 00          mov    $0x34,%ecx
    19b:   66 48 0f 7e c7          movq   %xmm0,%rdi
    1a0:   29 d1                   sub    %edx,%ecx
    1a2:   48 d3 ff                sar    %cl,%rdi
    1a5:   83 fa 1f                cmp    $0x1f,%edx
    1a8:   89 f8                   mov    %edi,%eax
    1aa:   7f 12                   jg     1be <_ZN3JSC16operationToInt32Ed+0x4e>
    1ac:   89 d1                   mov    %edx,%ecx
    1ae:   b8 01 00 00 00          mov    $0x1,%eax
    1b3:   d3 e0                   shl    %cl,%eax
    1b5:   89 c2                   mov    %eax,%edx
    1b7:   8d 40 ff                lea    -0x1(%rax),%eax
    1ba:   21 f8                   and    %edi,%eax
    1bc:   01 d0                   add    %edx,%eax
    1be:   89 c2                   mov    %eax,%edx
    1c0:   f7 da                   neg    %edx
    1c2:   48 85 f6                test   %rsi,%rsi
    1c5:   0f 48 c2                cmovs  %edx,%eax
    1c8:   f3 c3                   repz retq
    1ca:   66 0f 1f 44 00 00       nopw   0x0(%rax,%rax,1)
    1d0:   66 48 0f 7e c0          movq   %xmm0,%rax
    1d5:   81 e9 33 04 00 00       sub    $0x433,%ecx
    1db:   48 d3 e0                shl    %cl,%rax
    1de:   eb de                   jmp    1be <_ZN3JSC16operationToInt32Ed+0x4e>

The operationToInt32SensibleSlow code.

    1e0:   66 48 0f 7e c1          movq   %xmm0,%rcx
    1e5:   66 48 0f 7e c2          movq   %xmm0,%rdx
    1ea:   48 c1 f9 34             sar    $0x34,%rcx
    1ee:   81 e1 ff 07 00 00       and    $0x7ff,%ecx
    1f4:   8d b1 01 fc ff ff       lea    -0x3ff(%rcx),%esi
    1fa:   83 fe 34                cmp    $0x34,%esi
    1fd:   7e 21                   jle    220 <_ZN3JSC28operationToInt32SensibleSlowEd+0x40>
    1ff:   66 48 0f 7e c0          movq   %xmm0,%rax
    204:   81 e9 33 04 00 00       sub    $0x433,%ecx
    20a:   48 d3 e0                shl    %cl,%rax
    20d:   89 c1                   mov    %eax,%ecx
    20f:   f7 d9                   neg    %ecx
    211:   48 85 d2                test   %rdx,%rdx
    214:   0f 48 c1                cmovs  %ecx,%eax
    217:   c3                      retq
    218:   0f 1f 84 00 00 00 00    nopl   0x0(%rax,%rax,1)
    21f:   00
    220:   66 48 0f 7e c0          movq   %xmm0,%rax
    225:   b9 34 00 00 00          mov    $0x34,%ecx
    22a:   29 f1                   sub    %esi,%ecx
    22c:   48 d3 f8                sar    %cl,%rax
    22f:   89 c1                   mov    %eax,%ecx
    231:   81 c9 00 00 00 80       or     $0x80000000,%ecx
    237:   83 fe 1f                cmp    $0x1f,%esi
    23a:   0f 44 c1                cmove  %ecx,%eax
    23d:   89 c1                   mov    %eax,%ecx
    23f:   f7 d9                   neg    %ecx
    241:   48 85 d2                test   %rdx,%rdx
    244:   0f 48 c1                cmovs  %ecx,%eax
    247:   c3                      retq
    248:   0f 1f 84 00 00 00 00    nopl   0x0(%rax,%rax,1)
    24f:   00

This improves kraken pbkdf2 by 10.8% and sha256 by 7.5%.

                                               baseline                  patched

    stanford-crypto-pbkdf2                 153.195+-2.745      ^     138.204+-2.513         ^ definitely 1.1085x faster
    stanford-crypto-sha256-iterative        49.047+-1.038      ^      45.610+-1.235         ^ definitely 1.0754x faster

    <arithmetic>                           101.121+-1.379      ^      91.907+-1.500         ^ definitely 1.1003x faster

* assembler/CPU.h:
(JSC::hasSensibleDoubleToInt):
* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compileValueToInt32):
* ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::doubleToInt32):
(JSC::FTL::DFG::LowerDFGToB3::sensibleDoubleToInt32):
* ftl/FTLOutput.cpp:
(JSC::FTL::Output::hasSensibleDoubleToInt): Deleted.
* ftl/FTLOutput.h:
* runtime/MathCommon.cpp:
(JSC::operationToInt32SensibleSlow):
* runtime/MathCommon.h:

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

2 years agoUnreviewed. Fix the key shortcut to enable resource usage overlay in GTK+.
carlosgc@webkit.org [Sat, 4 Feb 2017 08:25:10 +0000 (08:25 +0000)]
Unreviewed. Fix the key shortcut to enable resource usage overlay in GTK+.

The condition to check for CTRL and Shift modifiers is wrong, causing the overlay to be shown on Shit+G and
making it impossible to write a 'G'.

* UIProcess/API/gtk/WebKitWebViewBase.cpp:
(webkitWebViewBaseKeyPressEvent):

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

2 years agoSimple line layout: Remove redundant codepath check.
zalan@apple.com [Sat, 4 Feb 2017 06:03:29 +0000 (06:03 +0000)]
Simple line layout: Remove redundant codepath check.
https://bugs.webkit.org/show_bug.cgi?id=167827
<rdar://problem/30361850>

Reviewed by Myles C. Maxfield.

FontCascade::codePath() iterates through the entire text. It's rather wasteful to do twice.

No change in functionality.

* rendering/SimpleLineLayout.cpp:
(WebCore::SimpleLineLayout::canUseForFontAndText):
(WebCore::SimpleLineLayout::printReason):

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

2 years agoREGRESSION(r204858): Synthetic bold text in vertical writing mode is rotated away...
mmaxfield@apple.com [Sat, 4 Feb 2017 05:53:39 +0000 (05:53 +0000)]
REGRESSION(r204858): Synthetic bold text in vertical writing mode is rotated away from original text
https://bugs.webkit.org/show_bug.cgi?id=167826
<rdar://problem/28193222>

Reviewed by Zalan Bujtas.

Source/WebCore:

When drawing vertical text, the rotation is not reset between successive paint calls. We implement
synthetic bold by drawing text twice, which means that the second draw call was getting rotated
twice. This was an oversight in r204858.

Test: fast/text/synthetic-bold-vertical-text.html

* platform/graphics/cocoa/FontCascadeCocoa.mm:
(WebCore::showGlyphsWithAdvances):

LayoutTests:

* fast/text/synthetic-bold-vertical-text-expected.html: Added.
* fast/text/synthetic-bold-vertical-text.html: Added.

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

2 years agoUnreviewed rollout of r211486, r211629.
joepeck@webkit.org [Sat, 4 Feb 2017 05:18:18 +0000 (05:18 +0000)]
Unreviewed rollout of r211486, r211629.

Original change is not ideal and is causing issues.

Source/JavaScriptCore:

* inspector/agents/InspectorHeapAgent.cpp:
(Inspector::SendGarbageCollectionEventsTask::SendGarbageCollectionEventsTask):
* runtime/InitializeThreading.cpp:
(JSC::initializeThreading):

Source/WebKit2:

* Shared/WebKit2Initialize.cpp:
(WebKit::InitializeWebKit2):

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

2 years agoPerformance Timing: Convert WTF::MonotonicTime and WTF::Seconds
commit-queue@webkit.org [Sat, 4 Feb 2017 03:23:53 +0000 (03:23 +0000)]
Performance Timing: Convert WTF::MonotonicTime and WTF::Seconds
https://bugs.webkit.org/show_bug.cgi?id=167768

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2017-02-03
Reviewed by Geoffrey Garen.

Source/WebCore:

The public APIs still return double (DOMHighResTimeStamp), which
is milliseconds since a time origin:
https://w3c.github.io/hr-time/#dom-domhighrestimestamp

* loader/LoadTiming.cpp:
(WebCore::LoadTiming::secondsSinceStartTime):
(WebCore::LoadTiming::monotonicTimeToPseudoWallTime):
(WebCore::LoadTiming::markStartTime):
(WebCore::LoadTiming::addRedirect):
(WebCore::LoadTiming::monotonicTimeToZeroBasedDocumentTime): Deleted.
* loader/LoadTiming.h:
(WebCore::LoadTiming::markUnloadEventStart):
(WebCore::LoadTiming::markUnloadEventEnd):
(WebCore::LoadTiming::markRedirectStart):
(WebCore::LoadTiming::markRedirectEnd):
(WebCore::LoadTiming::markFetchStart):
(WebCore::LoadTiming::setResponseEnd):
(WebCore::LoadTiming::markLoadEventStart):
(WebCore::LoadTiming::markLoadEventEnd):
(WebCore::LoadTiming::startTime):
(WebCore::LoadTiming::unloadEventStart):
(WebCore::LoadTiming::unloadEventEnd):
(WebCore::LoadTiming::redirectStart):
(WebCore::LoadTiming::redirectEnd):
(WebCore::LoadTiming::fetchStart):
(WebCore::LoadTiming::responseEnd):
(WebCore::LoadTiming::loadEventStart):
(WebCore::LoadTiming::loadEventEnd):
(WebCore::LoadTiming::redirectCount):
(WebCore::LoadTiming::referenceMonotonicTime):
(WebCore::LoadTiming::referenceWallTime):
Use MonotonicTime and WallTime for timestamps and references.

* dom/Document.cpp:
(WebCore::Document::setReadyState):
(WebCore::Document::finishedParsing):
(WebCore::Document::monotonicTimestamp):
* dom/DocumentTiming.h:
(WebCore::DocumentTiming::DocumentTiming): Deleted.
* dom/ScriptedAnimationController.cpp:
(WebCore::ScriptedAnimationController::serviceScriptedAnimations):
* inspector/InspectorNetworkAgent.cpp:
(WebCore::InspectorNetworkAgent::buildObjectForTiming):
(WebCore::InspectorNetworkAgent::didFinishLoading):
* loader/DocumentLoader.cpp:
(WebCore::DocumentLoader::finishedLoading):
(WebCore::DocumentLoader::dataReceived):
* loader/DocumentLoader.h:
* loader/SubresourceLoader.cpp:
(WebCore::SubresourceLoader::didFinishLoading):
* loader/cache/CachedResourceLoader.cpp:
(WebCore::CachedResourceLoader::requestResource):
* page/DOMWindow.cpp:
(WebCore::DOMWindow::performance):
Use new types instead of raw doubles.

* page/Performance.cpp:
(WebCore::Performance::Performance):
(WebCore::Performance::now):
(WebCore::Performance::reduceTimeResolution):
(WebCore::Performance::addResourceTiming):
* page/Performance.h:
Do time arithmatic with WTF::Time classes.
This clarifies that we reduce our timestamps to 100us
resolution instead of the maximum 5us allowed by the spec.

* page/PerformanceResourceTiming.cpp:
(WebCore::monotonicTimeToDOMHighResTimeStamp):
(WebCore::PerformanceResourceTiming::PerformanceResourceTiming):
(WebCore::PerformanceResourceTiming::networkLoadTimeToDOMHighResTimeStamp):
* page/PerformanceResourceTiming.h:
* page/PerformanceTiming.cpp:
(WebCore::PerformanceTiming::resourceLoadTimeRelativeToFetchStart):
(WebCore::PerformanceTiming::monotonicTimeToIntegerMilliseconds):
(WebCore::toIntegerMilliseconds): Deleted.
* page/PerformanceTiming.h:
Do time arithmatic with WTF::Time classes.

* workers/DedicatedWorkerGlobalScope.cpp:
(WebCore::DedicatedWorkerGlobalScope::create):
(WebCore::DedicatedWorkerGlobalScope::DedicatedWorkerGlobalScope):
* workers/DedicatedWorkerGlobalScope.h:
* workers/DedicatedWorkerThread.cpp:
(WebCore::DedicatedWorkerThread::DedicatedWorkerThread):
(WebCore::DedicatedWorkerThread::createWorkerGlobalScope):
* workers/DedicatedWorkerThread.h:
* workers/WorkerGlobalScope.cpp:
(WebCore::WorkerGlobalScope::WorkerGlobalScope):
* workers/WorkerGlobalScope.h:
* workers/WorkerGlobalScopeProxy.h:
* workers/WorkerMessagingProxy.cpp:
(WebCore::WorkerMessagingProxy::startWorkerGlobalScope):
* workers/WorkerMessagingProxy.h:
* workers/WorkerThread.cpp:
(WebCore::WorkerThreadStartupData::WorkerThreadStartupData):
(WebCore::WorkerThread::WorkerThread):
* workers/WorkerThread.h:
Pass time origin as MonotonicTime.

* workers/Worker.cpp:
(WebCore::Worker::create):
(WebCore::Worker::notifyFinished):
* workers/Worker.h:
Rename creation timestamp member. This matches Document's m_documentCreationTime.

Source/WTF:

* wtf/Stopwatch.h:
(WTF::Stopwatch::elapsedTimeSince):
(WTF::Stopwatch::elapsedTimeSinceMonotonicTime): Deleted.

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

2 years ago[WebRTC] Add more files to libwebrtc build
achristensen@apple.com [Sat, 4 Feb 2017 03:16:04 +0000 (03:16 +0000)]
[WebRTC] Add more files to libwebrtc build
https://bugs.webkit.org/show_bug.cgi?id=167824

Reviewed by Youenn Fablet.

* Configurations/libwebrtc.xcconfig:
* Configurations/usrsctp.xcconfig: Added.
* libwebrtc.xcodeproj/project.pbxproj:

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

2 years agoWK1 mouse events are missing movementX and movementY for pointerlock.
commit-queue@webkit.org [Sat, 4 Feb 2017 03:03:39 +0000 (03:03 +0000)]
WK1 mouse events are missing movementX and movementY for pointerlock.
https://bugs.webkit.org/show_bug.cgi?id=167775
rdar://problem/30343810

Patch by Jeremy Jones <jeremyj@apple.com> on 2017-02-03
Reviewed by Alexey Proskuryakov.

Source/WebCore:

pointer-lock/mouse-event-delivery.html

Improve mouse-event-delivery.html test to mouse move and check for valid movementX and movementY.

* platform/mac/PlatformEventFactoryMac.mm:
(WebCore::PlatformMouseEventBuilder::PlatformMouseEventBuilder): WK1 plumb throuhg movementX and movementY

Tools:

Set kCGMouseEventDeltaX and kCGMouseEventDeltaY when synthesizing mouse move events.

* DumpRenderTree/mac/EventSendingController.mm:
(-[EventSendingController mouseMoveToX:Y:]):
* WebKitTestRunner/mac/EventSenderProxy.mm:
(WTR::EventSenderProxy::mouseMoveTo):

LayoutTests:

Enable pointer-lock/mouse-event-delivery.html for mac.

* platform/mac/TestExpectations:

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

2 years agoCorrectly set the "inWindow" flag for TileControllers that aren't the page tiles...
simon.fraser@apple.com [Sat, 4 Feb 2017 01:53:38 +0000 (01:53 +0000)]
Correctly set the "inWindow" flag for TileControllers that aren't the page tiles, and clarify "usingTiledBacking" logic
https://bugs.webkit.org/show_bug.cgi?id=167774

Reviewed by Tim Horton.
Source/WebCore:

RenderLayerBacking had some very confusing "usingTiledCacheLayer" uses.

Its member variable, m_usingTiledCacheLayer, really meant "m_isMainFrameLayerWithTiledBacking" so make it so.
It had a usingTiledBacking(), which returned the same thing, which this patch replaces with isMainFrameLayerWithTiledBacking().

The fact that usingTiledBacking() was only true for the page tiled layer tripped up
RenderLayerCompositor::setIsInWindowForLayerIncludingDescendants(), which would only ever call setIsInWindow()
on the page tiled layer. These changes fix that.

Also make a way for tests to unparent the web view via UIScriptController, and dump out the "in window"
status of TileBackings when dumping tile caches.

Test: tiled-drawing/tiled-backing-in-window.html

* platform/graphics/TiledBacking.h:
* platform/graphics/ca/GraphicsLayerCA.cpp:
(WebCore::GraphicsLayerCA::dumpAdditionalProperties):
* platform/graphics/ca/TileController.h:
* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::RenderLayerBacking):
(WebCore::computePageTiledBackingCoverage):
(WebCore::RenderLayerBacking::adjustTiledBackingCoverage):
(WebCore::RenderLayerBacking::setTiledBackingHasMargins):
(WebCore::RenderLayerBacking::createPrimaryGraphicsLayer):
(WebCore::RenderLayerBacking::shouldClipCompositedBounds):
(WebCore::RenderLayerBacking::updateDescendantClippingLayer):
(WebCore::RenderLayerBacking::updateRootLayerConfiguration):
(WebCore::RenderLayerBacking::paintsIntoWindow):
(WebCore::computeTileCoverage): Deleted.
* rendering/RenderLayerBacking.h:
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::flushPendingLayerChanges):
(WebCore::RenderLayerCompositor::rootFixedBackgroundsChanged):
(WebCore::RenderLayerCompositor::setIsInWindowForLayerIncludingDescendants):
(WebCore::RenderLayerCompositor::supportsFixedRootBackgroundCompositing):
(WebCore::RenderLayerCompositor::documentUsesTiledBacking):

Tools:

Implement UIScriptController removeViewFromWindow() and addViewToWindow(), and hook
up for Mac WK1 and WK2, and iOS WK2. It takes a callback because view state updates to the
web process are async, so the callback fires after the web process gets the new state.

* DumpRenderTree/ios/UIScriptControllerIOS.mm:
(WTR::UIScriptController::removeViewFromWindow):
(WTR::UIScriptController::addViewToWindow):
* DumpRenderTree/mac/DumpRenderTree.mm:
(createWebViewAndOffscreenWindow):
(resetWebViewToConsistentStateBeforeTesting):
* DumpRenderTree/mac/DumpRenderTreeMac.h:
* DumpRenderTree/mac/UIScriptControllerMac.mm:
(WTR::UIScriptController::removeViewFromWindow):
(WTR::UIScriptController::addViewToWindow):
* TestRunnerShared/UIScriptContext/Bindings/UIScriptController.idl:
* TestRunnerShared/UIScriptContext/UIScriptController.cpp:
(WTR::UIScriptController::removeViewFromWindow):
(WTR::UIScriptController::addViewToWindow):
* TestRunnerShared/UIScriptContext/UIScriptController.h:
* WebKitTestRunner/PlatformWebView.h:
* WebKitTestRunner/TestController.cpp:
(WTR::TestController::resetStateToConsistentValues):
* WebKitTestRunner/ios/PlatformWebViewIOS.mm:
(WTR::PlatformWebView::removeFromWindow):
(WTR::PlatformWebView::addToWindow):
* WebKitTestRunner/ios/UIScriptControllerIOS.mm:
(WTR::UIScriptController::removeViewFromWindow):
(WTR::UIScriptController::addViewToWindow):
* WebKitTestRunner/mac/PlatformWebViewMac.mm:
(WTR::PlatformWebView::removeFromWindow):
(WTR::PlatformWebView::addToWindow):
* WebKitTestRunner/mac/UIScriptControllerMac.mm:
(WTR::UIScriptController::removeViewFromWindow):
(WTR::UIScriptController::addViewToWindow):

LayoutTests:

Rebase to include the "in window" output.

tiled-drawing/background-transparency-toggle.html was sensitive to the length of the output, so give the body
a fixed size.

* compositing/tiling/offscreen-tiled-layer-expected.txt:
* compositing/tiling/transform-origin-tiled-expected.txt:
* platform/mac-wk1/compositing/tiling/offscreen-tiled-layer-expected.txt:
* platform/mac-wk1/compositing/tiling/transform-origin-tiled-expected.txt:
* platform/mac-wk2/compositing/tiling/rotated-tiled-clamped-expected.txt:
* platform/mac-wk2/compositing/tiling/rotated-tiled-preserve3d-clamped-expected.txt:
* platform/mac-wk2/compositing/tiling/tile-cache-zoomed-expected.txt:
* platform/mac-wk2/compositing/tiling/tiled-layer-resize-expected.txt:
* platform/mac/compositing/tiling/rotated-tiled-clamped-expected.txt:
* platform/mac/compositing/tiling/rotated-tiled-preserve3d-clamped-expected.txt:
* platform/mac/compositing/tiling/tiled-layer-resize-expected.txt:
* tiled-drawing/background-transparency-toggle-expected.txt:
* tiled-drawing/background-transparency-toggle.html:
* tiled-drawing/scrolling/fast-scroll-div-latched-div-expected.txt:
* tiled-drawing/scrolling/fast-scroll-div-latched-div-with-handler-expected.txt:
* tiled-drawing/scrolling/fast-scroll-div-latched-mainframe-expected.txt:
* tiled-drawing/scrolling/fast-scroll-div-latched-mainframe-with-handler-expected.txt:
* tiled-drawing/scrolling/fast-scroll-iframe-latched-iframe-expected.txt:
* tiled-drawing/scrolling/fast-scroll-iframe-latched-iframe-with-handler-expected.txt:
* tiled-drawing/scrolling/fast-scroll-iframe-latched-mainframe-expected.txt:
* tiled-drawing/scrolling/fast-scroll-iframe-latched-mainframe-with-handler-expected.txt:
* tiled-drawing/scrolling/fast-scroll-select-latched-mainframe-expected.txt:
* tiled-drawing/scrolling/fast-scroll-select-latched-mainframe-with-handler-expected.txt:
* tiled-drawing/scrolling/fast-scroll-select-latched-select-expected.txt:
* tiled-drawing/scrolling/fast-scroll-select-latched-select-with-handler-expected.txt:
* tiled-drawing/scrolling/fixed-background/fixed-background-no-image-expected.txt:
* tiled-drawing/scrolling/fixed-background/fixed-body-background-body-layer-expected.txt:
* tiled-drawing/scrolling/fixed-background/fixed-body-background-expected.txt:
* tiled-drawing/scrolling/fixed-background/fixed-body-background-opacity-expected.txt:
* tiled-drawing/scrolling/fixed-background/fixed-body-background-positioned-expected.txt:
* tiled-drawing/scrolling/fixed-background/fixed-body-background-transformed-expected.txt:
* tiled-drawing/scrolling/fixed-background/fixed-body-background-zoomed-expected.txt:
* tiled-drawing/scrolling/fixed-background/fixed-html-background-expected.txt:
* tiled-drawing/scrolling/fixed-background/fixed-non-propagated-body-background-expected.txt:
* tiled-drawing/scrolling/fixed/four-bars-zoomed-expected.txt:
* tiled-drawing/simple-document-with-margin-tiles-expected.txt:
* tiled-drawing/tile-coverage-after-scroll-expected.txt:
* tiled-drawing/tile-coverage-after-scroll-speculative-expected.txt:
* tiled-drawing/tile-coverage-scroll-to-bottom-expected.txt:
* tiled-drawing/tile-coverage-slow-scrolling-expected.txt:
* tiled-drawing/tile-coverage-speculative-expected.txt:
* tiled-drawing/tile-coverage-view-exposed-rect-expected.txt:
* tiled-drawing/tile-size-both-scrollable-expected.txt:
* tiled-drawing/tile-size-horizontally-scrollable-expected.txt:
* tiled-drawing/tile-size-slow-zoomed-expected.txt:
* tiled-drawing/tile-size-unscrollable-expected.txt:
* tiled-drawing/tile-size-vertically-scrollable-expected.txt:
* tiled-drawing/tile-size-view-exposed-rect-expected.txt:
* tiled-drawing/tiled-backing-in-window-expected.txt: Added.
* tiled-drawing/tiled-backing-in-window.html: Added.
* tiled-drawing/tiled-drawing-scroll-position-page-cache-restoration-expected.txt:
* tiled-drawing/tiled-drawing-zoom-expected.txt:
* tiled-drawing/tiled-drawing-zoom-scrolled-expected.txt:
* tiled-drawing/use-tiled-drawing-expected.txt:
* tiled-drawing/visible-rect-content-inset-expected.txt:

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

2 years agoSimple line layout: Bail out from Simple Line Layout when the primary font is insuffi...
zalan@apple.com [Sat, 4 Feb 2017 01:42:12 +0000 (01:42 +0000)]
Simple line layout: Bail out from Simple Line Layout when the primary font is insufficient.
https://bugs.webkit.org/show_bug.cgi?id=167820
Source/WebCore:

<rdar://problem/30359685>

Reviewed by Myles C. Maxfield.

Currently simple line layout requires the primary font to have all the glyps for the content.

Test: fast/text/simple-line-layout-do-not-support-unicode-range.html

* rendering/SimpleLineLayout.cpp:
(WebCore::SimpleLineLayout::canUseForText):
(WebCore::SimpleLineLayout::canUseForFontAndText):
(WebCore::SimpleLineLayout::printReason):

LayoutTests:

Reviewed by Myles C. Maxfield.

* fast/text/simple-line-layout-do-not-support-unicode-range-expected.html: Added.
* fast/text/simple-line-layout-do-not-support-unicode-range.html: Added.

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

2 years agoImport web-platform-tests/hr-time tests
commit-queue@webkit.org [Sat, 4 Feb 2017 01:39:19 +0000 (01:39 +0000)]
Import web-platform-tests/hr-time tests
https://bugs.webkit.org/show_bug.cgi?id=167819

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2017-02-03
Reviewed by Youenn Fablet.

We pass all of these tests upstream.

* resources/ImportExpectations:
* web-platform-tests/hr-time/OWNERS: Added.
* web-platform-tests/hr-time/basic-expected.txt: Added.
* web-platform-tests/hr-time/basic.html: Added.
* web-platform-tests/hr-time/basic.worker-expected.txt: Added.
* web-platform-tests/hr-time/basic.worker.html: Added.
* web-platform-tests/hr-time/basic.worker.js: Added.
* web-platform-tests/hr-time/idlharness-expected.txt: Added.
* web-platform-tests/hr-time/idlharness.html: Added.
* web-platform-tests/hr-time/monotonic-clock-expected.txt: Added.
* web-platform-tests/hr-time/monotonic-clock.html: Added.
* web-platform-tests/hr-time/resources/now_frame.html: Added.
* web-platform-tests/hr-time/resources/w3c-import.log: Added.
* web-platform-tests/hr-time/test_cross_frame_start-expected.txt: Added.
* web-platform-tests/hr-time/test_cross_frame_start.html: Added.
* web-platform-tests/hr-time/w3c-import.log: Added.

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

2 years agoASSERT in HTMLMediaElement::~HTMLMediaElement
jer.noble@apple.com [Sat, 4 Feb 2017 01:20:53 +0000 (01:20 +0000)]
ASSERT in HTMLMediaElement::~HTMLMediaElement
https://bugs.webkit.org/show_bug.cgi?id=167818

Reviewed by Brent Fulgham.

Source/WebCore:

Test: media/audio-dealloc-crash.html

HTMLMediaElement's MediaElementSession can nominate the HTMLMediaElement itself
to become the playback controls session from inside the HTMLMediaElement destructor. Protect
against this by clearing out the session before calling updatePlaybackControlsManager().

* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::~HTMLMediaElement):

LayoutTests:

* media/audio-dealloc-crash-expected.txt: Added.
* media/audio-dealloc-crash.html: Added.

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

2 years agoOSR entry: delay outer-loop compilation when at inner-loop
jfbastien@apple.com [Sat, 4 Feb 2017 01:17:38 +0000 (01:17 +0000)]
OSR entry: delay outer-loop compilation when at inner-loop
https://bugs.webkit.org/show_bug.cgi?id=167149

Reviewed by Filip Pizlo.

r211224 and r211461 were reverted because they caused massive
kraken/ai-astar regressions. This patch instead does the
minimally-disruptive change to fix the original bug as described
below, but omits extra tuning and refactoring which I had
before. I'll commit tuning and refactoring separately, if this
sticks. This patch is therefore very minimal, and layers carefully
on top of the complex spaghetti-logic. The only change it makes is
that it uses triggers to indicate to outer loops that they should
compile, which fixes the immediate bug and seems roughly perf
neutral (maybe a small gain on kraken sometimes, other times a
small regression as would be expected from slightly compiling
later). As opposed to r211461 this patch doesn't unconditionally
unset the trigger because it prevents further DFG executions from
entering. It therefore makes the trigger a tri-state enum class:
don't trigger, compilation done, start compilation. Only "start
compilation" gets reset to "don't trigger". "Compilation done"
does not (unless there's a problem compiling, then it gets set
back to "don't trigger").

As of https://bugs.webkit.org/show_bug.cgi?id=155217 OSR
compilation can be kicked off for an entry into an outer-loop,
while executing an inner-loop. This is desirable because often the
codegen from an inner-entry isn't as good as the codegen from an
outer-entry, but execution from an inner-loop is often pretty hot
and likely to kick off compilation. This approach provided nice
speedups on Kraken because we'd select to enter to the outer-loop
very reliably, which reduces variability (the inner-loop was
selected roughly 1/5 times from my unscientific measurements).

When compilation starts we take a snapshot of the JSValues at the
current execution state using OSR's recovery mechanism. These
values are passed to the compiler and are used as way to perform
type profiling, and could be used to observe cell types as well as
to perform predictions such as through constant propagation.

It's therefore desired to enter from the outer-loop when we can,
but we need to be executing from that location to capture the
right JSValues, otherwise we're confusing the compiler and giving
it inaccurate JSValues which can lead it to predict the wrong
things, leading to suboptimal code or recompilation due to
misprediction, or in super-corner-cases a crash.

DFG tier-up was added here:
https://bugs.webkit.org/show_bug.cgi?id=112838

* dfg/DFGJITCode.h:
* dfg/DFGJITCompiler.cpp:
(JSC::DFG::JITCompiler::JITCompiler):
* dfg/DFGOperations.cpp:
* dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
* dfg/DFGToFTLForOSREntryDeferredCompilationCallback.cpp:
(JSC::DFG::ToFTLForOSREntryDeferredCompilationCallback::ToFTLForOSREntryDeferredCompilationCallback):
(JSC::DFG::Ref<ToFTLForOSREntryDeferredCompilationCallback>ToFTLForOSREntryDeferredCompilationCallback::create):
(JSC::DFG::ToFTLForOSREntryDeferredCompilationCallback::compilationDidBecomeReadyAsynchronously):
(JSC::DFG::ToFTLForOSREntryDeferredCompilationCallback::compilationDidComplete):
* dfg/DFGToFTLForOSREntryDeferredCompilationCallback.h:

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

2 years agoRemove check for SkipSafariExecutableEntitlementChecks
ap@apple.com [Sat, 4 Feb 2017 00:05:51 +0000 (00:05 +0000)]
Remove check for SkipSafariExecutableEntitlementChecks
https://bugs.webkit.org/show_bug.cgi?id=167762

Reviewed by Dan Bernstein.

Follow-up fix: don't break internal behavior.

* Scripts/webkitdirs.pm:
(safariPath):
(executableHasEntitlements): Deleted.
(safariPathFromSafariBundle): Deleted.
(installedSafariPath): Deleted.

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

2 years ago[Mac][WK2] Add SPI to override the Content Security Policy of a page
dbates@webkit.org [Fri, 3 Feb 2017 23:14:53 +0000 (23:14 +0000)]
[Mac][WK2] Add SPI to override the Content Security Policy of a page
https://bugs.webkit.org/show_bug.cgi?id=167810
<rdar://problem/30102568>

Reviewed by Anders Carlsson.

Source/WebCore:

* dom/Document.cpp:
(WebCore::Document::initSecurityContext): Apply the embedding client's override Content Security
Policy to the document if one exists.
* loader/FrameLoaderClient.h: Add function overrideContentSecurityPolicy() that a FrameLoaderClient
can override to provide a custom Content Security Policy for a document (defaults: null string - no policy).
As its name implies, the policy returned by overrideContentSecurityPolicy() will define the Content
Security Policy for the document, overriding any subsequently received Content Security Policy for
the document.
* page/csp/ContentSecurityPolicy.cpp:
(WebCore::ContentSecurityPolicy::copyStateFrom): Only copy policies from the specified ContentSecurityPolicy
object if our policy was not specified by the embedding client.
(WebCore::ContentSecurityPolicy::didReceiveHeader): Set ContentSecurityPolicy::m_hasAPIPolicy to true
when we receive an API policy from the embedding client (ContentSecurityPolicy::PolicyFrom::API). An
API policy must be defined before a policy received from a document. Do not process a received header
if we already have an API policy as the API policy overrides all other policies.
* page/csp/ContentSecurityPolicy.h:

Source/WebKit2:

Add SPI to WKWebViewConfiguration so that an embedding client can define a custom Content Security
Policy that overrides the Content Security Policy of any page loaded in the web view.

* Shared/WebPageCreationParameters.cpp:
(WebKit::WebPageCreationParameters::encode): Encode instance variable overrideContentSecurityPolicy.
(WebKit::WebPageCreationParameters::decode): Decode instance variable overrideContentSecurityPolicy.
* Shared/WebPageCreationParameters.h:
* UIProcess/API/APIPageConfiguration.cpp:
(API::PageConfiguration::copy): Copy instance variable overrideContentSecurityPolicy.
* UIProcess/API/APIPageConfiguration.h:
(API::PageConfiguration::overrideContentSecurityPolicy): Added.
(API::PageConfiguration::setOverrideContentSecurityPolicy): Added.
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _initializeWithConfiguration:]): Copy overrideContentSecurityPolicy set on the WKWebViewConfiguration
object to the API::PageConfiguration object if non-nil.
* UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
(-[WKWebViewConfiguration copyWithZone:]):  Copy the instance variable overrideContentSecurityPolicy.
(-[WKWebViewConfiguration _overrideContentSecurityPolicy]): Added.
(-[WKWebViewConfiguration _setOverrideContentSecurityPolicy:]): Added.
* UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h: Define SPI property _overrideContentSecurityPolicy.
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::WebPageProxy): Initialize m_overrideContentSecurityPolicy from the passed
page configuration.
(WebKit::WebPageProxy::creationParameters): Set WebPageCreationParameters::overrideContentSecurityPolicy
so that the WebPage object (in the WebProcess) will know the overridden Content Security Policy
to apply to the document.
* UIProcess/WebPageProxy.h:
* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::overrideContentSecurityPolicy): Added. Returns the custom Content
Security Policy to apply to a new document.
* WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
* WebProcess/WebPage/WebPage.cpp:
* WebProcess/WebPage/WebPage.h:
(WebKit::WebPage::overrideContentSecurityPolicy): Added.

Tools:

Add tests to ensure that we do not regress -[WKWebView _setOverrideContentSecurityPolicy:].

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WebKit2Cocoa/OverrideContentSecurityPolicy.mm: Added.
(TEST):
* TestWebKitAPI/Tests/WebKit2Cocoa/page-with-csp-iframe.html: Added.
* TestWebKitAPI/Tests/WebKit2Cocoa/page-with-csp.html: Added.
* TestWebKitAPI/Tests/WebKit2Cocoa/page-without-csp-iframe.html: Added.
* TestWebKitAPI/Tests/WebKit2Cocoa/page-without-csp.html: Added.

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

2 years agoRevert toString behavior to what we had in the last version we shipped
andersca@apple.com [Fri, 3 Feb 2017 23:08:17 +0000 (23:08 +0000)]
Revert toString behavior to what we had in the last version we shipped
https://bugs.webkit.org/show_bug.cgi?id=167814
rdar://problem/30344753

Reviewed by Tim Horton.

This is a speculative fix for a crash that we've seen on recent builds. It simply reverts the toString call back to
what we have in the last version of Safari we shipped.

* WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp:
(WebKit::NPRuntimeObjectMap::convertJSValueToNPVariant):

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

2 years agoDrop Mac App Store workaround for window.getComputedStyle()
cdumez@apple.com [Fri, 3 Feb 2017 22:40:28 +0000 (22:40 +0000)]
Drop Mac App Store workaround for window.getComputedStyle()
https://bugs.webkit.org/show_bug.cgi?id=166891
<rdar://problem/28282452>

Reviewed by Sam Weinig.

Drop Mac App Store workaround for window.getComputedStyle() now that
<rdar://problem/28020681> has been fixed.

* page/DOMWindow.cpp:
* page/DOMWindow.h:
* page/DOMWindow.idl:
* platform/RuntimeApplicationChecks.h:
* platform/RuntimeApplicationChecks.mm:
(WebCore::MacApplication::isAppStore): Deleted.

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

2 years agoDismiss HTML form validation popover when pressing Escape key
cdumez@apple.com [Fri, 3 Feb 2017 22:18:19 +0000 (22:18 +0000)]
Dismiss HTML form validation popover when pressing Escape key
https://bugs.webkit.org/show_bug.cgi?id=167716
<rdar://problem/29872943>

Reviewed by Simon Fraser.

Source/WebCore:

Dismiss any visible HTML form validation popover when pressing
the Escape key.

Test: fast/forms/validation-bubble-escape-key-dismiss.html

* page/EventHandler.cpp:
(WebCore::EventHandler::keyEvent):
* page/ValidationMessageClient.h:

Source/WebKit/mac:

Override ValidationMessageClient::hideAnyValidationMessage().

* WebCoreSupport/WebValidationMessageClient.h:
* WebCoreSupport/WebValidationMessageClient.mm:
(WebValidationMessageClient::hideAnyValidationMessage):

Source/WebKit2:

Override ValidationMessageClient::hideAnyValidationMessage().

* WebProcess/WebCoreSupport/WebValidationMessageClient.cpp:
(WebKit::WebValidationMessageClient::hideAnyValidationMessage):
* WebProcess/WebCoreSupport/WebValidationMessageClient.h:

LayoutTests:

Add layout test coverage.

* fast/forms/validation-bubble-escape-key-dismiss-expected.txt: Added.
* fast/forms/validation-bubble-escape-key-dismiss.html: Added.
* platform/ios-simulator/TestExpectations:

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

2 years agoRequire keyboard focus for pointer lock.
commit-queue@webkit.org [Fri, 3 Feb 2017 22:01:19 +0000 (22:01 +0000)]
Require keyboard focus for pointer lock.
https://bugs.webkit.org/show_bug.cgi?id=167750

Patch by Jeremy Jones <jeremyj@apple.com> on 2017-02-03
Reviewed by Tim Horton.

When keyboard focus leaves the page, end pointer lock
Prevent pointer lock when the page doesn't have keyboard focus.

* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::dispatchActivityStateChange):
(WebKit::WebPageProxy::requestPointerLock):

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

2 years agoInclude cstdlib before using ::malloc and posix_memalign
commit-queue@webkit.org [Fri, 3 Feb 2017 21:59:08 +0000 (21:59 +0000)]
Include cstdlib before using ::malloc and posix_memalign
https://bugs.webkit.org/show_bug.cgi?id=167800

Patch by Ting-Wei Lan <lantw44@gmail.com> on 2017-02-03
Reviewed by Geoffrey Garen.

* bmalloc/DebugHeap.cpp:

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

2 years agoPointer lock events should be delivered directly to the target element
commit-queue@webkit.org [Fri, 3 Feb 2017 21:56:43 +0000 (21:56 +0000)]
Pointer lock events should be delivered directly to the target element
https://bugs.webkit.org/show_bug.cgi?id=167134
rdar://problem/30268004

Patch by Jeremy Jones <jeremyj@apple.com> on 2017-02-03
Reviewed by Dean Jackson.

Source/WebCore:

pointer-lock/mouse-event-delivery.html: Enabled for mac, added wheel event tests.

When pointer is locked on an element, route mouse events directly to the target element, instead of
doing the normal event disptach.

* page/EventHandler.cpp:
(WebCore::EventHandler::handleMousePressEvent):
(WebCore::EventHandler::handleMouseDoubleClickEvent):
(WebCore::EventHandler::handleMouseMoveEvent):
(WebCore::EventHandler::handleMouseReleaseEvent):
(WebCore::EventHandler::handleMouseForceEvent):
(WebCore::EventHandler::handleWheelEvent):
* page/PointerLockController.cpp:
(WebCore::PointerLockController::isLocked): Added.
(WebCore::PointerLockController::dispatchLockedWheelEvent): Added.
* page/PointerLockController.h:

LayoutTests:

The pointer-lock/mouse-event-delivery.html test is modified to explicitly move the mouse pointer to a valid
location before sending mouse actions. Without this, the test infrastructure doesn't know that the pointer
is over the web view and doesn't deliver events.

The pointer-lock/mouse-event-delivery.html is also modified to explicitly wait for the delivery of the
wheel event before continuing with the test. This prevents flakeyness with the order the events are received.

Added code to test for wheel events.

* platform/mac/TestExpectations: enabled test.
* pointer-lock/mouse-event-delivery.html:
* pointer-lock/mouse-event-delivery-expected.txt:

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

2 years agoAvoid evicting link preload resources when parsing is done.
yoav@yoav.ws [Fri, 3 Feb 2017 21:52:50 +0000 (21:52 +0000)]
Avoid evicting link preload resources when parsing is done.
https://bugs.webkit.org/show_bug.cgi?id=167415

Reviewed by Ryosuke Niwa.

Source/WebCore:

Currently all preloads (speculative and link preload) are being cleared when the document has finished parsing.
When it comes to link preloads, it can result in resources being cleared before the page had a chance to use them. (e.g. resources
that are preloaded in order to be loaded through script after DOMContentLoaded)

This patch fixes that by marking link preload resources as such, so that they can be handled separately inside clearPreloads().
As this fix also exposed an issue with load cancelation with invalid hrefs (which tests were passing before due to the preloads
being cleared), said issue is also fixed by clearing previousely preloaded resources if an invalid link preload is later detected.

Test: http/tests/preload/not_evicting_preload_at_onload.html

* dom/Document.cpp:
(WebCore::Document::finishedParsing): Only clear speculative preloads when parsing is finished.
* loader/LinkLoader.cpp:
(WebCore::LinkLoader::preloadIfNeeded): Set request flag indicating link preload.
(WebCore::LinkLoader::loadLink): Clear previousely preloaded resource to cancel their load.
* loader/LinkPreloadResourceClients.h:
(WebCore::LinkPreloadResourceClient::clearResource): Call cancelLoad() when the client is cleared.
* loader/cache/CachedResource.h:
(WebCore::CachedResource::isLinkPreload):
(WebCore::CachedResource::setLinkPreload):
* loader/cache/CachedResource.cpp:
(WebCore::CachedResource::CachedResource): Initialize m_isLinkPreload with the request's value.
* loader/cache/CachedResourceLoader.cpp:
(WebCore::CachedResourceLoader::~CachedResourceLoader):
(WebCore::CachedResourceLoader::requestResource): Mirror the request link preload flag to the resource if it's fetched from cache.
(WebCore::CachedResourceLoader::clearPreloads): Add a "speculative only" mode, which doesn't clear link preloads.
* loader/cache/CachedResourceLoader.h:
* loader/cache/CachedResourceRequest.cpp:
(WebCore::CachedResourceRequest::CachedResourceRequest):
* loader/cache/CachedResourceRequest.h:
(WebCore::CachedResourceRequest::isLinkPreload):
(WebCore::CachedResourceRequest::setIsLinkPreload):

LayoutTests:

* http/tests/preload/dynamic_remove_preload_href.html: Test passed before for the wrong reasons. Cache-busting in order for it to genuinely pass.
* http/tests/preload/not_delaying_window_onload_before_discovery.html: Test passed before for the wrong reasons. Cache-busting in order for it to genuinely pass.
* http/tests/preload/not_evicting_preload_at_onload-expected.txt: Added.
* http/tests/preload/not_evicting_preload_at_onload.html: Added.
* platform/mac/TestExpectations: Skipping http/tests/preload/dynamic_removing_preload.html due to https://bugs.webkit.org/show_bug.cgi?id=167792

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

2 years agoStash away the ports - they will be nulled out before the cancel handlers are called
andersca@apple.com [Fri, 3 Feb 2017 21:48:23 +0000 (21:48 +0000)]
Stash away the ports - they will be nulled out before the cancel handlers are called
https://bugs.webkit.org/show_bug.cgi?id=167812

Reviewed by Geoffrey Garen.

* Platform/IPC/mac/ConnectionMac.mm:
(IPC::Connection::open):

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

2 years agoSimple line layout: Removing adjacent trailing whitespace runs should not crash.
zalan@apple.com [Fri, 3 Feb 2017 21:17:28 +0000 (21:17 +0000)]
Simple line layout: Removing adjacent trailing whitespace runs should not crash.
https://bugs.webkit.org/show_bug.cgi?id=167803
<rdar://problem/30337368>

Reviewed by Antti Koivisto.

Source/WebCore:

In case of adjacent collapsed whitespace fragments, the length of these fragments (TextFragmentIterator::TextFragment)
do not necessarily equal the length of the final runs (SimpleLineLayout::Run).
This patch removes the dependency on the length and switches over to using the position information instead.

Test: fast/text/simple-line-layout-multiple-trailingwhitespace-crash.html

* rendering/SimpleLineLayout.cpp:
(WebCore::SimpleLineLayout::LineState::appendFragmentAndCreateRunIfNeeded):
(WebCore::SimpleLineLayout::LineState::removeTrailingWhitespace):

LayoutTests:

* fast/text/simple-line-layout-multiple-trailingwhitespace-crash-expected.txt: Added.
* fast/text/simple-line-layout-multiple-trailingwhitespace-crash.html: Added.

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

2 years agoCorrect memory leak in MediaConstraints
bfulgham@apple.com [Fri, 3 Feb 2017 20:53:35 +0000 (20:53 +0000)]
Correct memory leak in MediaConstraints
https://bugs.webkit.org/show_bug.cgi?id=167744
<rdar://problem/30331444>

Reviewed by Anders Carlsson.

ConstraintHolder returns a reference to an object created by operator new. When the
returned value is assigned or stored in Vector or other containers we leak memory.
Instead, this value should just be returned as a regular object so that the return
value optimization can make sure memory is properly (and efficiently) used.

Tested by existing mediastream tests.

* platform/mediastream/MediaConstraints.h:
(WebCore::FlattenedConstraint::ConstraintHolder::create): Return by value.
(WebCore::FlattenedConstraint::ConstraintHolder::~ConstraintHolder): Don't attempt to
delete memory that was moved away.
(WebCore::FlattenedConstraint::ConstraintHolder::ConstraintHolder): Add Move constructor.

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

2 years agoFix bad assertion under HTMLTreeBuilder::processStartTagForInBody()
cdumez@apple.com [Fri, 3 Feb 2017 20:49:39 +0000 (20:49 +0000)]
Fix bad assertion under HTMLTreeBuilder::processStartTagForInBody()
https://bugs.webkit.org/show_bug.cgi?id=167799
<rdar://problem/30237241>

Reviewed by Brent Fulgham.

Source/WebCore:

Fix bad assertion under HTMLTreeBuilder::processStartTagForInBody() that was
expecting the root element to be an <html> element when parsing a <frameset>.
While this assertion is true in theory and as per the specification, it does
not hold in WebKit when parsing a DocumentFragment. This is because WebKit
has an optimization causing us to have a DocumentFragment as root element
when parsing a fragment. See the following constructor:
"HTMLTreeBuilder(HTMLDocumentParser&, DocumentFragment&, Element&, ParserContentPolicy, const HTMLParserOptions&)"

which has the following code:
"""
// https://html.spec.whatwg.org/multipage/syntax.html#parsing-html-fragments
// For efficiency, we skip step 5 ("Let root be a new html element with no attributes") and instead use the DocumentFragment as a root node.
m_tree.openElements().pushRootNode(HTMLStackItem::create(fragment));
"""

Update the assertion to expect a DocumentFragment as root element when parsing
a fragment, and keep expecting an <html> element otherwise.

Test: fast/parser/fragment-with-frameset-crash.html

* html/parser/HTMLTreeBuilder.cpp:
(WebCore::HTMLTreeBuilder::processStartTagForInBody):

LayoutTests:

Add layout test coverage. This test passes in all major browsers but used to hit
the bad assertion in WebKit debug builds.

* fast/parser/fragment-with-frameset-crash-expected.txt: Added.
* fast/parser/fragment-with-frameset-crash.html: Added.

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

2 years agoInline createReceiveSource in its two call sites
andersca@apple.com [Fri, 3 Feb 2017 20:28:40 +0000 (20:28 +0000)]
Inline createReceiveSource in its two call sites
https://bugs.webkit.org/show_bug.cgi?id=167809

Reviewed by Alex Christensen.

* Platform/IPC/mac/ConnectionMac.mm:
(IPC::Connection::open):
(IPC::createReceiveSource): Deleted.

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

2 years agoWKActionSheet should dismiss with animation when done with the sheet
wenson_hsieh@apple.com [Fri, 3 Feb 2017 20:07:49 +0000 (20:07 +0000)]
WKActionSheet should dismiss with animation when done with the sheet
https://bugs.webkit.org/show_bug.cgi?id=167804
<rdar://problem/30334861>

Reviewed by Tim Horton.

Currently, we do not dismiss the action menu when -doneWithSheet is invoked. While this is okay when the menu is
dismissed via tap (since it will be dismissed as default behavior by the popover controller) we need to manually
dismiss it if we are trying to programmatically dismiss the action sheet/menu.

* UIProcess/ios/WKActionSheet.mm:
(-[WKActionSheet presentSheetFromRect:]):
(-[WKActionSheet doneWithSheet]):
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView setupInteraction]):
(-[WKContentView resignFirstResponder]):

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

2 years agoWhen OSR entering to the baseline JIT from the LLInt for a ProgramCodeBlock we can...
sbarati@apple.com [Fri, 3 Feb 2017 20:00:53 +0000 (20:00 +0000)]
When OSR entering to the baseline JIT from the LLInt for a ProgramCodeBlock we can skip compiling a lot of the program
https://bugs.webkit.org/show_bug.cgi?id=167725
<rdar://problem/30339082>

Reviewed by Michael Saboff.

We often want to baseline compile ProgramCode once we hit a loop in the LLInt.
However, some programs execute a non-trivial amount of code before the loop.
This code can never be executed again because ProgramCodeBlocks never run more
than once. We're wasting time and memory by compiling code that is unreachable
from the OSR entry destination. This patch fixes this by only compiling code
that is reachable from the OSR entry destination.

This is a speedup on Kraken/ai-astar for devices with limited CPUs (I've been
testing on devices with 2 CPUs). On ai-astar, we were spending 50-100ms compiling
a huge ProgramCodeBlock in the baseline JIT where the majority of the code
would never execute. If this compilation was kicked off on the main thread,
then we'd be stalled for a long time. If it were started on the baseline JITs
background compilation thread, we'd still waste 50-100ms in that thread, causing
all other baseline compilations to happen on the main thread.

* interpreter/Interpreter.cpp:
(JSC::Interpreter::executeProgram):
* interpreter/Interpreter.h:
* jit/JIT.cpp:
(JSC::JIT::JIT):
(JSC::JIT::privateCompileMainPass):
* jit/JIT.h:
(JSC::JIT::compile):
* jit/JITWorklist.cpp:
(JSC::JITWorklist::Plan::Plan):
(JSC::JITWorklist::Plan::compileNow):
(JSC::JITWorklist::compileLater):
(JSC::JITWorklist::compileNow):
* jit/JITWorklist.h:
* llint/LLIntSlowPaths.cpp:
(JSC::LLInt::jitCompileAndSetHeuristics):
(JSC::LLInt::LLINT_SLOW_PATH_DECL):
* runtime/Completion.cpp:
(JSC::evaluate):

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

2 years ago[Modern Media Controls] Skip back button is visible with a live broadcast video
commit-queue@webkit.org [Fri, 3 Feb 2017 19:53:37 +0000 (19:53 +0000)]
[Modern Media Controls] Skip back button is visible with a live broadcast video
https://bugs.webkit.org/show_bug.cgi?id=167793

Patch by Antoine Quint <graouts@apple.com> on 2017-02-03
Reviewed by Eric Carlson.

Source/WebCore:

We shouldn't be showing the skip back button when a live broadcast video is playing.
We now listen to the "durationchange" event to determine when we have an inifinite-duration
video and disable the skip button in that case.

Test: http/tests/media/modern-media-controls/skip-back-support/skip-back-support-live-broadcast.html

* Modules/modern-media-controls/media/skip-back-support.js:
(SkipBackSupport.prototype.get mediaEvents):
(SkipBackSupport.prototype.syncControl):
(SkipBackSupport):

LayoutTests:

Add a new test to check that a live broadcast video doesn't show the skip back button.

* http/tests/media/modern-media-controls/skip-back-support/skip-back-support-live-broadcast-expected.txt: Added.
* http/tests/media/modern-media-controls/skip-back-support/skip-back-support-live-broadcast.html: Added.

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

2 years agoWeb Inspector: Add stroke-linecap property values to CSS autocompletion
mattbaker@apple.com [Fri, 3 Feb 2017 19:08:07 +0000 (19:08 +0000)]
Web Inspector: Add stroke-linecap property values to CSS autocompletion
https://bugs.webkit.org/show_bug.cgi?id=167778

Reviewed by Joseph Pecoraro.

* UserInterface/Models/CSSKeywordCompletions.js:
Add autocompletion values for fill-rule and stroke-linecap.

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

2 years agoDoc generation failure in WebKitSecurityOrigin
commit-queue@webkit.org [Fri, 3 Feb 2017 18:45:27 +0000 (18:45 +0000)]
Doc generation failure in WebKitSecurityOrigin
https://bugs.webkit.org/show_bug.cgi?id=167796

Patch by Olivier Blin <olivier.blin@softathome.com> on 2017-02-03
Reviewed by Michael Catanzaro.

* UIProcess/API/gtk/WebKitSecurityOrigin.cpp:
warning: Free-form return value description in webkit_security_origin_get_protocol. Use `Returns:' to avoid ambiguities.

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

2 years agoURLParser: implement forbidden host code points for non-special URLs
achristensen@apple.com [Fri, 3 Feb 2017 17:44:30 +0000 (17:44 +0000)]
URLParser: implement forbidden host code points for non-special URLs
https://bugs.webkit.org/show_bug.cgi?id=167779

Reviewed by Chris Dumez.

LayoutTests/imported/w3c:

* web-platform-tests/url/a-element-expected.txt:
* web-platform-tests/url/a-element-xhtml-expected.txt:
* web-platform-tests/url/url-constructor-expected.txt:
* web-platform-tests/url/url-setters-expected.txt:

Source/WebCore:

Covered by newly passing web platform tests.

* platform/URLParser.cpp:
(WebCore::isC0Control):
(WebCore::isForbiddenHostCodePoint):
(WebCore::URLParser::parseHostAndPort):
In non-special URL hosts such as customprotocol://strange%host
don't accept characters that are part of the URL grammar and would be forbidden
in a special URL host, like https://not[allowed
This was recently added to the spec in https://github.com/whatwg/url/issues/214

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

2 years agoThe CSS property -webkit-text-stroke is not applied on captions.
pvollan@apple.com [Fri, 3 Feb 2017 17:39:34 +0000 (17:39 +0000)]
The CSS property -webkit-text-stroke is not applied on captions.
https://bugs.webkit.org/show_bug.cgi?id=167687

Reviewed by Brent Fulgham.

Source/WebCore:

Add style to list of valid properties for cue.

Test: media/track/track-css-stroke-cues.html

* css/StyleResolver.cpp:
(WebCore::StyleResolver::isValidCueStyleProperty):

LayoutTests:

* media/track/track-css-stroke-cues-expected.txt: Added.
* media/track/track-css-stroke-cues.html: Added.

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

2 years agoAlign URL setters with spec for URLs that cannot be a base URL
achristensen@apple.com [Fri, 3 Feb 2017 17:21:43 +0000 (17:21 +0000)]
Align URL setters with spec for URLs that cannot be a base URL
https://bugs.webkit.org/show_bug.cgi?id=167783

Reviewed by Chris Dumez.

LayoutTests/imported/w3c:

* web-platform-tests/url/url-setters-expected.txt:

Source/WebCore:

Setting things like credentials on mailto URLs doesn't make sense.
It's forbidden by the spec.

Covered by newly passing web platform tests.

* html/URLUtils.h:
(WebCore::URLUtils<T>::setUsername):
(WebCore::URLUtils<T>::setPassword):
(WebCore::URLUtils<T>::setHost):
(WebCore::URLUtils<T>::setHostname):
(WebCore::URLUtils<T>::setPort):
(WebCore::URLUtils<T>::setPathname):
* platform/URL.cpp:
(WebCore::URL::serialize):
* platform/URL.h:
(WebCore::URL::cannotBeABaseURL):

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

2 years ago[CMake] RelWithDebInfo builds are super broken at runtime
annulen@yandex.ru [Fri, 3 Feb 2017 17:21:21 +0000 (17:21 +0000)]
[CMake] RelWithDebInfo builds are super broken at runtime
https://bugs.webkit.org/show_bug.cgi?id=163897

Reviewed by Michael Catanzaro.

* Source/cmake/OptionsCommon.cmake: Apply -fno-strict-aliasing,
-fno-exceptions, and -fno-rtti flags to all configurations,
instead of only "Release".

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

2 years ago[Mac] Add classes to manage audio samples
eric.carlson@apple.com [Fri, 3 Feb 2017 17:11:16 +0000 (17:11 +0000)]
[Mac] Add classes to manage audio samples
https://bugs.webkit.org/show_bug.cgi?id=167739

Reviewed by Jer Noble.

No new tests, this code isn't used yet.

* WebCore.xcodeproj/project.pbxproj:
* platform/audio/mac/AudioSampleBufferList.cpp: Added.
(WebCore::AudioSampleBufferList::create):
(WebCore::AudioSampleBufferList::AudioSampleBufferList):
(WebCore::AudioSampleBufferList::~AudioSampleBufferList):
(WebCore::AudioSampleBufferList::setSampleCount):
(WebCore::AudioSampleBufferList::applyGain):
(WebCore::AudioSampleBufferList::mixFrom):
(WebCore::AudioSampleBufferList::copyFrom):
(WebCore::AudioSampleBufferList::copyTo):
(WebCore::AudioSampleBufferList::reset):
(WebCore::AudioSampleBufferList::zero):
(WebCore::AudioSampleBufferList::zeroABL):
(WebCore::AudioSampleBufferList::convertInput):
(WebCore::AudioSampleBufferList::audioConverterCallback):
(WebCore::AudioSampleBufferList::configureBufferListForStream):
* platform/audio/mac/AudioSampleBufferList.h: Added.
(WebCore::AudioSampleBufferList::streamDescription):
(WebCore::AudioSampleBufferList::bufferList):
(WebCore::AudioSampleBufferList::sampleCapacity):
(WebCore::AudioSampleBufferList::sampleCount):
(WebCore::AudioSampleBufferList::timestamp):
(WebCore::AudioSampleBufferList::hostTime):
(WebCore::AudioSampleBufferList::setTimes):
(WebCore::AudioSampleBufferList::audioBufferListSizeForStream):
* platform/audio/mac/AudioSampleDataSource.cpp: Added.
(WebCore::AudioSampleDataSource::create):
(WebCore::AudioSampleDataSource::AudioSampleDataSource):
(WebCore::AudioSampleDataSource::~AudioSampleDataSource):
(WebCore::AudioSampleDataSource::setPaused):
(WebCore::AudioSampleDataSource::setupConverter):
(WebCore::AudioSampleDataSource::setInputFormat):
(WebCore::AudioSampleDataSource::setOutputFormat):
(WebCore::AudioSampleDataSource::hostTime):
(WebCore::AudioSampleDataSource::pushSamplesInternal):
(WebCore::AudioSampleDataSource::pushSamples):
(WebCore::AudioSampleDataSource::pullSamplesInternal):
(WebCore::AudioSampleDataSource::pullSamples):
* platform/audio/mac/AudioSampleDataSource.h: Added.
(WebCore::AudioSampleDataSource::setVolume):
(WebCore::AudioSampleDataSource::volume):
(WebCore::AudioSampleDataSource::setMuted):
(WebCore::AudioSampleDataSource::muted):

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

2 years agoUnreviewed. Fix the buidl after r211631.
carlosgc@webkit.org [Fri, 3 Feb 2017 14:21:28 +0000 (14:21 +0000)]
Unreviewed. Fix the buidl after r211631.

I added the OS(LINUX) ifdef to the wrong file by mistake.

* page/ResourceUsageThread.h:
* page/linux/ResourceUsageThreadLinux.cpp:

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

2 years agoUnreviewed typo fix after r211630.
ossy@webkit.org [Fri, 3 Feb 2017 13:04:50 +0000 (13:04 +0000)]
Unreviewed typo fix after r211630.

* CMakeLists.txt:

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

2 years ago[GTK] Add initial implementation of resource usage overlay
carlosgc@webkit.org [Fri, 3 Feb 2017 13:03:33 +0000 (13:03 +0000)]
[GTK] Add initial implementation of resource usage overlay
https://bugs.webkit.org/show_bug.cgi?id=167731

Reviewed by Michael Catanzaro.

.:

Enable RESOURCE_USAGE.

* Source/cmake/OptionsGTK.cmake:

Source/JavaScriptCore:

Also expose nextFireTime() for GTK+ port.

* heap/GCActivityCallback.cpp:
(JSC::GCActivityCallback::scheduleTimer):
(JSC::GCActivityCallback::cancelTimer):
* heap/GCActivityCallback.h:

Source/WebCore:

Add an implementation of ResourceUsageOverlay and ResourceUsageThread for Linux systems.

* PlatformGTK.cmake: Add new new files to compilation.
* page/Page.cpp:
(WebCore::Page::setResourceUsageOverlayVisible): Do not create the page overlay if accelerated compositing is
not enabled.
* page/ResourceUsageOverlay.h:
* page/linux/ResourceUsageOverlayLinux.cpp: Added.
(WebCore::cpuUsageString):
(WebCore::formatByteNumber):
(WebCore::gcTimerString):
(WebCore::ResourceUsageOverlay::platformInitialize):
(WebCore::ResourceUsageOverlay::platformDestroy):
* page/linux/ResourceUsageThreadLinux.cpp: Added.
(WebCore::cpuPeriod):
(WebCore::cpuUsage):
(WebCore::ResourceUsageThread::platformThreadBody):

Source/WebKit2:

Toggle the resource usage overlay visibility by pressing CTRL + Shift + G. Only available when building with
developer mode enabled.

* UIProcess/API/gtk/WebKitWebViewBase.cpp:
(webkitWebViewBaseKeyPressEvent):

Source/WTF:

Enable RESOURCE_USAGE for GTK+ port too.

* wtf/Platform.h:

LayoutTests:

Unskip inpector tests depending on RESOURCE_USAGE.

* platform/gtk/TestExpectations:

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

2 years ago[cmake] Unreviewed AArch64 buildfix after r211603.
ossy@webkit.org [Fri, 3 Feb 2017 12:56:20 +0000 (12:56 +0000)]
[cmake] Unreviewed AArch64 buildfix after r211603.
https://bugs.webkit.org/show_bug.cgi?id=167714

* CMakeLists.txt:

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

2 years agoREGRESSION(r211486) [GTK] The MiniBrowser doesn't work anymore.
commit-queue@webkit.org [Fri, 3 Feb 2017 12:40:28 +0000 (12:40 +0000)]
REGRESSION(r211486) [GTK] The MiniBrowser doesn't work anymore.
https://bugs.webkit.org/show_bug.cgi?id=167776

Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2017-02-03
Reviewed by Yusuke Suzuki.

Since r211486 JSC::initializeThreading() also initializes the main run loop. It would be possible that RunLoop
need to know if it's the main one or not in its constructor, like the GLib impementation does, so we need to
ensure that WTF threading and MainThread are initialized before creating the main RunLoop. This is a quick fix
because the regression made impossible to load anything in a WebView, but I think we should review all the
initialize methods, what they do and how they are called in all the code.

* Shared/WebKit2Initialize.cpp:
(WebKit::InitializeWebKit2): Call WTF::initializeThreading() and WTF::initializeMainThread() before
JSC::initializeThreading() and do not call RunLoop::initializeMainRunLoop() because it's already called by JSC.

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

2 years ago[Mac][cmake] One more unreviewed speculative buildfix after r211403.
ossy@webkit.org [Fri, 3 Feb 2017 12:21:56 +0000 (12:21 +0000)]
[Mac][cmake] One more unreviewed speculative buildfix after r211403.
https://bugs.webkit.org/show_bug.cgi?id=165478

* UIProcess/API/Cocoa/WKWebView.mm: WebSQLiteDatabaseTrackerClient.h is an iOS specific
header in platform/ios directory which shouldn't and can't be included on non iOS build.

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

2 years ago[GStreamer] Store preloaded media in webkit's cache
eocanha@igalia.com [Fri, 3 Feb 2017 12:03:10 +0000 (12:03 +0000)]
[GStreamer] Store preloaded media in webkit's cache
https://bugs.webkit.org/show_bug.cgi?id=119477

Reviewed by Xabier Rodriguez-Calvar.

Files cached on disk by MediaPlayerPrivateGStreamer are deleted only when the player is closed. If the
WebProcess crashed, they're just left there in the cache directory. This patch changes the location
of those temporary files to a proper temporary directory (/var/tmp, as those files aren't actually
reusable, so they don't belong to a cache directory, and /tmp is a bad place because it's RAM-based on
some distros), unlinks (deletes) them right after creation and also deletes any other stalled temporary
file on the old legacy cache directory.

There's no API in GstPlaybin to control the temporary file location, so we do it manually by locating
the GstDownloadBuffer element in the pipeline as soon as it's created, reconfiguring it with the right
temporary file path and deleting the file as soon as it's created.

* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::~MediaPlayerPrivateGStreamer): Stop listening to element-added.
(WebCore::MediaPlayerPrivateGStreamer::uriDecodeBinElementAddedCallback): Look for GstDownloadBuffer.
(WebCore::MediaPlayerPrivateGStreamer::downloadBufferFileCreatedCallback): Remove the file after creation.
(WebCore::MediaPlayerPrivateGStreamer::purgeOldDownloadFiles): Delete legacy files.
(WebCore::MediaPlayerPrivateGStreamer::sourceChanged): Listen to element-added signals on GstUriDecodeBin.
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h: New reference to GstDownloadBuffer.

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

2 years ago[Mac][cmake] Unreviewed speculative buildfix after r211403.
ossy@webkit.org [Fri, 3 Feb 2017 11:53:26 +0000 (11:53 +0000)]
[Mac][cmake] Unreviewed speculative buildfix after r211403.
https://bugs.webkit.org/show_bug.cgi?id=165478

* UIProcess/API/Cocoa/WKWebView.mm: WebBackgroundTaskController.h is an iOS specific
header in platform/ios directory which shouldn't and can't be included on non iOS build.

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

2 years agoWebContent crash when pasting into input fields at com.apple.WebCore: WebCore::Resour...
antti@apple.com [Fri, 3 Feb 2017 11:12:42 +0000 (11:12 +0000)]
WebContent crash when pasting into input fields at com.apple.WebCore: WebCore::ResourceRequestBase::url const + 9
https://bugs.webkit.org/show_bug.cgi?id=167787
rdar://problem/29168795

Reviewed by Andreas Kling.

No test, don't know how to get here.

* page/animation/CSSPropertyAnimation.cpp:
(WebCore::crossfadeBlend): Null check.

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

2 years agoJSDOMWindowBase.cpp doesn't build if the JIT is disabled
berto@igalia.com [Fri, 3 Feb 2017 10:23:59 +0000 (10:23 +0000)]
JSDOMWindowBase.cpp doesn't build if the JIT is disabled
https://bugs.webkit.org/show_bug.cgi?id=167785

Reviewed by Carlos Garcia Campos.

r211403 moved GetCallerGlobalObjectFunctor from JSDOMBinding.cpp
to JSDOMWindowBase.cpp, but forgot to include bytecode/CodeBlock.h
in the latter file.

This breaks the build if the JIT is disabled because the headers
that would include ClodeBlock.h indirectly are guarded by
ENABLE(JIT).

* bindings/js/JSDOMWindowBase.cpp:

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

2 years agoLayoutTest media/modern-media-controls/tracks-panel/tracks-panel-hide-click-outside...
commit-queue@webkit.org [Fri, 3 Feb 2017 09:05:15 +0000 (09:05 +0000)]
LayoutTest media/modern-media-controls/tracks-panel/tracks-panel-hide-click-outside.html is a flaky timeout
https://bugs.webkit.org/show_bug.cgi?id=165290

Unreviewed test gardening.

Patch by Antoine Quint <graouts@apple.com> on 2017-02-03

* platform/mac/TestExpectations:

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

2 years ago[Mac] In-process memory pressure monitor for WebContent processes AKA websam
akling@apple.com [Fri, 3 Feb 2017 07:25:24 +0000 (07:25 +0000)]
[Mac] In-process memory pressure monitor for WebContent processes AKA websam
<https://webkit.org/b/167491>
<rdar://problem/30116072>

Reviewed by Antti Koivisto.

Source/JavaScriptCore:

Remove the sloppy "max live heap size" mechanism from JSC in favor of the new
WebCore-side memory footprint monitor.

* heap/Heap.cpp:
(JSC::Heap::updateAllocationLimits):
(JSC::Heap::didExceedMaxLiveSize): Deleted.
* heap/Heap.h:
(JSC::Heap::setMaxLiveSize): Deleted.

Source/WebCore:

Add a new timer-based memory pressure monitor that checks the process memory
footprint every 30 seconds and reacts to changes by setting a MemoryUsagePolicy.

There are four MemoryUsagePolicy values:

    - Unrestricted (below 1GB)
    - Conservative (above 1GB)
    - Strict (above 2GB)
    - Panic (above 4GB, or 3GB if 32-bit)

For Strict and above, the old-style "isUnderMemoryPressure()" API will return true.

Transitioning to a higher policy will cause memory pressure handlers to run:

At Strict, we run the "non-critical" memory pressure handler, then carry on.

At Panic, we run the "critical" memory pressure handler. If that fails to recover
enough memory to bring us back below 4GB, we may kill the process:

A process is eligible to get killed for using too much memory if:

    - It's not visible on screen (i.e it's a background tab.)
    - It's not playing audio.
    - It has not performed a main frame navigation in the last hour.

Before killing the process, an exit-time callback will run. This patch installs such
a callback that prints out some time-of-death statistics about C++ and JavaScript memory
usage to hopefully help understand what was soaking up all the memory.

* bindings/js/CommonVM.cpp:
(WebCore::commonVMSlow):
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::setState):
* page/MainFrame.cpp:
(WebCore::MainFrame::didCompleteLoad):
* page/MainFrame.h:
* page/MemoryRelease.cpp:
(WebCore::pageCount):
(WebCore::logMemoryStatisticsAtTimeOfDeath):
(WebCore::didExceedMemoryLimitAndFailedToRecover):
(WebCore::processIsEligibleForMemoryKill):
* page/MemoryRelease.h:
* page/ResourceUsageThread.h:
* page/cocoa/ResourceUsageThreadCocoa.mm:
(WebCore::vmPageSize):
* platform/MemoryPressureHandler.cpp:
(WebCore::MemoryPressureHandler::MemoryPressureHandler):
(WebCore::MemoryPressureHandler::setShouldUsePeriodicMemoryMonitor):
(WebCore::toString):
(WebCore::thresholdForPolicy):
(WebCore::policyForFootprint):
(WebCore::MemoryPressureHandler::measurementTimerFired):
* platform/MemoryPressureHandler.h:
(WebCore::MemoryPressureHandler::setMemoryKillCallback):
(WebCore::MemoryPressureHandler::setProcessIsEligibleForMemoryKillCallback):
(WebCore::MemoryPressureHandler::isUnderMemoryPressure):

Source/WebKit2:

Enable the in-process memory monitor for WebContent processes on macOS 10.12+

* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::initializeWebProcess):

Source/WTF:

Add a WTF helper function for getting the current process's memory footprint.

* WTF.xcodeproj/project.pbxproj:
* wtf/CMakeLists.txt:
* wtf/MemoryFootprint.cpp:
(WTF::memoryFootprint):
* wtf/MemoryFootprint.h:

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

2 years agoURLParser: Fix parsing invalid IPv4 addresses with non-ASCII characters
achristensen@apple.com [Fri, 3 Feb 2017 06:30:30 +0000 (06:30 +0000)]
URLParser: Fix parsing invalid IPv4 addresses with non-ASCII characters
https://bugs.webkit.org/show_bug.cgi?id=167773
<rdar://problem/30221102>

Reviewed by Ryosuke Niwa.

Source/WebCore:

If an invalid IPv4 address contains the first syntaxViolation (difference between input and canonicalized URL),
an iterator is used to calculate how far we have parsed in the input string to copy all the syntax-violation-free
characters into a Vector. If a URL contains only ASCII that doesn't contain anything percent-encoded in the host,
there is a fast path to parse ASCII hosts.  All my existing invalid IPv4 tests followed this path.
If there is a non-ASCII character, we need to use an iterator to the original string instead of an iterator
to the string after converting the input string's host to ASCII.

Covered by a new API test which used to RELEASE_ASSERT.

* platform/URLParser.cpp:
(WebCore::URLParser::parseIPv4Host):
(WebCore::URLParser::parseIPv6Host):
(WebCore::URLParser::parseHostAndPort):
* platform/URLParser.h:

Tools:

* TestWebKitAPI/Tests/WebCore/URLParser.cpp:
(TestWebKitAPI::TEST_F):

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

2 years agoUpdate URL web platform tests
achristensen@apple.com [Fri, 3 Feb 2017 06:20:56 +0000 (06:20 +0000)]
Update URL web platform tests
https://bugs.webkit.org/show_bug.cgi?id=167777

Reviewed by Ryosuke Niwa.

* web-platform-tests/url/a-element-expected.txt:
* web-platform-tests/url/a-element-origin-expected.txt:
* web-platform-tests/url/a-element-origin-xhtml-expected.txt:
* web-platform-tests/url/a-element-origin-xhtml.xhtml:
* web-platform-tests/url/a-element-origin.html:
* web-platform-tests/url/a-element-xhtml-expected.txt:
* web-platform-tests/url/a-element-xhtml.xhtml:
* web-platform-tests/url/a-element.html:
* web-platform-tests/url/setters_tests.json:
* web-platform-tests/url/url-constructor-expected.txt:
* web-platform-tests/url/url-origin-expected.txt:
* web-platform-tests/url/url-setters-expected.txt:
* web-platform-tests/url/urlencoded-parser-expected.txt: Added.
* web-platform-tests/url/urlencoded-parser.html: Added.
* web-platform-tests/url/urlsearchparams-constructor-expected.txt:
* web-platform-tests/url/urlsearchparams-constructor.html:
* web-platform-tests/url/urlsearchparams-sort-expected.txt:
* web-platform-tests/url/urlsearchparams-sort.html:
* web-platform-tests/url/urltestdata.json:

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