WebKit-https.git
20 months agoApps that use both WK1 and WK2 can crash creating a WKWebsiteDataStore.
beidson@apple.com [Tue, 19 Dec 2017 00:14:24 +0000 (00:14 +0000)]
Apps that use both WK1 and WK2 can crash creating a WKWebsiteDataStore.
https://bugs.webkit.org/show_bug.cgi?id=180953

Reviewed by Chris Dumez.

* UIProcess/WebsiteData/WebsiteDataStore.cpp: Make an isMainThread() asset be an isUIThread() assert.

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

20 months agoWeb Inspector: Styles Redesign: Command-S should save changes in matching CSS resource
nvasilyev@apple.com [Mon, 18 Dec 2017 23:02:40 +0000 (23:02 +0000)]
Web Inspector: Styles Redesign: Command-S should save changes in matching CSS resource
https://bugs.webkit.org/show_bug.cgi?id=180900

Reviewed by Timothy Hatcher.

When focused on a CSS selector, property name or value, pressing Command-S should save
the CSS resource to the file system.

* UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.initialLayout):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype._save):

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

20 months agoFollow up to bug#179762. Fix PreciseLocalClobberize to handle Spread/PhantomSpread...
sbarati@apple.com [Mon, 18 Dec 2017 22:20:22 +0000 (22:20 +0000)]
Follow up to bug#179762. Fix PreciseLocalClobberize to handle Spread/PhantomSpread(PhantomNewArrayBuffer)

* dfg/DFGPreciseLocalClobberize.h:
(JSC::DFG::PreciseLocalClobberizeAdaptor::readTop):

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

20 months agoMake some functions in GraphicsContextCG use call_once for statics
dino@apple.com [Mon, 18 Dec 2017 22:05:23 +0000 (22:05 +0000)]
Make some functions in GraphicsContextCG use call_once for statics
https://bugs.webkit.org/show_bug.cgi?id=180841
<rdar://problem/36058448>

Reviewed by Antoine Quint.

In preparation for making OffscreenCanvas operate inside a Worker,
make sure GraphicsContext is thread safe. Change some functions
that use a static to call_once.

* platform/graphics/cg/GraphicsContextCG.cpp:
(WebCore::sRGBColorSpaceRef):
(WebCore::linearRGBColorSpaceRef):
(WebCore::extendedSRGBColorSpaceRef):
(WebCore::displayP3ColorSpaceRef):

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

20 months agoWeb Inspector: Styles Redesign: add inline swatch for CSS variables
webkit@devinrousso.com [Mon, 18 Dec 2017 22:04:36 +0000 (22:04 +0000)]
Web Inspector: Styles Redesign: add inline swatch for CSS variables
https://bugs.webkit.org/show_bug.cgi?id=180798

Reviewed by Timothy Hatcher.

* UserInterface/Views/SpreadsheetStyleProperty.js:
(WI.SpreadsheetStyleProperty):
(WI.SpreadsheetStyleProperty.prototype.updateStatus):
(WI.SpreadsheetStyleProperty.prototype._renderValue):
(WI.SpreadsheetStyleProperty.prototype._addVariableTokens):

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

20 months agoExtendableMessageEvent.data should return the value it was initialized to
cdumez@apple.com [Mon, 18 Dec 2017 21:56:54 +0000 (21:56 +0000)]
ExtendableMessageEvent.data should return the value it was initialized to
https://bugs.webkit.org/show_bug.cgi?id=180868

Reviewed by Geoffrey Garen.

LayoutTests/imported/w3c:

Rebaseline WPT test now that one more subtest is passing.

* web-platform-tests/service-workers/service-worker/ServiceWorkerGlobalScope/extendable-message-event-constructor.https-expected.txt:

Source/WebCore:

No new tests, rebaselined existing test.

* bindings/js/JSExtendableMessageEventCustom.cpp:
(WebCore::constructJSExtendableMessageEvent):
* workers/service/ExtendableMessageEvent.cpp:
(WebCore::ExtendableMessageEvent::ExtendableMessageEvent):
* workers/service/ExtendableMessageEvent.idl:

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

20 months agoWeb Inspector: recording view and slider have jumbled layout at narrow widths
webkit@devinrousso.com [Mon, 18 Dec 2017 21:51:36 +0000 (21:51 +0000)]
Web Inspector: recording view and slider have jumbled layout at narrow widths
https://bugs.webkit.org/show_bug.cgi?id=180597
<rdar://problem/35939904>

Reviewed by Timothy Hatcher.

* UserInterface/Views/RecordingContentView.css:
(.content-view:not(.tab).recording > header > .slider-container):
(.content-view:not(.tab).recording > header > .slider-container > *):
(.content-view:not(.tab).recording > header > .slider-container > input[type=range]):

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

20 months agoWeb Inspector: Canvas tab: placeholder/help text wrapping looks poor at narrow widths
mattbaker@apple.com [Mon, 18 Dec 2017 21:51:00 +0000 (21:51 +0000)]
Web Inspector: Canvas tab: placeholder/help text wrapping looks poor at narrow widths
https://bugs.webkit.org/show_bug.cgi?id=180943
<rdar://problem/36114431>

Reviewed by Timothy Hatcher.

* UserInterface/Views/ContentView.css:
(.content-view > .message-text-view > .description):
* UserInterface/Views/Main.css:
(.message-text-view .navigation-item-help):
(.message-text-view .navigation-item-help .navigation-bar):
(.message-text-view .navigation-item-help .navigation-bar > .item):

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

20 months agoREGRESSION (r225569): Web Inspector: Commented out properties aren't properly highlighted
webkit@devinrousso.com [Mon, 18 Dec 2017 21:49:07 +0000 (21:49 +0000)]
REGRESSION (r225569): Web Inspector: Commented out properties aren't properly highlighted
https://bugs.webkit.org/show_bug.cgi?id=180687

Reviewed by Timothy Hatcher.

* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css:
(.spreadsheet-style-declaration-editor .property:not(.disabled) .name):
(.spreadsheet-style-declaration-editor .property:not(.disabled) .value):
(.spreadsheet-style-declaration-editor .property.disabled):
(.spreadsheet-style-declaration-editor .name): Deleted.
(.spreadsheet-style-declaration-editor .value): Deleted.
(.spreadsheet-style-declaration-editor .property.disabled, .spreadsheet-style-declaration-editor .property.disabled > *): Deleted.

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

20 months agoMarked http/tests/resourceLoadStatistics/telemetry-generation.html as flaky.
jlewis3@apple.com [Mon, 18 Dec 2017 21:34:02 +0000 (21:34 +0000)]
Marked http/tests/resourceLoadStatistics/telemetry-generation.html as flaky.
https://bugs.webkit.org/show_bug.cgi?id=180703

Unreviewed test gardening.

* platform/wk2/TestExpectations:

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

20 months agoConditionally forward declare NSMapTable SPI
dbates@webkit.org [Mon, 18 Dec 2017 21:23:54 +0000 (21:23 +0000)]
Conditionally forward declare NSMapTable SPI
https://bugs.webkit.org/show_bug.cgi?id=180936
<rdar://problem/35037796>

Reviewed by Dan Bernstein.

* wtf/spi/cocoa/NSMapTableSPI.h:

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

20 months ago[macOS, iOS] Add new mach lookup port for CoreMedia remote control
bfulgham@apple.com [Mon, 18 Dec 2017 21:13:41 +0000 (21:13 +0000)]
[macOS, iOS] Add new mach lookup port for CoreMedia remote control
https://bugs.webkit.org/show_bug.cgi?id=180938
<rdar://problem/35447664>

Reviewed by Eric Carlson.

Update the app sandbox to support a new XPC endpoint for CoreMedia. This endpoint exposes
existing functions through a new, more-focused interface. This will (hopefully) allow us
to remove the more generic endpoints in a future update.

* Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
* WebProcess/com.apple.WebProcess.sb.in:

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

20 months agoRebaselined fast/mediastream/MediaStream-MediaElement-setObject-null.html.
jlewis3@apple.com [Mon, 18 Dec 2017 21:13:03 +0000 (21:13 +0000)]
Rebaselined fast/mediastream/MediaStream-MediaElement-setObject-null.html.

Unreviewed test gardening

* fast/mediastream/MediaStream-MediaElement-setObject-null-expected.txt:

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

20 months agoWeb Inspector: Network Tab - waterfall graph can be mis-sized after closing detail...
commit-queue@webkit.org [Mon, 18 Dec 2017 21:06:26 +0000 (21:06 +0000)]
Web Inspector: Network Tab - waterfall graph can be mis-sized after closing detail view
https://bugs.webkit.org/show_bug.cgi?id=180903
<rdar://problem/36087903>

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2017-12-18
Reviewed by Matt Baker.

* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView.prototype._hideResourceDetailView):
Redraw waterfall column after hiding the detail view.

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

20 months agoVector index masking
fpizlo@apple.com [Mon, 18 Dec 2017 20:15:41 +0000 (20:15 +0000)]
Vector index masking
https://bugs.webkit.org/show_bug.cgi?id=180909

Reviewed by Keith Miller.

Source/JavaScriptCore:

Adopt index masking for strings.

* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compileGetCharCodeAt):
(JSC::DFG::SpeculativeJIT::compileGetByValOnString):
* ftl/FTLAbstractHeapRepository.h:
* ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::compileStringCharAt):
(JSC::FTL::DFG::LowerDFGToB3::compileStringCharCodeAt):
* jit/ThunkGenerators.cpp:
(JSC::stringCharLoad):

Source/WTF:

Adds index masking to StringImpl and Vector.

Perf:

- 0.4% slower on microbenchmarks.
- Octane totally even.
- Kraken may be 0.8% slower.
- Speedometer is 0.8% slower with p = 0.008.
- membuster is even:
    - snap2pre: 0.7% bigger w/ p = 0.26,
    - snap2post: 0.3% smaller w/ p = 0.81,
    - snap3pre: 1.2% bigger w/ p = 0.63,
    - snap3post: 0.4% smaller w/ p = 0.76.

* wtf/MathExtras.h:
(WTF::roundUpToPowerOfTwo):
(WTF::maskForSize):
* wtf/SizeLimits.cpp:
* wtf/Vector.h:
(WTF::VectorBufferBase::allocateBuffer):
(WTF::VectorBufferBase::tryAllocateBuffer):
(WTF::VectorBufferBase::reallocateBuffer):
(WTF::VectorBufferBase::deallocateBuffer):
(WTF::VectorBufferBase::releaseBuffer):
(WTF::VectorBufferBase::VectorBufferBase):
(WTF::VectorBufferBase::updateMask):
(WTF::VectorBuffer::allocateBuffer):
(WTF::VectorBuffer::tryAllocateBuffer):
(WTF::VectorBuffer::swap):
(WTF::VectorBuffer::restoreInlineBufferIfNeeded):
(WTF::Vector::at):
(WTF::Vector::at const):
* wtf/text/StringImpl.h:
(WTF::StringImpl::maskOffset):
(WTF::StringImpl::mask const):
(WTF::StringImplShape::StringImplShape):
(WTF::StringImpl::at const):
(WTF::StringImpl::tailOffset):
* wtf/text/StringView.h:
(WTF::StringView::StringView):
(WTF::StringView::operator=):
(WTF::StringView::initialize):
(WTF::StringView::clear):
(WTF::StringView::operator[] const):
* wtf/text/WTFString.h:
(WTF::String::mask const):

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

20 months agoSupport Autoscrolling in contenteditable for WK2
megan_gardner@apple.com [Mon, 18 Dec 2017 20:13:56 +0000 (20:13 +0000)]
Support Autoscrolling in contenteditable for WK2
https://bugs.webkit.org/show_bug.cgi?id=180789

Source/WebCore:

Reviewed by Simon Frasier and Wenson Hsieh..

Activate the autoscrollController to scroll to the position provided to us by the
UIProcess. Allows for scrolling in contentEditable for WebKit2

Test: fast/events/touch/ios/drag-to-autoscroll-in-single-line-editable.html

* page/AutoscrollController.cpp:
(WebCore::AutoscrollController::autoscrollTimerFired):
* page/EventHandler.cpp:
(WebCore::EventHandler::clearOrScheduleClearingLatchedStateIfNeeded):
(WebCore::EventHandler::targetPositionForSelectionAutoscroll const):
(WebCore::EventHandler::shouldUpdateAutoscroll):
(WebCore::EventHandler::effectiveMousePositionForSelectionAutoscroll const): Deleted.
* page/EventHandler.h:
* page/ios/EventHandlerIOS.mm:
(WebCore::EventHandler::startTextAutoscroll):
(WebCore::EventHandler::cancelTextAutoscroll):
(WebCore::EventHandler::targetPositionForSelectionAutoscroll const):
(WebCore::EventHandler::shouldUpdateAutoscroll):
* page/mac/EventHandlerMac.mm:
(WebCore::EventHandler::targetPositionForSelectionAutoscroll const):
(WebCore::EventHandler::effectiveMousePositionForSelectionAutoscroll const): Deleted.

Source/WebKit:

Reviewed by Simon Frasier and Wenson Hsieh.

Implements the UIKit protocol for autoscrolling and alerts the Web Process to start
(or stop) an autoscroll to the specified position. Allows for scrolling in contenteditable
in WebKit2.

* Platform/spi/ios/UIKitSPI.h:
* UIProcess/WebPageProxy.h:
* UIProcess/ios/WKContentViewInteraction.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView startAutoscroll:]):
(-[WKContentView cancelAutoscroll]):
(-[WKContentView scrollSelectionToVisible:]):
* UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::startAutoscrollAtPosition):
(WebKit::WebPageProxy::cancelAutoscroll):
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::startAutoscrollAtPosition):
(WebKit::WebPage::cancelAutoscroll):

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

20 months agoAdd support for response blob given to fetch events
commit-queue@webkit.org [Mon, 18 Dec 2017 19:53:23 +0000 (19:53 +0000)]
Add support for response blob given to fetch events
https://bugs.webkit.org/show_bug.cgi?id=180894

Patch by Youenn Fablet <youenn@apple.com> on 2017-12-18
Reviewed by Darin Adler.

LayoutTests/imported/w3c:

* web-platform-tests/service-workers/service-worker/fetch-event-after-navigation-within-page.https-expected.txt:
* web-platform-tests/service-workers/service-worker/fetch-event-referrer-policy.https-expected.txt:
* web-platform-tests/service-workers/service-worker/fetch-event.https-expected.txt:
* web-platform-tests/service-workers/service-worker/fetch-header-visibility.https-expected.txt:
* web-platform-tests/service-workers/service-worker/fetch-mixed-content-to-outscope.https-expected.txt:

Source/WebCore:

Covered by updated test expectations.

Adding support for getting a blob URL from a FormData that only contains one blob.
Adding support to create a FetcLoader from a ServiceWorkerThreadProxy

* Modules/fetch/FetchLoader.cpp:
(WebCore::FetchLoader::start):
(WebCore::FetchLoader::startLoadingBlobURL):
* Modules/fetch/FetchLoader.h:
* WebCore.xcodeproj/project.pbxproj:
* platform/network/FormData.cpp:
(WebCore::FormData::asBlobURL const):
* platform/network/FormData.h:
* workers/service/context/ServiceWorkerThreadProxy.cpp:
(WebCore::ServiceWorkerThreadProxy::createBlobLoader):
* workers/service/context/ServiceWorkerThreadProxy.h:

Source/WebKit:

In case of blob data, read it from Service Worker process and send it to WebProcess.
At some point, web process should be able to read it directly from NetworkProcess.

* WebProcess/Storage/WebSWContextManagerConnection.cpp:
(WebKit::WebSWContextManagerConnection::startFetch):
* WebProcess/Storage/WebServiceWorkerFetchTaskClient.cpp:
(WebKit::WebServiceWorkerFetchTaskClient::WebServiceWorkerFetchTaskClient):
(WebKit::WebServiceWorkerFetchTaskClient::didReceiveFormData):
(WebKit::WebServiceWorkerFetchTaskClient::didReceiveBlobChunk):
(WebKit::WebServiceWorkerFetchTaskClient::didFinishBlobLoading):
(WebKit::WebServiceWorkerFetchTaskClient::didFinish):
* WebProcess/Storage/WebServiceWorkerFetchTaskClient.h:

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

20 months ago[SVG] Detach list wrappers before resetting the base value.
zalan@apple.com [Mon, 18 Dec 2017 19:32:49 +0000 (19:32 +0000)]
[SVG] Detach list wrappers before resetting the base value.
https://bugs.webkit.org/show_bug.cgi?id=180912
<rdar://problem/36017970>

Reviewed by Simon Fraser.

Source/WebCore:

Before resetting the animation value (and destroying the assigned SVG object -SVGLengthValue in this case),
we need to check if there's an associated tear off wrapper for the said SVG object and make a copy of it.
This is currently done in the wrong order through animValDidChange.

Test: svg/animations/crash-when-animation-is-running-while-getting-value.html

* svg/SVGAnimatedTypeAnimator.h:
(WebCore::SVGAnimatedTypeAnimator::resetFromBaseValue):
* svg/properties/SVGAnimatedPropertyTearOff.h:
* svg/properties/SVGAnimatedStaticPropertyTearOff.h:
(WebCore::SVGAnimatedStaticPropertyTearOff::synchronizeWrappersIfNeeded):

LayoutTests:

* svg/animations/crash-when-animation-is-running-while-getting-value-expected.txt: Added.
* svg/animations/crash-when-animation-is-running-while-getting-value.html: Added.

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

20 months agoREGRESSION: ASSERTION FAILED: !m_importCompleted
beidson@apple.com [Mon, 18 Dec 2017 19:20:40 +0000 (19:20 +0000)]
REGRESSION: ASSERTION FAILED: !m_importCompleted
https://bugs.webkit.org/show_bug.cgi?id=180935

Unreviewed bot gardening.

No new tests (Covered by existing tests)

The ASSERT was invalid for database pushes failing to open databases like this, so skip it for that scenario.

* workers/service/server/RegistrationStore.cpp:
(WebCore::RegistrationStore::databaseFailedToOpen):
* workers/service/server/SWServer.cpp:
(WebCore::SWServer::registrationStoreDatabaseFailedToOpen):
* workers/service/server/SWServer.h:

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

20 months ago[WinCairo] Move the destination of WinCairoRequirements.zip into WebKitLibraries...
commit-queue@webkit.org [Mon, 18 Dec 2017 18:52:02 +0000 (18:52 +0000)]
[WinCairo] Move the destination of WinCairoRequirements.zip into WebKitLibraries and register it and related files as git ignore files.
https://bugs.webkit.org/show_bug.cgi?id=180875
<rdar://problem/36091434>

Patch by Fujii Hironori <Hironori.Fujii@sony.com> on 2017-12-18
Reviewed by Darin Adler.

update-webkit-wincairo-libs.py gets broken by r226002. Downloaded
WinCairoRequirements.zip can not be found to unzip because the
destination was changed.

* Scripts/update-webkit-wincairo-libs.py: Specify the correct zip path to unzip.

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

20 months agoSkip stress/call-apply-exponential-bytecode-size.js unless x86-64 or arm64
guijemont@igalia.com [Mon, 18 Dec 2017 17:48:31 +0000 (17:48 +0000)]
Skip stress/call-apply-exponential-bytecode-size.js unless x86-64 or arm64
https://bugs.webkit.org/show_bug.cgi?id=180712

Reviewed by Michael Catanzaro.

stress/call-apply-exponential-bytecode-size.js crashes if the
ExecutableAllocator's fixedExecutableMemoryPoolSize is less than 64
MB. Currently it is 64 MB or more only on x86-64 and arm64, so we
should skip the test on other platforms.

* stress/call-apply-exponential-bytecode-size.js:

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

20 months agoPlaying media elements which call "pause(); play()" will have the play promise rejected.
jer.noble@apple.com [Mon, 18 Dec 2017 17:43:50 +0000 (17:43 +0000)]
Playing media elements which call "pause(); play()" will have the play promise rejected.
https://bugs.webkit.org/show_bug.cgi?id=180781

Reviewed by Eric Carlson.

Source/WebCore:

Test: media/video-pause-play-resolve.html

When scheduling a rejection or resolution of existing play promises, move() the existing
promises into the block. This ensures that valid promises aren't added to the play promise
vector between when a rejection is scheduled and when it runs.

Drive-by fix: Don't return false from playInternal() just so the newly created promise will
get rejected. The pause() command will reject the promise, so just make sure it's added to
the m_pendingPlayPromises before calling playInternal().

Drive-by fix #2: The spec referenced by playInternal() and pauseInternal() doesn't say to
call the "Media Element Load Algorithm" (i.e., prepareForLoad()); it says to call the
"Resource Selection Algorithm" (i.e., selectMediaResource()). But fixing this bug caused
an assertion crash when the resource selection task was fired and m_player was null. This
was because the algorithm is being run at stop() time due to stop() calling pause(). The
solution to this ASSERT is to stop the m_resourceSelectionTaskQueue in stop().

* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::scheduleRejectPendingPlayPromises):
(WebCore::HTMLMediaElement::rejectPendingPlayPromises):
(WebCore::HTMLMediaElement::resolvePendingPlayPromises):
(WebCore::HTMLMediaElement::scheduleNotifyAboutPlaying):
(WebCore::HTMLMediaElement::notifyAboutPlaying):
(WebCore::HTMLMediaElement::noneSupported):
(WebCore::HTMLMediaElement::cancelPendingEventsAndCallbacks):
(WebCore::HTMLMediaElement::play):
(WebCore::HTMLMediaElement::playInternal):
(WebCore::HTMLMediaElement::pauseInternal):
(WebCore::HTMLMediaElement::stop):
* html/HTMLMediaElement.h:

LayoutTests:

* media/audio-dealloc-crash.html:
* media/video-pause-play-resolve-expected.txt: Added.
* media/video-pause-play-resolve.html: Added.

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

20 months agoAdd a test to ensure that matched text markers are not highlighted when highlight...
dbates@webkit.org [Mon, 18 Dec 2017 17:35:28 +0000 (17:35 +0000)]
Add a test to ensure that matched text markers are not highlighted when highlight is disabled
https://bugs.webkit.org/show_bug.cgi?id=180919

Reviewed by Antti Koivisto.

* fast/text/mark-matches-rendering-when-highlight-disabled-expected.html: Added.
* fast/text/mark-matches-rendering-when-highlight-disabled.html: Added.

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

20 months agoAdd SPI to query for the current and last auto fill button type and pass user data...
dbates@webkit.org [Mon, 18 Dec 2017 17:14:04 +0000 (17:14 +0000)]
Add SPI to query for the current and last auto fill button type and pass user data object to _webView:focusShouldStartInputSession:
https://bugs.webkit.org/show_bug.cgi?id=180774
<rdar://problem/36033832>

Reviewed by Tim Horton.

Source/WebCore:

Expose a way for an embedding client to query for the auto fill button type of a specific
input element as it may not be feasible for a client to track such state themselves. For
similar reasons track and expose SPI to query for the last auto fill button type for a
specific field.

Test: fast/forms/auto-fill-button/last-auto-fill-button-type.html

* html/HTMLInputElement.cpp:
(WebCore::HTMLInputElement::HTMLInputElement):
(WebCore::HTMLInputElement::setShowAutoFillButton):
Update the last auto fill button type.

* html/HTMLInputElement.h:
(WebCore::HTMLInputElement::lastAutoFillButtonType const): Added.

* testing/Internals.cpp:
(WebCore::toAutoFillButtonType):
(WebCore::toInternalsAutoFillButtonType):
(WebCore::Internals::autoFillButtonType):
(WebCore::Internals::lastAutoFillButtonType):
* testing/Internals.h:
* testing/Internals.idl:
Add functions for testing.

Source/WebKit:

Have WKFocusedElementInfo own the optional user data object associated with the focused
element as opposed to having WKFormInputSession own it. This allows the Injected Bundle's
_webView:focusShouldStartInputSession: delegate callback to make use of this user data
to determine whether focus should start a new input session.

* UIProcess/API/Cocoa/_WKFocusedElementInfo.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKFormInputSession initWithContentView:focusedElementInfo:]):
(-[WKFormInputSession userObject]):
(-[WKFocusedElementInfo initWithAssistedNodeInformation:isUserInitiated:userObject:]):
(-[WKFocusedElementInfo userObject]):
(-[WKContentView _startAssistingNode:userIsInteracting:blurPreviousNode:userObject:]):
(-[WKFormInputSession initWithContentView:focusedElementInfo:userObject:]): Deleted.
(-[WKFocusedElementInfo initWithAssistedNodeInformation:isUserInitiated:]): Deleted.
* WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandle.mm:
(toWKAutoFillButtonType):
(-[WKWebProcessPlugInNodeHandle htmlInputElementAutoFillButtonType]):
(-[WKWebProcessPlugInNodeHandle htmlInputElementLastAutoFillButtonType]):
* WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandlePrivate.h:
* WebProcess/InjectedBundle/API/c/WKBundleNodeHandle.cpp:
(toWKAutoFillButtonType):
(WKBundleNodeHandleGetHTMLInputElementAutoFillButtonType):
(WKBundleNodeHandleGetHTMLInputElementLastAutoFillButtonType):
* WebProcess/InjectedBundle/API/c/WKBundleNodeHandlePrivate.h:
* WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.cpp:
(WebKit::InjectedBundleNodeHandle::htmlInputElementAutoFillButtonType const):
(WebKit::InjectedBundleNodeHandle::htmlInputElementLastAutoFillButtonType const):
* WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.h:

LayoutTests:

Adds a test to ensure that we can query for the current auto fill button type and last auto fill button
type of an HTML input element.

* fast/forms/auto-fill-button/last-auto-fill-button-type-expected.txt: Added.
* fast/forms/auto-fill-button/last-auto-fill-button-type.html: Added.

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

20 months agoBitVector::OutOfLineBits is always reported as a leak
ap@apple.com [Mon, 18 Dec 2017 16:40:45 +0000 (16:40 +0000)]
BitVector::OutOfLineBits is always reported as a leak
https://bugs.webkit.org/show_bug.cgi?id=121662

Adding one more signature to ignore list.

* Scripts/webkitpy/port/leakdetector.py:
(LeakDetector._callstacks_to_exclude_from_leaks):

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

20 months agoRebaseline fast/dom/Window/window-lookup-precedence.html
Ms2ger@igalia.com [Mon, 18 Dec 2017 15:50:35 +0000 (15:50 +0000)]
Rebaseline fast/dom/Window/window-lookup-precedence.html
https://bugs.webkit.org/show_bug.cgi?id=163987

Unreviewed test gardening.

The platform-neutral baseline hasn't been anywhere close to matching the
output since r196392. However, the mac baseline seems to work for GTK as
well, so we now use it for all platforms.

The test is still marked as failing on iOS and Windows, but those
annotations can be removed as part of regularly scheduled gardening, if
needed.

* fast/dom/Window/window-lookup-precedence-expected.txt:
  Renamed from platform/mac/fast/dom/Window/window-lookup-precedence-expected.txt.
* platform/gtk/TestExpectations: Removed expectation.
* platform/gtk/fast/dom/Window/window-lookup-precedence-expected.txt: Removed.
* platform/mac/fast/dom/Window/window-lookup-precedence-expected.txt: Removed.

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

20 months ago[GTK][Darwin] Do not define mach exceptions for GTK+
csaavedra@igalia.com [Mon, 18 Dec 2017 15:25:58 +0000 (15:25 +0000)]
[GTK][Darwin] Do not define mach exceptions for GTK+

Rubber-stamped by Michael Catanzaro.
* wtf/Platform.h:

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

20 months agoBUILD FIX: Ignore NSWindow deprecation warnings from the mysterious future
ddkilzer@apple.com [Mon, 18 Dec 2017 13:43:15 +0000 (13:43 +0000)]
BUILD FIX: Ignore NSWindow deprecation warnings from the mysterious future

Attempt to fix the following warnings:

    AppKit instance variables are private, and the ability to access them will be removed in a future release. [-Werror,-Wdeprecated-declarations]

For the following instance variables:

    _borderView
    _contentView
    _frame
    _wFlags

* Carbon/CarbonWindowAdapter.mm:
(-[CarbonWindowAdapter initWithCarbonWindowRef:takingOwnership:disableOrdering:carbon:]):
(-[CarbonWindowAdapter reconcileToCarbonWindowBounds]):
(-[CarbonWindowAdapter _termWindowIfOwner]):
(-[CarbonWindowAdapter _windowMovedToRect:]):
(-[CarbonWindowAdapter setContentView:]):
(-[CarbonWindowAdapter _handleRootBoundsChanged]):
(-[CarbonWindowAdapter _handleContentBoundsChanged]):

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

20 months ago[FTL] NewArrayBuffer should be sinked if it is only used for spreading
utatane.tea@gmail.com [Mon, 18 Dec 2017 11:49:33 +0000 (11:49 +0000)]
[FTL] NewArrayBuffer should be sinked if it is only used for spreading
https://bugs.webkit.org/show_bug.cgi?id=179762

Reviewed by Saam Barati.

JSTests:

* stress/call-varargs-double-new-array-buffer.js: Added.
(assert):
(bar):
(foo):
* stress/call-varargs-spread-new-array-buffer.js: Added.
(assert):
(bar):
(foo):
* stress/call-varargs-spread-new-array-buffer2.js: Added.
(assert):
(bar):
(foo):
* stress/forward-varargs-double-new-array-buffer.js: Added.
(assert):
(test.baz):
(test.bar):
(test.foo):
(test):
* stress/new-array-buffer-sinking-osrexit.js: Added.
(target):
(test):
* stress/new-array-with-spread-double-new-array-buffer.js: Added.
(shouldBe):
(test):
* stress/new-array-with-spread-with-phantom-new-array-buffer.js: Added.
(shouldBe):
(target):
(test):
* stress/phantom-new-array-buffer-forward-varargs.js: Added.
(assert):
(test1.bar):
(test1.foo):
(test1):
(test2.bar):
(test2.foo):
(test3.baz):
(test3.bar):
(test3.foo):
(test4.baz):
(test4.bar):
(test4.foo):
* stress/phantom-new-array-buffer-forward-varargs2.js: Added.
(assert):
(test.baz):
(test.bar):
(test.foo):
(test):
* stress/phantom-new-array-buffer-osr-exit.js: Added.
(assert):
(baz):
(bar):
(effects):
(foo):

Source/JavaScriptCore:

This patch extends arguments elimination phase to accept NewArrayBuffer.
We can convert NewArrayBuffer to PhantomNewArrayBuffer if it is only
used by spreading nodes.

This improves SixSpeed spread.es6 by 3.5x.

    spread.es6           79.1496+-3.5665     ^     23.6204+-1.8526        ^ definitely 3.3509x faster

* dfg/DFGAbstractInterpreterInlines.h:
(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):
* dfg/DFGArgumentsEliminationPhase.cpp:
* dfg/DFGClobberize.h:
(JSC::DFG::clobberize):
* dfg/DFGDoesGC.cpp:
(JSC::DFG::doesGC):
* dfg/DFGFixupPhase.cpp:
(JSC::DFG::FixupPhase::fixupNode):
* dfg/DFGNode.h:
(JSC::DFG::Node::hasNewArrayBufferData):
(JSC::DFG::Node::hasVectorLengthHint):
(JSC::DFG::Node::hasIndexingType):
(JSC::DFG::Node::indexingType):
(JSC::DFG::Node::hasCellOperand):
(JSC::DFG::Node::isPhantomAllocation):
* dfg/DFGNodeType.h:
* dfg/DFGOSRAvailabilityAnalysisPhase.cpp:
(JSC::DFG::LocalOSRAvailabilityCalculator::executeNode):
* dfg/DFGPredictionPropagationPhase.cpp:
* dfg/DFGPromotedHeapLocation.cpp:
(WTF::printInternal):
* dfg/DFGPromotedHeapLocation.h:
* dfg/DFGSafeToExecute.h:
(JSC::DFG::safeToExecute):
* dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
* dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
* dfg/DFGValidate.cpp:
* ftl/FTLCapabilities.cpp:
(JSC::FTL::canCompile):
* ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::compileNode):
(JSC::FTL::DFG::LowerDFGToB3::compileNewArrayWithSpread):
(JSC::FTL::DFG::LowerDFGToB3::compileSpread):
(JSC::FTL::DFG::LowerDFGToB3::compileCallOrConstructVarargsSpread):
(JSC::FTL::DFG::LowerDFGToB3::compileCallOrConstructVarargs):
(JSC::FTL::DFG::LowerDFGToB3::compileForwardVarargs):
(JSC::FTL::DFG::LowerDFGToB3::compileForwardVarargsWithSpread):
* ftl/FTLOperations.cpp:
(JSC::FTL::operationPopulateObjectInOSR):
(JSC::FTL::operationMaterializeObjectInOSR):

Source/WTF:

We add RecursableLambda<>. This can take a lambda and offer a way
to call this lambda recursively without introducing additional allocations.

C++ lambda is super useful in particular when we need to capture many
variables as references. Passing many arguments to a usual function is not
a good way. But C++ lambda does not allow us to easily call itself recursively.

Our recursableLambda offers `self` function as a first argument of the
given lambda. We can call this `self` recursively.

auto targetFunction = recursableLambda([] (auto self, ...) -> resultType {
    self(...);
});

While `std::function<> func = [&func] { ... }` allows recursion, it causes
heap allocation for std::function<>. `auto func = [&func] { ... }` causes
a compile error since we need to deduce an actual type when capturing `func`.

* WTF.xcodeproj/project.pbxproj:
* wtf/RecursableLambda.h: Added.
(WTF::RecursableLambda::RecursableLambda):
(WTF::RecursableLambda::operator() const):
(WTF::recursableLambda):

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

20 months ago[WPE] Add some test expectations for fetch wpt tests
Ms2ger@igalia.com [Mon, 18 Dec 2017 09:43:07 +0000 (09:43 +0000)]
[WPE] Add some test expectations for fetch wpt tests
https://bugs.webkit.org/show_bug.cgi?id=180927

Unreviewed test gardening.

New expectations are copied from GTK; I had forgotten to add them when
enabling these tests.

* platform/wpe/imported/w3c/web-platform-tests/fetch/api/basic/request-headers.any-expected.txt: Added.
* platform/wpe/imported/w3c/web-platform-tests/fetch/api/basic/request-headers.any.worker-expected.txt: Added.
* platform/wpe/imported/w3c/web-platform-tests/fetch/api/basic/scheme-about.any-expected.txt: Added.
* platform/wpe/imported/w3c/web-platform-tests/fetch/api/basic/scheme-about.any.worker-expected.txt: Added.
* platform/wpe/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-count-expected.txt: Added.
* platform/wpe/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-count-worker-expected.txt: Added.

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

20 months ago[GTK][WPE] Add WebKitWebView::web-process-terminated signal and deprecate web-process...
carlosgc@webkit.org [Mon, 18 Dec 2017 08:55:12 +0000 (08:55 +0000)]
[GTK][WPE] Add WebKitWebView::web-process-terminated signal and deprecate web-process-crashed
https://bugs.webkit.org/show_bug.cgi?id=180862

Reviewed by Michael Catanzaro.

Source/WebKit:

Once the memory pressure web process monitor is enabled in bug #180861 the web process can be killed due to
memory limits. We need to expose the reason of the web process termination to allow applications handle the
memory limit case.

* UIProcess/API/glib/WebKitNavigationClient.cpp:
* UIProcess/API/glib/WebKitWebView.cpp:
(webkit_web_view_class_init):
(webkitWebViewWebProcessTerminated):
(webkitWebViewWebProcessCrashed): Deleted.
* UIProcess/API/glib/WebKitWebViewPrivate.h:
* UIProcess/API/gtk/WebKitWebView.h:
* UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt:
* UIProcess/API/wpe/WebKitWebView.h:

Tools:

Use WebKitWebView::web-process-terminated instead of web-process-crashed in tests. I'm not adding a test for
WEBKIT_WEB_PROCESS_EXCEEDED_MEMORY_LIMIT because we would need to allocate more than 1GB in the test and wait
30 seconds, and we don't want to do either in unit tests.

* TestWebKitAPI/Tests/WebKitGLib/TestWebExtensions.cpp:
(webProcessTerminatedCallback):
(testWebKitWebViewProcessCrashed):
(webProcessCrashedCallback): Deleted.
* TestWebKitAPI/glib/WebKitGLib/WebViewTest.cpp:
(WebViewTest::initializeWebView):
(WebViewTest::webProcessTerminated):
(WebViewTest::webProcessCrashed): Deleted.
* TestWebKitAPI/glib/WebKitGLib/WebViewTest.h:

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

20 months ago[GTK][WPE] Enable WebProcess memory monitor
carlosgc@webkit.org [Mon, 18 Dec 2017 08:25:08 +0000 (08:25 +0000)]
[GTK][WPE] Enable WebProcess memory monitor
https://bugs.webkit.org/show_bug.cgi?id=180861

Reviewed by Michael Catanzaro.

For some reason this is only enabled in mac. We want to enable it also in GTK and WPE ports. This runs every 30
seconds to release memory or even kill the process if necessary. Carlos L√≥pez has realized that in some
applications using video tags, the memory grows a lot and it's never released. It seems it's not memory leaked,
but simply large memory allocations (I guess it's gst allocating video frames) that make the heap grow. The
memory pressure calls malloc_trim that releases all that memory keeping the web process footprint stable.

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

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

20 months ago[JSC] Use IsoSpace for JSWeakMap and JSWeakSet to use finalizeUnconditionally
utatane.tea@gmail.com [Mon, 18 Dec 2017 05:24:05 +0000 (05:24 +0000)]
[JSC] Use IsoSpace for JSWeakMap and JSWeakSet to use finalizeUnconditionally
https://bugs.webkit.org/show_bug.cgi?id=180916

Reviewed by Darin Adler.

This patch drops UnconditionalFinalizer for JSWeakMap and JSWeakSetby using IsoSpace.
Since these cells always require calling finalizeUnconditionally, we do not need to
track cells by using IsoCellSet.

Currently we still have WeakReferenceHarvester in JSWeakMap and JSWeakSet. We should
avoid using a global linked-list for this in the future.

* JavaScriptCore.xcodeproj/project.pbxproj:
* heap/Heap.cpp:
(JSC::Heap::finalizeUnconditionalFinalizersInIsoSubspace):
(JSC::Heap::finalizeUnconditionalFinalizers):
* heap/Heap.h:
* runtime/VM.cpp:
(JSC::VM::VM):
* runtime/VM.h:
* runtime/WeakMapImpl.cpp:
(JSC::WeakMapImpl<WeakMapBucket>::visitChildren):
(JSC::WeakMapImpl<WeakMapBucket>::finalizeUnconditionally): Deleted.
* runtime/WeakMapImpl.h:
(JSC::WeakMapImpl::isWeakMap):
(JSC::WeakMapImpl::isWeakSet):
(JSC::WeakMapImpl::subspaceFor):
* runtime/WeakMapImplInlines.h: Added.
(JSC::WeakMapImpl<WeakMapBucket>::finalizeUnconditionally):

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

20 months agoStorage Access API: Make document.hasStorageAccess() retrieve current status from...
wilander@apple.com [Mon, 18 Dec 2017 03:44:54 +0000 (03:44 +0000)]
Storage Access API: Make document.hasStorageAccess() retrieve current status from the network process
https://bugs.webkit.org/show_bug.cgi?id=180681
<rdar://problem/35982161>

Reviewed by Alex Christensen.

Source/WebCore:

Tests: http/tests/storageAccess/has-storage-access-from-prevalent-domain-with-non-recent-user-interaction.html
       http/tests/storageAccess/has-storage-access-from-prevalent-domain-with-recent-user-interaction.html

This change makes an asynchronous request to the network process
to see if storage access has been granted for this frame, on this
page, for this domain.

* dom/Document.cpp:
(WebCore::Document::hasStorageAccess):
* page/ChromeClient.h:

Source/WebKit:

This change makes an asynchronous request to the network process
to see if storage access has been granted for this frame, on this
page, for this domain.

* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::hasStorageAccessForPrevalentDomains):
(WebKit::NetworkProcess::updateStorageAccessForPrevalentDomains):
* NetworkProcess/NetworkProcess.h:
* NetworkProcess/NetworkProcess.messages.in:
* UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::hasStorageAccessForPrevalentDomains):
* UIProcess/Network/NetworkProcessProxy.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::hasStorageAccess):
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* UIProcess/WebResourceLoadStatisticsStore.cpp:
(WebKit::WebResourceLoadStatisticsStore::WebResourceLoadStatisticsStore):
(WebKit::WebResourceLoadStatisticsStore::hasStorageAccess):
* UIProcess/WebResourceLoadStatisticsStore.h:
* UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::hasStorageAccessForPrevalentDomainsHandler):
(WebKit::WebsiteDataStore::enableResourceLoadStatisticsAndSetTestingCallback):
(WebKit::WebsiteDataStore::hasStorageAccess):
* UIProcess/WebsiteData/WebsiteDataStore.h:
* WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::hasStorageAccess):
* WebProcess/WebCoreSupport/WebChromeClient.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::hasStorageAccess):
* WebProcess/WebPage/WebPage.h:

LayoutTests:

This change makes an asynchronous request to the network process
to see if storage access has been granted for this frame, on this
page, for this domain.

* http/tests/storageAccess/has-storage-access-from-prevalent-domain-with-non-recent-user-interaction-expected.txt: Added.
* http/tests/storageAccess/has-storage-access-from-prevalent-domain-with-non-recent-user-interaction.html: Added.
* http/tests/storageAccess/has-storage-access-from-prevalent-domain-with-recent-user-interaction-expected.txt: Added.
* http/tests/storageAccess/has-storage-access-from-prevalent-domain-with-recent-user-interaction.html: Added.
* http/tests/storageAccess/resources/has-storage-access-iframe.html: Added.
* platform/mac-wk2/TestExpectations:
    New tests marked as [ Pass ].
    All http/tests/storageAccess/ tests marked [ HighSierra+ ] since
    document.hasStorageAccess() now requires code that relies on cookie
    partitioning.

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

20 months agoEnhance Ref and RefPtr to be able to work with smart pointers.
mark.lam@apple.com [Sun, 17 Dec 2017 23:22:18 +0000 (23:22 +0000)]
Enhance Ref and RefPtr to be able to work with smart pointers.
https://bugs.webkit.org/show_bug.cgi?id=180762
<rdar://problem/36027122>

Reviewed by JF Bastien and Darin Adler.

Source/WTF:

This is so we can use them with ConstExprPoisoned pointers to make PoisonedRef
and PoisonedRefPtr.

* WTF.xcodeproj/project.pbxproj:
* wtf/CMakeLists.txt:
* wtf/DumbPtrTraits.h: Added.
(WTF::DumbPtrTraits::exchange):
(WTF::DumbPtrTraits::swap):
(WTF::DumbPtrTraits::unwrap):
* wtf/Forward.h:
* wtf/Poisoned.h:
(WTF::ConstExprPoisonedPtrTraits::exchange):
(WTF::ConstExprPoisonedPtrTraits::swap):
(WTF::ConstExprPoisonedPtrTraits::unwrap):
* wtf/Ref.h:
(WTF::Ref::~Ref):
(WTF::Ref::Ref):
(WTF::Ref::ptrAllowingHashTableEmptyValue const):
(WTF::Ref::ptrAllowingHashTableEmptyValue):
(WTF::Ref::operator-> const):
(WTF::Ref::get const):
(WTF::Ref::operator T& const):
(WTF::=):
(WTF::U>::swap):
(WTF::swap):
(WTF::U>::replace):
(WTF::static_reference_cast):
(WTF::adoptRef):
(WTF::is):
(WTF::Ref<T>::swap): Deleted.
(WTF::Ref<T>::replace): Deleted.
(WTF::GetPtrHelper<Ref<T>>::getPtr): Deleted.
* wtf/RefPtr.cpp: Added.
* wtf/RefPtr.h:
(WTF::RefPtr::RefPtr):
(WTF::RefPtr::~RefPtr):
(WTF::RefPtr::get const):
(WTF::RefPtr::operator* const):
(WTF::RefPtr::operator-> const):
(WTF::U>::RefPtr):
(WTF::U>::leakRef):
(WTF::=):
(WTF::U>::swap):
(WTF::swap):
(WTF::operator==):
(WTF::operator!=):
(WTF::static_pointer_cast):
(WTF::adoptRef):
(WTF::is):
(WTF::RefPtr<T>::RefPtr): Deleted.
(WTF::RefPtr<T>::leakRef): Deleted.
(WTF::RefPtr<T>::swap): Deleted.

Tools:

* TestWebKitAPI/CMakeLists.txt:
* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WTF/ConstExprPoisoned.cpp:
(TestWebKitAPI::TEST):
* TestWebKitAPI/Tests/WTF/Poisoned.cpp:
(TestWebKitAPI::TEST):
* TestWebKitAPI/Tests/WTF/PoisonedRef.cpp: Added.
(TestWebKitAPI::TEST):
(TestWebKitAPI::passWithRef):
(TestWebKitAPI::PoisonedRefCheckingRefLogger::PoisonedRefCheckingRefLogger):
(TestWebKitAPI::PoisonedRefCheckingRefLogger::ref):
(TestWebKitAPI::PoisonedRefCheckingRefLogger::deref):
(TestWebKitAPI::DerivedPoisonedRefCheckingRefLogger::DerivedPoisonedRefCheckingRefLogger):
* TestWebKitAPI/Tests/WTF/PoisonedRefPtr.cpp: Added.
(TestWebKitAPI::TEST):
(TestWebKitAPI::f1):
(TestWebKitAPI::ConstRefCounted::create):
(TestWebKitAPI::returnConstRefCountedRef):
(TestWebKitAPI::returnRefCountedRef):
(TestWebKitAPI::PoisonedRefPtrCheckingRefLogger::PoisonedRefPtrCheckingRefLogger):
(TestWebKitAPI::loggerName):
(TestWebKitAPI::PoisonedRefPtrCheckingRefLogger::ref):
(TestWebKitAPI::PoisonedRefPtrCheckingRefLogger::deref):

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

20 months agoStrip fragment identifier from ServiceWorker's scriptURL
cdumez@apple.com [Sun, 17 Dec 2017 21:15:28 +0000 (21:15 +0000)]
Strip fragment identifier from ServiceWorker's scriptURL
https://bugs.webkit.org/show_bug.cgi?id=180887

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Rebaseline WPT test now that one more check is passing.

* web-platform-tests/service-workers/service-worker/serviceworkerobject-scripturl.https-expected.txt:

Source/WebCore:

Strip fragment identifier from ServiceWorker's scriptURL to match Firefox and Chrome.
This behavior does not appear to be specified so I filed:
- https://github.com/w3c/ServiceWorker/issues/1249

No new tests, rebaselined existing test.

* workers/service/server/SWServerWorker.cpp:
(WebCore::m_script):

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

20 months agoMove render tree updating related files under rendering/updating/
antti@apple.com [Sun, 17 Dec 2017 21:11:27 +0000 (21:11 +0000)]
Move render tree updating related files under rendering/updating/
https://bugs.webkit.org/show_bug.cgi?id=180918

Reviewed by Darin Adler.

* CMakeLists.txt:
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* rendering/RenderTreeBuilder.cpp: Removed.
* rendering/RenderTreeBuilder.h: Removed.
* rendering/updating: Added.
* rendering/updating/RenderTreeBuilder.cpp: Copied from Source/WebCore/rendering/RenderTreeBuilder.cpp.
* rendering/updating/RenderTreeBuilder.h: Copied from Source/WebCore/rendering/RenderTreeBuilder.h.
* rendering/updating/RenderTreePosition.cpp: Copied from Source/WebCore/style/RenderTreePosition.cpp.
* rendering/updating/RenderTreePosition.h: Copied from Source/WebCore/style/RenderTreePosition.h.
* rendering/updating/RenderTreeUpdater.cpp: Copied from Source/WebCore/style/RenderTreeUpdater.cpp.
* rendering/updating/RenderTreeUpdater.h: Copied from Source/WebCore/style/RenderTreeUpdater.h.
* rendering/updating/RenderTreeUpdaterFirstLetter.cpp: Copied from Source/WebCore/style/RenderTreeUpdaterFirstLetter.cpp.
* rendering/updating/RenderTreeUpdaterFirstLetter.h: Copied from Source/WebCore/style/RenderTreeUpdaterFirstLetter.h.
* rendering/updating/RenderTreeUpdaterGeneratedContent.cpp: Copied from Source/WebCore/style/RenderTreeUpdaterGeneratedContent.cpp.
* rendering/updating/RenderTreeUpdaterGeneratedContent.h: Copied from Source/WebCore/style/RenderTreeUpdaterGeneratedContent.h.
* rendering/updating/RenderTreeUpdaterListItem.cpp: Copied from Source/WebCore/style/RenderTreeUpdaterListItem.cpp.
* rendering/updating/RenderTreeUpdaterListItem.h: Copied from Source/WebCore/style/RenderTreeUpdaterListItem.h.
* rendering/updating/RenderTreeUpdaterMultiColumn.cpp: Copied from Source/WebCore/style/RenderTreeUpdaterMultiColumn.cpp.
* rendering/updating/RenderTreeUpdaterMultiColumn.h: Copied from Source/WebCore/style/RenderTreeUpdaterMultiColumn.h.
* style/RenderTreePosition.cpp: Removed.
* style/RenderTreePosition.h: Removed.
* style/RenderTreeUpdater.cpp: Removed.
* style/RenderTreeUpdater.h: Removed.
* style/RenderTreeUpdaterFirstLetter.cpp: Removed.
* style/RenderTreeUpdaterFirstLetter.h: Removed.
* style/RenderTreeUpdaterGeneratedContent.cpp: Removed.
* style/RenderTreeUpdaterGeneratedContent.h: Removed.
* style/RenderTreeUpdaterListItem.cpp: Removed.
* style/RenderTreeUpdaterListItem.h: Removed.
* style/RenderTreeUpdaterMultiColumn.cpp: Removed.
* style/RenderTreeUpdaterMultiColumn.h: Removed.

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

20 months agoHollow out stub implementation of InspectorBackendDispatcher::sendResponse().
mark.lam@apple.com [Sun, 17 Dec 2017 20:57:35 +0000 (20:57 +0000)]
Hollow out stub implementation of InspectorBackendDispatcher::sendResponse().
https://bugs.webkit.org/show_bug.cgi?id=180901
<rdar://problem/36087649>

Reviewed by Darin Adler.

We only need to keep a deprecated implementation of InspectorValues,
InspectorObjects, and InspectorBackendDispatcher::sendResponse() around so that
older versions of Safari can link against and run with a build of the latest code
in WebKit trunk. Older versions of System Safari used InspectorValues (via
WebInspector.framework) for two things:

1. Augmented JSContexts SPIs (via WebInspector.framework).
2. maybe WebDriver.

Neither of these are used when running SafariForWebKitDevelopment.  Since neither
are used, we can stub out the symbols (InspectorValues, InspectorObjects,
InspectorBackendDispatcher::sendResponse) to do nothing, and
SafariForWebKitDevelopment will still continue to launch with trunk WebKit, and
run without any observable bad behavior.

* JavaScriptCore.xcodeproj/project.pbxproj:
* SourcesCocoa.txt:
* inspector/InspectorBackendDispatcher.cpp:
* inspector/InspectorBackendDispatcher.h:
* inspector/cocoa/DeprecatedInspectorValues.cpp:
(Inspector::InspectorValue::null):
(Inspector::InspectorValue::create):
(Inspector::InspectorValue::asValue):
(Inspector::InspectorValue::asObject):
(Inspector::InspectorValue::asArray):
(Inspector::InspectorValue::parseJSON):
(Inspector::InspectorValue::toJSONString const):
(Inspector::InspectorValue::asBoolean const):
(Inspector::InspectorValue::asDouble const):
(Inspector::InspectorValue::asInteger const):
(Inspector::InspectorValue::asString const):
(Inspector::InspectorValue::writeJSON const):
(Inspector::InspectorValue::memoryCost const):
(Inspector::InspectorObjectBase::openAccessors):
(Inspector::InspectorObjectBase::memoryCost const):
(Inspector::InspectorObjectBase::getBoolean const):
(Inspector::InspectorObjectBase::getString const):
(Inspector::InspectorObjectBase::getObject const):
(Inspector::InspectorObjectBase::getArray const):
(Inspector::InspectorObjectBase::getValue const):
(Inspector::InspectorObjectBase::remove):
(Inspector::InspectorObject::create):
(Inspector::InspectorArrayBase::get const):
(Inspector::InspectorArrayBase::memoryCost const):
(Inspector::InspectorArray::create):
(Inspector::BackendDispatcher::sendResponse):
(Inspector::InspectorObjectBase::~InspectorObjectBase): Deleted.
(Inspector::InspectorObjectBase::asObject): Deleted.
(Inspector::InspectorObjectBase::writeJSON const): Deleted.
(Inspector::InspectorObjectBase::InspectorObjectBase): Deleted.
(Inspector::InspectorArrayBase::~InspectorArrayBase): Deleted.
(Inspector::InspectorArrayBase::asArray): Deleted.
(Inspector::InspectorArrayBase::writeJSON const): Deleted.
(Inspector::InspectorArrayBase::InspectorArrayBase): Deleted.
* inspector/cocoa/DeprecatedInspectorValues.h: Removed.

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

20 months ago[JSC][WebCore][CSSJIT] Remove VM reference in CSSJIT
utatane.tea@gmail.com [Sun, 17 Dec 2017 19:35:38 +0000 (19:35 +0000)]
[JSC][WebCore][CSSJIT] Remove VM reference in CSSJIT
https://bugs.webkit.org/show_bug.cgi?id=180917

Reviewed by Sam Weinig.

Source/JavaScriptCore:

We do not need to hold JIT flags in VM. We add
static VM::{canUseJIT,canUseAssembler,canUseRegExpJIT} functions.

* interpreter/AbstractPC.cpp:
(JSC::AbstractPC::AbstractPC):
* jit/JITThunks.cpp:
(JSC::JITThunks::ctiNativeCall):
(JSC::JITThunks::ctiNativeConstruct):
(JSC::JITThunks::ctiNativeTailCall):
(JSC::JITThunks::ctiNativeTailCallWithoutSavedTags):
(JSC::JITThunks::ctiInternalFunctionCall):
(JSC::JITThunks::ctiInternalFunctionConstruct):
(JSC::JITThunks::hostFunctionStub):
* llint/LLIntEntrypoint.cpp:
(JSC::LLInt::setFunctionEntrypoint):
(JSC::LLInt::setEvalEntrypoint):
(JSC::LLInt::setProgramEntrypoint):
(JSC::LLInt::setModuleProgramEntrypoint):
* llint/LLIntSlowPaths.cpp:
(JSC::LLInt::shouldJIT):
(JSC::LLInt::entryOSR):
(JSC::LLInt::LLINT_SLOW_PATH_DECL):
* runtime/RegExp.cpp:
(JSC::RegExp::compile):
(JSC::RegExp::compileMatchOnly):
* runtime/VM.cpp:
(JSC::VM::canUseAssembler):
(JSC::VM::canUseJIT):
(JSC::VM::canUseRegExpJIT):
(JSC::VM::VM):
* runtime/VM.h:
(JSC::VM::canUseJIT): Deleted.
(JSC::VM::canUseRegExpJIT): Deleted.

Source/WebCore:

Remove VM reference in CSSJIT. CSSJIT should not be
bound to a specific VM.

No behavior change.

* css/ElementRuleCollector.cpp:
(WebCore::ElementRuleCollector::ruleMatches):
* cssjit/SelectorCompiler.cpp:
(WebCore::SelectorCompiler::compileSelector):
* cssjit/SelectorCompiler.h:
* dom/SelectorQuery.cpp:
(WebCore::SelectorDataList::compileSelector):
(WebCore::SelectorDataList::execute const):
* dom/SelectorQuery.h:

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

20 months ago[JSC] Number of SlotVisitors can increase after setting up m_visitCounters
utatane.tea@gmail.com [Sun, 17 Dec 2017 10:53:51 +0000 (10:53 +0000)]
[JSC] Number of SlotVisitors can increase after setting up m_visitCounters
https://bugs.webkit.org/show_bug.cgi?id=180906

Reviewed by Filip Pizlo.

The number of SlotVisitors can increase after setting up m_visitCounters.
If it happens, our m_visitCounters misses the visit count of newly added
SlotVisitors. It accidentally decides that constraints are converged.
This leads to random assertion hits in Linux environment.

In this patch, we compare the number of SlotVisitors in didVisitSomething().
If the number of SlotVisitors is changed, we conservatively say we did
visit something.

* heap/Heap.h:
* heap/HeapInlines.h:
(JSC::Heap::numberOfSlotVisitors):
* heap/MarkingConstraintSet.h:
* heap/MarkingConstraintSolver.cpp:
(JSC::MarkingConstraintSolver::didVisitSomething const):

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

20 months agoAdd a script to automate W3c web-platform-tests pull request creations from WebKit...
commit-queue@webkit.org [Sun, 17 Dec 2017 02:54:13 +0000 (02:54 +0000)]
Add a script to automate W3c web-platform-tests pull request creations from WebKit commits
https://bugs.webkit.org/show_bug.cgi?id=169462

Patch by Youenn Fablet <youenn@apple.com> on 2017-12-16
Reviewed by Darin Adler.

Adding some git helper routines used by WPT exporter.
Copying WPT github utility files from Chromium.
Updating web.py/web_mock.py to cope with these new files.

Implementing test exporter in test_exporter.py.
This script takes a WebKit commit as input and will create a WPT commit in a local WPT clone.
It will then push the commit to a public GitHub repository identified by a username parameter.
This parameter is passed through the command line or searched through git config/environment variables.

The script can optionally create a pull request to the official WPT GitHub repository.
User must provide a GitHub token to allow the script to make the PR on behalf of the user.
In that case, a comment is added to the corresponding bugzilla if a bug ID is given or can be found from the change log,
to easily link the pull request with the bugzilla bug.

* Scripts/export-w3c-test-changes: Added.
* Scripts/webkitpy/common/checkout/scm/git.py:
(Git.reset_hard):
(Git):
(Git.am):
(Git.commit):
(Git.format_patch):
(Git.request_pull):
(Git.remote):
(Git.push):
(Git.checkout_new_branch):
* Scripts/webkitpy/common/net/web.py:
(Web.request): Copied from Chromium.
* Scripts/webkitpy/common/net/web_mock.py: Copied needed code from Chromium.
* Scripts/webkitpy/w3c/test_exporter.py: Added.
(TestExporter):
(TestExporter.__init__):
(TestExporter._init_repository):
(TestExporter.download_and_commit_patch):
(TestExporter.clean):
(TestExporter.create_branch_with_patch):
(TestExporter.push_to_public_repository):
(TestExporter.make_pull_request):
(TestExporter.delete_local_branch):
(TestExporter.create_git_patch):
(TestExporter.create_upload_remote_if_needed):
(TestExporter.do_export):
(parse_args):
(configure_logging):
(configure_logging.LogHandler):
(configure_logging.LogHandler.format):
(main):
* Scripts/webkitpy/w3c/test_exporter_unittest.py: Added.
(TestExporterTest):
(TestExporterTest.MockBugzilla):
(TestExporterTest.MockBugzilla.__init__):
(TestExporterTest.MockBugzilla.fetch_bug_dictionary):
(TestExporterTest.MockBugzilla.post_comment_to_bug):
(TestExporterTest.MockGit):
(TestExporterTest.MockGit.clone):
(TestExporterTest.MockGit.__init__):
(TestExporterTest.MockGit.fetch):
(TestExporterTest.MockGit.checkout):
(TestExporterTest.MockGit.reset_hard):
(TestExporterTest.MockGit.push):
(TestExporterTest.MockGit.format_patch):
(TestExporterTest.MockGit.delete_branch):
(TestExporterTest.MockGit.checkout_new_branch):
(TestExporterTest.MockGit.am):
(TestExporterTest.MockGit.commit):
(TestExporterTest.MockGit.remote):
(TestExporterTest.test_export):
* Scripts/webkitpy/w3c/common.py: Copied from chromium.
* Scripts/webkitpy/w3c/wpt_github.py: Copied from chromium.
* Scripts/webkitpy/w3c/wpt_github_mock.py: Copied from chromium.
* Scripts/webkitpy/w3c/wpt_github_unittest.py: Copied from chromium.

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

20 months agoWKWebView has no equivalent of -[WebView setAlwaysShowVerticalScroller:]
mitz@apple.com [Sat, 16 Dec 2017 20:57:11 +0000 (20:57 +0000)]
WKWebView has no equivalent of -[WebView setAlwaysShowVerticalScroller:]
https://bugs.webkit.org/show_bug.cgi?id=180613
<rdar://problem/35946124>

Reviewed by Geoff Garen.

Source/WebCore:

Test: TestWebKitAPI/Tests/WebKitCocoa/WKWebViewAlwaysShowsScroller.mm

* platform/ScrollView.h: Exported setScrollbarModes.

Source/WebKit:

Added _alwaysShowsHorizontalScroller and _alwaysShowsVerticalScroller properties to
WKWebView.

* Shared/WebPageCreationParameters.cpp:
(WebKit::WebPageCreationParameters::encode const): Encode new alwaysShowsHorizontalScroller
  and alwaysShowsVerticalScroller parameters.
(WebKit::WebPageCreationParameters::decode): Decode new parameters.

* Shared/WebPageCreationParameters.h: Added new alwaysShowsHorizontalScroller and
  alwaysShowsVerticalScroller boolean parameters.

* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _alwaysShowsHorizontalScroller]): New accessor that calls through to the
  WebPageProxy.
(-[WKWebView _setAlwaysShowsHorizontalScroller:]): Ditto.
(-[WKWebView _alwaysShowsVerticalScroller]): Ditto.
(-[WKWebView _setAlwaysShowsVerticalScroller:]): Ditto.

* UIProcess/API/Cocoa/WKWebViewPrivate.h: Declare new properties.

* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::setAlwaysShowsHorizontalScroller): Update member variable and send
  a message to the page.
(WebKit::WebPageProxy::setAlwaysShowsVerticalScroller): Ditto.
(WebKit::WebPageProxy::creationParameters): Initialize new parameters from the new member
  variables.

* UIProcess/WebPageProxy.h:
(WebKit::WebPageProxy::alwaysShowsHorizontalScroller const): New getter.
(WebKit::WebPageProxy::alwaysShowsVerticalScroller const): Ditto.

* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::transitionToCommittedForNewPage): Factor
  alwaysShowsHorizontalScroller and alwaysShowsVerticalScroller into the initial scroller
  modes and scroller locks when creating the FrameView.

* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::WebPage): Initialize new m_alwaysShowsHorizontalScroller and
  m_alwaysShowsVerticalScroller member variables from the corresponding new creation
  parameters.
(WebKit::WebPage::setAlwaysShowsHorizontalScroller): Update the member variable and set
  new scrollbar mode on the frame view if needed.
(WebKit::WebPage::setAlwaysShowsVerticalScroller): Ditto.

* WebProcess/WebPage/WebPage.h:
(WebKit::WebPage::alwaysShowsHorizontalScroller const): New getter.
(WebKit::WebPage::alwaysShowsVerticalScroller const): Ditto.

* WebProcess/WebPage/WebPage.messages.in: Added new messages.

Source/WebKitLegacy/mac:

* WebKit.mac.exp: Removed WebCoreScrollbarAlwaysOn, which is no longer being used by any
  clients.
* WebView/WebDynamicScrollBarsView.h: Ditto.
* WebView/WebDynamicScrollBarsView.mm: Ditto.

Tools:

* MiniBrowser/mac/MainMenu.xib: Added Always Show {Horizontal,Vertical} Scroller menu items
  to the View menu.

* MiniBrowser/mac/WK1BrowserWindowController.m:
(-[WK1BrowserWindowController validateMenuItem:]): Set the state of the new menu items based
  on -alwaysShow{Horizontal,Vertical}Scroller.
(-[WK1BrowserWindowController toggleAlwaysShowsHorizontalScroller:]): Toggle the value.
(-[WK1BrowserWindowController toggleAlwaysShowsVerticalScroller:]): Ditto.

* MiniBrowser/mac/WK2BrowserWindowController.m:
(-[WK2BrowserWindowController validateMenuItem:]): Set the state of the new menu items based
  on the new property.
(-[WK2BrowserWindowController toggleAlwaysShowsHorizontalScroller:]): Toggle the property.
(-[WK2BrowserWindowController toggleAlwaysShowsVerticalScroller:]): Ditto.

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WebKitCocoa/WKWebViewAlwaysShowsScroller.mm: Added.
(TEST):

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

20 months agoIntroduce RenderTreeBuilder
antti@apple.com [Sat, 16 Dec 2017 19:07:55 +0000 (19:07 +0000)]
Introduce RenderTreeBuilder
https://bugs.webkit.org/show_bug.cgi?id=180817

Reviewed by Zalan Bujtas.

RenderTreeBuilder is responsible of building the render tree, including construction of various anonymous
renderers. Renderer subtype specific render tree construction code will eventually move there.

This patch adds RenderTreeBuilder class and passes it as a parameter for all addChild implementations.
Future patches can then mechanically move the building code from renderers to RenderTreeBuilder.

It also moves one addChild implementation (RenderRuby::addChild -> RenderTreeBuilder::rubyRunInsertChild)
to RenderTreeBuilder as a test.

* WebCore.xcodeproj/project.pbxproj:
* rendering/RenderBlock.cpp:
(WebCore::RenderBlock::addChildToContinuation):
(WebCore::RenderBlock::addChild):
(WebCore::RenderBlock::addChildIgnoringContinuation):
* rendering/RenderBlock.h:
* rendering/RenderBlockFlow.cpp:
(WebCore::RenderBlockFlow::addChild):
* rendering/RenderBlockFlow.h:
* rendering/RenderBoxModelObject.cpp:
(WebCore::RenderBoxModelObject::moveChildTo):
* rendering/RenderButton.cpp:
(WebCore::RenderButton::addChild):
(WebCore::RenderButton::setText):
* rendering/RenderButton.h:
* rendering/RenderElement.cpp:
(WebCore::RenderElement::addChild):
* rendering/RenderElement.h:
(WebCore::RenderElement::addChildIgnoringContinuation):
* rendering/RenderFullScreen.cpp:
(WebCore::RenderFullScreen::wrapNewRenderer):
(WebCore::RenderFullScreen::wrapExistingRenderer):
(WebCore::RenderFullScreen::unwrapRenderer):
(WebCore::RenderFullScreen::createPlaceholder):
* rendering/RenderGrid.cpp:
(WebCore::RenderGrid::addChild):
* rendering/RenderGrid.h:
* rendering/RenderInline.cpp:
(WebCore::RenderInline::addChild):
(WebCore::RenderInline::addChildIgnoringContinuation):
(WebCore::RenderInline::splitInlines):
(WebCore::RenderInline::splitFlow):
(WebCore::RenderInline::addChildToContinuation):
(WebCore::RenderInline::childBecameNonInline):
* rendering/RenderInline.h:
* rendering/RenderMenuList.cpp:
(WebCore::RenderMenuList::createInnerBlock):
(RenderMenuList::addChild):
(RenderMenuList::setText):
* rendering/RenderMenuList.h:
* rendering/RenderMultiColumnFlow.cpp:
(WebCore::RenderMultiColumnFlow::processPossibleSpannerDescendant):
* rendering/RenderQuote.cpp:
(WebCore::RenderQuote::updateTextRenderer):
(WebCore::RenderQuote::updateRenderer):
* rendering/RenderQuote.h:
* rendering/RenderRuby.cpp:
(WebCore::RenderRubyAsInline::addChild):
(WebCore::RenderRubyAsBlock::addChild):
* rendering/RenderRuby.h:
* rendering/RenderRubyBase.h:
* rendering/RenderRubyRun.cpp:
(WebCore::RenderRubyRun::rubyBaseSafe):
(WebCore::RenderRubyRun::addChild): Deleted.
* rendering/RenderRubyRun.h:
* rendering/RenderTable.cpp:
(WebCore::RenderTable::addChild):
* rendering/RenderTable.h:
* rendering/RenderTableRow.cpp:
(WebCore::RenderTableRow::addChild):
* rendering/RenderTableRow.h:
* rendering/RenderTableSection.cpp:
(WebCore::RenderTableSection::addChild):
* rendering/RenderTableSection.h:
* rendering/RenderTreeBuilder.cpp: Added.
(WebCore::RenderTreeBuilder::RenderTreeBuilder):
(WebCore::RenderTreeBuilder::~RenderTreeBuilder):
(WebCore::RenderTreeBuilder::insertChild):
(WebCore::RenderTreeBuilder::rubyRunInsertChild):
* rendering/RenderTreeBuilder.h: Added.
(WebCore::RenderTreeBuilder::current):
* rendering/TextAutoSizing.cpp:
(WebCore::TextAutoSizingValue::adjustTextNodeSizes):
* rendering/mathml/RenderMathMLFenced.cpp:
(WebCore::RenderMathMLFenced::updateFromElement):
(WebCore::RenderMathMLFenced::makeFences):
(WebCore::RenderMathMLFenced::addChild):
* rendering/mathml/RenderMathMLFenced.h:
* rendering/svg/RenderSVGContainer.cpp:
(WebCore::RenderSVGContainer::addChild):
* rendering/svg/RenderSVGContainer.h:
* rendering/svg/RenderSVGInline.cpp:
(WebCore::RenderSVGInline::addChild):
* rendering/svg/RenderSVGInline.h:
* rendering/svg/RenderSVGRoot.cpp:
(WebCore::RenderSVGRoot::addChild):
* rendering/svg/RenderSVGRoot.h:
* rendering/svg/RenderSVGText.cpp:
(WebCore::RenderSVGText::addChild):
* rendering/svg/RenderSVGText.h:
* style/RenderTreePosition.cpp:
(WebCore::RenderTreePosition::insert): Deleted.
* style/RenderTreePosition.h:
(WebCore::RenderTreePosition::RenderTreePosition):
(WebCore::RenderTreePosition::nextSibling const):
(WebCore::RenderTreePosition::canInsert const): Deleted.
* style/RenderTreeUpdater.cpp:
(WebCore::RenderTreeUpdater::updateAfterDescendants):
(WebCore::RenderTreeUpdater::createRenderer):
(WebCore::RenderTreeUpdater::createTextRenderer):
(WebCore::RenderTreeUpdater::updateTextRenderer):
(WebCore::createTextRenderer): Deleted.
* style/RenderTreeUpdater.h:
* style/RenderTreeUpdaterFirstLetter.cpp:
(WebCore::updateFirstLetterStyle):
(WebCore::createFirstLetterRenderer):
* style/RenderTreeUpdaterGeneratedContent.cpp:
(WebCore::RenderTreeUpdater::GeneratedContent::updateQuotesUpTo):
(WebCore::createContentRenderers):
(WebCore::RenderTreeUpdater::GeneratedContent::updatePseudoElement):
* style/RenderTreeUpdaterListItem.cpp:
(WebCore::RenderTreeUpdater::ListItem::updateMarker):
* style/RenderTreeUpdaterListItem.h:
* style/RenderTreeUpdaterMultiColumn.cpp:
(WebCore::RenderTreeUpdater::MultiColumn::createFragmentedFlow):
(WebCore::RenderTreeUpdater::MultiColumn::destroyFragmentedFlow):

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

20 months agoEnable wpt fetch tests on WPE.
Ms2ger@igalia.com [Sat, 16 Dec 2017 19:05:08 +0000 (19:05 +0000)]
Enable wpt fetch tests on WPE.
https://bugs.webkit.org/show_bug.cgi?id=180905

Unreviewed test gardening.

New expectations are copied from GTK.

* TestExpectations: mark test as flaky on all platforms.
* platform/wpe/TestExpectations:
* platform/wpe/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-method-expected.txt: Added.
* platform/wpe/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-method-worker-expected.txt: Added.
* platform/wpe/imported/w3c/web-platform-tests/fetch/http-cache/cc-request-expected.txt: Added.

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

20 months ago[Readable Streams API] Fix filling of descriptor from queue
romain.bellessort@crf.canon.fr [Sat, 16 Dec 2017 18:59:29 +0000 (18:59 +0000)]
[Readable Streams API] Fix filling of descriptor from queue
https://bugs.webkit.org/show_bug.cgi?id=172717

Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

Updated test expectations.

* web-platform-tests/streams/readable-byte-streams/detached-buffers-expected.txt: Updated.
* web-platform-tests/streams/readable-byte-streams/detached-buffers.dedicatedworker-expected.txt: Updated.
* web-platform-tests/streams/readable-byte-streams/general-expected.txt: Updated.
* web-platform-tests/streams/readable-byte-streams/general.dedicatedworker-expected.txt: Updated.

Source/WebCore:

Fixed the filling of descriptor from queue (step 10.d at [1]). When first implemented,
spec comprised a bug and code was not reachable. Spec has now been fixed and code can
now be reached.

[1] https://streams.spec.whatwg.org/#readable-byte-stream-controller-fill-pull-into-descriptor-from-queue

No new tests (covered by WPT tests, whose expectations have been updated).

* Modules/streams/ReadableByteStreamInternals.js:
(readableByteStreamControllerFillDescriptorFromQueue): Updated.

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

20 months agoSkip SharedWorker and NavigationPreload service worker tests
commit-queue@webkit.org [Sat, 16 Dec 2017 18:57:21 +0000 (18:57 +0000)]
Skip SharedWorker and NavigationPreload service worker tests
https://bugs.webkit.org/show_bug.cgi?id=180902

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

LayoutTests/imported/w3c:

* web-platform-tests/service-workers/service-worker/navigation-preload/broken-chunked-encoding.https-expected.txt:
* web-platform-tests/service-workers/service-worker/navigation-preload/chunked-encoding.https-expected.txt:
* web-platform-tests/service-workers/service-worker/navigation-preload/empty-preload-response-body.https-expected.txt:
* web-platform-tests/service-workers/service-worker/navigation-preload/get-state.https-expected.txt:
* web-platform-tests/service-workers/service-worker/navigation-preload/redirect.https-expected.txt:
* web-platform-tests/service-workers/service-worker/navigation-preload/request-headers.https-expected.txt:
* web-platform-tests/service-workers/service-worker/navigation-preload/resource-timing.https-expected.txt:
* web-platform-tests/service-workers/service-worker/shared-worker-controlled.https-expected.txt:

LayoutTests:

* TestExpectations: Skip unsupported tests.

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

20 months agoImplement getting ServiceWorker registrations for the WKWebsiteDataStore API
beidson@apple.com [Sat, 16 Dec 2017 18:54:04 +0000 (18:54 +0000)]
Implement getting ServiceWorker registrations for the WKWebsiteDataStore API
https://bugs.webkit.org/show_bug.cgi?id=180886

Reviewed by Chris Dumez.

Source/WebCore:

No new tests (API test coming soon).

* workers/service/server/SWServer.cpp:
(WebCore::SWServer::registrationStoreImportComplete):
(WebCore::SWServer::SWServer):
(WebCore::SWServer::getOriginsWithRegistrations):
(WebCore::SWServer::performGetOriginsWithRegistrationsCallbacks):
* workers/service/server/SWServer.h:

Source/WebKit:

* StorageProcess/StorageProcess.cpp:
(WebKit::StorageProcess::fetchWebsiteData):

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

20 months ago[WinCairo] Move the destination of WinCairoRequirements.zip into WebKitLibraries...
commit-queue@webkit.org [Sat, 16 Dec 2017 18:33:31 +0000 (18:33 +0000)]
[WinCairo] Move the destination of WinCairoRequirements.zip into WebKitLibraries and register it and related files as git ignore files.
https://bugs.webkit.org/show_bug.cgi?id=180875

Patch by Basuke Suzuki <Basuke.Suzuki@sony.com> on 2017-12-16
Reviewed by Alex Christensen.

.:

Add files extracted from WinCairoRequirements.zip
* .gitignore:

Tools:

Bug fix. Specify the download destination correctly.

* Scripts/update-webkit-wincairo-libs.py:

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

20 months ago[CredentialManagement] Import Credential Management Web Platform Tests
jiewen_tan@apple.com [Sat, 16 Dec 2017 18:31:42 +0000 (18:31 +0000)]
[CredentialManagement] Import Credential Management Web Platform Tests
https://bugs.webkit.org/show_bug.cgi?id=172015
<rdar://problem/36083577>

Reviewed by Youenn Fablet.

* resources/import-expectations.json:
* web-platform-tests/credential-management/credentialscontainer-create-basics.https-expected.txt: Added.
* web-platform-tests/credential-management/credentialscontainer-create-basics.https.html: Added.
* web-platform-tests/credential-management/idl.https-expected.txt: Added.
* web-platform-tests/credential-management/idl.https.html: Added.
* web-platform-tests/credential-management/w3c-import.log: Added.

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

20 months agoIndexing should only be computed when the new structure has an indexing header.
keith_miller@apple.com [Sat, 16 Dec 2017 18:20:04 +0000 (18:20 +0000)]
Indexing should only be computed when the new structure has an indexing header.
https://bugs.webkit.org/show_bug.cgi?id=180895

Reviewed by Saam Barati.

If we don't have an indexing header then we point the butterfly
sizeof(IndexingHeader) past the end of the butterfly. This makes
the computation of the offset simpler since it doesn't depend on
the indexing headeriness of the butterfly.

* jit/JITOperations.cpp:
* runtime/JSObject.cpp:
(JSC::JSObject::createInitialUndecided):
(JSC::JSObject::createInitialInt32):
(JSC::JSObject::createInitialDouble):
(JSC::JSObject::createInitialContiguous):
(JSC::JSObject::createArrayStorage):
(JSC::JSObject::convertUndecidedToArrayStorage):
(JSC::JSObject::convertInt32ToArrayStorage):
(JSC::JSObject::convertDoubleToArrayStorage):
* runtime/JSObject.h:
(JSC::JSObject::setButterfly):
(JSC::JSObject::nukeStructureAndSetButterfly):
* runtime/JSObjectInlines.h:
(JSC::JSObject::prepareToPutDirectWithoutTransition):
(JSC::JSObject::putDirectInternal):

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

20 months agoPlugin processes are repeatedly spun up to do nothing
bfulgham@apple.com [Sat, 16 Dec 2017 17:57:09 +0000 (17:57 +0000)]
Plugin processes are repeatedly spun up to do nothing
https://bugs.webkit.org/show_bug.cgi?id=180885
<rdar://problem/36082564>

Reviewed by Geoffrey Garen.

Source/WebKit:

Tested by TestWebKitAPI.

* UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::removeData): Don't ask plugins to remove data when no websites are
passed to the function.

Tools:

* TestWebKitAPI/Tests/WebKitCocoa/WKHTTPCookieStore.mm:
(runTestWithWebsiteDataStore): Check that deleting website data did not
trigger any plugin processes to start up.

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

20 months agoRemove unnecessary boolean result of start() functions
utatane.tea@gmail.com [Sat, 16 Dec 2017 17:54:39 +0000 (17:54 +0000)]
Remove unnecessary boolean result of start() functions
https://bugs.webkit.org/show_bug.cgi?id=180856

Reviewed by Darin Adler.

Source/WebCore:

No behavior change.

* Modules/webaudio/AsyncAudioDecoder.cpp:
(WebCore::AsyncAudioDecoder::~AsyncAudioDecoder):
* Modules/webdatabase/DatabaseContext.cpp:
(WebCore::DatabaseContext::databaseThread):
* Modules/webdatabase/DatabaseThread.cpp:
(WebCore::DatabaseThread::start):
Now `Thread::create` always succeeds (if it fails, WebKit crashes).
DatabaseThread::start() now always returns true. So, we do not need
to return bool.

* Modules/webdatabase/DatabaseThread.h:
* platform/network/curl/CurlDownload.cpp:
(WebCore::CurlDownload::start):
* platform/network/curl/CurlDownload.h:
* platform/network/curl/ResourceHandleCurl.cpp:
(WebCore::ResourceHandle::start):
* platform/network/curl/ResourceHandleCurlDelegate.cpp:
(WebCore::ResourceHandleCurlDelegate::start):
* platform/network/curl/ResourceHandleCurlDelegate.h:

Source/WebKitLegacy/win:

It always returns true.

* WebDownloadCurl.cpp:
(WebDownload::start):

Source/WTF:

CrossThreadTaskHandler's Thread is just released without calling
either `waitForCompletion` or `detach`. It means that this resource
of the thread is not released.

* benchmarks/ConditionSpeedTest.cpp:
* wtf/CrossThreadTaskHandler.cpp:
(WTF::CrossThreadTaskHandler::CrossThreadTaskHandler):
* wtf/CrossThreadTaskHandler.h:

Tools:

* TestWebKitAPI/Tests/WTF/ParkingLot.cpp:

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

20 months agoAdd optimization when updating a SW registration results in the exact same script
cdumez@apple.com [Sat, 16 Dec 2017 16:37:11 +0000 (16:37 +0000)]
Add optimization when updating a SW registration results in the exact same script
https://bugs.webkit.org/show_bug.cgi?id=180891

Reviewed by Geoffrey Garen.

LayoutTests/imported/w3c:

Rebaseline WPT test now that all checks are passing.

* web-platform-tests/service-workers/service-worker/registration-updateviacache.https-expected.txt:

Source/WebCore:

Add optimization when updating a SW registration results in the exact same script:
- https://w3c.github.io/ServiceWorker/#update-algorithm (step 8)

No new tests, rebaselined existing test.

* workers/service/server/SWServerJobQueue.cpp:
(WebCore::SWServerJobQueue::scriptFetchFinished):

LayoutTests:

* TestExpectations:
Skip bad WPT test that is timing out for us and Firefox. I'll file an upstream PR
to fix it.

* http/tests/workers/service/controller-change.html:
* http/tests/workers/service/registration-updateViaCache-all-importScripts.html:
* http/tests/workers/service/registration-updateViaCache-all.html:
* http/tests/workers/service/registration-updateViaCache-imports-importScripts.html:
* http/tests/workers/service/registration-updateViaCache-none-importScripts.html:
* http/tests/workers/service/registration-updateViaCache-none.html:
* http/tests/workers/service/resources/self_registration_update-worker.js: Removed.
* http/tests/workers/service/resources/self_registration_update-worker.php: Added.
* http/tests/workers/service/resources/service-worker-fetch-worker.js:
* http/tests/workers/service/resources/updating-fetch-worker.php: Added.
* http/tests/workers/service/resources/updating-worker.php: Added.
* http/tests/workers/service/self_registration_update.html:
* http/tests/workers/service/service-worker-registration-gc-event.html:
Undate WebKit-specific tests to reflect behavior change.

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

20 months agoService worker script fetch request should set the Service-Worker header
commit-queue@webkit.org [Sat, 16 Dec 2017 09:26:39 +0000 (09:26 +0000)]
Service worker script fetch request should set the Service-Worker header
https://bugs.webkit.org/show_bug.cgi?id=180889

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

Source/WebCore:

Test: http/wpt/service-workers/check-service-worker-header.https.html

Update WorkerScriptLoader to take a request instead of an URL.
Updates Worker implementation and use it in ServiceWorkerJob to set the missing request header.

* workers/Worker.cpp:
(WebCore::Worker::create):
* workers/WorkerScriptLoader.cpp:
(WebCore::WorkerScriptLoader::loadAsynchronously):
* workers/WorkerScriptLoader.h:
* workers/service/ServiceWorkerJob.cpp:
(WebCore::ServiceWorkerJob::fetchScriptWithContext):

LayoutTests:

* http/wpt/service-workers/check-service-worker-header.https-expected.txt: Added.
* http/wpt/service-workers/check-service-worker-header.https.html: Added.
* http/wpt/service-workers/check-service-worker-header.py: Added.

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

20 months agoWK1 webrtc/datachannel bufferedAmount tests might time out
commit-queue@webkit.org [Sat, 16 Dec 2017 07:22:28 +0000 (07:22 +0000)]
WK1 webrtc/datachannel bufferedAmount tests might time out
https://bugs.webkit.org/show_bug.cgi?id=180882

Unreviewed.

Patch by Youenn Fablet <youenn@apple.com> on 2017-12-15

* platform/mac-wk1/TestExpectations: marking tests as flaky.

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

20 months agoUnreviewed, rolling out r225969.
ryanhaddad@apple.com [Sat, 16 Dec 2017 02:05:42 +0000 (02:05 +0000)]
Unreviewed, rolling out r225969.

This change introduced LayoutTest crashes.

Reverted changeset:

"Introduce RenderTreeBuilder"
https://bugs.webkit.org/show_bug.cgi?id=180817
https://trac.webkit.org/changeset/225969

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

20 months agoDrop service workers stubs tests
cdumez@apple.com [Sat, 16 Dec 2017 00:51:53 +0000 (00:51 +0000)]
Drop service workers stubs tests
https://bugs.webkit.org/show_bug.cgi?id=180893

Reviewed by Youenn Fablet.

These tests either do not test anything or are bad and fails in other browsers too.
There is little point in running them.

* resources/import-expectations.json:
* web-platform-tests/service-workers/stub-3.1-service-worker-obj-expected.txt: Removed.
* web-platform-tests/service-workers/stub-3.1-service-worker-obj.html: Removed.
* web-platform-tests/service-workers/stub-3.1.1-service-worker-scope-expected.txt: Removed.
* web-platform-tests/service-workers/stub-3.1.1-service-worker-scope.html: Removed.
* web-platform-tests/service-workers/stub-3.1.2-service-worker-url-expected.txt: Removed.
* web-platform-tests/service-workers/stub-3.1.2-service-worker-url.html: Removed.
* web-platform-tests/service-workers/stub-3.1.3-service-worker-state-expected.txt: Removed.
* web-platform-tests/service-workers/stub-3.1.3-service-worker-state.html: Removed.
* web-platform-tests/service-workers/stub-3.1.4-service-worker-on-state-change-expected.txt: Removed.
* web-platform-tests/service-workers/stub-3.1.4-service-worker-on-state-change.html: Removed.
* web-platform-tests/service-workers/stub-3.2-navigator-service-worker-expected.txt: Removed.
* web-platform-tests/service-workers/stub-3.2-navigator-service-worker.html: Removed.
* web-platform-tests/service-workers/stub-3.2.1-navigator-service-worker-installing-expected.txt: Removed.
* web-platform-tests/service-workers/stub-3.2.1-navigator-service-worker-installing.html: Removed.
* web-platform-tests/service-workers/stub-3.2.10-navigator-service-worker-oncontrollerchange-expected.txt: Removed.
* web-platform-tests/service-workers/stub-3.2.10-navigator-service-worker-oncontrollerchange.html: Removed.
* web-platform-tests/service-workers/stub-3.2.11-navigator-service-worker-onreloadpage-expected.txt: Removed.
* web-platform-tests/service-workers/stub-3.2.11-navigator-service-worker-onreloadpage.html: Removed.
* web-platform-tests/service-workers/stub-3.2.12-navigator-service-worker-onerror-expected.txt: Removed.
* web-platform-tests/service-workers/stub-3.2.12-navigator-service-worker-onerror.html: Removed.
* web-platform-tests/service-workers/stub-3.2.2-navigator-service-worker-waiting-expected.txt: Removed.
* web-platform-tests/service-workers/stub-3.2.2-navigator-service-worker-waiting.html: Removed.
* web-platform-tests/service-workers/stub-3.2.3-navigator-service-worker-active-expected.txt: Removed.
* web-platform-tests/service-workers/stub-3.2.3-navigator-service-worker-active.html: Removed.
* web-platform-tests/service-workers/stub-3.2.4-navigator-service-worker-controller-expected.txt: Removed.
* web-platform-tests/service-workers/stub-3.2.4-navigator-service-worker-controller.html: Removed.
* web-platform-tests/service-workers/stub-3.2.5-navigator-service-worker-ready-expected.txt: Removed.
* web-platform-tests/service-workers/stub-3.2.5-navigator-service-worker-ready.html: Removed.
* web-platform-tests/service-workers/stub-3.2.6-navigator-service-worker-getAll-expected.txt: Removed.
* web-platform-tests/service-workers/stub-3.2.6-navigator-service-worker-getAll.html: Removed.
* web-platform-tests/service-workers/stub-3.2.7-navigator-service-worker-register-expected.txt: Removed.
* web-platform-tests/service-workers/stub-3.2.7-navigator-service-worker-register.html: Removed.
* web-platform-tests/service-workers/stub-3.2.8-navigator-service-worker-unregister-expected.txt: Removed.
* web-platform-tests/service-workers/stub-3.2.8-navigator-service-worker-unregister.html: Removed.
* web-platform-tests/service-workers/stub-3.2.9-navigator-service-worker-onupdatefound-expected.txt: Removed.
* web-platform-tests/service-workers/stub-3.2.9-navigator-service-worker-onupdatefound.html: Removed.
* web-platform-tests/service-workers/stub-4.1-service-worker-global-scope-expected.txt: Removed.
* web-platform-tests/service-workers/stub-4.1-service-worker-global-scope.html: Removed.
* web-platform-tests/service-workers/stub-4.1.1-service-worker-global-scope-caches-expected.txt: Removed.
* web-platform-tests/service-workers/stub-4.1.1-service-worker-global-scope-caches.html: Removed.
* web-platform-tests/service-workers/stub-4.1.2-service-worker-global-scope-clients-expected.txt: Removed.
* web-platform-tests/service-workers/stub-4.1.2-service-worker-global-scope-clients.html: Removed.
* web-platform-tests/service-workers/stub-4.1.3-service-worker-global-scope-scope-expected.txt: Removed.
* web-platform-tests/service-workers/stub-4.1.3-service-worker-global-scope-scope.html: Removed.
* web-platform-tests/service-workers/stub-4.1.4-service-worker-global-scope-fetch-expected.txt: Removed.
* web-platform-tests/service-workers/stub-4.1.4-service-worker-global-scope-fetch.html: Removed.
* web-platform-tests/service-workers/stub-4.1.5-service-worker-global-scope-update-expected.txt: Removed.
* web-platform-tests/service-workers/stub-4.1.5-service-worker-global-scope-update.html: Removed.
* web-platform-tests/service-workers/stub-4.1.6-service-worker-global-scope-unregister-expected.txt: Removed.
* web-platform-tests/service-workers/stub-4.1.6-service-worker-global-scope-unregister.html: Removed.
* web-platform-tests/service-workers/stub-4.1.7-service-worker-global-scope-onmessage-expected.txt: Removed.
* web-platform-tests/service-workers/stub-4.1.7-service-worker-global-scope-onmessage.html: Removed.
* web-platform-tests/service-workers/stub-4.2-client-expected.txt: Removed.
* web-platform-tests/service-workers/stub-4.2-client.html: Removed.
* web-platform-tests/service-workers/stub-4.3-service-worker-clients-expected.txt: Removed.
* web-platform-tests/service-workers/stub-4.3-service-worker-clients.html: Removed.
* web-platform-tests/service-workers/stub-4.3.1-get-serviced-method-expected.txt: Removed.
* web-platform-tests/service-workers/stub-4.3.1-get-serviced-method.html: Removed.
* web-platform-tests/service-workers/stub-4.3.2-reloadall-method-expected.txt: Removed.
* web-platform-tests/service-workers/stub-4.3.2-reloadall-method.html: Removed.
* web-platform-tests/service-workers/stub-4.4-request-objects-expected.txt: Removed.
* web-platform-tests/service-workers/stub-4.4-request-objects.html: Removed.
* web-platform-tests/service-workers/stub-4.5-response-objects-expected.txt: Removed.
* web-platform-tests/service-workers/stub-4.5-response-objects.html: Removed.
* web-platform-tests/service-workers/stub-4.5.2-response-expected.txt: Removed.
* web-platform-tests/service-workers/stub-4.5.2-response.html: Removed.
* web-platform-tests/service-workers/stub-4.5.4-opaque-response-expected.txt: Removed.
* web-platform-tests/service-workers/stub-4.5.4-opaque-response.html: Removed.
* web-platform-tests/service-workers/stub-4.6-cache-objects-expected.txt: Removed.
* web-platform-tests/service-workers/stub-4.6-cache-objects.html: Removed.
* web-platform-tests/service-workers/stub-4.6.1-cache-lifetimes-expected.txt: Removed.
* web-platform-tests/service-workers/stub-4.6.1-cache-lifetimes.html: Removed.
* web-platform-tests/service-workers/stub-4.6.2-cache-expected.txt: Removed.
* web-platform-tests/service-workers/stub-4.6.2-cache.html: Removed.
* web-platform-tests/service-workers/stub-4.6.3-cache-storage-expected.txt: Removed.
* web-platform-tests/service-workers/stub-4.6.3-cache-storage.html: Removed.
* web-platform-tests/service-workers/stub-4.7.1-install-phase-event-expected.txt: Removed.
* web-platform-tests/service-workers/stub-4.7.1-install-phase-event.html: Removed.
* web-platform-tests/service-workers/stub-4.7.1.1-wait-until-method-expected.txt: Removed.
* web-platform-tests/service-workers/stub-4.7.1.1-wait-until-method.html: Removed.
* web-platform-tests/service-workers/stub-4.7.2-install-event-expected.txt: Removed.
* web-platform-tests/service-workers/stub-4.7.2-install-event.html: Removed.
* web-platform-tests/service-workers/stub-4.7.2.1-install-event-section-expected.txt: Removed.
* web-platform-tests/service-workers/stub-4.7.2.1-install-event-section.html: Removed.
* web-platform-tests/service-workers/stub-4.7.2.2-replace-method-expected.txt: Removed.
* web-platform-tests/service-workers/stub-4.7.2.2-replace-method.html: Removed.
* web-platform-tests/service-workers/stub-4.7.3-activate-event-expected.txt: Removed.
* web-platform-tests/service-workers/stub-4.7.3-activate-event.html: Removed.
* web-platform-tests/service-workers/stub-4.7.4.1-fetch-event-section-expected.txt: Removed.
* web-platform-tests/service-workers/stub-4.7.4.1-fetch-event-section.html: Removed.
* web-platform-tests/service-workers/stub-4.7.4.2-respond-with-method-expected.txt: Removed.
* web-platform-tests/service-workers/stub-4.7.4.2-respond-with-method.html: Removed.
* web-platform-tests/service-workers/stub-4.7.4.3-default-method-expected.txt: Removed.
* web-platform-tests/service-workers/stub-4.7.4.3-default-method.html: Removed.
* web-platform-tests/service-workers/stub-4.7.4.4-is-reload-attribute-expected.txt: Removed.
* web-platform-tests/service-workers/stub-4.7.4.4-is-reload-attribute.html: Removed.
* web-platform-tests/service-workers/stub-5.1-origin-relativity-expected.txt: Removed.
* web-platform-tests/service-workers/stub-5.1-origin-relativity.html: Removed.
* web-platform-tests/service-workers/stub-5.2-cross-origin-resources-expected.txt: Removed.
* web-platform-tests/service-workers/stub-5.2-cross-origin-resources.html: Removed.

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

20 months agoSupport updating a service worker registration's updateViaCache flag
cdumez@apple.com [Sat, 16 Dec 2017 00:48:04 +0000 (00:48 +0000)]
Support updating a service worker registration's updateViaCache flag
https://bugs.webkit.org/show_bug.cgi?id=180888

Reviewed by Brady Eidson.

LayoutTests/imported/w3c:

Rebaseline WPT test now that more checks are passing.

* web-platform-tests/service-workers/service-worker/registration-updateviacache.https-expected.txt:

Source/WebCore:

Support updating a service worker registration's updateViaCache flag to match other browsers:
- https://github.com/w3c/ServiceWorker/issues/1189

No new tests, rebaselined existing test.

* workers/service/SWClientConnection.cpp:
(WebCore::SWClientConnection::setRegistrationUpdateViaCache):
* workers/service/SWClientConnection.h:
* workers/service/ServiceWorkerRegistration.cpp:
(WebCore::ServiceWorkerRegistration::setUpdateViaCache):
* workers/service/ServiceWorkerRegistration.h:
* workers/service/server/SWServer.h:
* workers/service/server/SWServerJobQueue.cpp:
(WebCore::SWServerJobQueue::runRegisterJob):
* workers/service/server/SWServerRegistration.cpp:
(WebCore::SWServerRegistration::setUpdateViaCache):
* workers/service/server/SWServerRegistration.h:

Source/WebKit:

* StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
(WebKit::WebSWServerConnection::setRegistrationUpdateViaCache):
* StorageProcess/ServiceWorker/WebSWServerConnection.h:
* WebProcess/Storage/WebSWClientConnection.messages.in:

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

20 months agoUnreviewed, adding myself to contributors.json
david_quesada@apple.com [Sat, 16 Dec 2017 00:32:22 +0000 (00:32 +0000)]
Unreviewed, adding myself to contributors.json

* Scripts/webkitpy/common/config/contributors.json:

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

20 months agoUnreviewed, rolling out r225941.
ryanhaddad@apple.com [Sat, 16 Dec 2017 00:00:09 +0000 (00:00 +0000)]
Unreviewed, rolling out r225941.

This change introduced LayoutTest crashes and assertion
failures.

Reverted changeset:

"Web Inspector: replace HTMLCanvasElement with
CanvasRenderingContext for instrumentation logic"
https://bugs.webkit.org/show_bug.cgi?id=180770
https://trac.webkit.org/changeset/225941

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

20 months agoIntroduce SPI _WKWebsitePolicies.websiteDataStore
achristensen@apple.com [Fri, 15 Dec 2017 23:14:33 +0000 (23:14 +0000)]
Introduce SPI _WKWebsitePolicies.websiteDataStore
https://bugs.webkit.org/show_bug.cgi?id=180880
<rdar://problem/35535328>

Reviewed by Andy Estes.

Source/WebKit:

The SPI doesn't do anything yet, but it already has some restrictions and tests!
WKWebView._updateWebsitePolicies can't be used to update a WKWebsiteDataStore.  Only during navigation.
Even during navigation, we are only supporting the default and ephemeral data stores right now.
This functionality won't be supported in the C API.  This is enforced with RELEASE_ASSERTs.
If we change our minds, we can change them and add restrictions similar to the ObjC restrictions.

* Shared/WebsitePoliciesData.cpp:
(WebKit::WebsitePoliciesData::encode const):
(WebKit::WebsitePoliciesData::decode):
* Shared/WebsitePoliciesData.h:
* UIProcess/API/APIWebsitePolicies.cpp:
(API::WebsitePolicies::WebsitePolicies):
(API::WebsitePolicies::setWebsiteDataStore):
(API::WebsitePolicies::data):
* UIProcess/API/APIWebsitePolicies.h:
* UIProcess/API/C/WKFramePolicyListener.cpp:
(WKFramePolicyListenerUseWithPolicies):
* UIProcess/API/C/WKPage.cpp:
(WKPageUpdateWebsitePolicies):
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _updateWebsitePolicies:]):
* UIProcess/API/Cocoa/_WKWebsitePolicies.h:
* UIProcess/API/Cocoa/_WKWebsitePolicies.mm:
(-[_WKWebsitePolicies websiteDataStore]):
(-[_WKWebsitePolicies setWebsiteDataStore:]):
* UIProcess/Cocoa/NavigationState.mm:
(WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction):

Tools:

* TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm:
(-[WebsitePoliciesWebsiteDataStoreDelegate _webView:decidePolicyForNavigationAction:decisionHandler:]):
(-[WebsitePoliciesWebsiteDataStoreDelegate webView:startURLSchemeTask:]):
(-[WebsitePoliciesWebsiteDataStoreDelegate webView:stopURLSchemeTask:]):
(TEST):

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

20 months agoFix GTK build.
achristensen@apple.com [Fri, 15 Dec 2017 22:28:25 +0000 (22:28 +0000)]
Fix GTK build.

* UIProcess/API/glib/WebKitPolicyDecision.cpp:
(webkit_policy_decision_use):

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

20 months agoAdd a release assert that Timer::m_wasDeleted is false in setNextFireTime
rniwa@webkit.org [Fri, 15 Dec 2017 21:32:07 +0000 (21:32 +0000)]
Add a release assert that Timer::m_wasDeleted is false in setNextFireTime
https://bugs.webkit.org/show_bug.cgi?id=180860
<rdar://problem/36066500>

Reviewed by David Kilzer.

Turn an exist debug-only assertion into a release assertion to help diagnose a crash
which appears to be caused by a freed timer getting scheduled back into the timer heap.

* platform/Timer.cpp:
(WebCore::TimerBase::~TimerBase):
(WebCore::TimerBase::setNextFireTime):
* platform/Timer.h:

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

20 months agoAvoid waking plugin process up unnecessarily
bfulgham@apple.com [Fri, 15 Dec 2017 21:27:24 +0000 (21:27 +0000)]
Avoid waking plugin process up unnecessarily
https://bugs.webkit.org/show_bug.cgi?id=180819
<rdar://problem/36051548>

Reviewed by Geoffrey Garen.

WebKit purges data from origins marked as prevalent on an hourly interval. This includes waking up plugins
and removing relevant data stored in those plugins. This causes multiple plugin processes to be spawned,
even though the user is not interacting with any plugins.

Instead, we should delay removing data from plugins until they are loaded due to the user interacting with
a website using a plugin.

Make the following changes:
1. When looking for plugin data related to prevalent sites, only examine plugin data if the relevant plugin
   is already running.
2. When the state of the active plugins changes, trigger a data removal check.

* Shared/WebsiteData/WebsiteDataFetchOption.h: Add a new option 'DoNotCreateProcesses'
* UIProcess/Plugins/PluginProcessManager.cpp:
(WebKit::PluginProcessManager::getPluginProcessConnection): Pass new argument 'Launch', since we always
want to launch processes in this case.
(WebKit::PluginProcessManager::fetchWebsiteData): Pass a new parameter 'processAccessType' so that the
caller can specify if they only want to examine already-active plugins, or if they want to spawn new
processes. Call the completion handler if we need to exit early when no process exists.
(WebKit::PluginProcessManager::deleteWebsiteData): Always launch new processes.
(WebKit::PluginProcessManager::deleteWebsiteDataForHostNames): Ditto.
(WebKit::PluginProcessManager::getOrCreatePluginProcess): Accept new parameter indicating if new processes
shoudl be launched. Also switch to C++ style loops.
* UIProcess/Plugins/PluginProcessManager.h:
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::deleteWebsiteDataForTopPrivatelyControlledDomainsInAllPersistentDataStores): Use the
new 'DoNotCreatePrcesses' access type.
* UIProcess/WebResourceLoadStatisticsStore.cpp:
(WebKit::WebResourceLoadStatisticsStore::removeDataRecords): Update the active plugin count when we
remove data.
(WebKit::WebResourceLoadStatisticsStore::shouldRemoveDataRecords const): Return true if the active plugin
process count changed since the last time data was removed.
* UIProcess/WebResourceLoadStatisticsStore.h:
* UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::fetchDataAndApply): Check fetch option for new 'DoNotCreateProcesses' flag,
and tell the PluginProcessManager which mode we are using.

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

20 months agoElements animated on-screen are missing sometimes
simon.fraser@apple.com [Fri, 15 Dec 2017 21:18:59 +0000 (21:18 +0000)]
Elements animated on-screen are missing sometimes
https://bugs.webkit.org/show_bug.cgi?id=180773
rdar://problem/34923438

Reviewed by Zalan Bujtas.

After r225310 it was still possible for elements to be missing backing store when brought
on-screen via an animation. This occurred if a child element was outside the bounds of the
element being animated.

Fix by making sure that GraphicsLayer's "animatedExtent" took composited child layers into account.

As for r225310, no test because this is timing sensitive and hard to reliably make a test for.

* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::calculateClipRects const):
* rendering/RenderLayer.h:
* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::updateGeometry):

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

20 months agoMake sure only WebsiteDataStores with valid SessionIDs register themselves.
beidson@apple.com [Fri, 15 Dec 2017 21:15:17 +0000 (21:15 +0000)]
Make sure only WebsiteDataStores with valid SessionIDs register themselves.
https://bugs.webkit.org/show_bug.cgi?id=180869

Reviewed by Chris Dumez.

Some code in WebsiteDataStore assumes an invalid SessionID is a possibility,
but we didn't account for that in the map added in r225935.

Seems prudent to make sure we're not doing hash table operations with invalid keys.

* UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::WebsiteDataStore):
(WebKit::WebsiteDataStore::~WebsiteDataStore):
(WebKit::WebsiteDataStore::maybeRegisterWithSessionIDMap):
(WebKit::WebsiteDataStore::existingNonDefaultDataStoreForSessionID):
* UIProcess/WebsiteData/WebsiteDataStore.h:

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

20 months agoRotating when zoomed in with fingers down can result in a broken tab
simon.fraser@apple.com [Fri, 15 Dec 2017 21:12:43 +0000 (21:12 +0000)]
Rotating when zoomed in with fingers down can result in a broken tab
https://bugs.webkit.org/show_bug.cgi?id=180859
rdar://problem/34532817

Reviewed by Tim Horton.

If you zoom in fully, then, with two fingers down, rotate the iPhone and rotate back,
then the tab can get into a broken state where the WKContentView has a non-zero position
which may push it entirely off-screen. The tab never recovers.

This is caused by a bug in UIKit (rdar://problem/36065495) so work around it by always
re-setting the position of the content view after zooming. We initialize contentView.frame
from self.bounds, so setting the position (via "center") to the bounds origin should always be safe.

* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView scrollViewDidEndZooming:withView:atScale:]):

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

20 months agoAPI test WebKit.WebsiteDataStoreCustomPaths is failing
beidson@apple.com [Fri, 15 Dec 2017 21:11:52 +0000 (21:11 +0000)]
API test WebKit.WebsiteDataStoreCustomPaths is failing
https://bugs.webkit.org/show_bug.cgi?id=180870

Reviewed by Chris Dumez.

To avoid unintentionally creating the default WebsiteDataStore we need to pass around the
relevant SessionID to more places.

* UIProcess/ServiceWorkerProcessProxy.cpp:
(WebKit::ServiceWorkerProcessProxy::start):
* UIProcess/ServiceWorkerProcessProxy.h:

* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::getStorageProcessConnection):
(WebKit::WebProcessPool::establishWorkerContextConnectionToStorageProcess):
* UIProcess/WebProcessPool.h:

* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::getStorageProcessConnection):
* UIProcess/WebProcessProxy.h:
* UIProcess/WebProcessProxy.messages.in:

* WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp:
(WebKit::WebIDBConnectionToServer::messageSenderConnection):

* WebProcess/Databases/WebDatabaseProvider.cpp:
(WebKit::WebDatabaseProvider::idbConnectionToServerForSession):

* WebProcess/Storage/WebServiceWorkerProvider.cpp:
(WebKit::WebServiceWorkerProvider::serviceWorkerConnectionForSession):
(WebKit::WebServiceWorkerProvider::handleFetch):

* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::ensureWebToStorageProcessConnection):
(WebKit::WebProcess::establishWorkerContextConnectionToStorageProcess):
* WebProcess/WebProcess.h:
* WebProcess/WebProcess.messages.in:

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

20 months agoWeb Inspector: Canvas Tab should be turned on by default
webkit@devinrousso.com [Fri, 15 Dec 2017 20:35:27 +0000 (20:35 +0000)]
Web Inspector: Canvas Tab should be turned on by default
https://bugs.webkit.org/show_bug.cgi?id=180594
<rdar://problem/35938917>

Reviewed by Brian Burg.

* UserInterface/Base/Main.js:
(WI.loaded):

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

20 months agoUnreviewed, rebaseline Service Workers flaky tests.
cdumez@apple.com [Fri, 15 Dec 2017 20:12:36 +0000 (20:12 +0000)]
Unreviewed, rebaseline Service Workers flaky tests.

LayoutTests/imported/w3c:

* web-platform-tests/service-workers/cache-storage/serviceworker/cache-match.https-expected.txt:
* web-platform-tests/service-workers/service-worker/about-blank-replacement.https-expected.txt:
* web-platform-tests/service-workers/service-worker/fetch-canvas-tainting.https-expected.txt:
* web-platform-tests/service-workers/service-worker/fetch-cors-xhr.https-expected.txt:
* web-platform-tests/service-workers/service-worker/fetch-request-xhr.https-expected.txt:
* web-platform-tests/service-workers/service-worker/registration-service-worker-attributes.https-expected.txt:
* web-platform-tests/service-workers/service-worker/registration-updateviacache.https-expected.txt:

LayoutTests:

* TestExpectations:

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

20 months agoMove WebKit::WebsitePolicies to API::WebsitePolicies
achristensen@apple.com [Fri, 15 Dec 2017 19:58:02 +0000 (19:58 +0000)]
Move WebKit::WebsitePolicies to API::WebsitePolicies
https://bugs.webkit.org/show_bug.cgi?id=180873

Reviewed by Joseph Pecoraro.

It's just an API data object now.  I need it to be in the API namespace so we can
give it references to other API namespace objects without weird layering violations.

* CMakeLists.txt:
* Shared/WebsiteAutoplayPolicy.h: Added.
* Shared/WebsiteAutoplayQuirk.h: Added.
* Shared/WebsitePoliciesData.cpp:
(WebKit::WebsitePoliciesData::fromWebsitePolicies): Deleted.
* Shared/WebsitePoliciesData.h:
* UIProcess/API/APIWebsitePolicies.cpp: Added.
(API::WebsitePolicies::~WebsitePolicies):
(API::WebsitePolicies::data):
* UIProcess/API/APIWebsitePolicies.h: Copied from Source/WebKit/UIProcess/WebsitePolicies.h.
* UIProcess/API/C/WKAPICast.h:
* UIProcess/API/C/WKFramePolicyListener.cpp:
(WKFramePolicyListenerUseWithPolicies):
* UIProcess/API/C/WKPage.cpp:
(WKPageUpdateWebsitePolicies):
* UIProcess/API/C/WKWebsitePolicies.cpp:
(WKWebsitePoliciesGetTypeID):
(WKWebsitePoliciesCreate):
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _updateWebsitePolicies:]):
* UIProcess/API/Cocoa/_WKWebsitePolicies.h:
* UIProcess/API/Cocoa/_WKWebsitePolicies.mm:
(-[_WKWebsitePolicies dealloc]):
(-[_WKWebsitePolicies init]):
* UIProcess/API/Cocoa/_WKWebsitePoliciesInternal.h:
(WebKit::wrapper): Deleted.
* UIProcess/Cocoa/NavigationState.mm:
(WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction):
* UIProcess/WebFormSubmissionListenerProxy.cpp:
* UIProcess/WebsitePolicies.h: Removed.
* WebKit.xcodeproj/project.pbxproj:
* WebProcess/WebPage/WebPage.cpp:

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

20 months agoimported/w3c/web-platform-tests/service-workers/service-worker/update.https.html...
cdumez@apple.com [Fri, 15 Dec 2017 19:57:02 +0000 (19:57 +0000)]
imported/w3c/web-platform-tests/service-workers/service-worker/update.https.html is sometimes crashing in Debug builds
https://bugs.webkit.org/show_bug.cgi?id=180867

Reviewed by Brady Eidson.

Fix assertion to make sure the worker is terminating if it is already in m_runningOrTerminatingWorkers.

* workers/service/server/SWServer.cpp:
(WebCore::SWServer::runServiceWorker):

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

20 months agoService Worker Registration promise is sometimes not rejected when the script load...
cdumez@apple.com [Fri, 15 Dec 2017 19:36:51 +0000 (19:36 +0000)]
Service Worker Registration promise is sometimes not rejected when the script load fails
https://bugs.webkit.org/show_bug.cgi?id=180849

Reviewed by Brady Eidson.

LayoutTests/imported/w3c:

Rebaseline tests that are now passing.

* web-platform-tests/service-workers/service-worker/register-same-scope-different-script-url.https-expected.txt:
* web-platform-tests/service-workers/service-worker/registration-iframe.https-expected.txt:
* web-platform-tests/service-workers/service-worker/registration-script.https-expected.txt:
* web-platform-tests/service-workers/service-worker/registration-security-error.https-expected.txt:
* web-platform-tests/service-workers/service-worker/unregister-then-register-new-script.https-expected.txt:

Source/WebCore:

Service Worker Registration promise is sometimes not rejected when the script load fails.
This was caused by the ServiceWorkerJob sometimes passing a null ResourceError to the
StorageProcess, even though the load failed.

No new tests, rebaselined exisiting tests.

* workers/WorkerScriptLoader.cpp:
(WebCore::WorkerScriptLoader::notifyError):
* workers/service/ServiceWorkerJob.cpp:
(WebCore::ServiceWorkerJob::notifyFinished):

LayoutTests:

Fix WebKit-specific tests that had invalid URLs for workers. We failed to notice this
before because we were wrongly resolving the registration promise.

* http/tests/workers/service/basic-register-expected.txt:
* http/tests/workers/service/basic-unregister-then-register-again-no-reuse.html:
* http/tests/workers/service/registration-clear-redundant-worker.html:
* http/tests/workers/service/resources/basic-register.js:
* http/tests/workers/service/service-worker-gc-event.html:
* http/tests/workers/service/service-worker-registration-gc-event.html:

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

20 months agolibwebrtc installs an extra copy of encoder_vcp.h under /usr/local/include
mitz@apple.com [Fri, 15 Dec 2017 15:39:27 +0000 (15:39 +0000)]
libwebrtc installs an extra copy of encoder_vcp.h under /usr/local/include
https://bugs.webkit.org/show_bug.cgi?id=180858

Reviewed by Anders Carlsson.

* libwebrtc.xcodeproj/project.pbxproj: Demoted the header from Private to Project. A script build phase
  copies it to the correct location under /usr/local/include/webrtc.

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

20 months agoWebRTC Stats should not be console logged from a background thread
commit-queue@webkit.org [Fri, 15 Dec 2017 15:38:29 +0000 (15:38 +0000)]
WebRTC Stats should not be console logged from a background thread
https://bugs.webkit.org/show_bug.cgi?id=180845

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

Ensuring console log are done in the main thread.

* Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:
(WebCore::LibWebRTCMediaEndpoint::OnStatsDelivered):

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

20 months ago[GTK] Add proxy option to Minibrowser
nael.ouedraogo@crf.canon.fr [Fri, 15 Dec 2017 14:27:25 +0000 (14:27 +0000)]
[GTK] Add proxy option to Minibrowser
https://bugs.webkit.org/show_bug.cgi?id=180750

Reviewed by Michael Catanzaro.

Add command line option to set proxy settings in GTK minibrowser.

* MiniBrowser/gtk/main.c:
(main):

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

20 months agoUnreviewed, 32bit JSEmpty is not nullptr + CellTag
utatane.tea@gmail.com [Fri, 15 Dec 2017 13:58:59 +0000 (13:58 +0000)]
Unreviewed, 32bit JSEmpty is not nullptr + CellTag
https://bugs.webkit.org/show_bug.cgi?id=180804

Add 32bit path for WeakMapGet.

* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compileWeakMapGet):

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

20 months agoWebDriver: add support for accept/dismiss and notify unhandled prompt behavior
carlosgc@webkit.org [Fri, 15 Dec 2017 13:14:36 +0000 (13:14 +0000)]
WebDriver: add support for accept/dismiss and notify unhandled prompt behavior
https://bugs.webkit.org/show_bug.cgi?id=179999

Reviewed by Carlos Alberto Lopez Perez.

They work as accept and dismiss, but unexpected alert open is still reported.

18. User Prompts
https://w3c.github.io/webdriver/webdriver-spec.html#dfn-known-prompt-handling-approaches-table

* Capabilities.h: Add DismissAndNotify and AcceptAndNotify to UnhandledPromptBehavior enum.
* Session.cpp:
(WebDriver::Session::handleUnexpectedAlertOpen): Move default implementation to dismissAndNotifyAlert and
acceptAndNotifyAlert and use dismissAndNotifyAlert by default.
(WebDriver::Session::dismissAndNotifyAlert):
(WebDriver::Session::acceptAndNotifyAlert):
* Session.h:
* WebDriverService.cpp:
(WebDriver::deserializeUnhandledPromptBehavior): Handle accept/dismiss and notify.
(WebDriver::WebDriverService::newSession): Ditto.

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

20 months agoIntroduce RenderTreeBuilder
antti@apple.com [Fri, 15 Dec 2017 12:35:03 +0000 (12:35 +0000)]
Introduce RenderTreeBuilder
https://bugs.webkit.org/show_bug.cgi?id=180817

Reviewed by Zalan Bujtas.

RenderTreeBuilder is responsible of building the render tree, including construction of various anonymous
renderers. Renderer subtype specific render tree construction code will eventually move there.

This patch adds RenderTreeBuilder class and passes it as a parameter for all addChild implementations.
Future patches can then mechanically move the building code from renderers to RenderTreeBuilder.

It also moves one addChild implementation (RenderRuby::addChild -> RenderTreeBuilder::rubyRunInsertChild)
to RenderTreeBuilder as a test.

* WebCore.xcodeproj/project.pbxproj:
* rendering/RenderBlock.cpp:
(WebCore::RenderBlock::addChildToContinuation):
(WebCore::RenderBlock::addChild):
(WebCore::RenderBlock::addChildIgnoringContinuation):
* rendering/RenderBlock.h:
* rendering/RenderBlockFlow.cpp:
(WebCore::RenderBlockFlow::addChild):
* rendering/RenderBlockFlow.h:
* rendering/RenderBoxModelObject.cpp:
(WebCore::RenderBoxModelObject::moveChildTo):
* rendering/RenderButton.cpp:
(WebCore::RenderButton::addChild):
(WebCore::RenderButton::setText):
* rendering/RenderButton.h:
* rendering/RenderElement.cpp:
(WebCore::RenderElement::addChild):
* rendering/RenderElement.h:
(WebCore::RenderElement::addChildIgnoringContinuation):
* rendering/RenderFullScreen.cpp:
(WebCore::RenderFullScreen::wrapNewRenderer):
(WebCore::RenderFullScreen::wrapExistingRenderer):
(WebCore::RenderFullScreen::unwrapRenderer):
(WebCore::RenderFullScreen::createPlaceholder):
* rendering/RenderGrid.cpp:
(WebCore::RenderGrid::addChild):
* rendering/RenderGrid.h:
* rendering/RenderInline.cpp:
(WebCore::RenderInline::addChild):
(WebCore::RenderInline::addChildIgnoringContinuation):
(WebCore::RenderInline::splitInlines):
(WebCore::RenderInline::splitFlow):
(WebCore::RenderInline::addChildToContinuation):
(WebCore::RenderInline::childBecameNonInline):
* rendering/RenderInline.h:
* rendering/RenderMenuList.cpp:
(WebCore::RenderMenuList::createInnerBlock):
(RenderMenuList::addChild):
(RenderMenuList::setText):
* rendering/RenderMenuList.h:
* rendering/RenderMultiColumnFlow.cpp:
(WebCore::RenderMultiColumnFlow::processPossibleSpannerDescendant):
* rendering/RenderQuote.cpp:
(WebCore::RenderQuote::updateTextRenderer):
(WebCore::RenderQuote::updateRenderer):
* rendering/RenderQuote.h:
* rendering/RenderRuby.cpp:
(WebCore::RenderRubyAsInline::addChild):
(WebCore::RenderRubyAsBlock::addChild):
* rendering/RenderRuby.h:
* rendering/RenderRubyBase.h:
* rendering/RenderRubyRun.cpp:
(WebCore::RenderRubyRun::rubyBaseSafe):
(WebCore::RenderRubyRun::addChild): Deleted.
* rendering/RenderRubyRun.h:
* rendering/RenderTable.cpp:
(WebCore::RenderTable::addChild):
* rendering/RenderTable.h:
* rendering/RenderTableRow.cpp:
(WebCore::RenderTableRow::addChild):
* rendering/RenderTableRow.h:
* rendering/RenderTableSection.cpp:
(WebCore::RenderTableSection::addChild):
* rendering/RenderTableSection.h:
* rendering/RenderTreeBuilder.cpp: Added.
(WebCore::RenderTreeBuilder::RenderTreeBuilder):
(WebCore::RenderTreeBuilder::~RenderTreeBuilder):
(WebCore::RenderTreeBuilder::insertChild):
(WebCore::RenderTreeBuilder::rubyRunInsertChild):
* rendering/RenderTreeBuilder.h: Added.
(WebCore::RenderTreeBuilder::current):
* rendering/TextAutoSizing.cpp:
(WebCore::TextAutoSizingValue::adjustTextNodeSizes):
* rendering/mathml/RenderMathMLFenced.cpp:
(WebCore::RenderMathMLFenced::updateFromElement):
(WebCore::RenderMathMLFenced::makeFences):
(WebCore::RenderMathMLFenced::addChild):
* rendering/mathml/RenderMathMLFenced.h:
* rendering/svg/RenderSVGContainer.cpp:
(WebCore::RenderSVGContainer::addChild):
* rendering/svg/RenderSVGContainer.h:
* rendering/svg/RenderSVGInline.cpp:
(WebCore::RenderSVGInline::addChild):
* rendering/svg/RenderSVGInline.h:
* rendering/svg/RenderSVGRoot.cpp:
(WebCore::RenderSVGRoot::addChild):
* rendering/svg/RenderSVGRoot.h:
* rendering/svg/RenderSVGText.cpp:
(WebCore::RenderSVGText::addChild):
* rendering/svg/RenderSVGText.h:
* style/RenderTreePosition.cpp:
(WebCore::RenderTreePosition::insert): Deleted.
* style/RenderTreePosition.h:
(WebCore::RenderTreePosition::RenderTreePosition):
(WebCore::RenderTreePosition::nextSibling const):
(WebCore::RenderTreePosition::canInsert const): Deleted.
* style/RenderTreeUpdater.cpp:
(WebCore::RenderTreeUpdater::updateAfterDescendants):
(WebCore::RenderTreeUpdater::createRenderer):
(WebCore::RenderTreeUpdater::createTextRenderer):
(WebCore::RenderTreeUpdater::updateTextRenderer):
(WebCore::createTextRenderer): Deleted.
* style/RenderTreeUpdater.h:
* style/RenderTreeUpdaterFirstLetter.cpp:
(WebCore::updateFirstLetterStyle):
(WebCore::createFirstLetterRenderer):
* style/RenderTreeUpdaterGeneratedContent.cpp:
(WebCore::RenderTreeUpdater::GeneratedContent::updateQuotesUpTo):
(WebCore::createContentRenderers):
(WebCore::RenderTreeUpdater::GeneratedContent::updatePseudoElement):
* style/RenderTreeUpdaterListItem.cpp:
(WebCore::RenderTreeUpdater::ListItem::updateMarker):
* style/RenderTreeUpdaterListItem.h:
* style/RenderTreeUpdaterMultiColumn.cpp:
(WebCore::RenderTreeUpdater::MultiColumn::createFragmentedFlow):
(WebCore::RenderTreeUpdater::MultiColumn::destroyFragmentedFlow):

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

20 months agoWeb Inspector: Styles Redesign: clicking above selector should prepend new property
nvasilyev@apple.com [Fri, 15 Dec 2017 08:28:45 +0000 (08:28 +0000)]
Web Inspector: Styles Redesign: clicking above selector should prepend new property
https://bugs.webkit.org/show_bug.cgi?id=180628
<rdar://problem/35954570>

Reviewed by Devin Rousso.

* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css:
(.spreadsheet-style-declaration-editor .property):
(.spreadsheet-style-declaration-editor .property-toggle):
(.spreadsheet-style-declaration-editor .property.has-warning .warning):
* UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.css:
(.spreadsheet-css-declaration):
(.spreadsheet-css-declaration :matches(.header, .header-media)):
(.spreadsheet-css-declaration :matches(.header, .header-media):first-child):
When header-media element is present, header element should have padding-top set to 0.

(.spreadsheet-css-declaration .header.editing-selector .origin):
(.spreadsheet-css-declaration .close-brace):

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

20 months agoUnreviewed GTK+ build fix after r225954.
zandobersek@gmail.com [Fri, 15 Dec 2017 07:53:25 +0000 (07:53 +0000)]
Unreviewed GTK+ build fix after r225954.

* UIProcess/API/glib/WebKitPolicyDecision.cpp:
Explicitly include the WebsitePoliciesData.h header, avoiding build
failures due to incomplete WebsitePoliciesData type.

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

20 months agoThe CleanUp after LICM is erroneously removing a Check
sbarati@apple.com [Fri, 15 Dec 2017 06:20:07 +0000 (06:20 +0000)]
The CleanUp after LICM is erroneously removing a Check
https://bugs.webkit.org/show_bug.cgi?id=180852
<rdar://problem/36063494>

Reviewed by Filip Pizlo.

JSTests:

* stress/dont-run-cleanup-after-licm.js: Added.

Source/JavaScriptCore:

There was a bug where CleanUp phase relied on isProved() bits and LICM
changed them in an invalid way. The bug is as follows:

We have two loops, L1 and L2, and two preheaders, P1 and P2. L2 is nested
inside of L1. We have a Check inside a node inside L1, say in basic block BB,
and that Check dominates all of L2. This is also a hoisting candidate, so we
hoist it outside of L1 and put it inside P1. Then, when we run AI, we look at
the preheader for each loop inside L1, so P1 and P2. When considering P2,
we execute the Check. Inside P2, before any hoisting is done, this Check
is dead code, because BB dominates P2. When we use AI to "execute" the
Check, it'll set its proof status to proved. This is because inside P2,
in the program before LICM runs, the Check is indeed proven at P2. But
it is not proven inside P1. This "execute" call will set our proof status
for the node inside *P1*, hence, we crash.

The fix here is to make LICM precise when updating the ProofStatus of an edge.
It can trust the AI state at the preheader it hoists the node to, but it can't
trust the state when executing effects inside inner loops's preheaders.

* dfg/DFGPlan.cpp:
(JSC::DFG::Plan::compileInThreadImpl):

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

20 months agoImplement <iframe allow="camera; microphone">
commit-queue@webkit.org [Fri, 15 Dec 2017 05:32:53 +0000 (05:32 +0000)]
Implement <iframe allow="camera; microphone">
https://bugs.webkit.org/show_bug.cgi?id=167430
LayoutTests/imported/w3c:

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

* resources/import-expectations.json:
* web-platform-tests/feature-policy/resources/: Added as this is used for some mediacapture-streams tests.
* web-platform-tests/mediacapture-streams/: Added.

Source/WebCore:

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

Tests: imported/w3c/web-platform-tests/mediacapture-streams/MediaStream-default-feature-policy.https.sub.html

Adding allow attribute to HTMLIFrameElement as per https://wicg.github.io/feature-policy/#iframe-allow-attribute.
Cross-origin iframes will get access to camera/microphone based on this attribute value.
Same-origin iframes do not need any attribute.
In case getUserMedia requests both camera and microphone, and allow attribute is only one of these,
getUserMedia access is denied. This goes against the tests but is not very clear from the specification.

* Modules/mediastream/UserMediaRequest.cpp:
(WebCore::isSecure):
(WebCore::isAllowedToUse):
(WebCore::canCallGetUserMedia):
(WebCore::UserMediaRequest::start):
* html/HTMLAttributeNames.in:
* html/HTMLIFrameElement.cpp:
(WebCore::HTMLIFrameElement::parseAttribute):
* html/HTMLIFrameElement.h:
* html/HTMLIFrameElement.idl:

LayoutTests:

<rdar://problem/34887226>

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

Skipping mediastream tests for wpe.
Updating expectations based on new error message.

* TestExpectations: Skipping sync XHR test using allow attribute.
* http/tests/ssl/media-stream/get-user-media-different-host-expected.txt:
* http/tests/ssl/media-stream/get-user-media-nested-expected.txt:
* platform/mac-wk1/imported/w3c/web-platform-tests/XMLHttpRequest/xmlhttprequest-sync-default-feature-policy.sub-expected.txt:
* platform/wpe/TestExpectations:

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

20 months agoFix 32-bit build: Enable -Wstrict-prototypes for WebKit
ddkilzer@apple.com [Fri, 15 Dec 2017 05:22:36 +0000 (05:22 +0000)]
Fix 32-bit build: Enable -Wstrict-prototypes for WebKit
<https://webkit.org/b/180757>
<rdar://problem/36024132>

* pal/spi/mac/QuickDrawSPI.h:
(NewRgn): Add 'void' to C function declaration.
(PenNormal): Ditto.

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

20 months agoUnreviewed, commit missing empty.js file in service workers WPT tests
cdumez@apple.com [Fri, 15 Dec 2017 05:20:36 +0000 (05:20 +0000)]
Unreviewed, commit missing empty.js file in service workers WPT tests

* web-platform-tests/service-workers/service-worker/resources/empty.js: Added.
* web-platform-tests/service-workers/service-worker/service-worker-csp-default.https-expected.txt:
* web-platform-tests/service-workers/service-worker/service-worker-csp-script.https-expected.txt:

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

20 months agoInconsistent section grid could lead to CrashOnOverflow
zalan@apple.com [Fri, 15 Dec 2017 04:22:47 +0000 (04:22 +0000)]
Inconsistent section grid could lead to CrashOnOverflow
https://bugs.webkit.org/show_bug.cgi?id=180850
<rdar://problem/34064811>

Reviewed by Simon Fraser.

Source/WebCore:

Each RenderTableSection maintains a grid of rows and columns. The number of columns in this grid equals the
maximum number of columns in the entire table (taking spans and multiple sections into account).
Since the maximum number of columns might change while re-computing the sections, we need to
adjust them accordingly at the end (otherwise it could lead to inconsistent grids where rows have different number of columns).

Test: fast/table/table-row-oveflow-crash.html

* rendering/RenderTable.cpp:
(WebCore::RenderTable::recalcSections const):
* rendering/RenderTableSection.cpp:
(WebCore::RenderTableSection::removeRedundantColumns):
* rendering/RenderTableSection.h:

LayoutTests:

* fast/table/table-row-oveflow-crash-expected.txt: Added.
* fast/table/table-row-oveflow-crash.html: Added.

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

20 months ago[webkitpy, Windows] Remove unnecessary debug message
commit-queue@webkit.org [Fri, 15 Dec 2017 04:22:22 +0000 (04:22 +0000)]
[webkitpy, Windows] Remove unnecessary debug message
https://bugs.webkit.org/show_bug.cgi?id=180844

Patch by Basuke Suzuki <Basuke.Suzuki@sony.com> on 2017-12-14
Reviewed by Ryosuke Niwa.

* Scripts/webkitpy/common/system/crashlogs.py:
(CrashLogs._find_newest_log_win): Delete debug print

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

20 months agoEnable -Wstrict-prototypes for WebKit
ddkilzer@apple.com [Fri, 15 Dec 2017 04:19:29 +0000 (04:19 +0000)]
Enable -Wstrict-prototypes for WebKit
<https://webkit.org/b/180757>
<rdar://problem/36024132>

Rubber-stamped by Joseph Pecoraro.

Source/bmalloc:

* Configurations/Base.xcconfig:
(CLANG_WARN_STRICT_PROTOTYPES): Add. Set to YES.

Source/JavaScriptCore:

* API/tests/CompareAndSwapTest.h:
(testCompareAndSwap): Add 'void' to C function declaration.
* API/tests/ExecutionTimeLimitTest.h:
(testExecutionTimeLimit): Ditto.
* API/tests/FunctionOverridesTest.h:
(testFunctionOverrides): Ditto.
* API/tests/GlobalContextWithFinalizerTest.h:
(testGlobalContextWithFinalizer): Ditto.
* API/tests/JSONParseTest.h:
(testJSONParse): Ditto.
* API/tests/MultithreadedMultiVMExecutionTest.h:
(startMultithreadedMultiVMExecutionTest): Ditto.
(finalizeMultithreadedMultiVMExecutionTest): Ditto.
* API/tests/PingPongStackOverflowTest.h:
(testPingPongStackOverflow): Ditto.
* Configurations/Base.xcconfig:
(CLANG_WARN_STRICT_PROTOTYPES): Add. Set to YES.

Source/ThirdParty:

* gtest/xcode/Config/General.xcconfig:
(WARNING_CFLAGS): Add semicolon.
(CLANG_WARN_STRICT_PROTOTYPES): Add. Set to YES.

Source/ThirdParty/ANGLE:

* Configurations/Base.xcconfig:
(CLANG_WARN_STRICT_PROTOTYPES): Add. Set to YES.

Source/ThirdParty/libwebrtc:

* Configurations/Base.xcconfig:
(CLANG_WARN_STRICT_PROTOTYPES): Add. Set to YES.
* Source/third_party/usrsctp/usrsctplib/usrsctplib/user_socket.c:
(wakeup_one): Modernize function argument declarations.
(getsockaddr): Ditto.
* Source/webrtc/common_audio/signal_processing/include/signal_processing_library.h:
(WebRtcSpl_Init): Add 'void' to C function declaration.
* Source/webrtc/common_audio/vad/include/webrtc_vad.h:
(WebRtcVad_Create): Ditto.
* Source/webrtc/modules/audio_coding/codecs/isac/fix/source/codec.h:
(WebRtcIsacfix_InitTransform): Ditto.
* Source/webrtc/modules/audio_processing/agc/legacy/gain_control.h:
(WebRtcAgc_Create): Ditto.
* Source/webrtc/modules/audio_processing/ns/noise_suppression.h:
(WebRtcNs_Create): Ditto.
(WebRtcNs_num_freq): Ditto.
* Source/webrtc/modules/audio_processing/ns/noise_suppression_x.h:
(WebRtcNsx_Create): Ditto.
(WebRtcNsx_num_freq): Ditto.

Source/WebCore:

* Configurations/Base.xcconfig:
(CLANG_WARN_STRICT_PROTOTYPES): Add. Set to YES.

Source/WebCore/PAL:

* Configurations/Base.xcconfig:
(CLANG_WARN_STRICT_PROTOTYPES): Add. Set to YES.

Source/WebInspectorUI:

* Configurations/Base.xcconfig:
(CLANG_WARN_STRICT_PROTOTYPES): Add. Set to YES.

Source/WebKit:

* Configurations/Base.xcconfig:
(CLANG_WARN_STRICT_PROTOTYPES): Add. Set to YES.
* Platform/spi/ios/UIKitSPI.h:
(_UIDragInteractionDefaultLiftDelay): Add 'void' to C function declaration.
(UIKeyboardEnabledInputModesAllowOneToManyShortcuts): Ditto.

Source/WebKitLegacy/mac:

* Configurations/Base.xcconfig:
(CLANG_WARN_STRICT_PROTOTYPES): Add. Set to YES.

Source/WTF:

* Configurations/Base.xcconfig:
(CLANG_WARN_STRICT_PROTOTYPES): Add. Set to YES.
* wtf/Assertions.h:
(WTFReportBacktrace): Add 'void' to C function declaration.
(WTFCrashHookFunction): Add 'void' to C function pointer declaration.
(WTFInstallReportBacktraceOnCrashHook): Add 'void' to C function declaration.
(WTFIsDebuggerAttached): Ditto.
(WTFCrash): Ditto.
(WTFCrashWithSecurityImplication): Ditto.

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

20 months agocheck-webkit-style: Stop warning about underscores in webrtc source
ddkilzer@apple.com [Fri, 15 Dec 2017 03:26:27 +0000 (03:26 +0000)]
check-webkit-style: Stop warning about underscores in webrtc source
<https://webkit.org/b/180848>

Reviewed by Joseph Pecoraro.

* Scripts/webkitpy/style/checker.py:
(_PATH_RULES_SPECIFIER): Suppress readability/naming/underscores
warnings under Source/ThirdParty/libwebrtc/Source/webrtc.

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

20 months ago[iOS] Many serviceworker tests are flaky timeouts on iOS bots
cdumez@apple.com [Fri, 15 Dec 2017 02:49:25 +0000 (02:49 +0000)]
[iOS] Many serviceworker tests are flaky timeouts on iOS bots
https://bugs.webkit.org/show_bug.cgi?id=179454
<rdar://problem/35429369>

Unreviewed attempt to unmark service worker tests as flaky on iOS.
We have now fixed all the iOS-specific bugs we are aware of so we
should give this a try.

* platform/ios/TestExpectations:

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

20 months agosrflx and relay ICE candidates lack raddr (rel-addr) and rport (rel-port) attributes...
commit-queue@webkit.org [Fri, 15 Dec 2017 02:14:04 +0000 (02:14 +0000)]
srflx and relay ICE candidates lack raddr (rel-addr) and rport (rel-port) attributes if getUserMedia access has not been granted
https://bugs.webkit.org/show_bug.cgi?id=180842

Patch by Youenn Fablet <youenn@apple.com> on 2017-12-14
Reviewed by Jon Lee.

Manually tested since there is no way to gather reflexive or stun candidates in WebKit CI.

* Modules/mediastream/PeerConnectionBackend.cpp:
(WebCore::filterICECandidate):

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

20 months agoSerialize WebsitePoliciesData instead of WebsitePolicies
achristensen@apple.com [Fri, 15 Dec 2017 02:08:23 +0000 (02:08 +0000)]
Serialize WebsitePoliciesData instead of WebsitePolicies
https://bugs.webkit.org/show_bug.cgi?id=180847

Reviewed by Joseph Pecoraro.

No change in behavior.  This will allow me to add things to WebsitePolicies that have
a different form when serialized to another process.

Also, remove API::WebsitePolicies because the wrapper isn't necessary.
WebsitePolicies is now the API type that only exists in the UIProcess.

* Shared/WebsitePolicies.cpp: Removed.
* Shared/WebsitePolicies.h:
(WebKit::WebsitePolicies::contentBlockersEnabled const): Deleted.
(WebKit::WebsitePolicies::setContentBlockersEnabled): Deleted.
(WebKit::WebsitePolicies::allowedAutoplayQuirks const): Deleted.
(WebKit::WebsitePolicies::setAllowedAutoplayQuirks): Deleted.
(WebKit::WebsitePolicies::autoplayPolicy const): Deleted.
(WebKit::WebsitePolicies::setAutoplayPolicy): Deleted.
(WebKit::WebsitePolicies::customHeaderFields): Deleted.
(WebKit::WebsitePolicies::takeCustomHeaderFields): Deleted.
(WebKit::WebsitePolicies::setCustomHeaderFields): Deleted.
* Shared/WebsitePoliciesData.cpp: Copied from Source/WebKit/Shared/WebsitePolicies.cpp.
(WebKit::WebsitePoliciesData::fromWebsitePolicies):
(WebKit::WebsitePoliciesData::encode const):
(WebKit::WebsitePoliciesData::decode):
(WebKit::WebsitePoliciesData::applyToDocumentLoader):
(WebKit::WebsitePolicies::WebsitePolicies): Deleted.
(WebKit::WebsitePolicies::encode const): Deleted.
(WebKit::WebsitePolicies::decode): Deleted.
(WebKit::WebsitePolicies::applyToDocumentLoader): Deleted.
* Shared/WebsitePoliciesData.h: Added.
* UIProcess/API/APINavigationClient.h:
(API::NavigationClient::decidePolicyForNavigationAction):
(API::NavigationClient::decidePolicyForNavigationResponse):
* UIProcess/API/APIPolicyClient.h:
(API::PolicyClient::decidePolicyForNavigationAction):
(API::PolicyClient::decidePolicyForNewWindowAction):
(API::PolicyClient::decidePolicyForResponse):
* UIProcess/API/APIWebsitePolicies.cpp: Removed.
* UIProcess/API/APIWebsitePolicies.h: Removed.
* UIProcess/API/C/WKAPICast.h:
* UIProcess/API/C/WKFramePolicyListener.cpp:
(WKFramePolicyListenerUse):
(WKFramePolicyListenerUseWithPolicies):
* UIProcess/API/C/WKPage.cpp:
(WKPageUpdateWebsitePolicies):
(WKPageSetPagePolicyClient):
(WKPageSetPageNavigationClient):
* UIProcess/API/C/WKWebsitePolicies.cpp:
(WKWebsitePoliciesGetTypeID):
(WKWebsitePoliciesCreate):
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _updateWebsitePolicies:]):
* UIProcess/API/Cocoa/_WKWebsitePolicies.mm:
(-[_WKWebsitePolicies dealloc]):
(-[_WKWebsitePolicies init]):
* UIProcess/API/Cocoa/_WKWebsitePoliciesInternal.h:
(WebKit::wrapper):
* UIProcess/Cocoa/NavigationState.mm:
(WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction):
(WebKit::NavigationState::NavigationClient::decidePolicyForNavigationResponse):
* UIProcess/WebFrameListenerProxy.cpp:
(WebKit::WebFrameListenerProxy::receivedPolicyDecision):
* UIProcess/WebFrameListenerProxy.h:
* UIProcess/WebFramePolicyListenerProxy.cpp:
(WebKit::WebFramePolicyListenerProxy::use):
(WebKit::WebFramePolicyListenerProxy::download):
(WebKit::WebFramePolicyListenerProxy::ignore):
* UIProcess/WebFramePolicyListenerProxy.h:
* UIProcess/WebFrameProxy.cpp:
(WebKit::WebFrameProxy::receivedPolicyDecision):
* UIProcess/WebFrameProxy.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::receivedPolicyDecision):
(WebKit::WebPageProxy::decidePolicyForNavigationAction):
(WebKit::WebPageProxy::updateWebsitePolicies):
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* WebKit.xcodeproj/project.pbxproj:
* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::applyToDocumentLoader):
(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
* WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
* WebProcess/WebPage/WebFrame.cpp:
(WebKit::WebFrame::didReceivePolicyDecision):
* WebProcess/WebPage/WebFrame.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::didReceivePolicyDecision):
(WebKit::WebPage::updateWebsitePolicies):
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:

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

20 months agowebkitpy: Replace Version.contained_in with Version.__contains__
jbedard@apple.com [Fri, 15 Dec 2017 01:46:42 +0000 (01:46 +0000)]
webkitpy: Replace Version.contained_in with Version.__contains__
https://bugs.webkit.org/show_bug.cgi?id=180772
<rdar://problem/36033555>

Reviewed by David Kilzer.

Using __contains__ instead of contained_in allows for the more
Pythonic 'in' operator to be used.

* Scripts/webkitpy/common/version.py:
(Version):
(Version.__contains__): Replace contained_in. Note that self is now
the container.
(Version.contained_in): Deleted.
* Scripts/webkitpy/common/version_name_map.py:
(VersionNameMap.to_name):
* Scripts/webkitpy/common/version_unittest.py:
(VersionTestCase.test_contained_in):

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

20 months ago[DFG] Reduce register pressure of WeakMapGet to be used for 32bit
utatane.tea@gmail.com [Fri, 15 Dec 2017 01:45:28 +0000 (01:45 +0000)]
[DFG] Reduce register pressure of WeakMapGet to be used for 32bit
https://bugs.webkit.org/show_bug.cgi?id=180804

Reviewed by Saam Barati.

This fixes 32bit failures of JSC by reducing register pressure of WeakMapGet.

* dfg/DFGRegisterBank.h:
(JSC::DFG::RegisterBank::lockedCount const):
* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compileWeakMapGet):

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

20 months agoUnreviewed, rolling out r225878.
commit-queue@webkit.org [Fri, 15 Dec 2017 01:39:29 +0000 (01:39 +0000)]
Unreviewed, rolling out r225878.
https://bugs.webkit.org/show_bug.cgi?id=180855

Introduced a crash in HTMLPictureElement. We're taking a
different approach for webkit.org/b/180769 (Requested by rniwa
on #webkit).

Reverted changeset:

"Crash inside ImageLoader::updateFromElement()"
https://bugs.webkit.org/show_bug.cgi?id=180769
https://trac.webkit.org/changeset/225878

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

20 months agoWeb Inspector: InspectorTest.evaluateInPage should unwrap primitive values by default
bburg@apple.com [Fri, 15 Dec 2017 01:39:11 +0000 (01:39 +0000)]
Web Inspector: InspectorTest.evaluateInPage should unwrap primitive values by default
https://bugs.webkit.org/show_bug.cgi?id=180831

Reviewed by Joseph Pecoraro.

Source/WebInspectorUI:

* UserInterface/Test/FrontendTestHarness.js:
(FrontendTestHarness.prototype.evaluateInPage.resultObjectToReturn):
(FrontendTestHarness.prototype.evaluateInPage):
Unwrap the resulting RemoteObject's value if it is a primitive.
Add an `options` dictionary so this behavior can be opted out.

* UserInterface/Test/TestHarness.js:
Add documentation of how evaluateInPage works.

LayoutTests:

* inspector/unit-tests/test-harness-evaluate-in-page-expected.txt: Added.
* inspector/unit-tests/test-harness-evaluate-in-page.html: Added.

Add test coverage for InspectorTest.evaluateInPage. Only the promise-returning
variant is tested here, because the callback variant is well-used in existing
tests and I plan to remove the callback variant entirely in later patches.

* inspector/console/js-isLikelyStackTrace-expected.txt:
* inspector/console/js-isLikelyStackTrace.html:
Fix some bad tests and rebaseline. A bug was filed for the remaining failing assertion.

* http/tests/inspector/dom/shapes-test.js:
(TestPage.registerInitializer.InspectorTest.Shapes.receivedHighlightObject):
(TestPage.registerInitializer.InspectorTest.Shapes.getShapeOutsideInfoForSelector):
* http/tests/inspector/paymentrequest/payment-request-internal-properties.https.html:
* inspector/console/command-line-api-copy.html:
* inspector/console/console-log-proxy.html:
* inspector/debugger/js-stacktrace.html:
* inspector/dom/hideHighlight.html:
* inspector/dom/highlightFrame.html:
* inspector/dom/highlightNode.html:
* inspector/dom/highlightNodeList.html:
* inspector/dom/highlightQuad.html:
* inspector/dom/highlightRect.html:
* inspector/dom/highlightSelector.html:
* inspector/page/setEmulatedMedia.html:
* inspector/runtime/getPreview.html:
Fix existing tests to opt out of unwrapping or use the unwrapped value directly.

* inspector/dom/setEventListenerDisabled-expected.txt:
Rebaseline results. This is caused by an extra promise tick in evaluateInPage.

* inspector/injected-script/observable-expected.txt:
* inspector/injected-script/observable.html:
Fix a typo and rebaseline.

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

20 months agoUnreviewed, rolling out r225931.
ryanhaddad@apple.com [Fri, 15 Dec 2017 01:29:31 +0000 (01:29 +0000)]
Unreviewed, rolling out r225931.

Breaks internal builds.

Reverted changeset:

"Fix Mac CMake build"
https://bugs.webkit.org/show_bug.cgi?id=180835
https://trac.webkit.org/changeset/225931

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

20 months agoUnreviewed, rebaseline compositing/repaint/iframes/composited-iframe-with-fixed-backg...
ryanhaddad@apple.com [Fri, 15 Dec 2017 01:28:19 +0000 (01:28 +0000)]
Unreviewed, rebaseline compositing/repaint/iframes/composited-iframe-with-fixed-background-doc-repaint.html after r225897.

* platform/mac-wk1/compositing/repaint/iframes/composited-iframe-with-fixed-background-doc-repaint-expected.txt:

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

20 months agoAnother Windows build fix.
simon.fraser@apple.com [Fri, 15 Dec 2017 01:27:54 +0000 (01:27 +0000)]
Another Windows build fix.

* platform/graphics/cg/GraphicsContextCG.cpp:
(WebCore::extendedSRGBColorSpaceRef):

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

20 months agoFix Windows build after r225915.
simon.fraser@apple.com [Fri, 15 Dec 2017 01:01:47 +0000 (01:01 +0000)]
Fix Windows build after r225915.

Windows doens't have dispatch_once with blocks. Switch to use lambda functions instead.

* platform/graphics/cg/GraphicsContextCG.cpp:
(WebCore::sRGBColorSpaceRef):
(WebCore::linearRGBColorSpaceRef):
(WebCore::extendedSRGBColorSpaceRef):
(WebCore::displayP3ColorSpaceRef):

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