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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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