WebKit-https.git
5 months agoImplement a new design for JetStream2
jond@apple.com [Thu, 14 Mar 2019 20:46:04 +0000 (20:46 +0000)]
Implement a new design for JetStream2
https://bugs.webkit.org/show_bug.cgi?id=195492

Reviewed by Saam Barati.

* JetStream2/JetStream.css:
(html):
(body):
(::selection):
(main):
(.logo):
(.logo .logo-image):
(#jetstreams):
(#jetstreams svg):
(.summary):
(.summary + .summary):
(.summary:empty):
(article, .summary):
(h1):
(h2, h3, h4, h5, h6):
(h4, h5, h6):
(p):
(h5, h6):
(h6):
(a:link,):
(a:hover,):
(#status):
(#status label,):
(a.button):
(#status.loading):
(#status.error):
(.error h2, .error p):
(.error h2):
(#result-summary):
(#result-summary label):
(#result-summary .score):
(#result-summary .score .interval):
(#results):
(.benchmark):
(.benchmark h3, .benchmark h4, .benchmark .result, .benchmark label):
(.benchmark-running h4, .benchmark-running .result, .benchmark-running label):
(.benchmark-done h3, .benchmark-done h4, .benchmark-done .result, .benchmark-done label):
(.benchmark h3):
(.benchmark-running h3):
(.benchmark-done h3):
(.benchmark h3 a,):
(.benchmark-done h3 a:hover):
(.benchmark h4):
(.benchmark-done h4):
(.benchmark p,):
(.benchmark .result):
(.benchmark-done .result):
(.benchmark label):
(.benchmark-done label):
(@keyframes fadein):
(to):
(@keyframes scaledown):
(@keyframes shine):
(100%):
(@keyframes swingin):
(@media (max-width: 415px)):
(#logo): Deleted.
(p.summary): Deleted.
(p.summary + p.summary): Deleted.
(p.summary:empty): Deleted.
(p:first-of-type): Deleted.
(#status a:link): Deleted.
(.interval): Deleted.
(a:link, a:visited): Deleted.
(a:link:hover): Deleted.
(table): Deleted.
(td, th): Deleted.
(th): Deleted.
(tr:first-child > th:nth-child(even)): Deleted.
(tr:nth-child(even):not(:first-child, .benchmark-running)): Deleted.
(.result): Deleted.
(.benchmark-running): Deleted.
(:not(.benchmark-running) .result): Deleted.
(.benchmark-running .result): Deleted.
(.benchmark-name): Deleted.
(.result.category,): Deleted.
(.benchmark-name:not(.category):not(.geometric-mean)): Deleted.
(.geometric-mean): Deleted.
(.benchmark-name:not(:first-child)): Deleted.
(.benchmark-name a:link,): Deleted.
(.highlighted-result): Deleted.
* JetStream2/JetStream2Logo.svg: Added.
* JetStream2/JetStreamDriver.js:
(updateUI):
(Driver.prototype.async.start):
(Driver.prototype.prepareToRun.text.div.id.string_appeared_here.h3):
(Driver.prototype.prepareToRun.text.span):
(Driver.prototype.prepareToRun.a.h3.h4):
(Driver.prototype.prepareToRun.text.div):
(Driver.prototype.async.initialize):
(Driver.prototype.async.fetchResources.prototype.statusElement.onclick):
(prototype.fetchResources):
(prototype.updateUIBeforeRun):
(prototype.updateUIAfterRun):
(Driver.prototype.async.fetchResources.statusElement.innerHTML.a.href.string_appeared_here):
(Driver.prototype.async.fetchResources):
(Driver.prototype.prepareToRun.text.tr.id.string_appeared_here.FIXME.link.to.benchmark.explanation.td): Deleted.
* JetStream2/clouds.svg: Added.
* JetStream2/in-depth.html:
* JetStream2/index.html:
* JetStream2/jetstreams.svg: Added.

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

5 months agoAdd WebsitePolicy for the client to specify the device orientation & motion access...
cdumez@apple.com [Thu, 14 Mar 2019 20:40:09 +0000 (20:40 +0000)]
Add WebsitePolicy for the client to specify the device orientation & motion access policy
https://bugs.webkit.org/show_bug.cgi?id=195750

Reviewed by Geoffrey Garen.

Source/WebCore:

Add WebsitePolicy for the client to specify the device orientation & motion access policy. If
the client already knows access to the device motion & orientation API will be granted / denied,
it can let WebKit know via WebsitePolicies so that WebKit will not ask the client when the
permission is requested by JS.

* dom/DeviceOrientationAndMotionAccessController.cpp:
(WebCore::DeviceOrientationAndMotionAccessController::shouldAllowAccess):
(WebCore::DeviceOrientationAndMotionAccessController::setAccessState):
(WebCore::DeviceOrientationAndMotionAccessController::accessState const):
* dom/DeviceOrientationAndMotionAccessController.h:
* loader/DocumentLoader.h:
(WebCore::DocumentLoader::deviceOrientationAndMotionAccessState const):
(WebCore::DocumentLoader::setDeviceOrientationAndMotionAccessState):
* page/DOMWindow.cpp:
(WebCore::DOMWindow::isAllowedToUseDeviceMotionOrientation const):

Source/WebKit:

Add WebsitePolicy for the client to specify the device orientation & motion access policy. If
the client already knows access to the device motion & orientation API will be granted / denied,
it can let WebKit know via WebsitePolicies so that WebKit will not ask the client when the
permission is requested by JS.

* Shared/WebsitePoliciesData.cpp:
(WebKit::WebsitePoliciesData::encode const):
(WebKit::WebsitePoliciesData::decode):
(WebKit::WebsitePoliciesData::applyToDocumentLoader):
* Shared/WebsitePoliciesData.h:
* UIProcess/API/APIWebsitePolicies.cpp:
(API::WebsitePolicies::data):
* UIProcess/API/APIWebsitePolicies.h:
* UIProcess/API/Cocoa/_WKWebsitePolicies.h:
* UIProcess/API/Cocoa/_WKWebsitePolicies.mm:
(-[_WKWebsitePolicies setDeviceOrientationAndMotionAccessPolicy:]):
(-[_WKWebsitePolicies deviceOrientationAndMotionAccessPolicy]):

Tools:

Add API test coverage.

* TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm:
(-[WebsitePoliciesDeviceOrientationDelegate initWithDeviceOrientationAccessPolicy:]):
(-[WebsitePoliciesDeviceOrientationDelegate _webView:decidePolicyForNavigationAction:userInfo:decisionHandler:]):
(-[WebsitePoliciesDeviceOrientationUIDelegate _webView:shouldAllowDeviceOrientationAndMotionAccessRequestedByFrame:decisionHandler:]):

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

5 months agoUnreviewed, rolling out r242931.
sroberts@apple.com [Thu, 14 Mar 2019 19:46:32 +0000 (19:46 +0000)]
Unreviewed, rolling out r242931.

Causing internal watch/tv OS build failures

Reverted changeset:

"[Web GPU] Updates to GPUCommandBuffer for new GPUCommandQueue
concept"
https://bugs.webkit.org/show_bug.cgi?id=195083
https://trac.webkit.org/changeset/242931

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

5 months agoASSERTION FAILED: regexp->isValid() or ASSERTION FAILED: !isCompilationThread()
msaboff@apple.com [Thu, 14 Mar 2019 19:31:52 +0000 (19:31 +0000)]
ASSERTION FAILED: regexp->isValid() or ASSERTION FAILED: !isCompilationThread()
https://bugs.webkit.org/show_bug.cgi?id=195735

Reviewed by Mark Lam.

JSTests:

New regression test.

* stress/dont-strength-reduce-regexp-with-compile-error.js: Added.
(foo):
(bar):

Source/JavaScriptCore:

There are two bug fixes here.

The first bug happens due to a race condition when we are compiling on a separate thread while the
main thread is compiling the RegExp at a place where it can run out of stack.  When that happens,
the RegExp becomes invalid due to the out of stack error.  If we check the ASSERT condition in the DFG
compilation thread, we crash.  After the main thread throws an exception, it resets the RegExp as
it might compile successfully the next time we try to execute it on a shallower stack.
The main thread will see the regular expression as valid when it executes the JIT'ed code we are compiling
or any slow path we call out to.  Therefore ASSERTs like this in compilation code can be eliminated.

The second bug is due to incorrect logic when we go to run the regexp in the Strength Reduction phase.
The current check for "do we have code to run the RegExp?" only checks that the RegExp's state
is != NotCompiled.  We also can't run the RegExp if there the state is ParseError.
Changing hasCode() to take this into account fixes the second issue.

(JSC::FTL::DFG::LowerDFGToB3::compileNewRegexp):
* runtime/RegExp.h:
* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compileNewRegexp):
* runtime/RegExp.h:

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

5 months agoFixup uses KnownInt32 incorrectly in some nodes
sbarati@apple.com [Thu, 14 Mar 2019 19:27:28 +0000 (19:27 +0000)]
Fixup uses KnownInt32 incorrectly in some nodes
https://bugs.webkit.org/show_bug.cgi?id=195279
<rdar://problem/47915654>

Reviewed by Yusuke Suzuki.

JSTests:

* stress/known-int32-cant-be-used-across-bytecode-boundary.js: Added.
(foo):

Source/JavaScriptCore:

Fixup was sometimes using KnownInt32 edges when it knew some
incoming value is an Int32 based on what the bytecode would return.
However, because bytecode may result in Int32 for some node does
not mean we'll pick Int32 as the value format for that local. For example,
we may choose for a value to be represented as a double. This patch
corrects such uses of KnownInt32.

* dfg/DFGArgumentsEliminationPhase.cpp:
* dfg/DFGFixupPhase.cpp:
(JSC::DFG::FixupPhase::fixupNode):
* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compileArrayPush):
(JSC::DFG::SpeculativeJIT::compileGetDirectPname):
* ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::compileArrayPush):

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

5 months agoREGRESSION (r242908): TestWebKitAPI.WebKit.AddAndRemoveDataDetectors Crashed
timothy@apple.com [Thu, 14 Mar 2019 19:22:06 +0000 (19:22 +0000)]
REGRESSION (r242908): TestWebKitAPI.WebKit.AddAndRemoveDataDetectors Crashed
https://bugs.webkit.org/show_bug.cgi?id=195751

Reviewed by Wenson Hsieh.

* Shared/Cocoa/ArgumentCodersCocoa.mm:
(IPC::decodeArrayInternal): Added allowedClasses, pass to internal decodeObject for values.
(IPC::decodeDictionaryInternal): Ditto for keys and values.
(IPC::decodeObject): Pass allowedClasses to array and dictionary decoders.

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

5 months ago[PSON] Make sure the WebProcessCache is leverage when relaunching a process after...
cdumez@apple.com [Thu, 14 Mar 2019 19:11:52 +0000 (19:11 +0000)]
[PSON] Make sure the WebProcessCache is leverage when relaunching a process after termination
https://bugs.webkit.org/show_bug.cgi?id=195747

Reviewed by Geoff Garen.

Source/WebKit:

Make sure the WebProcessCache and the prewarmed process are used when relaunching a process
after termination (e.g. crash).

* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::reattachToWebProcess):
(WebKit::WebPageProxy::reattachToWebProcessForReload):
(WebKit::WebPageProxy::reattachToWebProcessWithItem):
(WebKit::WebPageProxy::loadRequest):
(WebKit::WebPageProxy::loadFile):
(WebKit::WebPageProxy::loadData):
(WebKit::WebPageProxy::loadAlternateHTML):
(WebKit::WebPageProxy::loadWebArchiveData):
(WebKit::WebPageProxy::navigateToPDFLinkWithSimulatedClick):
* UIProcess/WebPageProxy.h:
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::processForRegistrableDomain):
(WebKit::WebProcessPool::createWebPage):
(WebKit::WebProcessPool::processForNavigationInternal):
(WebKit::WebProcessPool::tryPrewarmWithDomainInformation):
* UIProcess/WebProcessPool.h:

Tools:

Add API test coverage.

* TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:

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

5 months agoDevice orientation's permission should only require a user gesture to prompt the...
cdumez@apple.com [Thu, 14 Mar 2019 18:57:58 +0000 (18:57 +0000)]
Device orientation's permission should only require a user gesture to prompt the user
https://bugs.webkit.org/show_bug.cgi?id=195731

Reviewed by Geoffrey Garen.

Source/WebCore:

Device orientation's permission should only require a user gesture to prompt the user. If the
user already made a decision, we should resolve the promise with this decision, even without
user gesture.

This is useful for JS to figure out if they are access to device orientation or not because
showing UI for the user to give permission.

No new tests, updated existing tests.

* dom/DeviceOrientationAndMotionAccessController.cpp:
(WebCore::DeviceOrientationAndMotionAccessController::shouldAllowAccess):
* dom/DeviceOrientationAndMotionAccessController.h:
* dom/DeviceOrientationOrMotionEvent.cpp:
(WebCore::DeviceOrientationOrMotionEvent::requestPermission):

LayoutTests:

Update layout tests accordingly.

* fast/device-orientation/device-motion-request-permission-denied.html:
* fast/device-orientation/device-motion-request-permission-granted.html:
* fast/device-orientation/device-motion-request-permission-user-gesture-expected.txt:
* fast/device-orientation/device-orientation-request-permission-denied.html:
* fast/device-orientation/device-orientation-request-permission-granted.html:
* fast/device-orientation/device-orientation-request-permission-user-gesture-expected.txt:

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

5 months agoUnreviewed speculative build fix for watchOS after r242908.
timothy@apple.com [Thu, 14 Mar 2019 18:40:50 +0000 (18:40 +0000)]
Unreviewed speculative build fix for watchOS after r242908.

* Shared/Cocoa/WebCoreArgumentCodersCocoa.mm:

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

5 months agoBlock all plugins smaller than 5x5px
dino@apple.com [Thu, 14 Mar 2019 18:38:36 +0000 (18:38 +0000)]
Block all plugins smaller than 5x5px
https://bugs.webkit.org/show_bug.cgi?id=195702
<rdar://problem/28435204>

Updating some tests to account for this change. Make the plugins
big enough to be created.

* compositing/plugins/small-to-large-composited-plugin.html:
* fast/frames/resources/sandboxed-iframe-about-blank.html:
* fast/frames/resources/sandboxed-iframe-plugins-frame-applet.html:
* fast/frames/resources/sandboxed-iframe-plugins-frame-embed.html:
* fast/frames/resources/sandboxed-iframe-plugins-frame-object.html:

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

5 months agoWeb Inspector: Network - HAR Import
joepeck@webkit.org [Thu, 14 Mar 2019 18:27:08 +0000 (18:27 +0000)]
Web Inspector: Network - HAR Import
https://bugs.webkit.org/show_bug.cgi?id=195642
<rdar://problem/34820974>

Reviewed by Devin Rousso.

Source/WebInspectorUI:

* Localizations/en.lproj/localizedStrings.js
* UserInterface/Test.html:
* UserInterface/Test.html:
New strings and resources.

* UserInterface/Controllers/HARBuilder.js:
(WI.HARBuilder.dateFromHARDate):
(WI.HARBuilder.protocolFromHARProtocol):
(WI.HARBuilder.responseSourceFromHARFetchType):
Reverse parsers from HAR to WI.Resource types.

* UserInterface/Models/LocalResource.js: Added.
(WI.LocalResource):
(WI.LocalResource.headersArrayToHeadersObject):
(WI.LocalResource.fromHAREntry):
(WI.LocalResource.prototype.hasContent):
(WI.LocalResource.prototype.setContent):
(WI.LocalResource.prototype.requestContentFromBackend):
A Resource subclass with data fully supplied in the frontend.

* UserInterface/Controllers/NetworkManager.js:
(WI.NetworkManager):
(WI.NetworkManager.synthesizeImportError):
(WI.NetworkManager.prototype.localResourceForURL):
(WI.NetworkManager.prototype.processHAR):
Process a HAR and extract local resources.

* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView):
(WI.NetworkTableContentView.prototype.reset):
(WI.NetworkTableContentView.prototype._handleResourceAdded):
(WI.NetworkTableContentView.prototype._importHAR):
Add an import button. When an import succeeds reset the
table and only show imported resources (ignoring page
loaded resources).

LayoutTests:

* http/tests/inspector/network/har/har-import-expected.txt: Added.
* http/tests/inspector/network/har/har-import.html: Added.
HAR import tests.

* http/tests/inspector/network/har/resources/bad-version.har: Added.
* http/tests/inspector/network/har/resources/basic.har: Added.
* http/tests/inspector/network/har/resources/empty.har: Added.
* http/tests/inspector/network/har/resources/webkit.org.har: Added.
Sample HARs to test against.

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

5 months agoReset storage quota when clearing IDB/Cache API entries
youenn@apple.com [Thu, 14 Mar 2019 18:25:30 +0000 (18:25 +0000)]
Reset storage quota when clearing IDB/Cache API entries
https://bugs.webkit.org/show_bug.cgi?id=195716

Reviewed by Chris Dumez.

Source/WebCore:

On clearing of databases, reset all quota users.
This will ensure all layout test runs start with a clean state.

* Modules/indexeddb/server/IDBServer.cpp:
(WebCore::IDBServer::IDBServer::didPerformCloseAndDeleteDatabases):
* storage/StorageQuotaManager.h:
(WebCore::StorageQuotaManager::resetQuota):

Source/WebKit:

On clearing DOMCache or IDB data, reset quota value to the default value.
This ensures consistent layout test runs.

* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::deleteWebsiteData):
(WebKit::NetworkProcess::deleteWebsiteDataForOrigins):
(WebKit::NetworkProcess::clearStorageQuota):
* NetworkProcess/NetworkProcess.h:

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

5 months agoCertain videos are causing a crash when used as WebGL texture
jer.noble@apple.com [Thu, 14 Mar 2019 18:22:04 +0000 (18:22 +0000)]
Certain videos are causing a crash when used as WebGL texture
https://bugs.webkit.org/show_bug.cgi?id=195700
<rdar://problem/48869347>

Reviewed by Eric Carlson.

CFEqual is not null-safe, so perform a null and type check before comparing.

* platform/graphics/cv/VideoTextureCopierCV.cpp:
(WebCore::transferFunctionFromString):

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

5 months agoDFG liveness can't skip tail caller inline frames
keith_miller@apple.com [Thu, 14 Mar 2019 17:41:04 +0000 (17:41 +0000)]
DFG liveness can't skip tail caller inline frames
https://bugs.webkit.org/show_bug.cgi?id=195715
JSTests:

Reviewed by Saam Barati.

* stress/dfg-scan-inlined-tail-caller-frames-liveness.js:
(i.foo):

Source/JavaScriptCore:

<rdar://problem/46221598>

Reviewed by Saam Barati.

In order to simplify OSR exit/DFG bytecode parsing our bytecode
generator always emits an op_ret after any tail call. However, the
DFG when computing the liveness of locals, would skip any tail
caller inline frames. This mean that if we ended up inserting a
Check that would OSR to the op_ret we wouldn't have kept
availability data around for it.

* dfg/DFGGraph.cpp:
(JSC::DFG::Graph::isLiveInBytecode):
* dfg/DFGGraph.h:
(JSC::DFG::Graph::forAllLocalsLiveInBytecode):

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

5 months agoDFG::Worklist can be shrunk by 16 bytes
rmorisset@apple.com [Thu, 14 Mar 2019 16:41:50 +0000 (16:41 +0000)]
DFG::Worklist can be shrunk by 16 bytes
https://bugs.webkit.org/show_bug.cgi?id=195490

Reviewed by Darin Adler.

* dfg/DFGWorklist.cpp:
(JSC::DFG::Worklist::Worklist):
* dfg/DFGWorklist.h:

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

5 months agoCleanup inline boxes when list marker gets blockified
zalan@apple.com [Thu, 14 Mar 2019 16:21:34 +0000 (16:21 +0000)]
Cleanup inline boxes when list marker gets blockified
https://bugs.webkit.org/show_bug.cgi?id=195746
<rdar://problem/48049175>

Reviewed by Antti Koivisto.

Source/WebCore:

Normally when an element gets blockified (inline -> block) we destroy its renderer and construct a new one (RenderInline -> RenderBlock).
During this process the associated inline boxtree gets destroyed as well. Since RenderListMarker is just a generic RenderBox, the blockifying
change does not require a new renderer.
This patch takes care of destroying the inline boxtree when the marker gains block display type.

Test: fast/block/float/list-marker-is-float-crash.html

* rendering/RenderListMarker.cpp:
(WebCore::RenderListMarker::styleDidChange):

LayoutTests:

* fast/block/float/list-marker-is-float-crash-expected.txt: Added.
* fast/block/float/list-marker-is-float-crash.html: Added.

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

5 months agoUnreviewed test gardening, rebaseline tests after r241934.
ryanhaddad@apple.com [Thu, 14 Mar 2019 16:05:39 +0000 (16:05 +0000)]
Unreviewed test gardening, rebaseline tests after r241934.

* fast/events/touch/ios/block-without-overflow-scroll-and-passive-observer-on-block-scrolling-state-expected.txt:
* fast/events/touch/ios/block-without-overflow-scroll-and-passive-observer-on-document-scrolling-state-expected.txt:
* fast/events/touch/ios/block-without-overflow-scroll-scrolling-state-expected.txt:
* fast/events/touch/ios/tap-with-active-touch-end-listener-expected.txt:

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

5 months agoWeb Inspector: Audit: provide a way to get the contents of resources
drousso@apple.com [Thu, 14 Mar 2019 10:13:57 +0000 (10:13 +0000)]
Web Inspector: Audit: provide a way to get the contents of resources
https://bugs.webkit.org/show_bug.cgi?id=195266
<rdar://problem/48550911>

Reviewed by Joseph Pecoraro.

Source/JavaScriptCore:

* inspector/InjectedScriptBase.cpp:
(Inspector::InjectedScriptBase::makeAsyncCall):
Drive-by: fix missing `else`.
Source/WebCore:

Test: inspector/audit/run-resources.html

* inspector/InspectorAuditResourcesObject.idl: Added.
* inspector/InspectorAuditResourcesObject.h: Added.
(WebCore::InspectorAuditResourcesObject::create):
(WebCore::InspectorAuditResourcesObject::Resource):
(WebCore::InspectorAuditResourcesObject::ResourceContent):
(WebCore::InspectorAuditResourcesObject::InspectorAuditCachedResourceClient):
(WebCore::InspectorAuditResourcesObject::InspectorAuditCachedFontClient):
(WebCore::InspectorAuditResourcesObject::InspectorAuditCachedImageClient):
(WebCore::InspectorAuditResourcesObject::InspectorAuditCachedRawResourceClient):
(WebCore::InspectorAuditResourcesObject::InspectorAuditCachedStyleSheetClient):
(WebCore::InspectorAuditResourcesObject::InspectorAuditCachedSVGDocumentClient):
* inspector/InspectorAuditResourcesObject.cpp: Added.
(WebCore::InspectorAuditResourcesObject::InspectorAuditResourcesObject):
(WebCore::InspectorAuditResourcesObject::getResources):
(WebCore::InspectorAuditResourcesObject::getResourceContent):
(WebCore::InspectorAuditResourcesObject::clientForResource):

* inspector/agents/InspectorPageAgent.h:
* inspector/agents/InspectorPageAgent.cpp:
(WebCore::InspectorPageAgent::cachedResourcesForFrame): Added.
(WebCore::allResourcesURLsForFrame):
Moved a file static function to be a class static function so it can be used elsewhere.

* CMakeLists.txt:
* DerivedSources-input.xcfilelist:
* DerivedSources-output.xcfilelist:
* DerivedSources.make:
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:

LayoutTests:

* inspector/audit/resources/sample-resource.css: Added.
* inspector/audit/resources/sample-resource.js: Added.
* inspector/audit/run-resources.html: Added.
* inspector/audit/run-resources-expected.txt: Added.

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

5 months agoWeb Inspector: Console: getEventListeners should work for any EventTarget
drousso@apple.com [Thu, 14 Mar 2019 09:46:01 +0000 (09:46 +0000)]
Web Inspector: Console: getEventListeners should work for any EventTarget
https://bugs.webkit.org/show_bug.cgi?id=195713

Reviewed by Joseph Pecoraro.

Source/WebCore:

Test: inspector/console/command-line-api-getEventListeners.html

* dom/EventTarget.h:
* dom/EventTarget.cpp:
(WebCore::EventTarget::eventTypes): Added.

* inspector/CommandLineAPIHost.idl:
* inspector/CommandLineAPIHost.h:
(WebCore::CommandLineAPIHost::init):
* inspector/CommandLineAPIHost.cpp:
(WebCore::CommandLineAPIHost::disconnect):
(WebCore::CommandLineAPIHost::getEventListeners):
(WebCore::listenerEntriesFromListenerInfo): Deleted.

* inspector/CommandLineAPIModuleSource.js:
(CommandLineAPIImpl.prototype.getEventListeners):

* inspector/InspectorController.cpp:
(WebCore::InspectorController::InspectorController):
* inspector/WorkerInspectorController.cpp:
(WebCore::WorkerInspectorController::WorkerInspectorController):

Source/WebInspectorUI:

* UserInterface/Models/NativeFunctionParameters.js:

LayoutTests:

* inspector/console/command-line-api-getEventListeners.html:
* inspector/console/command-line-api-getEventListeners-expected.txt:

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

5 months agoWeb Inspector: Styles: `::-webkit-scrollbar*` rules aren't shown
drousso@apple.com [Thu, 14 Mar 2019 09:33:24 +0000 (09:33 +0000)]
Web Inspector: Styles: `::-webkit-scrollbar*` rules aren't shown
https://bugs.webkit.org/show_bug.cgi?id=195123
<rdar://problem/48450148>

Reviewed by Joseph Pecoraro.

Source/JavaScriptCore:

* inspector/protocol/CSS.json:
Add `CSS.PseudoId` enum, rather than send a number, so that we have more knowledge about
which pseudo type the rule corresponds to (e.g. a string is more descriptive than a number).

Source/WebCore:

Test: inspector/css/getMatchedStylesForNode.html

* inspector/agents/InspectorCSSAgent.cpp:
(WebCore::protocolValueForPseudoId): Added.
(WebCore::InspectorCSSAgent::getMatchedStylesForNode):

Source/WebInspectorUI:

* UserInterface/Controllers/CSSManager.js:
(WI.CSSManager.displayNameForPseudoId): Added.

* UserInterface/Models/DOMNodeStyles.js:
(WI.DOMNodeStyles.static uniqueOrderedStyles): Added.
(WI.DOMNodeStyles.prototype.get uniqueOrderedStyles):

* UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js:
(WI.SpreadsheetRulesStyleDetailsPanel.prototype.layout):
(WI.SpreadsheetRulesStyleDetailsPanel.prototype._handleSectionFilterApplied):
Rather than iterate over the `WI.DOMNode`'s list of pseudo-elements (which is only ::before
and ::after), we iterate over the `WI.DOMNodeStyle`'s list of pseudo-element rules. This is
an object where the key is a `CSS.PseudoId` and the value is an object containing all the
matched rules and ordered styles for that pseudo-type. We can preserve the current
functionality by using the ::before/::after `WI.DOMNode` when we encounter one of those
pseudo-ids.

An additional benefit of this change is that `::before`/`::after` styles will still appear
in the Rules panel even if they don't have a `content` property set (e.g. when the
`::before`/`::after` pseudo-element doesn't exist). This is because the styles are no longer
fetched from those pseudo-element nodes directly, but rather as a matched style for the
parent node. As such, editing a `content` property to become invalid/disablde in a
`::before`/`::after` rule won't make the entire rule disappeaer.

LayoutTests:

* inspector/css/getMatchedStylesForNode.html: Added.
* inspector/css/getMatchedStylesForNode-expected.txt: Added.

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

5 months ago[bmalloc] Add StaticPerProcess for known types to save pages
ysuzuki@apple.com [Thu, 14 Mar 2019 08:02:00 +0000 (08:02 +0000)]
[bmalloc] Add StaticPerProcess for known types to save pages
https://bugs.webkit.org/show_bug.cgi?id=195691

Reviewed by Mark Lam.

As initial memory footprint of VM + JSGlobalObject becomes 488KB dirty size in fast malloc memory (w/ JSC_useJIT=0 and Malloc=1), pages for PerProcess is costly.
For example, under Malloc=1 mode, we still need to allocate PerProcess<DebugHeap> and PerProcess<Environment>. And sizeof(Environment) is only 1 (bool flag), and
sizeof(DebugHeap) is 120. But we are allocating 1 pages for them. Since page size in iOS is 16KB, this 121B consumes 16KB dirty memory, and it is not negligible
size if we keep in mind that the current fast malloc heap size is 488KB. Putting them into the __DATA section, close to the other mutable data, we can avoid allocating
this page.

This patch revives the SafePerProcess concept in r228107. We add "StaticPerProcess<T>", which allocates underlying storage statically in the __DATA section instead of
allocating it at runtime. And we use this StaticPerProcess<T> for types where (1) T is known a priori, and (2) sizeof(T) is not huge.

* bmalloc.xcodeproj/project.pbxproj:
* bmalloc/AllIsoHeaps.cpp:
* bmalloc/AllIsoHeaps.h:
* bmalloc/Allocator.cpp:
(bmalloc::Allocator::Allocator):
* bmalloc/Cache.cpp:
(bmalloc::Cache::Cache):
* bmalloc/CryptoRandom.cpp:
(bmalloc::cryptoRandom):
* bmalloc/Deallocator.cpp:
(bmalloc::Deallocator::Deallocator):
* bmalloc/DebugHeap.cpp:
* bmalloc/DebugHeap.h:
(bmalloc::DebugHeap::tryGet):
* bmalloc/Environment.cpp:
* bmalloc/Environment.h:
* bmalloc/Gigacage.cpp:
(Gigacage::Callback::Callback):
(Gigacage::Callback::function):
(bmalloc::PrimitiveDisableCallbacks::PrimitiveDisableCallbacks):
(Gigacage::disablePrimitiveGigacage):
(Gigacage::addPrimitiveDisableCallback):
(Gigacage::removePrimitiveDisableCallback):
(Gigacage::shouldBeEnabled):
(Gigacage::bmalloc::Callback::Callback): Deleted.
(Gigacage::bmalloc::Callback::function): Deleted.
(Gigacage::bmalloc::PrimitiveDisableCallbacks::PrimitiveDisableCallbacks): Deleted.
* bmalloc/Heap.cpp:
(bmalloc::Heap::Heap):
(bmalloc::Heap::tryAllocateLarge):
* bmalloc/IsoDirectoryInlines.h:
(bmalloc::passedNumPages>::takeFirstEligible):
(bmalloc::passedNumPages>::didBecome):
* bmalloc/IsoHeapImpl.cpp:
(bmalloc::IsoHeapImplBase::addToAllIsoHeaps):
* bmalloc/IsoPage.cpp:
(bmalloc::IsoPageBase::allocatePageMemory):
* bmalloc/IsoTLS.cpp:
(bmalloc::IsoTLS::IsoTLS):
(bmalloc::IsoTLS::ensureEntries):
(bmalloc::IsoTLS::forEachEntry):
* bmalloc/IsoTLSEntry.cpp:
(bmalloc::IsoTLSEntry::IsoTLSEntry):
* bmalloc/IsoTLSInlines.h:
(bmalloc::IsoTLS::allocateSlow):
(bmalloc::IsoTLS::deallocateSlow):
* bmalloc/IsoTLSLayout.cpp:
* bmalloc/IsoTLSLayout.h:
* bmalloc/Scavenger.cpp:
(bmalloc::Scavenger::Scavenger):
(bmalloc::dumpStats):
(bmalloc::Scavenger::scavenge):
(bmalloc::Scavenger::partialScavenge):
(bmalloc::Scavenger::freeableMemory):
(bmalloc::Scavenger::footprint):
* bmalloc/Scavenger.h:
* bmalloc/StaticPerProcess.h: Added.
* bmalloc/VMHeap.cpp:
* bmalloc/VMHeap.h:
* bmalloc/Zone.h:
* bmalloc/bmalloc.cpp:
(bmalloc::api::scavenge):
(bmalloc::api::isEnabled):
(bmalloc::api::setScavengerThreadQOSClass):
(bmalloc::api::enableMiniMode):
* test/testbmalloc.cpp:
(assertEmptyPointerSet):
(assertHasObjects):
(assertHasOnlyObjects):
(assertClean):

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

5 months agoWeb Inspector: we should show artificial context menus on mousedown instead of click
drousso@apple.com [Thu, 14 Mar 2019 08:00:56 +0000 (08:00 +0000)]
Web Inspector: we should show artificial context menus on mousedown instead of click
https://bugs.webkit.org/show_bug.cgi?id=195494

Reviewed by Joseph Pecoraro.

* UserInterface/Views/ContextMenu.js:
(WI.ContextMenu):
(WI.ContextMenu.prototype.show):
(WI.ContextMenu.prototype.addBeforeShowCallback): Added.
(WI.ContextMenu.prototype.handleEvent):
Provide a way to register a callback that will be called right as the "contextmenu" event is
handled, but before the context menu is actually shown. Since "mousedown" events are also
fired when/before a "contextmenu" event is fired, each of the below callers has to maintain
some state indicating "we are about to show a context menu, so ignore all "mousedown" events
until that time". Without this, the below callers wouldn't be able to tell when the context
menu is finally shown.

* UserInterface/Base/SearchUtilities.js:
(WI.SearchUtilities.createSettingsButton):
* UserInterface/Views/CanvasContentView.js:
(WI.CanvasContentView):
(WI.CanvasContentView.prototype.initialLayout):
(WI.CanvasContentView.prototype._handleCanvasElementButtonMouseDown): Added.
(WI.CanvasContentView.prototype._handleViewShaderButtonMouseDown): Added.
(WI.CanvasContentView.prototype._handleViewRecordingButtonMouseDown): Added.
(WI.CanvasContentView.prototype._canvasElementButtonClicked): Deleted.
(WI.CanvasContentView.prototype._handleViewShaderButtonClicked): Deleted.
(WI.CanvasContentView.prototype._handleViewRecordingButtonClicked): Deleted.
* UserInterface/Views/DebuggerSidebarPanel.js:
(WI.DebuggerSidebarPanel):
(WI.DebuggerSidebarPanel.prototype._handleCreateBreakpointMouseDown): Added.
(WI.DebuggerSidebarPanel.prototype._handleCreateBreakpointClicked): Deleted.
* UserInterface/Views/SourcesNavigationSidebarPanel.js:
(WI.SourcesNavigationSidebarPanel):
(WI.SourcesNavigationSidebarPanel.prototype._handleCreateBreakpointMouseDown): Added.
(WI.SourcesNavigationSidebarPanel.prototype._handleCreateBreakpointClicked): Deleted.
* UserInterface/Views/TabBar.js:
(WI.TabBar.prototype._handleMouseDown):
* UserInterface/Views/LegacyTabBar.js:
(WI.LegacyTabBar.prototype._handleMouseDown):

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

5 months agoFix the argument type of RenderView::resumePausedImageAnimationsIfNeeded()
benjamin@webkit.org [Thu, 14 Mar 2019 05:44:24 +0000 (05:44 +0000)]
Fix the argument type of RenderView::resumePausedImageAnimationsIfNeeded()
https://bugs.webkit.org/show_bug.cgi?id=195659

Reviewed by Saam Barati.

The two callers of resumePausedImageAnimationsIfNeeded() both get the IntRect
as a reference. The rect was going on the stack then used as a reference again.

* rendering/RenderView.cpp:
(WebCore::RenderView::resumePausedImageAnimationsIfNeeded):
* rendering/RenderView.h:

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

5 months ago[ContentChangeObserver] Stop content observation when content calls preventDefault...
zalan@apple.com [Thu, 14 Mar 2019 04:49:15 +0000 (04:49 +0000)]
[ContentChangeObserver] Stop content observation when content calls preventDefault() on touch events
https://bugs.webkit.org/show_bug.cgi?id=195724
<rdar://problem/48873456>

Reviewed by Simon Fraser.

Source/WebCore:

Call willNotProceedWithClick on preventDefault. This is very similar to the long press case.

* page/ios/ContentChangeObserver.cpp:
(WebCore::willNotProceedWithClick):
(WebCore::ContentChangeObserver::didRecognizeLongPress):
(WebCore::ContentChangeObserver::didPreventDefaultForEvent):
* page/ios/ContentChangeObserver.h:

Source/WebKit:

* WebProcess/WebCoreSupport/ios/WebChromeClientIOS.mm:
(WebKit::WebChromeClient::didPreventDefaultForEvent):

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

5 months agoMake -[_WKAttachment setFileWrapper:contentType:completion:] robust when given a...
wenson_hsieh@apple.com [Thu, 14 Mar 2019 03:59:21 +0000 (03:59 +0000)]
Make -[_WKAttachment setFileWrapper:contentType:completion:] robust when given a nil completion handler
https://bugs.webkit.org/show_bug.cgi?id=195725
<rdar://problem/48545062>

Reviewed by Tim Horton.

Source/WebKit:

Add a missing nil check before invoking the given completionHandler in the case where the attachment is invalid.
Tested by augmenting WKAttachmentTests.SetFileWrapperForPDFImageAttachment to exercise this scenario.

* UIProcess/API/APIAttachment.cpp:
(API::Attachment::invalidate):

Additionally make sure that an invalidated _WKAttachment is also considered to be disconnected.

* UIProcess/API/Cocoa/_WKAttachment.mm:
(-[_WKAttachment setFileWrapper:contentType:completion:]):

Tools:

Test that we don't crash when changing the file wrapper of an invalid attachment, if the given completion
handler is nil.

* TestWebKitAPI/Tests/WebKitCocoa/WKAttachmentTests.mm:
(TestWebKitAPI::TEST):

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

5 months agoTest freshness page should improve the ability to correlating issues from same builder.
dewei_zhu@apple.com [Thu, 14 Mar 2019 03:07:40 +0000 (03:07 +0000)]
Test freshness page should improve the ability to correlating issues from same builder.
https://bugs.webkit.org/show_bug.cgi?id=195242

Reviewed by Ryosuke Niwa.

Added the ability to highlight indicators with same builder when mouse is hovering over one indicator.
This is a very useful visualization for correlating issues specific to a builder.
Added tooltip with latest build link when hovering over an indicator.

* public/v3/components/freshness-indicator.js:
(FreshnessIndicator): Removed 'summary' field as it's no longer needed.
Added 'highlighted' field.
(FreshnessIndicator.prototype.update): Added 'highlighted' argument.
(FreshnessIndicator.prototype.didConstructShadowTree): Make indicator to dispatch mouse enter and leave
messages so that UI can highlight corresponding cells.
(FreshnessIndicator.prototype.render):
(FreshnessIndicator.cssTemplate):
* public/v3/pages/test-freshness-page.js: Added tooltip to show latest build time and build link.
Added logic to manually compute table body height.
(TestFreshnessPage):
(TestFreshnessPage.prototype.didConstructShadowTree):
(TestFreshnessPage.prototype._fetchTestResults):
(TestFreshnessPage.prototype.render):
(TestFreshnessPage.prototype._renderTooltip):
(TestFreshnessPage.prototype._constructTableCell):
(TestFreshnessPage.cssTemplate):

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

5 months agoAdd utility function to allow easy reverse range-based iteration of a container
commit-queue@webkit.org [Thu, 14 Mar 2019 02:46:16 +0000 (02:46 +0000)]
Add utility function to allow easy reverse range-based iteration of a container
https://bugs.webkit.org/show_bug.cgi?id=195542

Patch by Sam Weinig <sam@webkit.org> on 2019-03-13
Reviewed by Antti Koivisto.

Source/WTF:

Add functions to create an IteratorRange<T> that will iterate a container backwards. It
works with any container that is compatible with std::rbegin() and std::rend(). It is
expected to be used in conjunction with range-based for-loops like so:

for (auto& value : WTF::makeReversedRange(myContainer))
    ...

* wtf/IteratorRange.h:
(WTF::makeReversedRange):

Tools:

* TestWebKitAPI/CMakeLists.txt:
* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WTF/IteratorRange.cpp: Added.
(TestWebKitAPI::TEST):
Add test to ensure WTF::makeReversedRange() works correctly and uses the correct types.

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

5 months ago[Web GPU] Updates to GPUCommandBuffer for new GPUCommandQueue concept
justin_fan@apple.com [Thu, 14 Mar 2019 01:42:12 +0000 (01:42 +0000)]
[Web GPU] Updates to GPUCommandBuffer for new GPUCommandQueue concept
https://bugs.webkit.org/show_bug.cgi?id=195083
<rdar://problem/48423591>

Reviewed by Dean Jackson.

Source/WebCore:

WebGPUCommandBuffer now represents a completed GPUCommandBuffer that can only be used in queue submits. The previous WebGPUCommandBuffer
is now WebGPUCommandEncoder.

Affected Web GPU tests updated to match new API.

New files and symbols:
* CMakeLists.txt:
* DerivedSources.make:
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/WebCoreBuiltinNames.h:

Implement new WebGPUCommandBuffer, now just a DOM object carrier for a finished GPUCommandBuffer:
* Modules/webgpu/WebGPUCommandBuffer.cpp:
(WebCore::WebGPUCommandBuffer::create):
(WebCore::WebGPUCommandBuffer::WebGPUCommandBuffer):
(WebCore::WebGPUBufferCopyView::tryCreateGPUBufferCopyView const): Deleted.
(WebCore::WebGPUTextureCopyView::tryCreateGPUTextureCopyView const): Deleted.
(WebCore::WebGPUCommandBuffer::beginRenderPass): Deleted.
(WebCore::WebGPUCommandBuffer::copyBufferToBuffer): Deleted.
(WebCore::WebGPUCommandBuffer::copyBufferToTexture): Deleted.
(WebCore::WebGPUCommandBuffer::copyTextureToBuffer): Deleted.
(WebCore::WebGPUCommandBuffer::copyTextureToTexture): Deleted.
* Modules/webgpu/WebGPUCommandBuffer.h:
(WebCore::WebGPUCommandBuffer::commandBuffer):
(WebCore::WebGPUCommandBuffer::commandBuffer const): Deleted.
* Modules/webgpu/WebGPUCommandBuffer.idl:

Rename old WebGPUCommandBuffer to WebGPUCommandEncoder:
* Modules/webgpu/WebGPUCommandEncoder.cpp: Copied from Source/WebCore/Modules/webgpu/WebGPUCommandBuffer.cpp.
(WebCore::WebGPUBufferCopyView::tryCreateGPUBufferCopyView const):
(WebCore::WebGPUTextureCopyView::tryCreateGPUTextureCopyView const):
(WebCore::WebGPUCommandEncoder::create):
(WebCore::WebGPUCommandEncoder::WebGPUCommandEncoder):
(WebCore::WebGPUCommandEncoder::beginRenderPass):
(WebCore::WebGPUCommandEncoder::copyBufferToBuffer):
(WebCore::WebGPUCommandEncoder::copyBufferToTexture):
(WebCore::WebGPUCommandEncoder::copyTextureToBuffer):
(WebCore::WebGPUCommandEncoder::copyTextureToTexture):
(WebCore::WebGPUCommandEncoder::finish): Added. "Completes" this and invalidates it. Returns its GPUCommandBuffer, ready for submission.
* Modules/webgpu/WebGPUCommandEncoder.h: Copied from Source/WebCore/Modules/webgpu/WebGPUCommandBuffer.h.
* Modules/webgpu/WebGPUCommandEncoder.idl: Copied from Source/WebCore/Modules/webgpu/WebGPUCommandBuffer.idl.
* Modules/webgpu/WebGPUDevice.cpp:
(WebCore::WebGPUDevice::createCommandEncoder const): Renamed fom createCommandBuffer. Now returns non-nullable.
(WebCore::WebGPUDevice::createCommandBuffer const): Deleted.
* Modules/webgpu/WebGPUDevice.h:
* Modules/webgpu/WebGPUDevice.idl:
* Modules/webgpu/WebGPUProgrammablePassEncoder.cpp:
(WebCore::WebGPUProgrammablePassEncoder::WebGPUProgrammablePassEncoder):
(WebCore::WebGPUProgrammablePassEncoder::endPass): No longer returns the original WebGPUCommandBuffer.
(WebCore::WebGPUProgrammablePassEncoder::setBindGroup const):
(WebCore::WebGPUProgrammablePassEncoder::setPipeline):
* Modules/webgpu/WebGPUProgrammablePassEncoder.h:
* Modules/webgpu/WebGPUProgrammablePassEncoder.idl:
* Modules/webgpu/WebGPUQueue.cpp:
(WebCore::WebGPUQueue::submit): Replace unnecessary rvalue reference parameter.
* Modules/webgpu/WebGPUQueue.h:
* Modules/webgpu/WebGPUQueue.idl:
* Modules/webgpu/WebGPURenderPassEncoder.cpp:
(WebCore::WebGPURenderPassEncoder::create):
(WebCore::WebGPURenderPassEncoder::WebGPURenderPassEncoder):
(WebCore::WebGPURenderPassEncoder::setVertexBuffers):
(WebCore::WebGPURenderPassEncoder::draw):
(WebCore::WebGPURenderPassEncoder::passEncoder const): Now returns a pointer since it is properly backed by a RefPtr.
* Modules/webgpu/WebGPURenderPassEncoder.h:
* Modules/webgpu/WebGPUSwapChain.cpp:
(WebCore::WebGPUSwapChain::getCurrentTexture): No longer invalidates m_currentTexture. Doh!
* platform/graphics/gpu/GPUCommandBuffer.h: Missing includes for the *CopyView structs.
* platform/graphics/gpu/GPUDevice.cpp:
(WebCore::GPUDevice::tryCreateCommandBuffer const): Renamed from createCommandBuffer.
(WebCore::GPUDevice::createCommandBuffer): Deleted.
* platform/graphics/gpu/GPUDevice.h:
* platform/graphics/gpu/cocoa/GPUCommandBufferMetal.mm:
(WebCore::GPUCommandBuffer::tryCreate): Renamed from create.
(WebCore::GPUCommandBuffer::create): Deleted.

LayoutTests:

Update existing Web GPU tests for GPUCommandEncoder and new GPUCommandBuffer.

* webgpu/blit-commands.html:
* webgpu/buffer-command-buffer-races.html:
* webgpu/buffer-resource-triangles.html:
* webgpu/command-buffers-expected.txt:
* webgpu/command-buffers.html:
* webgpu/depth-enabled-triangle-strip.html:
* webgpu/js/webgpu-functions.js:
(beginBasicRenderPass):
* webgpu/render-command-encoding.html:
* webgpu/simple-triangle-strip.html:
* webgpu/texture-triangle-strip.html:
* webgpu/vertex-buffer-triangle-strip.html:

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

5 months agoREGRESSION (r242908): 'NSInvalidArgumentException', reason: '+[PKPaymentMerchantSess...
timothy@apple.com [Thu, 14 Mar 2019 01:40:05 +0000 (01:40 +0000)]
REGRESSION (r242908):  'NSInvalidArgumentException', reason: '+[PKPaymentMerchantSession count]: unrecognized selector sent to class 0x1c0fae060'
https://bugs.webkit.org/show_bug.cgi?id=195720

Reviewed by Andy Estes.

Add back decode(Decoder& decoder, Class allowedClass) for Apple Pay code.

* Shared/Cocoa/ArgumentCodersCocoa.h:
(IPC::decode): Added.

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

5 months agoWeb Inspector: Debugger: pausing in an inline script on a page with a URL query creat...
drousso@apple.com [Thu, 14 Mar 2019 01:35:35 +0000 (01:35 +0000)]
Web Inspector: Debugger: pausing in an inline script on a page with a URL query creates an Extra Script
https://bugs.webkit.org/show_bug.cgi?id=195705
<rdar://problem/48853820>

Reviewed by Antoine Quint.

* UserInterface/Models/Script.js:
(WI.Script.prototype._resolveResource):
If the page's URL has a query parameter, the payload we receive for any inline <script>s
doesn't include the query parameter as part of its URL. As such, if there isn't an existing
resource with a URL that exactly matches the URL of the script and if the URL of the main
resource for the script's target starts with the URL of the script, we assume that the
script "belongs" to the target's main resource and associate the script with it as such.

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

5 months ago[JSC] CodeBlock::visitChildren is reporting extra memory even when its JITCode is...
ticaiolima@gmail.com [Thu, 14 Mar 2019 01:09:42 +0000 (01:09 +0000)]
[JSC] CodeBlock::visitChildren is reporting extra memory even when its JITCode is singleton
https://bugs.webkit.org/show_bug.cgi?id=195638

Reviewed by Mark Lam.

This patch introduces a m_isShared flag to track whether the
JITCode is shared between many CodeBlocks. This flag is used in
`CodeBlock::setJITCode` and `CodeBlock::visitChildren` to avoid
reporting duplicated extra memory for singleton JITCodes.
With those changes, we now stop counting singleton LLIntEntrypoints
as extra memory, since they are declared as static variables. This
change can potentially avoid unecessary GC pressure, because
extra memory is used by Heap::updateAllocationLimits() to update Heap
limits.
Even though it is hard to show performance difference for this change
(see results below), it is important to keep extra memory usage
correct. Otherwise, it can be a source of a complicated bug on
GC in the future.

Results from last run of Speedometer 2 comparing ToT and changes. We
collected those numbers running Minibrowser on a MacBook Pro 15-inch
with 2,6 GHz Intel Core i7. Both versions are with JIT disabled,
since these singleton JITCode are only used by this configuration:

Speedometer2 Run #1
    ToT: 58.2 +- 1.1
    changes: 57.9 +- 0.99

Speedometer2 Run #2
    ToT: 58.5 +- 1.7
    changes: 58.0 +- 1.5

Speedometer2 Run #2
    ToT: 58.5 +- 0.99
    changes: 57.1 +- 1.5

* bytecode/CodeBlock.cpp:
(JSC::CodeBlock::estimatedSize):
(JSC::CodeBlock::visitChildren):
* bytecode/CodeBlock.h:
(JSC::CodeBlock::setJITCode):
* jit/JITCode.cpp:
(JSC::JITCode::JITCode):
(JSC::JITCodeWithCodeRef::JITCodeWithCodeRef):
(JSC::DirectJITCode::DirectJITCode):
(JSC::NativeJITCode::NativeJITCode):
* jit/JITCode.h:
(JSC::JITCode::isShared const):
* llint/LLIntEntrypoint.cpp:
(JSC::LLInt::setFunctionEntrypoint):
(JSC::LLInt::setEvalEntrypoint):
(JSC::LLInt::setProgramEntrypoint):
(JSC::LLInt::setModuleProgramEntrypoint):

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

5 months agoStop using some deprecated SPI in WKDrawingView
timothy_horton@apple.com [Thu, 14 Mar 2019 00:50:35 +0000 (00:50 +0000)]
Stop using some deprecated SPI in WKDrawingView
https://bugs.webkit.org/show_bug.cgi?id=195706
<rdar://problem/48062599>

Reviewed by Wenson Hsieh.

* UIProcess/ios/WKDrawingView.mm:
(-[WKDrawingView renderedDrawing]):
(-[WKDrawingView PNGRepresentation]):
(-[WKDrawingView loadDrawingFromPNGRepresentation:]):

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

5 months agoUnreviewed attempt to fix the Windows build after r242920.
ryanhaddad@apple.com [Thu, 14 Mar 2019 00:38:15 +0000 (00:38 +0000)]
Unreviewed attempt to fix the Windows build after r242920.

* WebCoreSupport/WebFrameLoaderClient.h:

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

5 months ago[GTK] Unreviewed test gardening
aboya@igalia.com [Thu, 14 Mar 2019 00:37:46 +0000 (00:37 +0000)]
[GTK] Unreviewed test gardening
https://bugs.webkit.org/show_bug.cgi?id=195717

* platform/gtk/TestExpectations:
* platform/wpe/TestExpectations:

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

5 months agoUnreviewed speculative build fix for watchOS after r242908.
timothy@apple.com [Thu, 14 Mar 2019 00:17:23 +0000 (00:17 +0000)]
Unreviewed speculative build fix for watchOS after r242908.

* Shared/Cocoa/ArgumentCodersCocoa.mm:
(IPC::decodeObject):

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

5 months agoGardening: reducing the variants on 2 tests to avoid timing out on JSC Debug queue.
mark.lam@apple.com [Thu, 14 Mar 2019 00:06:03 +0000 (00:06 +0000)]
Gardening: reducing the variants on 2 tests to avoid timing out on JSC Debug queue.
https://bugs.webkit.org/show_bug.cgi?id=195415

Not reviewed.

Changed these tests to only run the default configuration.
The ftl-no-cjit-validate-sampling-profiler variant was timing out.
There's no strong need to run this test on that variant.

* stress/dfg-to-string-on-int-does-gc.js:
* stress/dfg-to-string-on-string-or-string-object-does-not-gc.js:

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

5 months ago[WeakPtr] RenderListMarker::m_listItem should be a WeakPtr
zalan@apple.com [Wed, 13 Mar 2019 23:46:05 +0000 (23:46 +0000)]
[WeakPtr] RenderListMarker::m_listItem should be a WeakPtr
https://bugs.webkit.org/show_bug.cgi?id=195704
<rdar://problem/48486278>

Reviewed by Simon Fraser.

* rendering/RenderListMarker.cpp:
(WebCore::RenderListMarker::RenderListMarker):
(WebCore::RenderListMarker::paint):
(WebCore::RenderListMarker::layout):
(WebCore::RenderListMarker::updateContent):
(WebCore::RenderListMarker::computePreferredLogicalWidths):
(WebCore::RenderListMarker::lineHeight const):
(WebCore::RenderListMarker::baselinePosition const):
(WebCore::RenderListMarker::suffix const):
(WebCore::RenderListMarker::isInside const):
(WebCore::RenderListMarker::getRelativeMarkerRect):
* rendering/RenderListMarker.h:

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

5 months agoBlock all plugins smaller than 5x5px
dino@apple.com [Wed, 13 Mar 2019 23:37:32 +0000 (23:37 +0000)]
Block all plugins smaller than 5x5px
https://bugs.webkit.org/show_bug.cgi?id=195702
<rdar://problem/28435204>

Reviewed by Sam Weinig.

Source/WebCore:

Block all plugins that are smaller than a threshold, in this case
5px x 5px. Other browsers have implemented this for a while, and now
that we have Intersection Observers, small plugins are no longer
necessary.

Test: plugins/small-plugin-blocked.html

* en.lproj/Localizable.strings: New message for a small plugin.
* platform/LocalizedStrings.cpp:
(WebCore::pluginTooSmallText):
* platform/LocalizedStrings.h:

* html/HTMLPlugInElement.cpp: Helper function for Internals testing.
(WebCore::HTMLPlugInElement::isBelowSizeThreshold const):
* html/HTMLPlugInElement.h:

* loader/EmptyClients.cpp: Removed an unused function.
(WebCore::EmptyFrameLoaderClient::recreatePlugin): Deleted.
* loader/EmptyFrameLoaderClient.h:
* loader/FrameLoaderClient.h:

* page/Settings.yaml: Add flag for new feature.

* rendering/RenderEmbeddedObject.cpp: New unavailability reason for
embedded objects.
(WebCore::unavailablePluginReplacementText):
* rendering/RenderEmbeddedObject.h:
(WebCore::RenderEmbeddedObject::pluginUnavailabilityReason const):

* testing/Internals.cpp: Helper function for testing.
(WebCore::Internals::pluginIsBelowSizeThreshold):
* testing/Internals.h:
* testing/Internals.idl:

Source/WebKit:

Block all plugins that are smaller than a threshold, in this case
5x5px. Other browsers have implemented this for a while, and now
that we have Intersection Observers, small plugins are no longer
necessary.

* Shared/WebPreferences.yaml: New setting for this feature.

* UIProcess/WebPageProxy.cpp: Handle new unavailability type.
(WebKit::WebPageProxy::unavailablePluginButtonClicked):
* WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::shouldUnavailablePluginMessageBeButton const):

* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: Removed this function
as it was never being called.
(WebKit::WebFrameLoaderClient::recreatePlugin): Deleted.
* WebProcess/WebCoreSupport/WebFrameLoaderClient.h:

* WebProcess/WebPage/WebPage.cpp:
(WebKit::pluginIsSmall): Checks the size of the plugin.
(WebKit::WebPage::createPlugin): If the plugin is too small, stop it from
launching.

Source/WebKitLegacy/mac:

Removed a function that was never being called.

* WebCoreSupport/WebFrameLoaderClient.h:
* WebCoreSupport/WebFrameLoaderClient.mm:
(WebFrameLoaderClient::recreatePlugin): Deleted.

LayoutTests:

New test for some small plugins. Updated existing tests
to create plugins bigger than a threshold if necessary.

* plugins/clicking-missing-plugin-fires-delegate.html:
* plugins/destroy-stream-twice.html:
* plugins/npruntime/npruntime.html:
* plugins/object-embed-plugin-scripting.html:
* plugins/small-plugin-blocked-expected.txt: Added.
* plugins/small-plugin-blocked.html: Added.
* platform/mac-wk1/TestExpectations: Skip new test on WK1.

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

5 months agoUse RenderBox::previousSiblingBox/nextSiblingBox in RenderMultiColumnFlow
zalan@apple.com [Wed, 13 Mar 2019 23:36:02 +0000 (23:36 +0000)]
Use RenderBox::previousSiblingBox/nextSiblingBox in RenderMultiColumnFlow
https://bugs.webkit.org/show_bug.cgi?id=195701
<rdar://problem/48448658>

Reviewed by Simon Fraser.

Source/WebCore:

It's safer to use existing RenderBox functions to get sibling boxes.

Test: fast/ruby/crash-when-paginated-ruby.html

* rendering/RenderMultiColumnFlow.cpp:
(WebCore::RenderMultiColumnFlow::nextColumnSetOrSpannerSiblingOf):
(WebCore::RenderMultiColumnFlow::previousColumnSetOrSpannerSiblingOf):

LayoutTests:

* fast/ruby/crash-when-paginated-ruby-expected.txt: Added.
* fast/ruby/crash-when-paginated-ruby.html: Added.

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

5 months agoAdd support for new StagedFrameworks layout
krollin@apple.com [Wed, 13 Mar 2019 23:24:19 +0000 (23:24 +0000)]
Add support for new StagedFrameworks layout
https://bugs.webkit.org/show_bug.cgi?id=195543

Reviewed by Alexey Proskuryakov.

Source/JavaScriptCore:

When creating the WebKit layout for out-of-band Safari/WebKit updates,
use an optional path prefix when called for.

* Configurations/Base.xcconfig:

Source/ThirdParty/libwebrtc:

When creating the WebKit layout for out-of-band Safari/WebKit updates,
use an optional path prefix when called for.

* Configurations/Base.xcconfig:

Source/WebCore:

When creating the WebKit layout for out-of-band Safari/WebKit updates,
use an optional path prefix when called for.

No new tests since there should be no observable behavior difference.

* Configurations/WebCore.xcconfig:

Source/WebCore/PAL:

When creating the WebKit layout for out-of-band Safari/WebKit updates,
use an optional path prefix when called for.

* Configurations/PAL.xcconfig:

Source/WebInspectorUI:

When creating the WebKit layout for out-of-band Safari/WebKit updates,
use an optional path prefix when called for.

Opportunistic cleanup: remove unused
OTHER_LDFLAGS_VERSIONED_FRAMEWORK_PATH variable, which otherwise would
have needlessly been updated to also incorporate the new prefix.

* Configurations/Base.xcconfig:
* Configurations/WebKitTargetConditionals.xcconfig: Added.

Source/WebKit:

When creating the WebKit layout for out-of-band Safari/WebKit updates,
use an optional path prefix when called for.

Update the dyld_env path in OTHER_LDFLAGS_VERSIONED_FRAMEWORK_PATH to
also understand about this layout.

* Configurations/BaseTarget.xcconfig:

Source/WebKitLegacy/mac:

When creating the WebKit layout for out-of-band Safari/WebKit updates,
use an optional path prefix when called for.

* Configurations/WebKitLegacy.xcconfig:

Source/WTF:

Opportunistic cleanup: remove unused JAVASCRIPTCORE_FRAMEWORKS_DIR
variable.

* Configurations/Base.xcconfig:

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

5 months agoFix an edge case where HTMLFormElement::removeFormElement is invoked twice with the...
wenson_hsieh@apple.com [Wed, 13 Mar 2019 23:18:26 +0000 (23:18 +0000)]
Fix an edge case where HTMLFormElement::removeFormElement is invoked twice with the same element
https://bugs.webkit.org/show_bug.cgi?id=195663
<rdar://problem/48576391>

Reviewed by Ryosuke Niwa.

Source/WebCore:

Currently, it's possible for HTMLFormControlElement's destructor to be reentrant. This may happen if the form
control element is ref'd while carrying out its destructor's logic. This may happen in two places in
HTMLFormControlElement (didChangeForm and resetDefaultButton), both of which actually don't require ensuring a
protected reference to the form control element since they should never result in any script execution.

To fix the bug, convert these strong references into raw pointers, and add ScriptDisallowedScope to ensure that
we don't change these codepaths in the future, such that they trigger arbitrary script execution.

Test: fast/forms/remove-associated-element-after-gc.html

* html/HTMLFormControlElement.cpp:
(WebCore::HTMLFormControlElement::didChangeForm):
* html/HTMLFormElement.cpp:
(WebCore::HTMLFormElement::resetDefaultButton):

LayoutTests:

Add a layout test to exercise the scenario described in the WebCore ChangeLog.

* fast/forms/remove-associated-element-after-gc-expected.txt: Added.
* fast/forms/remove-associated-element-after-gc.html: Added.

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

5 months ago[bmalloc] Use MADV_FREE on FreeBSD
yoshiaki.jitsukawa@sony.com [Wed, 13 Mar 2019 23:07:06 +0000 (23:07 +0000)]
[bmalloc] Use MADV_FREE on FreeBSD
https://bugs.webkit.org/show_bug.cgi?id=195665

Reviewed by Geoffrey Garen.

* bmalloc/BPlatform.h:

Introduce BOS_FREEBSD, which is equivalent to WTF_OS_FREEBSD

* bmalloc/VMAllocate.h:
(bmalloc::vmDeallocatePhysicalPages):

Use MADV_FREE instead of MADV_DONTNEED if BOS(FREEBSD), since on FreeBSD,
unlike on Linux, MADV_DONTNEED doesn't let the OS discard the contents of
the pages.

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

5 months agoRemove some unnecessary !USE(UIKIT_KEYBOARD_ADDITIONS) guards
dbates@webkit.org [Wed, 13 Mar 2019 22:26:08 +0000 (22:26 +0000)]
Remove some unnecessary !USE(UIKIT_KEYBOARD_ADDITIONS) guards
https://bugs.webkit.org/show_bug.cgi?id=195703

Reviewed by Tim Horton.

Remove out-of-date comment and unncessary !USE(UIKIT_KEYBOARD_ADDITIONS) guards. Following
r240604 we now make use of WebCore::windowsKeyCodeForCharCode() even for hardware key events
when USE(UIKIT_KEYBOARD_ADDITIONS) is enabled.

No functionality changed. So, no new tests.

* platform/ios/KeyEventIOS.mm:
(WebCore::windowsKeyCodeForCharCode):
* platform/ios/WebEvent.mm:
(normalizedStringWithAppKitCompatibilityMapping):

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

5 months agoREGRESSION(r240946): Web Inspector: Styles: removing selected property doesn't update...
nvasilyev@apple.com [Wed, 13 Mar 2019 22:09:27 +0000 (22:09 +0000)]
REGRESSION(r240946): Web Inspector: Styles: removing selected property doesn't update overridden status
https://bugs.webkit.org/show_bug.cgi?id=195389
<rdar://problem/48658929>

Reviewed by Matt Baker.

Source/WebInspectorUI:

* UserInterface/Models/DOMNodeStyles.js:
(WI.DOMNodeStyles.prototype.changeStyleText):
Call DOMNodeStyles.prototype.refresh after the callback. No updates
to CSSStyleDeclaration happen until the callback is called.

LayoutTests:

* inspector/css/overridden-property-expected.txt: Added.
* inspector/css/overridden-property.html: Added.

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

5 months agoSource/WebCore:
simon.fraser@apple.com [Wed, 13 Mar 2019 22:06:18 +0000 (22:06 +0000)]
Source/WebCore:
Scrolling tree should reposition non-stacking order descendents of overflow:scroll
https://bugs.webkit.org/show_bug.cgi?id=195608

Reviewed by Zalan Bujtas.

Step 1: add scrolling tree positioning nodes classes (but don't create them yet).

Add Scrolling{State,Tree}PositionedNode to track composited layers that have to be repositioned when
an async overflow:scroll scrolls. There are two instances in which this is necessary, reflected by
the values of ScrollPositioningBehavior:

ScrollPositioningBehavior::Moves - a composited layer whose containing block chain includes an
    async overflow scroller, but whose composited (i.e. z-order) parent is outside of the overflow.
    When the overflow scrolls, this layer has to move along with the overflow.

ScrollPositioningBehavior::Stationary - a composited layer whose containing block chain skips the
    overflow scroller, but whose compositing (z-order) parent is the scroller, or inside the scroller.
    This only applies to position:absolute, on, for example, an overflow:scroll ith opacity.

PositionedNodes are modeled after Fixed/Sticky nodes, with a new type of layout constraint just called LayoutConstraints.

This patch adds support for PositionedNodes in the scrolling trees, but RenderLayerCompositor::computeCoordinatedPositioningForLayer()
is just a stub so the new node types aren't created yet.

RenderLayerBacking stores a ScrollingNodeID for the positioning role (just like the other roles). Since the Positioning
role is about position relative to ancestors, a node with both Positioning and FrameHosting or Scrolling roles treats
the Positioning node as the parent of the other types. A node should never have both Positioning and ViewportConstrained roles.

Test: scrollingcoordinator/scrolling-tree/positioned-nodes.html

* Sources.txt:
* SourcesCocoa.txt:
* WebCore.xcodeproj/project.pbxproj:
* page/scrolling/AsyncScrollingCoordinator.cpp:
(WebCore::AsyncScrollingCoordinator::setPositionedNodeGeometry):
(WebCore::AsyncScrollingCoordinator::setRelatedOverflowScrollingNodes):
* page/scrolling/AsyncScrollingCoordinator.h:
* page/scrolling/ScrollingConstraints.cpp:
(WebCore::operator<<):
* page/scrolling/ScrollingConstraints.h:
(WebCore::LayoutConstraints::LayoutConstraints):
(WebCore::LayoutConstraints::operator== const):
(WebCore::LayoutConstraints::operator!= const):
(WebCore::LayoutConstraints::alignmentOffset const):
(WebCore::LayoutConstraints::setAlignmentOffset):
(WebCore::LayoutConstraints::layerPositionAtLastLayout const):
(WebCore::LayoutConstraints::setLayerPositionAtLastLayout):
(WebCore::LayoutConstraints::scrollPositioningBehavior const):
(WebCore::LayoutConstraints::setScrollPositioningBehavior):
* page/scrolling/ScrollingCoordinator.cpp:
(WebCore::operator<<):
* page/scrolling/ScrollingCoordinator.h:
(WebCore::ScrollingCoordinator::setPositionedNodeGeometry):
(WebCore::ScrollingCoordinator::setRelatedOverflowScrollingNodes):
* page/scrolling/ScrollingCoordinatorTypes.h:
* page/scrolling/ScrollingStateNode.h:
(WebCore::ScrollingStateNode::isPositionedNode const):
* page/scrolling/ScrollingStatePositionedNode.cpp: Added.
(WebCore::ScrollingStatePositionedNode::create):
(WebCore::ScrollingStatePositionedNode::ScrollingStatePositionedNode):
(WebCore::ScrollingStatePositionedNode::clone):
(WebCore::ScrollingStatePositionedNode::setAllPropertiesChanged):
(WebCore::ScrollingStatePositionedNode::setRelatedOverflowScrollingNodes):
(WebCore::ScrollingStatePositionedNode::updateConstraints):
(WebCore::ScrollingStatePositionedNode::dumpProperties const):
* page/scrolling/ScrollingStatePositionedNode.h: Added.
* page/scrolling/ScrollingStateTree.cpp:
(WebCore::ScrollingStateTree::createNode):
* page/scrolling/ScrollingTree.cpp:
(WebCore::ScrollingTree::updateTreeFromStateNode):
* page/scrolling/ScrollingTree.h:
* page/scrolling/ScrollingTreeNode.h:
(WebCore::ScrollingTreeNode::isPositionedNode const):
* page/scrolling/cocoa/ScrollingTreePositionedNode.h: Copied from Source/WebCore/page/scrolling/cocoa/ScrollingTreeStickyNode.h.
* page/scrolling/cocoa/ScrollingTreePositionedNode.mm: Added.
(WebCore::ScrollingTreePositionedNode::create):
(WebCore::ScrollingTreePositionedNode::ScrollingTreePositionedNode):
(WebCore::ScrollingTreePositionedNode::~ScrollingTreePositionedNode):
(WebCore::ScrollingTreePositionedNode::commitStateBeforeChildren):
(WebCore::ScrollingTreePositionedNode::applyLayerPositions):
(WebCore::ScrollingTreePositionedNode::relatedNodeScrollPositionDidChange):
(WebCore::ScrollingTreePositionedNode::dumpProperties const):
* page/scrolling/cocoa/ScrollingTreeStickyNode.h:
* page/scrolling/mac/ScrollingTreeMac.cpp:
(ScrollingTreeMac::createScrollingTreeNode):
* platform/ScrollTypes.h:
* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::coordinatedScrollingRoles const):
(WebCore::RenderLayerBacking::detachFromScrollingCoordinator):
* rendering/RenderLayerBacking.h:
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::computeCoordinatedPositioningForLayer const):
(WebCore::scrollCoordinationRoleForNodeType):
(WebCore::RenderLayerCompositor::updateScrollCoordinationForLayer):
(WebCore::RenderLayerCompositor::updateScrollingNodeForViewportConstrainedRole):
(WebCore::RenderLayerCompositor::updateScrollingNodeLayers):
(WebCore::RenderLayerCompositor::updateScrollingNodeForPositioningRole):
* rendering/RenderLayerCompositor.h:

Source/WebKit:
Scrolling tree should reposition non-stacking order descendents of overflow:scroll.
https://bugs.webkit.org/show_bug.cgi?id=195608

Reviewed by Zalan Bujtas.

Step 1: add scrolling tree positioning nodes classes (but don't create them yet).

Add Scrolling{State,Tree}PositionedNode to track composited layers that have to be repositioned when
an async overflow:scroll scrolls. There are two instances in which this is necessary, reflected by
the values of ScrollPositioningBehavior:

ScrollPositioningBehavior::Moves - a composited layer whose containing block chain includes an
    async overflow scroller, but whose composited (i.e. z-order) parent is outside of the overflow.
    When the overflow scrolls, this layer has to move along with the overflow.

ScrollPositioningBehavior::Stationary - a composited layer whose containing block chain skips the
    overflow scroller, but whose compositing (z-order) parent is the scroller, or inside the scroller.
    This only applies to position:absolute, on, for example, an overflow:scroll ith opacity.

PositionedNodes are modeled after Fixed/Sticky nodes, with a new type of layout constraint just called LayoutConstraints.

This patch adds support for PositionedNodes in the scrolling trees, but RenderLayerCompositor::computeCoordinatedPositioningForLayer()
is just a stub so the new node types aren't created yet.

RenderLayerBacking stores a ScrollingNodeID for the positioning role (just like the other roles). Since the Positioning
role is about position relative to ancestors, a node with both Positioning and FrameHosting or Scrolling roles treats
the Positioning node as the parent of the other types. A node should never have both Positioning and ViewportConstrained roles.

* Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp:
(ArgumentCoder<ScrollingStateFrameScrollingNode>::encode):
(ArgumentCoder<ScrollingStatePositionedNode>::encode):
(ArgumentCoder<ScrollingStatePositionedNode>::decode):
(WebKit::encodeNodeAndDescendants):
(WebKit::RemoteScrollingCoordinatorTransaction::decode):
(WebKit::dump):
* Shared/WebCoreArgumentCoders.cpp:
(IPC::ArgumentCoder<LayoutConstraints>::encode):
(IPC::ArgumentCoder<LayoutConstraints>::decode):
(IPC::ArgumentCoder<StickyPositionViewportConstraints>::decode):
* Shared/WebCoreArgumentCoders.h:
* UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.cpp:
(WebKit::RemoteScrollingCoordinatorProxy::connectStateNodeLayers):
* UIProcess/RemoteLayerTree/RemoteScrollingTree.cpp:
(WebKit::RemoteScrollingTree::createScrollingTreeNode):
* UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.mm:
(WebKit::RemoteScrollingCoordinatorProxy::connectStateNodeLayers):

LayoutTests:
Scrolling tree should reposition non-stacking order descendents of overflow:scroll
https://bugs.webkit.org/show_bug.cgi?id=195608

Reviewed by Zalan Bujtas.

The results of this test will change when we enable positioned nodes. It tests various
combinations of overflow and stacking.

* platform/ios-wk2/scrollingcoordinator/scrolling-tree/positioned-nodes-expected.txt: Added.
* scrollingcoordinator/scrolling-tree/positioned-nodes-expected.txt: Added.
* scrollingcoordinator/scrolling-tree/positioned-nodes.html: Added.

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

5 months agoRemove unneeded --tradeDestructorBlocks option.
mark.lam@apple.com [Wed, 13 Mar 2019 22:05:19 +0000 (22:05 +0000)]
Remove unneeded --tradeDestructorBlocks option.
https://bugs.webkit.org/show_bug.cgi?id=195698
<rdar://problem/39681388>

Reviewed by Yusuke Suzuki.

There's no reason why we would ever want --tradeDestructorBlocks to be false.

Also, there was an assertion in BlockDirectory::endMarking() for when
(!Options::tradeDestructorBlocks() && needsDestruction()).  This assertion is
outdated because the BlockDirectory's m_empty set used to mean the set of all
blocks that have no live (as in not reachable by GC) objects and dead objects
also do not require destructors to be called on them.  The current meaning of
m_empty is that it is the set of all blocks that have no live objects,
independent of whether they needs destructors to be called on them or not.
The assertion is no longer valid for the new meaning of m_empty as m_empty may
now contain destructible blocks.  This assertion is now removed as part of this
patch.

* heap/BlockDirectory.cpp:
(JSC::BlockDirectory::endMarking):
* heap/LocalAllocator.cpp:
(JSC::LocalAllocator::tryAllocateWithoutCollecting):
* runtime/Options.h:

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

5 months agoCheck IDB quota usage through QuotaManager
youenn@apple.com [Wed, 13 Mar 2019 21:47:13 +0000 (21:47 +0000)]
Check IDB quota usage through QuotaManager
https://bugs.webkit.org/show_bug.cgi?id=195302

Reviewed by Chris Dumez.

Source/WebCore:

For every write operation, compute an estimate size and check for quota before proceeding.
When proceeding, store the estimate size in a map.
If size of the database is to be computed when the task is not done,
the estimate size will be added to the current size of the databases.
At the end of the task, the estimate size is removed from the map,
and the databases size is refreshed.

This patch implements size estimation for write tasks.
Put/add operations might overestimate the size
when an old value will be replaced by a new value.
In that case, we do not substract the old value size since we do not know it.

This patch implements database opening by adding a fixed small cost,
as we do not know whether the database is new or not.

For the first IDB request, we have not computed the size of the database.
To do so, we need to go to a background thread and do that file size computation.
For that purpose, we add support for being-initialized quota user.
Quota manager is calling whenInitialized on its quota user and will
delay any quota check requests until its quota user is answering this callback.

For in process IDB, use the default storage quota per origin and do not increase it.
Future work should move it to NetworkProcess and implement some quota checking.

Cache API and IDB quota management are not yet fully unified.
If IDB is used on start-up, we should check for Cache API storage size.
Conversely, on Cache API first wite task, even if IDB is not being used,
we should compute the size of the IDB data for the given origin.

Test: http/tests/IndexedDB/storage-limit.https.html

* Modules/indexeddb/server/IDBBackingStore.h:
* Modules/indexeddb/server/IDBServer.cpp:
(WebCore::IDBServer::IDBServer::create):
(WebCore::IDBServer::IDBServer::IDBServer):
(WebCore::IDBServer::m_quotaManagerGetter):
(WebCore::IDBServer::IDBServer::QuotaUser::QuotaUser):
(WebCore::IDBServer::IDBServer::QuotaUser::~QuotaUser):
(WebCore::IDBServer::IDBServer::QuotaUser::clearSpaceUsed):
(WebCore::IDBServer::IDBServer::QuotaUser::whenInitialized):
(WebCore::IDBServer::IDBServer::QuotaUser::initializeSpaceUsed):
(WebCore::IDBServer::IDBServer::quotaUser):
(WebCore::IDBServer::IDBServer::startComputingSpaceUsedForOrigin):
(WebCore::IDBServer::IDBServer::computeSpaceUsedForOrigin):
(WebCore::IDBServer::IDBServer::finishComputingSpaceUsedForOrigin):
(WebCore::IDBServer::IDBServer::requestSpace):
(WebCore::IDBServer::IDBServer::clearSpaceUsed):
(WebCore::IDBServer::IDBServer::setSpaceUsed):
(WebCore::IDBServer::IDBServer::increasePotentialSpaceUsed):
(WebCore::IDBServer::IDBServer::decreasePotentialSpaceUsed):
* Modules/indexeddb/server/IDBServer.h:
(WebCore::IDBServer::IDBServer::create):
* Modules/indexeddb/server/MemoryIDBBackingStore.cpp:
(WebCore::IDBServer::MemoryIDBBackingStore::databasesSizeForOrigin const):
* Modules/indexeddb/server/MemoryIDBBackingStore.h:
* Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:
(WebCore::IDBServer::SQLiteIDBBackingStore::databasesSizeForFolder):
(WebCore::IDBServer::SQLiteIDBBackingStore::databasesSizeForOrigin const):
(WebCore::IDBServer::SQLiteIDBBackingStore::maximumSize const):
* Modules/indexeddb/server/SQLiteIDBBackingStore.h:
* Modules/indexeddb/server/UniqueIDBDatabase.cpp:
(WebCore::IDBServer::estimateSize):
(WebCore::IDBServer::UniqueIDBDatabase::UniqueIDBDatabase):
(WebCore::IDBServer::quotaErrorMessageName):
(WebCore::IDBServer::UniqueIDBDatabase::requestSpace):
(WebCore::IDBServer::UniqueIDBDatabase::performCurrentOpenOperation):
(WebCore::IDBServer::UniqueIDBDatabase::storeCallbackOrFireError):
(WebCore::IDBServer::UniqueIDBDatabase::createObjectStore):
(WebCore::IDBServer::UniqueIDBDatabase::createObjectStoreAfterQuotaCheck):
(WebCore::IDBServer::UniqueIDBDatabase::renameObjectStore):
(WebCore::IDBServer::UniqueIDBDatabase::renameObjectStoreAfterQuotaCheck):
(WebCore::IDBServer::UniqueIDBDatabase::createIndex):
(WebCore::IDBServer::UniqueIDBDatabase::createIndexAfterQuotaCheck):
(WebCore::IDBServer::UniqueIDBDatabase::renameIndex):
(WebCore::IDBServer::UniqueIDBDatabase::renameIndexAfterQuotaCheck):
(WebCore::IDBServer::UniqueIDBDatabase::putOrAdd):
(WebCore::IDBServer::UniqueIDBDatabase::putOrAddAfterQuotaCheck):
(WebCore::IDBServer::UniqueIDBDatabase::postDatabaseTaskReply):
(WebCore::IDBServer::UniqueIDBDatabase::immediateCloseForUserDelete):
(WebCore::IDBServer::UniqueIDBDatabase::updateSpaceUsedIfNeeded):
(WebCore::IDBServer::UniqueIDBDatabase::performErrorCallback):
(WebCore::IDBServer::UniqueIDBDatabase::performKeyDataCallback):
* Modules/indexeddb/server/UniqueIDBDatabase.h:
(WebCore::IDBServer::UniqueIDBDatabase::server):
* Modules/indexeddb/shared/InProcessIDBServer.cpp:
(WebCore::InProcessIDBServer::create):
(WebCore::InProcessIDBServer::quotaManager):
(WebCore::storageQuotaManagerGetter):
(WebCore::InProcessIDBServer::InProcessIDBServer):
* Modules/indexeddb/shared/InProcessIDBServer.h:
* loader/EmptyClients.cpp:
* storage/StorageQuotaManager.cpp:
(WebCore::StorageQuotaManager::addUser):
(WebCore::StorageQuotaManager::requestSpace):
* storage/StorageQuotaManager.h:
(WebCore::StorageQuotaManager::defaultQuota):
(WebCore::StorageQuotaManager::removeUser):
* storage/StorageQuotaUser.h:
(WebCore::StorageQuotaUser::whenInitialized):

Source/WebKit:

Set the quota manager getter for IDBServer at creation time.

* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::createIDBServer):
(WebKit::NetworkProcess::idbServer):
* NetworkProcess/NetworkProcess.h:
* WebProcess/Databases/WebDatabaseProvider.cpp:
(WebKit::WebDatabaseProvider::idbConnectionToServerForSession):

Source/WebKitLegacy:

* Storage/WebDatabaseProvider.cpp:
(WebDatabaseProvider::idbConnectionToServerForSession):

LayoutTests:

Update IDB quota test according quota limit of 400ko.
Update WK1 test expectations to skip quota check tests.

* http/tests/IndexedDB/resources/shared.js: Added.
* http/tests/IndexedDB/resources/storage-limit.js: Added.
* http/tests/IndexedDB/storage-limit.https-expected.txt: Added.
* http/tests/IndexedDB/storage-limit.https.html: Added.
* platform/mac-wk1/TestExpectations:
* platform/win/TestExpectations:
* storage/indexeddb/resources/storage-limit.js:
* storage/indexeddb/storage-limit-expected.txt:

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

5 months agoString overflow when using StringBuilder in JSC::createError
dinfuehr@igalia.com [Wed, 13 Mar 2019 21:42:17 +0000 (21:42 +0000)]
String overflow when using StringBuilder in JSC::createError
https://bugs.webkit.org/show_bug.cgi?id=194957

Reviewed by Mark Lam.

JSTests:

Add test string-overflow-createError-bulder.js that overflows
StringBuilder in notAFunctionSourceAppender. The second new test
string-overflow-createError-fit.js has an error message that doesn't
overflow, it still failed since the String's capacity can't be doubled.
Run test string-overflow-createError.js only in the default
configuration to reduce memory consumption when running the test
in all configurations on multiple CPUs in parallel.

* stress/string-overflow-createError-builder.js: Copied from JSTests/stress/string-overflow-createError.js.
(catch):
* stress/string-overflow-createError-fit.js: Copied from JSTests/stress/string-overflow-createError.js.
(catch):
* stress/string-overflow-createError.js:

Source/JavaScriptCore:

StringBuilder in notAFunctionSourceAppender didn't check
for overflows but just failed.

* runtime/ExceptionHelpers.cpp:
(JSC::notAFunctionSourceAppender):

Source/WTF:

When calculating the new capacity of a StringBuilder object,
use a limit of MaxLength instead of MaxLength+1.  Allocating
a string of size MaxLength+1 always fails. This means that expanding
a StringBuilder only worked when the newly doubled capacity is less or
equal to MaxLength.

* wtf/text/StringBuilder.cpp:

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

5 months agoBetter build fix after r242901.
cdumez@apple.com [Wed, 13 Mar 2019 21:22:33 +0000 (21:22 +0000)]
Better build fix after r242901.

Reviewed by Jer Noble.

Source/WebCore:

* platform/audio/cocoa/MediaSessionManagerCocoa.mm:
(MediaSessionManagerCocoa::sessionWillBeginPlayback):
(MediaSessionManagerCocoa::updateNowPlayingInfo):

Source/WTF:

* wtf/Logger.h:
(WTF::LogArgument::toString):

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

5 months agoConsolidate ArgumentCodersMac and ArgumentCodersCocoa.
timothy@apple.com [Wed, 13 Mar 2019 21:18:34 +0000 (21:18 +0000)]
Consolidate ArgumentCodersMac and ArgumentCodersCocoa.
https://bugs.webkit.org/show_bug.cgi?id=195636
rdar://problem/45055697

Reviewed by Ryosuke Niwa.

Source/WebCore:

* editing/DictionaryPopupInfo.h:
(WebCore::DictionaryPopupInfo::encodingRequiresPlatformData const): Added.
* editing/FontAttributes.h:
(WebCore::FontAttributes::encodingRequiresPlatformData const): Added.

Source/WebKit:

Merge the two similar encoders and decoders. This avoids issues where
one encoder could be used and the other decoder, which caused a crash.
It also stops handling NSAttributedString specifically and just uses
the NSSecureCoding path to handle more complex attributes.

Some WebCore encoders code needed to move to platform files, since
ArgumentCodersCocoa.h requires an ObjectiveC++ implementation to work.

* Shared/Cocoa/ArgumentCodersCocoa.h:
(IPC::encode):
(IPC::decode):
(IPC::ArgumentCoder<RetainPtr<T>>::encode):
(IPC::ArgumentCoder<RetainPtr<T>>::decode):
* Shared/Cocoa/ArgumentCodersCocoa.mm:
(IPC::typeFromObject):
(IPC::isSerializableFont):
(IPC::isSerializableValue):
(IPC::encodeObject):
(IPC::decodeObject):
* Shared/Cocoa/LoadParametersCocoa.mm:
* Shared/Cocoa/WebCoreArgumentCodersCocoa.mm:
(IPC::ArgumentCoder<WebCore::DictionaryPopupInfo>::encodePlatformData):
(IPC::ArgumentCoder<WebCore::DictionaryPopupInfo>::decodePlatformData):
(IPC::ArgumentCoder<WebCore::FontAttributes>::encodePlatformData):
(IPC::ArgumentCoder<WebCore::FontAttributes>::decodePlatformData):
* Shared/WebCoreArgumentCoders.cpp:
(IPC::ArgumentCoder<DictionaryPopupInfo>::encode):
(IPC::ArgumentCoder<DictionaryPopupInfo>::decode):
(IPC::ArgumentCoder<FontAttributes>::encode):
(IPC::ArgumentCoder<FontAttributes>::decode):
* Shared/WebCoreArgumentCoders.h:
* Shared/mac/ArgumentCodersMac.h: Removed.
* Shared/mac/ArgumentCodersMac.mm: Removed.
* Shared/mac/AttributedString.mm:
(WebKit::AttributedString::encode const):
* Shared/mac/ObjCObjectGraph.mm:
* SourcesCocoa.txt:
* WebKit.xcodeproj/project.pbxproj:

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

5 months agoTry again to fix the Mac build.
aestes@apple.com [Wed, 13 Mar 2019 21:15:44 +0000 (21:15 +0000)]
Try again to fix the Mac build.

* wtf/FeatureDefines.h:

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

5 months agoUnreviewed build fix after r242901.
cdumez@apple.com [Wed, 13 Mar 2019 21:05:23 +0000 (21:05 +0000)]
Unreviewed build fix after r242901.

* platform/audio/cocoa/MediaSessionManagerCocoa.mm:
(MediaSessionManagerCocoa::updateNowPlayingInfo):

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

5 months agoUse a ServiceWorker process per registrable domain
cdumez@apple.com [Wed, 13 Mar 2019 20:51:37 +0000 (20:51 +0000)]
Use a ServiceWorker process per registrable domain
https://bugs.webkit.org/show_bug.cgi?id=195649

Reviewed by Youenn Fablet.

Source/WebCore:

Use a ServiceWorker process per registrable domain instead of one per security origin. This is
more in line with PSON and avoids launching too many processes.

* page/ClientOrigin.h:
(WebCore::ClientOrigin::clientRegistrableDomain const):
* workers/service/server/SWServer.cpp:
(WebCore::SWServer::tryInstallContextData):
(WebCore::SWServer::serverToContextConnectionCreated):
(WebCore::SWServer::runServiceWorkerIfNecessary):
(WebCore::SWServer::markAllWorkersForRegistrableDomainAsTerminated):
(WebCore::SWServer::registerServiceWorkerClient):
(WebCore::SWServer::unregisterServiceWorkerClient):
(WebCore::SWServer::needsServerToContextConnectionForRegistrableDomain const):
* workers/service/server/SWServer.h:
* workers/service/server/SWServerToContextConnection.cpp:
(WebCore::SWServerToContextConnection::SWServerToContextConnection):
(WebCore::SWServerToContextConnection::~SWServerToContextConnection):
(WebCore::SWServerToContextConnection::connectionForRegistrableDomain):
* workers/service/server/SWServerToContextConnection.h:
(WebCore::SWServerToContextConnection::registrableDomain const):
* workers/service/server/SWServerWorker.cpp:
(WebCore::SWServerWorker::contextConnection):
* workers/service/server/SWServerWorker.h:
(WebCore::SWServerWorker::registrableDomain const):

Source/WebKit:

Use a ServiceWorker process per registrable domain instead of one per security origin. This is
more in line with PSON and avoids launching too many processes.

* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::createNetworkConnectionToWebProcess):
(WebKit::NetworkProcess::connectionToContextProcessWasClosed):
(WebKit::NetworkProcess::needsServerToContextConnectionForRegistrableDomain const):
(WebKit::NetworkProcess::serverToContextConnectionForRegistrableDomain):
(WebKit::NetworkProcess::createServerToContextConnection):
(WebKit::NetworkProcess::swContextConnectionMayNoLongerBeNeeded):
* NetworkProcess/NetworkProcess.h:
* NetworkProcess/NetworkProcess.messages.in:
* NetworkProcess/ServiceWorker/WebSWServerConnection.cpp:
(WebKit::WebSWServerConnection::scheduleJobInServer):
* NetworkProcess/ServiceWorker/WebSWServerToContextConnection.cpp:
(WebKit::WebSWServerToContextConnection::WebSWServerToContextConnection):
* NetworkProcess/ServiceWorker/WebSWServerToContextConnection.h:
* UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::getNetworkProcessConnection):
(WebKit::NetworkProcessProxy::establishWorkerContextConnectionToNetworkProcess):
(WebKit::NetworkProcessProxy::establishWorkerContextConnectionToNetworkProcessForExplicitSession):
* UIProcess/Network/NetworkProcessProxy.h:
* UIProcess/Network/NetworkProcessProxy.messages.in:
* UIProcess/ServiceWorkerProcessProxy.cpp:
(WebKit::ServiceWorkerProcessProxy::create):
(WebKit::ServiceWorkerProcessProxy::ServiceWorkerProcessProxy):
(WebKit::ServiceWorkerProcessProxy::getLaunchOptions):
* UIProcess/ServiceWorkerProcessProxy.h:
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::establishWorkerContextConnectionToNetworkProcess):
(WebKit::WebProcessPool::disconnectProcess):
(WebKit::WebProcessPool::updateProcessAssertions):
* UIProcess/WebProcessPool.h:

Tools:

Update API test coverage.

* TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm:

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

5 months agoTry to fix the Mac build after r242356.
aestes@apple.com [Wed, 13 Mar 2019 20:33:36 +0000 (20:33 +0000)]
Try to fix the Mac build after r242356.

Source/WebKit:
* Shared/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
(WebKit::WebPaymentCoordinatorProxy::platformPaymentRequest):

Source/WTF:
* wtf/FeatureDefines.h:

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

5 months agoREGRESSION(PSON, r240660): Navigation over process boundary is flashy when using...
cdumez@apple.com [Wed, 13 Mar 2019 20:32:48 +0000 (20:32 +0000)]
REGRESSION(PSON, r240660): Navigation over process boundary is flashy when using Cmd-left/right arrow to navigate
https://bugs.webkit.org/show_bug.cgi?id=195684
<rdar://problem/48294714>

Reviewed by Antti Koivisto.

Source/WebCore:

The issue was caused by us failing to suspend the current page on navigation because the source and
target WebBackForwardListItem are identical. The source WebBackForwardListItem was wrong.

When a navigation is triggered by the WebContent process (and not the UIProcess), we create the Navigation
object in WebPageProxy::decidePolicyForNavigationAction(). For the navigation's targetItem, we use the
target item identifier provided by the WebContent process via the NavigationActionData. However,
for the source item, we would use the WebBackForwardList's currentItem in the UIProcess. The issue
is that the WebBackForwardList's currentItem usually has already been updated to be the target
item via a WebPageProxy::BackForwardGoToItem() synchronous IPC.

To avoid raciness and given that the current history management is fragile (as it is managed by
both the UIProcess and the WebProcess), I am now passing the source item identifier in
addition to the target item identifier in the NavigationActionData that is sent by the WebProcess.
This is a lot less error prone, the WebProcess knows more accurately which history items it is going
from and to.

* loader/FrameLoader.cpp:
(WebCore::FrameLoader::loadURLIntoChildFrame):
(WebCore::FrameLoader::loadDifferentDocumentItem):
(WebCore::FrameLoader::loadItem):
(WebCore::FrameLoader::retryAfterFailedCacheOnlyMainResourceLoad):
* loader/FrameLoader.h:
* loader/HistoryController.cpp:
(WebCore::HistoryController::recursiveGoToItem):
* loader/NavigationAction.cpp:
(WebCore::NavigationAction::setSourceBackForwardItem):
* loader/NavigationAction.h:
(WebCore::NavigationAction::sourceBackForwardItemIdentifier const):

Source/WebKit:

* Shared/NavigationActionData.cpp:
(WebKit::NavigationActionData::encode const):
(WebKit::NavigationActionData::decode):
* Shared/NavigationActionData.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::decidePolicyForNavigationAction):
(WebKit::WebPageProxy::backForwardAddItem):
* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):

Tools:

Add API test coverage.

* TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:

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

5 months ago[JSC] Move species watchpoint installation from ArrayPrototype to JSGlobalObject
ysuzuki@apple.com [Wed, 13 Mar 2019 20:27:54 +0000 (20:27 +0000)]
[JSC] Move species watchpoint installation from ArrayPrototype to JSGlobalObject
https://bugs.webkit.org/show_bug.cgi?id=195593

Reviewed by Keith Miller.

This patch moves watchpoints installation and watchpoints themselves from ArrayPrototype to JSGlobalObject because of the following two reasons.

1. ArrayPrototype configures finalizer because of std::unique_ptr<> for watchpoints. If we move them from ArrayPrototype to JSGlobalObject, we do
   not need to set finalizer. And we can avoid unnecessary WeakBlock allocation.

2. This code lazily configures watchpoints instead of setting watchpoints eagerly in JSGlobalObject::init. We would like to expand this mechanism
   to other watchpoints which are eagerly configured in JSGlobalObject::init. Putting these code in JSGlobalObject instead of scattering them in
   each XXXPrototype / XXXConstructor can encourage the reuse of the code.

* runtime/ArrayPrototype.cpp:
(JSC::ArrayPrototype::create):
(JSC::speciesWatchpointIsValid):
(JSC::ArrayPrototype::destroy): Deleted.
(JSC::ArrayPrototype::tryInitializeSpeciesWatchpoint): Deleted.
(JSC::ArrayPrototypeAdaptiveInferredPropertyWatchpoint::ArrayPrototypeAdaptiveInferredPropertyWatchpoint): Deleted.
(JSC::ArrayPrototypeAdaptiveInferredPropertyWatchpoint::handleFire): Deleted.
* runtime/ArrayPrototype.h:
* runtime/JSGlobalObject.cpp:
(JSC::JSGlobalObject::tryInstallArraySpeciesWatchpoint): Instead of using ArrayPrototypeAdaptiveInferredPropertyWatchpoint,
we use ObjectPropertyChangeAdaptiveWatchpoint. We create watchpoints after touching WatchpointSet since ObjectPropertyChangeAdaptiveWatchpoint
requires WatchpointSet is IsWatched state.
* runtime/JSGlobalObject.h:

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

5 months agoAdd AggregateLogger, a Logger specialization for singleton classes.
jer.noble@apple.com [Wed, 13 Mar 2019 20:18:08 +0000 (20:18 +0000)]
Add AggregateLogger, a Logger specialization for singleton classes.
https://bugs.webkit.org/show_bug.cgi?id=195644

Reviewed by Eric Carlson.

Source/WebCore:

Convert debug logging over to release logging through the use of AggregateLogger.

* platform/audio/PlatformMediaSession.h:
(WebCore::PlatformMediaSession::client const):
* platform/audio/PlatformMediaSessionManager.cpp:
(WebCore::PlatformMediaSessionManager::PlatformMediaSessionManager):
(WebCore::PlatformMediaSessionManager::beginInterruption):
(WebCore::PlatformMediaSessionManager::endInterruption):
(WebCore::PlatformMediaSessionManager::addSession):
(WebCore::PlatformMediaSessionManager::removeSession):
(WebCore::PlatformMediaSessionManager::sessionWillBeginPlayback):
(WebCore::PlatformMediaSessionManager::sessionWillEndPlayback):
(WebCore::PlatformMediaSessionManager::setCurrentSession):
(WebCore::PlatformMediaSessionManager::applicationWillBecomeInactive const):
(WebCore::PlatformMediaSessionManager::applicationDidBecomeActive const):
(WebCore::PlatformMediaSessionManager::applicationDidEnterBackground const):
(WebCore::PlatformMediaSessionManager::applicationWillEnterForeground const):
(WebCore::PlatformMediaSessionManager::logChannel const):
* platform/audio/PlatformMediaSessionManager.h:
* platform/audio/cocoa/MediaSessionManagerCocoa.mm:
(MediaSessionManagerCocoa::updateSessionState):
(MediaSessionManagerCocoa::sessionWillBeginPlayback):
(MediaSessionManagerCocoa::removeSession):
(MediaSessionManagerCocoa::sessionWillEndPlayback):
(MediaSessionManagerCocoa::clientCharacteristicsChanged):
(MediaSessionManagerCocoa::updateNowPlayingInfo):
* platform/audio/ios/MediaSessionManagerIOS.mm:
(WebCore::MediaSessionManageriOS::resetRestrictions):
(WebCore::MediaSessionManageriOS::configureWireLessTargetMonitoring):

Source/WTF:

Add a new class, AggregateLogger, which will log messages to each of its aggregated loggers.

Drive-by fixes: allow "const void*" to be directly logged by converting the pointer to a hex string.

* WTF.xcodeproj/project.pbxproj:
* wtf/AggregateLogger.h: Added.
(WTF::AggregateLogger::create):
(WTF::AggregateLogger::addLogger):
(WTF::AggregateLogger::removeLogger):
(WTF::AggregateLogger::logAlways const):
(WTF::AggregateLogger::error const):
(WTF::AggregateLogger::warning const):
(WTF::AggregateLogger::info const):
(WTF::AggregateLogger::debug const):
(WTF::AggregateLogger::willLog const):
(WTF::AggregateLogger::AggregateLogger):
(WTF::AggregateLogger::log const):
* wtf/CMakeLists.h:
* wtf/Logger.cpp:
(WTF::>::toString):
* wtf/Logger.h:

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

5 months ago(r242595) Layout Tests in imported/w3c/web-platform-tests/html/semantics/embedded...
tsavell@apple.com [Wed, 13 Mar 2019 20:03:34 +0000 (20:03 +0000)]
(r242595) Layout Tests in imported/w3c/web-platform-tests/html/semantics/embedded-content/media-elements/* are failing
https://bugs.webkit.org/show_bug.cgi?id=195466

Unreviewed test gardening.

* platform/mac/TestExpectations:

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

5 months agoDrop legacy WebCore::toRegistrableDomain() utility function
cdumez@apple.com [Wed, 13 Mar 2019 19:53:41 +0000 (19:53 +0000)]
Drop legacy WebCore::toRegistrableDomain() utility function
https://bugs.webkit.org/show_bug.cgi?id=195637

Reviewed by Geoffrey Garen.

Drop legacy toRegistrableDomain() / registrableDomainAreEqual() utility functions.
Update call sites to use modern RegistrableDomain type instead.

Source/WebCore:

* loader/CrossOriginAccessControl.cpp:
(WebCore::shouldCrossOriginResourcePolicyCancelLoad):
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::setFirstPartyForCookies):
* page/DOMWindow.cpp:
(WebCore::DOMWindow::failedToRegisterDeviceMotionEventListener):
* platform/RegistrableDomain.h:
(WebCore::registrableDomainsAreEqual):
* platform/network/ResourceRequestBase.h:
* platform/network/cf/ResourceRequestCFNet.cpp:
* platform/network/cocoa/ResourceRequestCocoa.mm:

Source/WebKit:

* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::processForNavigationInternal):

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

5 months agoWeb Inspector: Protocol Logging: log messages with backtrace if inspector^2 is open
drousso@apple.com [Wed, 13 Mar 2019 19:28:26 +0000 (19:28 +0000)]
Web Inspector: Protocol Logging: log messages with backtrace if inspector^2 is open
https://bugs.webkit.org/show_bug.cgi?id=195687

Reviewed by Joseph Pecoraro.

* UserInterface/Protocol/LoggingProtocolTracer.js:
(WI.LoggingProtocolTracer.prototype._processEntry):

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

5 months agoWeb Inspector: REGRESSION(r242737): unnecessary semicolon added when populating WI...
drousso@apple.com [Wed, 13 Mar 2019 19:19:26 +0000 (19:19 +0000)]
Web Inspector: REGRESSION(r242737): unnecessary semicolon added when populating WI.TreeOutline stylesheet
https://bugs.webkit.org/show_bug.cgi?id=195689

Reviewed by Joseph Pecoraro.

* UserInterface/Views/TreeOutline.js:
(WI.TreeOutline._generateStyleRulesIfNeeded):

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

5 months agoWeb Inspector: Network - HAR Export duplicates blocked/send time if there was no...
joepeck@webkit.org [Wed, 13 Mar 2019 19:04:43 +0000 (19:04 +0000)]
Web Inspector: Network - HAR Export duplicates blocked/send time if there was no dns/connect block
https://bugs.webkit.org/show_bug.cgi?id=195655
<rdar://problem/48831152>

Reviewed by Devin Rousso.

Source/WebInspectorUI:

* UserInterface/Controllers/HARBuilder.js:
(WI.HARBuilder.timings):

LayoutTests:

* http/tests/inspector/network/har/har-basic-expected.txt:
* http/tests/inspector/network/har/har-basic.html:

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

5 months agoPrevent checked_cf_cast crashes in ResourceResponse::platformCertificateInfo
achristensen@apple.com [Wed, 13 Mar 2019 18:45:31 +0000 (18:45 +0000)]
Prevent checked_cf_cast crashes in ResourceResponse::platformCertificateInfo
https://bugs.webkit.org/show_bug.cgi?id=195686

Reviewed by Tim Horton.

This covers up a type confusion bug on some OSes until rdar://problem/48853137 is resolved.

* SourcesCocoa.txt:
* WebCore.xcodeproj/project.pbxproj:
* platform/network/cocoa/ResourceResponseCocoa.mm:

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

5 months ago[GStreamer][WebRTC] Add support for omxh264enc encoder
commit-queue@webkit.org [Wed, 13 Mar 2019 18:25:21 +0000 (18:25 +0000)]
[GStreamer][WebRTC] Add support for omxh264enc encoder
https://bugs.webkit.org/show_bug.cgi?id=195676

Patch by Thibault Saunier <tsaunier@igalia.com> on 2019-03-13
Reviewed by Philippe Normand.

* platform/mediastream/libwebrtc/GStreamerVideoEncoder.cpp:
(setup_omxh264enc):
(set_bitrate_bit_per_sec):
(gst_webrtc_video_encoder_class_init):

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

5 months agoREGRESSION(r240634): Element::hasPointerCapture() passes a JS-controlled value direct...
graouts@webkit.org [Wed, 13 Mar 2019 18:14:21 +0000 (18:14 +0000)]
REGRESSION(r240634): Element::hasPointerCapture() passes a JS-controlled value directly into a HashMap as a key
https://bugs.webkit.org/show_bug.cgi?id=195683
<rdar://problem/48659950>

Reviewed by Alex Christensen.

Source/WebCore:

While PointerID is defined as int32_t, we now use int64_t as the key of the HashMap mapping PointerID to CapturingData so that we use
a value outside of the int32_t range as a safe empty and removed values, allowing any int32_t to be provided through the API for
lookup in this HashMap.

Test: pointerevents/pointer-id-crash.html

* page/PointerCaptureController.h:

LayoutTests:

Add a new test which would crash in debug builds prior to this fix.

* pointerevents/pointer-id-crash-expected.txt: Added.
* pointerevents/pointer-id-crash.html: Added.

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

5 months agoFix testbmalloc build
commit-queue@webkit.org [Wed, 13 Mar 2019 18:09:00 +0000 (18:09 +0000)]
Fix testbmalloc build
https://bugs.webkit.org/show_bug.cgi?id=195660

Patch by Sam Weinig <sam@webkit.org> on 2019-03-13
Reviewed by Geoffrey Garen.

* bmalloc.xcodeproj/project.pbxproj:
Link Foundation in when building testbmalloc. Since bmalloc requires Foundation, and is a static
library, all clients of bmalloc are required to link it themselves.

* bmalloc/IsoPageInlines.h:
* bmalloc/StdLibExtras.h: Added.
(bmalloc::bitwise_cast):
Add bitwise_cast implementation, and use it in IsoPageInlines.h. It is a layering violation
to expect the one from WTF to be available, as seems to have been the case.

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

5 months agoTake UnboundedNetworking assertion when a file upload is in progress.
beidson@apple.com [Wed, 13 Mar 2019 17:57:57 +0000 (17:57 +0000)]
Take UnboundedNetworking assertion when a file upload is in progress.
https://bugs.webkit.org/show_bug.cgi?id=195497

Reviewed by Geoff Garen.

Source/WebCore:

* platform/network/ResourceRequestBase.cpp:
(WebCore::ResourceRequestBase::hasUpload const):
* platform/network/ResourceRequestBase.h:

Source/WebKit:

This patch implements whole bunch of bookkeeping in both the Networking and UI processes.

The TLDR of that bookkeeping is:
- Whenever any uploads are in progress, take an assertion for both Networking and UI processes.
- Whenever a particular WebProcess has an upload in progress, take an assertion for it.

* NetworkProcess/NetworkConnectionToWebProcess.cpp:
(WebKit::NetworkConnectionToWebProcess::NetworkConnectionToWebProcess):
(WebKit::NetworkConnectionToWebProcess::setProcessIdentifier):
(WebKit::NetworkConnectionToWebProcess::setConnectionHasUploads):
(WebKit::NetworkConnectionToWebProcess::clearConnectionHasUploads):
* NetworkProcess/NetworkConnectionToWebProcess.h:
* NetworkProcess/NetworkConnectionToWebProcess.messages.in:

* NetworkProcess/NetworkResourceLoadMap.cpp: Added.
(WebKit::NetworkResourceLoadMap::add):
(WebKit::NetworkResourceLoadMap::remove):
(WebKit::NetworkResourceLoadMap::get const):
* NetworkProcess/NetworkResourceLoadMap.h: Added.
(WebKit::NetworkResourceLoadMap::NetworkResourceLoadMap):
(WebKit::NetworkResourceLoadMap::isEmpty const):
(WebKit::NetworkResourceLoadMap::contains const):
(WebKit::NetworkResourceLoadMap::begin):
(WebKit::NetworkResourceLoadMap::values):

* NetworkProcess/NetworkSession.cpp:

       * Scripts/webkit/messages.py:

* Sources.txt:

* UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::takeUploadAssertion):
(WebKit::NetworkProcessProxy::clearUploadAssertion):
* UIProcess/Network/NetworkProcessProxy.h:

* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::setWebProcessHasUploads):
(WebKit::WebProcessPool::clearWebProcessHasUploads):
* UIProcess/WebProcessPool.h:
* UIProcess/WebProcessPool.messages.in:

       * WebKit.xcodeproj/project.pbxproj:

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

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

5 months agoVersioning.
kocsen_chung@apple.com [Wed, 13 Mar 2019 17:53:24 +0000 (17:53 +0000)]
Versioning.

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

5 months agoUse new RegistrableDomain type in PSON code
cdumez@apple.com [Wed, 13 Mar 2019 17:48:47 +0000 (17:48 +0000)]
Use new RegistrableDomain type in PSON code
https://bugs.webkit.org/show_bug.cgi?id=195634

Reviewed by Youenn Fablet.

Use new RegistrableDomain type in PSON code instead of more error-prone String type.

* UIProcess/SuspendedPageProxy.cpp:
(WebKit::SuspendedPageProxy::SuspendedPageProxy):
* UIProcess/SuspendedPageProxy.h:
* UIProcess/WebProcessCache.cpp:
(WebKit::WebProcessCache::canCacheProcess const):
(WebKit::WebProcessCache::addProcessIfPossible):
(WebKit::WebProcessCache::takeProcess):
(WebKit::WebProcessCache::clearAllProcessesForSession):
* UIProcess/WebProcessCache.h:
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::addProcessToOriginCacheSet):
(WebKit::WebProcessPool::removeProcessFromOriginCacheSet):
(WebKit::WebProcessPool::processForNavigationInternal):
(WebKit::WebProcessPool::findReusableSuspendedPageProcess):
(WebKit::WebProcessPool::didCollectPrewarmInformation):
(WebKit::WebProcessPool::tryPrewarmWithDomainInformation):
* UIProcess/WebProcessPool.h:
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::canBeAddedToWebProcessCache const):
(WebKit::WebProcessProxy::maybeShutDown):
(WebKit::WebProcessProxy::didCollectPrewarmInformation):
(WebKit::WebProcessProxy::didStartProvisionalLoadForMainFrame):
* UIProcess/WebProcessProxy.h:
(WebKit::WebProcessProxy::registrableDomain const):
* UIProcess/WebProcessProxy.messages.in:
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::sendPrewarmInformation):

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

5 months agohttp/tests/websocket/tests/hybi/handshake-ok-with-legacy-sec-websocket-response-heade...
sroberts@apple.com [Wed, 13 Mar 2019 17:25:23 +0000 (17:25 +0000)]
http/tests/websocket/tests/hybi/handshake-ok-with-legacy-sec-websocket-response-headers.html is a flaky failure on Mac WK2
https://bugs.webkit.org/show_bug.cgi?id=173041

Unreviewed test gardening.

* platform/mac/TestExpectations: Marking as flaky until a fix lands

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

5 months agoEnable libwebrtc logging control through WebCore
youenn@apple.com [Wed, 13 Mar 2019 17:14:18 +0000 (17:14 +0000)]
Enable libwebrtc logging control through WebCore
https://bugs.webkit.org/show_bug.cgi?id=195658

Reviewed by Eric Carlson.

Source/ThirdParty/libwebrtc:

Add a callback to get access to libwebrtc log messages.

* Configurations/libwebrtc.iOS.exp:
* Configurations/libwebrtc.iOSsim.exp:
* Configurations/libwebrtc.mac.exp:
* Source/webrtc/rtc_base/logging.cc:
* Source/webrtc/rtc_base/logging.h:

Source/WebCore:

Add support for WebCore logging of libwebrtc messages.
This is controlled by WebRTC log channel state and level.
In case of private browsing mode, any logging is disabled.
This will stay for the lifetime of the process.
No change of behavior.

* Modules/mediastream/RTCPeerConnection.cpp:
(WebCore::RTCPeerConnection::create):
* platform/mediastream/libwebrtc/LibWebRTCProvider.cpp:
(WebCore::doReleaseLogging):
(WebCore::setLogging):
(WebCore::computeLogLevel):
(WebCore::initializePeerConnectionFactoryAndThreads):
(WebCore::LibWebRTCProvider::setEnableLogging):
* platform/mediastream/libwebrtc/LibWebRTCProvider.h:

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

5 months ago[ews-app] Remove unused patch view
aakash_jain@apple.com [Wed, 13 Mar 2019 17:11:27 +0000 (17:11 +0000)]
[ews-app] Remove unused patch view
https://bugs.webkit.org/show_bug.cgi?id=195669

Reviewed by Lucas Forschler.

* BuildSlaveSupport/ews-app/ews/urls.py:
* BuildSlaveSupport/ews-app/ews/views/patch.py: Removed.

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

5 months ago[ews-app] Use Buildbot result code variables
aakash_jain@apple.com [Wed, 13 Mar 2019 17:03:42 +0000 (17:03 +0000)]
[ews-app] Use Buildbot result code variables
https://bugs.webkit.org/show_bug.cgi?id=195668

Reviewed by Alexey Proskuryakov.

* BuildSlaveSupport/ews-app/ews/common/buildbot.py:
(Buildbot): Added Buildbot result code variables.
* BuildSlaveSupport/ews-app/ews/views/statusbubble.py:
(StatusBubble._build_bubble): Used Buildbot result code variables.

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

5 months ago[GStreamer][WebRTC] Do not sync encoder on the clock
commit-queue@webkit.org [Wed, 13 Mar 2019 16:08:15 +0000 (16:08 +0000)]
[GStreamer][WebRTC] Do not sync encoder on the clock
https://bugs.webkit.org/show_bug.cgi?id=195673

we should encode as fast as possible and totally ignore timestamp while
doing so.

Patch by Thibault Saunier <tsaunier@igalia.com> on 2019-03-13
Reviewed by Philippe Normand.

* platform/mediastream/libwebrtc/GStreamerVideoEncoderFactory.cpp:
(WebCore::GStreamerVideoEncoder::InitEncode):

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

5 months ago[Flatpak] Expand submodule recursively
commit-queue@webkit.org [Wed, 13 Mar 2019 15:33:01 +0000 (15:33 +0000)]
[Flatpak] Expand submodule recursively
https://bugs.webkit.org/show_bug.cgi?id=195672

Building WPE with flatpak was impossible without that as it was raising an exception.
Also update wpebackend-fdo to match what is built in jhbuild

Patch by Thibault Saunier <tsaunier@igalia.com> on 2019-03-13
Reviewed by Philippe Normand.

* flatpak/flatpakutils.py:
(expand_submodules_recurse):
(expand_manifest):
* flatpak/org.webkit.WPEModules.yaml:

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

5 months ago[GStreamer][WebRTC]: Use codec setting video height/width as fallback
commit-queue@webkit.org [Wed, 13 Mar 2019 15:28:08 +0000 (15:28 +0000)]
[GStreamer][WebRTC]: Use codec setting video height/width as fallback
https://bugs.webkit.org/show_bug.cgi?id=195675

Patch by Thibault Saunier <tsaunier@igalia.com> on 2019-03-13
Reviewed by Philippe Normand.

In some cases the frame height and width is not set (not sure why/ in
what conditions but it happens) so make sure to get the information from
the VideoCodec when configuring the encoder.

* platform/mediastream/libwebrtc/GStreamerVideoDecoderFactory.cpp:
(WebCore::GStreamerVideoDecoder::GStreamerVideoDecoder):
(WebCore::GStreamerVideoDecoder::GetCapsForFrame):

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

5 months ago[ews-app] status bubble should be hidden for certain builds
aakash_jain@apple.com [Wed, 13 Mar 2019 11:27:08 +0000 (11:27 +0000)]
[ews-app] status bubble should be hidden for certain builds
https://bugs.webkit.org/show_bug.cgi?id=194597

Reviewed by Dewei Zhu.

* BuildSlaveSupport/ews-app/ews/views/statusbubble.py:
(StatusBubble._build_bubble):
(StatusBubble._should_show_bubble_for_build): Hide bubble for builds which were skipped
because the patch didn't have relevant changes.
(StatusBubble._should_show_bubble_for_queue): Hide bubbles for queues which are not deployed
in production yet.

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

5 months ago[CoordinatedGraphics] Null dereference in CoordinatedGraphicsLayer::setCoordinatorInc...
magomez@igalia.com [Wed, 13 Mar 2019 08:55:01 +0000 (08:55 +0000)]
[CoordinatedGraphics] Null dereference in CoordinatedGraphicsLayer::setCoordinatorIncludingSubLayersIfNeeded
https://bugs.webkit.org/show_bug.cgi?id=195615

Reviewed by Carlos Garcia Campos.

Exit early if we don't receive a valid coordinator.

* platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:
(WebCore::CoordinatedGraphicsLayer::setCoordinatorIncludingSubLayersIfNeeded):

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

5 months ago[l10n] Updated Italian translation of WebKitGTK+
carlosgc@webkit.org [Wed, 13 Mar 2019 08:39:28 +0000 (08:39 +0000)]
[l10n] Updated Italian translation of WebKitGTK+
https://bugs.webkit.org/show_bug.cgi?id=195620

Patch by Milo Casagrande <milo@milo.name> on 2019-03-13
Rubber-stamped by Carlos Garcia Campos.

* it.po:

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

5 months ago[Win][PlayStation] Remove WebCore::standardUserAgentForURL
Hironori.Fujii@sony.com [Wed, 13 Mar 2019 07:48:12 +0000 (07:48 +0000)]
[Win][PlayStation] Remove WebCore::standardUserAgentForURL
https://bugs.webkit.org/show_bug.cgi?id=195662

Reviewed by Ryosuke Niwa.

Source/WebCore:

WebCore::standardUserAgentForURL is just a stub in Windows port.

No new tests because there is no behavior change.

* platform/win/UserAgentWin.cpp:
(WebCore::standardUserAgentForURL): Deleted.
* platform/playstation/UserAgentPlayStation.cpp:
(WebCore::standardUserAgentForURL): Deleted.

Source/WebKit:

* WebProcess/WebPage/win/WebPageWin.cpp:
(WebKit::WebPage::platformUserAgent const): Return an empty string as well as mac/ios ports.

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

5 months ago[Win] Fix a slew of simple clang-cl warnings.
ross.kirsling@sony.com [Wed, 13 Mar 2019 04:24:47 +0000 (04:24 +0000)]
[Win] Fix a slew of simple clang-cl warnings.
https://bugs.webkit.org/show_bug.cgi?id=195652

Reviewed by Don Olmstead.

Source/WebCore:

* page/AutoscrollController.cpp:
(WebCore::AutoscrollController::handleMouseReleaseEvent): -Wswitch
* platform/network/curl/CurlContext.cpp:
(WebCore::CurlHandle::willSetupSslCtx):
(WebCore::CurlHandle::appendRequestHeaders): -Wunused-variable
* platform/network/curl/CurlFormDataStream.cpp:
(WebCore::CurlFormDataStream::computeContentLength): -Wunused-variable
* platform/network/curl/CurlRequest.cpp:
(WebCore::CurlRequest::CurlRequest): -Wreorder
(WebCore::CurlRequest::setupTransfer): -Wunused-variable
* platform/network/curl/CurlSSLVerifier.cpp:
(WebCore::CurlSSLVerifier::CurlSSLVerifier):
* platform/network/curl/CurlSSLVerifier.h: -Wunused-private-field
* platform/win/LoggingWin.cpp:
(WebCore::logLevelString): -Wwritable-strings
* rendering/RenderThemeWin.cpp: -Wunused-const-variable (x2)
(WebCore::RenderThemeWin::getThemeData): -Wswitch

Source/WebCore/PAL:

* pal/win/LoggingWin.cpp:
(PAL::logLevelString): -Wwritable-strings

Source/WebKit:

* NetworkProcess/curl/NetworkDataTaskCurl.cpp:
(WebKit::NetworkDataTaskCurl::invokeDidReceiveResponse): -Wswitch
* Platform/IPC/win/ConnectionWin.cpp:
(IPC::Connection::readEventHandler): -Wunused-variable
* Platform/win/LoggingWin.cpp:
(WebKit::logLevelString): -Wwritable-strings
* UIProcess/Launcher/win/ProcessLauncherWin.cpp:
(WebKit::ProcessLauncher::launchProcess): -Wunused-variable

Source/WebKitLegacy/win:

* Interfaces/AccessibleComparable.idl: -Wmissing-braces
* Plugins/PluginDatabaseWin.cpp: -Wunused-function
(WebCore::addJavaPluginDirectory): Deleted.
* WebCoreSupport/AcceleratedCompositingContext.cpp:
(AcceleratedCompositingContext::AcceleratedCompositingContext): -Wreorder
* WebCoreSupport/WebEditorClient.cpp:
(WebEditorUndoCommand::WebEditorUndoCommand): -Wreorder
(undoNameForEditAction): -Wswitch
* WebCoreSupport/WebFrameLoaderClient.cpp:
(WebFrameLoaderClient::WebFrameLoaderClient): -Wswitch
(WebFrameLoaderClient::updateGlobalHistoryRedirectLinks): -Wunused-variable
* WebCoreSupport/WebInspectorClient.cpp:
(WebInspectorFrontendClient::WebInspectorFrontendClient): -Wreorder
* WebCoreSupport/WebInspectorClient.h: -Winconsistent-missing-override
* WebError.cpp:
(WebError::WebError): -Wreorder
* WebFrame.cpp:
(WebFrame::stringByEvaluatingJavaScriptInScriptWorld): -Wlogical-op-parentheses
* WebHistory.cpp: -Wunused-function (x5)
(areEqualOrClose): Deleted.
(addDayToSystemTime): Deleted.
(getDayBoundaries): Deleted.
(beginningOfDay): Deleted.
(dateKey): Deleted.
* WebNotificationCenter.cpp:
(WebNotificationCenter::removeObserver): -Wunused-variable
* WebView.cpp: -Wunused-function, -Wreorder
(WebView::addVisitedLinks): -Wunused-variable

Tools:

* WebKitTestRunner/win/PlatformWebViewWin.cpp:
(WTR::PlatformWebView::windowSnapshotImage): -Wunused-variable

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

5 months ago[JSC] OSR entry should respect abstract values in addition to flush formats
ysuzuki@apple.com [Wed, 13 Mar 2019 02:34:28 +0000 (02:34 +0000)]
[JSC] OSR entry should respect abstract values in addition to flush formats
https://bugs.webkit.org/show_bug.cgi?id=195653

Reviewed by Mark Lam.

JSTests:

* stress/osr-entry-locals-none.js: Added.

Source/JavaScriptCore:

Let's consider the following graph.

Block #0
    ...
    27:< 2:loc13> JSConstant(JS|UseAsOther, StringIdent, Strong:String (atomic) (identifier): , StructureID: 42679, bc#10, ExitValid)
    ...
    28:< 2:loc13> ArithPow(DoubleRep:@437<Double>, Int32:@27, Double|UseAsOther, BytecodeDouble, Exits, bc#10, ExitValid)
    29:<!0:->     MovHint(DoubleRep:@28<Double>, MustGen, loc7, W:SideState, ClobbersExit, bc#10, ExitValid)
    30:< 1:->     SetLocal(DoubleRep:@28<Double>, loc7(M<Double>/FlushedDouble), machine:loc6, W:Stack(-8), bc#10, exit: bc#14, ExitValid)  predicting BytecodeDouble
    ...
    73:<!0:->     Jump(MustGen, T:#1, W:SideState, bc#71, ExitValid)

Block #1 (bc#71): (OSR target) pred, #0
    ...
   102:<!2:loc15> GetLocal(Check:Untyped:@400, Double|MustGen|PureInt, BytecodeDouble, loc7(M<Double>/FlushedDouble), machine:loc6, R:Stack(-8), bc#120, ExitValid)  predicting BytecodeDouble
    ...

CFA at @28 says it is invalid since there are type contradiction (Int32:@27 v.s. StringIdent). So, of course, we do not propagate #0's type information to #1 since we become invalid state.
However, #1 is still reachable since it is an OSR target. Since #0 was only the predecessor of #1, loc7's type information becomes None at the head of #1.
Since loc7's AbstractValue is None, @102 GetLocal emits breakpoint. It is OK as long as OSR entry fails because AbstractValue validation requires the given value is None type.

The issue here is that we skipped AbstractValue validation when we have FlushFormat information. Since loc7 has FlushedDouble format, DFG OSR entry code does not validate it against AbstractValue,
which is None. Then, we hit the breakpoint emitted by @102.

This patch performs AbstractValue validation against values even if we have FlushFormat. We should correctly configure AbstractValue for OSR entry's locals too to avoid unnecessary OSR entry
failures in the future but anyway validating locals with AbstractValue is correct behavior here since DFGSpeculativeJIT relies on that.

* dfg/DFGOSREntry.cpp:
(JSC::DFG::prepareOSREntry):

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

5 months agoMove the code for determining the need for touch bar quirks to Quirks class
rniwa@webkit.org [Wed, 13 Mar 2019 02:31:40 +0000 (02:31 +0000)]
Move the code for determining the need for touch bar quirks to Quirks class
https://bugs.webkit.org/show_bug.cgi?id=195654

Reviewed by Brent Fulgham.

Source/WebCore:

Moved the code to determine whether the touch bar quirks are needed or not from WebKit2.

* WebCore.xcodeproj/project.pbxproj:
* page/Quirks.cpp:
(WebCore::Quirks::isTouchBarUpdateSupressedForHiddenContentEditable const):
(WebCore::Quirks::isNeverRichlyEditableForTouchBar const):
* page/Quirks.h:

Source/WebKit:

Moved the code to determine whether touch bar quirks are needed or not to WebCore.

Also renamed HiddenContentEditableQuirk to IsTouchBarUpdateSupressedForHiddenContentEditable
and PlainTextQuirk to NeverRichlyEditableForTouchBar.

* UIProcess/Cocoa/WebViewImpl.h:
(WebKit::WebViewImpl::isRichlyEditableForTouchBar): Renamed.
* UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::updateTouchBar):
(WebKit::WebViewImpl::candidateListTouchBarItem const):
(WebKit::WebViewImpl::isRichlyEditableForTouchBar const): Renamed from isRichlyEditable.
(WebKit::WebViewImpl::textTouchBar const):
(WebKit::WebViewImpl::updateTextTouchBar):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::setIsTouchBarUpdateSupressedForHiddenContentEditable): Renamed from
setNeedsHiddenContentEditableQuirk.
(WebKit::WebPageProxy::setIsNeverRichlyEditableForTouchBar): Renamed from setNeedsPlainTextQuirk.
* UIProcess/WebPageProxy.h:
(WebKit::WebPageProxy::isTouchBarUpdateSupressedForHiddenContentEditable const): Renamed from
needsHiddenContentEditableQuirk.
(WebKit::WebPageProxy::isNeverRichlyEditableForTouchBar const): Renamed from needsPlainTextQuirk.
* UIProcess/WebPageProxy.messages.in: Renamed the IPC messages.
* WebProcess/WebPage/WebPage.cpp:
(WebKit::needsHiddenContentEditableQuirk): Deleted. Moved to WebCore.
(WebKit::needsPlainTextQuirk): Deleted. Moved to WebCore.
(WebKit::WebPage::didStartPageTransition):
(WebKit::WebPage::didChangeSelection):
* WebProcess/WebPage/WebPage.h:
(WebKit::WebPage):

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

5 months ago[Web GPU] Update GPURenderPipelineDescriptor and add GPUColorStateDescriptor.format
justin_fan@apple.com [Wed, 13 Mar 2019 01:33:11 +0000 (01:33 +0000)]
[Web GPU] Update GPURenderPipelineDescriptor and add GPUColorStateDescriptor.format
https://bugs.webkit.org/show_bug.cgi?id=195518
<rdar://problem/46322356>

Reviewed by Myles C. Maxfield.

Source/WebCore:

Upgrade the implementation of GPURenderPipelineDescriptor and GPURenderPipeline and match the updated Web GPU API.
Add stubs for GPUColorStateDescriptor so attachment format can be provided by GPURenderPipelineDescriptor.

All affected Web GPU tests updated to cover existing behavior.

Update file names and symbols:
* CMakeLists.txt:
* DerivedSources-input.xcfilelist:
* DerivedSources-output.xcfilelist:
* DerivedSources.make:
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/WebCoreBuiltinNames.h:

Updates to GPURenderPipeline, GPURenderPipelineDescriptor, and its components:
* Modules/webgpu/GPUColorStateDescriptor.idl: Added. Provide the expected texture format of the render pipeline's color attachments.
* Modules/webgpu/GPUInputStateDescriptor.idl: Renamed from Source/WebCore/Modules/webgpu/WebGPUInputStateDescriptor.idl.
* Modules/webgpu/GPUTextureFormat.idl: Update the existing values to match the new style.
* Modules/webgpu/GPUVertexAttributeDescriptor.idl: Renamed from Source/WebCore/Modules/webgpu/WebGPUVertexAttributeDescriptor.idl.
* Modules/webgpu/GPUVertexInputDescriptor.idl: Renamed from Source/WebCore/Modules/webgpu/WebGPUVertexInputDescriptor.idl.
* Modules/webgpu/WebGPUDevice.cpp:
(WebCore::WebGPUDevice::createPipelineLayout const): Remove unnecessary comment.
(WebCore::WebGPUDevice::createRenderPipeline const): Descriptor validation and conversion moved into WebGPURenderPipelineDescriptor.
(WebCore::validateAndConvertPipelineStage): Deleted.
* Modules/webgpu/WebGPUDevice.h: create* functions should not return nullable.
* Modules/webgpu/WebGPUIndexFormat.h: Removed. Moved into GPUInputStateDescriptor.idl.
* Modules/webgpu/WebGPUInputStateDescriptor.h: Removed.
* Modules/webgpu/WebGPUInputStepMode.idl: Removed. Moved into GPUVertexInputDescriptor.idl.
* Modules/webgpu/WebGPUPipelineLayout.h:
(WebCore::WebGPUPipelineLayout::pipelineLayout): Getters should return raw references.
* Modules/webgpu/WebGPUPipelineStageDescriptor.h: Now shares a common base with GPUPipelineStageDescriptor.
* Modules/webgpu/WebGPURenderPipeline.cpp:
(WebCore::WebGPURenderPipeline::create):
(WebCore::WebGPURenderPipeline::WebGPURenderPipeline):
* Modules/webgpu/WebGPURenderPipeline.h:  Now internally nullable.
(WebCore::WebGPURenderPipeline::renderPipeline const):
(WebCore::WebGPURenderPipeline::renderPipeline): Deleted.
* Modules/webgpu/WebGPURenderPipelineDescriptor.cpp:
(WebCore::WebGPUPipelineStageDescriptor::asGPUPipelineStageDescriptor const): Validate and convert a WebGPUPipelineStageDescriptor to GPU version.
(WebCore::WebGPURenderPipelineDescriptor::asGPURenderPipelineDescriptor const): Ditto for WebGPURenderPipelineDescriptor.
* Modules/webgpu/WebGPURenderPipelineDescriptor.h: Now shares a base class and some instance variables with GPURenderPipelineDescriptor.
* Modules/webgpu/WebGPURenderPipelineDescriptor.idl: Update GPUPrimitiveTopology for new style and add colorStates.
* Modules/webgpu/WebGPUShaderModule.idl: Small pilot to test using InterfaceName to easily rename DOM-facing interfaces.
* Modules/webgpu/WebGPUVertexAttributeDescriptor.h: Removed.
* Modules/webgpu/WebGPUVertexFormat.idl: Removed. Moved and updated in GPUVertexAttributeDescriptor.idl.
* Modules/webgpu/WebGPUVertexInputDescriptor.h: Removed.
* platform/graphics/gpu/GPUInputStateDescriptor.h:
* platform/graphics/gpu/GPUPipelineStageDescriptor.h:
(WebCore::GPUPipelineStageDescriptor::GPUPipelineStageDescriptor):
* platform/graphics/gpu/GPURenderPipelineDescriptor.h: Add shared base class for Web/GPURenderPipelineDescriptor.
(WebCore::GPURenderPipelineDescriptor::GPURenderPipelineDescriptor):
* platform/graphics/gpu/GPUTextureFormat.h:
* platform/graphics/gpu/GPUVertexAttributeDescriptor.h:
* platform/graphics/gpu/GPUVertexInputDescriptor.h:
* platform/graphics/gpu/cocoa/GPURenderPipelineMetal.mm:
(WebCore::setFunctionsForPipelineDescriptor): Make fragment required since descriptor validation fails if fragment function is not found right now.
(WebCore::mtlVertexFormatForGPUVertexFormat): Renamed from validateAndConvertVertexFormatToMTLVertexFormat.
(WebCore::mtlStepFunctionForGPUInputStepMode): Renamed from validateAndConvertStepModeToMTLStepFunction
(WebCore::trySetInputStateForPipelineDescriptor):
(WebCore::trySetColorStatesForColorAttachmentArray):
(WebCore::tryCreateMtlRenderPipelineState):
(WebCore::GPURenderPipeline::create):
(WebCore::validateAndConvertVertexFormatToMTLVertexFormat): Deleted.
(WebCore::validateAndConvertStepModeToMTLStepFunction): Deleted.
* platform/graphics/gpu/cocoa/GPUUtilsMetal.mm:
(WebCore::platformTextureFormatForGPUTextureFormat):
* platform/graphics/gpu/GPUColorStateDescriptor.h: Added.

Misc:
* Modules/webgpu/WebGPUProgrammablePassEncoder.cpp:
(WebCore::WebGPUProgrammablePassEncoder::setPipeline):
* Modules/webgpu/WebGPUProgrammablePassEncoder.h:
* platform/graphics/gpu/GPUProgrammablePassEncoder.h:
* platform/graphics/gpu/GPURenderPassEncoder.h:
* platform/graphics/gpu/GPURenderPipeline.h:
(WebCore::GPURenderPipeline::primitiveTopology const):
* platform/graphics/gpu/cocoa/GPURenderPassEncoderMetal.mm:
(WebCore::GPURenderPassEncoder::setPipeline):
(WebCore::primitiveTypeForGPUPrimitiveTopology):

Tools:

* DumpRenderTree/DerivedSources-input.xcfilelist:
* DumpRenderTree/DerivedSources-output.xcfilelist:

LayoutTests:

Update all tests with new enum styles and re-namings, and specify the format of the color attachment.

* webgpu/blit-commands.html:
* webgpu/buffer-command-buffer-races.html:
* webgpu/buffer-resource-triangles.html:
* webgpu/depth-enabled-triangle-strip.html:
* webgpu/js/webgpu-functions.js:
(createBasicSwapChain):
(createBasicDepthTexture):
* webgpu/render-pipelines-expected.txt:
* webgpu/render-pipelines.html: Remove error cases, as createRenderPipeline no longer returns a null value on failure.
* webgpu/shader-modules.html:
* webgpu/texture-triangle-strip.html:
* webgpu/textures-textureviews.html:
* webgpu/vertex-buffer-triangle-strip.html:

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

5 months agoREGRESSION (iOS 12.2): Webpage using CoffeeScript crashes
msaboff@apple.com [Wed, 13 Mar 2019 01:26:29 +0000 (01:26 +0000)]
REGRESSION (iOS 12.2): Webpage using CoffeeScript crashes
https://bugs.webkit.org/show_bug.cgi?id=195613

Reviewed by Mark Lam.

JSTests:

New regression test.

* stress/regexp-backref-inbounds.js: Added.
(testRegExp):

Source/JavaScriptCore:

The bug here is in Yarr JIT backreference matching code.  We are incorrectly
using a checkedOffset / inputPosition correction when checking for the available
length left in a string.  It is improper to do these corrections as a backreference's
match length is based on what was matched in the referenced capture group and not
part of the checkedOffset and inputPosition computed when we compiled the RegExp.
In some cases, the resulting incorrect calculation would allow us to go past
the subject string's length.  Removed these adjustments.

After writing tests for the first bug, found another bug where the non-greedy
backreference backtracking code didn't do an "are we at the end of the input?" check.
This caused an infinite loop as we'd jump from the backtracking code back to
try matching one more backreference, fail and then backtrack.

* yarr/YarrJIT.cpp:
(JSC::Yarr::YarrGenerator::generateBackReference):
(JSC::Yarr::YarrGenerator::backtrackBackReference):

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

5 months agoAdd WebFrameProxy::loadData
jiewen_tan@apple.com [Wed, 13 Mar 2019 00:36:02 +0000 (00:36 +0000)]
Add WebFrameProxy::loadData
https://bugs.webkit.org/show_bug.cgi?id=195647
<rdar://problem/48826856>

Reviewed by Youenn Fablet.

This patch adds WebFrameProxy::loadData which is a simplified version of WebPageProxy::loadData that
loads substitute data to an iframe. This is needed by the Load Optimizer.

* UIProcess/WebFrameProxy.cpp:
(WebKit::WebFrameProxy::loadData):
* UIProcess/WebFrameProxy.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::loadDataInFrame):
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:

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

5 months agoRemove a site specific hack for AppleConnect plugin
rniwa@webkit.org [Wed, 13 Mar 2019 00:15:52 +0000 (00:15 +0000)]
Remove a site specific hack for AppleConnect plugin
https://bugs.webkit.org/show_bug.cgi?id=195643

Reviewed by Simon Fraser.

r66437 added a workaround for AppleConnect plugin.

Remove this code since Safari doesn't even use WebKitLegacy anymore,
and other WebKit clients support AppleConnect plugins.

* WebCoreSupport/WebFrameLoaderClient.mm:
(WebFrameLoaderClient::createPlugin):

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

5 months ago[ContentChangeObserver] Reset state when touchStart does not turn into click.
zalan@apple.com [Wed, 13 Mar 2019 00:12:15 +0000 (00:12 +0000)]
[ContentChangeObserver] Reset state when touchStart does not turn into click.
https://bugs.webkit.org/show_bug.cgi?id=195603
<rdar://problem/48796582>

Reviewed by Simon Fraser.

Add reset() function to assert and reset the current state.

* page/ios/ContentChangeObserver.cpp:
(WebCore::ContentChangeObserver::willNotProceedWithClick):
(WebCore::ContentChangeObserver::adjustObservedState):
* page/ios/ContentChangeObserver.h:

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

5 months ago[iOS] Input view sometimes flickers when blurring and refocusing an element
wenson_hsieh@apple.com [Tue, 12 Mar 2019 23:51:57 +0000 (23:51 +0000)]
[iOS] Input view sometimes flickers when blurring and refocusing an element
https://bugs.webkit.org/show_bug.cgi?id=195639
<rdar://problem/48735337>

Reviewed by Tim Horton.

Source/WebKit:

On iOS, if a focused element is blurred and immediately refocused in the scope of user interaction, we will end
up reloading interaction state (input views, autocorrection contexts, etc.) in the UI process. On certain well-
trafficked websites, this results in the input view and input accessory view flickering (or more egregiously,
scrolling to re-reveal the focused element) when changing selection.

To fix the issue, this patch refactors some focus management logic to suppress sending focused element updates
to the UI process in the case where the same element is being blurred and immediately refocused. To do this, we
track the most recently blurred element and bail when the recently blurred element is identical to the newly
focused element. See below for more detail.

Test: fast/forms/ios/keyboard-stability-when-refocusing-element.html

* UIProcess/WebPageProxy.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _elementDidFocus:userIsInteracting:blurPreviousNode:changingActivityState:userObject:]):
(-[WKContentView _elementDidBlur]):

Update the web process' notion of whether an input view is showing. Importantly, this accounts for decisions
made by _WKUIDelegate. See below for more details.

(isAssistableInputType): Deleted.

Removed this helper function; this was only used in one place as a sanity check that the focused element's type
is not none, right before attempting to show an input view. Instead, we can just check the focused element's
type directly against InputType::None in the if statement of the early return.

* UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::setIsShowingInputViewForFocusedElement):

Add a hook to notify the web process when an input view is showing or not (see below for more detail).

* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::didStartPageTransition):
(WebKit::WebPage::elementDidRefocus):
(WebKit::WebPage::shouldDispatchUpdateAfterFocusingElement const):

Add a helper to determine whether we notify the UI process about a newly focused element. On macOS, this is true
only when the new focused element is neither the currently focused element, nor the focused element that was
just blurred. On iOS, we have an additional constraint that when the input view is not showing, we still need to
notify the UI process, since the UI process might want to begin showing the keyboard for an element that has
only been programmatically focused, for which we aren't currently showing the input view.

(WebKit::WebPage::elementDidFocus):
(WebKit::WebPage::elementDidBlur):

Replace a couple of existing member variables in WebPage used for focus management:
-   Replace m_hasPendingBlurNotification with m_recentlyBlurredElement, a RefPtr to the Element that is being
    blurred. Behavior here is the same as before (i.e. having a pending blur notification is equivalent to
    having recently blurred a focused element). However, this allows us to check newly focused elements against
    the recently blurred element in WebPage::elementDidFocus().
-   Replace m_isFocusingElementDueToUserInteraction with m_isShowingInputViewForFocusedElement. The flag
    m_isFocusingElementDueToUserInteraction was originally added to fix <webkit.org/b/146735>, by ensuring that
    we don't send redundant ElementDidFocus (formerly, StartAssistingNode) messages to the UI process even when
    the keyboard is already up. In these simpler times, user interaction when focusing an element was equivalent
    to showing an input view for the focused element. However, in today's world, there are a variety of reasons
    why we might or might not show an input view for a given element (including, but not limited to activity
    state changes and decisions made by _WKInputDelegate). As such, it doesn't make sense to continue relying on
    m_isFocusingElementDueToUserInteraction in this early return. Instead, have the UI process propagate a
    message back to the web process, to let it know whether there is a keyboard showing, and use this flag
    instead.

* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::setIsShowingInputViewForFocusedElement):

LayoutTests:

Add a test to ensure that the form control interaction doesn't stop and start again when blurring and focusing
an editable element.

* fast/forms/ios/keyboard-stability-when-refocusing-element-expected.txt: Added.
* fast/forms/ios/keyboard-stability-when-refocusing-element.html: Added.

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

5 months agoUnreviewed, rolling out r242825.
commit-queue@webkit.org [Tue, 12 Mar 2019 22:49:34 +0000 (22:49 +0000)]
Unreviewed, rolling out r242825.
https://bugs.webkit.org/show_bug.cgi?id=195648

"Broke webkitpy tests with my change to
lldb_dump_class_layout.py" (Requested by rmorisset on
#webkit).

Reverted changeset:

"Alter Tools/Scripts/dump-class-layout to be able to dump all
classes with suspicious padding"
https://bugs.webkit.org/show_bug.cgi?id=195573
https://trac.webkit.org/changeset/242825

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

5 months agoExpose document attributes and body background color through HTMLConverter.
timothy@apple.com [Tue, 12 Mar 2019 22:42:49 +0000 (22:42 +0000)]
Expose document attributes and body background color through HTMLConverter.
https://bugs.webkit.org/show_bug.cgi?id=195636
rdar://problem/45055697

Reviewed by Tim Horton.

Source/WebCore:

* editing/cocoa/HTMLConverter.h:
* editing/cocoa/HTMLConverter.mm:
(HTMLConverter::convert):
(WebCore::attributedStringFromRange):
(WebCore::attributedStringFromSelection):
(WebCore::attributedStringBetweenStartAndEnd):

Source/WebCore/PAL:

* pal/spi/cocoa/NSAttributedStringSPI.h:
(NSBackgroundColorDocumentAttribute): Added.

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

5 months agoCompositing layer that renders two positioned elements should not hit test
antti@apple.com [Tue, 12 Mar 2019 22:35:36 +0000 (22:35 +0000)]
Compositing layer that renders two positioned elements should not hit test
https://bugs.webkit.org/show_bug.cgi?id=195371
<rdar://problem/48649586>

Reviewed by Simon Fraser.

Followup to fix the test case (fast/scrolling/ios/overflow-scroll-overlap-2.html)

* platform/graphics/ca/GraphicsLayerCA.cpp:
(WebCore::GraphicsLayerCA::setEventRegion):

Revert a last minute change (that was done to fix a Mac displaylist test).

* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::paintIntoLayer):

Compute the region on iOS only for now (it is not used on other platforms).

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

5 months agoWeb Inspector: Sources: allow image collections to be filtered by type
drousso@apple.com [Tue, 12 Mar 2019 21:47:38 +0000 (21:47 +0000)]
Web Inspector: Sources: allow image collections to be filtered by type
https://bugs.webkit.org/show_bug.cgi?id=195630

Reviewed by Matt Baker.

* UserInterface/Views/ResourceCollectionContentView.js:
(WI.ResourceCollectionContentView):
(WI.ResourceCollectionContentView.prototype.get navigationItems): Added.
(WI.ResourceCollectionContentView.prototype.contentViewAdded):
(WI.ResourceCollectionContentView.prototype.contentViewRemoved): Added.
(WI.ResourceCollectionContentView.prototype._updateImageTypeScopeBar): Added.
(WI.ResourceCollectionContentView.prototype._handleImageTypeSelectionChanged): Added.
* UserInterface/Views/ResourceCollectionContentView.css: Asdded.
(.resource-collection-image-type-scope-bar.default-item-selected):

* UserInterface/Views/CollectionContentView.css:
(.content-view.collection > .content-view[hidden]): Added.

* UserInterface/Views/ScopeBarItem.js:
(WI.ScopeBarItem.prototype.set hidden):
* UserInterface/Views/MultipleScopeBarItem.js:
(WI.MultipleScopeBarItem.prototype.set scopeBarItems):
(WI.MultipleScopeBarItem.prototype.set selectedScopeBarItem):
(WI.MultipleScopeBarItem.prototype.get _visibleScopeBarItems): Added.
(WI.MultipleScopeBarItem.prototype._selectElementSelectionChanged):
(WI.MultipleScopeBarItem.prototype._handleItemHiddenChanged): Added.
Dispatch an event when an item is hidden so that any owner `WI.MultipleScopeBarItem` can
rerender it's <select> without that item.

* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Main.html:

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

5 months agoUnreviewed, rolling out r242747.
commit-queue@webkit.org [Tue, 12 Mar 2019 21:03:08 +0000 (21:03 +0000)]
Unreviewed, rolling out r242747.
https://bugs.webkit.org/show_bug.cgi?id=195641

Performance measurement is difficult in this period, rolling
out it and rolling in later to isolate it from the other
sensitive patches (Requested by yusukesuzuki on #webkit).

Reverted changeset:

"[JSC] Make StaticStringImpl & StaticSymbolImpl actually
static"
https://bugs.webkit.org/show_bug.cgi?id=194212
https://trac.webkit.org/changeset/242747

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

5 months ago[ews-build] Show status bubbles while the patch is waiting in queue
aakash_jain@apple.com [Tue, 12 Mar 2019 20:58:12 +0000 (20:58 +0000)]
[ews-build] Show status bubbles while the patch is waiting in queue
https://bugs.webkit.org/show_bug.cgi?id=195618

Reviewed by Lucas Forschler.

* BuildSlaveSupport/ews-app/ews/views/statusbubble.py:
(StatusBubble): Added ALL_QUEUES and ENABLED_QUEUES. Only certain queues are
enabled in initial deployment.
(StatusBubble._build_bubble): Display bubble even when build hasn't started.
(StatusBubble.get_latest_build_for_queue): Get latest build for a given queue.
(StatusBubble.get_builds_for_queue): Get all builds for a given queue.
(StatusBubble._should_show_bubble_for): Display bubble for only ENABLED_QUEUES for now.
(StatusBubble._build_bubbles_for_patch):

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

5 months ago[WebGL] WebGLBuffer can be too large
dino@apple.com [Tue, 12 Mar 2019 20:57:43 +0000 (20:57 +0000)]
[WebGL] WebGLBuffer can be too large
https://bugs.webkit.org/show_bug.cgi?id=195068
<rdar://problem/48414289>

Reviewed by Antoine Quint.

Source/WebCore:

When creating an element array buffer, make sure to
test against the maximum size of an ArrayBuffer, rather
than just assume it can be created.

Test: fast/canvas/webgl/largeBuffer.html

* html/canvas/WebGLBuffer.cpp:
(WebCore::WebGLBuffer::associateBufferDataImpl):

LayoutTests:

* fast/canvas/webgl/largeBuffer-expected.txt: Added.
* fast/canvas/webgl/largeBuffer.html: Added.

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

5 months agoAlter Tools/Scripts/dump-class-layout to be able to dump all classes with suspicious...
rmorisset@apple.com [Tue, 12 Mar 2019 20:55:49 +0000 (20:55 +0000)]
Alter Tools/Scripts/dump-class-layout to be able to dump all classes with suspicious padding
https://bugs.webkit.org/show_bug.cgi?id=195573

Reviewed by Simon Fraser.

Also modified the script so that when multiple types match a given name it shows them all and not arbitrarily pick one.

* Scripts/dump-class-layout:
(main):
* lldb/lldb_dump_class_layout.py:
(ClassLayout.__init__):
(ClassLayout._compute_padding_recursive):
(LLDBDebuggerInstance.dump_layout_for_classname):
(LLDBDebuggerInstance):
(LLDBDebuggerInstance.dump_all_wasteful_layouts):
(LLDBDebuggerInstance.layout_for_classname): Deleted.

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

5 months agoMore attempts at build fixing.
timothy_horton@apple.com [Tue, 12 Mar 2019 20:40:51 +0000 (20:40 +0000)]
More attempts at build fixing.

* UIProcess/ios/WKActionSheetAssistant.mm:
Yet more.

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

5 months agoDevice Orientation access permission should be denied unless explicitly granted by...
cdumez@apple.com [Tue, 12 Mar 2019 20:32:37 +0000 (20:32 +0000)]
Device Orientation access permission should be denied unless explicitly granted by the client
https://bugs.webkit.org/show_bug.cgi?id=195625

Reviewed by Youenn Fablet.

Source/WebKit:

Device Orientation access permission should be denied unless explicitly granted by the client.
Previously, it was granted by default.

* UIProcess/API/APIUIClient.h:
(API::UIClient::shouldAllowDeviceOrientationAndMotionAccess):
* UIProcess/API/C/WKPage.cpp:
(WKPageSetPageUIClient):
* UIProcess/Cocoa/UIDelegate.mm:
(WebKit::UIDelegate::UIClient::shouldAllowDeviceOrientationAndMotionAccess):

Tools:

add API test coverage.

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WebKitCocoa/DeviceOrientation.mm: Added.
(-[DeviceOrientationMessageHandler userContentController:didReceiveScriptMessage:]):
(-[DeviceOrientationPermissionUIDelegate initWithHandler:]):
(-[DeviceOrientationPermissionUIDelegate _webView:shouldAllowDeviceOrientationAndMotionAccessRequestedByFrame:decisionHandler:]):
(runDeviceOrientationTest):
(TEST):
* TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm:
(-[WebsitePoliciesDeviceOrientationUIDelegate _webView:shouldAllowDeviceOrientationAndMotionAccessRequestedByFrame:decisionHandler:]):

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

5 months agoWeb Inspector: Keyboard shortcut for settings tab too greedy on non-US keyboards
nvasilyev@apple.com [Tue, 12 Mar 2019 20:10:32 +0000 (20:10 +0000)]
Web Inspector: Keyboard shortcut for settings tab too greedy on non-US keyboards
https://bugs.webkit.org/show_bug.cgi?id=192947
<rdar://problem/46886779>

Reviewed by Devin Rousso.

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

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