WebKit-https.git
6 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

6 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

6 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

6 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

6 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

6 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

6 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

6 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

6 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

6 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

6 months agoWeb Inspector: Elements: provide node context menu items for event listeners sorted...
drousso@apple.com [Tue, 12 Mar 2019 20:05:52 +0000 (20:05 +0000)]
Web Inspector: Elements: provide node context menu items for event listeners sorted by node
https://bugs.webkit.org/show_bug.cgi?id=195633

Reviewed by Matt Baker.

* UserInterface/Base/DOMUtilities.js:
(WI.linkifyNodeReferenceElement):
(WI.bindInteractionsForNodeToElement): Added.
Split logic for adding event listeners into a separate function so it can be used on
existing DOM without modifying it.

* UserInterface/Views/DOMNodeDetailsSidebarPanel.js:
(WI.DOMNodeDetailsSidebarPanel.prototype._refreshEventListeners.generateGroupsByNode):

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

6 months agoFlaky API Test TestWebKitAPI.WebKitLegacy.ScrollingDoesNotPauseMedia
jer.noble@apple.com [Tue, 12 Mar 2019 19:37:38 +0000 (19:37 +0000)]
Flaky API Test TestWebKitAPI.WebKitLegacy.ScrollingDoesNotPauseMedia
https://bugs.webkit.org/show_bug.cgi?id=195137
<rdar://problem/48810307>

Reviewed by Eric Carlson.

* TestWebKitAPI/Tests/WebKitLegacy/ios/ScrollingDoesNotPauseMedia.mm:
(TestWebKitAPI::TEST):

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

6 months agoLayout Test imported/w3c/web-platform-tests/IndexedDB/fire-*-event-exception.html...
sihui_liu@apple.com [Tue, 12 Mar 2019 19:36:47 +0000 (19:36 +0000)]
Layout Test imported/w3c/web-platform-tests/IndexedDB/fire-*-event-exception.html are failing
https://bugs.webkit.org/show_bug.cgi?id=195581

LayoutTests/imported/w3c:

Updated test expectations to PASS.

Reviewed by Brady Eidson.

* web-platform-tests/IndexedDB/fire-error-event-exception-expected.txt:
* web-platform-tests/IndexedDB/fire-success-event-exception-expected.txt:
* web-platform-tests/IndexedDB/fire-upgradeneeded-event-exception-expected.txt:

Source/WebCore:

Reviewed by Brady Eidson.

Uncaught exceptions should be handled after IDBRequest dispatches events so that IDBTransaction would stay
active during event dispatch.

* Modules/indexeddb/IDBRequest.cpp:
(WebCore::IDBRequest::dispatchEvent):
(WebCore::IDBRequest::uncaughtExceptionInEventHandler):
* Modules/indexeddb/IDBRequest.h:

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

6 months ago[ews-build] Change urls from uat to production
aakash_jain@apple.com [Tue, 12 Mar 2019 19:34:56 +0000 (19:34 +0000)]
[ews-build] Change urls from uat to production
https://bugs.webkit.org/show_bug.cgi?id=195566

Reviewed by Lucas Forschler.

* BuildSlaveSupport/ews-app/ews/config.py:
* BuildSlaveSupport/ews-build/events.py:
* BuildSlaveSupport/ews-build/steps.py:

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

6 months ago[ews-build] change max_builds for local-worker to 1
aakash_jain@apple.com [Tue, 12 Mar 2019 19:32:22 +0000 (19:32 +0000)]
[ews-build] change max_builds for local-worker to 1
https://bugs.webkit.org/show_bug.cgi?id=195568

Reviewed by Lucas Forschler.

* BuildSlaveSupport/ews-build/loadConfig.py:

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

6 months agoLayout Test imported/w3c/web-platform-tests/IndexedDB/transaction-abort-request-error...
sihui_liu@apple.com [Tue, 12 Mar 2019 19:28:40 +0000 (19:28 +0000)]
Layout Test imported/w3c/web-platform-tests/IndexedDB/transaction-abort-request-error.html is failing
https://bugs.webkit.org/show_bug.cgi?id=195570

Reviewed by Brady Eidson.

LayoutTests/imported/w3c:

Updated test expectation to PASS.

* web-platform-tests/IndexedDB/transaction-abort-request-error-expected.txt:

Source/WebCore:

IDBRequest result should be undefined if it is never set.

* Modules/indexeddb/IDBRequest.cpp:
(WebCore::IDBRequest::IDBRequest):

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

6 months ago[iOS] Enable asynchronous frame scrolling by default
antti@apple.com [Tue, 12 Mar 2019 19:18:51 +0000 (19:18 +0000)]
[iOS] Enable asynchronous frame scrolling by default
https://bugs.webkit.org/show_bug.cgi?id=195622
<rdar://problem/48658028>

Reviewed by Simon Fraser

* Shared/WebPreferences.yaml:
* Shared/WebPreferencesDefaultValues.h:

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

6 months agoUnreviewed, fix a typo in TestExpecations.
ryanhaddad@apple.com [Tue, 12 Mar 2019 19:16:47 +0000 (19:16 +0000)]
Unreviewed, fix a typo in TestExpecations.

* platform/mac/TestExpectations:

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

6 months agoA lot more classes have padding that can be reduced by reordering their fields
rmorisset@apple.com [Tue, 12 Mar 2019 19:07:04 +0000 (19:07 +0000)]
A lot more classes have padding that can be reduced by reordering their fields
https://bugs.webkit.org/show_bug.cgi?id=195579

Reviewed by Mark Lam.

Source/bmalloc:

* bmalloc/Heap.h:
* bmalloc/Scavenger.h:

Source/JavaScriptCore:

* assembler/LinkBuffer.h:
* dfg/DFGArrayifySlowPathGenerator.h:
(JSC::DFG::ArrayifySlowPathGenerator::ArrayifySlowPathGenerator):
* dfg/DFGCallArrayAllocatorSlowPathGenerator.h:
(JSC::DFG::CallArrayAllocatorSlowPathGenerator::CallArrayAllocatorSlowPathGenerator):
(JSC::DFG::CallArrayAllocatorWithVariableSizeSlowPathGenerator::CallArrayAllocatorWithVariableSizeSlowPathGenerator):
* dfg/DFGGraph.h:
* dfg/DFGNode.h:
(JSC::DFG::SwitchData::SwitchData):
* dfg/DFGPlan.cpp:
(JSC::DFG::Plan::Plan):
* dfg/DFGPlan.h:
* dfg/DFGSlowPathGenerator.h:
(JSC::DFG::CallSlowPathGenerator::CallSlowPathGenerator):
* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::SpeculativeJIT):
* dfg/DFGSpeculativeJIT.h:
* domjit/DOMJITSignature.h:
(JSC::DOMJIT::Signature::Signature):
(JSC::DOMJIT::Signature::effect):
(JSC::DOMJIT::Signature::argumentCount): Deleted.
* heap/MarkingConstraintSolver.h:
* heap/SlotVisitor.h:
* jit/CallFrameShuffleData.h:
* jit/JITDivGenerator.h:
* jit/SpillRegistersMode.h:
* parser/Nodes.h:
* profiler/ProfilerOSRExit.cpp:
(JSC::Profiler::OSRExit::OSRExit):
* profiler/ProfilerOSRExit.h:
* runtime/ArrayBufferView.h:
* runtime/SamplingProfiler.cpp:
(JSC::SamplingProfiler::SamplingProfiler):
* runtime/SamplingProfiler.h:
* runtime/TypeSet.cpp:
(JSC::StructureShape::StructureShape):
* runtime/TypeSet.h:
* runtime/Watchdog.h:

Source/WTF:

* wtf/CrossThreadQueue.h:
* wtf/Logger.h:
* wtf/MemoryPressureHandler.h:
* wtf/MetaAllocator.h:
* wtf/Threading.cpp:

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

6 months agoWeb Inspector: DOM Debugger: remove left padding when the last DOM breakpoint is...
drousso@apple.com [Tue, 12 Mar 2019 19:03:01 +0000 (19:03 +0000)]
Web Inspector: DOM Debugger: remove left padding when the last DOM breakpoint is removed
https://bugs.webkit.org/show_bug.cgi?id=195522

Reviewed by Matt Baker.

* UserInterface/Views/DOMTreeContentView.js:
(WI.DOMTreeContentView.prototype._updateBreakpointStatus):
* UserInterface/Views/DOMTreeElement.js:
(WI.DOMTreeElement.prototype.get hasBreakpoint): Added.

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

6 months agoThe HasIndexedProperty node does GC.
mark.lam@apple.com [Tue, 12 Mar 2019 19:02:22 +0000 (19:02 +0000)]
The HasIndexedProperty node does GC.
https://bugs.webkit.org/show_bug.cgi?id=195559
<rdar://problem/48767923>

Reviewed by Yusuke Suzuki.

JSTests:

* stress/HasIndexedProperty-does-gc.js: Added.

Source/JavaScriptCore:

HasIndexedProperty can call the slow path operationHasIndexedPropertyByInt(),
which can eventually call JSString::getIndex(), which can resolve a rope.

* dfg/DFGDoesGC.cpp:
(JSC::DFG::doesGC):

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

6 months agoWeb Inspector: Canvas: export recording as HTML
drousso@apple.com [Tue, 12 Mar 2019 18:59:29 +0000 (18:59 +0000)]
Web Inspector: Canvas: export recording as HTML
https://bugs.webkit.org/show_bug.cgi?id=195311
<rdar://problem/48588673>

Reviewed by Joseph Pecoraro.

Source/WebInspectorUI:

* UserInterface/Models/Recording.js:
(WI.Recording.prototype.async swizzle):
(WI.Recording.prototype.toHTML): Added.
(WI.Recording.prototype.toHTML.escapeHTML): Added.
(WI.Recording.prototype.toHTML.processObject): Added.
(WI.Recording.prototype.toHTML.processValue): Added.

* UserInterface/Views/RecordingContentView.js:
(WI.RecordingContentView):
(WI.RecordingContentView.prototype._exportRecording):
(WI.RecordingContentView.prototype._exportReduction): Added.
(WI.RecordingContentView.prototype._updateExportButton): Added.
(WI.RecordingContentView.prototype._handleExportNavigationItemClicked): Added.
(WI.RecordingContentView.prototype._handleRecordingProcessedAction):

* UserInterface/Views/CanvasOverviewContentView.js:
(WI.CanvasOverviewContentView):
* UserInterface/Views/HeapAllocationsTimelineView.js:
(WI.HeapAllocationsTimelineView):
* UserInterface/Views/HeapSnapshotContentView.js:
(WI.HeapSnapshotContentView):
Drive-by: s/`toolTip`/`tooltip`.
* Localizations/en.lproj/localizedStrings.js:

LayoutTests:

* inspector/canvas/recording-html-2d.html: Added.
* inspector/canvas/recording-html-2d-expected.txt: Added.
* inspector/canvas/recording-2d-expected.txt: Added.
* inspector/canvas/resources/recording-utilities.js:
(TestPage.registerInitializer.log):
(TestPage.registerInitializer.window.startRecording):

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

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

6 months agoWeb Inspector: Audit: there should be a centralized place for reusable code
drousso@apple.com [Tue, 12 Mar 2019 18:56:28 +0000 (18:56 +0000)]
Web Inspector: Audit: there should be a centralized place for reusable code
https://bugs.webkit.org/show_bug.cgi?id=195265
<rdar://problem/47040673>

Reviewed by Joseph Pecoraro.

Source/JavaScriptCore:

* inspector/protocol/Audit.json:
Increment version.

Source/WebInspectorUI:

* UserInterface/Controllers/AuditManager.js:
(WI.AuditManager.prototype.async start):
(WI.AuditManager.prototype._topLevelTestForTest): Added.
(WI.AuditManager.prototype._topLevelTestForTest.walk): Added.

* UserInterface/Models/AuditTestBase.js:
(WI.AuditTestBase):
(WI.AuditTestBase.prototype.async setup): Added.
(WI.AuditTestBase.toJSON):

* UserInterface/Models/AuditTestCase.js:
(WI.AuditTestCase.async.fromPayload):
(WI.AuditTestCase.prototype.async run.async parseResponse):
Allow additional data to be passed back to the result's `data` for testing.

* UserInterface/Models/AuditTestGroup.js:
(WI.AuditTestGroup.async.fromPayload):

LayoutTests:

* inspector/audit/manager-start-setup.html: Added.
* inspector/audit/manager-start-setup-expected.txt: Added.
* inspector/model/auditTestCase.html:
* inspector/model/auditTestCase-expected.txt:
* inspector/model/auditTestGroup.html:
* inspector/model/auditTestGroup-expected.txt:

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

6 months ago[iOS] Block access to backboardd service
pvollan@apple.com [Tue, 12 Mar 2019 18:51:13 +0000 (18:51 +0000)]
[iOS] Block access to backboardd service
https://bugs.webkit.org/show_bug.cgi?id=195484

Reviewed by Brent Fulgham.

This patch is addressing blocking the backboardd service "com.apple.backboard.hid.services". Getting the
backlight level in the WebContent process will initiate a connection with this service. To be able to
block the service, the backlight level is queried in the UI process and sent to the WebContent process
when the WebContent process is started, and when the backlight level is changed. On the WebContent side,
the method getting the backlight level is swizzled to return the value sent from the UI process.

* Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
* UIProcess/Cocoa/WebProcessPoolCocoa.mm:
(WebKit::WebProcessPool::displayBrightness):
(WebKit::WebProcessPool::backlightLevelDidChangeCallback):
(WebKit::WebProcessPool::registerNotificationObservers):
(WebKit::WebProcessPool::unregisterNotificationObservers):
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::initializeNewWebProcess):
* UIProcess/WebProcessPool.h:
* WebProcess/WebProcess.h:
* WebProcess/WebProcess.messages.in:
* WebProcess/cocoa/WebProcessCocoa.mm:
(WebKit::currentBacklightLevel):
(WebKit::WebProcess::backlightLevelDidChange):

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

6 months agoFix the build after 242801
timothy_horton@apple.com [Tue, 12 Mar 2019 18:25:34 +0000 (18:25 +0000)]
Fix the build after 242801

* UIProcess/ios/WKActionSheetAssistant.mm:
(-[WKActionSheetAssistant _elementActionForDDAction:]):
More.

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

6 months agoFix the build after 242801
timothy_horton@apple.com [Tue, 12 Mar 2019 18:23:54 +0000 (18:23 +0000)]
Fix the build after 242801

* UIProcess/ios/WKActionSheetAssistant.mm:
(-[WKActionSheetAssistant _elementActionForDDAction:]):

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

6 months agoRename originsMatch in originSerializationsMatch
youenn@apple.com [Tue, 12 Mar 2019 18:08:17 +0000 (18:08 +0000)]
Rename originsMatch in originSerializationsMatch
https://bugs.webkit.org/show_bug.cgi?id=195572

Reviewed by Jiewen Tan.

In addition to renaming, make use of SecurityOrigin::isSameOriginAs
where it makes more sense than to compare origin serialization.
The main difference is that isSameOriginAs will return false for two different unique origins
while originsSerializationsMatch will not.

* Modules/credentialmanagement/CredentialsContainer.cpp:
(WebCore::CredentialsContainer::doesHaveSameOriginAsItsAncestors):
* Modules/mediastream/RTCController.cpp:
(WebCore::matchDocumentOrigin):
* Modules/mediastream/RTCPeerConnection.cpp:
(WebCore::RTCPeerConnection::certificatesFromConfiguration):
* loader/DocumentLoader.cpp:
(WebCore::DocumentLoader::shouldOpenExternalURLsPolicyToPropagate const):
* loader/cache/CachedResourceLoader.cpp:
(WebCore::CachedResourceLoader::shouldUpdateCachedResourceWithCurrentRequest):
* page/SecurityOrigin.cpp:
(WebCore::serializedOriginsMatch):
(WebCore::originsMatch): Deleted.
* page/SecurityOrigin.h:

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

6 months ago[iOS] Sandbox must allow mach lookup required to compress video
eric.carlson@apple.com [Tue, 12 Mar 2019 17:47:32 +0000 (17:47 +0000)]
[iOS] Sandbox must allow mach lookup required to compress video
https://bugs.webkit.org/show_bug.cgi?id=195627
<rdar://problem/48811072>

Reviewed by Youenn Fablet.

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

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

6 months agoblocksInPreOrder and blocksInPostOrder should reserve the right capacity for their...
rmorisset@apple.com [Tue, 12 Mar 2019 17:42:42 +0000 (17:42 +0000)]
blocksInPreOrder and blocksInPostOrder should reserve the right capacity for their result vector
https://bugs.webkit.org/show_bug.cgi?id=195595

Reviewed by Saam Barati.

Also change BlockList from being Vector<BasicBlock*, 5> to Vector<BasicBlock*>

* dfg/DFGBasicBlock.h:
* dfg/DFGGraph.cpp:
(JSC::DFG::Graph::blocksInPreOrder):
(JSC::DFG::Graph::blocksInPostOrder):

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

6 months agoCheck whether to launch a default action instead of action sheet
commit-queue@webkit.org [Tue, 12 Mar 2019 17:41:59 +0000 (17:41 +0000)]
Check whether to launch a default action instead of action sheet
https://bugs.webkit.org/show_bug.cgi?id=195225
<rdar://problem/47715544>

Patch by Jennifer Moore <jennifer.moore@apple.com> on 2019-03-12
Source/WebCore/PAL:

Reviewed by Daniel Bates.

Add new SPI declarations.

* pal/spi/ios/DataDetectorsUISPI.h:

Source/WebKit:

Reviewed by Daniel Bates and Tim Horton.

Notify DataDetectors at the start of a touch on a link, and check whether to immediately
launch the default action instead of an action sheet.

* UIProcess/ios/WKActionSheetAssistant.h:
* UIProcess/ios/WKActionSheetAssistant.mm:
(-[WKActionSheetAssistant interactionDidStart]):
(-[WKActionSheetAssistant _createSheetWithElementActions:defaultTitle:showLinkTitle:]):
(-[WKActionSheetAssistant showImageSheet]):
(-[WKActionSheetAssistant showLinkSheet]):
(-[WKActionSheetAssistant showDataDetectorsSheet]):
(-[WKActionSheetAssistant _createSheetWithElementActions:showLinkTitle:]): Deleted.
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _webTouchEventsRecognized:]):

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

6 months ago[iOS] Add test to ensure that a web page can prevent the default for Command + A
dbates@webkit.org [Tue, 12 Mar 2019 17:23:00 +0000 (17:23 +0000)]
[iOS] Add test to ensure that a web page can prevent the default for Command + A
https://bugs.webkit.org/show_bug.cgi?id=192425

Reviewed by Wenson Hsieh.

Skip the test until we have the UIKit fix for <rdar://problem/46430796>.

* fast/events/ios/key-command-select-all-prevent-default.html: Added.
* platform/ios/TestExpectations:

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

6 months agoFix the build
timothy_horton@apple.com [Tue, 12 Mar 2019 17:22:55 +0000 (17:22 +0000)]
Fix the build

* TestRunnerShared/spi/PencilKitTestSPI.h:
* TestWebKitAPI/ios/PencilKitTestSPI.h:

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

6 months ago[Synthetic Click] Dispatch mouseout soon after mouseup
zalan@apple.com [Tue, 12 Mar 2019 17:15:52 +0000 (17:15 +0000)]
[Synthetic Click] Dispatch mouseout soon after mouseup
https://bugs.webkit.org/show_bug.cgi?id=195575
<rdar://problem/47093049>

Reviewed by Simon Fraser.

Source/WebCore:

Let's fire a mouseout event when a click is submitted as the result of a tap. It helps to dismiss content which would otherwise require you to move the mouse (cases like control bar on youtube.com).

Test: fast/events/touch/ios/content-observation/mouse-out-event-should-fire-on-click.html

* page/EventHandler.h:
* page/ios/EventHandlerIOS.mm:
(WebCore::EventHandler::dispatchFakeMouseOut):

Source/WebKit:

* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::completeSyntheticClick):

LayoutTests:

* fast/events/touch/ios/content-observation/mouse-out-event-should-fire-on-click-expected.txt: Added.
* fast/events/touch/ios/content-observation/mouse-out-event-should-fire-on-click.html: Added.

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

6 months agoIn CachedFrame's constructor, release-assert that DOMWindow still has a frame after...
rniwa@webkit.org [Tue, 12 Mar 2019 16:50:46 +0000 (16:50 +0000)]
In CachedFrame's constructor, release-assert that DOMWindow still has a frame after page-caching subframes
https://bugs.webkit.org/show_bug.cgi?id=195609

Reviewed by Chris Dumez.

r242677 added release assertions to DOMWindow::suspendForPageCache. But when the first release assert in
that function is hit, we still can't tell whether active DOM objects are detaching frames, or if creating
CachedFrame's on one of subframes is causing the frame to go way.

Add a release assertion immediately after creating CachedFrame on subframes to detect this case.

* history/CachedFrame.cpp:
(WebCore::CachedFrame::CachedFrame):

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

6 months ago[ContentChangeObserver] Stop content change observation when the touch event turns...
zalan@apple.com [Tue, 12 Mar 2019 16:40:31 +0000 (16:40 +0000)]
[ContentChangeObserver] Stop content change observation when the touch event turns into long press
https://bugs.webkit.org/show_bug.cgi?id=195601
<rdar://problem/48796324>

Reviewed by Wenson Hsieh.

Source/WebCore:

Cancel the ongoing content observation (started at touchStart) when the touch event does not turn into a tap gesture.

Not testable because any subsequent tap would reset the state anyway (though it might be measurable through some code triggering heavy content change).

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

Source/WebKit:

Add didRecognizeLongPress() message to be able to cancel content observation (started at touchStart).

* UIProcess/WebPageProxy.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _longPressRecognized:]):
* UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::didRecognizeLongPress):
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::didRecognizeLongPress):

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

6 months ago[Mac] Ensure Apple Pay is unavailable when PassKit.framework is missing
aestes@apple.com [Tue, 12 Mar 2019 15:07:13 +0000 (15:07 +0000)]
[Mac] Ensure Apple Pay is unavailable when PassKit.framework is missing
https://bugs.webkit.org/show_bug.cgi?id=195583
<rdar://problem/48420224>

Reviewed by Daniel Bates.

PassKit.framework is optionally soft-linked on Mac because it is missing from the Recovery
Partition. We need to check if the framework is available before calling into it.

* Shared/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
(WebKit::WebPaymentCoordinatorProxy::platformCanMakePayments):
(WebKit::WebPaymentCoordinatorProxy::platformCanMakePaymentsWithActiveCard):
(WebKit::WebPaymentCoordinatorProxy::platformOpenPaymentSetup):
(WebKit::WebPaymentCoordinatorProxy::platformAvailablePaymentNetworks):
* Shared/ApplePay/mac/WebPaymentCoordinatorProxyMac.mm:
(WebKit::WebPaymentCoordinatorProxy::platformShowPaymentUI):

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

6 months agoCompositing layer that renders two positioned elements should not hit test
antti@apple.com [Tue, 12 Mar 2019 14:45:31 +0000 (14:45 +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.

Source/WebCore:

Compute and pass an event region for layers if it differs from layer bounds.

This patch fixes various block overflow and layer expansion cases. It does not handle
overflowing line boxes yet (it adds tests for those too).

Test: fast/scrolling/ios/overflow-scroll-overlap-2.html

* platform/graphics/GraphicsLayer.cpp:
(WebCore::GraphicsLayer::setEventRegion):
* platform/graphics/GraphicsLayer.h:
(WebCore::GraphicsLayer::eventRegion):
* platform/graphics/Region.h:
* platform/graphics/ca/GraphicsLayerCA.cpp:
(WebCore::GraphicsLayerCA::setEventRegion):
(WebCore::GraphicsLayerCA::commitLayerChangesBeforeSublayers):
(WebCore::GraphicsLayerCA::updateEventRegion):

Pass the region via the main platform layer of the graphics layer.

* platform/graphics/ca/GraphicsLayerCA.h:
* platform/graphics/ca/PlatformCALayer.h:
* platform/graphics/ca/cocoa/PlatformCALayerCocoa.h:
* rendering/PaintInfo.h:
* rendering/PaintPhase.h:

Add EventRegion paint phase that computes the region instead of painting anything.

* rendering/RenderBlock.cpp:
(WebCore::RenderBlock::paintObject):
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::paintForegroundForFragments):
(WebCore::RenderLayer::paintForegroundForFragmentsWithPhase):

Invoke EventRegion paint phase.

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

Request event region when pointing a layer.

Source/WebKit:

* Shared/RemoteLayerTree/RemoteLayerTreePropertyApplier.mm:
(WebKit::RemoteLayerTreePropertyApplier::applyProperties):
* Shared/RemoteLayerTree/RemoteLayerTreeTransaction.h:
* Shared/RemoteLayerTree/RemoteLayerTreeTransaction.mm:
(WebKit::RemoteLayerTreeTransaction::LayerProperties::LayerProperties):
(WebKit::RemoteLayerTreeTransaction::LayerProperties::encode const):
(WebKit::RemoteLayerTreeTransaction::LayerProperties::decode):

Pass event region to UI process.

* UIProcess/RemoteLayerTree/RemoteLayerTreeNode.h:
(WebKit::RemoteLayerTreeNode::layerID const):
(WebKit::RemoteLayerTreeNode::eventRegion const):
* UIProcess/RemoteLayerTree/RemoteLayerTreeNode.mm:
(WebKit::RemoteLayerTreeNode::RemoteLayerTreeNode):
(WebKit::RemoteLayerTreeNode::~RemoteLayerTreeNode):
(WebKit::RemoteLayerTreeNode::setEventRegion):

Maintain event region in RemoteLayerTreeNodes.

(WebKit::RemoteLayerTreeNode::initializeLayer):
(WebKit::RemoteLayerTreeNode::layerID):
(WebKit::RemoteLayerTreeNode::forCALayer):

Move layerID to RemoteLayerTreeNode and store RemoteLayerTreeNode pointer to CALayers instead.
This makes it easy to find the matching RemoteLayerTreeNode from a layer, globally.

(WebKit::RemoteLayerTreeNode::setLayerID): Deleted.
* UIProcess/RemoteLayerTree/ios/RemoteLayerTreeViews.mm:
(WebKit::collectDescendantViewsAtPoint):

If we have event region, use it for hit testing.

(-[UIView _web_findDescendantViewAtPoint:withEvent:]):
(collectDescendantViewsAtPoint): Deleted.
* WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.cpp:
(WebKit::PlatformCALayerRemote::eventRegion const):
(WebKit::PlatformCALayerRemote::setEventRegion):
* WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.h:

LayoutTests:

* fast/scrolling/ios/overflow-scroll-overlap-2-expected.txt: Added.
* fast/scrolling/ios/overflow-scroll-overlap-2.html: Added.

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

6 months ago[GStreamer][v4l2] Synchronous video texture flushing support
philn@webkit.org [Tue, 12 Mar 2019 14:17:06 +0000 (14:17 +0000)]
[GStreamer][v4l2] Synchronous video texture flushing support
https://bugs.webkit.org/show_bug.cgi?id=195453

Reviewed by Xabier Rodriguez-Calvar.

The v4l2 video decoder currently requires that downstream users of
the graphics resources complete any pending draw call and release
resources before returning from the DRAIN query.

To accomplish this the player monitors the pipeline and whenever a
v4l2 decoder is added, synchronous video texture flushing support
is enabled. Additionally and for all decoder configurations, a
flush is performed before disposing of the player.

* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::playbinDeepElementAddedCallback):
Monitor elements added to the decodebin bin.
(WebCore::MediaPlayerPrivateGStreamer::decodebinElementAdded): Set
a flag if a v4l2 decoder was added in decodebin.
(WebCore::MediaPlayerPrivateGStreamer::createGSTPlayBin): Connect
to the deep-element-added signal so as to monitor pipeline
topology updates.
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
(WebCore::MediaPlayerPrivateGStreamerBase::~MediaPlayerPrivateGStreamerBase):
Flush video texture before disposing of the player.
(WebCore::MediaPlayerPrivateGStreamerBase::flushCurrentBuffer):
Synchronously flush if the pipeline contains a v4l2 decoder.
(WebCore::MediaPlayerPrivateGStreamerBase::createGLAppSink): Monitor push events only.
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:
* platform/graphics/texmap/TextureMapperPlatformLayerProxy.cpp:
(WebCore::TextureMapperPlatformLayerProxy::pushNextBuffer): New
boolean flag used mostly to trigger synchronous flush conditions.
(WebCore::TextureMapperPlatformLayerProxy::dropCurrentBufferWhilePreservingTexture):
Optionally drop the current buffer in a synchronous manner. By
default the method keeps operating asynchronously.
* platform/graphics/texmap/TextureMapperPlatformLayerProxy.h:

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

6 months agoMove the remaining code to decide whether site specific quirks are needed to Quirks...
rniwa@webkit.org [Tue, 12 Mar 2019 11:38:49 +0000 (11:38 +0000)]
Move the remaining code to decide whether site specific quirks are needed to Quirks class
https://bugs.webkit.org/show_bug.cgi?id=195610

Reviewed by Antti Koivisto.

Moved the remaining code scattered across WebCore to decide whether a site specific quirk
is needed or not to Quirks class introduced in r236818.

* Modules/fetch/FetchRequest.cpp:
(WebCore::needsSignalQuirk): Deleted.
(WebCore::processInvalidSignal):
* html/HTMLFormControlElement.cpp:
(WebCore::HTMLFormControlElement::needsMouseFocusableQuirk const):
* html/HTMLMediaElement.cpp:
(WebCore::needsAutoplayPlayPauseEventsQuirk): Deleted.
(WebCore::HTMLMediaElement::dispatchPlayPauseEventsIfNeedsQuirks):
(WebCore::needsSeekingSupportQuirk): Deleted.
(WebCore::HTMLMediaElement::supportsSeeking const):
* html/MediaElementSession.cpp:
(WebCore::needsArbitraryUserGestureAutoplayQuirk): Deleted.
(WebCore::needsPerDocumentAutoplayBehaviorQuirk): Deleted.
(WebCore::MediaElementSession::playbackPermitted const):
* page/Quirks.cpp:
(WebCore::allowedAutoplayQuirks): Added.
(WebCore::Quirks::needsQuirks const): Added.
(WebCore::Quirks::shouldIgnoreInvalidSignal const): Added.
(WebCore::Quirks::needsFormControlToBeMouseFocusable const): Added.
(WebCore::Quirks::needsAutoplayPlayPauseEvents const): Added.
(WebCore::Quirks::needsSeekingSupportDisabled const): Addd.
(WebCore::Quirks::needsPerDocumentAutoplayBehavior const): Added.
(WebCore::Quirks::shouldAutoplayForArbitraryUserGesture const): Added.
(WebCore::Quirks::hasBrokenEncryptedMediaAPISupportQuirk const): Added.
(WebCore::Quirks::hasWebSQLSupportQuirk const): Fixed the coding style.
* page/Quirks.h:

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

6 months ago[Media][MSE] Don't emit timeUpdate after play() if currentTime hasn't changed
eocanha@igalia.com [Tue, 12 Mar 2019 11:09:45 +0000 (11:09 +0000)]
[Media][MSE] Don't emit timeUpdate after play() if currentTime hasn't changed
https://bugs.webkit.org/show_bug.cgi?id=195454

Reviewed by Jer Noble.

Source/WebCore:

This change fixes YouTube 2019 MSE Conformance Tests "26. SFRPausedAccuracy"
and "27. HFRPausedAccuracy".

The first timeUpdate event after play() is omitted, because currentTime
doesn't actually change in that scenario.

Tests 26 and 27 measure the time drift (real time vs. media time) on playback
and start counting since the first timeUpdate event. In WebKit, that event
happens at play(), before the pipeline has completed the transition to playing.
Therefore, the real time inherits this startup delay and the test thinks that
the player has drifted.

* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::playInternal): Don't emit a timeUpdated event unless currentTime has changed.

LayoutTests:

This patch removes expectations for the first timeUpdate event after
play(), because currentTime doesn't actually change in that scenario
and the spec[1] states that a timeupdate event is fired if "The current
playback position changed as part of normal playback or in an
especially interesting way, for example discontinuously."

[1] https://www.w3.org/TR/html52/semantics-embedded-content.html#eventdef-media-timeupdate

* media/video-paused-0-rate.html: Don't require the timeUpdate event when currentTime=0 to pass the test.
* media/video-play-pause-events-expected.txt: Ditto, and changed test description.
* media/video-play-pause-events.html: Changed test description to reflect the new behaviour.
* media/video-play-pause-exception-expected.txt: Don't require the timeUpdate event.

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

6 months ago[EME][GStreamer] Speculative build fix
eocanha@igalia.com [Tue, 12 Mar 2019 10:59:30 +0000 (10:59 +0000)]
[EME][GStreamer] Speculative build fix
https://bugs.webkit.org/show_bug.cgi?id=195614

Unreviewed speculative WPE build fix after r242776.

* platform/graphics/gstreamer/eme/WebKitCommonEncryptionDecryptorGStreamer.h: Added missing include.

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

6 months ago[GStreamer] remove legacy GStreamer version checks
philn@webkit.org [Tue, 12 Mar 2019 10:25:03 +0000 (10:25 +0000)]
[GStreamer] remove legacy GStreamer version checks
https://bugs.webkit.org/show_bug.cgi?id=195552

Reviewed by Xabier Rodriguez-Calvar.

We require GStreamer 1.8.x so version checks below that make
little sense. Also checks for odd minor version numbers make sense
only for the latest GStreamer git development version.

* platform/graphics/gstreamer/GStreamerCommon.cpp:
(WebCore::initializeGStreamerAndRegisterWebKitElements):
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::createAudioSink):
(WebCore::MediaPlayerPrivateGStreamer::createGSTPlayBin):
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
(WebCore::MediaPlayerPrivateGStreamerBase::ensureGstGLContext):

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

6 months ago[WPE][GTK] Load events may occur in unexpected order when JS redirects page before...
carlosgc@webkit.org [Tue, 12 Mar 2019 08:30:43 +0000 (08:30 +0000)]
[WPE][GTK] Load events may occur in unexpected order when JS redirects page before subresource load finishes
https://bugs.webkit.org/show_bug.cgi?id=194131

Source/WebKit:

Reviewed by Michael Catanzaro.

Ensure we emit the load-failed and load-changed with finished event when there's still an ongoing load when a
new provisional load strarts. Previous load fails with cancelled error.

* UIProcess/API/glib/WebKitWebView.cpp:
(webkitWebViewWillStartLoad): Call webkitWebViewLoadFailed() if current page load state is not finished.
* UIProcess/API/glib/WebKitWebViewPrivate.h:
* UIProcess/API/gtk/PageClientImpl.cpp:
(WebKit::PageClientImpl::didStartProvisionalLoadForMainFrame): Call webkitWebViewWillStartLoad().
* UIProcess/API/wpe/APIViewClient.h:
(API::ViewClient::willStartLoad): Add willStartLoad() to API::ViewClient
* UIProcess/API/wpe/PageClientImpl.cpp:
(WebKit::PageClientImpl::didStartProvisionalLoadForMainFrame): Call WPEView::willStartLoad().
* UIProcess/API/wpe/PageClientImpl.h:
* UIProcess/API/wpe/WPEView.cpp:
(WKWPE::View::willStartLoad): Call API::ViewClient::willStartLoad().
* UIProcess/API/wpe/WPEView.h:
* UIProcess/PageLoadState.h:
(WebKit::PageLoadState::isProvisional const):
(WebKit::PageLoadState::isCommitted const):
(WebKit::PageLoadState::isFinished const):

Tools:

Patch by Michael Catanzaro <mcatanzaro@igalia.com> on 2019-03-12
Reviewed by Michael Catanzaro.

* TestWebKitAPI/Tests/WebKitGLib/TestLoaderClient.cpp:
(uriChanged):
(testUnfinishedSubresourceLoad):
(serverCallback):
(beforeAll):

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

6 months ago[EME] generateRequest was not using the sanitized init data
calvaris@igalia.com [Tue, 12 Mar 2019 08:29:07 +0000 (08:29 +0000)]
[EME] generateRequest was not using the sanitized init data
https://bugs.webkit.org/show_bug.cgi?id=195555

Reviewed by Jer Noble.

* Modules/encryptedmedia/MediaKeySession.cpp:
(WebCore::MediaKeySession::generateRequest): Use sanitized init
data instead of the original one.

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

6 months agoImplement further CORS restrictions
commit-queue@webkit.org [Tue, 12 Mar 2019 08:13:26 +0000 (08:13 +0000)]
Implement further CORS restrictions
https://bugs.webkit.org/show_bug.cgi?id=188644

Patch by Rob Buis <rbuis@igalia.com> on 2019-03-12
Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Update improved test results.

* web-platform-tests/fetch/api/cors/cors-preflight-not-cors-safelisted.any-expected.txt:
* web-platform-tests/fetch/api/cors/cors-preflight-not-cors-safelisted.any.worker-expected.txt:
* web-platform-tests/fetch/api/headers/headers-no-cors.window-expected.txt:

Source/WebCore:

Verify that header value length is not greater than 128 [1]. Also implement
Step 5 of [2] to append values to existing header value when calling
Headers.append.

Tests: fetch/api/cors/cors-preflight-not-cors-safelisted.any.html
       fetch/api/cors/cors-preflight-not-cors-safelisted.any.worker.html
       fetch/api/headers/headers-no-cors.window.html

[1] https://fetch.spec.whatwg.org/#cors-safelisted-request-header
[2] https://fetch.spec.whatwg.org/#concept-headers-append

* Modules/fetch/FetchHeaders.cpp:
(WebCore::canWriteHeader):
(WebCore::appendToHeaderMap):
(WebCore::FetchHeaders::remove):
(WebCore::FetchHeaders::set):
(WebCore::FetchHeaders::filterAndFill):
* platform/network/HTTPParsers.cpp:
(WebCore::isCrossOriginSafeRequestHeader): verify that header length is not greater than 128

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

6 months agoWeb Inspector: Timelines - Improve handling of past recordings (readonly)
commit-queue@webkit.org [Tue, 12 Mar 2019 07:10:58 +0000 (07:10 +0000)]
Web Inspector: Timelines - Improve handling of past recordings (readonly)
https://bugs.webkit.org/show_bug.cgi?id=195594

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2019-03-12
Reviewed by Devin Rousso.

* UserInterface/Views/TimelineRecordingContentView.js:
(WI.TimelineRecordingContentView.prototype._clearTimeline):
Don't allow clearing of a readonly recording.

* UserInterface/Views/TimelineTabContentView.js:
(WI.TimelineTabContentView.prototype._toggleRecordingOnSpacebar):
Don't do anything when viewing a readonly recording.

(WI.TimelineTabContentView.prototype._recordButtonClicked):
Start a new recording if viewing a readonly recording.

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

6 months agoRemove OS X Server QuickTime plugin quirks
rniwa@webkit.org [Tue, 12 Mar 2019 06:58:20 +0000 (06:58 +0000)]
Remove OS X Server QuickTime plugin quirks
https://bugs.webkit.org/show_bug.cgi?id=195607

Reviewed by Brent Fulgham.

r87244 added a site specific quirk for Mac OS X Sever wiki pages.
However, the issue has since been resolved as of OS X Mountain Lion,
of which Apple has ended the support in September 2015.

Because the latest versions of Safari no longer supports non-Flash plugins,
the only scenario in which this quirk comes into play is when a third party app
which embeds WKWebView or WebKitLegacy loaded web pages on a OS X Server
running OS X Mountain Lion or earlier.

Given these observations, it's probably safe to remove this quirk from WebKit.

* html/HTMLObjectElement.cpp:
(WebCore::HTMLObjectElement::hasFallbackContent const):
(WebCore::HTMLObjectElement::hasValidClassId):
(WebCore::HTMLObjectElement::shouldAllowQuickTimeClassIdQuirk): Deleted.
* html/HTMLObjectElement.h:

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

6 months agoUnreviewed speculative WPE build fix after r195586.
ross.kirsling@sony.com [Tue, 12 Mar 2019 06:44:27 +0000 (06:44 +0000)]
Unreviewed speculative WPE build fix after r195586.

* platform/encryptedmedia/CDMInstance.h:

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

6 months agoRemove MediaWiki site specific quirks
rniwa@webkit.org [Tue, 12 Mar 2019 06:09:58 +0000 (06:09 +0000)]
Remove MediaWiki site specific quirks
https://bugs.webkit.org/show_bug.cgi?id=195597

Reviewed by Simon Fraser.

r47383 added a site specific quirk for the KHTML workaround in MediaWiki.

Blink since removed this workaround:
https://github.com/chromium/chromium/commit/ecf84fc9c1a51c8ede7adfd0b0cba446d9a8caa0

Given Chrome has been shipping without this quirk for six years, it's safe to assume
this site specific quirk is no longer neeed for Web compatibility.

* css/StyleSheetContents.cpp:
(WebCore::StyleSheetContents::parseAuthorStyleSheet):
* css/parser/CSSParserContext.cpp:
(WebCore::CSSParserContext::CSSParserContext):
(WebCore::operator==):
* css/parser/CSSParserContext.h:
(WebCore::CSSParserContextHash::hash):

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

6 months agoRemove OpenCube QuickMenu quirks from navigator.appVersion
rniwa@webkit.org [Tue, 12 Mar 2019 06:07:14 +0000 (06:07 +0000)]
Remove OpenCube QuickMenu quirks from navigator.appVersion
https://bugs.webkit.org/show_bug.cgi?id=195600

Reviewed by Simon Fraser.

Remove the site specific quirk added in r35050 for OpenCube QuickMenu library for nwa.com

Blink removed this code back in 2013. The fact Chrome has been shipping successfully without
this quirk for six years is a good evidence that it's no longer needed for the Web compatibility.

* page/Navigator.cpp:
(WebCore::Navigator::appVersion const):
(WebCore::shouldHideFourDot): Deleted.

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

6 months agoWTF::Expected should use std::addressof instead of operator&
commit-queue@webkit.org [Tue, 12 Mar 2019 06:04:22 +0000 (06:04 +0000)]
WTF::Expected should use std::addressof instead of operator&
https://bugs.webkit.org/show_bug.cgi?id=195604

Patch by Alex Christensen <achristensen@webkit.org> on 2019-03-11
Reviewed by Myles Maxfield.

Source/WTF:

The latter was causing problems with types that do tricky things with constructors and operator&,
specifically UniqueRef but I made a reduced test case.  When it used operator&, it would get the contained
type and call the constructor that takes a contained type instead of the move constructor.

* wtf/Expected.h:
(std::experimental::fundamentals_v3::__expected_detail::base::base):
(std::experimental::fundamentals_v3::expected::swap):

Tools:

* TestWebKitAPI/Tests/WTF/Expected.cpp:
(TestWebKitAPI::Unique::Unique):
(TestWebKitAPI::Unique::operator&):
(TestWebKitAPI::TEST):

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

6 months agoUnreviewed, rolling out r242763.
ryanhaddad@apple.com [Tue, 12 Mar 2019 05:50:21 +0000 (05:50 +0000)]
Unreviewed, rolling out r242763.

Causes layout test crashes on iOS simulator

Reverted changeset:

"[Synthetic Click] Dispatch mouseout soon after mouseup"
https://bugs.webkit.org/show_bug.cgi?id=195575
https://trac.webkit.org/changeset/242763

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

6 months agoAdd Optional to Forward.h.
ross.kirsling@sony.com [Tue, 12 Mar 2019 05:27:44 +0000 (05:27 +0000)]
Add Optional to Forward.h.
https://bugs.webkit.org/show_bug.cgi?id=195586

Reviewed by Darin Adler.

Source/JavaScriptCore:

* b3/B3Common.cpp:
* b3/B3Common.h:
* debugger/DebuggerParseData.cpp:
* debugger/DebuggerParseData.h:
* heap/HeapSnapshot.cpp:
* heap/HeapSnapshot.h:
* jit/PCToCodeOriginMap.cpp:
* jit/PCToCodeOriginMap.h:
* runtime/AbstractModuleRecord.cpp:
* runtime/AbstractModuleRecord.h:
* wasm/WasmInstance.h:
* wasm/WasmModuleParser.h:
* wasm/WasmSectionParser.cpp:
* wasm/WasmSectionParser.h:
* wasm/WasmStreamingParser.cpp:
* wasm/WasmStreamingParser.h:
* yarr/YarrFlags.cpp:
* yarr/YarrFlags.h:
* yarr/YarrUnicodeProperties.cpp:
* yarr/YarrUnicodeProperties.h:
Remove unnecessary includes from headers.

Source/WebCore:

* Modules/encryptedmedia/MediaKeyStatusMap.cpp:
* Modules/encryptedmedia/MediaKeyStatusMap.h:
* Modules/webauthn/apdu/ApduCommand.cpp:
* Modules/webauthn/apdu/ApduCommand.h:
* Modules/webauthn/apdu/ApduResponse.cpp:
* Modules/webauthn/apdu/ApduResponse.h:
* Modules/webauthn/fido/FidoHidMessage.cpp:
* Modules/webauthn/fido/FidoHidMessage.h:
* Modules/webauthn/fido/U2fCommandConstructor.cpp:
* Modules/webauthn/fido/U2fCommandConstructor.h:
* Modules/webdatabase/SQLTransaction.cpp:
* Modules/webdatabase/SQLTransaction.h:
* Modules/webgpu/WHLSL/Metal/WHLSLEntryPointScaffolding.cpp:
* Modules/webgpu/WHLSL/Metal/WHLSLEntryPointScaffolding.h:
* Modules/webgpu/WHLSL/WHLSLGatherEntryPointItems.h:
* Modules/webgpu/WHLSL/WHLSLPrepare.cpp:
* Modules/webgpu/WHLSL/WHLSLPrepare.h:
* Modules/webgpu/WebGPU.cpp:
* Modules/webgpu/WebGPU.h:
* Modules/webgpu/WebGPUCommandBuffer.cpp:
* Modules/webgpu/WebGPUCommandBuffer.h:
* animation/WebAnimation.cpp:
* animation/WebAnimation.h:
* crypto/gcrypt/GCryptUtilities.cpp:
* crypto/gcrypt/GCryptUtilities.h:
* css/CSSStyleDeclaration.cpp:
* css/CSSStyleDeclaration.h:
* dom/TextDecoder.cpp:
* dom/TextDecoder.h:
* dom/UserGestureIndicator.cpp:
* dom/UserGestureIndicator.h:
* editing/ChangeListTypeCommand.cpp:
* editing/ChangeListTypeCommand.h:
* editing/EditingStyle.cpp:
* editing/EditingStyle.h:
* html/DOMFormData.cpp:
* html/DOMFormData.h:
* html/HTMLAllCollection.cpp:
* html/HTMLAllCollection.h:
* html/HTMLAnchorElement.cpp:
* html/HTMLAnchorElement.h:
* html/ImageBitmap.cpp:
* html/ImageBitmap.h:
* html/canvas/Path2D.h:
* html/canvas/WebMetalEnums.cpp:
* html/canvas/WebMetalEnums.h:
* html/parser/HTMLParserIdioms.cpp:
* html/parser/HTMLParserIdioms.h:
* loader/ResourceCryptographicDigest.cpp:
* loader/ResourceCryptographicDigest.h:
* mathml/MathMLOperatorDictionary.cpp:
* mathml/MathMLOperatorDictionary.h:
* page/PerformanceEntry.cpp:
* page/PerformanceEntry.h:
* page/ResourceUsageData.h:
* platform/ReferrerPolicy.cpp:
* platform/ReferrerPolicy.h:
* platform/Theme.cpp:
* platform/Theme.h:
* platform/encryptedmedia/CDMInstance.h:
* platform/graphics/gpu/GPUDevice.cpp:
* platform/graphics/gpu/GPUDevice.h:
* platform/graphics/transforms/AffineTransform.cpp:
* platform/graphics/transforms/AffineTransform.h:
* platform/graphics/transforms/TransformState.cpp:
* platform/graphics/transforms/TransformState.h:
* platform/graphics/transforms/TransformationMatrix.cpp:
* platform/graphics/transforms/TransformationMatrix.h:
* platform/graphics/win/ImageDecoderDirect2D.cpp:
* platform/graphics/win/ImageDecoderDirect2D.h:
* platform/mediacapabilities/AudioConfiguration.h:
* platform/network/CacheValidation.cpp:
* platform/network/CacheValidation.h:
* platform/network/DataURLDecoder.cpp:
* platform/network/DataURLDecoder.h:
* platform/network/HTTPParsers.cpp:
* platform/network/HTTPParsers.h:
* platform/network/curl/CookieJarDB.cpp:
* platform/network/curl/CookieJarDB.h:
* platform/win/SearchPopupMenuDB.cpp:
* platform/win/SearchPopupMenuDB.h:
* rendering/ImageQualityController.cpp:
* rendering/ImageQualityController.h:
* svg/SVGToOTFFontConversion.cpp:
* svg/SVGToOTFFontConversion.h:
Remove unnecessary includes from headers.

Source/WebCore/PAL:

* pal/crypto/tasn1/Utilities.cpp:
* pal/crypto/tasn1/Utilities.h:
Remove unnecessary includes from headers.

Source/WebKit:

* Shared/RTCNetwork.cpp:
* Shared/RTCNetwork.h:
* Shared/RTCPacketOptions.cpp:
* Shared/RTCPacketOptions.h:
* UIProcess/API/APIWebsitePolicies.h:
* UIProcess/WebStorage/LocalStorageDatabaseTracker.h:
Remove unnecessary includes from headers.

Source/WTF:

* wtf/Forward.h:
Add forward declaration for Optional.

* wtf/CPUTime.h:
* wtf/Expected.h:
* wtf/MainThread.h:
* wtf/MemoryFootprint.h:
* wtf/URLHelpers.cpp:
* wtf/URLHelpers.h:
* wtf/cocoa/CPUTimeCocoa.cpp:
* wtf/fuchsia/CPUTimeFuchsia.cpp:
* wtf/unix/CPUTimeUnix.cpp:
* wtf/win/CPUTimeWin.cpp:
Remove unnecessary includes from headers.

Tools:

* TestWebKitAPI/Tests/WebCore/ApduTest.cpp:
* TestWebKitAPI/Tests/WebCore/FidoHidMessageTest.cpp:
Remove unnecessary includes from headers.

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

6 months agoUnreviewed, rolling out r242745 and r242756.
commit-queue@webkit.org [Tue, 12 Mar 2019 05:23:43 +0000 (05:23 +0000)]
Unreviewed, rolling out r242745 and r242756.
https://bugs.webkit.org/show_bug.cgi?id=195606

Breaks internal builds (Requested by ryanhaddad on #webkit).

Reverted changesets:

"[iOS] Block access to backboardd service"
https://bugs.webkit.org/show_bug.cgi?id=195484
https://trac.webkit.org/changeset/242745

"Unreviewed build fix after r242745."
https://trac.webkit.org/changeset/242756

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

6 months agoUnreviewed test gardening, rebaseline tests after r242757.
ryanhaddad@apple.com [Tue, 12 Mar 2019 05:18:34 +0000 (05:18 +0000)]
Unreviewed test gardening, rebaseline tests after r242757.

* http/tests/adClickAttribution/anchor-tag-attributes-validation-expected.txt:
* http/tests/security/anchor-download-block-crossorigin-expected.txt:

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

6 months agoAdd testing API to hit-test and scroll overflow scrollers
simon.fraser@apple.com [Tue, 12 Mar 2019 04:59:35 +0000 (04:59 +0000)]
Add testing API to hit-test and scroll overflow scrollers
https://bugs.webkit.org/show_bug.cgi?id=195278

Reviewed by Antti Koivisto.

Tools:

Add UIScriptController::immediateScrollElementAtContentPointToOffset() to enable
testing of the view hit-testing code path, and immediate scrolling of overflow:scroll.

Tests: scrollingcoordinator/ios/scroll-element-at-point.html

* DumpRenderTree/ios/UIScriptControllerIOS.mm:
(WTR::UIScriptController::immediateScrollElementAtContentPointToOffset):
* TestRunnerShared/UIScriptContext/Bindings/UIScriptController.idl:
* TestRunnerShared/UIScriptContext/UIScriptController.cpp:
(WTR::UIScriptController::immediateScrollElementAtContentPointToOffset):
* TestRunnerShared/UIScriptContext/UIScriptController.h:
* WebKitTestRunner/ios/UIScriptControllerIOS.mm:
(WTR::enclosingScrollViewIncludingSelf):
(WTR::UIScriptController::immediateScrollElementAtContentPointToOffset):

LayoutTests:

The test loads a scaled page with accelerated overflow:scroll, and hit-tests
near the top-left and bottom-right corners to test the point conversion logic.

* scrollingcoordinator/ios/scroll-element-at-point-expected.txt: Added.
* scrollingcoordinator/ios/scroll-element-at-point.html: Added.

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

6 months agoWeb Inspector: REGRESSION: Network Cookies Table does not load
commit-queue@webkit.org [Tue, 12 Mar 2019 04:56:41 +0000 (04:56 +0000)]
Web Inspector: REGRESSION: Network Cookies Table does not load
https://bugs.webkit.org/show_bug.cgi?id=195599

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2019-03-11
Reviewed by Devin Rousso.

* UserInterface/Views/ResourceCookiesContentView.js:
(WI.ResourceCookiesContentView.prototype.tableIndexForRepresentedObject):
(WI.ResourceCookiesContentView.prototype.tableRepresentedObjectForIndex):
Include needed delegate methods.

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

6 months ago[CoordinatedGraphics] ASSERTION FAILED: !m_state.isSuspended
Hironori.Fujii@sony.com [Tue, 12 Mar 2019 04:12:32 +0000 (04:12 +0000)]
[CoordinatedGraphics] ASSERTION FAILED: !m_state.isSuspended
https://bugs.webkit.org/show_bug.cgi?id=195550

Reviewed by Carlos Garcia Campos.

CompositingRunLoop::suspend() locks a mutex and stops the update
timer. But, the timer can be fired after the lock was acquired and
before the timer is stopped.

* Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.cpp:
(WebKit::CompositingRunLoop::updateTimerFired): Removed the
assertion. Return early if m_state.isSuspended.

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

6 months agoREGRESSION(r236281): YouTube Movies fail with "video format" error
jer.noble@apple.com [Tue, 12 Mar 2019 03:49:45 +0000 (03:49 +0000)]
REGRESSION(r236281): YouTube Movies fail with "video format" error
https://bugs.webkit.org/show_bug.cgi?id=195598
<rdar://problem/48782842>

Reviewed by Jon Lee.

Partially revert r236281 for YouTube.com.

* page/Quirks.cpp:
(WebCore::Quirks::hasBrokenEncryptedMediaAPISupportQuirk const):

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

6 months ago[macOS] Remove the Kerberos rules from the WebContent sandbox
pvollan@apple.com [Tue, 12 Mar 2019 03:24:27 +0000 (03:24 +0000)]
[macOS] Remove the Kerberos rules from the WebContent sandbox
https://bugs.webkit.org/show_bug.cgi?id=195464
<rdar://problem/35369230>

Reviewed by Brent Fulgham.

Kerberos auth is done in the UIProcess or NetworkProcess now.

* WebProcess/com.apple.WebProcess.sb.in:

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

6 months agoWeb Inspector: use -webkit-{margin,padding}-{start,end} instead of [dir={ltr/rtl...
drousso@apple.com [Tue, 12 Mar 2019 03:22:29 +0000 (03:22 +0000)]
Web Inspector: use -webkit-{margin,padding}-{start,end} instead of [dir={ltr/rtl}] rules
https://bugs.webkit.org/show_bug.cgi?id=195569
<rdar://problem/48778727>

Reviewed by Matt Baker.

* UserInterface/Debug/UncaughtExceptionReporter.css:
* UserInterface/Views/BoxModelDetailsSectionRow.css:
* UserInterface/Views/BreakpointActionView.css:
* UserInterface/Views/BreakpointPopoverController.css:
* UserInterface/Views/CPUTimelineView.css:
* UserInterface/Views/CallFrameTreeElement.css:
* UserInterface/Views/CallFrameView.css:
* UserInterface/Views/DOMTreeContentView.css:
* UserInterface/Views/DOMTreeOutline.css:
* UserInterface/Views/DashboardContainerView.css:
* UserInterface/Views/DataGrid.css:
* UserInterface/Views/DebuggerDashboardView.css:
* UserInterface/Views/DebuggerSidebarPanel.css:
* UserInterface/Views/DefaultDashboardView.css:
* UserInterface/Views/DetailsSection.css:
* UserInterface/Views/FilterBar.css:
* UserInterface/Views/FindBanner.css:
* UserInterface/Views/FontResourceContentView.css:
* UserInterface/Views/GeneralStyleDetailsSidebarPanel.css:
* UserInterface/Views/HierarchicalPathComponent.css:
* UserInterface/Views/LayerTreeDetailsSidebarPanel.css:
* UserInterface/Views/Main.css:
* UserInterface/Views/NetworkTableContentView.css:
* UserInterface/Views/OpenResourceDialog.css:
* UserInterface/Views/RecordingActionTreeElement.css:
* UserInterface/Views/ScopeRadioButtonNavigationItem.css:
* UserInterface/Views/SettingsTabContentView.css:
* UserInterface/Views/ThreadTreeElement.css:
* UserInterface/Views/Toolbar.css:
* UserInterface/Views/TreeOutline.css:
* UserInterface/Views/TypeTreeElement.css:
* UserInterface/Views/TypeTreeView.css:
* UserInterface/Views/URLBreakpointPopover.css:
* UserInterface/Views/WebSocketContentView.css:

* UserInterface/Views/RecordingActionTreeElement.js:
(WI.RecordingActionTreeElement.static _getClassNames):
Replace class `.action` with `.recording-action` for better uniqueness/clarity.

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

6 months ago[iOS] Add entitlement to enable use of graphics endpoint with limited capabilities
pvollan@apple.com [Tue, 12 Mar 2019 03:21:12 +0000 (03:21 +0000)]
[iOS] Add entitlement to enable use of graphics endpoint with limited capabilities
https://bugs.webkit.org/show_bug.cgi?id=195582
<rdar://problem/36082379>

Reviewed by Brent Fulgham.

This is a QuartzCore endpoint with a minimal set of capabilities.

* Configurations/WebContent-iOS.entitlements:

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

6 months ago[Web GPU] BindGroups/Argument buffers: Move MTLBuffer creation from and GPUBindGroup...
justin_fan@apple.com [Tue, 12 Mar 2019 03:19:10 +0000 (03:19 +0000)]
[Web GPU] BindGroups/Argument buffers: Move MTLBuffer creation from and GPUBindGroup validation to GPUDevice.createBindGroup
https://bugs.webkit.org/show_bug.cgi?id=195519
<rdar://problem/48781297>

Reviewed by Myles C. Maxfield.

Metal's Argument Buffers should not be tied directly to GPUBindGroupLayout; rather, create the MTLBuffer
in GPUBindGroup creation process.
Move GPUBindGroup validation out of setBindGroup and to GPUBindGroup creation for performance.

Covered by existing tests. No behavior change.

* Modules/webgpu/WebGPUDevice.cpp:
(WebCore::WebGPUDevice::createBindGroup const):
* Sources.txt:
* SourcesCocoa.txt:
* WebCore.xcodeproj/project.pbxproj:
* platform/graphics/gpu/GPUBindGroup.cpp: Removed.
* platform/graphics/gpu/GPUBindGroup.h:
(WebCore::GPUBindGroup::vertexArgsBuffer): A buffer that arguments will be encoded into during setBindGroup.
(WebCore::GPUBindGroup::fragmentArgsBuffer): Ditto.
(WebCore::GPUBindGroup::boundBuffers const): A list of resources that are bound by this GPUBindGroup.
(WebCore::GPUBindGroup::boundTextures const): Ditto.
(WebCore::GPUBindGroup::layout const): Deleted.
(WebCore::GPUBindGroup::bindings const): Deleted.
* platform/graphics/gpu/GPUBindGroupLayout.h: No longer creating and retaining MTLBuffers.
(WebCore::GPUBindGroupLayout::vertexEncoder const):
(WebCore::GPUBindGroupLayout::fragmentEncoder const):
(WebCore::GPUBindGroupLayout::computeEncoder const):
(WebCore::GPUBindGroupLayout::ArgumentEncoderBuffer::isValid const): Deleted.
(WebCore::GPUBindGroupLayout::vertexArguments const): Deleted.
(WebCore::GPUBindGroupLayout::fragmentArguments const): Deleted.
(WebCore::GPUBindGroupLayout::computeArguments const): Deleted.
* platform/graphics/gpu/GPUProgrammablePassEncoder.h:
* platform/graphics/gpu/cocoa/GPUBindGroupLayoutMetal.mm:
(WebCore::tryCreateMtlArgumentEncoder):
(WebCore::GPUBindGroupLayout::tryCreate):
(WebCore::GPUBindGroupLayout::GPUBindGroupLayout):
(WebCore::tryCreateArgumentEncoderAndBuffer): Deleted.
* platform/graphics/gpu/cocoa/GPUBindGroupMetal.mm: Added.
(WebCore::tryCreateArgumentBuffer): Create and associate the MTLBuffer that backs the MTLArgumentEncoder.
(WebCore::tryGetResourceAsBufferBinding): Validate a GPUBindingResource.
(WebCore::trySetBufferOnEncoder): Encodes a GPUBufferBinding's MTLBuffer on a MTLArgumentEncoder.
(WebCore::tryGetResourceAsSampler): Ditto, for GPUSamplers.
(WebCore::trySetSamplerOnEncoder):
(WebCore::tryGetResourceAsTexture): Ditto, for GPUTextures.
(WebCore::trySetTextureOnEncoder):
(WebCore::GPUBindGroup::tryCreate): Most setBindGroup validation moved here.
(WebCore::GPUBindGroup::GPUBindGroup): Retains the resource references needed for setBindGroup.
* platform/graphics/gpu/cocoa/GPUProgrammablePassEncoderMetal.mm:
(WebCore::GPUProgrammablePassEncoder::setBindGroup): Most validation moved to GPUBindGroup::tryCreate().
(WebCore::GPUProgrammablePassEncoder::setResourceAsBufferOnEncoder): Deleted.
(WebCore::GPUProgrammablePassEncoder::setResourceAsSamplerOnEncoder): Deleted.
(WebCore::GPUProgrammablePassEncoder::setResourceAsTextureOnEncoder): Deleted.
* platform/graphics/gpu/cocoa/GPURenderPassEncoderMetal.mm:
(WebCore::GPURenderPassEncoder::useResource):
(WebCore::GPURenderPassEncoder::setVertexBuffer):
(WebCore::GPURenderPassEncoder::setFragmentBuffer):

Misc:
* platform/graphics/gpu/GPUCommandBuffer.cpp/h: Move missing includes to header.

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

6 months agoWeb Inspector: DOMDebugger: protocol error on first open
drousso@apple.com [Tue, 12 Mar 2019 02:54:07 +0000 (02:54 +0000)]
Web Inspector: DOMDebugger: protocol error on first open
https://bugs.webkit.org/show_bug.cgi?id=195248
<rdar://problem/48538465>

Unreviewed followup of r242743 to fix test inspector/dom-debugger/dom-breakpoints.html.

* UserInterface/Controllers/DOMDebuggerManager.js:
(WI.DOMDebuggerManager.prototype.addDOMBreakpoint):
(WI.DOMDebuggerManager.prototype._resolveDOMBreakpoint):
Still attempt to resolve the DOM breakpoint if it already has a `domNodeIdentifier` so that
it will get added to the node's frame's DOM breakpoint map. Without this, some breakpoints
might get "missed" when calling `WI.domDebuggerManager.removeDOMBreakpointsForNode`.

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

6 months agoMove NetworkProcess/Classifier/ResourceLoadStatisticsStoreCocoa.mm functionality...
wilander@apple.com [Tue, 12 Mar 2019 02:16:41 +0000 (02:16 +0000)]
Move NetworkProcess/Classifier/ResourceLoadStatisticsStoreCocoa.mm functionality into UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm
https://bugs.webkit.org/show_bug.cgi?id=195117
<rdar://problem/48448715>

Reviewed by Brent Fulgham.

Reading of user defaults on Cocoa platforms should be done in the UI process and
forwarded to Resource Load Statistics in the network process through the
WebKit::NetworkSessionCreationParameters struct.

This patch does away with some old user defaults we don't use anymore. It also
changes the developer-facing default name to ITPManualPrevalentResource.

* NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:
(WebKit::ResourceLoadStatisticsDatabaseStore::ResourceLoadStatisticsDatabaseStore):
    Removed the call to the old registerUserDefaultsIfNeeded().
* NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp:
(WebKit::ResourceLoadStatisticsMemoryStore::ResourceLoadStatisticsMemoryStore):
    Removed the call to the old registerUserDefaultsIfNeeded().
* NetworkProcess/Classifier/ResourceLoadStatisticsStore.h:
    Removed the declaration of the old registerUserDefaultsIfNeeded().
* NetworkProcess/Classifier/ResourceLoadStatisticsStoreCocoa.mm: Removed.
* NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h:
    Added an enum class EnableResourceLoadStatisticsDebugMode.
* NetworkProcess/NetworkSession.cpp:
(WebKit::NetworkSession::setResourceLoadStatisticsEnabled):
* NetworkProcess/NetworkSession.h:
* NetworkProcess/NetworkSessionCreationParameters.cpp:
(WebKit::NetworkSessionCreationParameters::encode const):
(WebKit::NetworkSessionCreationParameters::decode):
* NetworkProcess/NetworkSessionCreationParameters.h:
   The struct now has two new fields:
   - enableResourceLoadStatisticsDebugMode
   - resourceLoadStatisticsManualPrevalentResource
* NetworkProcess/cocoa/NetworkSessionCocoa.mm:
(WebKit::NetworkSessionCocoa::NetworkSessionCocoa):
    Forwarding of the parameters.
* SourcesCocoa.txt:
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::ensureNetworkProcess):
    Forwarding of the parameters.
* UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:
(WebKit::WebsiteDataStore::parameters):
    This is where user defaults for Resource Load Statistics are now read.
* WebKit.xcodeproj/project.pbxproj:

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

6 months ago[Synthetic Click] Dispatch mouseout soon after mouseup
zalan@apple.com [Tue, 12 Mar 2019 01:58:17 +0000 (01:58 +0000)]
[Synthetic Click] Dispatch mouseout soon after mouseup
https://bugs.webkit.org/show_bug.cgi?id=195575
<rdar://problem/47093049>

Reviewed by Simon Fraser.

Source/WebCore:

Let's fire a mouseout event when a click is submitted as the result of a tap. It helps to dismiss content which would otherwise require you to move the mouse (cases like control bar on youtube.com).

Test: fast/events/touch/ios/content-observation/mouse-out-event-should-fire-on-click.html

* page/EventHandler.h:
* page/ios/EventHandlerIOS.mm:
(WebCore::EventHandler::dispatchFakeMouseOut):

Source/WebKit:

* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::completeSyntheticClick):

LayoutTests:

* fast/events/touch/ios/content-observation/mouse-out-event-should-fire-on-click-expected.txt: Added.
* fast/events/touch/ios/content-observation/mouse-out-event-should-fire-on-click.html: Added.

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

6 months agoAPI test WebKit.RequestTextInputContext fails on iOS
timothy_horton@apple.com [Tue, 12 Mar 2019 01:53:58 +0000 (01:53 +0000)]
API test WebKit.RequestTextInputContext fails on iOS
https://bugs.webkit.org/show_bug.cgi?id=195585

Reviewed by Wenson Hsieh and Simon Fraser.

Source/WebKit:

* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _convertRectFromRootViewCoordinates:]):
(-[WKWebView _convertRectToRootViewCoordinates:]):
(-[WKWebView _requestTextInputContextsInRect:completionHandler:]):
(-[WKWebView _focusTextInputContext:completionHandler:]):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::elementRectInRootViewCoordinates):
(WebKit::WebPage::textInputContextsInRect):
(WebKit::elementRectInWindowCoordinates): Deleted.
Text input context SPI should be in terms of WKWebView coordinates,
for consistency's sake. This is a bit irritating; WebPage(Proxy) continue
to operate in "root view" coordinates, which means different things
depending on if delegatesScrolling is true or not. So, WKWebView does
the conversion, re-creating objects as needed.

Tools:

* TestWebKitAPI/Tests/WebKitCocoa/RequestTextInputContext.mm:
(applyStyle):
(TEST):
Add a viewport, so that the coordinates match up on iOS.
Scroll by moving the UIScrollView's contentOffset.

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

6 months agoREGRESSION: (r242181) API test DragAndDropTests.ExternalSourcePlainTextToIFrame is...
youenn@apple.com [Tue, 12 Mar 2019 01:08:18 +0000 (01:08 +0000)]
REGRESSION: (r242181) API test DragAndDropTests.ExternalSourcePlainTextToIFrame is Timing out
https://bugs.webkit.org/show_bug.cgi?id=195362

Reviewed by Alexey Proskuryakov.

Covered by API test no longer crashing.

* page/SecurityOrigin.cpp:
(WebCore::originsMatch):
String representation should only match if originsMatch returns true.

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

6 months agoOptimizing loads when creating new pages
jiewen_tan@apple.com [Tue, 12 Mar 2019 00:57:53 +0000 (00:57 +0000)]
Optimizing loads when creating new pages
https://bugs.webkit.org/show_bug.cgi?id=195516
<rdar://problem/48738086>

Reviewed by Darin Adler.

This patch adds hooks in WebPageProxy::createNewPage to optimize loads, and moves the creationParameters
of API::NavigationAction from UI clients to WebPageProxy::createNewPage. Also, we now pass the whole
API::NavigationAction to the load optimizer instead of the request within.

* UIProcess/API/APINavigationAction.h:
* UIProcess/API/APIUIClient.h:
(API::UIClient::createNewPage):
* UIProcess/API/C/WKPage.cpp:
(WKPageSetPageUIClient):
* UIProcess/API/glib/WebKitUIClient.cpp:
* UIProcess/Cocoa/NavigationState.mm:
(WebKit::tryOptimizingLoad):
(WebKit::tryInterceptNavigation):
(WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction):
* UIProcess/Cocoa/UIDelegate.h:
* UIProcess/Cocoa/UIDelegate.mm:
(WebKit::UIDelegate::UIClient::createNewPage):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::decidePolicyForNavigationAction):
(WebKit::tryOptimizingLoad):
(WebKit::WebPageProxy::createNewPage):
* UIProcess/WebPageProxy.h:

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

6 months ago[Web GPU] Update GPUSwapChainDescriptor, GPUSwapChain and implement GPUCanvasContext
justin_fan@apple.com [Tue, 12 Mar 2019 00:46:41 +0000 (00:46 +0000)]
[Web GPU] Update GPUSwapChainDescriptor, GPUSwapChain and implement GPUCanvasContext
https://bugs.webkit.org/show_bug.cgi?id=194406
<rdar://problem/47892466>

Reviewed by Myles C. Maxfield.

Source/JavaScriptCore:

Added WebGPU to inspector context types.

* inspector/protocol/Canvas.json:
* inspector/scripts/codegen/generator.py:

Source/WebCore:

GPUSwapChain no longer inherits from GPUBasedRenderingContext, and is now created from a GPUDevice.
WebGPURenderingContext is now GPUCanvasContext and delegates functionality to the GPUSwapChain, if it exists.
GPUQueue now implicitly presents the GPUSwapChain's current drawable at the task boundary, if one exists.
Creating a new GPUSwapChain with the same GPUCanvasContext invalidates the previous one and its drawable and pipeline attachments.
Calling GPUSwapChain::getCurrentTexture returns the same drawable within one task cycle.
Some mentions of "WebGPU" have been renamed to "Web GPU" and "gpu".

All Web GPU tests updated to match.

Add new files and symbols.
* CMakeLists.txt:
* DerivedSources-input.xcfilelist:
* DerivedSources-output.xcfilelist:
* DerivedSources.make:
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/WebCoreBuiltinNames.h:

Rename some mentions of "webgpu" to "gpu".
* Modules/webgpu/DOMWindowWebGPU.cpp:
(WebCore::DOMWindowWebGPU::gpu):
(WebCore::DOMWindowWebGPU::gpu const):
* Modules/webgpu/DOMWindowWebGPU.h:
* Modules/webgpu/DOMWindowWebGPU.idl:

Replace WebGPURenderingContext with GPUCanvasContext.
* Modules/webgpu/GPUCanvasContext.cpp: Renamed from Source/WebCore/Modules/webgpu/WebGPURenderingContext.cpp.
(WebCore::GPUCanvasContext::create):
(WebCore::GPUCanvasContext::GPUCanvasContext):
(WebCore::GPUCanvasContext::replaceSwapChain):
(WebCore::GPUCanvasContext::platformLayer const):
(WebCore::GPUCanvasContext::reshape):
(WebCore::GPUCanvasContext::markLayerComposited):
* Modules/webgpu/GPUCanvasContext.h: Renamed from Source/WebCore/Modules/webgpu/WebGPURenderingContext.h.
* Modules/webgpu/GPUCanvasContext.idl: Renamed from Source/WebCore/Modules/webgpu/WebGPURenderingContext.idl.
* dom/Document.cpp:
(WebCore::Document::getCSSCanvasContext):
* dom/Document.h:
* dom/Document.idl:
* html/HTMLCanvasElement.cpp:
(WebCore::HTMLCanvasElement::getContext):
(WebCore::HTMLCanvasElement::isWebGPUType):
(WebCore::HTMLCanvasElement::createContextWebGPU):
(WebCore::HTMLCanvasElement::getContextWebGPU):
* html/HTMLCanvasElement.h:
* html/HTMLCanvasElement.idl:
* inspector/InspectorCanvas.cpp:
(WebCore::InspectorCanvas::buildObjectForCanvas):
* inspector/agents/InspectorCanvasAgent.cpp:
(WebCore::contextAsScriptValue):

Update WebGPUSwapChain.
* Modules/webgpu/GPUTextureDescriptor.idl:
* Modules/webgpu/GPUTextureFormat.idl: Add the other two texture formats supported by CAMetalLayer.
* Modules/webgpu/WebGPUDevice.cpp: Implement createSwapChain.
(WebCore::WebGPUDevice::createSwapChain const):
(WebCore::WebGPUDevice::getQueue const):
(WebCore::WebGPUDevice::getQueue): Deleted.
* Modules/webgpu/WebGPUDevice.h:
* Modules/webgpu/WebGPUDevice.idl:
* Modules/webgpu/WebGPUSwapChain.cpp:
(WebCore::WebGPUSwapChain::create):
(WebCore::WebGPUSwapChain::WebGPUSwapChain):
(WebCore::WebGPUSwapChain::getCurrentTexture): Renamed from getNextTexture. Only returns the next drawable if the last was presented.
(WebCore::WebGPUSwapChain::destroy): Invalidate this GPUSwapChain and its textures and views.
(WebCore::WebGPUSwapChain::configure): Deleted.
(WebCore::WebGPUSwapChain::getNextTexture): Deleted.
(WebCore::WebGPUSwapChain::present): Deleted.
(WebCore::WebGPUSwapChain::reshape): Deleted.
(WebCore::WebGPUSwapChain::markLayerComposited): Deleted.
* Modules/webgpu/WebGPUSwapChain.h: Now a device-based object rather than a rendering context.
(WebCore::WebGPUSwapChain::swapChain const):
(WebCore::WebGPUSwapChain::WebGPUSwapChain): Deleted.
* Modules/webgpu/WebGPUSwapChain.idl:
* Modules/webgpu/WebGPUSwapChainDescriptor.h: Added.
* platform/graphics/gpu/GPUDevice.cpp: Implement tryCreateSwapChain.
(WebCore::GPUDevice::tryCreateSwapChain const):
(WebCore::GPUDevice::getQueue const):
(WebCore::GPUDevice::getQueue): Deleted.
* platform/graphics/gpu/GPUDevice.h: Retain a reference to the current GPUSwapChain, if one exists.
(WebCore::GPUDevice::swapChain const):
* platform/graphics/gpu/GPUQueue.h:
* platform/graphics/gpu/GPUSwapChain.h:
(WebCore::GPUSwapChain::destroy):
* platform/graphics/gpu/GPUSwapChainDescriptor.h: Added.
* platform/graphics/gpu/GPUTextureFormat.h: Add the other two texture formats supported by CAMetalLayer.
* platform/graphics/gpu/cocoa/GPUBufferMetal.mm:
(WebCore::GPUBuffer::commandBufferCommitted):
* platform/graphics/gpu/cocoa/GPUQueueMetal.mm:
(WebCore::GPUQueue::tryCreate): Renamed from create to better fit functionality. Now retain a reference to the GPUDevice.
(WebCore::GPUQueue::GPUQueue):
(WebCore::GPUQueue::submit): Now checks state of all resources before marking them as committed or committing any resource.
        In addition, schedules the current drawable to be presented after all commands have been submitted during this task cycle.
* platform/graphics/gpu/cocoa/GPURenderPassEncoderMetal.mm:
(WebCore::useAttachments): Ensure that the command buffer is aware of any texture resources used as attachments.
(WebCore::GPURenderPassEncoder::tryCreate):
* platform/graphics/gpu/cocoa/GPUSwapChainMetal.mm:
(WebCore::tryGetSupportedPixelFormat): Supported texture formats are the intersection of Web GPU's texture formats and CAMetalLayer's.
(WebCore::setLayerShape):
(WebCore::tryCreateSwapLayer): Create and configure the CAMetalLayer backing the swap chain.
(WebCore::GPUSwapChain::tryCreate):
(WebCore::GPUSwapChain::GPUSwapChain):
(WebCore::GPUSwapChain::tryGetCurrentTexture): Renamed from getNextTexture. Only returns a texture if the last one was presented.
(WebCore::GPUSwapChain::present):
(WebCore::GPUSwapChain::reshape):
(WebCore::GPUSwapChain::takeDrawable): Swaps out the current drawable so that it can be presented. The GPUSwapChain thus releases its reference to it.
(WebCore::GPUSwapChain::create): Deleted.
(WebCore::GPUSwapChain::setDevice): Deleted.
(WebCore::GPUSwapChain::setFormat): Deleted.
(WebCore::GPUSwapChain::getNextTexture): Deleted.
* platform/graphics/gpu/cocoa/GPUUtilsMetal.mm:
(WebCore::platformTextureFormatForGPUTextureFormat):

Misc:
* Modules/webgpu/WebGPUProgrammablePassEncoder.cpp: Missing include.

Source/WebInspectorUI:

Name updates for Web GPU renaming in inspector.

* UserInterface/Models/Canvas.js:
(WI.Canvas.displayNameForContextType):

LayoutTests:

Update all tests for new WebGPUSwapChain and GPUCanvasContext, and window object name change from 'webgpu' to 'gpu'.
In addition, all tests have been updated to WPT style.

* webgpu/adapter-options.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/basic-webgpu-functions.js: Removed. No longer needed.
* webgpu/js/webgpu-functions.js:
(async.getBasicDevice):
(createBasicSwapChain): Renamed from createBasicContext.
(beginBasicRenderPass):
(createBasicContext): Deleted.
(createBasicDepthStateDescriptor): Deleted.
* webgpu/queue-creation.html:
* webgpu/render-command-encoding-expected.txt:
* webgpu/render-command-encoding.html:
* webgpu/render-passes-expected.txt: Removed.
* webgpu/render-passes.html: Removed for redundancy with other tests.
* webgpu/shader-modules-expected.txt:
* webgpu/shader-modules.html:
* webgpu/simple-triangle-strip.html:
* webgpu/texture-triangle-strip.html:
* webgpu/textures-textureviews.html:
* webgpu/vertex-buffer-triangle-strip.html:
* webgpu/webgpu-basics-expected.txt: Removed.
* webgpu/webgpu-basics.html: Removed for redundancy with other tests.
* webgpu/webgpu-enabled-expected.txt:
* webgpu/webgpu-enabled.html:

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

6 months ago[iOS WK2] REGRESSION (r242687): Programmatic scroll of overflow scroll results in...
simon.fraser@apple.com [Tue, 12 Mar 2019 00:11:23 +0000 (00:11 +0000)]
[iOS WK2] REGRESSION (r242687): Programmatic scroll of overflow scroll results in bad rendering
https://bugs.webkit.org/show_bug.cgi?id=195584

Unreviewed test gardening. Mark compositing/ios/overflow-scroll-update-overlap.html as failing
since I want to unskip and land a fix with additional tests.

* platform/ios-wk2/TestExpectations:

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

6 months ago[iOS] Implement a faster click detection that intercepts double-tap-to-zoom if possible
dino@apple.com [Mon, 11 Mar 2019 23:43:04 +0000 (23:43 +0000)]
[iOS] Implement a faster click detection that intercepts double-tap-to-zoom if possible
https://bugs.webkit.org/show_bug.cgi?id=195473
<rdar://problem/48718396>

Reviewed by Wenson Hsieh (with some help from Dan Bates).

Source/WebKit:

Adds a new algorithm, behind a flag FasterClicksEnabled, that can trigger a click
event without waiting to see if a double tap will occur. It does this by examining
the amount of zoom that would be triggered if it was a double tap, and if that value
doesn't exceed a set threshold, commits to the click event instead.

This is implemented by having the Web Process respond to the potential click with
some geometry information. If the UI Process receives the information before the
second tap in a double tap, it can decide to trigger a click.

* Shared/WebPreferences.yaml: New internal feature so this can be toggled in
    a UI for testing.

* SourcesCocoa.txt: Renamed WKSyntheticTapGestureRecognizer.
* WebKit.xcodeproj/project.pbxproj: Ditto.

* UIProcess/ios/WKSyntheticTapGestureRecognizer.h:
* UIProcess/ios/WKSyntheticTapGestureRecognizer.m:
(-[WKSyntheticTapGestureRecognizer setGestureIdentifiedTarget:action:]):
(-[WKSyntheticTapGestureRecognizer setGestureFailedTarget:action:]):
(-[WKSyntheticTapGestureRecognizer setResetTarget:action:]):
(-[WKSyntheticTapGestureRecognizer setState:]):
(-[WKSyntheticTapGestureRecognizer reset]):  Renamed WKSyntheticClickTapGestureRecognizer to
    WKSyntheticTapGestureRecognizer, changed the signature of the main function to be a bit
    more clear about what it does, and added a gesture failed target.

* UIProcess/API/Cocoa/WKWebViewInternal.h:
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _initialScaleFactor]):
(-[WKWebView _contentZoomScale]):
(-[WKWebView _targetContentZoomScaleForRect:currentScale:fitEntireRect:minimumScale:maximumScale:]):
    Exposed the initial content scale, the current scale and added a declaration that
    was missing from the .h.

* UIProcess/WebPageProxy.messages.in: Add a new message,
    HandleSmartMagnificationInformationForPotentialTap, to
    communicate the geometry of the clicked node to the UI Process.

* UIProcess/PageClient.h: Pure virtual function for the geometry message response.
* UIProcess/WebPageProxy.h: Ditto.

* UIProcess/ios/PageClientImplIOS.h: Calls into the WKContentView.
* UIProcess/ios/PageClientImplIOS.mm:
(WebKit::PageClientImpl::handleSmartMagnificationInformationForPotentialTap):

* UIProcess/ios/SmartMagnificationController.h:
* UIProcess/ios/SmartMagnificationController.mm:
(WebKit::SmartMagnificationController::calculatePotentialZoomParameters): A new method that
    asks the WKContentView to work out what the zoom factor will be for a potential double
    tap at a location.
(WebKit::SmartMagnificationController::smartMagnificationTargetRectAndZoomScales): New implementation
    of this function to avoid multiple out-arguments.

* UIProcess/ios/WKContentView.h:
* UIProcess/ios/WKContentView.mm:
(-[WKContentView _initialScaleFactor]):
(-[WKContentView _contentZoomScale]):
(-[WKContentView _targetContentZoomScaleForRect:currentScale:fitEntireRect:minimumScale:maximumScale:]):
    Exposed the initial content scale, the current scale and the target zoom scale. These
    all just call into the WKWebView implementation.

* UIProcess/ios/WKContentViewInteraction.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _createAndConfigureDoubleTapGestureRecognizer]): Use a WKSyntheticTapGestureRecognizer instead
    of a generic one, so we can capture the failure.
(-[WKContentView setupInteraction]):
(-[WKContentView cleanupInteraction]):
(-[WKContentView _handleSmartMagnificationInformationForPotentialTap:origin:renderRect:fitEntireRect:viewportMinimumScale:viewportMaximumScale:]):
    New method that responds to the incoming Web Process message, and decides if any
    potential zoom would be "significant".
(-[WKContentView _singleTapIdentified:]):
(-[WKContentView _doubleTapDidFail:]):
(-[WKContentView _didCompleteSyntheticClick]):
(-[WKContentView _singleTapRecognized:]):
(-[WKContentView _doubleTapRecognized:]):
    Add some release logging.
(-[WKContentView _singleTapCommited:]): Deleted.

* UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::potentialTapAtPosition):
(WebKit::WebPageProxy::handleSmartMagnificationInformationForPotentialTap):
* WebProcess/WebPage/ViewGestureGeometryCollector.h:
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:
    Removed an unused parameter from the existing message.

* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::potentialTapAtPosition): Calculates the geometry of the element
if requested, and sends it to the UIProcess.

LayoutTests:

Implement a test (iPad only) that sets up a page with zoomable content
but not quite at a significant scale, meaning we should dispatch a click
event rather than Double Tap To Zoom.

In order to do this, a humanSpeedDoubleTapAt() method was added to
UIHelper that sleeps a bit between taps, otherwise the double tap
gesture is recognized before the Web Process has had a chance to
evaluate the potential click.

* fast/events/ios/ipad/fast-click-double-tap-sends-click-on-insignificant-zoom-expected.txt: Added.
* fast/events/ios/ipad/fast-click-double-tap-sends-click-on-insignificant-zoom.html: Added.
* platform/ios/TestExpectations:
* platform/ipad/TestExpectations:
* resources/ui-helper.js:
(window.UIHelper.humanSpeedDoubleTapAt):

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

6 months agoUnreviewed build fix after r242745.
pvollan@apple.com [Mon, 11 Mar 2019 23:36:14 +0000 (23:36 +0000)]
Unreviewed build fix after r242745.

* UIProcess/Cocoa/WebProcessPoolCocoa.mm:
(WebKit::WebProcessPool::registerNotificationObservers):
(WebKit::WebProcessPool::unregisterNotificationObservers):

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

6 months agoAssert in WebPageProxy::suspendCurrentPageIfPossible()
cdumez@apple.com [Mon, 11 Mar 2019 23:31:23 +0000 (23:31 +0000)]
Assert in WebPageProxy::suspendCurrentPageIfPossible()
https://bugs.webkit.org/show_bug.cgi?id=195506
<rdar://problem/48733477>

Reviewed by Alex Christensen.

Source/WebKit:

The crash was caused by the top-hit preloading logic in MobileSafari which creates a new Web view that is *related*
to the previous one, restores the session state onto it and then triggers a load in this new Web view.

Initially, the 2 Web views use the same process as they are related. However, if the new load's URL is cross-site
with regards to the first view's URL, then we decide to process swap in the new view. This process swap makes
sense from a security standpoint. However, when we commit the load in the new process and call
suspendCurrentPageIfPossible() we end up in an unexpected state because we have a fromItem (due to the session
state having been restored on the new view) but we haven't committed any load yet in this new view.

To address the issue, suspendCurrentPageIfPossible() now returns early and does not attempt to suspend anything
if we have not committed any load yet.

* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::suspendCurrentPageIfPossible):
Do not attempt to suspend to current page if we have not committed any provisional load yet.

Tools:

Add API test coverage.

* TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:

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

6 months agoAdding myself to contributors.json
sroberts@apple.com [Mon, 11 Mar 2019 23:30:38 +0000 (23:30 +0000)]
Adding myself to contributors.json

Unreviewed, addming myself to contributors.json .

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

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

6 months agoUpdate device orientation & motion permission native SPI as per latest proposal
cdumez@apple.com [Mon, 11 Mar 2019 23:14:20 +0000 (23:14 +0000)]
Update device orientation & motion permission native SPI as per latest proposal
https://bugs.webkit.org/show_bug.cgi?id=195567

Reviewed by Youenn Fablet.

Source/WebCore:

* dom/DeviceOrientationAndMotionAccessController.cpp:
(WebCore::DeviceOrientationAndMotionAccessController::shouldAllowAccess):
* page/ChromeClient.h:

Source/WebKit:

The native SPI is now:
+- (void)_webView:(WKWebView *)webView shouldAllowDeviceOrientationAndMotionAccessRequestedByFrame:(WKFrameInfo *)frameInfo decisionHandler:(void (^)(BOOL))decisionHandler;

* UIProcess/API/APIUIClient.h:
(API::UIClient::shouldAllowDeviceOrientationAndMotionAccess):
* UIProcess/API/C/WKPage.cpp:
(WKPageSetPageUIClient):
* UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
* UIProcess/Cocoa/UIDelegate.h:
* UIProcess/Cocoa/UIDelegate.mm:
(WebKit::UIDelegate::setDelegate):
(WebKit::UIDelegate::UIClient::shouldAllowDeviceOrientationAndMotionAccess):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::requestDeviceOrientationAndMotionAccess):
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::shouldAllowDeviceOrientationAndMotionAccess):
* WebProcess/WebCoreSupport/WebChromeClient.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::shouldAllowDeviceOrientationAndMotionAccess):
* WebProcess/WebPage/WebPage.h:

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

6 months agoWeb Inspector: Editing Timelines shows two CPU Timelines
commit-queue@webkit.org [Mon, 11 Mar 2019 23:08:29 +0000 (23:08 +0000)]
Web Inspector: Editing Timelines shows two CPU Timelines
https://bugs.webkit.org/show_bug.cgi?id=195578

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2019-03-11
Reviewed by Devin Rousso.

* UserInterface/Controllers/TimelineManager.js:
(WI.TimelineManager.availableTimelineTypes):
The CPU Instrument is already in the default list.

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

6 months ago[macOS] Dispatching reentrant "contextmenu" events may cause crashes
wenson_hsieh@apple.com [Mon, 11 Mar 2019 22:46:32 +0000 (22:46 +0000)]
[macOS] Dispatching reentrant "contextmenu" events may cause crashes
https://bugs.webkit.org/show_bug.cgi?id=195571
<rdar://problem/48086046>

Reviewed by Andy Estes.

Source/WebCore:

Make ContextMenuController::handleContextMenuEvent robust against reentrancy by guarding it with a boolean flag.
As demonstrated in the test case, it is currently possible to force WebKit into a bad state by dispatching a
synthetic "contextmenu" event from within the scope of one of the "before(copy|cut|paste)" events triggered as
a result of handling a context menu event.

Test: fast/events/contextmenu-reentrancy-crash.html

* page/ContextMenuController.cpp:
(WebCore::ContextMenuController::handleContextMenuEvent):
* page/ContextMenuController.h:

LayoutTests:

Add a test to verify that triggering reentrant "contextmenu" events from script does not cause a crash.

* fast/events/contextmenu-reentrancy-crash-expected.txt: Added.
* fast/events/contextmenu-reentrancy-crash.html: Added.

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

6 months ago[Apple Pay] Use PKPaymentAuthorizationController to present the Apple Pay UI remotely...
aestes@apple.com [Mon, 11 Mar 2019 22:42:09 +0000 (22:42 +0000)]
[Apple Pay] Use PKPaymentAuthorizationController to present the Apple Pay UI remotely from the Networking service on iOS
https://bugs.webkit.org/show_bug.cgi?id=195530
<rdar://problem/48747164>

Reviewed by Alex Christensen.

Source/WebCore:

* Modules/applepay/PaymentCoordinatorClient.h: Defined isWebPaymentCoordinator.
* page/Settings.yaml: Defined the applePayRemoteUIEnabled setting and reordered the other
Apple Pay settings.

Source/WebCore/PAL:

* pal/cocoa/PassKitSoftLink.h: Soft-linked PKPaymentAuthorizationController on iOS.
* pal/cocoa/PassKitSoftLink.mm: Ditto.
* pal/spi/cocoa/PassKitSPI.h: Declared PKPaymentAuthorizationControllerPrivateDelegate and
related SPI.

Source/WebKit:

* Configurations/Network-iOS.entitlements: Added the 'com.apple.payment.all-access'
entitlement and reordered the others.

* NetworkProcess/NetworkConnectionToWebProcess.cpp:
(WebKit::NetworkConnectionToWebProcess::didReceiveMessage): Forwarded
WebPaymentCoordinatorProxy messages to the payment coordinator.
(WebKit::NetworkConnectionToWebProcess::didReceiveSyncMessage): Ditto.
(WebKit::NetworkConnectionToWebProcess::didClose): Set m_paymentCoordinator to nullptr.
* NetworkProcess/NetworkConnectionToWebProcess.h: Inherited from
WebPaymentCoordinatorProxy::Client and added a unique_ptr<WebPaymentCoordinatorProxy> member.

* NetworkProcess/cocoa/NetworkSessionCocoa.h: Declared getters for source application bundle
and secondary identifiers, and CTDataConnectionServiceType on iOS.
* NetworkProcess/cocoa/NetworkSessionCocoa.mm:
(WebKit::NetworkSessionCocoa::sourceApplicationBundleIdentifier const): Defined getter.
(WebKit::NetworkSessionCocoa::sourceApplicationSecondaryIdentifier const): Ditto.
(WebKit::NetworkSessionCocoa::ctDataConnectionServiceType const): Ditto.
(WebKit::NetworkSessionCocoa::NetworkSessionCocoa): Initialized
m_sourceApplicationBundleIdentifier and m_sourceApplicationSecondaryIdentifier with
corresponding NetworkSessionCreationParameters.

* NetworkProcess/ios/NetworkConnectionToWebProcessIOS.mm: Added.
(WebKit::NetworkConnectionToWebProcess::paymentCoordinator): Added. Returns
m_paymentCoordinator after lazily initializing it.
(WebKit::NetworkConnectionToWebProcess::paymentCoordinatorConnection): Added. Returns the
connection to the web process.
(WebKit::NetworkConnectionToWebProcess::paymentCoordinatorPresentingViewController): Added.
Returns nil.
(WebKit::NetworkConnectionToWebProcess::paymentCoordinatorCTDataConnectionServiceType):
Added. Returns the value from the network session identified by sessionID.
(WebKit::NetworkConnectionToWebProcess::paymentCoordinatorSourceApplicationBundleIdentifier):
Ditto.
(WebKit::NetworkConnectionToWebProcess::paymentCoordinatorSourceApplicationSecondaryIdentifier):
Ditto.
(WebKit::NetworkConnectionToWebProcess::paymentCoordinatorAuthorizationPresenter): Added.
Returns a new PaymentAuthorizationController.
(WebKit::NetworkConnectionToWebProcess::paymentCoordinatorAddMessageReceiver): Added empty
definition. NetworkConnectionToWebProcess explicitly forwards WebPaymentCoordinatorProxy
messages to its payment coordinator, so there's no need to register with a MessageReceiverMap.
(WebKit::NetworkConnectionToWebProcess::paymentCoordinatorRemoveMessageReceiver): Ditto.

* Platform/ios/PaymentAuthorizationController.h: Added. Declares a
PaymentAuthorizationPresenter subclass based on PKPaymentAuthorizationController.
* Platform/ios/PaymentAuthorizationController.mm: Added.
(-[WKPaymentAuthorizationControllerDelegate initWithRequest:presenter:]):
Initialized WKPaymentAuthorizationDelegate with request and presenter.
(-[WKPaymentAuthorizationControllerDelegate paymentAuthorizationControllerDidFinish:]):
Forwarded call to WKPaymentAuthorizationDelegate.
(-[WKPaymentAuthorizationControllerDelegate paymentAuthorizationController:didAuthorizePayment:handler:]):
Ditto.
(-[WKPaymentAuthorizationControllerDelegate paymentAuthorizationController:didSelectShippingMethod:handler:]):
Ditto.
(-[WKPaymentAuthorizationControllerDelegate paymentAuthorizationController:didSelectShippingContact:handler:]):
Ditto.
(-[WKPaymentAuthorizationControllerDelegate paymentAuthorizationController:didSelectPaymentMethod:handler:]):
Ditto.
(-[WKPaymentAuthorizationControllerDelegate paymentAuthorizationController:willFinishWithError:]):
Ditto.
(-[WKPaymentAuthorizationControllerDelegate paymentAuthorizationController:didRequestMerchantSession:]):
Ditto.
(WebKit::PaymentAuthorizationController::PaymentAuthorizationController):
Initialized m_controller with a new PKPaymentAuthorizationController and m_delegate with a
new WKPaymentAuthorizationControllerDelegate.
(WebKit::PaymentAuthorizationController::platformDelegate): Returned m_delegate.
(WebKit::PaymentAuthorizationController::dismiss): Dismissed the controller, set its
delegates to nil, set m_controller to nil, invalidated the delegate, and set m_delegate to
nil.
(WebKit::PaymentAuthorizationController::present): Called -presentWithCompletion: on the
controller, forwarding the passed-in completion handler.
* Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb: Allowed PassKit to look up
the "com.apple.passd.in-app-payment" and "com.apple.passd.library" service endpoints.

* Shared/ApplePay/WebPaymentCoordinatorProxy.cpp:
(WebKit::WebPaymentCoordinatorProxy::WebPaymentCoordinatorProxy): Changed to call
paymentCoordinatorAddMessageReceiver.
(WebKit::WebPaymentCoordinatorProxy::~WebPaymentCoordinatorProxy): Changed to call
paymentCoordinatorRemoveMessageReceiver.
(WebKit::WebPaymentCoordinatorProxy::messageSenderDestinationID const): Deleted.
(WebKit::WebPaymentCoordinatorProxy::canMakePaymentsWithActiveCard): Passed sessionID to
platformCanMakePaymentsWithActiveCard.
(WebKit::WebPaymentCoordinatorProxy::showPaymentUI): Stored destinationID and passed
sessionID to platformShowPaymentUI.
(WebKit::WebPaymentCoordinatorProxy::cancelPaymentSession): Changed to account for new
behavior of didCancelPaymentSession.
(WebKit::WebPaymentCoordinatorProxy::didCancelPaymentSession): Changed to call hidePaymentUI.
(WebKit::WebPaymentCoordinatorProxy::presenterDidFinish): Changed to only call hidePaymentUI
when didReachFinalState is true, since didCancelPaymentSession is called otherwise.
(WebKit::WebPaymentCoordinatorProxy::didReachFinalState): Cleared m_destinationID.
* Shared/ApplePay/WebPaymentCoordinatorProxy.h: Added m_destionationID member.
* Shared/ApplePay/WebPaymentCoordinatorProxy.messages.in: Changed
CanMakePaymentsWithActiveCard and ShowPaymentUI messages to take destinationID and sessionID
arguments.

* Shared/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
(WebKit::WebPaymentCoordinatorProxy::platformCanMakePaymentsWithActiveCard): Passed
sessionID to paymentCoordinatorSourceApplicationSecondaryIdentifier.
(WebKit::WebPaymentCoordinatorProxy::platformPaymentRequest): Passed sessionID to various
m_client call sites.

* Shared/ApplePay/ios/WebPaymentCoordinatorProxyIOS.mm:
(WebKit::WebPaymentCoordinatorProxy::platformShowPaymentUI): Passed sessionID to
platformPaymentRequest.
(WebKit::WebPaymentCoordinatorProxy::hidePaymentUI): Null-checked m_authorizationPresenter
before calling dismiss.

* Shared/ApplePay/mac/WebPaymentCoordinatorProxyMac.mm:
(WebKit::WebPaymentCoordinatorProxy::platformShowPaymentUI): Passed sessionID to
platformPaymentRequest.
(WebKit::WebPaymentCoordinatorProxy::hidePaymentUI): Null-checked m_authorizationPresenter
before calling dismiss.

* Shared/WebPreferences.yaml: Added ApplePayRemoteUIEnabled as an internal preference.

* SourcesCocoa.txt: Added NetworkConnectionToWebProcessIOS.mm and
PaymentAuthorizationController.mm.

* UIProcess/AuxiliaryProcessProxy.h:
(WebKit::AuxiliaryProcessProxy::messageReceiverMap): Deleted.

* UIProcess/Cocoa/WebPageProxyCocoa.mm:
(WebKit::WebPageProxy::paymentCoordinatorConnection): Moved from WebPageProxy.cpp.
(WebKit::WebPageProxy::paymentCoordinatorSourceApplicationBundleIdentifier): Ditto.
(WebKit::WebPageProxy::paymentCoordinatorSourceApplicationSecondaryIdentifier): Ditto.
(WebKit::WebPageProxy::paymentCoordinatorAddMessageReceiver): Ditto.
(WebKit::WebPageProxy::paymentCoordinatorRemoveMessageReceiver): Ditto.

* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::paymentCoordinatorConnection): Moved to WebPageProxyCocoa.mm.
(WebKit::WebPageProxy::paymentCoordinatorMessageReceiver): Ditto.
(WebKit::WebPageProxy::paymentCoordinatorSourceApplicationBundleIdentifier): Ditto.
(WebKit::WebPageProxy::paymentCoordinatorSourceApplicationSecondaryIdentifier): Ditto.
(WebKit::WebPageProxy::paymentCoordinatorDestinationID): Ditto.
* UIProcess/WebPageProxy.h:

* UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::paymentCoordinatorCTDataConnectionServiceType): Asserted that
sessionID equals the website data store's sessionID.

* WebKit.xcodeproj/project.pbxproj:

* WebProcess/ApplePay/WebPaymentCoordinator.cpp:
(WebKit::WebPaymentCoordinator::networkProcessConnectionClosed): Added. Cancels the current
session if Apple Pay Remote UI is enabled and the network process connection closes.
(WebKit::WebPaymentCoordinator::availablePaymentNetworks): Changed to account for
WebPaymentCoordinator being an IPC::MessageSender.
(WebKit::WebPaymentCoordinator::canMakePayments): Ditto.
(WebKit::WebPaymentCoordinator::canMakePaymentsWithActiveCard): Ditto.
(WebKit::WebPaymentCoordinator::openPaymentSetup): Ditto.
(WebKit::WebPaymentCoordinator::showPaymentUI): Ditto.
(WebKit::WebPaymentCoordinator::completeMerchantValidation): Ditto.
(WebKit::WebPaymentCoordinator::completeShippingMethodSelection): Ditto.
(WebKit::WebPaymentCoordinator::completeShippingContactSelection): Ditto.
(WebKit::WebPaymentCoordinator::completePaymentMethodSelection): Ditto.
(WebKit::WebPaymentCoordinator::completePaymentSession): Ditto.
(WebKit::WebPaymentCoordinator::abortPaymentSession): Ditto.
(WebKit::WebPaymentCoordinator::cancelPaymentSession): Ditto.
(WebKit::WebPaymentCoordinator::messageSenderConnection const): Added. Returns a connection
to the network process if Apple Pay Remote UI is enabled. Otherwise, returned the web
process's parent connection.
(WebKit::WebPaymentCoordinator::messageSenderDestinationID const): Added. Returns the web
page's ID.
(WebKit::WebPaymentCoordinator::remoteUIEnabled const): Added. Calls Settings::applePayRemoteUIEnabled.
* WebProcess/ApplePay/WebPaymentCoordinator.h: Inherited from IPC::MessageSender.

* WebProcess/Network/NetworkProcessConnection.cpp:
(WebKit::NetworkProcessConnection::didReceiveMessage): Forwarded WebPaymentCoordinator
messages to the payment coordinator of the web page matching the decoder's destination ID.
(WebKit::NetworkProcessConnection::didReceiveSyncMessage): Ditto for sync messages.

* WebProcess/WebPage/Cocoa/WebPageCocoa.mm:
(WebKit::WebPage::paymentCoordinator): Added a payment coordinator getter.
* WebProcess/WebPage/WebPage.h: Ditto.

* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::networkProcessConnectionClosed): Called
WebPaymentCoordinator::networkProcessConnectionClosed when the network process connection
closes.

Source/WTF:

* wtf/FeatureDefines.h: Defined ENABLE_APPLE_PAY_REMOTE_UI.

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

6 months ago[JSC] Make StaticStringImpl & StaticSymbolImpl actually static
ysuzuki@apple.com [Mon, 11 Mar 2019 22:37:43 +0000 (22:37 +0000)]
[JSC] Make StaticStringImpl & StaticSymbolImpl actually static
https://bugs.webkit.org/show_bug.cgi?id=194212

Reviewed by Mark Lam.

Avoid mutation onto refcounts if `isStatic()` returns true so that the content of StaticStringImpl never gets modified.

* wtf/text/StringImpl.h:
(WTF::StringImpl::ref):
(WTF::StringImpl::deref):

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

6 months agoSoft linking to Reveal framework should be optional
achristensen@apple.com [Mon, 11 Mar 2019 22:31:14 +0000 (22:31 +0000)]
Soft linking to Reveal framework should be optional
https://bugs.webkit.org/show_bug.cgi?id=195576
<rdar://problem/46822452>

Reviewed by Megan Gardner.

Source/WebCore:

Systems exist with ENABLE(REVEAL) true and the Reveal framework does not exist.

* editing/cocoa/DictionaryLookup.mm:
(WebCore::showPopupOrCreateAnimationController):

Source/WebCore/PAL:

* pal/spi/cocoa/RevealSPI.h:

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

6 months ago[iOS] Block access to backboardd service
pvollan@apple.com [Mon, 11 Mar 2019 22:15:51 +0000 (22:15 +0000)]
[iOS] Block access to backboardd service
https://bugs.webkit.org/show_bug.cgi?id=195484

Reviewed by Brent Fulgham.

This patch is addressing blocking the backboardd service "com.apple.backboard.hid.services". Getting the
backlight level in the WebContent process will initiate a connection with this service. To be able to
block the service, the backlight level is queried in the UI process and sent to the WebContent process
when the WebContent process is started, and when the backlight level is changed. On the WebContent side,
the method getting the backlight level is swizzled to return the value sent from the UI process.

* Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
* UIProcess/Cocoa/WebProcessPoolCocoa.mm:
(WebKit::WebProcessPool::displayBrightness):
(WebKit::WebProcessPool::backlightLevelDidChangeCallback):
(WebKit::WebProcessPool::registerNotificationObservers):
(WebKit::WebProcessPool::unregisterNotificationObservers):
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::initializeNewWebProcess):
* UIProcess/WebProcessPool.h:
* WebProcess/WebProcess.h:
* WebProcess/WebProcess.messages.in:
* WebProcess/cocoa/WebProcessCocoa.mm:
(WebKit::currentBacklightLevel):
(WebKit::WebProcess::backlightLevelDidChange):

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

6 months agoREGRESSION: Layout Test media/media-fullscreen-return-to-inline.html is a flaky timeout
tsavell@apple.com [Mon, 11 Mar 2019 22:12:28 +0000 (22:12 +0000)]
REGRESSION: Layout Test media/media-fullscreen-return-to-inline.html is a flaky timeout
https://bugs.webkit.org/show_bug.cgi?id=193399

Unreviewed test gardening.

* platform/mac/TestExpectations:

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

6 months agoWeb Inspector: DOMDebugger: protocol error on first open
drousso@apple.com [Mon, 11 Mar 2019 21:56:32 +0000 (21:56 +0000)]
Web Inspector: DOMDebugger: protocol error on first open
https://bugs.webkit.org/show_bug.cgi?id=195248
<rdar://problem/48538465>

Reviewed by Joseph Pecoraro.

Don't try to call `DOMDebugger` commands until a target has been initialized.
Still attempt to resolve DOM breakpoints whenever the main resource/frame changes.

* UserInterface/Controllers/DOMDebuggerManager.js:
(WI.DOMDebuggerManager):
(WI.DOMDebuggerManager.prototype.initializeTarget): Added.
(WI.DOMDebuggerManager.supportsEventBreakpoints):
(WI.DOMDebuggerManager.prototype.get supported):
(WI.DOMDebuggerManager.prototype.addDOMBreakpoint):
(WI.DOMDebuggerManager.prototype.removeDOMBreakpoint):
(WI.DOMDebuggerManager.prototype.addEventBreakpoint):
(WI.DOMDebuggerManager.prototype.removeEventBreakpoint):
(WI.DOMDebuggerManager.prototype.addURLBreakpoint):
(WI.DOMDebuggerManager.prototype.removeURLBreakpoint):
(WI.DOMDebuggerManager.prototype._speculativelyResolveDOMBreakpointsForURL): Added.
(WI.DOMDebuggerManager.prototype._resolveDOMBreakpoint):
(WI.DOMDebuggerManager.prototype._updateDOMBreakpoint):
(WI.DOMDebuggerManager.prototype._updateEventBreakpoint):
(WI.DOMDebuggerManager.prototype._updateURLBreakpoint):
(WI.DOMDebuggerManager.prototype._saveDOMBreakpoints):
(WI.DOMDebuggerManager.prototype._handleDOMBreakpointDisabledStateChanged):
(WI.DOMDebuggerManager.prototype._handleEventBreakpointDisabledStateChanged):
(WI.DOMDebuggerManager.prototype._handleURLBreakpointDisabledStateChanged):
(WI.DOMDebuggerManager.prototype._mainFrameDidChange):
(WI.DOMDebuggerManager.prototype._mainResourceDidChange):
(WI.DOMDebuggerManager.prototype.removeEventBreakpoint.breakpointRemoved): Deleted.
(WI.DOMDebuggerManager.prototype._speculativelyResolveBreakpoints): Deleted.
(WI.DOMDebuggerManager.prototype._updateDOMBreakpoint.breakpointUpdated): Deleted.
(WI.DOMDebuggerManager.prototype._resolveEventBreakpoint): Deleted.
(WI.DOMDebuggerManager.prototype._resolveURLBreakpoint): Deleted.

* UserInterface/Base/Multimap.js: Added.
(Multimap):
(Multimap.prototype.get):
(Multimap.prototype.add):
(Multimap.prototype.delete):
(Multimap.prototype.clear):
(Multimap.prototype.keys):
(Multimap.prototype.*values):
(Multimap.prototype.*[Symbol.iterator]):
(Multimap.prototype.toJSON):
* .eslintrc:
* UserInterface/Main.html:
* UserInterface/Test.html:
Helper data structure for managing Maps of Sets (e.g. all DOM breakpoints for a URL).

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

6 months ago[JSC] Reduce # of structures in JSGlobalObject initialization
ysuzuki@apple.com [Mon, 11 Mar 2019 21:55:00 +0000 (21:55 +0000)]
[JSC] Reduce # of structures in JSGlobalObject initialization
https://bugs.webkit.org/show_bug.cgi?id=195498

Reviewed by Darin Adler.

Source/JavaScriptCore:

This patch reduces # of structure allocations in JSGlobalObject initialization. Now it becomes 141, it fits in one
MarkedBlock and this patch drops one MarkedBlock used for Structure previously.

* CMakeLists.txt:
* DerivedSources-output.xcfilelist:
* DerivedSources.make:
* JavaScriptCore.xcodeproj/project.pbxproj:
* runtime/ArrayIteratorPrototype.cpp:
(JSC::ArrayIteratorPrototype::finishCreation): ArrayIteratorPrototype, MapIteratorPrototype, and StringIteratorPrototype's
"next" properties are referenced by JSGlobalObject::init, and it causes reification of the lazy "next" property and structure
transition anyway. So we should put it eagerly "without-transition" configuration to avoid one structure transition.

* runtime/ArrayPrototype.cpp:
(JSC::ArrayPrototype::finishCreation): @@unscopable object's structure should be dictionary because (1) it is used as a dictionary
in with-scope-resolution and (2) since with-scope-resolution is C++ runtime function anyway, non-dictionary structure does not add
any performance benefit. This change saves several structures that are not useful.

* runtime/ClonedArguments.cpp:
(JSC::ClonedArguments::createStructure): Bake CloneArguments's structure with 'without-transition' manner.

* runtime/JSGlobalObject.cpp:
(JSC::JSGlobalObject::init): Previously we are always call resetProtoype at the end of JSGlobalObject::init. But it is not necessary
since we do not change [[Prototype]] of JSGlobalObject. All we want is (1) fixupPrototypeChainWithObjectPrototype's operation and (2) setGlobalThis
operation. Since setGlobalThis part is done in JSGlobalObject::finishCreation, fixupPrototypeChainWithObjectPrototype is only the thing
we should do here.

(JSC::JSGlobalObject::fixupPrototypeChainWithObjectPrototype):
(JSC::JSGlobalObject::resetPrototype): If the [[Prototype]] is the same to the current [[Prototype]], we can skip the operation.

* runtime/JSGlobalObject.h:
* runtime/MapIteratorPrototype.cpp:
(JSC::MapIteratorPrototype::finishCreation):
* runtime/NullGetterFunction.h:
* runtime/NullSetterFunction.h: Since structures of them are allocated per JSGlobalObject and they are per-JSGlobalObject,
we can use without-transition property addition.

* runtime/StringIteratorPrototype.cpp:
(JSC::StringIteratorPrototype::finishCreation):
* runtime/VM.cpp:
(JSC::VM::VM):
(JSC::VM::setIteratorStructureSlow):
(JSC::VM::mapIteratorStructureSlow): These structures are only used in WebCore's main thread.
* runtime/VM.h:
(JSC::VM::setIteratorStructure):
(JSC::VM::mapIteratorStructure):

Source/WebCore:

* bindings/js/SerializedScriptValue.cpp:
(WebCore::CloneSerializer::serialize):

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

6 months agoWeb Inspector: CPU Usage Timeline - Enable by default
joepeck@webkit.org [Mon, 11 Mar 2019 21:26:54 +0000 (21:26 +0000)]
Web Inspector: CPU Usage Timeline - Enable by default
https://bugs.webkit.org/show_bug.cgi?id=195471

Reviewed by Devin Rousso.

Remove experimental setting and include the CPU timeline in the
default set of timelines.

* UserInterface/Base/Setting.js:
* UserInterface/Controllers/TimelineManager.js:
(WI.TimelineManager.defaultTimelineTypes):
* UserInterface/Main.html:
* UserInterface/Views/CPUTimelineOverviewGraph.css:
(.timeline-overview-graph.cpu > .stacked-column-chart > svg > rect.selected):
(.timeline-overview-graph.cpu > .column-chart > svg > rect): Deleted.
(body[dir=rtl] .timeline-overview-graph.cpu > .column-chart): Deleted.
* UserInterface/Views/CPUTimelineOverviewGraph.js:
(WI.CPUTimelineOverviewGraph):
(WI.CPUTimelineOverviewGraph.prototype.layout):
* UserInterface/Views/ContentView.js:
(WI.ContentView.createFromRepresentedObject):
* UserInterface/Views/LegacyCPUTimelineView.css: Removed.
* UserInterface/Views/LegacyCPUTimelineView.js: Removed.
* UserInterface/Views/SettingsTabContentView.js:
(WI.SettingsTabContentView.prototype._createExperimentalSettingsView):
* UserInterface/Views/Variables.css:
(:root):

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

6 months agoWeb Inspector: CPU Usage Timeline - Better Thread chart layout values
joepeck@webkit.org [Mon, 11 Mar 2019 21:26:50 +0000 (21:26 +0000)]
Web Inspector: CPU Usage Timeline - Better Thread chart layout values
https://bugs.webkit.org/show_bug.cgi?id=195547

Reviewed by Devin Rousso.

* UserInterface/Views/CPUTimelineView.js:
(WI.CPUTimelineView.prototype.layout.bestThreadLayoutMax):
(WI.CPUTimelineView.prototype.layout.layoutView):
(WI.CPUTimelineView.prototype._showGraphOverlay):
Include a separate layoutMax for the combined view and a thread layoutMax
for the thread groups.

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

6 months agoWeb Inspector: CPU Usage Timeline - Add legend and graph hover effects
joepeck@webkit.org [Mon, 11 Mar 2019 21:26:47 +0000 (21:26 +0000)]
Web Inspector: CPU Usage Timeline - Add legend and graph hover effects
https://bugs.webkit.org/show_bug.cgi?id=195390

Reviewed by Devin Rousso.

* Localizations/en.lproj/localizedStrings.js:
New strings for the legends.

* UserInterface/Main.html:
Combined files.

* UserInterface/Views/Variables.css:
(:root):
(@media (prefers-color-scheme: dark)):
Tweaked colors, including individual stroke and fill colors for each CPU section.

* UserInterface/Views/CPUTimelineOverviewGraph.css:
(.timeline-overview-graph.cpu > .stacked-column-chart > svg > rect.total-usage):
(.timeline-overview-graph.cpu > .stacked-column-chart > svg > rect.main-thread-usage):
(.timeline-overview-graph.cpu > .stacked-column-chart > svg > rect.worker-thread-usage):
Updated colors.

* UserInterface/Views/CPUUsageCombinedView.css: Renamed from Source/WebInspectorUI/UserInterface/Views/CPUUsageStackedView.css.
(.cpu-usage-combined-view > .details > .legend-container):
(.cpu-usage-combined-view > .details > .legend-container > .row):
(.cpu-usage-combined-view > .details > .legend-container > .row + .row):
(.cpu-usage-combined-view > .details > .legend-container > .row > .swatch):
* UserInterface/Views/CPUUsageCombinedView.js: Renamed from Source/WebInspectorUI/UserInterface/Views/CPUUsageStackedView.js.
(WI.CPUUsageCombinedView.appendLegendRow):
(WI.CPUUsageCombinedView):
(WI.CPUUsageCombinedView.prototype.get graphElement):
(WI.CPUUsageCombinedView.prototype.get chart):
(WI.CPUUsageCombinedView.prototype.get rangeChart):
(WI.CPUUsageCombinedView.prototype.clear):
(WI.CPUUsageCombinedView.prototype.updateChart):
(WI.CPUUsageCombinedView.prototype.updateMainThreadIndicator):
(WI.CPUUsageCombinedView.prototype.clearLegend):
(WI.CPUUsageCombinedView.prototype.updateLegend):
(WI.CPUUsageCombinedView.prototype._updateDetails):
* UserInterface/Views/CPUUsageIndicatorView.css: Removed.
* UserInterface/Views/CPUUsageIndicatorView.js: Removed.
Combined the Indicator and StackedAreaChart into a single view
that share a left details section.

* UserInterface/Views/CPUUsageView.js:
(WI.CPUUsageView):
(WI.CPUUsageView.prototype.get graphElement):
(WI.CPUUsageView.prototype.clear):
(WI.CPUUsageView.prototype.updateChart):
(WI.CPUUsageView.prototype.clearLegend):
(WI.CPUUsageView.prototype.updateLegend):
(WI.CPUUsageView.prototype._updateDetails):
Include a legend in the left details section.

* UserInterface/Views/AreaChart.js:
(WI.AreaChart):
(WI.AreaChart.prototype.addPointMarker):
(WI.AreaChart.prototype.clearPointMarkers):
(WI.AreaChart.prototype.clear):
(WI.AreaChart.prototype.layout):
* UserInterface/Views/StackedAreaChart.js:
(WI.StackedAreaChart):
(WI.StackedAreaChart.prototype.addPointMarker):
(WI.StackedAreaChart.prototype.clearPointMarkers):
(WI.StackedAreaChart.prototype.clear):
(WI.StackedAreaChart.prototype.layout):
Add point markers for the area charts.

* UserInterface/Views/CPUTimelineView.css:
* UserInterface/Views/CPUTimelineView.js:
(WI.CPUTimelineView):
(WI.CPUTimelineView.prototype.get cpuUsageViewHeight):
(WI.CPUTimelineView.prototype.clear):
(WI.CPUTimelineView.prototype.initialLayout.appendLegendRow):
(WI.CPUTimelineView.prototype.initialLayout):
(WI.CPUTimelineView.prototype.layout):
(WI.CPUTimelineView.prototype._graphPositionForMouseEvent):
(WI.CPUTimelineView.prototype._handleMouseClick):
(WI.CPUTimelineView.prototype._handleGraphMouseMove):
(WI.CPUTimelineView.prototype._showGraphOverlayNearTo):
(WI.CPUTimelineView.prototype._updateGraphOverlay):
(WI.CPUTimelineView.prototype._showGraphOverlay.xScale):
(WI.CPUTimelineView.prototype._showGraphOverlay.yScale):
(WI.CPUTimelineView.prototype._showGraphOverlay.addOverlayPoint):
(WI.CPUTimelineView.prototype._showGraphOverlay):
(WI.CPUTimelineView.prototype._clearOverlayMarkers.clearGraphOverlayElement):
(WI.CPUTimelineView.prototype._clearOverlayMarkers):
(WI.CPUTimelineView.prototype._hideGraphOverlay):
Include graph overlay markers.

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

6 months agoRemove obsolete runtime flag for StorageAccess API Prompt
bfulgham@apple.com [Mon, 11 Mar 2019 21:19:11 +0000 (21:19 +0000)]
Remove obsolete runtime flag for StorageAccess API Prompt
https://bugs.webkit.org/show_bug.cgi?id=195564
<rdar://problem/37279014>

Reviewed by Chris Dumez.

This bug tracks the work of removing the obsolete flag that had been used to optionally
prevent display of the StorageAccess API prompt. We have since shipped the final version
of this feature with an always-on prompt, and should have removed this runtime flag.

No test changes because this has no change in behavior. Tests already assume the prompt
behavior, and did not test turning the flag off.

Source/WebCore:

* page/RuntimeEnabledFeatures.h:
(WebCore::RuntimeEnabledFeatures::setStorageAccessPromptsEnabled): Deleted.
(WebCore::RuntimeEnabledFeatures::storageAccessPromptsEnabled const): Deleted.
* testing/InternalSettings.cpp:
(WebCore::InternalSettings::Backup::Backup):
(WebCore::InternalSettings::Backup::restoreTo):
(WebCore::InternalSettings::setStorageAccessPromptsEnabled): Deleted.
* testing/InternalSettings.h:
(): Deleted.
* testing/InternalSettings.idl:

Source/WebKit:

* NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:
(WebKit::ResourceLoadStatisticsDatabaseStore::requestStorageAccess):
(WebKit::ResourceLoadStatisticsDatabaseStore::grantStorageAccessInternal):
* NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h:
* NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp:
(WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccess):
(WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccessInternal):
* NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.h:
* NetworkProcess/Classifier/ResourceLoadStatisticsStore.h:
(WebKit::ResourceLoadStatisticsStore::debugModeEnabled const):
(WebKit::ResourceLoadStatisticsStore::storageAccessPromptsEnabled const): Deleted.
(WebKit::ResourceLoadStatisticsStore::setStorageAccessPromptsEnabled): Deleted.
* NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:
(WebKit::WebResourceLoadStatisticsStore::requestStorageAccessGranted):
(WebKit::WebResourceLoadStatisticsStore::requestStorageAccess):
* NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h:
* NetworkProcess/NetworkConnectionToWebProcess.cpp:
(WebKit::NetworkConnectionToWebProcess::requestStorageAccess):
* NetworkProcess/NetworkConnectionToWebProcess.h:
* NetworkProcess/NetworkConnectionToWebProcess.messages.in:
* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::requestStorageAccess):
(WebKit::NetworkProcess::requestStorageAccessGranted):
* NetworkProcess/NetworkProcess.h:
* NetworkProcess/NetworkProcess.messages.in:
* Shared/WebPreferences.yaml:
* UIProcess/API/C/WKPreferences.cpp:
(WKPreferencesSetStorageAccessPromptsEnabled): Deleted.
(WKPreferencesGetStorageAccessPromptsEnabled): Deleted.
* UIProcess/API/C/WKPreferencesRef.h:
* UIProcess/API/Cocoa/WKPreferences.mm:
(-[WKPreferences _storageAccessPromptsEnabled]): Deleted.
(-[WKPreferences _setStorageAccessPromptsEnabled:]): Deleted.
* UIProcess/API/Cocoa/WKPreferencesPrivate.h:
* UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::requestStorageAccess):
* UIProcess/Network/NetworkProcessProxy.h:
* UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::requestStorageAccess):
* UIProcess/WebsiteData/WebsiteDataStore.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::requestStorageAccess):

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

6 months agoWeb Inspector: eliminate manual syncing of numeric constants used by JavaScript and CSS
drousso@apple.com [Mon, 11 Mar 2019 20:35:21 +0000 (20:35 +0000)]
Web Inspector: eliminate manual syncing of numeric constants used by JavaScript and CSS
https://bugs.webkit.org/show_bug.cgi?id=194883
<rdar://problem/48257785>

Reviewed by Joseph Pecoraro.

* UserInterface/Views/CanvasOverviewContentView.js:
(WI.CanvasOverviewContentView):
(WI.CanvasOverviewContentView.static get recordingAutoCaptureInputMargin): Added.
(WI.CanvasOverviewContentView.prototype._updateRecordingAutoCaptureInputElementSize):
* UserInterface/Views/CanvasOverviewContentView.css:
(.navigation-bar > .item.canvas-recording-auto-capture > label > input):

* UserInterface/Views/MemoryTimelineView.js:
(WI.MemoryTimelineView.static get memoryCategoryViewHeight): Added.
(WI.MemoryTimelineView.prototype.initialLayout): Added.
(WI.MemoryTimelineView.prototype.layout):
* UserInterface/Views/MemoryCategoryView.css:
(.memory-category-view):

* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView.static get nodeWaterfallDOMEventSize): Added.
(WI.NetworkTableContentView.prototype.initialLayout):
* UserInterface/Views/NetworkTableContentView.css:
(.content-view.network .network-table): Deleted.

* UserInterface/Views/TreeOutline.js:
(WI.TreeOutline._generateStyleRulesIfNeeded):
* UserInterface/Views/TreeOutline.css:
(.tree-outline, .tree-outline .children):
(.tree-outline .item):

* UserInterface/Controllers/CanvasManager.js:
(WI.CanvasManager.supportsRecordingAutoCapture):
Drive-by: fix usage of InspectorBackend.domains.{CanvasAgent => Canvas}
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@242737 268f45cc-cd09-0410-ab3c-d52691b4dbfc

6 months agoUnreviewed, fix a test expecation linter warning for macOS.
ryanhaddad@apple.com [Mon, 11 Mar 2019 20:22:09 +0000 (20:22 +0000)]
Unreviewed, fix a test expecation linter warning for macOS.

* platform/mac/TestExpectations: Delete the entry for 'media/modern-media-controls/media-documents/ipad'.

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

6 months agoAdd a WKContentRuleList variant that uses copied memory instead of mmap'd shared...
commit-queue@webkit.org [Mon, 11 Mar 2019 20:21:39 +0000 (20:21 +0000)]
Add a WKContentRuleList variant that uses copied memory instead of mmap'd shared memory for class A containerized apps
https://bugs.webkit.org/show_bug.cgi?id=195511
<rdar://problem/44873269>

Patch by Alex Christensen <achristensen@webkit.org> on 2019-03-11
Reviewed by Darin Adler.

Source/WebKit:

* NetworkProcess/NetworkContentRuleListManager.cpp:
(WebKit::NetworkContentRuleListManager::addContentRuleLists):
* NetworkProcess/NetworkContentRuleListManager.h:
* NetworkProcess/cache/NetworkCacheFileSystem.cpp:
(WebKit::NetworkCache::pathRegisteredAsUnsafeToMemoryMapForTesting):
(WebKit::NetworkCache::registerPathAsUnsafeToMemoryMapForTesting):
(WebKit::NetworkCache::isSafeToUseMemoryMapForPath):
* NetworkProcess/cache/NetworkCacheFileSystem.h:
* Shared/WebCompiledContentRuleList.cpp:
(WebKit::WebCompiledContentRuleList::usesCopiedMemory const):
(WebKit::WebCompiledContentRuleList::conditionsApplyOnlyToDomain const):
(WebKit::WebCompiledContentRuleList::filtersWithoutConditionsBytecode const):
(WebKit::WebCompiledContentRuleList::filtersWithConditionsBytecode const):
(WebKit::WebCompiledContentRuleList::topURLFiltersBytecode const):
(WebKit::WebCompiledContentRuleList::actions const):
* Shared/WebCompiledContentRuleList.h:
* Shared/WebCompiledContentRuleListData.cpp:
(WebKit::WebCompiledContentRuleListData::size const):
(WebKit::WebCompiledContentRuleListData::dataPointer const):
(WebKit::WebCompiledContentRuleListData::encode const):
(WebKit::WebCompiledContentRuleListData::decode):
* Shared/WebCompiledContentRuleListData.h:
(WebKit::WebCompiledContentRuleListData::WebCompiledContentRuleListData):
* UIProcess/API/APIContentRuleList.cpp:
(API::ContentRuleList::usesCopiedMemory const):
* UIProcess/API/APIContentRuleList.h:
* UIProcess/API/APIContentRuleListStore.cpp:
(API::getData):
(API::decodeContentRuleListMetaData):
(API::ContentRuleListStore::readContentsOfFile):
(API::MappedOrCopiedData::dataPointer const):
(API::openAndMapOrCopyContentRuleList):
(API::compiledToFile):
(API::createExtension):
(API::ContentRuleListStore::lookupContentRuleList):
(API::ContentRuleListStore::compileContentRuleList):
(API::ContentRuleListStore::getContentRuleListSource):
(API::openAndMapContentRuleList): Deleted.
* UIProcess/API/APIContentRuleListStore.h:
* UIProcess/API/Cocoa/APIContentRuleListStoreCocoa.mm:
(API::ContentRuleListStore::readContentsOfFile):
* UIProcess/API/Cocoa/WKContentRuleListStore.mm:
(+[WKContentRuleListStore _registerPathAsUnsafeToMemoryMapForTesting:]):
* UIProcess/API/Cocoa/WKContentRuleListStorePrivate.h:
* UIProcess/API/Cocoa/_WKUserContentFilter.mm:
(-[_WKUserContentFilter usesCopiedMemory]):
* UIProcess/API/Cocoa/_WKUserContentFilterPrivate.h:
* WebProcess/UserContent/WebUserContentController.cpp:
(WebKit::WebUserContentController::addContentRuleLists):
* WebProcess/UserContent/WebUserContentController.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::m_hostFileDescriptor):

Tools:

* TestWebKitAPI/Tests/WebKitCocoa/WKContentExtensionStore.mm:
(-[TestSchemeHandlerSubresourceShouldBeBlocked webView:startURLSchemeTask:]):
(-[TestSchemeHandlerSubresourceShouldBeBlocked webView:stopURLSchemeTask:]):
(TEST_F):

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

6 months agoAdd web audio release logging
eric.carlson@apple.com [Mon, 11 Mar 2019 20:19:49 +0000 (20:19 +0000)]
Add web audio release logging
https://bugs.webkit.org/show_bug.cgi?id=195554
<rdar://problem/48767211>

Reviewed by Jer Noble.

No new tests, no functional change.

* Modules/webaudio/AudioBasicInspectorNode.cpp:
(WebCore::AudioBasicInspectorNode::AudioBasicInspectorNode):
* Modules/webaudio/AudioBufferSourceNode.cpp:
(WebCore::AudioBufferSourceNode::setBuffer):
(WebCore::AudioBufferSourceNode::startPlaying):
* Modules/webaudio/AudioContext.cpp:
(WebCore::nextLogIdentifier):
(WebCore::AudioContext::AudioContext):
(WebCore::AudioContext::uninitialize):
(WebCore::AudioContext::stop):
(WebCore::AudioContext::createBufferSource):
(WebCore::AudioContext::createMediaElementSource):
(WebCore::AudioContext::createMediaStreamSource):
(WebCore::AudioContext::createScriptProcessor):
(WebCore::AudioContext::createBiquadFilter):
(WebCore::AudioContext::createWaveShaper):
(WebCore::AudioContext::createPanner):
(WebCore::AudioContext::createConvolver):
(WebCore::AudioContext::createDynamicsCompressor):
(WebCore::AudioContext::createAnalyser):
(WebCore::AudioContext::createGain):
(WebCore::AudioContext::createDelay):
(WebCore::AudioContext::createChannelSplitter):
(WebCore::AudioContext::createChannelMerger):
(WebCore::AudioContext::createOscillator):
(WebCore::AudioContext::createPeriodicWave):
(WebCore::AudioContext::willBeginPlayback):
(WebCore::AudioContext::startRendering):
(WebCore::AudioContext::fireCompletionEvent):
(WebCore::AudioContext::logChannel const):
* Modules/webaudio/AudioContext.h:
(WebCore::AudioContext::nextAudioNodeLogIdentifier):
(WebCore::AudioContext::nextAudioParameterLogIdentifier):
* Modules/webaudio/AudioDestinationNode.cpp:
(WebCore::AudioDestinationNode::AudioDestinationNode):
* Modules/webaudio/AudioNode.cpp:
(WebCore::convertEnumerationToString):
(WebCore::AudioNode::AudioNode):
(WebCore::AudioNode::~AudioNode):
(WebCore::AudioNode::setNodeType):
(WebCore::AudioNode::addInput):
(WebCore::AudioNode::addOutput):
(WebCore::AudioNode::connect):
(WebCore::AudioNode::disconnect):
(WebCore::AudioNode::setChannelCount):
(WebCore::AudioNode::setChannelCountMode):
(WebCore::AudioNode::setChannelInterpretation):
(WebCore::AudioNode::logChannel const):
* Modules/webaudio/AudioNode.h:
(WTF::LogArgument<WebCore::AudioNode::NodeType>::toString):
* Modules/webaudio/AudioParam.cpp:
(WebCore::AudioParam::AudioParam):
(WebCore::AudioParam::setValue):
(WebCore::AudioParam::connect):
(WebCore::AudioParam::disconnect):
(WebCore::AudioParam::logChannel const):
* Modules/webaudio/AudioParam.h:
* Modules/webaudio/AudioScheduledSourceNode.cpp:
(WebCore::AudioScheduledSourceNode::start):
(WebCore::AudioScheduledSourceNode::stop):
* Modules/webaudio/BiquadFilterNode.cpp:
(WebCore::BiquadFilterNode::BiquadFilterNode):
* Modules/webaudio/ChannelMergerNode.cpp:
(WebCore::ChannelMergerNode::ChannelMergerNode):
* Modules/webaudio/ChannelSplitterNode.cpp:
(WebCore::ChannelSplitterNode::ChannelSplitterNode):
* Modules/webaudio/ConvolverNode.cpp:
(WebCore::ConvolverNode::ConvolverNode):
* Modules/webaudio/DefaultAudioDestinationNode.cpp:
(WebCore::DefaultAudioDestinationNode::initialize):
(WebCore::DefaultAudioDestinationNode::uninitialize):
(WebCore::DefaultAudioDestinationNode::enableInput):
(WebCore::DefaultAudioDestinationNode::setChannelCount):
* Modules/webaudio/DelayNode.cpp:
(WebCore::DelayNode::DelayNode):
* Modules/webaudio/DynamicsCompressorNode.cpp:
(WebCore::DynamicsCompressorNode::DynamicsCompressorNode):
* Modules/webaudio/GainNode.cpp:
(WebCore::GainNode::GainNode):
* Modules/webaudio/MediaElementAudioSourceNode.cpp:
(WebCore::MediaElementAudioSourceNode::MediaElementAudioSourceNode):
* Modules/webaudio/MediaStreamAudioSourceNode.cpp:
(WebCore::MediaStreamAudioSourceNode::MediaStreamAudioSourceNode):
* Modules/webaudio/OfflineAudioDestinationNode.cpp:
(WebCore::OfflineAudioDestinationNode::startRendering):
* Modules/webaudio/OscillatorNode.cpp:
(WebCore::OscillatorNode::setType):
(WebCore::OscillatorNode::setPeriodicWave):
* Modules/webaudio/OscillatorNode.h:
(WTF::LogArgument<WebCore::OscillatorNode::Type>::toString):
* Modules/webaudio/PannerNode.cpp:
(WebCore::PannerNode::PannerNode):
* Modules/webaudio/ScriptProcessorNode.cpp:
(WebCore::ScriptProcessorNode::ScriptProcessorNode):
* Modules/webaudio/WaveShaperNode.cpp:
(WebCore::WaveShaperNode::WaveShaperNode):
(WebCore::WaveShaperNode::setCurve):
(WebCore::WaveShaperNode::setOversample):
* Modules/webaudio/WaveShaperNode.h:
(WTF::LogArgument<WebCore::WaveShaperNode::OverSampleType>::toString):

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

6 months agoRegression(r242664) WebKit.WebsitePoliciesDeviceOrientationEventEnabled API test...
cdumez@apple.com [Mon, 11 Mar 2019 20:17:50 +0000 (20:17 +0000)]
Regression(r242664) WebKit.WebsitePoliciesDeviceOrientationEventEnabled API test is timing out
https://bugs.webkit.org/show_bug.cgi?id=195561

Reviewed by Youenn Fablet.

Make sure the JS in the test requests for permission to receive device orientation events.

* TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm:

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

6 months agoCrash under WebCore::IDBDatabase::connectionToServerLost
sihui_liu@apple.com [Mon, 11 Mar 2019 20:06:55 +0000 (20:06 +0000)]
Crash under WebCore::IDBDatabase::connectionToServerLost
https://bugs.webkit.org/show_bug.cgi?id=195563
<rdar://problem/37193655>

CrossThreadTask should protect callee if it is ThreadSafeRefCounted.

Reviewed by Geoffrey Garen.

* wtf/CrossThreadTask.h:
(WTF::createCrossThreadTask):

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

6 months agoREGRESSION(r242622): Web Inspector: Fix asserts "Overridden property is missing overr...
nvasilyev@apple.com [Mon, 11 Mar 2019 20:05:07 +0000 (20:05 +0000)]
REGRESSION(r242622): Web Inspector: Fix asserts "Overridden property is missing overridingProperty"
https://bugs.webkit.org/show_bug.cgi?id=195515
<rdar://problem/48737315>

Reviewed by Matt Baker.

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

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

6 months ago[ iOS Sim ] Layout Test imported/w3c/web-platform-tests/webrtc/simplecall-no-ssrcs...
ryanhaddad@apple.com [Mon, 11 Mar 2019 20:03:24 +0000 (20:03 +0000)]
[ iOS Sim ] Layout Test imported/w3c/web-platform-tests/webrtc/simplecall-no-ssrcs.https.html is a flaky crash
https://bugs.webkit.org/show_bug.cgi?id=195433

Unreviewed test gardening.

* platform/ios/TestExpectations: Skip the test.

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

6 months agoMake IDBDatabaseIdentifier take a ClientOrigin as member
youenn@apple.com [Mon, 11 Mar 2019 20:00:07 +0000 (20:00 +0000)]
Make IDBDatabaseIdentifier take a ClientOrigin as member
https://bugs.webkit.org/show_bug.cgi?id=195544

Reviewed by Geoffrey Garen.

Instead of taking a top and a frame origin, make
make IDBDatabaseIdentifier take a ClientOrigin.

This allows reusing some ClientOrigin code
and will ease implementation of storage quota checking in
NetworkProcess, as quota managers are keyed by client origins.

No change of behavior.

* Modules/indexeddb/IDBDatabaseIdentifier.cpp:
(WebCore::IDBDatabaseIdentifier::IDBDatabaseIdentifier):
(WebCore::IDBDatabaseIdentifier::isolatedCopy const):
(WebCore::IDBDatabaseIdentifier::databaseDirectoryRelativeToRoot const):
(WebCore::IDBDatabaseIdentifier::debugString const):
* Modules/indexeddb/IDBDatabaseIdentifier.h:
(WebCore::IDBDatabaseIdentifier::hash const):
(WebCore::IDBDatabaseIdentifier::operator== const):
(WebCore::IDBDatabaseIdentifier::origin const):
(WebCore::IDBDatabaseIdentifier::isRelatedToOrigin const):
(WebCore::IDBDatabaseIdentifier::encode const):
(WebCore::IDBDatabaseIdentifier::decode):
* page/ClientOrigin.h:
(WebCore::ClientOrigin::isRelated const):

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

6 months agoUnreviewed, fix assertions in layout tests on iOS Simulator after r242666.
cdumez@apple.com [Mon, 11 Mar 2019 19:51:25 +0000 (19:51 +0000)]
Unreviewed, fix assertions in layout tests on iOS Simulator after r242666.

Log an error but do not crash if we fail to acquire a ProcessAssertion.

* UIProcess/ios/ProcessAssertionIOS.mm:
(WebKit::ProcessAssertion::ProcessAssertion):

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

6 months agoAllow storage quota increase by default in WTR
youenn@apple.com [Mon, 11 Mar 2019 19:38:04 +0000 (19:38 +0000)]
Allow storage quota increase by default in WTR
https://bugs.webkit.org/show_bug.cgi?id=195541

Reviewed by Geoffrey Garen.

Tools:

Allow storage quota increase by default in WTR.
Move from testRunner.allowStorageQuotaIncrease to testRunner.setAllowStorageQuotaIncrease.
Use this for tests that explicitly need cache increase.

Instead of increasing quota by 2, make sure the next request is
granted by adding all given parameters.

* WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
* WebKitTestRunner/InjectedBundle/TestRunner.cpp:
(WTR::TestRunner::setAllowStorageQuotaIncrease):
(WTR::TestRunner::allowCacheStorageQuotaIncrease): Deleted.
* WebKitTestRunner/InjectedBundle/TestRunner.h:
* WebKitTestRunner/TestController.cpp:
(WTR::TestController::setAllowStorageQuotaIncrease):
(WTR::TestController::allowCacheStorageQuotaIncrease): Deleted.
* WebKitTestRunner/TestController.h:
* WebKitTestRunner/TestInvocation.cpp:
(WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle):
* WebKitTestRunner/cocoa/TestControllerCocoa.mm:
(WTR::TestController::cocoaResetStateToConsistentValues):
(WTR::TestController::setAllowStorageQuotaIncrease):
(WTR::TestController::allowCacheStorageQuotaIncrease): Deleted.
* WebKitTestRunner/cocoa/TestWebsiteDataStoreDelegate.mm:
(-[TestWebsiteDataStoreDelegate requestStorageSpace:frameOrigin:quota:currentSize:spaceRequired:decisionHandler:]):

LayoutTests:

* http/wpt/cache-storage/cache-quota.any.js:
(promise_test):

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